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.SXJK/models/TN_VendorList.cs | 1 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs | 47 +- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs | 483 ++++++++++++++--------------- HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs | 16 + HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs | 1 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs | 15 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json | 53 ++- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs | 6 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs | 7 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs | 6 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs | 41 ++ HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs | 10 HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs | 14 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs | 31 + HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs | 20 + HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs | 3 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs | 10 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs | 6 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs | 22 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs | 150 -------- 24 files changed, 461 insertions(+), 489 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; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json index 382020b..cf55ba9 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json @@ -5,76 +5,86 @@ "SqlServer1": "Data Source=192.168.1.198\\sql2008;Initial Catalog=OIMobox;User ID=sa;Password=sa@2015", "OracleServer": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.144)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=jiatong)));User Id=system;Password=Hh123321;", "ApiPort": 8901, - "FacCode": "0000", + "FacCode": "FJJT", "WHCode": "W001", // 鎺ラ┏鍖恒�缂撳瓨鍖恒�鏈哄彴涓嬬嚎鍖恒�鎴愬瀷鏈哄彨鏂欏尯 瀵瑰簲鐨勭珛搴撳簱鍖� "AreaRelevance": [ { - "areaCode": "", - "relAreaCode": [ "" ] + "areaCode": "TCZLKGZHCKQ", + "relAreaCode": [ "TCZLCK" ] }, { - "areaCode": "", - "relAreaCode": [ "" ] + "areaCode": "TMZLKGZHCKQ", + "relAreaCode": [ "TMZLCK" ] } ], - + // 鐩磋繛缂撳瓨浣嶉厤缃�+ "BufferLocConfig": [ + { + "locCode": "TCZLKGZHCKQ1-1", + "deviceNo": "1" + }, + { + "locCode": "TCZLKGZHCKQ2-1", + "deviceNo": "2" + } + ], // cntrType 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘 // type 1.鐩磋繛 2.闈炵洿杩� "AreaProperty": [ { - "areaCode": "TMLKQ", - "areaName": "鑳庨潰搴撲竴锛堢洿杩烇級", + "areaCode": "TMZLCK", + "areaName": "鑳庨潰搴擄紙鐩磋繛锛�, "cntrType": [ 1 ], "type": 1 }, { - "areaCode": "TMLKQ2", - "areaName": "鑳庨潰搴撲簩锛堥潪鐩磋繛锛�, + "areaCode": "TMFZLCK", + "areaName": "鑳庨潰搴擄紙闈炵洿杩烇級", "cntrType": [ 1 ], "type": 2 }, { - "areaCode": "TCLKQ", - "areaName": "鑳庝晶搴撲竴锛堢洿杩烇級", + "areaCode": "TCZLCK", + "areaName": "鑳庝晶搴擄紙鐩磋繛锛�, "cntrType": [ 2 ], "type": 1 }, { - "areaCode": "TCLKQ2", - "areaName": "鑳庝晶搴撲簩锛堥潪鐩磋繛锛�, + "areaCode": "TCFZLCK", + "areaName": "鑳庝晶搴擄紙闈炵洿杩烇級", "cntrType": [ 2 ], "type": 2 }, { - "areaCode": "NCLKQ", + "areaCode": "NCFZLCK", "areaName": "鍐呰‖搴擄紙闈炵洿杩烇級", "cntrType": [ 3 ], "type": 2 }, { - "areaCode": "LBLKQ", + "areaCode": "LBFZLCK", "areaName": "甯樺竷搴擄紙鐩磋繛锛�, "cntrType": [ 4 ], "type": 1 }, { - "areaCode": "LBLKQ", + "areaCode": "LBFZLCK", "areaName": "鐜甫搴�, "cntrType": [ 5, 6 ], "type": 2 }, { - "areaCode": "GBLKQ", + "areaCode": "GBFZLCK", "areaName": "閽㈠寘搴�闈炵洿杩�", "cntrType": [ 7 ], "type": 2 }, { - "areaCode": "ZZKQ", + "areaCode": "ZZFZLCK", "areaName": "涓浆搴�闈炵洿杩�", "cntrType": [ 7 ], "type": 2 @@ -82,14 +92,15 @@ ], - "DeviceInfo": [ + "CarDeviceInfo": [ { "address": "127.0.0.11", - "deviceName": "浜х嚎1", + "deviceName": "1鍙疯溅", "deviceNo": 1, "enable": 0 } ], + "linePlcInfo": [ { "deviceNo": "1", diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs index 70d1b56..d7a5809 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs @@ -200,7 +200,6 @@ if (startLoc != null) { var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); - // 1.鍒涘缓鏂滆-鎴愭柊鏈哄彨鏂欎綔涓� wmsTask = new WMSTask() { S_CNTR_CODE = locCntrRels[0].S_CNTR_CODE, @@ -209,7 +208,7 @@ S_START_AREA = startLoc.S_AREA_CODE, S_END_LOC = jbLoc.S_CODE, S_END_AREA = jbLoc.S_AREA_CODE, - S_TYPE = "绌哄伐瑁呭嚭搴�, + S_TYPE = "绌哄伐瑁呰嚜鍔ㄥ嚭搴撲换鍔�, S_OP_DEF_NAME = "鑷姩琛ュ厖绌哄伐瑁呭埌鎺ラ┏浣�, T_START_TIME = DateTime.Now, }; diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs index 2bbdc23..90f2243 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs @@ -62,6 +62,7 @@ break; case 4: WCSHelper.UpdateStatus(cst, "鍙栬揣瀹屾垚"); + LocationHelper.UnLockLoc(cst.S_START_LOC); TaskProcess.OperateStatus(cst, 4); break; case 5: @@ -69,6 +70,7 @@ break; case 6: WCSHelper.UpdateStatus(cst, "鍗歌揣瀹屾垚"); + LocationHelper.UnLockLoc(cst.S_END_LOC); TaskProcess.OperateStatus(cst, 6); break; #endregion @@ -84,11 +86,13 @@ else if (model.State == 1012) { LogHelper.Info("寮�杩涜RFID鎵弿", "AGV"); + ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1); + WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, cst.S_START_LOC, null); // 鏌ヨ鎵弿鐨凴FID // 鍙戦� 00 04 71 02鍒版壂鐮佸櫒 锛屾帴鍙楄繑鍥炴暟鎹苟瑙f瀽 - byte[] bytes = new byte[] {00,04,71,02}; - var plc = Settings.deviceInfos.Where(a => a.deviceNo == model.ForkliftNo && a.enable == 1).FirstOrDefault(); - TcpServer.TcpServerSend(plc.address, bytes); + /* byte[] bytes = new byte[] { 00, 04, 71, 02 }; + var plc = Settings.carDeviceInfos.Where(a => a.deviceNo == model.ForkliftNo && a.enable == 1).FirstOrDefault(); + TcpServer.TcpServerSend(plc.address, bytes);*/ } else if (model.State == 1002) { @@ -116,7 +120,7 @@ param = $"{model.No};{cst.S_START_LOC};{cst.S_END_LOC};4;512;0;1" }; NDCApi.ChangeOrderParam(paramModel); - LogHelper.Info($"鑾峰彇AGV缁堢偣锛歿agvEndLoc}", "AGV"); + LogHelper.Info($"鍙樻洿AGV缁堢偣锛歿agvEndLoc}", "AGV"); } else { @@ -150,7 +154,11 @@ // 妫�祴鏄惁鏄鐮佷綅锛岄潪璇荤爜浣嶏紝鍙互婵�椿棰勫垱寤轰换鍔� var transfe = WMSHelper.GetTransfeRelevance(cst.S_END_LOC); // 鎺ラ┏浣嶅睘鎬�- if ((transfe == null || transfe.N_READ_LOC == 0)) + if (transfe != null && transfe.N_READ_LOC == 1) + { + WCSHelper.ActivatePreCreateTask(mst.S_CODE); + } + else if ( transfe.N_READ_LOC == 0) { if (cst.S_TYPE.Contains("銆愬紓甯搞�")) { @@ -176,9 +184,7 @@ // 濡傛灉浣滀笟鍚嶇О涓烘垚鍨嬫満鍙枡鍑哄簱浠诲姟锛屽垯瑙﹀彂浣欐枡/绌烘墭鎼繍浠诲姟 string locCode = WMSHelper.getReturnMaterialLocCode(mst.S_END_LOC); ApiHelper.returnMaterialOrEmptyTray(locCode); - } - - + } } } else diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs index a817d73..ae490b4 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs @@ -15,5 +15,6 @@ public string S_ALARM_LEVEL { get; set; } // 鎶ヨ绾у埆 浣庛�涓�楂� public string S_ALARM_MSG { get; set; } // 鎶ヨ淇℃伅 public string S_FILE_NAME { get; set; } // 鏂囦欢鍚�+ public int N_IS_READ { get; set; } // 鏂囦欢鍚� } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs index fbe69c3..3aca26e 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs @@ -22,7 +22,7 @@ public string S_BATCH_NO { get; set; } // 批次条码 public float F_QTY { get; set; } // 数量 - public string S_UOM { get; set; } = ""; // 规格 + public string S_UOM { get; set; } = "个"; // 规格 public string S_CNTR_CODE { get; set; } /// <summary> /// 分配量,被其它 diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs index 1ff9840..25fc917 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs @@ -10,31 +10,16 @@ public string S_CODE { get; set; } public string S_TYPE { get; set; } // 1.胎面;2.胎侧;3.内衬;4.帘布;5.环带;6.冠带;7.钢包 - public string S_SPEC { get; set; } - public float F_WEIGHT { get; set; } - public int N_LENGTH { get; set; } - public int N_WIDTH { get; set; } - public int N_HEIGHT { get; set; } - public string C_IS_VIRTUAL { get; set; } = "N"; public int N_TYPE { get; set; } public string C_ENABLE { get; set; } = "Y"; - public string S_STATE_PRE { get; set; } - public int N_REVIEW_RESULT { get; set; } - public int N_DETAIL_COUNT { get; set; } public int N_B_STATE { get; set; } public string S_LOCK_OP_CODE { get; set; } public string S_LOCK_STATE { get; set; } public int N_LOCK_STATE { get; set; } - /// <summary> - /// 码盘时候标记 - /// </summary> - public string S_SRC { get; internal set; } - public string S_DEST { get; internal set; } // --------------------福建佳通----------------- public int N_E_STATE { get; set; } = 0; // 托盘异常状态 0.默认 1.WCS读码异常 2.AGV读码器读码异常 3.未查询到RFID的MES任务 4.RFID与任务RFID不一致 5.托盘物料不合格 - public string S_ERR_DESC { get; internal set; } // 异常描述 /// <summary> diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs index e8304aa..2506cbe 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs @@ -15,7 +15,7 @@ { public string S_LOC_CODE { get; set; } // 璐т綅缂栫爜 public int N_PROPERTY { get; set; } // 璐т綅灞炴� (1.鐩磋繛 2.闈炵洿杩� - public int N_ACT_TYPE { get; set; } // 璐т綅绫诲瀷 1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣�+ public int N_TYPE { get; set; } // 璐т綅绫诲瀷 1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣� public string S_RELE_AREA { get; set; } // 鎵�睘搴撳尯 public string S_DEVICE_NO { get; set; } // 璁惧鍙� 鐢ㄩ�锛氱敤浜庢煡璇㈢嚎浣撳厜鐢碉紝鍒ゆ柇缂撳瓨浣嶆槸鍚︿负绌� public int N_IS_MANUAL { get; set; } // 鏄惁涓轰汉宸�(0.闈炰汉宸�2.浜哄伐) 鐢ㄩ�锛氬垏鎹汉宸ョ珯鍙�diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs index 97a2627..e96ccdc 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs @@ -16,7 +16,7 @@ { internal static void Analysis(string data, string ip) { if (data.Length == 8) { - var plc = Settings.deviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault(); + var plc = Settings.carDeviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault(); if (plc != null) { WCSTask cst = WCSHelper.GetTaskByEq(plc.deviceNo); if (cst != null) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs index b63289e..5ad8998 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs @@ -28,13 +28,6 @@ else { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}"); - // 缁堢偣涓虹洿杩炵紦瀛樹綅锛屼笉缁戝畾 - var loc = WMSHelper.GetTransfeRelevance(mst.S_END_LOC); - if (loc != null && loc.N_PROPERTY == 1) - { - LocationHelper.UnLockLoc(mst.S_END_LOC); - return; - } LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs index 7520040..0933920 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs @@ -12,11 +12,13 @@ public static string SqlServer { get; set; } public static string SqlServer1 { get; set; } public static string OracleServer { get; set; } - public static List<deviceInfo> deviceInfos { get; set; } + public static List<CarDeviceInfo> carDeviceInfos { get; set; } public static List<LinePlcInfo> linePlcInfo { get; set; } public static List<PlcValue> plcValue { get; set; } public static List<AreaProperty> areaPropertyList { get; set; } public static List<AreaRelevance> areaRelevanceList { get; set; } + + public static List<BufferLocConfig> bufferLocConfigList { get; set; } public static int port { get; set; } public static string WHCode { get; set; } public static string FacCode { get; set; } @@ -61,8 +63,8 @@ if (keyValue.Name == "ApiPort") { port = int.Parse(keyValue.Value.ToString()); } - if (keyValue.Name == "DeviceInfo") { - deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString()); + if (keyValue.Name == "CarDeviceInfo") { + carDeviceInfos = JsonConvert.DeserializeObject<List<CarDeviceInfo>>(keyValue.Value.ToString()); } if (keyValue.Name == "linePlcInfo") { linePlcInfo = JsonConvert.DeserializeObject<List<LinePlcInfo>>(keyValue.Value.ToString()); @@ -77,6 +79,10 @@ if (keyValue.Name == "AreaRelevance") { areaRelevanceList = JsonConvert.DeserializeObject<List<AreaRelevance>>(keyValue.Value.ToString()); + } + if (keyValue.Name == "BufferLocConfig") + { + bufferLocConfigList = JsonConvert.DeserializeObject<List<BufferLocConfig>>(keyValue.Value.ToString()); } } } @@ -113,6 +119,22 @@ return areaCodes; } + /// <summary> + /// 鑾峰彇鐩磋繛缂撳瓨浣嶉厤缃�+ /// </summary> + /// <param name="locCode"></param> + /// <returns></returns> + public static BufferLocConfig GetBufferLocConfig(string locCode) + { + return bufferLocConfigList.Where(a => a.locCode == locCode).FirstOrDefault(); + } + + public class BufferLocConfig + { + public string locCode { get; set; } + public string deviceNo { get; set; } + } + public class AreaRelevance { public string areaCode { get; set; } @@ -126,7 +148,8 @@ public List<int> cntrType { get; set; } // 瀹瑰櫒绫诲瀷 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘 } - public class deviceInfo { + public class CarDeviceInfo + { public string address { get; set; } public string deviceName { get; set; } public string deviceNo { get; set; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs index c07bb91..49e4e08 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs @@ -18,20 +18,7 @@ var date = DateTime.Now.ToString("yyMMdd"); return $"TP{date}{id.ToString().PadLeft(4, '0')}"; } - /// <summary> - /// 鏍规嵁瀹瑰櫒绫诲瀷銆佺洰鐨勫湴銆佺姸鎬佹煡璇㈠鍣�- /// </summary> - /// <param name="dest"></param> - /// <param name="cntrType"></param> - /// <param name="state"></param> - /// <returns></returns> - internal static List<Container> GetCntrListByPurpose(string dest, string cntrType, int state) { - //1.0 鏌ヨ揣浣嶅鍣ㄨ〃 - var db = new SqlHelper<object>().GetInstance(); - var list = db.Queryable<Container>().Where(a => a.S_DEST == dest && a.S_TYPE == cntrType && a.N_B_STATE == state).ToList(); - return list; - - } + /// <summary> /// TN_ContainerHelper.test("4L澶╃劧姘寸瑁�鍏�, 50, "335ml涓滄柟鏍戝彾15鍏�, 30); /// </summary> @@ -199,7 +186,7 @@ var count = db.Queryable<CntrItemRel>().Count(a => a.S_CNTR_CODE == cntr.S_CODE); cntr.N_DETAIL_COUNT = count; cntr.C_ENABLE = "N";//鐮佺洏鍚庡皢鎵樼洏璁剧疆涓轰笉鍙敤鐘舵�锛屽叆搴撳悗鍙樻垚鍙敤 - db.Updateable(cntr).UpdateColumns(it => new { it.N_DETAIL_COUNT, it.C_ENABLE, it.S_SRC }).ExecuteCommand(); + db.Updateable(cntr).UpdateColumns(it => new { it.N_DETAIL_COUNT, it.C_ENABLE}).ExecuteCommand(); db.CommitTran(); res = true; @@ -212,64 +199,9 @@ return res; } - /// <summary> - /// 鐗╂枡淇℃伅缁戝畾鍒版弧瀹瑰櫒涓�- /// </summary> - /// <param name="cntrCode"></param> - /// <param name="itemCode"></param> - /// <param name="batchNo"></param> - /// <param name="qty"></param> - /// <param name="purpose">瀹瑰櫒鐢ㄩ�锛岀敤浜庡摢涓嚎杈硅繕鏄洰鐨勭偣</param> - /// <returns></returns> - internal static bool BindCntrItemSingle(Container cntr, string itemCode, string batchNo, float qty) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - try { - db.BeginTran(); - db.Updateable(cntr).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand(); - //1.灏嗗師鏈夊鍣ㄧ墿鏂欎俊鎭垹闄�- db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == cntr.S_CODE.Trim()).ExecuteCommand(); - //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�- var cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = batchNo, F_QTY = qty, S_ITEM_CODE = itemCode }; - db.Insertable<CntrItemRel>(cir).ExecuteCommand(); - - db.CommitTran(); - res = true; - } - catch (Exception ex) { - db.RollbackTran(); - } - - return res; - } - /// <summary> - /// 鏍规嵁瀹瑰櫒鏉ユ簮鍜岀姸鎬佽幏鍙栨墭鐩�- /// </summary> - /// <param name="src"></param> - /// <param name="state"></param> - /// <returns></returns> - internal static List<Container> GetCntr(string dest, int state, string cntrType = "") { - var db = new SqlHelper<object>().GetInstance(); - if (cntrType == "") { - return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.N_B_STATE == state).ToList(); - } - else { - return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList(); - } - } - internal static bool UpdateCntr(List<string> cntrs, string dest, int state) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) { - models.ForEach(a => { - a.S_DEST = dest; a.N_B_STATE = state; - db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE }).ExecuteCommand(); - }); - res = true; - } - return res; - } + + + internal static bool UpdateCntr(Container container) { @@ -277,36 +209,8 @@ return db.Updateable(container).ExecuteCommand()>0; } - internal static bool UpdateCntrDest(List<string> cntrs, string dest) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) { - models.ForEach(a => { - a.S_DEST = dest; - db.Updateable(a).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand(); - }); - res = true; - } - return res; - } - /// <summary> - /// 鏇存柊鎵樼洏鏉ユ簮 - /// </summary> - /// <param name="cntr"></param> - /// <param name="src"></param> - /// <returns></returns> - internal static bool UpdateCntrSrc(string cntr, string src) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var model = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First(); - if (model != null) { - model.S_SRC = src; - model.T_MODIFY = DateTime.Now; - res = db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.T_MODIFY }).ExecuteCommand() > 0; - } - return res; - } + + /// <summary> /// @@ -321,49 +225,11 @@ if (models.Count > 0) { models.ForEach(a => { a.N_E_STATE = state; - db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE,it.S_ERR_DESC }).ExecuteCommand(); + db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE }).ExecuteCommand(); }); res = true; } return res; } - - internal static bool UpdateCntr(List<string> cntrs, string src, string dest, int state) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList(); - if (models.Count > 0) { - models.ForEach(a => { - a.S_DEST = dest; a.N_B_STATE = state; - db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE, it.S_SRC }).ExecuteCommand(); - }); - res = true; - } - return res; - } - public static bool ClearCntrInfo(string cntr) { - - var db = new SqlHelper<object>().GetInstance(); - var model = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First(); - if (model != null) { - model.S_SRC = ""; - model.S_DEST = ""; - model.N_B_STATE = 0; - model.T_MODIFY = DateTime.Now; - - } - db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.S_DEST, it.N_B_STATE, it.T_MODIFY }).ExecuteCommand(); - return db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE.Trim() == cntr.Trim()).ExecuteCommand() > 0; - } - internal static List<Container> GetCntrBySrc(string src, int state, string cntrType = "") { - var db = new SqlHelper<object>().GetInstance(); - if (cntrType == "") { - return db.Queryable<Container>().Where(a => a.S_SRC == src && a.N_B_STATE == state).ToList(); - } - else { - return db.Queryable<Container>().Where(a => a.S_SRC == src && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList(); - } - } - } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs index 5ad847a..9140963 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs @@ -293,7 +293,7 @@ try { db.BeginTran(); - var count = db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand(); + db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand(); location.N_CURRENT_NUM = 0; location.N_LOCK_STATE = 0; location.S_LOCK_STATE = Location.GetLockStateStr(location.N_LOCK_STATE); diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs index c3d71ed..02fa96c 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs @@ -65,14 +65,14 @@ Where(a => a.S_OP_CODE.Trim() == wmsTaskNo && a.N_B_STATE == -1 ); - if (anomaly == 1) + /*if (anomaly == 1) { updateable = updateable.Where(a => a.S_TYPE.Contains("銆愬紓甯搞�")); } else { updateable = updateable.Where(a => !a.S_TYPE.Contains("銆愬紓甯搞�")); - } + }*/ return updateable.ExecuteCommand() > 0; } @@ -233,7 +233,7 @@ } internal static List<WCSTask> GetWaitingTaskList() { var db = new SqlHelper<object>().GetInstance(); - return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).ToList(); + return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).OrderByDescending(a => a.N_PRIORITY).ToList(); } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs index 6dc19e8..47e90f5 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs @@ -307,7 +307,7 @@ string S_ZONE_CLS_CODE = ""; if (trayStatus == 0) { - S_ZONE_CLS_CODE = "KGZ"; + S_ZONE_CLS_CODE = "KT"; } else if (trayStatus == 1) { @@ -346,10 +346,6 @@ .Where((a, b, c) => a.S_AREA_CODE.Trim() == item.S_AREA_CODE.Trim() && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && c.S_ZONE_CLS_CODE.Trim() == S_ZONE_CLS_CODE) .OrderBy((a, b, c) => a.N_LAYER) .First(); - if (location != null) - { - return location; - } } } @@ -369,7 +365,7 @@ .OrderBy((a, b, c) => a.N_LAYER) .First(); } - LogHelper.Info($"鏌ヨ缁撴潫,绔嬪簱缁堢偣璐т綅:{location}","WMS"); + LogHelper.Info($"鏌ヨ缁撴潫,绔嬪簱缁堢偣璐т綅:{JsonConvert.SerializeObject(location)}","WMS"); } catch (Exception ex) { @@ -381,15 +377,22 @@ public static bool addAlarmRecord(string alarmType , string alarmLevel ,string alarmMsg ,string logSite = "WMS") { var db = new SqlHelper<object>().GetInstance(); + bool result = true; LogHelper.Info(alarmMsg, logSite); - AlarmRecord alarmRecord = new AlarmRecord() { - S_ALARM_CODE = GenerateAlarmNo(), - S_ALARM_TYPE = alarmType, - S_ALARM_LEVEL = alarmLevel, - S_ALARM_MSG = alarmMsg, - S_FILE_NAME = logSite, - }; - return db.Insertable<AlarmRecord>(alarmRecord).ExecuteCommand()>0; + var alarmRecord = db.Queryable<AlarmRecord>().Where(a => a.N_IS_READ == 0 && a.S_ALARM_MSG == alarmMsg).First(); + if (alarmRecord == null) + { + alarmRecord = new AlarmRecord() + { + S_ALARM_CODE = GenerateAlarmNo(), + S_ALARM_TYPE = alarmType, + S_ALARM_LEVEL = alarmLevel, + S_ALARM_MSG = alarmMsg, + S_FILE_NAME = logSite, + }; + result = db.Insertable<AlarmRecord>(alarmRecord).ExecuteCommand() > 0; + } + return result; } public static bool addRfidAnomalyRecord(string rfid ,int anomalyType ,string locCode ,string taskNo) @@ -403,7 +406,7 @@ S_LOC_CODE = locCode, S_TASK_NO = taskNo }; - return db.Insertable<AlarmRecord>(anomalyRecord).ExecuteCommand() > 0; + return db.Insertable<RfidAnomalyRecord>(anomalyRecord).ExecuteCommand() > 0; } /// <summary> @@ -450,15 +453,15 @@ /// </summary> /// <param name="areaCode">搴撳尯</param> /// <param name="property">璐т綅灞炴�锛�.鐩磋繛 2.闈炵洿杩烇級</param> - /// <param name="actType">鍔ㄤ綔绫诲瀷锛�.浜哄伐鎺ラ┏浣�1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣嶏級</param> + /// <param name="type">鍔ㄤ綔绫诲瀷锛�.浜哄伐鎺ラ┏浣�1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣嶏級</param> /// <returns></returns> - public static Location GetTransfeRelevanceLoc(string areaCode ,int actType ,int property ) + public static Location GetTransfeRelevanceLoc(string areaCode ,int type ,int property ) { Location loc = null; var db = new SqlHelper<object>().GetInstance(); loc = db.Queryable<Location>() .LeftJoin<TransfeRelevance>((a,b)=> a.S_CODE == b.S_LOC_CODE) - .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.N_PROPERTY == property && b.N_ACT_TYPE == actType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y") + .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.N_PROPERTY == property && b.N_TYPE == type && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y") .First(); return loc; } @@ -482,16 +485,16 @@ /// 娉細鏌ヨ浠诲姟鏈�皯鐨勬帴椹充綅 /// </summary> /// <param name="areaCode">搴撳尯</param> - /// <param name="property">璐т綅灞炴� ( 0.浜哄伐 1.鐩磋繛 2.闈炵洿杩�</param> - /// <param name="actType">鍔ㄤ綔绫诲瀷 锛�.鍏ュ簱鎺ラ┏浣� 2.鍑哄簱鎺ラ┏浣嶏級</param> + /// <param name="property">璐т綅灞炴� ( 1.鐩磋繛 2.闈炵洿杩�</param> + /// <param name="type">鍔ㄤ綔绫诲瀷 锛�.鍏ュ簱鎺ラ┏浣� 2.鍑哄簱鎺ラ┏浣嶏級</param> /// <returns></returns> - public static Location GetMinTaskTransfeLoc(string areaCode ,int actType, int property) + public static Location GetMinTaskTransfeLoc(string areaCode ,int type, int property) { var db = new SqlHelper<object>().GetInstance(); var loc = db.Queryable<Location>() .LeftJoin<TransfeRelevance>((a,b) => a.S_CODE == b.S_LOC_CODE) .LeftJoin<WCSTask>((a,b,c) => a.S_CODE == c.S_END_LOC && c.N_B_STATE < 3) - .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode && b.N_ACT_TYPE == actType && b.N_PROPERTY == property && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y") + .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode && b.N_TYPE == type && b.N_PROPERTY == property && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y") .GroupBy((a, b, c) => a.S_CODE) .Select((a, b, c) => new { count = SqlFunc.AggregateCount(c.S_END_LOC), diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs index f49a6f7..f601aee 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs @@ -13,5 +13,6 @@ public string VENDOR { get; set; } // 渚涘簲鍟� public string VENDORNAME { get; set; } // 渚涘簲鍟嗗悕绉� public int FURWEIGHT { get; set; } // 姣涚毊閲嶉噺 + public int FURHEIGHT { get; set; } // 楂樺害 } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs index 6df4a9a..9cae50b 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs @@ -280,7 +280,8 @@ var cntrItemRel = ContainerHelper.GetCntrItemRel(downCntr.S_CNTR_CODE).FirstOrDefault(); if (cntrItemRel != null) { - mst.S_START_LOC = mst.S_START_LOC + "-" + cntrItemRel.N_GOODS_HEIGHT; + float height = WMSHelper.getFurHeight(cntrItemRel.LOTATT09); + mst.S_START_LOC = mst.S_START_LOC + "-" + height; } } } @@ -290,7 +291,8 @@ if (endLocCntrRels != null && endLocCntrRels.Count == 1) { var cntrItemRel = ContainerHelper.GetCntrItemRel(endLocCntrRels[0].S_CNTR_CODE).FirstOrDefault(); if (cntrItemRel != null) { - mst.S_END_LOC = mst.S_END_LOC + "-" + cntrItemRel.N_GOODS_HEIGHT; + float height = WMSHelper.getFurHeight(cntrItemRel.LOTATT09); + mst.S_END_LOC = mst.S_END_LOC + "-" + height; } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs index 6838cae..9999732 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs @@ -1503,5 +1503,21 @@ } return weight; } + + /// <summary> + /// 鏌ヨ鏄惁鏈夐渶瑕佺Щ搴撶殑璐т綅 + /// </summary> + /// <returns></returns> + public static float getFurHeight(string VENDOR) + { + float height = 800; + var db = new SqlHelper<object>().GetInstance(); + var verdor = db.Queryable<TN_VendorList>().Where(a => a.VENDOR == VENDOR).First(); + if (verdor != null) + { + height = verdor.FURHEIGHT; + } + return height; + } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs index 9fc75c5..8e12f8b 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs @@ -591,11 +591,15 @@ { // 1銆佹煡璇㈠綋鍓嶅簱鍖�鎺�鐗╂枡 鏈夋墭鐩樼殑璐т綅 var db = new SqlHelper<object>().GetInstance(); - result = db.Queryable<Location>() - .Where(l => l.N_CURRENT_NUM > 0 && l.S_AREA_CODE == area && l.N_ROW == row && l.N_LOCK_STATE == 0 && (l.C_ENABLE != "绂佺敤" && l.C_ENABLE != "N")) - .Includes(l => l.LocCntrRel, l => l.CntrItemRel) - .OrderByDescending(l => l.N_COL) - .First(); + var isLock = db.Queryable<Location>().Where(a => a.S_AREA_CODE == area && a.N_ROW == row && a.N_LOCK_STATE != 0).Count()> 0; + if (!isLock) + { + result = db.Queryable<Location>() + .Where(l => l.N_CURRENT_NUM > 0 && l.S_AREA_CODE == area && l.N_ROW == row && l.N_LOCK_STATE == 0 && (l.C_ENABLE != "绂佺敤" && l.C_ENABLE != "N")) + .Includes(l => l.LocCntrRel, l => l.CntrItemRel) + .OrderByDescending(l => l.N_COL) + .First(); + } } catch (Exception ex) { diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs index 4889597..27a5a5f 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs @@ -50,7 +50,8 @@ var emptyTrayBuffers = WMSHelper.getEmptyTrayBufferList(); foreach (var buffer in emptyTrayBuffers) { - if (buffer.T_CREATE.AddMinutes(1) > DateTime.Now) + var dateTime = DateTime.Now.AddMinutes(-1); + if (buffer.T_CREATE < dateTime) { Location startLoc = WMSHelper.GetEmptyTrayStartLoc(buffer.TRAY_TYPE); Location middleLoc = null; @@ -128,6 +129,9 @@ // 鏇存柊浣滀笟浠诲姟鐘舵� wmsTask.N_B_STATE = 1; WMSHelper.UpdateTaskState(wmsTask); + + buffer.IS_CREATED = "Y"; + WMSHelper.updateEmptyTrayBuffer(buffer); } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs index 18a5dda..1758ea2 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs @@ -372,7 +372,6 @@ return agvLoc; } } - LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV"); } else @@ -410,6 +409,46 @@ WMSHelper.updateEmptyTrayBuffer(emptyTray); } } + else + { + var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, null, 1); + if (endLoc != null) + { + Location agvLoc = null; + var locCodes = Settings.getAgvJBLocList(endLoc.N_ROADWAY, 1); + if (locCodes.Count > 0) + { + foreach (var locCode in locCodes) + { + agvLoc = LocationHelper.GetLoc(locCode); + if (agvLoc != null && agvLoc.C_ENABLE == "Y") + { + cst.S_END_LOC = agvLoc.S_CODE; + cst.S_END_AREA = agvLoc.S_AREA_CODE; + WCSHelper.UpdateTaskEnd(cst); + + mst.S_END_LOC = endLoc.S_CODE; + mst.S_END_AREA = endLoc.S_AREA_CODE; + WMSHelper.UpdateTaskEnd(mst); + LocationHelper.LockLoc(endLoc.S_CODE, 1); + + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV鐢宠鐨勭粓鐐癸細{agvLoc.S_CODE}", "AGV"); + return agvLoc; + } + } + + LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV"); + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV"); + } + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV"); + } + } } } } 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 aa058eb..911da84 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 @@ -810,6 +810,16 @@ return "No shift"; // 鐞嗚涓婁笉浼氳Е鍙� } + /// <summary> + /// 绌烘墭瑙g粦 + /// </summary> + public static ReturnResult emptyTrayUnBind(EmptyTrayUnBindModel model) + { + ReturnResult responseResult = new ReturnResult(); + ContainerHelper.deleteCntrItemRelByCntr(model.rfid); + return responseResult; + } + public class readCodeFeedbackResponse { public bool verifyResult { get; set; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs index ba7422f..89ec50a 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs @@ -164,6 +164,26 @@ } /// <summary> + /// 9.绌烘墭鐩樿В缁�+ /// 涓氬姟鍦烘櫙锛氱┖鎵樼洏鍥炰富绾�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + public ReturnResult emptyTrayUnBind(EmptyTrayUnBindModel model) + { + LogHelper.Info("銆�.绌烘墭鐩樿В缁戙�Request锛� + JsonConvert.SerializeObject(model), "WMS"); + var result = ApiHelper.emptyTrayUnBind(model); + LogHelper.Info("銆�.绌烘墭鐩樿В缁戙�response锛� + JsonConvert.SerializeObject(result), "WMS"); + return result; + } + + public class EmptyTrayUnBindModel + { + public string rfid { get; set; } // 鎵樼洏鍙�+ } + + /// <summary> /// 浠诲姟鐘舵�鍙嶉妯″瀷 /// </summary> public class TaskStatusFeedbackModel diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs index adaee44..b9f2949 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs @@ -132,7 +132,15 @@ internal static bool deleteCntrItemRelByCntr(string cntr) { var db = new SqlHelper<object>().GetInstance(); - return db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ExecuteCommand() > 0; + var container = ContainerHelper.GetCntr(cntr); + if(container != null) + { + db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ExecuteCommand(); + + container.N_DETAIL_COUNT = 0; + db.Updateable(container).ExecuteCommand(); + } + return true; } /// <summary> -- Gitblit v1.9.1