From cd195e83605f60ac51db6e0b4f0fcaeeb200768d Mon Sep 17 00:00:00 2001 From: Tjiny <Tjinyu23@163.com> Date: 星期五, 23 五月 2025 17:21:31 +0800 Subject: [PATCH] 海成入库货位分配逻辑开发 --- HH.WCS.Mobox3.HaiCheng/Entity/LocCntrRel.cs | 29 ++ HH.WCS.Mobox3.HaiCheng/Controller/Service/TaskService.cs | 104 +++++++ HH.WCS.Mobox3.HaiCheng/config/config.json | 2 HH.WCS.Mobox3.HaiCheng/Entity/Container.cs | 133 +++++++++ HH.WCS.Mobox3.HaiCheng/HH.WCS.Mobox3.HaiCheng.csproj | 5 HH.WCS.Mobox3.HaiCheng/Util/Helper/HelperMethod.cs | 59 ++++ HH.WCS.Mobox3.HaiCheng/Util/Helper/LogHelper.cs | 2 HH.WCS.Mobox3.HaiCheng/Entity/CntrItemDetail.cs | 187 +++++++++++++ HH.WCS.Mobox3.HaiCheng/Program.cs | 7 HH.WCS.Mobox3.HaiCheng/Util/Helper/AdoSqlHelper.cs | 288 +++++++++++++++++-- 10 files changed, 775 insertions(+), 41 deletions(-) diff --git a/HH.WCS.Mobox3.HaiCheng/Controller/Service/TaskService.cs b/HH.WCS.Mobox3.HaiCheng/Controller/Service/TaskService.cs new file mode 100644 index 0000000..54705e5 --- /dev/null +++ b/HH.WCS.Mobox3.HaiCheng/Controller/Service/TaskService.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using HH.WCS.Mobox3.Template.Entity; +using HH.WCS.Mobox3.Template.Util.Helper; + +namespace HH.WCS.Mobox3.Template.Controller.Service; + +/// <summary> +/// 浠诲姟 +/// </summary> +public static class TaskService +{ + /// <summary> + /// 鍒涘缓浣滀笟 + /// </summary> + /// <returns></returns> + public static void CreateTask() + { + // 1. 鏌ヨ浠诲姟鏄惁宸插垱寤�+ var operation = AdoSqlHelper<Operation>.QueryFirstByDecs(p => p.N_B_STATE == 0, p => p.T_CREATE); + + if (operation == null) + { + return; + } + + // 浠诲姟瀛樺湪锛屾牴鎹换鍔$被鍨嬪仛涓嶅悓鐨勬搷浣�+ if (operation.N_TYPE == 1) + { + var inputLocation = InputLocation(operation.S_CNTR_CODE); + + if (inputLocation == null) + { + LogHelper.Info($"褰撳墠瀹瑰櫒鏈粦瀹氱墿鏂欙紝璇锋鏌�, "鍑哄叆搴撴祦绋嬫棩蹇�); + return; + } + + // 浠诲姟 + var task = new Task() + { + // 浣滀笟缂栫爜 + S_OP_CODE = operation.S_CODE, + // 浠诲姟鍙�+ S_CODE = HelperMethod.GenerateTaskNo("浠诲姟鍙�, "TA"), + // 浠诲姟绫诲瀷 + N_TYPE = operation.N_TYPE, + // 浠诲姟绫诲瀷 + S_TYPE = Task.GetStateType(operation.N_TYPE), + // 璧风偣璐т綅 + S_START_LOC = operation.S_START_LOC, + // 缁堢偣璐т綅 + S_END_LOC = inputLocation.S_CODE, + // 瀹瑰櫒缂栫爜 + S_CNTR_CODE = operation.S_CNTR_CODE, + }; + + // 淇敼浣滀笟鐘舵�涓烘墽琛屼腑 + operation.N_B_STATE = 1; + operation.S_B_STATE = "鎵ц"; + operation.T_START_TIME = DateTime.Now; + + var querySqlSugarClient = AdoSqlHelper<object>.QuerySqlSugarClient(); + + try + { + querySqlSugarClient.BeginTran(); + AdoSqlHelper<Task>.AddFirstTran(querySqlSugarClient, task); + AdoSqlHelper<Operation>.UpdateFirstTran(querySqlSugarClient, operation, + p => new { p.N_B_STATE, p.S_B_STATE, p.T_START_TIME }); + + querySqlSugarClient.CommitTran(); + } + catch (Exception e) + { + if (operation.N_TYPE == 1) + { + LogHelper.Info($"浣滀笟鍙蜂负锛歿operation.S_CODE}鐨勪换鍔″垱寤哄け璐�, "鍑哄叆搴撴祦绋嬫棩蹇�); + } + else + { + LogHelper.Info($"浣滀笟鍙蜂负锛歿operation.S_CODE}鐨勪换鍔″垱寤哄け璐�, "鍑哄叆搴撴祦绋嬫棩蹇�); + } + querySqlSugarClient.RollbackTran(); + } + } + } + + /// <summary> + /// 鍏ュ簱璐т綅鍒嗛厤 + /// </summary> + /// <returns></returns> + private static Location InputLocation(string container) + { + var cntrItemDetail = AdoSqlHelper<CntrItemDetail>.QueryFirst(p => p.S_CNTR_CODE == container); + + if (cntrItemDetail == null) + { + return null; + } + + return AdoSqlHelper<Location>.QueryInputLocation(cntrItemDetail.S_ITEM_CODE); + } +} \ No newline at end of file diff --git a/HH.WCS.Mobox3.HaiCheng/Entity/CntrItemDetail.cs b/HH.WCS.Mobox3.HaiCheng/Entity/CntrItemDetail.cs new file mode 100644 index 0000000..6f2ccd1 --- /dev/null +++ b/HH.WCS.Mobox3.HaiCheng/Entity/CntrItemDetail.cs @@ -0,0 +1,187 @@ +using System; +using System.ComponentModel; +using SqlSugar; + +namespace HH.WCS.Mobox3.Template.Entity; + +/// <summary> +/// 瀹瑰櫒璐у搧鏄庣粏 +/// </summary> +[SugarTable("TN_CG_Detail")] +public class CntrItemDetail : BaseModel +{ + /// <summary> + /// 瀹瑰櫒璐у搧ID + /// </summary> + public string S_CG_ID { get; set; } + + /// <summary> + /// 瀹瑰櫒缂栫爜 + /// </summary> + public string S_CNTR_CODE { get; set; } + + /// <summary> + ///鐩稿悓 ITEM 鍚堝苟 + /// </summary> + public string C_ITEM_MERGE { get; set; } = "绌�; + + /// <summary> + /// 绠辨牸鍙�+ /// </summary> + public char S_CELL_NO { get; set; } + + /// <summary> + /// 璐у搧绯诲垪鍙�+ /// </summary> + public string S_SERIAL_NO { get; set; } + + /// <summary> + /// 璐у搧缂栫爜 + /// </summary> + public string S_ITEM_CODE { get; set; } + + /// <summary> + /// 璐у搧鍚嶇О + /// </summary> + public string S_ITEM_NAME { get; set; } + + /// <summary> + /// 璐у搧瑙勬牸 + /// </summary> + public string S_ITEM_SPEC { get; set; } + + /// <summary> + /// 璐у搧鐘舵� + /// </summary> + public string S_ITEM_STATE { get; set; } = "鍚堟牸"; + + /// <summary> + /// 璐у搧鐘舵� + /// </summary> + public int N_ITEM_STATE { get; set; } + + /// <summary> + /// 鎵规鍙�+ /// </summary> + public string S_BATCH_NO { get; set; } + + /// <summary> + /// 浣跨敤鑰�+ /// </summary> + public string S_END_USER { get; set; } + + /// <summary> + /// 璐т富缂栫爜 + /// </summary> + public string S_OWNER { get; set; } + + /// <summary> + /// 渚涘簲鍟嗙紪鐮�+ /// </summary> + public string S_SUPPLIER_NO { get; set; } + + /// <summary> + /// 渚涘簲鍟嗗悕绉�+ /// </summary> + public string S_SUPPLIER_NAME { get; set; } + + /// <summary> + /// 鏁伴噺 + /// </summary> + public float F_QTY { get; set; } + + /// <summary> + /// 璁¢噺鍗曚綅 + /// </summary> + public string S_UOM { get; set; } = "kg"; + + /// <summary> + /// 鍒嗛厤閲�+ /// </summary> + public float F_ALLOC_QTY { get; set; } + + /// <summary> + /// 鏉ユ簮绫诲瀷 + /// </summary> + public string S_BS_TYPE { get; set; } + + /// <summary> + /// 鏉ユ簮鍗曞彿 + /// </summary> + public string S_BS_NO { get; set; } + + /// <summary> + /// 鏉ユ簮鍗曡鍙�+ /// </summary> + public int N_BS_ROW_NO { get; set; } + + /// <summary> + /// 鐢熶骇鏃ユ湡 + /// </summary> + public string D_PRD_DATE { get; set; } + + /// <summary> + /// 杩囨湡鏃ユ湡 + /// </summary> + public string D_EXP_DATE { get; set; } + + /// <summary> + /// 浣撶Н + /// </summary> + public float F_VOLUME { get; set; } + + /// <summary> + /// 閲嶉噺 + /// </summary> + public float F_WEIGHT { get; set; } + + /// <summary> + /// 鍏ュ簱鏃堕棿 + /// </summary> + public DateTime T_INBOUND_TIME { get; set; } + + /// <summary> + /// ERP浠撳簱 + /// </summary> + public string S_ERP_WH_CODE { get; set; } + + /// <summary> + /// 鎵╁睍灞炴�1 + /// </summary> + public string S_EXT_ATTR1 { get; set; } + + /// <summary> + /// 鎵╁睍灞炴�2 + /// </summary> + public string S_EXT_ATTR2 { get; set; } + + /// <summary> + /// 鎵╁睍灞炴�3 + /// </summary> + public string S_EXT_ATTR3 { get; set; } + + /// <summary> + /// 鎵╁睍灞炴�4 + /// </summary> + public string S_EXT_ATTR4 { get; set; } + + /// <summary> + /// 鎵╁睍灞炴�5 + /// </summary> + public string S_EXT_ATTR5 { get; set; } + + /// <summary> + /// 鏄惁鍏ュ簱锛�锛氶粯璁ゆ湭鍏ュ簱锛�锛氬叆搴擄級 + /// </summary> + public int N_ALR_ENTR { get; set; } = 1; + + /// <summary> + /// 鍦板潃鐮�+ /// </summary> + public string S_ADDRESS_CODE { get; set; } + + /// <summary> + /// 浠撳簱缂栫爜 + /// </summary> + public string S_WH_CODE { get; set; } +} \ No newline at end of file diff --git a/HH.WCS.Mobox3.HaiCheng/Entity/Container.cs b/HH.WCS.Mobox3.HaiCheng/Entity/Container.cs new file mode 100644 index 0000000..4bdcbfa --- /dev/null +++ b/HH.WCS.Mobox3.HaiCheng/Entity/Container.cs @@ -0,0 +1,133 @@ +using System.Collections.Generic; +using SqlSugar; + +namespace HH.WCS.Mobox3.Template.Entity; + +/// <summary> +/// 瀹瑰櫒妯″瀷 +/// </summary> +[SugarTable("TN_Container")] +public class Container : BaseModel +{ + /// <summary> + /// 瀹瑰櫒缂栫爜 + /// </summary> + public string S_CODE { get; set; } + + /// <summary> + /// 瀹瑰櫒绫诲瀷 + /// </summary> + public string S_TYPE { get; set; } + + /// <summary> + /// 瀹瑰櫒绫诲瀷 + /// </summary> + public int N_TYPE { get; set; } + + /// <summary> + /// 瀹瑰櫒瑙勬牸 + /// </summary> + public string S_SPEC { get; set; } + + /// <summary> + /// 鑷噸 + /// </summary> + public float F_WEIGHT { get; set; } + + /// <summary> + /// 璐у搧閲嶉噺 + /// </summary> + public float F_GOOD_WEIGHT { get; set; } + + /// <summary> + /// 鎵块噸 + /// </summary> + public float F_MAX_WEIGHT { get; set; } + + /// <summary> + /// 闀�+ /// </summary> + //public float F_LENGTH { get; set; } + + /// <summary> + /// 瀹�+ /// </summary> + //public float F_WIDTH { get; set; } + + /// <summary> + /// 楂�+ /// </summary> + //public float F_HEIGHT { get; set; } + + /// <summary> + /// 鏄惁涓鸿櫄鎷熷鍣�+ /// </summary> + public char C_IS_VIRTUAL { get; set; } + + /// <summary> + /// 鏄惁鍙敤 + /// </summary> + public char C_ENABLE { get; set; } = 'Y'; + + /// <summary> + /// 瀹瑰櫒鏄庣粏鏉℃暟 + /// </summary> + public int N_DETAIL_COUNT { get; set; } + + /// <summary> + /// 瀹瑰櫒涓氬姟鐘舵�锛�锛氱┖闂诧紝1锛氬叆搴撲腑锛�锛氬嚭搴撲腑锛�+ /// </summary> + public int N_B_STATE { get; set; } + + /// <summary> + /// 閿佸畾涓氬姟鍙�+ /// </summary> + public string S_LOCK_OP_CODE { get; set; } + + /// <summary> + /// 鏈�ぇ浣撶Н + /// </summary> + public float F_MAX_VOLUME { get; set; } + + /// <summary> + /// 璐у搧浣撶Н + /// </summary> + public float F_GOOD_VOLUME { get; set; } + + /// <summary> + /// 绌烘弧鐘舵� + /// </summary> + //public int N_EMPTY_FULL { get; set; } + + /// <summary> + /// 鏈�ぇ鏂欐牸鏁伴噺 + /// </summary> + //public int N_MAX_CELL_NUM { get; set; } + + /// <summary> + /// 绌烘枡鏍兼暟閲�+ /// </summary> + //public int N_EMPTY_CELL_NUM { get; set; } + + /// <summary> + /// 寮哄埗缃弧 + /// </summary> + //public char C_FORCED_FILL { get; set; } + + /// <summary> + /// 閿佺姸鎬侊紙0锛氭棤锛�锛氬叆搴撻攣锛�锛氬嚭搴撻攣锛�+ /// </summary> + public string S_LOCK_STATE { get; set; } + + /// <summary> + /// 閿佺姸鎬侊紙0锛氭棤锛�锛氬叆搴撻攣锛�锛氬嚭搴撻攣锛�+ /// </summary> + public int N_LOCK_STATE { get; set; } + + /// <summary> + /// 瀹瑰櫒璐у搧鏄庣粏鍏宠仈 + /// </summary> + [SugarColumn(IsIgnore = true)] + [Navigate(NavigateType.OneToMany, nameof(CntrItemDetail.S_CNTR_CODE), nameof(S_CODE))] + public List<CntrItemDetail> CntrItemRels { get; set; } +} \ No newline at end of file diff --git a/HH.WCS.Mobox3.HaiCheng/Entity/LocCntrRel.cs b/HH.WCS.Mobox3.HaiCheng/Entity/LocCntrRel.cs new file mode 100644 index 0000000..69bead6 --- /dev/null +++ b/HH.WCS.Mobox3.HaiCheng/Entity/LocCntrRel.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using SqlSugar; + +namespace HH.WCS.Mobox3.Template.Entity; + +/// <summary> +/// 锟斤拷位锟斤拷锟斤拷 +/// </summary> +[SugarTable("TN_Loc_Container")] +public class LocCntrRel : BaseModel +{ + /// <summary> + /// 锟斤拷位锟斤拷锟斤拷 + /// </summary> + [SugarColumn(IsPrimaryKey = true)] + public string S_LOC_CODE { get; set; } + + /// <summary> + /// 锟斤拷锟斤拷锟斤拷锟斤拷 + /// </summary> + public string S_CNTR_CODE { get; set; } + + /// <summary> + /// 锟斤拷锟斤拷锟斤拷位锟斤拷细锟斤拷锟斤拷 + /// </summary> + [SugarColumn(IsIgnore = true)] + [Navigate(NavigateType.OneToMany, nameof(S_CNTR_CODE))] + public List<CntrItemDetail> CntrItemRels { get; set; } +} \ No newline at end of file diff --git a/HH.WCS.Mobox3.HaiCheng/HH.WCS.Mobox3.HaiCheng.csproj b/HH.WCS.Mobox3.HaiCheng/HH.WCS.Mobox3.HaiCheng.csproj index 14e5943..32805a5 100644 --- a/HH.WCS.Mobox3.HaiCheng/HH.WCS.Mobox3.HaiCheng.csproj +++ b/HH.WCS.Mobox3.HaiCheng/HH.WCS.Mobox3.HaiCheng.csproj @@ -142,8 +142,11 @@ <Compile Include="Controller\FourWayCarController.cs" /> <Compile Include="Controller\Service\FourWayCarService.cs" /> <Compile Include="Controller\Service\OperationService.cs" /> + <Compile Include="Controller\Service\TaskService.cs" /> <Compile Include="Controller\Service\ThirdPartyService.cs" /> <Compile Include="Entity\BaseModel.cs" /> + <Compile Include="Entity\CntrItemDetail.cs" /> + <Compile Include="Entity\Container.cs" /> <Compile Include="Entity\Dto\ContainerDto.cs" /> <Compile Include="Entity\Dto\ConveyorlinesInfoDto.cs" /> <Compile Include="Entity\Dto\FourWayCarCommanDto.cs" /> @@ -152,6 +155,7 @@ <Compile Include="Entity\Dto\LineTaskDto.cs" /> <Compile Include="Entity\Dto\ResultDto.cs" /> <Compile Include="Entity\Location.cs" /> + <Compile Include="Entity\LocCntrRel.cs" /> <Compile Include="Entity\Operation.cs" /> <Compile Include="Entity\Task.cs" /> <Compile Include="Procss\ThreadTask.cs" /> @@ -166,6 +170,7 @@ <Compile Include="Util\EquipmentCommunication\TcpClient.cs" /> <Compile Include="Util\EquipmentCommunication\TcpServer.cs" /> <Compile Include="Util\Helper\AdoSqlHelper.cs" /> + <Compile Include="Util\Helper\HelperMethod.cs" /> <Compile Include="Util\Helper\HttpHelper.cs" /> <Compile Include="Util\Helper\LogHelper.cs" /> <Compile Include="Util\Helper\NdcHelper.cs" /> diff --git a/HH.WCS.Mobox3.HaiCheng/Program.cs b/HH.WCS.Mobox3.HaiCheng/Program.cs index 94e0a47..6f14a08 100644 --- a/HH.WCS.Mobox3.HaiCheng/Program.cs +++ b/HH.WCS.Mobox3.HaiCheng/Program.cs @@ -30,8 +30,10 @@ StartTcp(); //3.0 寮�惎绾跨▼ - var rc = HostFactory.Run(x => { - x.Service<WorkThread>(s => { + var rc = HostFactory.Run(x => + { + x.Service<WorkThread>(s => + { s.ConstructUsing(name => new WorkThread()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); @@ -131,6 +133,7 @@ Thread.Sleep(4000); } }); + return task; } } diff --git a/HH.WCS.Mobox3.HaiCheng/Util/Helper/AdoSqlHelper.cs b/HH.WCS.Mobox3.HaiCheng/Util/Helper/AdoSqlHelper.cs index c58034c..7d91874 100644 --- a/HH.WCS.Mobox3.HaiCheng/Util/Helper/AdoSqlHelper.cs +++ b/HH.WCS.Mobox3.HaiCheng/Util/Helper/AdoSqlHelper.cs @@ -1,6 +1,9 @@ 锘縰sing System; using System.Collections.Generic; +using System.Linq; using System.Linq.Expressions; +using HH.WCS.Mobox3.Template.Entity; +using SqlSugar; namespace HH.WCS.Mobox3.Template.Util.Helper { @@ -14,14 +17,14 @@ /// </summary> /// <param name="condition">鏉′欢</param> /// <returns></returns> - public static T QueryFirst(Expression<Func<T,bool>> condition) + public static T QueryFirst(Expression<Func<T, bool>> condition) { var db = new SqlHelper<object>().GetInstance(); - + // 杩斿洖鏁版嵁 return db.Queryable<T>().First(condition); } - + /// <summary> /// 鏍规嵁鏉′欢鏌ヨ澶氭潯鏁版嵁 /// </summary> @@ -29,7 +32,7 @@ public static List<T> QueryList(Expression<Func<T, bool>> condition) { var db = new SqlHelper<object>().GetInstance(); - + // 杩斿洖鏁版嵁 return db.Queryable<T>().Where(condition).ToList(); } @@ -39,11 +42,34 @@ /// </summary> /// <param name="condition">鏉′欢</param> /// <returns></returns> - public static int QueryCount(Expression<Func<T,bool>> condition) + public static int QueryCount(Expression<Func<T, bool>> condition) { var db = new SqlHelper<object>().GetInstance(); + // 杩斿洖鏁版嵁 return db.Queryable<T>().Count(condition); + } + + /// <summary> + /// 鏍规嵁鏉′欢淇敼涓�潯鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="model">闇�杩涜淇敼鐨勫璞�/param> + /// <param name="condition">淇敼鏉′欢</param> + /// <returns></returns> + public static bool UpdateFirstTran(SqlSugarClient sqlSugarClient, T model, Expression<Func<T, object>> condition) + { + // 淇敼鏁版嵁 + var executeCommand = sqlSugarClient.Updateable(model).UpdateColumns(condition).ExecuteCommand(); + + if (executeCommand > 0) + { + return true; + } + else + { + return false; + } } /// <summary> @@ -54,17 +80,56 @@ /// <returns></returns> public static bool UpdateFirst(T model, Expression<Func<T, object>> condition) { - var db = new SqlHelper<object>().GetInstance(); - + var sqlSugarClient = new SqlHelper<object>().GetInstance(); + // 淇敼鏁版嵁 - var executeCommand = db.Updateable(model).UpdateColumns(condition).ExecuteCommand(); + var executeCommand = sqlSugarClient.Updateable(model).UpdateColumns(condition).ExecuteCommand(); if (executeCommand > 0) { return true; } else + { return false; + } + } + + /// <summary> + /// 鏍规嵁鏉′欢淇敼涓�潯鏁版嵁鐨勭姸鎬�sql璇彞) + /// </summary> + /// <param name="model">闇�杩涜淇敼鐨勫璞�/param> + /// <param name="sql">淇敼鏉′欢</param> + /// <returns></returns> + public static bool UpdateFirstOutBoundStart(T model, string sql) + { + var sqlSugarClient = new SqlHelper<object>().GetInstance(); + + // 淇敼鏁版嵁 + var executeCommand = sqlSugarClient.Ado.ExecuteCommand(sql, model); + + if (executeCommand > 0) + { + return true; + } + else + { + return false; + } + } + + /// <summary> + /// 鏍规嵁鏉′欢淇敼澶氭潯鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="models"></param> + /// <param name="condition"></param> + /// <returns></returns> + public static int UpdateListTran(SqlSugarClient sqlSugarClient, List<T> models, + Expression<Func<T, object>> condition) + { + // 淇敼鏁版嵁 + return sqlSugarClient.Updateable(models).UpdateColumns(condition).ExecuteCommand(); } /// <summary> @@ -75,84 +140,168 @@ /// <returns></returns> public static int UpdateList(List<T> models, Expression<Func<T, object>> condition) { - var db = new SqlHelper<object>().GetInstance(); - + var sqlSugarClient = new SqlHelper<object>().GetInstance(); // 淇敼鏁版嵁 - return db.Updateable(models).UpdateColumns(condition).ExecuteCommand(); + return sqlSugarClient.Updateable(models).UpdateColumns(condition).ExecuteCommand(); } /// <summary> - /// 鏂板涓�潯鏁版嵁 + /// 鏂板涓�潯鏁版嵁锛堜簨鍔★級 /// </summary> - /// <param name="model"></param> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="model">闇�鏂板鐨勬暟鎹�/param> + /// <returns></returns> + public static bool AddFirstTran(SqlSugarClient sqlSugarClient, T model) + { + var executeCommand = sqlSugarClient.Insertable(model).ExecuteCommand(); + + if (executeCommand > 0) + { + return true; + } + else + { + return false; + } + } + + /// <summary> + /// 鏂板涓�潯鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="model">闇�鏂板鐨勬暟鎹�/param> /// <returns></returns> public static bool AddFirst(T model) { - var db = new SqlHelper<object>().GetInstance(); + var sqlSugarClient = new SqlHelper<object>().GetInstance(); - var executeCommand = db.Insertable(model).ExecuteCommand(); - + var executeCommand = sqlSugarClient.Insertable(model).ExecuteCommand(); + if (executeCommand > 0) + { return true; + } else + { return false; + } } - + + + /// <summary> + /// 鏂板澶氭潯鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="models">闇�鏂板鐨勬暟鎹泦鍚�/param> + /// <returns></returns> + public static int AddListTran(SqlSugarClient sqlSugarClient, List<T> models) + { + return sqlSugarClient.Insertable(models).ExecuteCommand(); + } + /// <summary> /// 鏂板澶氭潯鏁版嵁 /// </summary> - /// <param name="models"></param> + /// <param name="models">闇�鏂板鐨勬暟鎹泦鍚�/param> /// <returns></returns> public static int AddList(List<T> models) { - var db = new SqlHelper<object>().GetInstance(); - - var executeCommand = db.Insertable(models).ExecuteCommand(); - - return executeCommand; + var sqlSugarClient = new SqlHelper<object>().GetInstance(); + return sqlSugarClient.Insertable(models).ExecuteCommand(); } - + /// <summary> - /// 鍒犻櫎涓�潯鏁版嵁 + /// 鍒犻櫎涓�潯鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="model">闇�鍒犻櫎鐨勫璞�/param> + /// <returns></returns> + public static bool DeleteFirstTran(SqlSugarClient sqlSugarClient, T model) + { + var executeCommand = sqlSugarClient.Deleteable(model).ExecuteCommand(); + + if (executeCommand > 0) + { + return true; + } + else + { + return false; + } + } + + /// <summary> + /// 鍒犻櫎涓�潯鏁版嵁锛堜簨鍔★級 /// </summary> /// <param name="model">闇�鍒犻櫎鐨勫璞�/param> /// <returns></returns> public static bool DeleteFirst(T model) { - var db = new SqlHelper<object>().GetInstance(); + var sqlSugarClient = new SqlHelper<object>().GetInstance(); - var executeCommand = db.Deleteable(model).ExecuteCommand(); + var executeCommand = sqlSugarClient.Deleteable(model).ExecuteCommand(); if (executeCommand > 0) + { return true; + } else + { return false; + } } - + /// <summary> - /// 鍒犻櫎澶氭潯鏁版嵁 + /// 鍒犻櫎澶氭潯鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="models">闇�鍒犻櫎鐨勫璞¢泦鍚�/param> + /// <returns></returns> + public static int DeleteListTran(SqlSugarClient sqlSugarClient, List<T> models) + { + return sqlSugarClient.Deleteable(models).ExecuteCommand(); + } + + /// <summary> + /// 鍒犻櫎澶氭潯鏁版嵁锛堜簨鍔★級 /// </summary> /// <param name="models">闇�鍒犻櫎鐨勫璞¢泦鍚�/param> /// <returns></returns> public static int DeleteList(List<T> models) { - var db = new SqlHelper<object>().GetInstance(); - - return db.Deleteable(models).ExecuteCommand(); + var sqlSugarClient = new SqlHelper<object>().GetInstance(); + return sqlSugarClient.Deleteable(models).ExecuteCommand(); } - + /// <summary> - /// 鏍规嵁鏉′欢鍒犻櫎鏁版嵁 + /// 鏍规嵁鏉′欢鍒犻櫎鏁版嵁锛堜簨鍔★級 + /// </summary> + /// <param name="sqlSugarClient">鏁版嵁搴撲笂涓嬫枃杩炴帴</param> + /// <param name="condition">鏉′欢</param> + /// <returns></returns> + public static int DeleteListTran(SqlSugarClient sqlSugarClient, Expression<Func<T, bool>> condition) + { + return sqlSugarClient.Deleteable<T>().Where(condition).ExecuteCommand(); + } + + /// <summary> + /// 鏍规嵁鏉′欢鍒犻櫎鏁版嵁锛堜簨鍔★級 /// </summary> /// <param name="condition">鏉′欢</param> /// <returns></returns> public static int DeleteList(Expression<Func<T, bool>> condition) { - var db = new SqlHelper<object>().GetInstance(); - - return db.Deleteable<T>().Where(condition).ExecuteCommand(); + var sqlSugarClient = new SqlHelper<object>().GetInstance(); + return sqlSugarClient.Deleteable<T>().Where(condition).ExecuteCommand(); } + /// <summary> + /// 鑾峰彇鏁版嵁搴撲笂涓嬫枃杩炴帴 + /// </summary> + /// <returns></returns> + public static SqlSugarClient QuerySqlSugarClient() + { + return new SqlHelper<object>().GetInstance(); + } /// <summary> /// 鎸夌収鏃堕棿鍊掑簭鏌ヨ @@ -167,5 +316,70 @@ // 杩斿洖鏁版嵁 return db.Queryable<T>().OrderByDescending(orderBy).First(condition); } + + + #region 鐗瑰畾鏌ヨ + + /// <summary> + /// 鍒嗛厤鍏ュ簱璐т綅 + /// </summary> + /// <returns></returns> + public static Location QueryInputLocation(string itemCode) + { + var areaCodeList = new List<string> + { + "1","2","3","4" + }; + + var db = new SqlHelper<object>().GetInstance(); + + var listMaxCol = db.Queryable<Location>() + .LeftJoin<LocCntrRel>((l, lc) => l.S_CODE == lc.S_LOC_CODE) + .LeftJoin<CntrItemDetail>((l, lc, ci) => lc.S_CNTR_CODE == ci.S_CNTR_CODE) + .Where((l, lc, ci) => l.N_CURRENT_NUM > 0 + && areaCodeList.Contains(l.S_GROUP) + && ci.S_ITEM_CODE == itemCode) + .OrderByDescending((l, lc, ci) => l.N_COL) + .Take(1) + .PartitionBy((l, lc, ci) => new { l.S_GROUP, l.N_ROW }) + .ToList(); + + + // 鏈夊悓绉嶇墿鏂欐墍鍗犳嵁鐨勬帓 + if (listMaxCol.Count > 0) + { + foreach (var item in listMaxCol) + { + //鎺掓湁閿佷篃鎺掗櫎锛堥攣琛ㄧず鍚庨潰鍙兘瑕佹敼锛�+ if (db.Queryable<Location>().Count(a => + a.S_GROUP == item.S_GROUP && a.N_ROW == item.N_ROW && a.N_LOCK_STATE != 0) > 0) + { + continue; + } + + // 娌¢攣 + var end = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => + a.S_GROUP == item.S_GROUP && a.N_ROW == item.N_ROW && + a.N_CURRENT_NUM == 0 && + a.N_COL >= item.N_COL).First(); + + if (end != null) + { + return end; + } + } + } + + Location location = db.Queryable<Location>().OrderBy(a => a.S_GROUP).First(p => p.N_COL == 1 && p.N_LOCK_STATE == 0); + + if (location != null) + { + return location; + } + + return null; + } + + #endregion } } \ No newline at end of file diff --git a/HH.WCS.Mobox3.HaiCheng/Util/Helper/HelperMethod.cs b/HH.WCS.Mobox3.HaiCheng/Util/Helper/HelperMethod.cs new file mode 100644 index 0000000..88b181b --- /dev/null +++ b/HH.WCS.Mobox3.HaiCheng/Util/Helper/HelperMethod.cs @@ -0,0 +1,59 @@ +锘縰sing System; +using HH.WCS.Mobox3.Template.Entity.Dto; +using Newtonsoft.Json; + +namespace HH.WCS.Mobox3.Template.Util.Helper; + +/// <summary> +/// 鏂规硶甯姪绫�+/// </summary> +public static class HelperMethod +{ + /// <summary> + /// Http甯姪绫�+ /// </summary> + private static readonly HttpHelper apiHelper = new HttpHelper(); + + /// <summary> + /// 鍒涘缓搴忓垪鍙�+ /// </summary> + /// <param name="snType">搴忓垪鍙风被鍨�/param> + /// <param name="prefix">搴忓垪鍙峰墠缂�/param> + /// <returns></returns> + internal static string GenerateTaskNo(string snType, string prefix) + { + var date = DateTime.Now.ToString("yyMMdd"); + var id = SYSHelper.GetSerialNumber(snType, prefix + date); + return $"{prefix}{date}{id.ToString().PadLeft(4, '0')}"; + } + + /// <summary> + /// 鏍规嵁鑾峰彇鍒扮殑浠诲姟鍙疯浆鎹负浠诲姟琛ㄤ腑鐨勬暟鎹�+ /// </summary> + /// <param name="TaskNo"></param> + /// <returns></returns> + public static string GetTask(string TaskNo) + { + string taskNo = ""; + + taskNo = "TN" + DateTime.Now.Year.ToString().Substring(2, 2) + TaskNo.PadLeft(8, '0'); + + return taskNo; + } + + /// <summary> + /// 鎸夌収鍥哄畾鏍煎紡鏂板浠诲姟鍙�+ /// </summary> + /// <returns></returns> + public static string GetTaskNo() + { + string dateString = ""; + // 鑾峰彇褰撳墠鏃堕棿 + DateTime currentTime = DateTime.Now; + + // 灏嗘棩鏈熸牸寮忓寲涓哄瓧绗︿覆 + dateString = currentTime.ToString("yyyy-MM-dd").Replace("-", "").Substring(2); + + return dateString; + } +} \ No newline at end of file diff --git a/HH.WCS.Mobox3.HaiCheng/Util/Helper/LogHelper.cs b/HH.WCS.Mobox3.HaiCheng/Util/Helper/LogHelper.cs index 6b6176d..3a40243 100644 --- a/HH.WCS.Mobox3.HaiCheng/Util/Helper/LogHelper.cs +++ b/HH.WCS.Mobox3.HaiCheng/Util/Helper/LogHelper.cs @@ -82,7 +82,7 @@ /// 閫氳繃閰嶇疆鏂囦欢閰嶇疆鏃ュ織 /// </summary> static LogFactory() { - var loggerNames = new List<string>() { "鍥涘悜杞﹀拰WCS鎺ュ彛浜や簰" }; + var loggerNames = new List<string>() { "鍥涘悜杞﹀拰WCS鎺ュ彛浜や簰", "鍑哄叆搴撴祦绋嬫棩蹇� }; LogManager.Configuration = DefaultConfig(loggerNames); } diff --git a/HH.WCS.Mobox3.HaiCheng/config/config.json b/HH.WCS.Mobox3.HaiCheng/config/config.json index 8dbbd69..d237ecf 100644 --- a/HH.WCS.Mobox3.HaiCheng/config/config.json +++ b/HH.WCS.Mobox3.HaiCheng/config/config.json @@ -1,7 +1,7 @@ { "HostToAgvServerUrl": "http://172.16.10.41:9988/HostToAGV.cgi", "HASeverUrl": "http://172.16.10.41", - "SqlServer": "Data Source=172.16.10.41;Initial Catalog=OIMobox;User ID=sa;Password=X07pLI2Z", + "SqlServer": "Data Source=TJY\\SQLEXPRESS;Initial Catalog=OIMobox;User ID=sa;Password=1234", "ApiPort": 8901, "WMSBaseUrl": "http://172.16.10.41", "FourWayCarBaseUrl": "http://172.16.10.41:3000", -- Gitblit v1.9.1