From d42ad8b01195def2a9309930e14f90ff13ad47b1 Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期四, 19 六月 2025 17:24:28 +0800 Subject: [PATCH] 印尼佳通出入库策略优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs | 189 ++++++++++++++++++++++++++++++++++++----------- 1 files changed, 145 insertions(+), 44 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs index 959c9e7..c63c661 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs @@ -4,6 +4,7 @@ using HH.WCS.Mobox3.YNJT_PT.process; using HH.WCS.Mobox3.YNJT_PT.util; using HH.WCS.Mobox3.YNJT_PT.wms; +using MySqlX.XDevAPI.Common; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; @@ -52,7 +53,7 @@ N_IS_URGENT = model.isUrgent, T_OFF_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), N_IS_FULL = model.isFull, - + S_LOC = model.loc }; WMSHelper.addOffLineRecord(record); } @@ -118,6 +119,26 @@ var itemBarcodeInfo = WMSHelper.GetGreenTireInformation(ext.barcode); if (itemBarcodeInfo != null) { + itemBarcodeInfo.N_URGENT_FLAG = offLineRecord.N_IS_URGENT; + // 璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂�+ var overage = WMSHelper.getOverage(itemBarcodeInfo.BARCODE); + LogHelper.Info($"璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂达紝杩斿洖鍊硷細{JsonConvert.SerializeObject(overage)}", "WMS"); + if (overage != null) + { + DateTime txndate = DateTime.Parse(itemBarcodeInfo.TXNDATE); + DateTime minTime = txndate.AddHours(overage.MINHOUR); + DateTime maxTime = txndate.AddDays(overage.OVERAGE); + itemBarcodeInfo.S_EFFECTIVE_TIME = minTime.ToString("yyyy-MM-dd HH:mm:ss"); + itemBarcodeInfo.S_EXPIRATION_TIME = maxTime.ToString("yyyy-MM-dd HH:mm:ss"); + } + else + { + response.code = 1; + response.msg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿itemBarcodeInfo.BARCODE}"; + return response; + } + + ContainerHelper.addCntrItemRel(rfid, itemBarcodeInfo); barcodeList.Add(ext); } else @@ -203,9 +224,9 @@ wmsTask.N_B_STATE = 1; WMSHelper.UpdateTaskState(wmsTask); - // 缁戝畾瀹瑰櫒鐗╂枡淇℃伅 + /*// 缁戝畾瀹瑰櫒鐗╂枡淇℃伅 var itemBarcodeInfo = WMSHelper.GetGreenTireInformation(ext.barcode); - WMSHelper.bindBarcodeItemInfo(wmsTask.S_CNTR_CODE, itemBarcodeInfo); + WMSHelper.bindBarcodeItemInfo(wmsTask.S_CNTR_CODE, itemBarcodeInfo);*/ } } } @@ -213,8 +234,8 @@ else { // 寮傚父鎵樼洏鎺掗櫎 - var middleLoc = WMSHelper.getMinTaskMiddleLoc(1); // 1.寮傚父鎺掑嚭浣�- endLoc = WMSHelper.getAbnormalAreaEmptyLoc(Settings.abnormalArea); + var middleLoc = WMSHelper.getMinTaskMiddleLoc(1); // 1.鎺掑嚭浣�+ endLoc = WMSHelper.getOnlneLoc(2); // 2.绌烘墭涓婄嚎浣嶏紙鎺掑嚭鐨勬墭鐩橀兘鍑哄簱鍒扮┖鎵樹笂绾夸綅杩涜澶勭悊锛� if (endLoc != null && middleLoc != null) { var wmsTask = new WMSTask() @@ -287,6 +308,7 @@ /// <summary> /// 璇荤爜璇锋眰 + /// 鍦烘櫙锛�. /// </summary> public static ResponseResult readCodeRequest(NotifyDeviceSignalModel model) { @@ -295,63 +317,74 @@ { verifyResult = true }; - var wmsTask = WMSHelper.GetWmsTask(model.taskNo); - if (wmsTask != null) + var wcsTask = WCSHelper.GetTask(model.taskNo); + var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE); + if (wcsTask != null && wmsTask != null) { - if (wmsTask.S_TYPE != "寮傚父鎵樼洏鍑哄簱浠诲姟") + Location endLoc = LocationHelper.GetLoc(wmsTask.S_END_LOC); // 鍘熺粓鐐�+ if (wcsTask.S_TYPE == "婊℃枡涓嬬嚎鍏ュ簱浠诲姟") { - Location endLoc = null; - Location middleLoc = null; // 鍒ゆ柇rfid鏄惁寮傚父 - if (model.cntrNo != wmsTask.S_CNTR_CODE) + if (model.cntrNo != wcsTask.S_CNTR_CODE) { - endLoc = LocationHelper.GetLoc(wmsTask.S_END_LOC); - var connectLoc = Settings.connectLocList.Where(a => a.roadway == endLoc.N_ROADWAY && a.type == 1).FirstOrDefault(); - middleLoc = LocationHelper.GetLoc(connectLoc.locCode); - endLoc = WMSHelper.getAbnormalAreaEmptyLoc(Settings.abnormalArea); + // 鏌ヨ鎺掑嚭鍙�+ Location middleLoc = WMSHelper.getMinTaskMiddleLoc(1, 0, endLoc.N_ROADWAY); + // 鏌ヨ鏂扮粓鐐�+ endLoc = WMSHelper.getOnlneLoc(2); + + wcsTask.S_END_LOC = middleLoc.S_CODE; + wcsTask.S_END_AREA = middleLoc.S_AREA_CODE; + WCSHelper.updateTaskEnd(wcsTask); + wmsTask.S_END_LOC = endLoc.S_CODE; wmsTask.S_END_AREA = endLoc.S_AREA_CODE; WMSHelper.UpdateTaskEnd(wmsTask); - var wcsTask = WCSHelper.GetTaskBySrcNo(wmsTask.S_CODE); - if (wcsTask != null) - { - wcsTask.S_END_LOC = middleLoc.S_CODE; - wcsTask.S_END_AREA = middleLoc.S_AREA_CODE; - WCSHelper.updateTaskEnd(wcsTask); - } - readCodeFeedbackResponse.verifyResult = false; readCodeFeedbackResponse.endLoc = middleLoc.S_CODE; - response.data = readCodeFeedbackResponse; + } + } + else if (wcsTask.S_TYPE == "鑳氳儙鍙枡鍑哄簱浠诲姟") + { + if (model.cntrNo != wcsTask.S_CNTR_CODE) + { + // 璁$畻鎺掑嚭鍙�+ endLoc = WMSHelper.getCallOutLoc(endLoc.N_ROW); + + wcsTask.S_END_LOC = endLoc.S_CODE; + wcsTask.S_END_AREA = endLoc.S_AREA_CODE; + WCSHelper.updateTaskEnd(wcsTask); + + wmsTask.S_END_LOC = endLoc.S_CODE; + wmsTask.S_END_AREA = endLoc.S_AREA_CODE; + WMSHelper.UpdateTaskEnd(wmsTask); + + readCodeFeedbackResponse.verifyResult = false; + readCodeFeedbackResponse.endLoc = endLoc.S_CODE; } else { - var cntrItemRels = ContainerHelper.GetCntrItemRel(wmsTask.S_CNTR_CODE); - if (cntrItemRels.Count > 0) + var cntrItemRels = ContainerHelper.GetCntrItemRel(wcsTask.S_CNTR_CODE); + if (cntrItemRels.Count > 0) { - if (cntrItemRels[0].S_ITEM_STATE != "OK") + if (cntrItemRels[0].S_ITEM_STATE != "OK") { - middleLoc = WMSHelper.getMinTaskMiddleLoc(1); // 1.寮傚父鎺掑嚭浣�- endLoc = WMSHelper.getAbnormalAreaEmptyLoc(Settings.abnormalArea); + endLoc = WMSHelper.getMinTaskMiddleLoc(1,endLoc.N_ROADWAY); ; + + wcsTask.S_END_LOC = endLoc.S_CODE; + wcsTask.S_END_AREA = endLoc.S_AREA_CODE; + WCSHelper.updateTaskEnd(wcsTask); + wmsTask.S_END_LOC = endLoc.S_CODE; wmsTask.S_END_AREA = endLoc.S_AREA_CODE; WMSHelper.UpdateTaskEnd(wmsTask); - var wcsTask = WCSHelper.GetTaskBySrcNo(wmsTask.S_CODE); - if (wcsTask != null) - { - wcsTask.S_END_LOC = middleLoc.S_CODE; - wcsTask.S_END_AREA = middleLoc.S_AREA_CODE; - WCSHelper.updateTaskEnd(wcsTask); - } - readCodeFeedbackResponse.verifyResult = false; - readCodeFeedbackResponse.endLoc = middleLoc.S_CODE; - response.data = readCodeFeedbackResponse; + readCodeFeedbackResponse.endLoc = endLoc.S_CODE; } } } + } } else @@ -361,6 +394,63 @@ } response.data = readCodeFeedbackResponse; return response; + } + + /// <summary> + /// 鐢宠鏂扮粓鐐�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static ResponseResult applyDest(ApplyDestModel model) + { + ResponseResult response = new ResponseResult(); + ApplyDest applyDest = new ApplyDest(); + var wcsTask = WCSHelper.GetTask(model.taskNo); + if (wcsTask != null) + { + var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE); + if (wcsTask != null) + { + string itemCode = null; + var endLoc = LocationHelper.GetLoc(wcsTask.S_END_LOC); + var cntrItemRels = ContainerHelper.GetCntrItemRel(wcsTask.S_CNTR_CODE); + if (cntrItemRels.Count > 0) + { + itemCode = cntrItemRels[0].S_ITEM_CODE; + } + + if (model.applyType == 1) + { + LocationHelper.LockLoc(wcsTask.S_END_LOC, 3); // 灏嗗師璐т綅閿佸畾锛堝叾浠栭攣锛�+ var endLocGroup = WMSHelper.getInStockEndLoc(1, itemCode, endLoc.N_ROADWAY); + if (endLocGroup.endLocList.Count > 0) + { + endLoc = endLocGroup.endLocList[0]; + applyDest.endLoc = endLoc.S_CODE; + } + } + else if (model.applyType == 2) + { + var endLocGroup = WMSHelper.getInStockEndLoc(1, cntrItemRels[0].S_ITEM_CODE, 0, endLoc.N_ROADWAY); + if (endLocGroup.endLocList.Count > 0) + { + endLoc = endLocGroup.endLocList[0]; + applyDest.endLoc = endLoc.S_CODE; + } + } + } + } + else + { + response.code = 1; + response.msg = $"浠诲姟:{model.taskNo}涓嶅瓨鍦�; + } + return response; + } + + public class ApplyDest + { + public string endLoc { get; set; } } /// <summary> @@ -444,9 +534,9 @@ S_START_AREA = startLoc.S_AREA_CODE, S_END_LOC = endLoc.S_CODE, S_END_AREA = endLoc.S_AREA_CODE, - S_TYPE = "婊℃枡涓嬬嚎鍏ュ簱浠诲姟", + S_TYPE = "鑳氳儙鍙枡鍑哄簱浠诲姟", S_OP_DEF_CODE = model.reqId, - S_OP_DEF_NAME = "鎴愬瀷鏈烘弧鏂欎笅绾垮叆搴�, + S_OP_DEF_NAME = "纭寲鏈哄懠鍙儦鑳庡嚭搴�, N_PRIORITY = 1, T_START_TIME = DateTime.Now, S_GROUP_NO = groupNo, @@ -642,7 +732,7 @@ if (locCntrs.Count == 1) { Location startLoc = LocationHelper.GetLoc(locCntrs[0].S_LOC_CODE); - var connectLoc = Settings.connectLocList.Where(a => a.roadway == startLoc.N_ROADWAY && a.type == 1).First(); + var connectLoc = Settings.connectLocList.Where(a => a.roadway == startLoc.N_ROADWAY).First(); Location middleLoc = LocationHelper.GetLoc(connectLoc.locCode); Location endLoc = LocationHelper.GetLoc(""); if (endLoc != null) @@ -767,11 +857,21 @@ if (model.status == 2 || model.status == 8) { - if (mst != null) + if (mst != null && mst.N_B_STATE != 2) { - if (mst.N_B_STATE != 2) + if (mst.S_END_LOC != cst.S_END_LOC) { WCSCore.createLastTask(cst.S_END_LOC, mst); + } + else + { + mst.N_B_STATE = 2; + WMSHelper.UpdateTaskState(mst); + } + + if (mst.S_TYPE == "鍛煎彨绌烘墭鍑哄簱") + { + LocationHelper.UnBindingLoc(mst.S_END_LOC, new List<string>() { mst.S_CNTR_CODE }); } } } @@ -958,6 +1058,7 @@ public class OffLineModel { + public string loc { get; set; } // 涓嬬嚎浣� public string rfid { get; set; } // 鎵樼洏鍙� public string deviceNo { get; set; } // 鏈哄彴鍙� public int isUrgent { get; set; } // N_IS_URGENT 鏄惁鍔犳�锛�.鍚�1.鏄級 -- Gitblit v1.9.1