From c8f338feee0b6003d8f069b1d37fd9b90dd1b7f4 Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期一, 07 七月 2025 17:31:38 +0800 Subject: [PATCH] 印尼佳通优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs | 1134 +++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 637 insertions(+), 497 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 3ec4343..9e1a722 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs @@ -43,46 +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 + else if (endLoc.N_LOCK_STATE != 0) { - if (endLoc.C_ENABLE == "Y") - { - if (endLoc.N_LOCK_STATE != 0) - { - var existTask = WCSHelper.GetTaskByStartOrEnd(model.endLocCode); - if (existTask != null) - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode} 宸叉湁浠诲姟"); - throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode} 宸叉湁浠诲姟"); - } - else - { - LocationHelper.UnLockLoc(model.endLocCode); // 娌℃湁浠诲姟灏憋紝鑷姩瑙i攣缁堢偣璐т綅 - } - } - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode} 宸茬鐢紝璇疯仈绯荤鐞嗕汉鍛樿В闄ょ鐢�); - throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode} 宸茬鐢紝璇疯仈绯荤鐞嗕汉鍛樿В闄ょ鐢�); - } + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�"); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�"); } - var transfeRelevance = WMSHelper.GetTransfeRelevance(model.endLocCode); // 鎺ラ┏璐т綅鍏宠仈灞炴� - if (transfeRelevance == null) + var areaCodes = Settings.getRelAreaCodes(endLoc.S_AREA_CODE); + if (areaCodes.Count == 0) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode},缂哄皯閰嶇疆灞炴�锛岃鑱旂郴绠$悊浜哄憳杩涜閰嶇疆灞炴�"); - throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode},缂哄皯閰嶇疆灞炴�锛岃鑱旂郴绠$悊浜哄憳杩涜閰嶇疆灞炴�"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�); } - Location startLoc = WMSHelper.getOutStockStartLoc(transfeRelevance.S_RELE_AREA, null); + Location startLoc = WMSHelper.getOutStockStartLoc(areaCodes[0], null); if (startLoc == null) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�); - throw new BusinessException($"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�); + throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�); } var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); @@ -98,7 +79,7 @@ S_END_LOC = endLoc.S_CODE, S_END_AREA = endLoc.S_AREA_CODE, S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�, - S_OP_DEF_NAME = "绌哄伐瑁呭嚭搴撶紦瀛樹綅", + S_OP_DEF_NAME = "绌哄伐瑁呭嚭搴�, N_PRIORITY = 10, T_START_TIME = DateTime.Now, }; @@ -144,10 +125,10 @@ /// <summary> /// WCS璇荤爜璇锋眰娴佺▼ - /// 1.鍒ゆ柇RFID 鏄惁璇诲彇鎴愬姛锛堟墭鐩樺彿鏄惁涓虹┖锛�- /// 2.鏌ヨ鍏充簬RFID鐨勯鍒涘缓浠诲姟 - /// 3.濡傛灉璇诲彇鎴愬姛锛屽垯婵�椿棰勫垱寤轰换鍔�- /// 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣嶏紝鏈夊垯鍒涘缓鎼繍寮傚父鍖轰换鍔★紝鏃犲垯锛岃褰曞紓甯告縺娲婚鍒涘缓浠诲姟 + /// 涓氬姟鍦烘櫙锛氳鐮佸叆搴撱�璇荤爜鍑哄簱 + /// 1.鍒ゆ柇RFID鏄惁瀛樺湪WMS绯荤粺涓紝鍚︼紝鍒欓粯璁や负RFID鏃犳硶璇嗗埆 + /// 2.鍒ゆ柇RFID鏄惁涓庝换鍔FID鏄惁涓�嚧 + /// 3.璁板綍RFID寮傚父淇℃伅 /// </summary> /// <param name="request"></param> /// <returns></returns> @@ -155,48 +136,27 @@ ResponseResult responseResult = new ResponseResult(); Location loc = LocationHelper.GetLoc(request.loc); - if (loc == null) + if (loc != null) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�); - throw new BusinessException($"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�); - } - - var locCntrRels = LocationHelper.GetLocCntr(request.loc); - if (locCntrRels.Count > 0) - { - string taskCntrCode = locCntrRels[0].S_CNTR_CODE; - // 2.鏌ヨ鍏充簬RFID鐨勯鍒涘缓浠诲姟 - var cst = WCSHelper.GetPreCreatedTaskByCntr(taskCntrCode); + var cst = WCSHelper.GetTask(request.taskNo); if (cst != null) { - bool errFlag = true; - // 1.鍒ゆ柇RFID 鏄惁璇诲彇鎴愬姛锛堟墭鐩樺彿鏄惁涓虹┖锛�- if (request.cntrNo != null) + var container = ContainerHelper.GetCntr(request.cntrNo); + if (container != null) { - if (request.cntrNo == taskCntrCode) + if (cst.S_CNTR_CODE != request.cntrNo) { - Container container = ContainerHelper.GetCntr(request.cntrNo); - if (container.N_E_STATE == 0) - { - errFlag = false; - WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE); - } - } - else - { - ContainerHelper.UpdateCntrState(taskCntrCode, 1,"WCS鍙嶉RFID涓庝换鍔FID涓嶄竴鑷�); + ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1); + WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, request.loc, cst.S_CODE); } } - else + else { - ContainerHelper.UpdateCntrState(taskCntrCode, 1,"WCS鍙嶉RFID涓簄ull"); + ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1); + WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 1, request.loc, cst.S_CODE); } - // 鏂规1 4.婵�椿棰勫垱寤轰换鍔�- if (errFlag) - { - WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE,1); - } + /*WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE);*/ // 鏂规2 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣� /* var agvEndLoc = WMSHelper.GetTransfeRelevanceLoc(loc.S_AREA_CODE, "4"); @@ -233,15 +193,15 @@ WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE); }*/ } - else + else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"璇荤爜浣�{request.loc}瑙﹀彂璇荤爜璇锋眰锛岃鐮佷綅涓婂鍣�{taskCntrCode}娌℃湁棰勫垱寤轰换鍔�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"娌℃湁鏌ヨ鍒拌鐮佺殑浠诲姟锛屼换鍔″彿:{request.taskNo}"); } } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"璇荤爜浣�{request.loc},娌℃湁鏌ヨ鍒板鍣�); - throw new BusinessException($"璇荤爜浣�{request.loc},娌℃湁鏌ヨ鍒板鍣�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�); + throw new BusinessException($"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�); } return responseResult; } @@ -267,66 +227,58 @@ /// <returns></returns> public static ResponseResult offLineProcess(OffLineRequest model) { ResponseResult responseResult = new ResponseResult(); - var existWmsTask = WMSHelper.GetWmsTaskByStart(model.loc); - if (existWmsTask == null) + + var areaCodes = Settings.areaPropertyList.Select(a => a.areaCode).ToList(); + var isExistCntr = LocationHelper.checkAreaExistCntr(areaCodes,model.cntrNo); + if (!isExistCntr) { - // 鍒ゆ柇婊℃枡鎺ラ┏浣嶅搴旂殑绌哄伐瑁呯紦瀛樹綅鐘舵�锛堟煡璇㈢嚎浣撳厜鐢碉級 - var logicConfig = WMSHelper.getLogicConfigByJtCode(model.jtNo); - if (logicConfig != null) + // 鏌ヨ璧风偣璐т綅鏄惁瀛樺湪宸插瓨鍦ㄤ换鍔★紝闃叉浠诲姟閲嶅鍙戣捣 + var existWmsTask = WMSHelper.GetWmsTaskByStart(model.loc); + if (existWmsTask == null) { - if (logicConfig.S_TASK_TYPE == "1" || logicConfig.S_TASK_TYPE == "2") + // 鏌ヨ瀵瑰簲鏈哄彴鐨勭墿鏂欎笅绾块厤缃俊鎭�+ var logicConfig = WMSHelper.getLogicConfigByJtCode(model.jtNo); + if (logicConfig != null) { - // 婊℃枡涓嬬嚎锛堢洿杩烇級 - LjMesTask mesTask = null; - if (model.cntrNo != null && model.cntrNo != "") + Container container = ContainerHelper.GetCntr(model.cntrNo); + if (container == null || !model.isNormal) { - var container = ContainerHelper.GetCntr(model.cntrNo); - if (container == null) - { - ContainerHelper.AddCntr(model.cntrNo); - ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"婊℃枡涓嬬嚎锛堢洿杩烇級,WCS鍙嶉鐨凴FID:{model.cntrNo}鍦╓MS绯荤粺涓笉瀛樺湪"); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"婊℃枡涓嬬嚎锛堢洿杩烇級,WCS鍙嶉鐨凴FID:{model.cntrNo}鍦╓MS绯荤粺涓笉瀛樺湪"); - } - else - { - ContainerHelper.UpdateCntrState(model.cntrNo, 0, ""); - mesTask = WMSHelper.getLjMesTaskByCntr(model.cntrNo); - if (mesTask == null) - { - ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"鏈煡璇㈠埌MES浠诲姟"); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"婊℃枡涓嬬嚎锛堢洿杩烇級,瀹瑰櫒:{model.cntrNo}鏈煡璇㈠埌MES浠诲姟"); - } - } - } - else - { - model.cntrNo = ContainerHelper.GenerateCntrNo(); ContainerHelper.AddCntr(model.cntrNo); - ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"WCS鍙嶉鐨凴FID:{model.cntrNo} 涓虹┖"); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"WCS鍙嶉鐨凴FID:{model.cntrNo} 涓虹┖"); + ContainerHelper.UpdateCntrState(model.cntrNo, 1); + WMSHelper.addRfidAnomalyRecord(model.cntrNo, 1, model.loc, null); } - triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig, mesTask); + + // 鏍规嵁鐗╂枡涓嬬嚎閰嶇疆淇℃伅锛屽垽鏂换鍔$被鍨嬫槸鐩磋繛涓嬬嚎杩樻槸闈炵洿杩炰笅绾�+ if (logicConfig.S_TASK_TYPE == "1" || logicConfig.S_TASK_TYPE == "2") + { + triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig); + } + else + { + // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�+ triggerItemOffLineFlow4(model.loc, model.cntrNo, logicConfig); + } } else { - // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�- var mesTask = WMSHelper.getLjMesTaskByLoc(model.loc); - triggerItemOffLineFlow4(model.loc, logicConfig,mesTask); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏈哄彴鍙穥model.jtNo},娌℃湁鍙敤鐨勯�杈戠嚎璺�璇疯仈绯荤鐞嗕汉鍛�); + throw new BusinessException($"鏈哄彴鍙穥model.jtNo},娌℃湁鍙敤鐨勯�杈戠嚎璺紝璇疯仈绯荤鐞嗕汉鍛�); } } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏈哄彴鍙穥model.jtNo},娌℃湁鍙敤鐨勯�杈戠嚎璺�璇疯仈绯荤鐞嗕汉鍛�); - throw new BusinessException($"鏈哄彴鍙穥model.jtNo},娌℃湁鍙敤鐨勯�杈戠嚎璺紝璇疯仈绯荤鐞嗕汉鍛�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"涓嬬嚎璐т綅锛歿model.loc}宸叉湁浠诲姟锛岃鍕块噸澶嶄笅鍙戜换鍔�); + throw new BusinessException($"涓嬬嚎璐т綅锛歿model.loc}宸叉湁浠诲姟锛岃鍕块噸澶嶄笅鍙戜换鍔�); } } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"涓嬬嚎璐т綅锛歿model.loc}宸叉湁浠诲姟锛岃鍕块噸澶嶄笅鍙戜换鍔�); - throw new BusinessException($"涓嬬嚎璐т綅锛歿model.loc}宸叉湁浠诲姟锛岃鍕块噸澶嶄笅鍙戜换鍔�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"宸ヨ锛歿model.cntrNo}宸插叆搴擄紝璇峰嬁閲嶅鍏ュ簱"); + throw new BusinessException($"宸ヨ锛歿model.cntrNo}宸插叆搴擄紝璇峰嬁閲嶅鍏ュ簱"); } return responseResult; } + /// <summary> /// 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�@@ -337,52 +289,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 @@ -401,13 +363,13 @@ kgzEndLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC); if (kgzStartLoc == null) { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); - throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"绌哄伐瑁呭嚭搴撶珯鍙�{logicConfig.S_LKKTJBLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�); + 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); @@ -417,8 +379,8 @@ } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�); - throw new BusinessException($"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�); + kgzCntrCode = "铏氭嫙瀹瑰櫒"; + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴撶珯鍙�{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�); } } @@ -440,7 +402,6 @@ S_OP_DEF_CODE = mesTask.ID.ToString(), T_START_TIME = DateTime.Now, }; - if (WMSHelper.CreateWmsTask(wmsTask)) { int priority = 10; @@ -471,12 +432,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, @@ -487,25 +448,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; @@ -517,14 +460,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 @@ -561,10 +504,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 { @@ -573,14 +516,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]; @@ -588,17 +531,17 @@ { 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 { @@ -626,133 +569,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) @@ -813,7 +753,7 @@ return responseResult; } - middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, "1", "2"); + middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2 ); if (middleLoc == null) { WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"MES鍙枡浠诲姟{mesTask.ID},绔嬪簱鎺ラ┏浣嶅彲鑳藉浜庨攣瀹氭垨绂佺敤鐘舵�锛岃鏌ョ湅"); responseResult.code = 1; @@ -987,7 +927,6 @@ // 鏇存柊鍑哄簱浠诲姟涓棿琛ㄧ姸鎬� WMSHelper.updateLotOutTask(cst.S_CNTR_CODE, "2"); } - } } } @@ -1011,45 +950,27 @@ if (mst != null && mst.N_B_STATE < 2) { int emptyFlag = 0; // 瀹瑰櫒绌烘弧鏍囪瘑 - Container cntr = ContainerHelper.GetCntr(cst.S_CNTR_CODE); - if (cntr != null && cntr.N_DETAIL_COUNT > 0) { + var cntrItemRels = ContainerHelper.GetCntrItemRel(cst.S_CNTR_CODE); + if (cntrItemRels.Count > 0) { emptyFlag = 1; } // 1锛氬爢鍨涙満鏀捐揣寮傚父鐢宠鏂扮粓鐐� if (model.applyType == 1) { // 鎶ヨ锛氭祦绋嬪紓甯�- WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"鍫嗗灈鏈烘斁璐у紓甯革紝寮傚父璐т綅锛歿cst.S_END_LOC}"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"鍫嗗灈鏈烘斁璐у紓甯革紝浠诲姟鍙凤細{cst.S_CODE}锛屽紓甯歌揣浣嶏細{cst.S_END_LOC}"); // 1.灏嗗紓甯歌揣浣嶄笂閿侊紝骞舵姤璀� LocationHelper.LockLoc(cst.S_END_LOC, 3); // 2.鏌ヨ鏂扮殑鍏ュ簱缁堢偣 - Location endLoc = WMSHelper.getInStockEndLoc(cst.S_END_AREA, emptyFlag); + Location endLoc = WMSHelper.getInStockEndLoc(cst.S_END_AREA, emptyFlag ); cst.S_END_LOC = endLoc.S_CODE; WCSHelper.UpdateEndLoc(cst); LocationHelper.LockLoc(endLoc.S_CODE, 1); applyDest.destLoc = endLoc.S_CODE; } - else if (model.applyType == 2) - { - if (cst.S_END_LOC == "铏氭嫙搴撲綅") - { - var transfeRelevance = WMSHelper.GetTransfeRelevance(model.loc); // 鎺ラ┏浣嶅叧鑱斿睘鎬�- if (transfeRelevance != null) - { - // 1.鏌ヨ鏂扮殑鍏ュ簱缁堢偣 - Location endLoc = WMSHelper.getInStockEndLoc(transfeRelevance.S_RELE_AREA, emptyFlag); - cst.S_END_LOC = endLoc.S_CODE; - WCSHelper.UpdateEndLoc(cst); - - LocationHelper.LockLoc(endLoc.S_CODE, 1); - applyDest.destLoc = endLoc.S_CODE; - } - } - } - } } result.data = applyDest; @@ -1059,7 +980,7 @@ /// <summary> /// AGV鐢宠缁堢偣 /// 椤哄簭 RFID楠岃瘉 -> RFID涓庝换鍔″彿楠岃瘉 -> 鐗╂枡鍚堟牸鐘舵�楠岃瘉 -> 铏氭嫙缁堢偣 - /// 鐢宠绫诲瀷锛�1.铏氭嫙缁堢偣 2.RFID涓庝换鍔′笉鍖归厤 3.鐗╂枡鐘舵�涓嶅悎鏍�+ /// 鐢宠绫诲瀷锛�1.姝e父 2.寮傚父 /// 鍏ュ簱绛栫暐锛氬厛璁$畻搴撳尯鐨勫绉巼锛屽啀璁$畻搴撳尯瀵瑰簲鐨勫叆搴撶珯鍙扮殑浠诲姟鏁帮紝閮藉彇鏈�皬鐨� /// /// 1.纭畾浠诲姟鏄惁鍦ㄦ墽琛屼腑 @@ -1115,7 +1036,8 @@ { WMSHelper.addAlarmRecord("绯荤粺閿欒","楂�, $"AGV鐢宠缁堢偣锛學MS鍐呴儴閿欒锛岄敊璇師鍥狅細{ex.Message}", "AGV"); } - return null; + LogHelper.Info($"鍙樻洿AGV缁堢偣锛歿applyDest}", "AGV"); + return applyDest; } /// <summary> @@ -1129,64 +1051,63 @@ /// <returns></returns> public static string applyAgvDestXC(string applyType, WMSTask mst, WCSTask cst) { - string destLoc = null; - Location agvEndLoc = null; - Location wmsEndLoc = null; + Location endLoc = null; if (applyType == "1") { if (mst.S_TYPE == "浣欐枡/绌哄伐瑁呭叆搴�) { - var mesTask = WMSHelper.GetLjMesTaskById(int.Parse(mst.S_OP_DEF_CODE)); - if (mesTask.QTY != 0) + var bo = int.TryParse(mst.S_OP_DEF_CODE, out int mesId); + if (bo) { - var awaitTask = WMSHelper.GetAwaitWmsTaskByMaterialCode(mesTask.MATERIAL_CODE); - if (awaitTask != null) + var mesTask = WMSHelper.GetLjMesTaskById(mesId); + if (mesTask.QTY != 0) { - // 鍙栨秷浠诲姟 - ApiHelper.cancelTask(awaitTask.S_CODE); - // 淇敼缁堢偣 - agvEndLoc = LocationHelper.GetLoc(awaitTask.S_END_LOC); - wmsEndLoc = agvEndLoc; - mst.S_TYPE = "鍙枡鍑哄簱浠诲姟"; + var awaitTask = WMSHelper.GetAwaitWmsTaskByMaterialCode(mesTask.MATERIAL_CODE); + if (awaitTask != null) + { + // 鍙栨秷浠诲姟 + ApiHelper.cancelTask(awaitTask.S_CODE); + // 淇敼缁堢偣 + endLoc = LocationHelper.GetLoc(awaitTask.S_END_LOC); + mst.S_TYPE = "鍙枡鍑哄簱浠诲姟"; + } } } } } - if (agvEndLoc == null) + if (endLoc == null) { string msg = ""; - if (applyType == "2" || applyType == "3" || applyType == "4") + if (applyType == "2") { cst.S_TYPE = cst.S_TYPE + "銆愬紓甯搞�"; msg = "宸ヨ寮傚父"; } // TODO 鍙嶉鏂滆绔嬪簱寮傚父锛岃姹傛枩瑁佸叆搴撶粓鐐�- agvEndLoc = null; - + string locCode = "XCCRKZTKQ-1-1"; + endLoc = LocationHelper.GetLoc(locCode); } - if (agvEndLoc != null) + if (endLoc != null) { - destLoc = agvEndLoc.S_CODE; - - cst.S_END_LOC = agvEndLoc.S_CODE; - cst.S_END_AREA = agvEndLoc.S_AREA_CODE; + cst.S_END_LOC = endLoc.S_CODE; + cst.S_END_AREA = endLoc.S_AREA_CODE; WCSHelper.UpdateEndLoc(cst); - } - if (wmsEndLoc != null) - { - mst.S_END_LOC = wmsEndLoc.S_CODE; - mst.S_END_AREA = wmsEndLoc.S_AREA_CODE; + mst.S_END_LOC = endLoc.S_CODE; + mst.S_END_AREA = endLoc.S_AREA_CODE; WMSHelper.UpdateTaskEnd(mst); + + return endLoc.S_CODE; } - return destLoc; + return null; } /// <summary> /// AGV鐢宠缁堢偣 + /// 鍦烘櫙锛�.浣欐枡/绌哄伐瑁呭叆搴撲换鍔★紙鎴愬瀷鏈猴級 2.婊℃枡/绌哄伐瑁呭叆搴擄紙鏈哄彴锛�3.婊℃枡/绌哄伐瑁呭嚭搴撳紓甯�4.婊℃枡/绌哄伐瑁呭叆搴撳紓甯� /// </summary> /// <param name="applyType">1.姝e父 2.RFID涓庝换鍔FID涓嶅尮閰�3.鐗╂枡鐘舵�涓嶅悎鏍�/param> /// <param name="loc"></param> @@ -1238,7 +1159,7 @@ wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE); if (wmsEndLoc != null) { - agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, "1", "1", "2"); // 1.绔嬪簱鎺ラ┏浣�1.鍏ュ簱 2.闈炵洿杩�+ agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1); if (agvEndLoc != null) { LogHelper.Info($"鍒涘缓绔嬪簱绔欏彴鍒扮珛搴撶殑棰勫垱寤轰换鍔★紝agv缁堢偣璐т綅:{agvEndLoc.S_CODE},绔嬪簱缁堢偣璐т綅:{wmsEndLoc.S_CODE}", "AGV"); @@ -1268,7 +1189,7 @@ } else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"AGV鐢宠缁堢偣澶辫触锛屾湭鏌ヨ鍒扮珛搴撴帴椹充綅"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"AGV鐢宠缁堢偣澶辫触锛岀珛搴�{wmsEndLoc.S_AREA_CODE}鏈厤缃珛搴撴帴椹充綅"); return null; } } @@ -1314,7 +1235,7 @@ wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE); if (wmsEndLoc != null) { - agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, "1", "1", "2"); // 1.绔嬪簱鎺ラ┏浣�1.鍏ュ簱 2.闈炵洿杩�+ agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1); if (agvEndLoc != null) { LogHelper.Info($"鍒涘缓绔嬪簱绔欏彴鍒扮珛搴撶殑棰勫垱寤轰换鍔★紝agv缁堢偣璐т綅:{agvEndLoc.S_CODE},绔嬪簱缁堢偣璐т綅:{wmsEndLoc.S_CODE}", "AGV"); @@ -1325,7 +1246,7 @@ S_OP_CODE = mst.S_CODE, S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = cst.S_CNTR_CODE, - S_TYPE = cst.S_TYPE + "銆愬紓甯搞�", + S_TYPE = "寮傚父宸ヨ鍏ュ簱", S_START_LOC = agvEndLoc.S_CODE, S_START_AREA = agvEndLoc.S_AREA_CODE, S_END_LOC = wmsEndLoc.S_CODE, @@ -1333,6 +1254,7 @@ S_SCHEDULE_TYPE = "WCS", N_PRIORITY = 10, N_B_STATE = -1, + S_B_STATE = "棰勫垱寤�, T_START_TIME = DateTime.Now, }; if (WCSHelper.CreateTask(wcsTask)) @@ -1361,19 +1283,14 @@ return null; } } - } - // 閲嶆柊鍙戣捣鏂颁换鍔�- if (applyType != "1") - { var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE); - if (mesTask != null) + 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);*/ } // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�@@ -1383,7 +1300,7 @@ var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP); if (logicConfig != null) { - triggerItemOffLineFlow4(mesTask.POSITION_ID, logicConfig, mesTask); + triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig, mesTask); } else { @@ -1411,118 +1328,112 @@ /// 鎴愭柊鏈哄彨鏂� /// </summary> /// <param name="materialCode"></param> - /// <param name="endLocCode"></param> + /// <param name="jtNo"></param> /// <param name="mesTaskId"></param> - public static void callMaterial(string materialCode, string endLocCode, int mesTaskId) + public static void callMaterial(string materialCode, string jtNo, int mesTaskId) { - var oldWmsTask = WMSHelper.GetWmsTaskByEnd(endLocCode); - if (oldWmsTask == null) { - string cntrCode = ""; - Location endLoc = LocationHelper.GetLoc(endLocCode); + string cntrCode = ""; + var mesTask = WMSHelper.GetLjMesTaskById(mesTaskId); + + if (mesTask != null) + { + Location endLoc = WMSHelper.getCallMaterialLocCode(jtNo); if (endLoc != null) { Location middleLoc = null; Location startLoc = WMSHelper.getOutStockStartLoc(null, materialCode); - if (startLoc == null) - { - var mesTask = WMSHelper.GetLjMesTaskById(mesTaskId); - if (mesTask != null) - { - mesTask.RECEIVE_MSG = "娌℃湁搴撳瓨"; - WMSHelper.updateLjMesTask(mesTask); - } - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鍙枡澶辫触锛岀墿鏂�{materialCode}娌℃湁搴撳瓨"); - return; - } - else + if (startLoc != null) { var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); if (locCntrRels.Count > 0) { cntrCode = locCntrRels[0].S_CNTR_CODE; - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏌ヨ鐗╂枡寮傚父锛岃揣浣�{startLoc.S_CODE}缂哄皯瀹瑰櫒淇℃伅"); - return; - } - } - - middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, "1" , "2"); - - if (middleLoc != null) - { - // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�- var wmsTask = new WMSTask() - { - S_CNTR_CODE = cntrCode, - 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_CODE = mesTaskId.ToString(), - S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, - T_START_TIME = DateTime.Now, - }; - if (WMSHelper.CreateWmsTask(wmsTask)) - { - WCSTask wcsTask = new WCSTask() + middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2); + if (middleLoc != null) { - 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 + "-WCS", - S_START_LOC = startLoc.S_CODE, - S_START_AREA = startLoc.S_AREA_CODE, - S_END_LOC = middleLoc.S_CODE, - S_END_AREA = middleLoc.S_AREA_CODE, - S_SCHEDULE_TYPE = "WCS", - N_PRIORITY = 10, - T_START_TIME = DateTime.Now, - }; + // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�+ var wmsTask = new WMSTask() + { + S_CNTR_CODE = cntrCode, + 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_CODE = mesTaskId.ToString(), + S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, + T_START_TIME = DateTime.Now, + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + 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 = middleLoc.S_CODE, + S_END_AREA = middleLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "WCS", + N_PRIORITY = 10, + T_START_TIME = DateTime.Now, + }; - if (WCSHelper.CreateTask(wcsTask)) - { - // 璧风偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + if (WCSHelper.CreateTask(wcsTask)) + { + // 璧风偣銆佺粓鐐瑰姞閿�+ LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); + LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); - // 鏇存柊浣滀笟浠诲姟鐘舵� - wmsTask.N_B_STATE = 1; - WMSHelper.UpdateTaskState(wmsTask); + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); + } + + // 棰勫垱寤轰簩娈典换鍔�+ WCSTask twoWcsTask = 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 = middleLoc.S_CODE, + S_START_AREA = middleLoc.S_AREA_CODE, + S_END_LOC = endLoc.S_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "AGV", + N_PRIORITY = 10, + T_START_TIME = DateTime.Now, + N_B_STATE = -1 + }; + WCSHelper.CreateTask(twoWcsTask); + WMSHelper.readLjMesCallItemTask(wmsTask.S_CODE, mesTaskId); + } } - - // 棰勫垱寤轰簩娈典换鍔�- WCSTask twoWcsTask = new WCSTask() + else { - 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 = middleLoc.S_CODE, - S_START_AREA = middleLoc.S_AREA_CODE, - S_END_LOC = endLoc.S_CODE, - S_END_AREA = endLoc.S_AREA_CODE, - S_SCHEDULE_TYPE = "AGV", - N_PRIORITY = 10, - T_START_TIME = DateTime.Now, - N_B_STATE = -1 - }; - WCSHelper.CreateTask(twoWcsTask); - - WMSHelper.readLjMesCallItemTask(wmsTask.S_CODE, mesTaskId); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝搴撳尯{startLoc.S_AREA_CODE}鏈煡璇㈠埌鍙敤鐨勬帴椹充綅"); + } + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝寮�璐т綅:{startLoc.S_CODE}寮傚父锛岀己灏戝鍣ㄤ俊鎭�); } } - else + else { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯{startLoc.S_AREA_CODE}鏈煡璇㈠埌鍙敤鐨勬帴椹充綅"); - } + mesTask.AWAIT_MSG = "搴撳瓨涓嶈冻"; + WMSHelper.updateLjMesTask(mesTask); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝鐗╂枡:{materialCode}搴撳瓨涓嶈冻"); + } } } + } /// <summary> @@ -1534,14 +1445,170 @@ /// <param name="materialCode"></param> /// <param name="endLocCode"></param> /// <param name="mesTaskId"></param> - public static void callMaterialHDK(string materialCode, string endLocCode, int mesTaskId) + public static void callMaterialXC(string materialCode, string endLocCode, int mesTaskId) { - // 1.鏌ヨ鐜甫搴撶墿鏂欏簱瀛�+ var mesTask = WMSHelper.GetLjMesTaskById(mesTaskId); + if (mesTask != null) + { + // 1.鏌ヨ鐜甫搴撶墿鏂欏簱瀛樻渶鏃╁叆搴撴椂闂�+ DateTime inStockTimeXc = DateTime.MinValue; - // 2.鏌ヨ涓浆搴撳簱瀛橈紝鏍规嵁鍏ュ簱鏃堕棿 杩涜鍏堝叆鍏堝嚭 + // 2.鏌ヨ涓浆搴撳簱瀛�+ DateTime inStockTime = WMSHelper.getZZKInventoryInfo(materialCode); - // 3.灏哅ES浠诲姟鍐欏叆鐜甫搴撲换鍔′腑闂磋〃 - WMSHelper.addLjXcTask(mesTaskId); + // 3.鏍规嵁鍏堣繘鍏堝嚭璁$畻鍑哄簱鐨勭墿鏂欐槸鐜甫搴�杩樻槸涓浆搴�+ if (inStockTime >= inStockTimeXc) + { + Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); + if (endLoc != null) + { + // 4.鍒涘缓鏂滆-鎴愭柊鏈哄彨鏂欎綔涓�+ var wmsTask = new WMSTask() + { + S_CODE = WMSHelper.GenerateTaskNo(), + S_CNTR_CODE = "", + S_START_LOC = "铏氭嫙璧风偣", + S_START_AREA = "铏氭嫙搴撳尯", + S_END_LOC = endLoc.S_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_TYPE = "鍙枡鍑哄簱浠诲姟", + S_OP_DEF_CODE = mesTask.ID.ToString(), + S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�鏂滆)", + T_START_TIME = DateTime.Now, + N_B_STATE = 0 + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + 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 = wmsTask.S_START_LOC, + S_START_AREA = wmsTask.S_START_AREA, + S_END_LOC = endLoc.S_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "AGV", + N_PRIORITY = 10, + T_START_TIME = DateTime.Now, + N_B_STATE = -1, + S_B_STATE = "棰勫垱寤�, + }; + + if (WCSHelper.CreateTask(wcsTask)) + { + // 璧风偣銆佺粓鐐瑰姞閿�+ LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); + LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + + // 5.灏哅ES浠诲姟鍐欏叆鏂滆浠诲姟涓棿琛�+ mesTask.AGVORDER_ID = wcsTask.S_CODE; + WMSHelper.addLjXcTask(mesTask); + } + } + } + } + else + { + //涓浆搴撶墿鏂欏嚭搴�+ Location startLoc = WMSHelper.getOutStockStartLoc(null, materialCode); + if (startLoc != null) + { + var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); + if (locCntrRels != null && locCntrRels.Count > 0) + { + Location middleLoc = null; + Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); + if (endLoc != null) + { + middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2); + if (middleLoc != null) + { + // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�+ var wmsTask = new WMSTask() + { + S_CNTR_CODE = locCntrRels[0].S_CNTR_CODE, + 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_CODE = mesTaskId.ToString(), + S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, + T_START_TIME = DateTime.Now, + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + 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 = middleLoc.S_CODE, + S_END_AREA = middleLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "WCS", + N_PRIORITY = 10, + T_START_TIME = DateTime.Now, + }; + + if (WCSHelper.CreateTask(wcsTask)) + { + // 璧风偣銆佺粓鐐瑰姞閿�+ LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); + LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); + } + + // 棰勫垱寤轰簩娈典换鍔�+ WCSTask twoWcsTask = 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 = middleLoc.S_CODE, + S_START_AREA = middleLoc.S_AREA_CODE, + S_END_LOC = endLoc.S_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "AGV", + N_PRIORITY = 10, + T_START_TIME = DateTime.Now, + N_B_STATE = -1 + }; + WCSHelper.CreateTask(twoWcsTask); + WMSHelper.readLjMesCallItemTask(wmsTask.S_CODE, mesTaskId); + } + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝搴撳尯{startLoc.S_AREA_CODE}鏈煡璇㈠埌鍙敤鐨勬帴椹充綅"); + } + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝寮�璐т綅:{startLoc.S_CODE}寮傚父锛岀己灏戝鍣ㄤ俊鎭�); + } + } + else + { + mesTask.AWAIT_MSG = "搴撳瓨涓嶈冻"; + WMSHelper.updateLjMesTask(mesTask); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝鐗╂枡:{materialCode}搴撳瓨涓嶈冻"); + } + } + } + } } /// <summary> @@ -1552,12 +1619,12 @@ /// 3.鍒涘缓浣欐枡鍥炲簱浣滀笟锛屽垱寤篴gv鎼繍浠诲姟锛岃櫄鎷熺粓鐐� /// </summary> /// <param name="locCode">鎴愬瀷鏈哄彨鏂欑粓鐐�/param> - public static void returnMaterialOrEmptyTray(string locCode) + /// <param name="jtNo">鎴愬瀷鏈哄彨鏂欑粓鐐�/param> + public static void returnMaterialOrEmptyTray(string locCode ,string jtNo) { if (locCode != null) { - // 2.鏌ヨmes浠诲姟涓棿琛�- var mesTask = WMSHelper.getLjMesTaskByLoc(locCode); + var mesTask = WMSHelper.getLjMesTaskByJtNo(jtNo); if (mesTask != null) { createReturnTask(locCode, mesTask); @@ -1587,7 +1654,7 @@ S_START_AREA = startLoc.S_AREA_CODE, S_END_LOC = endLoc.S_CODE, S_END_AREA = endLoc.S_AREA_CODE, - S_TYPE = "浣欐枡/绌哄伐瑁呭叆搴撲换鍔� + suffix, + S_TYPE = "浣欐枡/绌哄伐瑁呭叆搴撲换鍔�, S_OP_DEF_CODE = mesTask.ID.ToString(), S_OP_DEF_NAME = "浣欐枡/绌哄伐瑁呭叆搴� + suffix, T_START_TIME = DateTime.Now @@ -1656,7 +1723,7 @@ S_OP_CODE = mst.S_CODE, S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = cst.S_CNTR_CODE, - S_TYPE = "涓嶅悎鏍煎搧鍥炲簱", + S_TYPE = "涓嶅悎鏍煎搧鍏ュ簱浠诲姟", S_START_LOC = startLoc.S_CODE, S_START_AREA = startLoc.S_AREA_CODE, S_END_LOC = agvEndLoc.S_CODE, @@ -1680,7 +1747,7 @@ wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE); if (wmsEndLoc != null) { - agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, "1", "1", "2"); // 1.绔嬪簱鎺ラ┏浣�1.鍏ュ簱 2.闈炵洿杩�+ agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1); if (agvEndLoc != null) { // 棰勫厛鐢熸垚鍏ュ簱绔欏彴-绔嬪簱缁堢偣鐨勬惉杩愪换鍔�@@ -1690,7 +1757,7 @@ S_OP_CODE = mst.S_CODE, S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = cst.S_CNTR_CODE, - S_TYPE = "涓嶅悎鏍煎搧鍥炲簱", + S_TYPE = "涓嶅悎鏍煎搧鍏ュ簱浠诲姟", S_START_LOC = startLoc.S_CODE, S_START_AREA = startLoc.S_AREA_CODE, S_END_LOC = agvEndLoc.S_CODE, @@ -1714,7 +1781,7 @@ S_OP_CODE = mst.S_CODE, S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = cst.S_CNTR_CODE, - S_TYPE = "涓嶅悎鏍煎搧鍥炲簱", + S_TYPE = "涓嶅悎鏍煎搧鍏ュ簱浠诲姟", S_START_LOC = agvEndLoc.S_CODE, S_START_AREA = agvEndLoc.S_AREA_CODE, S_END_LOC = wmsEndLoc.S_CODE, @@ -1734,10 +1801,11 @@ } } - if (cst.S_TYPE == "鍙枡鍑哄簱浠诲姟") + var bo = int.TryParse(mst.S_OP_DEF_CODE, out int mesId); + if (bo) { - var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE); - callMaterial( mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID); + var mesTask = WMSHelper.GetLjMesTaskById(mesId); + callMaterial(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID); } } return result; @@ -2025,41 +2093,32 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public static bool switchStationAttribute(SwitchStationAttributeModel model) + public static ResponseResult switchStationAttribute(SwitchStationAttributeModel model) { - bool result = false; + ResponseResult responseResult = new ResponseResult(); var task = WCSHelper.GetTaskByStartOrEnd(model.locCode); - if (task == null) + if (task == null) { - var transfeRelevance= WMSHelper.GetTransfeRelevance(model.locCode); // 鎺ラ┏浣嶅睘鎬�+ var transfeRelevance = WMSHelper.GetTransfeRelevance(model.locCode); // 鎺ラ┏浣嶅睘鎬� LogHelper.Info($"鍘熺珯鍙板睘鎬э細{JsonConvert.SerializeObject(transfeRelevance)}", "WMS"); - if (transfeRelevance != null && transfeRelevance.S_TYPE == "1") + if (transfeRelevance != null) { if (model.signalType == "1") { - if (transfeRelevance.S_PROPERTY == "2") - { - result = true; - } - else - { - result = WMSHelper.updateTransfeLocProperty(model.locCode, "2"); - } + WMSHelper.updateTransfeLocProperty(model.locCode, 0); } if (model.signalType == "2") { - if (transfeRelevance.S_PROPERTY == "3") - { - result = true; - } - else - { - result = WMSHelper.updateTransfeLocProperty(model.locCode, "3"); - } + WMSHelper.updateTransfeLocProperty(model.locCode, 1); } } } - return result; + else + { + responseResult.code = 1; + responseResult.msg = "鎺ラ┏浣嶅瓨鍦ㄦ湭瀹屾垚鐨勪换鍔★紝鏃犳硶鍒囨崲绔欏彴灞炴�"; + } + return responseResult; } /// <summary> @@ -2094,10 +2153,88 @@ return result; } + /// <summary> + /// 鏂滆鐗╂枡鍑哄簱浠诲姟 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static ResponseResult createXcItemOutStockTask(XcItemOutStockModel model) + { + ResponseResult responseResult = new ResponseResult(); + Location startLoc = LocationHelper.GetLoc(model.startLoc); + if (startLoc == null) + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏嚭搴�鏂滆)锛岃捣鐐�{model.startLoc}鍦╓MS绯荤粺涓笉瀛樺湪"); + responseResult.code = 201; + responseResult.msg = $"璧风偣:{model.startLoc}鍦╓MS绯荤粺涓笉瀛樺湪"; + return responseResult; + } + Location endLoc = WMSHelper.getCallMaterialLocCode(model.eqNo); + if (endLoc != null) + { + var wmsTask = WMSHelper.GetWmsTaskByCntr(model.palletId); + if (wmsTask == null) + { + ContainerHelper.AddCntr(model.palletId); + + // 1.鍒涘缓鏂滆-鎴愭柊鏈哄彨鏂欎綔涓�+ wmsTask = new WMSTask() + { + S_CNTR_CODE = model.palletId, + 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_CODE = model.reqId, + S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�鏂滆)", + T_START_TIME = DateTime.Now, + }; + if (WMSHelper.CreateWmsTask(wmsTask)) + { + 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 = "AGV", + N_PRIORITY = 10, + T_START_TIME = DateTime.Now, + }; + + if (WCSHelper.CreateTask(wcsTask)) + { + // 璧风偣銆佺粓鐐瑰姞閿�+ LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); + LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); + } + } + } + } + else + { + responseResult.code = 201; + responseResult.msg = $"鎴愬瀷鏈烘満鍙�{model.eqNo}娌℃湁绌轰綑鐨勫彨鏂欒揣浣�; + } + return responseResult; + } + //---------------------------------------------------------------------------------------------------------------------------- public class LocModel { - public string locCode { get; set; } + public string locCode { get; set; } // 杩旀枡璐т綅缂栧彿 + public string jtNo { get; set; } // 鏈哄彴鍙� } public class ApplyDest { @@ -2203,6 +2340,7 @@ { public string reqId { get; set; } public string reqTime { get; set; } + public string taskNo { get; set; } // 鎵樼洏鍙� public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛� public string cntrNo { get; set; } // 鎵樼洏鍙� public int signalType { get; set; } //璇锋眰绫诲瀷 1:涓嬬嚎璇锋眰 2锛氬彨鏂欒姹�3锛氳鐮佽姹傦紙蹇呭~锛�@@ -2227,6 +2365,7 @@ public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛� public string cntrNo { get; set; } // 鎵樼洏鍙� public string jtNo { get; set; } // 鏈哄彴鍙�+ public bool isNormal { get; set; } //鏄惁寮傚父 } /// <summary> @@ -2236,6 +2375,7 @@ { public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛� public string cntrNo { get; set; } // 鎵樼洏鍙�+ public string taskNo { get; set; } // 浠诲姟鍙� } public class AddTaskModel { -- Gitblit v1.9.1