From d0c1502a17c8d945e16b498792bd8e50ea9fea9f Mon Sep 17 00:00:00 2001 From: jinxin <1013386558@qq.com> Date: 星期二, 03 六月 2025 14:11:04 +0800 Subject: [PATCH] 111 --- HH.WCS.Mobox3.WeiLi/models/TN_Material.cs | 1 HH.WCS.Mobox3.WeiLi/core/WMSCore.cs | 6 + HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs | 32 ++++- HH.WCS.Mobox3.WeiLi/core/WCSCore.cs | 10 + HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs | 22 ++- .vs/VSWorkspaceState.json | 7 + HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs | 181 +++++++++++++++++++++-------- HH.WCS.Mobox3.WeiLi/api/MoboxController.cs | 21 ++ .vs/slnx.sqlite | 0 HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln | 25 ++++ 10 files changed, 233 insertions(+), 72 deletions(-) diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..392a46e --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\E:\\椤圭洰\\Weili", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index e80b9e3..1e8f44a 100644 --- a/.vs/slnx.sqlite +++ b/.vs/slnx.sqlite Binary files differ diff --git a/HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln b/HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln new file mode 100644 index 0000000..6488a73 --- /dev/null +++ b/HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln @@ -0,0 +1,25 @@ +锘�+Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33529.622 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.WeiLi", "HH.WCS.Mobox3.WeiLi.csproj", "{E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D73F8D67-E77E-493C-A8A2-A6CFB6FDDE06} + EndGlobalSection +EndGlobal diff --git a/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs b/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs index 4836fee..7522ccb 100644 --- a/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs +++ b/HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs @@ -207,6 +207,30 @@ return result; } + internal static SimpleResult ErrorOperation(MoboxOperationBase model) + { + var result = new SimpleResult(); + var db = new SqlHelper<object>().GetInstance(); + var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == model.OperationNo).First(); + if (wmsTask != null) + { + LogHelper.Info($"娓呴櫎閿欒浣滀笟 瑙g粦鎵樼洏 鎵樼洏{wmsTask.S_CNTR_CODE}"); + db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ExecuteCommand(); + db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ExecuteCommand(); + var locInfo = db.Queryable<Location>().Where(a => a.S_CODE == wmsTask.S_START_LOC).First(); + if (locInfo != null) + { + LogHelper.Info($"娓呴櫎閿欒浣滀笟 閲嶇疆璐т綅鐘舵� 璐т綅{locInfo.S_CODE}"); + locInfo.N_CURRENT_NUM = 0; + locInfo.N_LOCK_STATE = 0; + locInfo.S_LOCK_STATE = "鏃�; + db.Updateable(locInfo).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); + } + } + + return result; + } + internal static TaskStateresutl GetTaskState(GetTaskStateModel model) { var db = new SqlHelper<object>().GetInstance(); @@ -785,9 +809,13 @@ //if (task.S_B_STATE != "鍙栨秷" && task.S_B_STATE != "瀹屾垚" && task.S_B_STATE != "鍏抽棴" && task.S_B_STATE != "寮哄埗瀹屾垚") //{ TaskProcess.OperateStatus(task, 6); - if (task.S_TYPE.Contains("鍏ュ簱")) + if (task.S_OP_NAME =="鍏ュ簱") { WMSHelper.AddChange(task); + } + if (task.S_OP_NAME == "鍑哄簱") + { + WMSHelper.DeleteChange(task); } if (task.S_TYPE == "鍒嗘嫞鍥�) { @@ -849,28 +877,28 @@ } } - else - { - LogHelper.Info($"{locinfo.N_ROADWAY} 宸烽亾鎵句笉鍒板彲鍏ヨ揣浣�闅忔満鍒嗛厤璐т綅"); - endbit = WMSHelper.GetLiKuLocationIn(locinfo.S_AREA_CODE, 0, locinfo.S_TYPE); - if (endbit != null) - { - LogHelper.Info($"鏌ユ壘鍒版敼閬撹揣浣嶄负{endbit.S_CODE}"); - //淇敼浠诲姟鏁版嵁 缁堢偣 澶囨敞:鏀逛綅 - LocationHelper.LockLoc(endbit.S_CODE, 1); - wmstask.S_END_LOC = endbit.S_CODE; - db.Updateable(wmstask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); - task.S_END_LOC = endbit.S_CODE; - task.S_NOTE = "鏀逛綅"; - db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_NOTE }).ExecuteCommand(); - - var agvBit = db.Queryable<PeiZhi>().Where(it => it.BitCode == endbit.S_CODE).First(); - if (agvBit != null) - { - result.new_locate_no = agvBit.PlcLocation; - } - } - } + //else + //{ + // LogHelper.Info($"{locinfo.N_ROADWAY} 宸烽亾鎵句笉鍒板彲鍏ヨ揣浣�闅忔満鍒嗛厤璐т綅"); + // endbit = WMSHelper.GetLiKuLocationIn(locinfo.S_AREA_CODE, 0, locinfo.S_TYPE); + // if (endbit != null) + // { + // LogHelper.Info($"鏌ユ壘鍒版敼閬撹揣浣嶄负{endbit.S_CODE}"); + // //淇敼浠诲姟鏁版嵁 缁堢偣 澶囨敞:鏀逛綅 + // LocationHelper.LockLoc(endbit.S_CODE, 1); + // wmstask.S_END_LOC = endbit.S_CODE; + // db.Updateable(wmstask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); + // task.S_END_LOC = endbit.S_CODE; + // task.S_NOTE = "鏀逛綅"; + // db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_NOTE }).ExecuteCommand(); + // + // var agvBit = db.Queryable<PeiZhi>().Where(it => it.BitCode == endbit.S_CODE).First(); + // if (agvBit != null) + // { + // result.new_locate_no = agvBit.PlcLocation; + // } + // } + //} } internal static SimpleResult OutboundOrderExecute(OutboundOrderCheck model) { @@ -1631,46 +1659,98 @@ { WeiLiResult result = new WeiLiResult(); var db = new SqlHelper<object>().GetInstance(); - var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList(); - if (tasks.Count >= 1) - { - //娴佺▼浠诲姟鏁伴噺鎵ц瓒呰繃涓�潯 浠诲姟涓嶅厑璁稿彇娑�- result.code = 500; - result.msg = "娴佺▼浠诲姟鎵ц涓�涓嶅厑璁稿彇娑�; - return result; - } + //var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList(); + //if (tasks.Count >= 1) + //{ + // //娴佺▼浠诲姟鏁伴噺鎵ц瓒呰繃涓�潯 浠诲姟涓嶅厑璁稿彇娑�+ // result.code = 500; + // result.msg = "娴佺▼浠诲姟鎵ц涓�涓嶅厑璁稿彇娑�; + // return result; + //} + //var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); + //if (task != null) + //{ + // if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) + // { + // result.code = 500; + // result.msg = "浠诲姟宸插彇璐у畬鎴�涓嶅厑璁稿彇娑�; + // return result; + // } + // if (task.N_B_STATE == 0) + // { + // //绛夊緟鐩存帴淇敼鐘舵�涓哄彇娑�+ // WCSHelper.UpdateStatus(model.orderNo, 5); + // //result.msg = "浠诲姟绛夊緟锛岀洿鎺ュ彇娑�; + // } + // else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) + // { + // if (task.S_TYPE == "鏉ゥ") + // { + // //閫氱煡绔嬪簱鍙栨秷浠诲姟 + // } + // else + // { + // //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv + // NDCHelper.Cancel(task.S_CODE.Trim()); + // //result.msg = "浠诲姟鍙栨秷宸茬粡鍙戦�缁欏皬杞�; + // } + // } + // else + // { + // result.code = 500; + // result.msg = "浠诲姟宸茬粨鏉�; + // } + //} + //else + //{ + // result.code = 500; + // result.msg = "浠诲姟涓嶅瓨鍦�; + //} + var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); if (task != null) { - if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) + var wmsTask = WMSHelper.GetWmsTask(task.S_OP_CODE); + if (wmsTask != null) { - result.code = 500; - result.msg = "浠诲姟宸插彇璐у畬鎴�涓嶅厑璁稿彇娑�; - return result; - } - if (task.N_B_STATE == 0) - { - //绛夊緟鐩存帴淇敼鐘舵�涓哄彇娑�- WCSHelper.UpdateStatus(model.orderNo, 5); - //result.msg = "浠诲姟绛夊緟锛岀洿鎺ュ彇娑�; - } - else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) - { - if (task.S_TYPE == "鏉ゥ") + if (task.N_B_STATE == 0) { - //閫氱煡绔嬪簱鍙栨秷浠诲姟 + //绛夊緟鐩存帴淇敼鐘舵�涓哄彇娑�+ WCSHelper.UpdateStatus(task.S_CODE, 4); + wmsTask.N_B_STATE = 6; + WMSHelper.UpdateTaskState(wmsTask); + LocationHelper.UnLockLoc(task.S_START_LOC); + LocationHelper.UnLockLoc(task.S_END_LOC); + LocationHelper.UnLockLoc(wmsTask.S_END_LOC); + + result.msg = "浠诲姟绛夊緟锛岀洿鎺ュ彇娑�; + } + else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) + { + if (task.S_SCHEDULE_TYPE == "NDC") + { + //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv + NDCApi.CancelOrder(task.S_CODE.Trim()); + } + else + { + TaskProcess.Cancel(task); + TaskProcess.OperateStatus(task, 7); + WCSHelper.Fail(task); + WMSHelper.Fail(task); + } + + result.msg = "浠诲姟鍙栨秷宸茬粡鍙戦�缁欏皬杞�; } else { - //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv - NDCHelper.Cancel(task.S_CODE.Trim()); - //result.msg = "浠诲姟鍙栨秷宸茬粡鍙戦�缁欏皬杞�; + result.msg = "浠诲姟宸茬粨鏉�; } } else { result.code = 500; - result.msg = "浠诲姟宸茬粨鏉�; + result.msg = "浠诲姟鎵�鐨勪綔涓氫笉瀛樺湪"; } } else @@ -1678,6 +1758,7 @@ result.code = 500; result.msg = "浠诲姟涓嶅瓨鍦�; } + return result; } diff --git a/HH.WCS.Mobox3.WeiLi/api/MoboxController.cs b/HH.WCS.Mobox3.WeiLi/api/MoboxController.cs index ae3abf2..ece8c93 100644 --- a/HH.WCS.Mobox3.WeiLi/api/MoboxController.cs +++ b/HH.WCS.Mobox3.WeiLi/api/MoboxController.cs @@ -30,6 +30,7 @@ var wmsTask = WMSHelper.GetWmsTask(task.S_OP_CODE); if (wmsTask != null) { + if (task.N_B_STATE == 0) { //绛夊緟鐩存帴淇敼鐘舵�涓哄彇娑�@@ -49,7 +50,7 @@ //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv NDCApi.CancelOrder(task.S_CODE.Trim()); } - else + else { TaskProcess.Cancel(task); TaskProcess.OperateStatus(task, 7); @@ -64,8 +65,9 @@ result.resultCode = 1; result.resultMsg = "浠诲姟宸茬粨鏉�; } + } - else + else { result.resultCode = 1; result.resultMsg = "浠诲姟鎵�鐨勪綔涓氫笉瀛樺湪"; @@ -98,7 +100,7 @@ WMSHelper.UpdateTaskState(op); result.resultMsg = "浠诲姟绛夊緟锛岀洿鎺ュ彇娑�; } - else if (op.N_B_STATE ==1) + else if (op.N_B_STATE == 1) { //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv //NDCHelper.Cancel(task.S_CODE.Trim()); @@ -270,7 +272,18 @@ return ApiHelper.WeiLiDisbutionIn(model); } - + /// <summary> + /// PDA鍒嗘嫞鍥�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + [Route("ErrorOperation")] + public SimpleResult ErrorOperation(MoboxOperationBase model) + { + LogHelper.Info($"娓呴櫎閿欒浣滀笟 鍏ュ弬={JsonConvert.SerializeObject(model)}"); + return ApiHelper.ErrorOperation(model); + } ///// <summary> ///// 鍛煎彨绌烘 diff --git a/HH.WCS.Mobox3.WeiLi/core/WCSCore.cs b/HH.WCS.Mobox3.WeiLi/core/WCSCore.cs index 83e84c7..c95fbe2 100644 --- a/HH.WCS.Mobox3.WeiLi/core/WCSCore.cs +++ b/HH.WCS.Mobox3.WeiLi/core/WCSCore.cs @@ -46,10 +46,10 @@ case 4: WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); TaskProcess.OperateStatus(TN_Task, 4); - if (TN_Task.S_OP_NAME == "鍑哄簱") - { - WMSHelper.DeleteChange(TN_Task); - } + //if (TN_Task.S_OP_NAME == "鍑哄簱") + //{ + // WMSHelper.DeleteChange(TN_Task); + //} break; case 5: WCSHelper.UpdateStatus(TN_Task, "寮�鍗歌揣"); @@ -86,6 +86,8 @@ { //瀹夊叏璇锋眰绛� TaskProcess.AddTaskAction(model); + + WCSHelper.AddActionRecord(model.task_no, model.State, model.forklift_no, model.ext_data); //TaskProcess.OperateReq(TN_Task, model.State, model.forklift_no, model.ext_data); } } diff --git a/HH.WCS.Mobox3.WeiLi/core/WMSCore.cs b/HH.WCS.Mobox3.WeiLi/core/WMSCore.cs index 2009b8f..09b0caa 100644 --- a/HH.WCS.Mobox3.WeiLi/core/WMSCore.cs +++ b/HH.WCS.Mobox3.WeiLi/core/WMSCore.cs @@ -359,10 +359,15 @@ }; if (WCSHelper.CreateTask(wcsTask)) { + LogHelper.Info($"浣滀笟{a.S_CODE} 鍒涘缓浠诲姟鎴愬姛 淇敼浣滀笟鐘舵�"); //鏇存柊浣滀笟鐘舵�涓烘墽琛� a.N_B_STATE = 1; a.S_B_STATE = "鎵ц"; WMSHelper.UpdateTaskState(a); + } + else + { + LogHelper.Info($"浣滀笟{a.S_CODE} 鍒涘缓浠诲姟澶辫触"); } } else @@ -472,6 +477,7 @@ if (WCSHelper.CreateTask(wcsTask)) { + LogHelper.Info($"浣滀笟{a.S_CODE} 鍒涘缓浠诲姟鎴愬姛 淇敼浣滀笟鐘舵�"); //鏇存柊浣滀笟鐘舵�涓烘墽琛� a.N_B_STATE = 1; a.S_B_STATE = "鎵ц"; diff --git a/HH.WCS.Mobox3.WeiLi/models/TN_Material.cs b/HH.WCS.Mobox3.WeiLi/models/TN_Material.cs index 1252c35..9edfcf8 100644 --- a/HH.WCS.Mobox3.WeiLi/models/TN_Material.cs +++ b/HH.WCS.Mobox3.WeiLi/models/TN_Material.cs @@ -9,6 +9,7 @@ { public string S_ITEM_CODE { get; set; } public string S_ITEM_NAME { get; set; } + public string S_HEIGHT { get; set; } public string S_MP_TYPE { get; set; } public Nullable<float> F_WEIGHT { get; set; } public string S_MATERIAL { get; set; } diff --git a/HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs b/HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs index 7ac9f37..f31896d 100644 --- a/HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs +++ b/HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs @@ -104,15 +104,21 @@ internal static bool AddActionRecord(string no, int state, string forkliftNo, string extData) { var db = new SqlHelper<TaskAction>().GetInstance(); - var action = new TaskAction() + var result = true; + var info = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == state).First(); + if (info == null) { - N_ACTION_CODE = state, - S_TASK_CODE = no, - S_EQ_CODE = forkliftNo, - S_EQ_TYPE = "agv", - S_DATA = extData - }; - return db.Insertable(action).ExecuteCommand() > 0; + var action = new TaskAction() + { + N_ACTION_CODE = state, + S_TASK_CODE = no, + S_EQ_CODE = forkliftNo, + S_EQ_TYPE = "agv", + S_DATA = extData + }; + result= db.Insertable(action).ExecuteCommand() > 0; + } + return result; } internal static bool CheckActionRecordExist(string no, int code) { var db = new SqlHelper<TaskAction>().GetInstance(); diff --git a/HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs b/HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs index 0cf5462..bdd42b9 100644 --- a/HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs @@ -714,12 +714,12 @@ db.Updateable(InventoryCntr).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); } - var InventoryCntr2 = db.Queryable<PlanInventory>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE && a.N_B_STATE == 3).First(); - if (InventoryCntr2 != null && task.S_TYPE == "鐩樼偣鍥�) - { - InventoryCntr2.N_B_STATE = 4; - db.Updateable(InventoryCntr2).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); - } + //var InventoryCntr2 = db.Queryable<PlanInventory>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE && a.N_B_STATE == 3).First(); + //if (InventoryCntr2 != null && task.S_TYPE == "鐩樼偣鍥�) + //{ + // InventoryCntr2.N_B_STATE = 4; + // db.Updateable(InventoryCntr2).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + //} } @@ -1098,6 +1098,26 @@ { LogHelper.Info($"璇ユ枡妗嗘棤鐗规畩瑙勬牸 涓嶉渶鍖哄垎楂樹綆璐т綅"); } + + if (a.S_END_AREA == "11TLKQ") + { + //鎵樼洏楂樺害浠庣墿鏂欒〃涓幏鍙�+ var itemList = db.Queryable<CntrItemRel>().Where(it => it.S_CNTR_CODE == a.S_CNTR_CODE).ToList(); + foreach (var item in itemList) + { + var itemInfo = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == item.S_ITEM_CODE).First(); + if (itemInfo != null) + { + loctype = itemInfo.S_HEIGHT; + if (loctype == "楂樿揣浣�) + { + break; + } + } + } + } + + //缁堢偣涓虹珛搴撶殑浠诲姟 result = GetLiKuLocationIn(a.S_END_AREA, 0, loctype); if (result != null) -- Gitblit v1.9.1