From e0d89637030791ce1e7dd46ca5fdec9979977960 Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期三, 11 六月 2025 17:28:41 +0800 Subject: [PATCH] 印尼佳通-硫化流程出入库流程开发 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs | 483 +++++++++++++++++++++++++--------------------------- 1 files changed, 232 insertions(+), 251 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs index 6c0af1a..176e9dc 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs @@ -43,22 +43,27 @@ Location endLoc = LocationHelper.GetLoc(model.endLocCode); if (endLoc == null) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode}"); - throw new BusinessException($"WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode},璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode}"); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode},璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�); + } + else if (endLoc.N_LOCK_STATE != 0) + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�"); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�"); } var areaCodes = Settings.getRelAreaCodes(endLoc.S_AREA_CODE); if (areaCodes.Count == 0) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�); - throw new BusinessException($"鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�); } Location startLoc = WMSHelper.getOutStockStartLoc(areaCodes[0], null); if (startLoc == null) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�); - throw new BusinessException($"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�); } var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); @@ -139,7 +144,7 @@ var container = ContainerHelper.GetCntr(request.cntrNo); if (container != null) { - if (cst.S_CNTR_CODE == request.cntrNo) + if (cst.S_CNTR_CODE != request.cntrNo) { ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1); WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, request.loc, cst.S_CODE); @@ -150,6 +155,8 @@ ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1); WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 1, request.loc, cst.S_CODE); } + + /*WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE);*/ // 鏂规2 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣� /* var agvEndLoc = WMSHelper.GetTransfeRelevanceLoc(loc.S_AREA_CODE, "4"); @@ -229,39 +236,23 @@ var logicConfig = WMSHelper.getLogicConfigByJtCode(model.jtNo); if (logicConfig != null) { + Container container = ContainerHelper.GetCntr(model.cntrNo); + if (container == null || !model.isNormal) + { + ContainerHelper.AddCntr(model.cntrNo); + ContainerHelper.UpdateCntrState(model.cntrNo, 1); + WMSHelper.addRfidAnomalyRecord(model.cntrNo, 1, model.loc, null); + } + // 鏍规嵁鐗╂枡涓嬬嚎閰嶇疆淇℃伅锛屽垽鏂换鍔$被鍨嬫槸鐩磋繛涓嬬嚎杩樻槸闈炵洿杩炰笅绾� if (logicConfig.S_TASK_TYPE == "1" || logicConfig.S_TASK_TYPE == "2") { - // 鐩磋繛涓嬬嚎锛岄渶瑕佸垽鏂牎楠孯FID - LjMesTask mesTask = null; - var container = ContainerHelper.GetCntr(model.cntrNo); - if (container != null) - { - mesTask = WMSHelper.getLjMesTaskByCntr(model.cntrNo); - if (mesTask == null) - { - ContainerHelper.UpdateCntrState(model.cntrNo, 1); - WMSHelper.addRfidAnomalyRecord(model.cntrNo, 3, model.loc, null); - } - } - else - { - model.isNormal = false; - } - - if (!model.isNormal) - { - ContainerHelper.AddCntr(model.cntrNo); - ContainerHelper.UpdateCntrState(model.cntrNo, 1); - WMSHelper.addRfidAnomalyRecord(model.cntrNo, 1, model.loc, null); - } - triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig, mesTask); + triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig); } else { // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�- var mesTask = WMSHelper.getLjMesTaskByLoc(model.loc); - triggerItemOffLineFlow4(model.loc, logicConfig,mesTask); + triggerItemOffLineFlow4(model.loc, model.cntrNo, logicConfig); } } else @@ -278,6 +269,7 @@ return responseResult; } + /// <summary> /// 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛� /// 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟 @@ -287,52 +279,62 @@ /// </summary> /// <param name="offLineLoc"></param> /// <param name="logicConfig"></param> + /// <param name="cntrNo"></param> /// <returns></returns> - public static bool triggerItemOffLineFlow4(string offLineLoc, LogicConfig logicConfig ,LjMesTask mesTask) + public static bool triggerItemOffLineFlow4(string offLineLoc,string cntrNo, LogicConfig logicConfig ,LjMesTask mesTask = null) { bool result = true; try { + if (mesTask == null) + { + mesTask = WMSHelper.getLjMesTaskByCntr(cntrNo); + } + if (mesTask != null) { // 2.鍒ゆ柇鏄惁闇�琛ョ┖宸ヨ锛岄渶瑕侊紝鍒欏垱寤虹┖宸ヨ鍑哄簱浠诲姟 - // TODO 鏌ヨ缂撳瓨浣嶇嚎浣撳厜鐢�+++++ bool photoStatus = false; var hcLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC); if (hcLoc != null) { - var transfeRelevance = WMSHelper.GetTransfeRelevance(hcLoc.S_CODE); // 缂撳瓨浣嶅叧鑱斿睘鎬�- if (transfeRelevance != null) + if (hcLoc.N_CURRENT_NUM != 0 && hcLoc.N_LOCK_STATE == 0) { - photoStatus = true; - // 鏂规1锛屽鏋滈潪鐩磋繛鐨勭紦瀛樹綅鏈夊厜鐢典俊鍙凤紝鍒欐煡璇㈣澶囩姸鎬佸垽鏂槸鍚﹂渶瑕佽ˉ绌哄伐瑁�- /*var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { transfeRelevance.S_DEVICE_NO }); - if (deviceStatusDatas != null && deviceStatusDatas.Count > 0) + hcLoc = LocationHelper.GetEmptyLoc(hcLoc.S_AREA_CODE); + } + + if (hcLoc != null) + { + var bufferLocConfig = Settings.GetBufferLocConfig(hcLoc.S_CODE); // 缂撳瓨浣嶅叧鑱斿睘鎬�+ if (bufferLocConfig != null || hcLoc.N_CURRENT_NUM == 0) { - var deviceStatus = deviceStatusDatas[0]; - if (deviceStatus.workStatus == 1 && deviceStatus.manualStatus == 0) - { - photoStatus = deviceStatus.photoStatus == 1; - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); - throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); - } + photoStatus = true; + // 鏂规1锛屽鏋滈潪鐩磋繛鐨勭紦瀛樹綅鏈夊厜鐢典俊鍙凤紝鍒欐煡璇㈣澶囩姸鎬佸垽鏂槸鍚﹂渶瑕佽ˉ绌哄伐瑁�+ /* var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { bufferLocConfig.deviceNo }); + if (deviceStatusDatas != null && deviceStatusDatas.Count > 0) + { + var deviceStatus = deviceStatusDatas[0]; + if (deviceStatus.workStatus == 1 && deviceStatus.manualStatus == 0) + { + photoStatus = deviceStatus.photoStatus == 1; + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); + throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); + } + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); + throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); + }*/ } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); - throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); - }*/ - - // 鏂规2锛屽鏋滈潪鐩磋繛鐨勭紦瀛樹綅娌℃湁鍏夌數淇″彿锛屽垯鏍规嵁璐т綅鐘舵�杩涜鍒ゆ柇锛岄渶瑕佹敞鎰忥細浜哄伐鍙栫┖宸ヨ闇�瑙i攣 - - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆"); - throw new BusinessException($"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆"); + throw new BusinessException($"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆"); + } } } else @@ -352,12 +354,12 @@ if (kgzStartLoc == null) { WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); - throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); + photoStatus = false; } if (kgzEndLoc == null) { WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); - throw new BusinessException($"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); + photoStatus = false; } var locCntrRels = LocationHelper.GetLocCntr(kgzStartLoc.S_CODE); @@ -367,8 +369,8 @@ } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�); - throw new BusinessException($"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呭嚭搴撶珯鍙�{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�); + photoStatus = false; } } @@ -390,7 +392,6 @@ S_OP_DEF_CODE = mesTask.ID.ToString(), T_START_TIME = DateTime.Now, }; - if (WMSHelper.CreateWmsTask(wmsTask)) { int priority = 10; @@ -421,12 +422,12 @@ } } - // 3.鍒ゆ柇瀹瑰櫒鏄惁鏄紓甯稿伐瑁咃紝鏄紝鍒欏垱寤哄紓甯稿伐瑁呭叆绾胯竟寮傚父鍖轰换鍔★紱 - // 鍚︼紝鍒欏垱寤烘弧鏂欏伐瑁呭叆搴撲换鍔★紙濡傞渶瑕佽ˉ绌哄伐瑁咃紝鍒欏皢浠诲姟鐘舵�鏀逛负棰勫垱寤猴紝绛夊緟琛ョ┖宸ヨ浠诲姟瀹屾垚鍚庤Е鍙戯級 + // 3.鍒涘缓婊℃枡宸ヨ鍏ュ簱浠诲姟锛堝闇�琛ョ┖宸ヨ锛屽垯灏嗕换鍔$姸鎬佹敼涓洪鍒涘缓锛岀瓑寰呰ˉ绌哄伐瑁呬换鍔″畬鎴愬悗瑙﹀彂锛� WCSTask wcsTask = new WCSTask() { S_OP_NAME = wmsTask.S_OP_DEF_NAME, S_OP_CODE = wmsTask.S_CODE, + S_TYPE = "婊℃枡宸ヨ鍏ュ簱浠诲姟(闈炵洿杩�", S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = wmsTask.S_CNTR_CODE, S_START_LOC = startLoc.S_CODE, @@ -437,25 +438,7 @@ N_PRIORITY = 99, T_START_TIME = DateTime.Now, }; - Container container = ContainerHelper.GetCntr(cntrCode); - if (container.N_E_STATE == 0) - { - wcsTask.S_TYPE = "婊℃枡宸ヨ鍏ュ簱浠诲姟(闈炵洿杩�"; - } - else - { - Location ycgzLoc = null; - if (ycgzLoc != null) - { - wcsTask.S_TYPE = "寮傚父宸ヨ鍏ュ簱绾胯竟寮傚父鍖�; - wcsTask.S_END_LOC = ycgzLoc.S_CODE; - wcsTask.S_END_AREA = ycgzLoc.S_AREA_CODE; - } - else - { - wcsTask.S_TYPE = "寮傚父宸ヨ鍏ュ簱"; - } - } + if (photoStatus) { wcsTask.N_B_STATE = -1; @@ -467,14 +450,14 @@ // 璧风偣銆佺粓鐐瑰姞閿� LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); + + // 4.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�+ WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID); } - - // 鏇存柊浣滀笟浠诲姟鐘舵� - wmsTask.N_B_STATE = 1; - WMSHelper.UpdateTaskState(wmsTask); - - // 4.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�- WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID); } } else @@ -511,10 +494,10 @@ /// 5.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬� /// </summary> /// <param name="offLineLoc">涓嬬嚎璐т綅</param> - /// <param name="cntrCode">涓嬬嚎瀹瑰櫒缂栫爜</param> + /// <param name="cntrNo">涓嬬嚎瀹瑰櫒缂栫爜</param> /// <param name="logicConfig">閫昏緫閰嶇疆</param> /// <returns></returns> - public static bool triggerItemOffLineFlow(string offLineLoc, string cntrCode, LogicConfig logicConfig ,LjMesTask mesTask) { + public static bool triggerItemOffLineFlow(string offLineLoc, string cntrNo, LogicConfig logicConfig ) { bool result = true; try { @@ -523,14 +506,14 @@ var hcLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC); if (hcLoc != null) { - var transfeRelevance = WMSHelper.GetTransfeRelevance(hcLoc.S_CODE); // 缂撳瓨浣嶅叧鑱斿睘鎬�- if (transfeRelevance != null) + var bufferLocConfig = Settings.GetBufferLocConfig(hcLoc.S_CODE); + if (bufferLocConfig != null) { // 娴嬭瘯浠g爜 photoStatus = true; - // 涓氬姟浠g爜锛屽嬁鍒�- /*var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { transfeRelevance.S_DEVICE_NO }); + /* // 涓氬姟浠g爜锛屽嬁鍒�+ var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { bufferLocConfig.deviceNo }); if (deviceStatusDatas != null && deviceStatusDatas.Count > 0) { var deviceStatus = deviceStatusDatas[0]; @@ -538,16 +521,16 @@ { photoStatus = deviceStatus.photoStatus == 1; } - else + else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); - throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); + throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�); } } - else + else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); - throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); + throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父"); }*/ } else @@ -576,133 +559,130 @@ throw new BusinessException($"搴撳唴娌℃湁绌轰綑璐т綅"); } - Container container = ContainerHelper.GetCntr(cntrCode); - if (container != null) + LjMesTask mesTask = WMSHelper.getLjMesTaskByCntr(cntrNo); + // 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟 + var wmsTask = new WMSTask() { - // 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟 - var wmsTask = new WMSTask() + S_CNTR_CODE = cntrNo, + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = startLoc.S_CODE, + S_START_AREA = startLoc.S_AREA_CODE, + S_END_LOC = endLoc.S_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_TYPE = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)", + S_OP_DEF_NAME = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)", + S_OP_DEF_CODE = mesTask != null ? mesTask.ID.ToString() : null, + T_START_TIME = DateTime.Now, + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + int priority = 10; + Dictionary<int, WCSTask> taskDic = new Dictionary<int, WCSTask>(); + + // 鏄惁鍒涘缓绌哄伐瑁呭嚭鍙d换鍔�+ if (photoStatus || true ) { - S_CNTR_CODE = cntrCode, - S_CODE = WMSHelper.GenerateTaskNo(), + Location kgzStartLoc = WMSHelper.getOutStockStartLoc(logicConfig.S_AREA_CODE, null); + Location kgzEndLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC); + if (kgzStartLoc == null) + { + WMSHelper.DeleteWmsTask(wmsTask.S_CODE); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); + throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); + } + if (kgzEndLoc == null) + { + WMSHelper.DeleteWmsTask(wmsTask.S_CODE); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); + throw new BusinessException($"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); + } + + var locCntrRels = LocationHelper.GetLocCntr(kgzStartLoc.S_CODE); + if (locCntrRels.Count > 0) + { + string kgzCntrCode = locCntrRels[0].S_CNTR_CODE; + // 濡傛槸鑳庝晶鐩磋繛妯″紡锛屽垯鎻愰珮绌哄伐瑁呭嚭搴撲换鍔′紭鍏堢骇 + if (logicConfig.S_TASK_TYPE == "1") + { + priority = 99; + } + WCSTask kgzWcsTask = new WCSTask() + { + S_OP_NAME = wmsTask.S_OP_DEF_NAME, + S_OP_CODE = wmsTask.S_CODE, + S_CODE = WCSHelper.GenerateTaskNo(), + S_CNTR_CODE = kgzCntrCode, + S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�, + S_START_LOC = kgzStartLoc.S_CODE, + S_START_AREA = kgzStartLoc.S_AREA_CODE, + S_END_LOC = kgzEndLoc.S_CODE, + S_END_AREA = kgzEndLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "WCS", + N_PRIORITY = priority, + T_START_TIME = DateTime.Now, + }; + taskDic.Add(priority, kgzWcsTask); + } + else + { + WMSHelper.DeleteWmsTask(wmsTask.S_CODE); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�); + throw new BusinessException($"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�); + } + } + + // 濡傛槸甯樺竷鐩磋繛妯″紡鍒欙紝鎻愰珮婊℃枡鍏ュ簱浼樺厛绾�+ if (logicConfig.S_TASK_TYPE == "2") + { + priority = 99; + } + else + { + priority = 10; + } + + WCSTask wcsTask = new WCSTask() + { + S_OP_NAME = wmsTask.S_OP_DEF_NAME, + S_OP_CODE = wmsTask.S_CODE, + S_CODE = WCSHelper.GenerateTaskNo(), + S_CNTR_CODE = wmsTask.S_CNTR_CODE, + S_TYPE = wmsTask.S_TYPE, S_START_LOC = startLoc.S_CODE, S_START_AREA = startLoc.S_AREA_CODE, S_END_LOC = endLoc.S_CODE, S_END_AREA = endLoc.S_AREA_CODE, - S_TYPE = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)", - S_OP_DEF_NAME = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)", - S_OP_DEF_CODE = mesTask != null ? mesTask.ID.ToString() : null, + S_SCHEDULE_TYPE = "WCS", + N_PRIORITY = priority, T_START_TIME = DateTime.Now, }; - if (WMSHelper.CreateWmsTask(wmsTask)) + taskDic.Add(priority, wcsTask); + + var tasks = taskDic.OrderByDescending(a => a.Key).Select(a => a.Value).ToList(); + foreach (var task in tasks) { - int priority = 10; - - // 鏄惁鍒涘缓绌哄伐瑁呭嚭鍙d换鍔�- if (photoStatus) - { - Location kgzStartLoc = WMSHelper.getOutStockStartLoc(logicConfig.S_AREA_CODE, null); - Location kgzEndLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC); - if (kgzStartLoc == null) - { - WMSHelper.DeleteWmsTask(wmsTask.S_CODE); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); - throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); - } - if (kgzEndLoc == null) - { - WMSHelper.DeleteWmsTask(wmsTask.S_CODE); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); - throw new BusinessException($"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); - } - - var locCntrRels = LocationHelper.GetLocCntr(kgzStartLoc.S_CODE); - if (locCntrRels.Count > 0) - { - string kgzCntrCode = locCntrRels[0].S_CNTR_CODE; - // 濡傛槸鑳庝晶鐩磋繛妯″紡锛屽垯鎻愰珮绌哄伐瑁呭嚭搴撲换鍔′紭鍏堢骇 - if (logicConfig.S_TASK_TYPE == "1") - { - priority = 99; - } - WCSTask kgzWcsTask = new WCSTask() - { - S_OP_NAME = wmsTask.S_OP_DEF_NAME, - S_OP_CODE = wmsTask.S_CODE, - S_CODE = WCSHelper.GenerateTaskNo(), - S_CNTR_CODE = kgzCntrCode, - S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�, - S_START_LOC = kgzStartLoc.S_CODE, - S_START_AREA = kgzStartLoc.S_AREA_CODE, - S_END_LOC = kgzEndLoc.S_CODE, - S_END_AREA = kgzEndLoc.S_AREA_CODE, - S_SCHEDULE_TYPE = "WCS", - N_PRIORITY = priority, - T_START_TIME = DateTime.Now, - }; - - if (WCSHelper.CreateTask(kgzWcsTask)) - { - // 璧风偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(kgzWcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(kgzWcsTask.S_END_LOC, 1); - } - } - else - { - WMSHelper.DeleteWmsTask(wmsTask.S_CODE); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�); - throw new BusinessException($"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�); - } - } - - // 濡傛槸甯樺竷鐩磋繛妯″紡鍒欙紝鎻愰珮婊℃枡鍏ュ簱浼樺厛绾�- if (logicConfig.S_TASK_TYPE == "2") - { - priority = 99; - } - else - { - priority = 10; - } - - WCSTask wcsTask = new WCSTask() - { - S_OP_NAME = wmsTask.S_OP_DEF_NAME, - S_OP_CODE = wmsTask.S_CODE, - S_CODE = WCSHelper.GenerateTaskNo(), - S_CNTR_CODE = wmsTask.S_CNTR_CODE, - S_TYPE = wmsTask.S_TYPE, - S_START_LOC = startLoc.S_CODE, - S_START_AREA = startLoc.S_AREA_CODE, - S_END_LOC = endLoc.S_CODE, - S_END_AREA = endLoc.S_AREA_CODE, - S_SCHEDULE_TYPE = "WCS", - N_PRIORITY = priority, - T_START_TIME = DateTime.Now, - }; - - if (WCSHelper.CreateTask(wcsTask)) + if (WCSHelper.CreateTask(task)) { // 璧风偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); - } - - // 鏇存柊浣滀笟浠诲姟鐘舵� - wmsTask.N_B_STATE = 1; - WMSHelper.UpdateTaskState(wmsTask); - - // 5.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�- if (mesTask != null) - { - WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID); + LocationHelper.LockLoc(task.S_START_LOC, 2); + LocationHelper.LockLoc(task.S_END_LOC, 1); } } - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏈煡璇㈠埌瀹瑰櫒涓�{cntrCode}鐨勫鍣�); - throw new BusinessException($"鏈煡璇㈠埌瀹瑰櫒涓�{cntrCode}鐨勫鍣�); + + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); + + // 5.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�+ if (mesTask != null) + { + WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID); + } + else + { + ContainerHelper.UpdateCntrState(cntrNo, 1); + WMSHelper.addRfidAnomalyRecord(cntrNo, 3, offLineLoc, null); + } } } catch (BusinessException be) @@ -1137,6 +1117,7 @@ /// <summary> /// AGV鐢宠缁堢偣 + /// 鍦烘櫙锛�.浣欐枡/绌哄伐瑁呭叆搴撲换鍔★紙鎴愬瀷鏈猴級 2.婊℃枡/绌哄伐瑁呭叆搴擄紙鏈哄彴锛�3.婊℃枡/绌哄伐瑁呭嚭搴撳紓甯�4.婊℃枡/绌哄伐瑁呭叆搴撳紓甯� /// </summary> /// <param name="applyType">1.姝e父 2.RFID涓庝换鍔FID涓嶅尮閰�3.鐗╂枡鐘舵�涓嶅悎鏍�/param> /// <param name="loc"></param> @@ -1283,6 +1264,7 @@ S_SCHEDULE_TYPE = "WCS", N_PRIORITY = 10, N_B_STATE = -1, + S_B_STATE = "棰勫垱寤�, T_START_TIME = DateTime.Now, }; if (WCSHelper.CreateTask(wcsTask)) @@ -1313,36 +1295,6 @@ } } - // 閲嶆柊鍙戣捣鏂颁换鍔�- if (applyType != "1") - { - var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE); - if (mesTask != null) - { - if (mst.S_TYPE.Contains("鍙枡鍑哄簱浠诲姟")) - { - LogHelper.Info($"鍙枡鍑哄簱浠诲姟寮傚父锛屽啀娆″彂璧峰彨鏂欏嚭搴撲换鍔�, "AGV"); - callMaterial(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID); - /*againCallMaterial(mst, mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);*/ - } - - // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�- if (mst.S_TYPE.Contains("婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟") && cst.S_TYPE.Contains("绌哄伐瑁呭嚭搴撲换鍔�)) - { - LogHelper.Info($"婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟寮傚父锛屽啀娆″彂璧锋弧鏂�寮傚父宸ヨ鍏ュ簱浠诲姟", "AGV"); - var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP); - if (logicConfig != null) - { - triggerItemOffLineFlow4(mesTask.POSITION_ID, logicConfig, mesTask); - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"MES浠诲姟{mesTask.ID},鏈哄彴鍙凤細{mesTask.EQP},鏈煡璇㈠埌閫昏緫绾胯矾", "AGV"); - } - } - } - } - if (agvEndLoc != null && wmsEndLoc != null) { destLoc = agvEndLoc.S_CODE; @@ -1354,6 +1306,35 @@ mst.S_END_AREA = wmsEndLoc.S_AREA_CODE; WMSHelper.UpdateTaskEnd(mst); } + + // 閲嶆柊鍙戣捣鏂颁换鍔�+ if (applyType != "1") + { + var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE); + if (mesTask != null) + { + if (mst.S_TYPE.Contains("鍙枡鍑哄簱浠诲姟")) + { + LogHelper.Info($"鍙枡鍑哄簱浠诲姟寮傚父锛屽啀娆″彂璧峰彨鏂欏嚭搴撲换鍔�, "AGV"); + callMaterial(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID); + } + + // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�+ if (mst.S_TYPE.Contains("婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟") && cst.S_TYPE.Contains("绌哄伐瑁呭嚭搴撲换鍔�)) + { + LogHelper.Info($"婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟寮傚父锛屽啀娆″彂璧锋弧鏂�寮傚父宸ヨ鍏ュ簱浠诲姟", "AGV"); + var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP); + if (logicConfig != null) + { + triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig ,mesTask); + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"MES浠诲姟{mesTask.ID},鏈哄彴鍙凤細{mesTask.EQP},鏈煡璇㈠埌閫昏緫绾胯矾", "AGV"); + } + } + } + } return destLoc; } -- Gitblit v1.9.1