From a93b0e99036c24b9bd58c79bf5e7364b1ba28bae Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期二, 01 七月 2025 16:02:33 +0800 Subject: [PATCH] 福建佳通-流程优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs | 38 + HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WCSHelper.cs | 14 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/AgvController.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOnhand.cs | 15 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/process/TaskProcess.cs | 70 + HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItem.cs | 11 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs | 147 ++- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs | 1 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs | 300 ++++--- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/MoboxController.cs | 8 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs | 165 +--- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOutTask.cs | 16 HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/WmsController.cs | 3 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs | 105 +- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotStatus.cs | 15 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs | 24 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/MoboxController.cs | 17 HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs | 18 HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/process/DeviceProcess.cs | 18 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs | 6 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs | 394 +++++++---- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs | 232 +++++ HH.WCS.Mobox3/HH.WCS.Mobox3.ZS7412/dispatch/HanAo.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/SqlHelper.cs | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/OffLineRecord.cs | 1 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItemConfig.cs | 10 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/config/config.json | 8 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/EmbryoFinishRecord.cs | 3 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/util/Settings.cs | 11 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj | 2 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WMSHelper.cs | 12 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/dispatch/WCSDispatch.cs | 272 ++++++- HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotCarrier.cs | 15 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/HH.WCS.Mobox3.YNJT_PT.csproj | 1 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs | 16 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs | 82 -- 37 files changed, 1,345 insertions(+), 713 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj index 747e795..e983e00 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj @@ -160,12 +160,14 @@ <Compile Include="dispatch\NDC.cs" /> <Compile Include="core\Monitor.cs" /> <Compile Include="dispatch\WCSDispatch.cs" /> + <Compile Include="dispatch\XcDispatch.cs" /> <Compile Include="models\AbnormalAreaConfig.cs" /> <Compile Include="models\AlarmRecord.cs" /> <Compile Include="models\BaseModel.cs" /> <Compile Include="models\Area.cs" /> <Compile Include="models\LjItem.cs" /> <Compile Include="models\LjItemConfig.cs" /> + <Compile Include="models\LjXcCarrier.cs" /> <Compile Include="models\LjLotCarrier.cs" /> <Compile Include="models\LjLotOnhand.cs" /> <Compile Include="models\LjXcOutTask.cs" /> diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs index e36ba54..65e721b 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/Program.cs @@ -85,12 +85,12 @@ tasks.Add(GetTask(Monitor.MonitorCXJCallMaterialMesTask)); // 鐩戝惉閽㈠寘婊℃枡涓嬬嚎浠诲姟 tasks.Add(GetTask(Monitor.MonitorGBOffLineMesTask)); - // 鐩戝惉鏂滆鍑哄簱浠诲姟琛�- tasks.Add(GetTask(Monitor.MonitorXcOutTask)); + // 鐩戝惉鏂滆浠诲姟琛�+ tasks.Add(GetTask(Monitor.MonitorXcTask)); // 鑷姩琛ュ厖绌哄伐瑁呬换鍔� tasks.Add(GetTask(Monitor.AutoReplenishEmptyPallet)); // 鐩戝惉鎵樼洏鐗╂枡琛ㄣ�鐗╂枡琛紝骞舵洿鏂�- tasks.Add(GetTask(Monitor.MonitorPalletAndMateral)); + /* tasks.Add(GetTask(Monitor.MonitorPalletAndMateral));*/ // 瀹氭椂鏇存柊搴撳瓨涓棿琛� tasks.Add(GetTask(Monitor.UpdateInventoryRegularly,60000)); // 瀹氭椂鎵规鐘舵�琛�diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/AgvController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/AgvController.cs index e65bc46..db26636 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/AgvController.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/AgvController.cs @@ -44,6 +44,7 @@ LogHelper.Info("AGVCallbackEvent Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask"); return new ReturnResult(); } + /// <summary> /// ndc agv杞﹁締鐘舵�鍥炴姤 /// </summary> @@ -68,7 +69,6 @@ WCSCore.OperateHATaskStatus(model); return new ReturnResult(); } - } } 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 9fe06a7..16e19b6 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs @@ -980,7 +980,7 @@ /// <summary> /// AGV鐢宠缁堢偣 /// 椤哄簭 RFID楠岃瘉 -> RFID涓庝换鍔″彿楠岃瘉 -> 鐗╂枡鍚堟牸鐘舵�楠岃瘉 -> 铏氭嫙缁堢偣 - /// 鐢宠绫诲瀷锛�1.铏氭嫙缁堢偣 2.RFID涓庝换鍔′笉鍖归厤 3.鐗╂枡鐘舵�涓嶅悎鏍�+ /// 鐢宠绫诲瀷锛�1.姝e父 2.寮傚父 /// 鍏ュ簱绛栫暐锛氬厛璁$畻搴撳尯鐨勫绉巼锛屽啀璁$畻搴撳尯瀵瑰簲鐨勫叆搴撶珯鍙扮殑浠诲姟鏁帮紝閮藉彇鏈�皬鐨� /// /// 1.纭畾浠诲姟鏄惁鍦ㄦ墽琛屼腑 @@ -1036,7 +1036,8 @@ { WMSHelper.addAlarmRecord("绯荤粺閿欒","楂�, $"AGV鐢宠缁堢偣锛學MS鍐呴儴閿欒锛岄敊璇師鍥狅細{ex.Message}", "AGV"); } - return null; + LogHelper.Info($"鍙樻洿AGV缁堢偣锛歿applyDest}", "AGV"); + return applyDest; } /// <summary> @@ -1050,9 +1051,7 @@ /// <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 == "浣欐枡/绌哄伐瑁呭叆搴�) @@ -1069,8 +1068,7 @@ // 鍙栨秷浠诲姟 ApiHelper.cancelTask(awaitTask.S_CODE); // 淇敼缁堢偣 - agvEndLoc = LocationHelper.GetLoc(awaitTask.S_END_LOC); - wmsEndLoc = agvEndLoc; + endLoc = LocationHelper.GetLoc(awaitTask.S_END_LOC); mst.S_TYPE = "鍙枡鍑哄簱浠诲姟"; } } @@ -1078,36 +1076,33 @@ } } - 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> @@ -1288,25 +1283,9 @@ return null; } } - } - if (agvEndLoc != null && wmsEndLoc != null) - { - destLoc = agvEndLoc.S_CODE; - cst.S_END_LOC = agvEndLoc.S_CODE; - cst.S_END_AREA = agvEndLoc.S_AREA_CODE; - WCSHelper.UpdateEndLoc(cst); - - mst.S_END_LOC = wmsEndLoc.S_CODE; - 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 (mesTask != null) { if (mst.S_TYPE.Contains("鍙枡鍑哄簱浠诲姟")) { @@ -1321,7 +1300,7 @@ var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP); if (logicConfig != null) { - triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig ,mesTask); + triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig, mesTask); } else { @@ -1329,6 +1308,18 @@ } } } + } + + if (agvEndLoc != null && wmsEndLoc != null) + { + destLoc = agvEndLoc.S_CODE; + cst.S_END_LOC = agvEndLoc.S_CODE; + cst.S_END_AREA = agvEndLoc.S_AREA_CODE; + WCSHelper.UpdateEndLoc(cst); + + mst.S_END_LOC = wmsEndLoc.S_CODE; + mst.S_END_AREA = wmsEndLoc.S_AREA_CODE; + WMSHelper.UpdateTaskEnd(mst); } return destLoc; } @@ -1357,7 +1348,7 @@ if (locCntrRels.Count > 0) { cntrCode = locCntrRels[0].S_CNTR_CODE; - middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 1, 2); + middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 2, 2); if (middleLoc != null) { // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�@@ -1456,136 +1447,164 @@ /// <param name="mesTaskId"></param> public static void callMaterialXC(string materialCode, string endLocCode, int mesTaskId) { - // 1.鏌ヨ鐜甫搴撶墿鏂欏簱瀛�- DateTime inStockTimeXc = DateTime.MinValue; - List<CntrItemRel> cntrItemRelsXc = new List<CntrItemRel>(); - if (cntrItemRelsXc.Count > 0) - { - inStockTimeXc = cntrItemRelsXc[0].T_INBOUND_TIME; - } - - // 2.鏌ヨ涓浆搴撳簱瀛�- DateTime inStockTime = DateTime.MinValue; - var cntrItemRels = WMSHelper.getZZKInventoryInfo(materialCode); - if (cntrItemRels.Count > 0) - { - inStockTime = cntrItemRels[0].T_INBOUND_TIME; - } - - // 3.鏍规嵁鍏堣繘鍏堝嚭璁$畻鍑哄簱鐨勭墿鏂欐槸鐜甫搴�杩樻槸涓浆搴� var mesTask = WMSHelper.GetLjMesTaskById(mesTaskId); - if (inStockTime >= inStockTimeXc) + if (mesTask != null) { - //鏂滆鐗╂枡鍑哄簱 - if (cntrItemRelsXc.Count > 0) + // 1.鏌ヨ鐜甫搴撶墿鏂欏簱瀛樻渶鏃╁叆搴撴椂闂�+ DateTime inStockTimeXc = DateTime.MinValue; + + // 2.鏌ヨ涓浆搴撳簱瀛�+ DateTime inStockTime = WMSHelper.getZZKInventoryInfo(materialCode); + + // 3.鏍规嵁鍏堣繘鍏堝嚭璁$畻鍑哄簱鐨勭墿鏂欐槸鐜甫搴�杩樻槸涓浆搴�+ if (inStockTime >= inStockTimeXc) { - // 4.灏哅ES浠诲姟鍐欏叆鐜甫搴撲换鍔′腑闂磋〃 - WMSHelper.addLjXcTask(mesTask); - } - } - else - { - //涓浆搴撶墿鏂欏嚭搴�- if (cntrItemRels.Count > 0) - { - var cntrItemRel = cntrItemRels[0]; - var locCntrRel = LocationHelper.GetLocCntrByCntr(cntrItemRel.S_CNTR_CODE); - if (locCntrRel != null) + Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); + if (endLoc != null) { - var endLoc = LocationHelper.GetLoc(locCntrRel.S_LOC_CODE); - 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 startLoc = WMSHelper.getOutStockStartLoc(null, materialCode); - if (startLoc != null) + Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); + if (endLoc != null) { - var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); - if (locCntrRels.Count > 0) + middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 2, 2); + if (middleLoc != null) { - var cntrCode = cntrItemRel.S_CNTR_CODE; - middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 1, 2); - if (middleLoc != null) + // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�+ var wmsTask = new WMSTask() { - // 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_CNTR_CODE = cntrCode, - S_CODE = WMSHelper.GenerateTaskNo(), + 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_CODE = mesTaskId.ToString(), - S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, + 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 (WMSHelper.CreateWmsTask(wmsTask)) + + if (WCSHelper.CreateTask(wcsTask)) { - 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, - }; + // 璧风偣銆佺粓鐐瑰姞閿�+ 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); - } - - // 棰勫垱寤轰簩娈典换鍔�- 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); + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); } - } - else - { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝搴撳尯{startLoc.S_AREA_CODE}鏈煡璇㈠埌鍙敤鐨勬帴椹充綅"); + + // 棰勫垱寤轰簩娈典换鍔�+ 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_CODE}寮傚父锛岀己灏戝鍣ㄤ俊鎭�); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝搴撳尯{startLoc.S_AREA_CODE}鏈煡璇㈠埌鍙敤鐨勬帴椹充綅"); } } else { - mesTask.AWAIT_MSG = "搴撳瓨涓嶈冻"; - WMSHelper.updateLjMesTask(mesTask); - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝鐗╂枡:{materialCode}搴撳瓨涓嶈冻"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝寮�璐т綅:{startLoc.S_CODE}寮傚父锛岀己灏戝鍣ㄤ俊鎭�); } + } + else + { + mesTask.AWAIT_MSG = "搴撳瓨涓嶈冻"; + WMSHelper.updateLjMesTask(mesTask); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏け璐ワ紝鐗╂枡:{materialCode}搴撳瓨涓嶈冻"); } } } @@ -1635,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 @@ -1704,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, @@ -1738,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, @@ -1762,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, @@ -2134,6 +2153,83 @@ 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 { diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/MoboxController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/MoboxController.cs index 6652b31..70ab6a2 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/MoboxController.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/MoboxController.cs @@ -24,10 +24,10 @@ [HttpPost] public ResponseResult manualStorage(ManualStorageModel model) { - LogHelper.Info("manualStorage Request锛� + JsonConvert.SerializeObject(model), "Mobox"); + LogHelper.Info("浜哄伐鍏ュ簱 Request锛� + JsonConvert.SerializeObject(model), "Mobox"); ResponseResult result = new ResponseResult(); result = ApiHelper.manualStorage(model); - LogHelper.Info("manualStorage response锛� + JsonConvert.SerializeObject(model), "Mobox"); + LogHelper.Info("浜哄伐鍏ュ簱 response锛� + JsonConvert.SerializeObject(model), "Mobox"); return result; } @@ -39,10 +39,10 @@ [HttpPost] public ResponseResult manualDelivery(ManualDeliveryModel model) { - LogHelper.Info("manualDelivery Request锛� + JsonConvert.SerializeObject(model), "Mobox"); + LogHelper.Info("浜哄伐鍑哄簱 Request锛� + JsonConvert.SerializeObject(model), "Mobox"); ResponseResult result = new ResponseResult(); result = ApiHelper.manualDelivery(model); - LogHelper.Info("manualDelivery response锛� + JsonConvert.SerializeObject(model), "Mobox"); + LogHelper.Info("浜哄伐鍑哄簱 response锛� + JsonConvert.SerializeObject(model), "Mobox"); return result; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs index 007c3b2..0ef3414 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs @@ -159,7 +159,7 @@ /// <param name="model"></param> /// <returns></returns> [HttpPost] - /* [Route("notifyAlarm")]*/ + /* [Route("notifyAlarm")] */ public ResponseResult unBindingLoc(LocModel model) { LogHelper.Info("UnBindingLoc 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); @@ -221,6 +221,42 @@ return result; } + + //--------------------------------- 鎻愪緵缁欐枩瑁佺殑鎺ュ彛 -------------------------------- + + /// <summary> + /// 9.鏂滆鍑哄簱浠诲姟 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + /* [Route("notifyAlarm")]*/ + public ResponseResult createXcItemOutStockTask(XcItemOutStockModel model) + { + LogHelper.Info("XcItemOutStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); + ResponseResult result = new ResponseResult(); + result = ApiHelper.createXcItemOutStockTask(model); + LogHelper.Info("XcItemOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(result), "WMS"); + return result; + } + + public class XcItemOutStockModel + { + public string reqId { get; set; } + public string reqTime { get; set; } + public string startLoc { get; set; } + public string eqNo { get; set; } // 璁惧鍙�+ public string palletId { get; set; } // 鎵樼洏鍙�+ /*public string lotName { get; set; } // 鎵规鏉$爜 + public string yclBatch { get; set; } // 鍘熸潗鏂欐壒娆″彿 + public string materialCode { get; set; } // 鐗╂枡缂栫爜 + public float qty { get; set; } // 鐗╂枡鏁伴噺 + public string productionDate { get; set; } // 鐢熶骇鏃ユ湡锛坹yyy-MM-dd HH:mm:ss锛�+ public string qcStatus { get; set; } // 妫�獙鐘舵� 0锛氭湭妫�獙 1锛氬悎鏍硷紝2锛氫笉鍚堟牸 + public string shelfLifeDate { get; set; } // 鏈�暱鍋滄斁鏃ユ湡 + public string minShelfLife_Date { get; set; } // 鏈�皬鍋滄斁鏃ユ湡*/ + } + public class LocStateFeedBackModel { public string reqId { get; set; } 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 540ba02..b242eb1 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json @@ -82,7 +82,7 @@ "areaName": "閽㈠寘搴�闈炵洿杩�", "cntrType": [ 7 ], "type": 2 - }, + }, { "areaCode": "ZZFZLCK", "areaName": "涓浆搴�闈炵洿杩�", 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 9436f87..951bf44 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs @@ -62,21 +62,13 @@ if (lineSideLoc != null) { LogHelper.Info($"鎴愬瀷鏈哄彨鏂欎换鍔★紝MES浠诲姟ID锛歿mesTask.ID}", "WMS"); - - // 2.1鎴愭柊鏈哄彨鏂�鏂滆) if (mesTask.PALLET_TYPE == "5" || mesTask.PALLET_TYPE == "6") { + // 2.1鎴愭柊鏈哄彨鏂�鏂滆) var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID); if (xcTask == null) { ApiHelper.callMaterialXC(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID); - } - else - { - mesTask.RETURN_CODE = xcTask.RETURN_CODE; - mesTask.RECEIVE_FLAG = xcTask.RECEIVE_FLAG; - mesTask.RECEIVE_DATE = xcTask.RECEIVE_DATE; - WMSHelper.updateLjMesTask(mesTask); } } else @@ -91,73 +83,53 @@ } /// <summary> - /// 鐩戝惉XC鍑哄簱浠诲姟涓棿琛�- /// 璇诲彇鏂滆绔嬪簱鍑哄簱浠诲姟琛紝鏌ヨ浠诲姟鏄惁鎵ц瀹屾垚锛屽畬鎴愬垯锛岃Е鍙慉GV浠诲姟 + /// 鐩戝惉浠诲姟涓棿琛� /// </summary> - public static void MonitorXcOutTask() + public static void MonitorXcTask() { - var xcOutTasks = WMSHelper.getLjXcOutTask("PENDING", "2"); - foreach (var outTask in xcOutTasks) + var ljMesTasks = WMSHelper.GetLjMesTaskListHD(); + foreach (var mesTask in ljMesTasks) { - var mesTask = WMSHelper.GetLjMesTaskById(outTask.ID); - if (mesTask != null && mesTask.RETURN_CODE == "2") + var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID); + if (xcTask != null && xcTask.RETURN_CODE != mesTask.RETURN_CODE) { - Location startLoc = LocationHelper.GetLoc(outTask.POSITION_ID); - if (startLoc == null) + if (xcTask.RETURN_CODE == "3") { - WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏嚭搴�鏂滆)锛岃捣鐐�{outTask.POSITION_ID}鍦╓MS绯荤粺涓笉瀛樺湪"); - } - Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP); - if (endLoc != null) - { - var wmsTask = WMSHelper.GetWmsTaskByCntr(outTask.PALLET_ID); - if (wmsTask == null) + var wcsTask = WCSHelper.GetTask(xcTask.AGVORDER_ID); + if (wcsTask != null) { - // 1.鍒涘缓鏂滆-鎴愭柊鏈哄彨鏂欎綔涓�- wmsTask = new WMSTask() + var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE); + if (wmsTask != null) { - S_CNTR_CODE = outTask.PALLET_ID, - 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 = mesTask.ID.ToString(), - S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�鏂滆)", - T_START_TIME = DateTime.Now, - }; - if (WMSHelper.CreateWmsTask(wmsTask)) - { - WCSTask wcsTask = new WCSTask() + Location startLoc = LocationHelper.GetLoc(xcTask.POSITION_ID); + if (startLoc != 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, - 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, - }; + wcsTask.S_CNTR_CODE = xcTask.PALLET_ID; + wcsTask.S_START_LOC = startLoc.S_CODE; + wcsTask.S_START_AREA = startLoc.S_AREA_CODE; + wcsTask.N_B_STATE = 0; + wcsTask.S_B_STATE = "绛夊緟"; + WCSHelper.UpdateWcsTask(wcsTask); - if (WCSHelper.CreateTask(wcsTask)) - { - // 璧风偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); - - // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.S_CNTR_CODE = xcTask.PALLET_ID; + wmsTask.S_START_LOC = startLoc.S_CODE; + wmsTask.S_START_AREA = startLoc.S_AREA_CODE; wmsTask.N_B_STATE = 1; - WMSHelper.UpdateTaskState(wmsTask); + wmsTask.S_B_STATE = "鎵ц"; + WMSHelper.UpdateWmsTask(wmsTask); + + // 鏌ヨ鎵樼洏鐗╂枡淇℃伅琛�+ WMSHelper.updateCarrier(mesTask.PALLET_ID); } } } } + + mesTask.POSITION_ID = xcTask.POSITION_ID; + mesTask.RETURN_CODE = xcTask.RETURN_CODE; + mesTask.YCL_BATCH = xcTask.YCL_BATCH; + mesTask.PALLET_ID = xcTask.PALLET_ID; + WMSHelper.updateLjMesTask(mesTask); } } } @@ -260,6 +232,7 @@ WMSHelper.updateMateral(); } + /// <summary> /// 瀹氭椂鏇存柊搴撳瓨淇℃伅 鏇存柊棰戠巼锛�1鍒嗛挓 /// </summary> @@ -272,13 +245,11 @@ .Where((a,b) => a.N_CURRENT_NUM > 0 && b.S_CNTR_CODE != null && areaCodeList.Contains(a.S_AREA_CODE) ) .ToList(); + // 鍒犻櫎鎵�湁搴撳瓨淇℃伅锛岃繘琛岄噸缃�+ db.Deleteable<LjLotOnhand>().ExecuteCommand(); + foreach (var loc in locations) { - var lotOnhand = db.Queryable<LjLotOnhand>().Where(a => a.STORAGE_LOCATION == loc.S_CODE).First(); - if (lotOnhand != null) { - db.Deleteable<LjLotOnhand>().Where(a => a.ID == lotOnhand.ID).ExecuteCommand(); - } - var locCntrRels = LocationHelper.GetLocCntr(loc.S_CODE); if (locCntrRels != null && locCntrRels.Count > 0) { 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 fe6838e..c5e9168 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs @@ -103,14 +103,13 @@ if (container != null) { LogHelper.Info($"瀹瑰櫒鐨勫紓甯哥姸鎬佷负锛歿container.N_E_STATE}", "AGV"); - string agvEndLoc = null; if (container.N_E_STATE == 0) { - agvEndLoc = ApiHelper.AGVApplyDest(model.No, cst.S_START_LOC, cst.S_CNTR_CODE, "1"); + ApiHelper.AGVApplyDest(model.No, cst.S_START_LOC, cst.S_CNTR_CODE, "1"); } else { - agvEndLoc = ApiHelper.AGVApplyDest(model.No, cst.S_START_LOC, cst.S_CNTR_CODE, "2"); + ApiHelper.AGVApplyDest(model.No, cst.S_START_LOC, cst.S_CNTR_CODE, "2"); } ChangeParamModel paramModel = new ChangeParamModel() @@ -120,7 +119,6 @@ param = $"{model.No};{cst.S_START_LOC};{cst.S_END_LOC};4;512;0;1" }; NDCApi.ChangeOrderParam(paramModel); - LogHelper.Info($"鍙樻洿AGV缁堢偣锛歿agvEndLoc}", "AGV"); } else { @@ -172,13 +170,11 @@ // 涓嶅悎鏍煎搧鍥炲簱 ApiHelper.rejectReturnStock(mst, cst); } - else - { - // 濡傛灉浣滀笟鍚嶇О涓烘垚鍨嬫満鍙枡鍑哄簱浠诲姟锛屽垯瑙﹀彂浣欐枡/绌烘墭鎼繍浠诲姟 - var sideLocConfig = WMSHelper.getReturnMaterialLocCode(mst.S_END_LOC); - ApiHelper.returnMaterialOrEmptyTray(sideLocConfig.S_RETURN_LOC_CODE, sideLocConfig.EQP); - } } + + // 濡傛灉浣滀笟鍚嶇О涓烘垚鍨嬫満鍙枡鍑哄簱浠诲姟锛屽垯瑙﹀彂浣欐枡/绌烘墭鎼繍浠诲姟 + var sideLocConfig = WMSHelper.getReturnMaterialLocCode(mst.S_END_LOC); + ApiHelper.returnMaterialOrEmptyTray(sideLocConfig.S_RETURN_LOC_CODE, sideLocConfig.EQP); } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItem.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItem.cs index 3e74990..885ef70 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItem.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItem.cs @@ -24,5 +24,16 @@ public string CREATION_DATE { get; set; } //鍒涘缓鏃ユ湡 public string RECEIVE_FLAG { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙� public string RECEIVE_DATE { get; set; } //璇诲彇鏃ユ湡 璇诲彇鍚庢洿鏂�+ + /*public int ID { get; set; } //涓婚敭 + public string Material_Code { get; set; } //鐗╂枡缂栫爜 + public string Material_Name { get; set; } //鐗╂枡绠�О + public string Spec { get; set; } //瑙勬牸 + public string Model { get; set; } //鍨嬪彿 + public string Unit { get; set; } //鍗曚綅 + public string Memo { get; set; } //澶囨敞 + public string creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string receive_flag { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙�+ public string receive_date { get; set; } //璇诲彇鏃ユ湡 璇诲彇鍚庢洿鏂�/ } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItemConfig.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItemConfig.cs index b840031..cfebee6 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItemConfig.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjItemConfig.cs @@ -24,5 +24,15 @@ public string RECEIVE_FLAG { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙� public DateTime RECEIVE_DATE { get; set; } //璇诲彇鏃ユ湡 + /*public int ID { get; set; } //涓婚敭 + public string Material_Code { get; set; } //鐗╂枡缂栫爜 + public string Material_Name { get; set; } //鐗╂枡鍚嶇О + public string Pallet_Type { get; set; } //鎵樼洏绫诲瀷 + public string QTY { get; set; } //瀹夊叏搴撳瓨閲�宸ヨ鏁伴噺 + public string Transfer_Flag { get; set; } //杞繍鏍囪 Y锛氫紭鍏堣浆杩�N: + public DateTime creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string receive_flag { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙�+ public DateTime receive_date { get; set; } //璇诲彇鏃ユ湡*/ + } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotCarrier.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotCarrier.cs index e483aa3..9034570 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotCarrier.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotCarrier.cs @@ -28,5 +28,20 @@ public string CREATION_DATE { get; set; } //鍒涘缓鏃ユ湡 public string RECEIVE_FLAG { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙� public string RECEIVE_DATE { get; set; } //璇诲彇鏃ユ湡 + + + /*public int ID { get; set; } //涓婚敭 + public string Pallet_Id { get; set; } //鎵樼洏鍙�+ public string lot_name { get; set; } //鎵规鏉$爜 (鎵规琛ㄦ洿鏂� + public string YCL_BATCH { get; set; } //鍘熸潗鏂欐壒娆″彿 + public string MaterialCode { get; set; } //鐗╂枡缂栫爜 + public int QTY { get; set; } //鐗╂枡鏁伴噺 + public string Production_date { get; set; } //鐢熶骇鏃ユ湡 + public string QC_Status { get; set; } //妫�獙鐘舵� + public string ShelfLife_Date { get; set; } //鏈�暱鍋滄斁鏃ユ湡 + public string MinShelfLife_Date { get; set; } //鏈�皬鍋滄斁鏃ユ湡 + public string creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string receive_flag { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙�+ public string receive_date { get; set; } //璇诲彇鏃ユ湡*/ } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOnhand.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOnhand.cs index cd726eb..2029ae7 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOnhand.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOnhand.cs @@ -25,5 +25,20 @@ public string IN_DATE { get; set; } //鍏ュ簱鏃堕棿 public DateTime CREATION_DATE { get; set; } //鍒涘缓鏃ユ湡 public string WAREHOUSE_TYPE { get; set; } //鍖哄垎涓嶅悓鍘傚锛�/鎬濆皵鐗癸紝2/鏉弶锛�+ + + + + /*public int ID { get; set; } //涓婚敭 + public string Material_Code { get; set; } //鐗╂枡缂栫爜 + public string lot_name { get; set; } //鎵规鏉$爜 + public string Pallet_Id { get; set; } //鎵樼洏鍙�+ public string Storage_Location { get; set; } //搴撲綅 + public string QC_Status { get; set; } //鐘舵� + public string Unit { get; set; } //鍗曚綅 + public float QTY { get; set; } //鏁伴噺 + public string In_Date { get; set; } //鍏ュ簱鏃堕棿 + public DateTime creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string warehouse_type { get; set; } //鍖哄垎涓嶅悓鍘傚锛�/鎬濆皵鐗癸紝2/鏉弶锛�/ } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOutTask.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOutTask.cs index af7b3b3..0ce6a41 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOutTask.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotOutTask.cs @@ -29,5 +29,21 @@ public string RECEIVE_DATE { get; set; } //璇诲彇鏃ユ湡 public string TASK_STATUS { get; set; } //浠诲姟鎵ц鐘舵� 1锛氭墽琛屼腑锛�锛氬畬鎴� 3锛氭満鍙板凡杩斿洖 public string EQP { get; set; } //鏈哄彴缂栧彿 + + + /*public int ID { get; set; } //涓婚敭 + public string Material_Code { get; set; } //鐗╂枡缂栫爜 + public string lot_name { get; set; } //鎵规鏉$爜 + public string Pallet_Id { get; set; } //鎵樼洏鍙�+ public string Position_Id { get; set; } //鐐逛綅缂栧彿 + public string QC_Status { get; set; } //鐘舵� + public string Unit { get; set; } //鍗曚綅 + public int QTY { get; set; } //鏁伴噺 + public string Out_Date { get; set; } //鍑哄簱鏃堕棿 + public string creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string receive_flag { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙�+ public string receive_date { get; set; } //璇诲彇鏃ユ湡 + public string Task_Status { get; set; } //浠诲姟鎵ц鐘舵� 1锛氭墽琛屼腑锛�锛氬畬鎴� 3锛氭満鍙板凡杩斿洖 + public string EQP { get; set; } //鏈哄彴缂栧彿*/ } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotStatus.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotStatus.cs index 970d811..adc5567 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotStatus.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjLotStatus.cs @@ -25,5 +25,20 @@ public DateTime CREATION_DATE { get; set; } //鍒涘缓鏃ユ湡 public string RECEIVE_FLAG { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙� public DateTime RECEIVE_DATE { get; set; } //璇诲彇鏃ユ湡 + + + + + /* public int ID { get; set; } //涓婚敭 + public string Material_Code { get; set; } //鐗╂枡缂栫爜 + public string lot_name { get; set; } //鎵规鏉$爜 + public string QC_Status { get; set; } //鐘舵� + public string Unit { get; set; } //鍗曚綅 + public string QTY { get; set; } //鏁伴噺 + public string ShelfLife_Date { get; set; } //鏈�暱鍋滄斁鏃ユ湡 浼氬彉鏇�+ public string MinShelfLife_Date { get; set; } //鏈�皬鍋滄斁鏃ユ湡 浼氬彉鏇�+ public DateTime creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string receive_flag { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙�+ public DateTime receive_date { get; set; } //璇诲彇鏃ユ湡*/ } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs index e58d017..a8cdeb0 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/LjMesTask.cs @@ -33,5 +33,29 @@ public string AWAIT_MSG { get; set; } // 绛夊緟娑堟伅 public bool IS_FINISH { get; set; } // 鏄惁瀹屾垚涓婃枡 public string RECEIVE_MSG { get; set; } //閿欒淇℃伅 閿欒鏃讹紝AGV鍐欏叆璇︾粏閿欒淇℃伅 + + + + + + /* public int ID { get; set; } //涓婚敭 + public string Position_Id { get; set; } //鐐逛綅缂栧彿 + public string Return_Code { get; set; } //鍙嶉鏍囪瘑(AGV绯荤粺鍐欏叆) 0:榛樿鍊�1锛氫换鍔″凡鐢熸垚 2锛氫换鍔¤繍琛屼腑 3锛氫换鍔″畬鎴�4锛氫换鍔″け璐�5锛氫换鍔″彇娑�6锛氬叾浠栭敊璇�+ public string Msg_Type { get; set; } //娑堟伅绫诲瀷 0锛氳鏂� 1锛氳繑杞�+ public string Pallet_Type { get; set; } //鎵樼洏绫诲瀷 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘 + public string Material_Name { get; set; } //鐗╂枡鍚嶇О 瑕佹枡鏃剁粰 + public string Material_Code { get; set; } //鐗╂枡缂栫爜 瑕佹枡鏃剁敤锛岃鏂欐椂锛屽鏋滅墿鏂欑紪鐮佷负绌猴紝浠h〃瑕佺┖宸ヨ + public int QTY { get; set; } //鏁伴噺 杩旇溅鏃剁敤锛屾暟閲忎负0浠h〃杩旂┖杞︼紝鏁伴噺涓�浠h〃杩旀弧鏂欙紝鏁伴噺涓�1浠h〃杩斾綑鏂欍� 鐗╂枡淇℃伅鍦ㄣ�鎵樼洏涓庝俊鎭搴旇〃銆戜腑 + public string Ycl_batch { get; set; } //鍘熸潗鏂欐壒娆″彿 + public string Pallet_Id { get; set; } //鎵樼洏鍙�杩旇溅鏃剁敤锛屾牴鎹墭鐩樺彿鏌ユ壘銆愭墭鐩樹笌淇℃伅瀵瑰簲琛ㄣ�涓殑淇℃伅 + public string AGVOrder_ID { get; set; } //AGV浠诲姟鍙�MES涓嶇敤鍐欏叆锛孉GV浣跨敤 + public string creation_date { get; set; } //鍒涘缓鏃ユ湡 + public string receive_flag { get; set; } //璁板綍鐘舵� PENDING锛氶粯璁�COMPLETE锛氳鍙�+ public string receive_date { get; set; } //璇诲彇鏃ユ湡 璇诲彇鍚庢洿鏂�+ public string EQP { get; set; } //鏈哄彴缂栧彿 + public string Plan_Id { get; set; } //璁″垝鍙�+ public string Await_Msg { get; set; } // 绛夊緟娑堟伅 + public bool Is_Finish { get; set; } // 鏄惁瀹屾垚涓婃枡 + public string Receive_Msg { get; set; } //閿欒淇℃伅 閿欒鏃讹紝AGV鍐欏叆璇︾粏閿欒淇℃伅*/ } } 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 5ad8998..739910e 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; +using static HH.WCS.Mobox3.FJJT.dispatch.XcDispatch; namespace HH.WCS.Mobox3.FJJT.process { internal class TaskProcess { @@ -62,42 +63,89 @@ internal static void OperateReq(string no, int state, string forkliftNo, string extData) { LogHelper.Info($"寮�瀹夊叏璇锋眰锛屼换鍔″彿:{no},璇锋眰鐮�{state}", "HosttoagvTask"); var cst = WCSHelper.GetTask(no); - var taskAction = WCSHelper.getActionRecord(no, state); - if (taskAction != null) + if (cst != null) { - LogHelper.Info($"鍐嶆瀹夊叏璇锋眰锛屾煡璇㈣澶囨槸鍚﹀弽棣�, "HosttoagvTask"); - if (taskAction.N_S_STATUS == 1) + var taskAction = WCSHelper.getActionRecord(no, state); + if (taskAction != null) { - LogHelper.Info($"鍐嶆瀹夊叏璇锋眰锛岃澶囧凡鍙嶉", "HosttoagvTask"); - NDCApi.ChangeOrderParam(no, 8, "1"); + LogHelper.Info($"鍐嶆瀹夊叏璇锋眰锛屾煡璇㈣澶囨槸鍚﹀弽棣�, "HosttoagvTask"); + if (taskAction.N_S_STATUS == 1) + { + LogHelper.Info($"鍐嶆瀹夊叏璇锋眰锛岃澶囧凡鍙嶉", "HosttoagvTask"); + NDCApi.ChangeOrderParam(no, 8, "1"); + } } - } - else - { - LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰锛屼换鍔″彿:{no},璇锋眰鐮�{state}", "HosttoagvTask"); - bool result = false; - if (state == 1101) + else { - result = WCSDispatch.safetyInteraction(cst.S_CODE ,cst.S_START_LOC, "1"); //璇锋眰鍙栬揣锛�- } - if (state == 1102) - { - result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "2"); //璇锋眰杩旇揣 - } - if (state == 1103) - { - result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "3"); //鍙栬揣瀹屾垚鍏佽绂诲紑 - } - if (state == 1104) - { - result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "4"); //鏀捐揣瀹屾垚鍏佽绂诲紑 - } + LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰锛屼换鍔″彿:{no},璇锋眰鐮�{state}", "HosttoagvTask"); + bool result = false; + if (state == 1101) + { + if (cst.S_START_AREA == "") + { + result = XcDispatch.CanOut(new SafetyRequest() { stnNo = cst.S_START_LOC, taskNo = cst.S_CODE }); + if (result) + { + NDCApi.ChangeOrderParam(no, 8, "1"); + } + } + else + { + result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "1"); //璇锋眰鍙栬揣锛�+ } + } + if (state == 1102) + { + if (cst.S_START_AREA == "") + { + result = XcDispatch.CanIn(new SafetyRequest() { stnNo = cst.S_END_LOC, taskNo = cst.S_CODE }); + if (result) + { + NDCApi.ChangeOrderParam(no, 8, "1"); + } + } + else + { + result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_END_LOC, "2"); //璇锋眰鏀捐揣 + } + } + if (state == 1103) + { + if (cst.S_START_AREA == "") + { + result = XcDispatch.loadComplete(new SafetyRequest() { stnNo = cst.S_END_LOC, taskNo = cst.S_CODE }); + if (result) + { + NDCApi.ChangeOrderParam(no, 8, "1"); + } + } + else + { + result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "3"); //鍙栬揣瀹屾垚鍏佽绂诲紑 + } + } + if (state == 1104) + { + if (cst.S_START_AREA == "") + { + result = XcDispatch.putComplete(new SafetyRequest() { stnNo = cst.S_END_LOC, taskNo = cst.S_CODE }); + if (result) + { + NDCApi.ChangeOrderParam(no, 8, "1"); + } + } + else + { + result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_END_LOC, "4"); //鏀捐揣瀹屾垚鍏佽绂诲紑 + } + } - // 瀹夊叏璇锋眰鍙戦�鎴愬姛锛屾坊鍔犱换鍔″姩浣滆褰�- if (result) - { - WCSHelper.AddActionRecord(no, state, forkliftNo, extData); - LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰鎴愬姛", "HosttoagvTask"); + // 瀹夊叏璇锋眰鍙戦�鎴愬姛锛屾坊鍔犱换鍔″姩浣滆褰�+ if (result) + { + WCSHelper.AddActionRecord(no, state, forkliftNo, extData); + LogHelper.Info($"棣栨杩涜瀹夊叏璇锋眰鎴愬姛", "HosttoagvTask"); + } } } } @@ -143,26 +191,28 @@ /// <param name="mst"></param> internal static bool SendTask(WCSTask mst) { var result = false; - var start = "0"; var end = "0"; if (mst.N_B_STATE == 0) { if (mst.S_SCHEDULE_TYPE == "NDC") { - start = LocationHelper.GetAgvSite(mst.S_START_LOC); - end = LocationHelper.GetAgvSite(mst.S_END_LOC); - - var dic = new List<param>(); - dic.Add( new param() { name = "No" , value = ""}); - dic.Add( new param() { name = "From", value = ""}); - dic.Add( new param() { name = "To", value = ""}); - dic.Add( new param() { name = "3" , value = "4"}); - dic.Add( new param() { name = "4" , value = "512"}); - dic.Add( new param() { name = "5" , value = "0"}); - var res = NDCApi.AddOrderNew(1,mst.N_PRIORITY,mst.S_CODE,dic); - if (res != null && res.err_code == 0 ) { - //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 - mst.N_B_STATE = 1; - WCSHelper.UpdateStatus(mst); - result = true; + var startLoc = LocationHelper.GetLoc(mst.S_START_LOC); + var endLoc = LocationHelper.GetLoc(mst.S_END_LOC); + if (startLoc != null && endLoc != null) + { + var dic = new List<param>(); + dic.Add(new param() { name = "No", value = mst.S_CODE }); + dic.Add(new param() { name = "From", value = mst.S_START_LOC }); + dic.Add(new param() { name = "To", value = mst.S_END_LOC }); + dic.Add(new param() { name = "3", value = "4" }); + dic.Add(new param() { name = "4", value = "512" }); + dic.Add(new param() { name = "5", value = "0" }); + var res = NDCApi.AddOrderNew(1, mst.N_PRIORITY, mst.S_CODE, dic); + if (res != null && res.err_code == 0) + { + //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 + mst.N_B_STATE = 1; + WCSHelper.UpdateStatus(mst); + result = true; + } } } else if (mst.S_SCHEDULE_TYPE == "WCS") { @@ -175,7 +225,6 @@ mst.N_B_STATE = 1; WCSHelper.UpdateStatus(mst); } - } return result; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/SqlHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/SqlHelper.cs index bc0eb0c..2829ef5 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/SqlHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/SqlHelper.cs @@ -142,7 +142,7 @@ db.Aop.OnExecutingChangeSql = (sql, pars) => //鍙互淇敼SQL鍜屽弬鏁扮殑鍊� { - if (db.CurrentConnectionConfig.DbType == DbType.Oracle && pars.Any()) + if (pars != null && db.CurrentConnectionConfig.DbType == DbType.Oracle && pars.Any()) { var input = sql; Stack<int> stack = new Stack<int>(); 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 49e4e08..e05968b 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,6 @@ var date = DateTime.Now.ToString("yyMMdd"); return $"TP{date}{id.ToString().PadLeft(4, '0')}"; } - - /// <summary> - /// TN_ContainerHelper.test("4L澶╃劧姘寸瑁�鍏�, 50, "335ml涓滄柟鏍戝彾15鍏�, 30); - /// </summary> - /// <param name="item1"></param> - /// <param name="qty1"></param> - /// <param name="item2"></param> - /// <param name="qty2"></param> - //internal static void test(string item1, int qty1, string item2, int qty2) { - // var db = new SqlHelper<object>().GetInstance(); - // var cntr = db.Queryable<TN_Container>().Includes(a => a.CntrItemRelList). - // Where(a => a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item1 && int.Parse(b.F_QTY) > qty1) > 0 - // && a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item2 && int.Parse(b.F_QTY) > qty2) > 0).First(); - //} /// <summary> /// 鍒ゆ柇瀹瑰櫒鏄惁鏈夌墿鏂欎俊鎭�@@ -44,27 +30,6 @@ return db.Queryable<LocCntrRel>().Count(a => a.S_LOC_CODE.Trim() == cntr) == 0; } - - /*internal static bool AddCntr(string cntrCode, string itemCode) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var TN_Container = new Container { S_CODE = cntrCode }; - var cntrItemRel = new CntrItemRel { S_CNTR_CODE = cntrCode, S_ITEM_CODE = itemCode }; - try { - db.BeginTran(); - - db.Insertable<Container>(TN_Container).ExecuteCommand(); - db.Insertable<CntrItemRel>(cntrItemRel).ExecuteCommand(); - - db.CommitTran(); - res = true; - } - catch (Exception ex) { - db.RollbackTran(); - - } - return res; - }*/ internal static bool AddCntr(string cntrCode ,int detallCount = 0) { @@ -159,58 +124,11 @@ return db.Updateable(cntrItem).ExecuteCommand()>0; } - /// <summary> - /// 鐗╂枡淇℃伅缁戝畾鍒版弧瀹瑰櫒涓�- /// </summary> - /// <param name="cntrCode"></param> - /// <param name="itemCode"></param> - /// <param name="batchNo"></param> - /// <param name="qty"></param> - /// <returns></returns> - internal static bool BindCntrItem(Container cntr, string itemCode, string batchNo, float qty) { - var res = false; - var db = new SqlHelper<object>().GetInstance(); - try { - db.BeginTran(); - //1.鏌ョ湅鏄惁鏈夌浉鍚岀墿鏂欐壒娆$殑淇℃伅锛屽鏋滄湁瑕佺疮鍔狅紝涓嶅悓鎵规鐨勫彲浠ュ垎寮�- var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == itemCode && a.S_BATCH_NO == batchNo).First(); - if (cir != null) { - cir.F_QTY += qty; - db.Updateable(cir).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand(); - } - else { - //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�- 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(); - } - 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}).ExecuteCommand(); - - db.CommitTran(); - res = true; - } - catch (Exception ex) { - db.RollbackTran(); - Console.WriteLine(ex.Message); - } - - return res; - } - - - - - internal static bool UpdateCntr(Container container) { var db = new SqlHelper<object>().GetInstance(); return db.Updateable(container).ExecuteCommand()>0; } - - - /// <summary> /// 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 02fa96c..9d9103f 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs @@ -25,6 +25,7 @@ { var res = false; var db = new SqlHelper<WCSTask>().GetInstance(); + task.T_MODIFY = DateTime.Now; res = db.Updateable(task).ExecuteCommand() > 0; return res; } 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 7acb4b7..d88c163 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs @@ -11,6 +11,7 @@ using System.Globalization; using System.Linq; using System.Linq.Expressions; +using System.Numerics; using System.Reflection; using System.Runtime.ConstrainedExecution; using System.Threading.Tasks; @@ -135,7 +136,13 @@ task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE); db.Updateable<WMSTask>(task).UpdateColumns(a => new { a.N_TYPE,a.N_B_STATE, a.S_B_STATE, a.T_MODIFY,a.T_END_TIME }).ExecuteCommand(); } - + + internal static void UpdateWmsTask(WMSTask task) + { + var db = new SqlHelper<object>().GetInstance(); + task.T_MODIFY = DateTime.Now; + db.Updateable<WMSTask>(task).ExecuteCommand(); + } internal static bool UpdateTaskEnd(WMSTask a) { var db = new SqlHelper<object>().GetInstance(); @@ -271,14 +278,14 @@ /// </summary> /// <param name="itemCode"></param> /// <returns></returns> - public static List<CntrItemRel> getZZKInventoryInfo(string itemCode) + public static DateTime getZZKInventoryInfo(string itemCode) { + DateTime inboundTime = DateTime.MinValue; var db = new SqlHelper<object>().GetInstance(); - List < CntrItemRel > cntrItemRels = new List<CntrItemRel>(); string areaCode = Settings.areaPropertyList.Where(a => a.areaName.Contains("涓浆搴�)).Select(a => a.areaCode).FirstOrDefault(); if (areaCode != null) { - cntrItemRels = db.Queryable<CntrItemRel>() + inboundTime = db.Queryable<CntrItemRel>() .LeftJoin<LocCntrRel>((a, b) => a.S_CNTR_CODE == b.S_CNTR_CODE) .LeftJoin<Location>((a, b, c) => b.S_LOC_CODE == c.S_CODE) .LeftJoin<Container>((a, b, c, d) => a.S_CNTR_CODE == d.S_CODE) @@ -289,9 +296,10 @@ && d.N_E_STATE == 0 // 鎵樼洏姝e父 ) .OrderBy((a, b, c, d) => a.T_INBOUND_TIME) - .ToList(); + .Select((a, b, c, d) => a.T_INBOUND_TIME) + .First(); } - return cntrItemRels; + return inboundTime; } /// <summary> @@ -314,9 +322,14 @@ .LeftJoin<CntrItemRel>((a, b, c, d) => c.S_CODE == d.S_CNTR_CODE) .Where((a, b, c, d) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE.Trim() == "Y" ); - if (areaCode != null && areaCode != "") + if (areaCode != null && areaCode != "") { - queryable = queryable.Where((a, b, c, d ) => a.S_AREA_CODE.Trim() == areaCode); + queryable = queryable.Where((a, b, c, d) => a.S_AREA_CODE.Trim() == areaCode); + } + else + { + List<string> areaCodes = Settings.areaPropertyList.Select(a => a.areaCode).ToList(); + queryable = queryable.Where((a, b, c, d) => areaCodes.Contains(a.S_AREA_CODE.Trim())); } if (traySatus == 0) { @@ -428,7 +441,7 @@ return location; } - public static bool addAlarmRecord(string alarmType , string alarmLevel ,string alarmMsg ,string logSite = "WMS") { + 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); @@ -510,8 +523,8 @@ /// 1.鏌ヨ寮傚父鍖鸿揣浣� /// </summary> /// <param name="areaCode">搴撳尯</param> - /// <param name="property">璐т綅灞炴�锛�.鐩磋繛 2.闈炵洿杩烇級</param> /// <param name="type">鍔ㄤ綔绫诲瀷锛�.浜哄伐鎺ラ┏浣�1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣嶏級</param> + /// <param name="property">璐т綅灞炴�锛�.鐩磋繛 2.闈炵洿杩烇級</param> /// <returns></returns> public static Location GetTransfeRelevanceLoc(string areaCode ,int type ,int property ) { @@ -601,46 +614,140 @@ /// <summary> /// 璇诲彇MES涓嬫枡浠诲姟 - /// 1.澶囦唤瀹瑰櫒鐗╂枡淇℃伅 - /// 2.鏇存柊涓棿琛ㄧ姸鎬佷负宸茶 + /// 1.璇诲彇MES涓嬪彂浠诲姟琛�+ /// 2.璇诲彇鎵樼洏鐗╂枡淇℃伅琛�+ /// 3.璇诲彇鍩虹鐗╂枡淇℃伅琛� /// </summary> /// <param name="taskNo"></param> /// <param name="id"></param> /// <returns></returns> - internal static LjMesTask readLjMesOffItemTask(string taskNo , int id) + internal static bool readLjMesOffItemTask(string taskNo , int id) { + bool res = true; LogHelper.Info($"鏌ヨ鍒癕ES涓嬪彂WMS浠诲姟,mesTaskId:{id},浠诲姟鍙�{taskNo}" , "WMS"); var db = new SqlHelper<object>().GetInstance(); try { db.BeginTran(); - // 1.鏌ヨMES浠诲姟琛�+ // 1.璇诲彇MES涓嬪彂浠诲姟琛� var mesTask = db.Queryable<LjMesTask>().Where(a => a.ID == id && a.RECEIVE_FLAG.Trim() == "PENDING" ).OrderByDescending(a => a.T_CREATE).First(); if (mesTask != null) { - // 閲嶇疆绌哄伐瑁呬俊鎭�- ContainerHelper.AddContainer(mesTask.PALLET_ID, int.Parse(mesTask.PALLET_TYPE),mesTask.QTY == 0 ? 0 : 1); - - mesTask.AGVORDER_ID = taskNo; - mesTask.RETURN_CODE = "1"; - mesTask.RECEIVE_FLAG = "COMPLETE"; - mesTask.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); - db.Updateable(mesTask).ExecuteCommand(); + // 2.璇诲彇鎵樼洏鐗╂枡淇℃伅琛�+ res = updateCarrier(mesTask.PALLET_ID); + if (res) + { + mesTask.AGVORDER_ID = taskNo; + mesTask.RETURN_CODE = "1"; + mesTask.RECEIVE_FLAG = "COMPLETE"; + mesTask.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + db.Updateable(mesTask).ExecuteCommand(); + } } else { - LogHelper.Info("鏈煡璇㈠埌MES涓嬪彂WMS浠诲姟", "WMS"); + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"鏈煡璇㈠埌MES涓嬪彂鐨勪换鍔�MES浠诲姟ID锛歿id}"); } db.CommitTran(); - return mesTask; } catch (Exception ex) { + res = false; db.RollbackTran(); LogHelper.Info($"璇诲彇MES涓嬪彂浠诲姟澶辫触锛岄敊璇師鍥�{ex.Message}" , "WMS"); WMSHelper.addAlarmRecord("绯荤粺閿欒", "楂�, $"璇诲彇MES涓嬪彂浠诲姟澶辫触锛岄敊璇師鍥�{ex.Message}"); } - return null; + return res; + } + + public static bool updateCarrier(string palletId) + { + bool res = true; + var db = new SqlHelper<object>().GetInstance(); + var container = ContainerHelper.GetCntr(palletId); + if (container != null) + { + // 1.璇诲彇鎵樼洏鐗╂枡淇℃伅琛�+ var lotCarrier = db.Queryable<LjLotCarrier>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING" && a.PALLET_ID == palletId).OrderByDescending(a => a.CREATION_DATE).First(); + if (lotCarrier != null) + { + CntrItemRel cntrItemRel = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == palletId).First(); + if (cntrItemRel != null) + { + cntrItemRel.S_CNTR_CODE = lotCarrier.PALLET_ID; + cntrItemRel.S_BATCH_NO = lotCarrier.LOT_NAME; + cntrItemRel.S_SERIAL_NO = lotCarrier.YCL_BATCH; + cntrItemRel.S_ITEM_CODE = lotCarrier.MATERIALCODE; + cntrItemRel.F_QTY = lotCarrier.QTY; + cntrItemRel.D_PRD_DATE = lotCarrier.PRODUCTION_DATE; + cntrItemRel.S_ITEM_STATE = lotCarrier.QC_STATUS; + cntrItemRel.D_EXP_DATE = lotCarrier.SHELFLIFE_DATE; + cntrItemRel.D_EXP_DATE1 = lotCarrier.MINSHELFLIFE_DATE; + db.Updateable(cntrItemRel).ExecuteCommand(); + } + else + { + cntrItemRel = new CntrItemRel() + { + S_CNTR_CODE = lotCarrier.PALLET_ID, + S_BATCH_NO = lotCarrier.LOT_NAME, + S_SERIAL_NO = lotCarrier.YCL_BATCH, + S_ITEM_CODE = lotCarrier.MATERIALCODE, + F_QTY = lotCarrier.QTY, + D_PRD_DATE = lotCarrier.PRODUCTION_DATE, + S_ITEM_STATE = lotCarrier.QC_STATUS, + D_EXP_DATE = lotCarrier.SHELFLIFE_DATE, + D_EXP_DATE1 = lotCarrier.MINSHELFLIFE_DATE, + }; + db.Insertable(cntrItemRel).ExecuteCommand(); + } + + lotCarrier.RECEIVE_FLAG = "COMPLETE"; + lotCarrier.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); + db.Updateable(lotCarrier).UpdateColumns(a => new { a.RECEIVE_FLAG, a.RECEIVE_DATE }).ExecuteCommand(); + + // 璇诲彇鍩虹鐗╂枡淇℃伅琛�+ var material = db.Queryable<LjItem>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING" && a.MATERIAL_CODE == lotCarrier.MATERIALCODE).OrderByDescending(a => a.CREATION_DATE).First(); + if (material != null) + { + TN_Material tn_material = db.Queryable<TN_Material>().Where(a => a.S_ITEM_CODE == material.MATERIAL_CODE).First(); + + if (tn_material != null) + { + tn_material.S_ITEM_CODE = material.MATERIAL_CODE; + tn_material.S_ITEM_NAME = material.MATERIAL_NAME; + tn_material.S_SPEC = material.SPEC; + tn_material.S_MODEL = material.MODEL; + tn_material.S_UNIT = material.UNIT; + tn_material.S_MEMO = material.MEMO; + db.Updateable(material).ExecuteCommand(); + } + else + { + tn_material = new TN_Material() + { + S_ITEM_CODE = material.MATERIAL_CODE, + S_ITEM_NAME = material.MATERIAL_NAME, + S_SPEC = material.SPEC, + S_MODEL = material.MODEL, + S_UNIT = material.UNIT, + S_MEMO = material.MEMO, + }; + db.Insertable(material).ExecuteCommand(); + } + + material.RECEIVE_FLAG = "COMPLETE"; + material.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd"); + db.Updateable(material).ExecuteCommand(); + } + } + } + else + { + WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"鏈湪WMS绯荤粺涓煡璇㈠埌瀹瑰櫒淇℃伅,瀹瑰櫒缂栫爜锛歿palletId}"); + res = false; + } + return res; } /// <summary> @@ -652,6 +759,7 @@ var lotCarrierList = db.Queryable<LjLotCarrier>().Where(a => a.RECEIVE_FLAG.Trim() == "PENDING").ToList(); foreach (var lotCarrier in lotCarrierList) { + // 鍐欏叆鏂滆鎵樼洏鐗╂枡淇℃伅涓棿琛� CntrItemRel cntrItemRel = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == lotCarrier.PALLET_ID).First(); if (cntrItemRel != null) @@ -738,7 +846,6 @@ /// <returns></returns> internal static LjLotCarrier getLjCntrMaterial(string trayNo) { - // 1.鏌ヨMES浠诲姟琛� var db = new SqlHelper<object>().GetInstance(); var lotCarrier = db.Queryable<LjLotCarrier>().Where(a => a.PALLET_ID.Trim() == trayNo).First(); return lotCarrier; @@ -869,6 +976,28 @@ } /// <summary> + /// 鏌ヨMES浠诲姟琛�鐜甫) + /// </summary> + /// <returns></returns> + public static List<LjMesTask> GetLjMesTaskListHD() + { + var db = new SqlHelper<object>().GetInstance(); + return db.Queryable<LjMesTask>().Where(a => (a.PALLET_TYPE == "5" || a.PALLET_TYPE == "6") && (a.RETURN_CODE.Trim() == "0" || a.RETURN_CODE.Trim() == "1" || a.RETURN_CODE.Trim() == "2")).ToList(); + } + + /// <summary> + /// 鏇存柊MES浠诲姟鐘舵� + /// </summary> + /// <returns></returns> + public static bool updateMesTaskStatus(LjMesTask mesTask) + { + bool result = false; + var db = new SqlHelper<object>().GetInstance(); + result = db.Updateable<LjMesTask>(mesTask).ExecuteCommand() > 0; + return result; + } + + /// <summary> /// 鏇存柊MES浠诲姟鐘舵� /// </summary> /// <param name="taskNo"></param> @@ -963,9 +1092,20 @@ // -----------------------------------------鏂滆涓棿琛�--------------------------------------------- + /// <summary> + /// 鏇存柊MES浠诲姟鐘舵� + /// </summary> + /// <returns></returns> + public static bool updateXcTaskStatus(LjXcTask xcTask) + { + bool result = false; + var db = new SqlHelper<object>().GetInstance(); + result = db.Updateable<LjXcTask>(xcTask).ExecuteCommand() > 0; + return result; + } /// <summary> - /// 涓嬪彂XC浠诲姟 + /// 灏哅ES涓嬪彂浠诲姟銆佹墭鐩樼墿鏂欎俊鎭�杞彂缁欐枩瑁� /// </summary> /// <param name="mesTask"></param> /// <returns></returns> @@ -974,6 +1114,37 @@ bool result = false; var db = new SqlHelper<object>().GetInstance(); if (mesTask != null) { + if (mesTask.MSG_TYPE == "1") + { + // 杞彂鎵樼洏鐗╂枡淇℃伅 + var ljLotCarrier = db.Queryable<LjLotCarrier>().Where(a => a.PALLET_ID == mesTask.PALLET_ID && a.RECEIVE_FLAG == "PENDING").OrderByDescending(a => a.CREATION_DATE).First(); + if (ljLotCarrier != null) + { + LjXcCarrier ljXcCarrier = new LjXcCarrier() + { + ID = ljLotCarrier.ID, + PALLET_ID = ljLotCarrier.PALLET_ID, + LOT_NAME = ljLotCarrier.LOT_NAME, + YCL_BATCH = ljLotCarrier.YCL_BATCH, + MATERIALCODE = ljLotCarrier.MATERIALCODE, + QTY = ljLotCarrier.QTY, + PRODUCTION_DATE = ljLotCarrier.PRODUCTION_DATE, + QC_STATUS = ljLotCarrier.QC_STATUS, + SHELFLIFE_DATE = ljLotCarrier.SHELFLIFE_DATE, + MINSHELFLIFE_DATE = ljLotCarrier.MINSHELFLIFE_DATE, + CREATION_DATE = ljLotCarrier.CREATION_DATE, + RECEIVE_FLAG = ljLotCarrier.RECEIVE_FLAG, + }; + var bo = db.Insertable<LjXcCarrier>(ljXcCarrier).ExecuteCommand() > 0; + if (bo) + { + ljLotCarrier.RECEIVE_FLAG = "COMPLETE"; + ljLotCarrier.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + db.Updateable<LjLotCarrier>(ljLotCarrier).ExecuteCommand(); + } + } + } + LjXcTask ljXcTask = new LjXcTask() { ID = mesTask.ID, POSITION_ID = mesTask.POSITION_ID, @@ -992,6 +1163,13 @@ PLAN_ID = mesTask.PLAN_ID }; result = db.Insertable<LjXcTask>(ljXcTask).ExecuteCommand() > 0; + if (result) + { + mesTask.RETURN_CODE = "1"; + mesTask.RECEIVE_FLAG = "COMPLETE"; + mesTask.RECEIVE_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + db.Updateable<LjMesTask>(mesTask).ExecuteCommand(); + } } return result; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/WmsController.cs index 570f642..7193e16 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/WmsController.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/WmsController.cs @@ -635,10 +635,7 @@ ContainerHelper.deleteCntrItem(wmsTask.S_CNTR_CODE); } } - - } - WCSHelper.Fail(wcsTask); LocationHelper.UnLockLoc(wcsTask.S_START_LOC); diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs index 9eb8071..e403702 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs @@ -63,9 +63,10 @@ foreach (var item in ApiHelper.cacheInstockInfos) { + LogHelper.Info($"缂撳瓨淇″彿澶勭悊锛岀紦瀛業P锛歿item.Key}", "TSSG"); var instockInfo = item.Value; var end = WMSHelper.GetInstockEnd(instockInfo.item, instockInfo.endArea); - LogHelper.Info("缁堢偣璐т綅锛� + JsonConvert.SerializeObject(end), "TSSG"); + LogHelper.Info("(缂撳瓨淇″彿)缁堢偣璐т綅锛� + JsonConvert.SerializeObject(end), "TSSG"); if (end != null) { ApiHelper.Instock(instockInfo); @@ -114,8 +115,11 @@ var instockInfo = item.Value; if (instockInfo.UDID == flag1) { if (Settings.BufferArea != null && Settings.BufferArea != "") { - item.Value.endArea = Settings.BufferArea; - LogHelper.Info("ip:" + item.Key + "淇″彿绛夊緟鏃堕棿瓒呮椂锛屽彉鏇寸粓鐐瑰簱鍖轰负缂撳瓨鍖�, "TSSG"); + var end = WMSHelper.GetInstockEnd(instockInfo.item, Settings.BufferArea); + if (end != null) { + item.Value.endArea = Settings.BufferArea; + LogHelper.Info("ip:" + item.Key + "淇″彿绛夊緟鏃堕棿瓒呮椂锛屽彉鏇寸粓鐐瑰簱鍖轰负缂撳瓨鍖�, "TSSG"); + } } } } @@ -130,8 +134,12 @@ { if (Settings.BufferArea != null && Settings.BufferArea != "") { - item.Value.endArea = Settings.BufferArea; - LogHelper.Info("ip:" + item.Key + "淇″彿绛夊緟鏃堕棿瓒呮椂锛屽彉鏇寸粓鐐瑰簱鍖轰负缂撳瓨鍖�, "TSSG"); + var end = WMSHelper.GetInstockEnd(instockInfo.item, Settings.BufferArea); + if (end != null) + { + item.Value.endArea = Settings.BufferArea; + LogHelper.Info("ip:" + item.Key + "淇″彿绛夊緟鏃堕棿瓒呮椂锛屽彉鏇寸粓鐐瑰簱鍖轰负缂撳瓨鍖�, "TSSG"); + } } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/process/DeviceProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/process/DeviceProcess.cs index 54db749..380ded9 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/process/DeviceProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/process/DeviceProcess.cs @@ -27,19 +27,17 @@ internal static void Analysis(string data, string ip) { - if (!lastReceiptTime.TryGetValue(ip, out DateTime lastTime)) // 瀹夊叏鑾峰彇鍊�+ // 妫�煡鏄惁闇�璺宠繃澶勭悊 + if (lastReceiptTime.TryGetValue(ip, out DateTime lastTime) && + DateTime.Now < lastTime.AddMinutes(1)) { - lastReceiptTime[ip] = DateTime.Now; // 浣跨敤绱㈠紩鍣ㄨ嚜鍔ㄦ坊鍔犳垨鏇存柊 - } - else if (lastTime < DateTime.Now.AddMinutes(-1)) - { - lastReceiptTime[ip] = DateTime.Now; - } - else - { - return; + return; // 1鍒嗛挓鍐呴噸澶嶈姹傦紝璺宠繃 } + // 鏇存柊鎺ユ敹鏃堕棿骞舵墽琛屼笟鍔¢�杈�+ lastReceiptTime[ip] = DateTime.Now; + + LogHelper.Info($"涓嬪彂鍏ュ簱璇锋眰锛孖P锛歿ip}", "TSSG"); if (data.Length >= 6) { //鍘绘帀娑堟伅澶�F 00 data = data.Substring(4); diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/HH.WCS.Mobox3.YNJT_PT.csproj b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/HH.WCS.Mobox3.YNJT_PT.csproj index 612ea58..f71c451 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/HH.WCS.Mobox3.YNJT_PT.csproj +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/HH.WCS.Mobox3.YNJT_PT.csproj @@ -180,6 +180,7 @@ <Compile Include="dispatch\HanAo.cs" /> <Compile Include="dispatch\NDC.cs" /> <Compile Include="core\Monitor.cs" /> + <Compile Include="dispatch\NDCApi.cs" /> <Compile Include="dispatch\WCSDispatch.cs" /> <Compile Include="models\BaseModel.cs" /> <Compile Include="models\Area.cs" /> 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 c63c661..c8f040b 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 @@ -15,9 +15,11 @@ using System.Reflection; using System.Text.RegularExpressions; using System.Threading; +using Ubiety.Dns.Core; using static HH.WCS.Mobox3.YNJT_PT.api.ApiModel; using static HH.WCS.Mobox3.YNJT_PT.api.OtherModel; using static HH.WCS.Mobox3.YNJT_PT.api.WmsController; +using static HH.WCS.Mobox3.YNJT_PT.dispatch.WCSDispatch; using static HH.WCS.Mobox3.YNJT_PT.util.Settings; using static HH.WCS.Mobox3.YNJT_PT.wms.WMSHelper; using static System.Net.Mime.MediaTypeNames; @@ -35,24 +37,26 @@ /// 鎴愬瀷鏈轰笅绾胯褰� /// </summary> /// <param name="model"></param> - public static ResponseResult cxjOffLineRecord(OffLineModel model) + public static ResponseResult cxjOffLineRecord(NotifyDeviceSignalModel model) { ResponseResult response = new ResponseResult(); - var container = ContainerHelper.GetCntr(model.rfid); + var container = ContainerHelper.GetCntr(model.cntrNo); if (container == null) { - ContainerHelper.AddCntr(model.rfid); + ContainerHelper.AddCntr(model.cntrNo); } try { + OffLineModel extData1 = JsonConvert.DeserializeObject<OffLineModel>(model.extData.ToString()); OffLineRecord record = new OffLineRecord() { - S_RFID = model.rfid, + S_RFID = model.cntrNo, S_DEVICE_NO = model.deviceNo, - N_IS_URGENT = model.isUrgent, + N_IS_URGENT = extData1.isUrgent, T_OFF_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - N_IS_FULL = model.isFull, + N_IS_FULL = extData1.isFull, + N_NEED_PAIR = extData1.needPair, S_LOC = model.loc }; WMSHelper.addOffLineRecord(record); @@ -76,7 +80,7 @@ var startLoc = LocationHelper.GetLoc(model.loc); if (startLoc != null) { - List<BarcodeModel> extData = model.extData; + List<BarcodeModel> extData = JsonConvert.DeserializeObject<List<BarcodeModel>>(model.extData.ToString()); int dataCount = extData.Count; if (dataCount > 0) { @@ -106,7 +110,7 @@ var offLineRecord = WMSHelper.getOffLineRecord(rfid); if (offLineRecord != null) { - if (offLineRecord.N_IS_FULL == 1) + if (offLineRecord.N_IS_FULL == 1) { if (ext.barcode.Contains("99999999")) { @@ -143,7 +147,7 @@ } else { - // 璁板綍鏌ヨ鏉$爜淇℃伅寮傚父 + // 璁板綍鏌ヨ鏉$爜淇℃伅寮傚父 } } @@ -346,7 +350,8 @@ } else if (wcsTask.S_TYPE == "鑳氳儙鍙枡鍑哄簱浠诲姟") { - if (model.cntrNo != wcsTask.S_CNTR_CODE) + var cntrItemRels = ContainerHelper.GetCntrItemRel(wcsTask.S_CNTR_CODE); + if (model.cntrNo != wcsTask.S_CNTR_CODE || cntrItemRels.Count == 0 || cntrItemRels.Count > 0 && cntrItemRels[0].S_ITEM_STATE != "OK") { // 璁$畻鎺掑嚭鍙� endLoc = WMSHelper.getCallOutLoc(endLoc.N_ROW); @@ -362,32 +367,58 @@ readCodeFeedbackResponse.verifyResult = false; readCodeFeedbackResponse.endLoc = endLoc.S_CODE; } - else - { - var cntrItemRels = ContainerHelper.GetCntrItemRel(wcsTask.S_CNTR_CODE); - if (cntrItemRels.Count > 0) - { - if (cntrItemRels[0].S_ITEM_STATE != "OK") - { - endLoc = WMSHelper.getMinTaskMiddleLoc(1,endLoc.N_ROADWAY); ; - - wcsTask.S_END_LOC = endLoc.S_CODE; - wcsTask.S_END_AREA = endLoc.S_AREA_CODE; - WCSHelper.updateTaskEnd(wcsTask); - - wmsTask.S_END_LOC = endLoc.S_CODE; - wmsTask.S_END_AREA = endLoc.S_AREA_CODE; - WMSHelper.UpdateTaskEnd(wmsTask); - - readCodeFeedbackResponse.verifyResult = false; - readCodeFeedbackResponse.endLoc = endLoc.S_CODE; - } - } - } - } } else + { + response.code = 1; + response.msg = $"浠诲姟鍙凤細{model.taskNo},鏈煡璇㈠埌鎵ц涓殑浠诲姟"; + } + response.data = readCodeFeedbackResponse; + return response; + } + + /// <summary> + /// 寮傚父鐢宠锛堝彇娑堜换鍔★級 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static ResponseResult anomalyRequest(NotifyDeviceSignalModel model) + { + ResponseResult response = new ResponseResult(); + readCodeFeedbackResponse readCodeFeedbackResponse = new readCodeFeedbackResponse() + { + verifyResult = true + }; + var wcsTask = WCSHelper.GetTask(model.taskNo); + var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE); + if (wcsTask != null && wmsTask != null) + { + Location endLoc = LocationHelper.GetLoc(wmsTask.S_END_LOC); // 鍘熺粓鐐�+ if (wcsTask.S_TYPE == "婊℃枡涓嬬嚎鍏ュ簱浠诲姟") + { + // 鏌ヨ鎺掑嚭鍙�+ var middleLoc = WMSHelper.getMinTaskMiddleLoc(1, 0, endLoc.N_ROADWAY); + wcsTask.S_END_LOC = middleLoc.S_CODE; + wcsTask.S_END_AREA = middleLoc.S_AREA_CODE; + WCSHelper.updateTaskEnd(wcsTask); + readCodeFeedbackResponse.verifyResult = false; + readCodeFeedbackResponse.endLoc = middleLoc.S_CODE; + + // 鏌ヨ鏂扮粓鐐�+ endLoc = WMSHelper.getOnlneLoc(2); + } + else if (wcsTask.S_TYPE == "鑳氳儙鍙枡鍑哄簱浠诲姟") + { + endLoc = WMSHelper.getCallOutLoc(endLoc.N_ROW); + readCodeFeedbackResponse.verifyResult = false; + readCodeFeedbackResponse.endLoc = endLoc.S_CODE; + } + wmsTask.S_END_LOC = endLoc.S_CODE; + wmsTask.S_END_AREA = endLoc.S_AREA_CODE; + WMSHelper.UpdateTaskEnd(wmsTask); + } + else { response.code = 1; response.msg = $"浠诲姟鍙凤細{model.taskNo},鏈煡璇㈠埌鎵ц涓殑浠诲姟"; @@ -454,19 +485,25 @@ } /// <summary> - /// 纭寲鏈哄懠鍙儦鑳庡嚭搴�+ /// 4.纭寲鏈哄懠鍙儦鑳庡嚭搴�+ /// 閫昏緫锛�+ /// 1.鏍规嵁鏈哄彴鍙锋煡璇€�纭寲鏈哄伐鍗曡〃銆戙�銆愯儦鑳庡凡瀹屾垚鐨勬潯鐮佷腑闂磋〃銆戠瓫閫夊綋鍓嶇彮娆$殑鐢熶骇璁″垝鏁伴噺鏄惁婊¤冻锛屽綋棰勮鐢熶骇鏁伴噺 = 瀹為檯鏁�鍦ㄩ�鏁伴噺 锛屽垯鍋滄鍙枡 + /// 2.鏌ヨ鏈哄彴鍙峰湪銆愮~鍖栨満宸ュ崟琛ㄣ�瀵瑰簲鐨勭墿鏂欑紪鐮侊紝 + /// 寮�璁$畻锛�.宸烽亾涓嶆姤璀︺�2.鐗╂枡鐘舵�OK銆�.灏忎簬澶辨晥鏃堕棿 澶т簬绛変簬鐢熸晥鏃堕棿 4.鍔犳�鏂欏厛鍑恒�5.鍏堝叆鍏堝嚭锛堢敓浜ф椂闂达級锛夊嚭搴撶墿鏂欙紝鐢熸垚浠诲姟 /// </summary> /// <param name="model"></param> - public static ResponseResult callItemOutStock(CallItemModel model) + public static ResponseResult callItemOutStock(NotifyDeviceSignalModel model) { ResponseResult response = new ResponseResult(); - int locNum = model.locCodes.Count; + var locCodes = model.loc.Split(',').ToList(); + + int locNum = locCodes.Count; if (locNum > 0) { Location prevLoc = null; Dictionary<string,Location> outLocDic = new Dictionary<string,Location>(); - foreach (var mcn in model.locCodes) + foreach (var mcn in locCodes) { // 1.涓�釜纭寲鏈哄伐浣嶅彧鑳藉悓鏃跺瓨鍦ㄤ竴涓鍦ㄦ墽琛屼腑鐨勪换鍔� var existTask = WCSHelper.GetTaskByEnd(mcn); @@ -584,96 +621,33 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public static ResponseResult emptyTrayInStock(EmptyTrayInStockModel model) + public static ResponseResult emptyTrayInStock(NotifyDeviceSignalModel model) { ResponseResult response = new ResponseResult(); - Location startLoc = LocationHelper.GetLoc(model.startLoc); - var endLocGroup = WMSHelper.getInStockEndLoc(1,null); - if (endLocGroup.endLocList.Count == 1) - { - Location endLoc = endLocGroup.endLocList[0]; - var wmsTask = new WMSTask() - { - S_CNTR_CODE = model.trayCode, - 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 = "绌烘墭鐩樺洖搴撲换鍔�, - N_PRIORITY = 1, - 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 = "WCS", - N_PRIORITY = 1, - T_START_TIME = DateTime.Now, - }; + Location startLoc = LocationHelper.GetLoc(model.loc); - 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 + var cntrCodeList = model.loc.Split(',').ToList(); + if (cntrCodeList.Count > 0) { - response.code = 1; - response.msg = "搴撳尯娌℃湁鍙叆鐨勭┖璐т綅"; - } - return response; - } - - /// <summary> - /// 鍛煎彨绌烘墭鍑哄簱 - /// </summary> - /// <returns></returns> - public static ResponseResult callEmptyTrayOutStock(CallEmptyTrayOutStockModel model) - { - ResponseResult responseResult = new ResponseResult(); - Location startLoc = WMSHelper.getOutStockStartLoc(null); - if (startLoc != null) - { - Location endLoc = LocationHelper.GetLoc(model.endLoc); - if (endLoc != null) + var endLocGroup = WMSHelper.getInStockEndLoc(cntrCodeList.Count, null); + if (endLocGroup.endLocList.Count > 0) { - var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); - if (locCntrRels != null && locCntrRels.Count > 0) + foreach (var endLoc in endLocGroup.endLocList) { var wmsTask = new WMSTask() { - S_CNTR_CODE = locCntrRels[0].S_CNTR_CODE, + S_CNTR_CODE = model.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_TYPE = "绌烘墭鍏ュ簱浠诲姟", S_OP_DEF_CODE = model.reqId, - S_OP_DEF_NAME = "鍛煎彨绌烘墭鍑哄簱", + S_OP_DEF_NAME = "绌烘墭鐩樺洖搴撲换鍔�, N_PRIORITY = 1, - T_START_TIME = DateTime.Now + T_START_TIME = DateTime.Now, + S_GROUP_NO = endLocGroup.groupNo, }; if (WMSHelper.CreateWmsTask(wmsTask)) { @@ -707,16 +681,92 @@ } } } - else + else { - responseResult.code = 1; - responseResult.msg = $"缁堢偣璐т綅:{model.endLoc}鍦╓MS绯荤粺涓笉瀛樺湪"; + response.code = 1; + response.msg = "搴撳尯娌℃湁鍙叆鐨勭┖璐т綅"; } } - else + + return response; + } + + /// <summary> + /// 鍛煎彨绌烘墭鍑哄簱 + /// </summary> + /// <returns></returns> + public static ResponseResult callEmptyTrayOutStock(NotifyDeviceSignalModel model) + { + ResponseResult responseResult = new ResponseResult(); + int executeNum = 0; + string startLocCode = null; + for (int i = 1; i <= 2; i++) + { + Location startLoc = WMSHelper.getOutStockStartLoc(startLocCode); + if (startLoc != null) + { + startLocCode = startLoc.S_CODE; + Location endLoc = WMSHelper.getMinTaskMiddleLoc(1, 0, startLoc.N_ROADWAY); + if (endLoc != null) + { + var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); + if (locCntrRels != null && locCntrRels.Count > 0) + { + 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 = model.reqId, + S_OP_DEF_NAME = "鍛煎彨绌烘墭鍑哄簱", + N_PRIORITY = 1, + 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 = "WCS", + N_PRIORITY = 1, + 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); + + executeNum += 1; + } + } + } + } + } + } + + if (executeNum < 1) { responseResult.code = 1; - responseResult.msg = "搴撳唴绌烘墭涓嶈冻"; + responseResult.msg = "绔嬪簱鍐呯┖鎵樼洏鏁伴噺涓嶈冻"; } return responseResult; } @@ -725,9 +775,9 @@ /// 鑳氳儙鎶芥鍑哄簱 /// </summary> /// <returns></returns> - public static ResponseResult embryoCheckOutStock(EmbryoCheckOutStockModel model) + public static SimpleResult embryoCheckOutStock(EmbryoCheckOutStockModel model) { - ResponseResult responseResult = new ResponseResult(); + SimpleResult result = new SimpleResult(); var locCntrs = LocationHelper.GetLocCntrRelByCntr(model.trayCode); if (locCntrs.Count == 1) { @@ -783,7 +833,7 @@ } } } - return responseResult; + return result; } /// <summary> @@ -791,11 +841,11 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public static ResponseResult anomalyTrayInStock(AnomalyTrayInStockModel model) + public static ResponseResult anomalyTrayInStock(NotifyDeviceSignalModel model) { ResponseResult responseResult = new ResponseResult(); - LocationHelper.UnBindingLoc(model.startLoc, new List<string>() { model.trayCode }); - ContainerHelper.deleteCntrItemRelByCntr(model.trayCode); + LocationHelper.UnBindingLoc(model.loc, new List<string>() { model.cntrNo }); + ContainerHelper.deleteCntrItemRelByCntr(model.cntrNo); return responseResult; } @@ -1058,11 +1108,9 @@ public class OffLineModel { - public string loc { get; set; } // 涓嬬嚎浣�- public string rfid { get; set; } // 鎵樼洏鍙�- public string deviceNo { get; set; } // 鏈哄彴鍙� public int isUrgent { get; set; } // N_IS_URGENT 鏄惁鍔犳�锛�.鍚�1.鏄級 public int isFull { get; set; } // 鏄惁婊℃嫋 0.鍚�1.鏄�+ public int needPair { get; set; } // 0.鍚� 1.鏄紙褰撳墠绌烘墭鐩樹负閰嶅鎵樼洏锛� } public class AddTaskModel { public string From { get; set; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/MoboxController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/MoboxController.cs index 5c915b5..bb67ca0 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/MoboxController.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/MoboxController.cs @@ -9,12 +9,29 @@ using System.Web.Http; using static HH.WCS.Mobox3.YNJT_PT.api.ApiModel; using static HH.WCS.Mobox3.YNJT_PT.api.OtherModel; +using static HH.WCS.Mobox3.YNJT_PT.api.WmsController; namespace HH.WCS.Mobox3.YNJT_PT.api { /// <summary> /// mobox3璋冪敤锛岃剼鏈腑璋冪敤 /// </summary> public class MoboxController : System.Web.Http.ApiController { + + /// <summary> + /// 1.鑳庤儦绔嬪簱鎶芥鍑哄簱銆佷汉宸ュ嚭搴撹儙鑳�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public SimpleResult embryoCheckOutStock(EmbryoCheckOutStockModel model) + { + LogHelper.Info("銆�.鑳庤儦绔嬪簱鎶芥鍑哄簱銆慹mbryoCheckOutStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); + SimpleResult result = new SimpleResult(); + result = ApiHelper.embryoCheckOutStock(model); + LogHelper.Info("銆�.鑳庤儦绔嬪簱鎶芥鍑哄簱銆慹mbryoCheckOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(result), "WMS"); + return result; + } + + /// <summary> /// 浠诲姟鍙栨秷锛堢洰鍓嶆敮鎸乶dc锛� /// </summary> 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 8bec1eb..a9c46d0 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 @@ -19,21 +19,7 @@ { /// <summary> - /// 1.鎴愬瀷鏈轰笅绾胯褰�- /// </summary> - /// <param name="model"></param> - /// <returns></returns> - [HttpPost] - public ResponseResult cxjOffLineRecord(OffLineModel model) - { - LogHelper.Info("銆�.鎴愬瀷鏈轰笅绾胯褰曘�Request锛� + JsonConvert.SerializeObject(model), "WMS"); - var result = ApiHelper.cxjOffLineRecord(model); - LogHelper.Info("銆�.鎴愬瀷鏈轰笅绾胯褰曘�response锛� + JsonConvert.SerializeObject(result), "WMS"); - return result; - } - - /// <summary> - /// 2.璁惧淇″彿鍙嶉 + /// 1.璁惧淇″彿鍙嶉 /// 涓氬姟鍦烘櫙锛歐CS鍙嶉鎴愬瀷鏈鸿儦鑳庝笅绾垮叆搴撲俊鍙凤紙娉細蹇呴』涓ゆ墭涓�捣涓婃姤锛屾病鏈変袱鎵橈紝鍒欒ˉ鍏呬竴涓┖鎵橈級 /// 閫昏緫锛� /// 1.鏌ヨ鎴愬瀷鏈轰笅绾胯褰曡〃锛屽垽鏂璕FID鏄惁瀛樺湪锛岀姸鎬佹槸鍚K锛屼笉瀛樺湪鎴朜G寮傚父鎺掑嚭 @@ -45,17 +31,36 @@ [HttpPost] public ResponseResult notifyDeviceSignal(NotifyDeviceSignalModel model) { - LogHelper.Info("銆�.璁惧淇″彿鍙嶉銆憂otifyDeviceSignal 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); + LogHelper.Info("銆�.璁惧淇″彿鍙嶉銆憂otifyDeviceSignal 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); ResponseResult responseResult = new ResponseResult(); try { - if (model.signalType == 1) + switch (model.signalType) { - responseResult = ApiHelper.offLineRequest(model); - } - else if(model.signalType == 3) - { - responseResult = ApiHelper.readCodeRequest(model); + case 1: + responseResult = ApiHelper.offLineRequest(model); // 涓嬬嚎璇锋眰 + break; + case 2: + responseResult = ApiHelper.callItemOutStock(model); // 鍙枡璇锋眰 + break; + case 3: + responseResult = ApiHelper.readCodeRequest(model); // 璇荤爜璇锋眰 + break; + case 4: + responseResult = ApiHelper.cxjOffLineRecord(model); // 涓嬬嚎璁板綍 + break ; + case 5: + responseResult = ApiHelper.anomalyRequest(model); // 寮傚父鐢宠 + break; + case 6: + responseResult = ApiHelper.emptyTrayInStock(model); // 绌烘墭鍥炲簱 + break; + case 7: + responseResult = ApiHelper.callEmptyTrayOutStock(model); // 绌烘墭鍑哄簱 + break; + case 8: + responseResult = ApiHelper.anomalyTrayInStock(model); // 绌烘墭閲嶇疆 + break; } } catch (BusinessException be) @@ -70,8 +75,24 @@ responseResult.code = 500; responseResult.msg = $"WMS鍐呴儴閿欒锛岃鑱旂郴寮�彂浜哄憳澶勭悊"; } - LogHelper.Info("銆�.璁惧淇″彿鍙嶉銆憂otifyDeviceSignal 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); + LogHelper.Info("銆�.璁惧淇″彿鍙嶉銆憂otifyDeviceSignal 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); return responseResult; + } + + /// <summary> + /// 2.WCS 浠诲姟鐘舵�鍙嶉 + /// 涓氬姟鍦烘櫙锛歐CS鍦ㄦ墽琛屼换鍔℃椂锛屽洖鎶ヤ换鍔$姸鎬�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + /*[Route("notifyTaskStatus")]*/ + public ReturnResult notifyTaskStatus(TaskStatusFeedbackModel model) + { + LogHelper.Info("銆�.WCS浠诲姟鐘舵�鍙嶉銆慠equest锛� + JsonConvert.SerializeObject(model), "WMS"); + var result = ApiHelper.taskStatusFeedback(model); + LogHelper.Info("銆�.WCS浠诲姟鐘舵�鍙嶉銆憆esponse锛� + JsonConvert.SerializeObject(result), "WMS"); + return result; } /// <summary> @@ -90,97 +111,7 @@ } /// <summary> - /// 4.纭寲鏈哄懠鍙儦鑳庡嚭搴�- /// 閫昏緫锛�- /// 1.鏍规嵁鏈哄彴鍙锋煡璇€�纭寲鏈哄伐鍗曡〃銆戙�銆愯儦鑳庡凡瀹屾垚鐨勬潯鐮佷腑闂磋〃銆戠瓫閫夊綋鍓嶇彮娆$殑鐢熶骇璁″垝鏁伴噺鏄惁婊¤冻锛屽綋棰勮鐢熶骇鏁伴噺 = 瀹為檯鏁�鍦ㄩ�鏁伴噺 锛屽垯鍋滄鍙枡 - /// 2.鏌ヨ鏈哄彴鍙峰湪銆愮~鍖栨満宸ュ崟琛ㄣ�瀵瑰簲鐨勭墿鏂欑紪鐮侊紝 - /// 寮�璁$畻锛�.宸烽亾涓嶆姤璀︺�2.鐗╂枡鐘舵�OK銆�.灏忎簬澶辨晥鏃堕棿 澶т簬绛変簬鐢熸晥鏃堕棿 4.鍔犳�鏂欏厛鍑恒�5.鍏堝叆鍏堝嚭锛堢敓浜ф椂闂达級锛夊嚭搴撶墿鏂欙紝鐢熸垚浠诲姟 - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public ResponseResult callItemOutStock(CallItemModel model ) - { - LogHelper.Info("銆�.纭寲鏈哄懠鍙儦鑳庡嚭搴撱�callItemOutStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); - ResponseResult responseResult = new ResponseResult(); - responseResult = ApiHelper.callItemOutStock(model); - LogHelper.Info("銆�.纭寲鏈哄懠鍙儦鑳庡嚭搴撱�callItemOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); - return responseResult; - } - - /// <summary> - /// 5.绌烘墭鍥炵珛搴�- /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public ResponseResult emptyTrayInStock(EmptyTrayInStockModel model ) - { - LogHelper.Info("銆�.绌烘墭鍥炵珛搴撱�emptyTrayInStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); - ResponseResult responseResult = new ResponseResult(); - responseResult = ApiHelper.emptyTrayInStock(model); - LogHelper.Info("銆�.绌烘墭鍥炵珛搴撱�emptyTrayInStock 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); - return responseResult; - } - - /// <summary> - /// 6.鎴愬瀷鏈哄懠鍙┖鎵�- /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public ResponseResult callEmptyTrayOutStock(CallEmptyTrayOutStockModel model) - { - LogHelper.Info("銆�.鎴愬瀷鏈哄懠鍙┖鎵樸�callEmptyTrayOutStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); - ResponseResult responseResult = new ResponseResult(); - responseResult = ApiHelper.callEmptyTrayOutStock(model); - LogHelper.Info("銆�.鎴愬瀷鏈哄懠鍙┖鎵樸�callEmptyTrayOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); - return responseResult; - } - - /// <summary> - /// 7.鑳庤儦绔嬪簱鎶芥鍑哄簱銆佷汉宸ュ嚭搴撹儙鑳�- /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public ResponseResult embryoCheckOutStock(EmbryoCheckOutStockModel model) - { - LogHelper.Info("銆�.鑳庤儦绔嬪簱鎶芥鍑哄簱銆慹mbryoCheckOutStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); - ResponseResult responseResult = new ResponseResult(); - responseResult = ApiHelper.embryoCheckOutStock(model); - LogHelper.Info("銆�7.鑳庤儦绔嬪簱鎶芥鍑哄簱銆慹mbryoCheckOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); - return responseResult; - } - - /// <summary> - /// 8.寮傚父鍥炲簱娴佺▼ - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public ResponseResult anomalyTrayInStock(AnomalyTrayInStockModel model) - { - LogHelper.Info("銆�.寮傚父鍥炲簱娴佺▼銆慹mbryoCheckOutStock 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "WMS"); - ResponseResult responseResult = new ResponseResult(); - responseResult = ApiHelper.anomalyTrayInStock(model); - LogHelper.Info("銆�.寮傚父鍥炲簱娴佺▼銆慹mbryoCheckOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS"); - return responseResult; - } - - /// <summary> - /// 9.WCS 浠诲姟鐘舵�鍙嶉 - /// 涓氬姟鍦烘櫙锛歐CS鍦ㄦ墽琛屼换鍔℃椂锛屽洖鎶ヤ换鍔$姸鎬�- /// </summary> - /// <param name="model"></param> - /// <returns></returns> - [HttpPost] - /*[Route("notifyTaskStatus")]*/ - public ReturnResult notifyTaskStatus(TaskStatusFeedbackModel model) - { - LogHelper.Info("銆�.WCS浠诲姟鐘舵�鍙嶉銆慠equest锛� + JsonConvert.SerializeObject(model), "WMS"); - var result = ApiHelper.taskStatusFeedback(model); - LogHelper.Info("銆�.WCS浠诲姟鐘舵�鍙嶉銆憆esponse锛� + JsonConvert.SerializeObject(result), "WMS"); - return result; - } - - /// <summary> - /// 10.绌烘墭鐩樿В缁�+ /// 4.绌烘墭鐩樿В缁� /// 涓氬姟鍦烘櫙锛氱┖鎵樼洏鍥炰富绾� /// </summary> /// <param name="model"></param> @@ -188,9 +119,9 @@ [HttpPost] public ReturnResult emptyTrayUnBind(EmptyTrayUnBindModel model) { - LogHelper.Info("銆�0.绌烘墭鐩樿В缁戙�Request锛� + JsonConvert.SerializeObject(model), "WMS"); + LogHelper.Info("銆�.绌烘墭鐩樿В缁戙�Request锛� + JsonConvert.SerializeObject(model), "WMS"); var result = ApiHelper.emptyTrayUnBind(model); - LogHelper.Info("銆�0.绌烘墭鐩樿В缁戙�response锛� + JsonConvert.SerializeObject(result), "WMS"); + LogHelper.Info("銆�.绌烘墭鐩樿В缁戙�response锛� + JsonConvert.SerializeObject(result), "WMS"); return result; } @@ -266,7 +197,7 @@ public string taskNo { get; set; } public string cntrNo { get; set; } public int signalType { get; set; } - public List<BarcodeModel> extData { get; set; } + public object extData { get; set; } public string deviceNo { get; set; } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/config/config.json b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/config/config.json index 495b2d3..b80e3a1 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/config/config.json +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/config/config.json @@ -78,5 +78,13 @@ "locCode": "OA1-2-4-1", "roadway": 4 } + ], + + "DeviceConfig": [ + { + "deviceNo": "", + "deviceName": "", + "roadway": 1 + } ] } \ No newline at end of file diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/dispatch/WCSDispatch.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/dispatch/WCSDispatch.cs index d1bb19c..7d82fbf 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/dispatch/WCSDispatch.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/dispatch/WCSDispatch.cs @@ -4,7 +4,9 @@ using System.Text; using System.Threading.Tasks; using HH.WCS.Mobox3.YNJT_PT.util; +using HH.WCS.Mobox3.YNJT_PT.wms; using Newtonsoft.Json; +using static HH.WCS.Mobox3.YNJT_PT.api.ApiModel; namespace HH.WCS.Mobox3.YNJT_PT.dispatch { @@ -13,64 +15,264 @@ private static readonly HttpHelper apiHelper = new HttpHelper(); private static readonly string baseUrl = "http://192.168.1.99:2000/"; + + internal static string GenerateReqId() + { + var id = SYSHelper.GetSerialNumber("璇锋眰ID", "RE"); + var date = DateTime.Now.ToString("yyMMdd"); + return $"{date}{id.ToString().PadLeft(4, '0')}"; + } + /// <summary> - /// WMS鍚慦CS鑾峰彇璁惧鐘舵�锛堝爢鍨涙満锛�+ /// 浠诲姟涓嬪彂 /// </summary> - /// <param name="roadway"></param> + /// <param name="model"></param> /// <returns></returns> - public static List<StackerState> getStackerState(int roadway) + public static bool sendTask(SendTaskModel model) { - var msg = ""; - List<StackerState> stackerStates = new List<StackerState>(); - var data = new StackerStateModel() { req_no = Guid.NewGuid().ToString("D"), roadway = roadway.ToString() }; - var request = JsonConvert.SerializeObject(data); - var response = apiHelper.Post(baseUrl + "api/StackerState", request); - msg = $"WMS鍚慦CS鑾峰彇璁惧鐘舵�锛堝爢鍨涙満锛塠StackerState] request={request} response={response}"; - LogHelper.Info(msg, "WCS"); - if (response != "") + var result = false; + model.reqId = GenerateReqId(); + model.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + var request = JsonConvert.SerializeObject(model); + try { - try + var response = apiHelper.Post(baseUrl + "/sendTask", request); + LogHelper.Info($"[WCS-sendTask] request={request} response={response}", "WMS"); + if (response != null && response != "") { - var dataResult = JsonConvert.DeserializeObject<StackerStateResponseData>(response); - if (dataResult.result_flag == 0) + var dataResult = JsonConvert.DeserializeObject<ResponseResult>(response); + if (dataResult.code == 200) { - stackerStates = dataResult.data; + result = true; } - else + else { - LogHelper.Info($"WMS鍚慦CS鑾峰彇璁惧鐘舵�锛堝爢鍨涙満锛夊け璐ワ紝WCS鍙嶉閿欒淇℃伅锛歿dataResult.err_msg}", "WCS"); + LogHelper.Info($"璋冪敤WCS浠诲姟涓嬪彂鎺ュ彛鎴愬姛锛屼絾WCS鍙嶉涓嬪彂浠诲姟澶辫触锛屽け璐ュ師鍥狅細{dataResult.msg}", "WMS"); } } - catch (Exception ex) + else { - LogHelper.Info($"WMS鍚慦CS鑾峰彇璁惧鐘舵�锛堝爢鍨涙満锛夐敊璇紝閿欒鍘熷洜锛歿ex.Message}", "WCS"); + LogHelper.Info("璋冪敤WCS浠诲姟涓嬪彂鎺ュ彛澶辫触", "WMS"); } } - else + catch (Exception ex) { - msg = "[StackerState]WMS鍚慦CS鑾峰彇璁惧鐘舵�锛堝爢鍨涙満锛夊け璐�; - LogHelper.Info(msg, "WCS"); + LogHelper.Info($"璋冪敤WCS浠诲姟涓嬪彂鎺ュ彛閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS"); } - return stackerStates; + return result; } - public class StackerStateResponseData + /// <summary> + /// 浠诲姟鍙栨秷锛堜换鍔℃墽琛屼腑涓嶅厑璁稿彇娑堬級 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static bool cancelTask(CancelTaskModel model) { - public int result_flag { get; set; } - public string err_msg { get; set; } - public List<StackerState> data { get; set; } - } - public class StackerState - { - public string roadway { get; set; } - public string roadway_state { get; set; } // 鍫嗗灈鏈虹姸鎬�1=绌洪棽锛�=鎵ц涓紝3=鎶ヨ锛�=涓嶅彲鐢�+ var result = false; + model.reqId = GenerateReqId(); + model.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + var request = JsonConvert.SerializeObject(model); + try + { + var response = apiHelper.Post(baseUrl + "/api/hecWms/produceProcessTracing/trayMaterialUnBind", request); + LogHelper.Info($"[WCS-cancelTask] request={request} response={response}", "WMS"); + if (response != null && response != "") + { + + var dataResult = JsonConvert.DeserializeObject<ResponseResult>(response); + if (dataResult.code == 200) + { + result = true; + } + + } + else + { + LogHelper.Info("璋冪敤WCS浠诲姟鍙栨秷鎺ュ彛澶辫触", "WMS"); + } + } + catch (Exception ex) + { + LogHelper.Info($"璋冪敤WCS浠诲姟鍙栨秷鎺ュ彛閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS"); + } + return result; } - public class StackerStateModel + /// <summary> + /// 鑾峰彇璁惧鐘舵� + /// </summary> + /// <param name="deviceNoList"></param> + /// <returns></returns> + public static List<DeviceStatusData> getDeviceStatus(List<string> deviceNoList) { - public string req_no { get; set; } - public string roadway { get; set; } + List<DeviceStatusData> deviceStatusDatas = new List<DeviceStatusData>(); + + DeviceStatusModel model = new DeviceStatusModel() + { + reqId = GenerateReqId(), + reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + deviceNoList = deviceNoList + }; + + var request = JsonConvert.SerializeObject(model); + try + { + var response = apiHelper.Post(baseUrl + "/api/hecWms/produceProcessTracing/trayMaterialUnBind", request); + LogHelper.Info($"[WCS-getDeviceStatus] request={request} response={response}", "WMS"); + if (response != null && response != "") + { + + var dataResult = JsonConvert.DeserializeObject<ResponseResult>(response); + if (dataResult.code == 200) + { + deviceStatusDatas = JsonConvert.DeserializeObject<List<DeviceStatusData>>(response); + } + + } + else + { + LogHelper.Info("璋冪敤WCS鑾峰彇璁惧鐘舵�鎺ュ彛澶辫触", "WMS"); + } + } + catch (Exception ex) + { + LogHelper.Info($"璋冪敤WCS鑾峰彇璁惧鐘舵�鎺ュ彛閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS"); + } + return deviceStatusDatas; } + /// <summary> + /// 淇敼浠诲姟浼樺厛绾�+ /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static bool changePriority(ChangePriorityModel model) + { + var result = false; + model.reqId = GenerateReqId(); + model.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + var request = JsonConvert.SerializeObject(model); + try + { + var response = apiHelper.Post(baseUrl + "/api/hecWms/produceProcessTracing/trayMaterialUnBind", request); + LogHelper.Info($"[WCS-changePriority] request={request} response={response}", "WMS"); + if (response != null && response != "") + { + + var dataResult = JsonConvert.DeserializeObject<ResponseResult>(response); + if (dataResult.code == 200) + { + result = true; + } + + } + else + { + LogHelper.Info("璋冪敤WCS淇敼浠诲姟浼樺厛绾ф帴鍙eけ璐�, "WMS"); + } + } + catch (Exception ex) + { + LogHelper.Info($"璋冪敤WCS淇敼浠诲姟浼樺厛绾ф帴鍙i敊璇紝閿欒鍘熷洜锛歿ex.Message}", "WMS"); + } + return result; + } + + /// <summary> + /// AGV瀹夊叏浜や簰 + /// </summary> + /// <param name="req_no"></param> + /// <param name="locCode"></param> + /// <param name="type"></param> + /// <returns></returns> + public static bool safetyInteraction(string req_no, string locCode, string type) + { + var result = false; + LocStateModel model = new LocStateModel() + { + req_no = req_no, + loc_code = locCode, + type = type + }; + + var request = JsonConvert.SerializeObject(model); + try + { + var response = apiHelper.Post(baseUrl + "/api/hecWms/produceProcessTracing/trayMaterialUnBind", request); + LogHelper.Info($"[WCS-changePriority] request={request} response={response}", "WMS"); + if (response != null && response != "") + { + + var dataResult = JsonConvert.DeserializeObject<ResponseResult>(response); + if (dataResult.code == 200) + { + result = true; + } + } + else + { + LogHelper.Info("璋冪敤WCS瀹夊叏璇锋眰鎺ュ彛澶辫触", "AGV"); + } + } + catch (Exception ex) + { + LogHelper.Info($"璋冪敤WCS瀹夊叏璇锋眰鎺ュ彛閿欒锛岄敊璇師鍥狅細{ex.Message}", "AGV"); + } + return result; + } + + + public class LocStateModel + { + public string req_no { get; set; } // 璇锋眰id + public string loc_code { get; set; } // 璐т綅 + public string type { get; set; } // 璐т綅 1 璇锋眰鍙栬揣 2 璇锋眰鏀捐揣 3 鍙栬揣瀹屾垚绂诲紑淇″彿 4 鏀捐揣瀹屾垚绂诲紑淇″彿 + } + + public class ChangePriorityModel + { + public string reqId { get; set; } // 璇锋眰id + public string reqTime { get; set; } // 璇锋眰鏃堕棿 + public string taskNo { get; set; } // 浠诲姟鍙�+ public int priority { get; set; } // 浼樺厛绾�+ } + + public class DeviceStatusData + { + public string deviceNo { get; set; } // 璁惧鍙�+ public int workStatus { get; set; } // 宸ヤ綔鐘舵� 1姝e父 锛�绂佺敤 锛�鏁呴殰 + public int photoStatus { get; set; } // 鍏夌數鐘舵� 1鏄┖杞�,2鏄湁杞�+ public int manualStatus { get; set; } //鎵嬪姩鐘舵� 1鎵嬪姩锛�鑷姩 + } + + public class DeviceStatusModel + { + public string reqId { get; set; } // 璇锋眰id + public string reqTime { get; set; } // 璇锋眰鏃堕棿 + public List<string> deviceNoList { get; set; } // 璁惧鍙�+ } + + public class CancelTaskModel + { + public string reqId { get; set; } // 璇锋眰id + public string reqTime { get; set; } // 璇锋眰鏃堕棿 + public string taskNo { get; set; } // 浠诲姟鍙�+ } + + public class SendTaskModel + { + public string reqId { get; set; } // 璇锋眰id + public string reqTime { get; set; } // 璇锋眰鏃堕棿 + public string taskNo { get; set; } // 浠诲姟鍙�+ public int groupNo { get; set; } // 浠诲姟缁� + public string taskType { get; set; } // 浠诲姟绫诲瀷 1.鐗╂枡鍏ュ簱 2.鐗╂枡鍑哄簱 + public string from { get; set; } // 璧风偣 + public string to { get; set; } // 缁堢偣 + public string cntrNo { get; set; } // 瀹瑰櫒缂栫爜 + public string cntrType { get; set; } // 瀹瑰櫒绫诲瀷 + public List<object> extData { get; set; } // + + } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/EmbryoFinishRecord.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/EmbryoFinishRecord.cs index e1a2662..222eb7f 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/EmbryoFinishRecord.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/EmbryoFinishRecord.cs @@ -7,6 +7,9 @@ namespace HH.WCS.Mobox3.YNJT_PT.models { + /// <summary> + /// 纭寲瀹屾垚璁板綍 + /// </summary> [SugarTable("TN_EmbryoFinishRecord")] public class EmbryoFinishRecord : BaseModel { diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/OffLineRecord.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/OffLineRecord.cs index 8ba5b9e..301bc0b 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/OffLineRecord.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/models/OffLineRecord.cs @@ -20,6 +20,7 @@ public int N_IS_URGENT { get; set; } // N_IS_URGENT 鏄惁鍔犳�锛�.鍚�1.鏄級 public string T_OFF_TIME { get; set; } // 涓嬬嚎鏃堕棿 public int N_IS_FULL { get; set; } // 鏄惁婊℃嫋 0.鍚�1.鏄�+ public int N_NEED_PAIR { get; set; } // 鏄惁闇�閰嶅 0.鍚� 1.鏄紙褰撳墠绌烘墭鐩樹负閰嶅鎵樼洏锛� } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/process/TaskProcess.cs index 95fb466..0cbfa0f 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/process/TaskProcess.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Reflection; using System.Security.Cryptography; +using static HH.WCS.Mobox3.YNJT_PT.dispatch.WCSDispatch; namespace HH.WCS.Mobox3.YNJT_PT.process { internal class TaskProcess { @@ -243,22 +244,67 @@ var startLoc = LocationHelper.GetLocation(mst.S_START_LOC); var endLoc = LocationHelper.GetLocation(mst.S_END_LOC); - if (mst.S_SCHEDULE_TYPE == "NDC") { - - } - else if (mst.S_SCHEDULE_TYPE == "鏉ゥ") { - //璋冪涓夋柟鎺ュ彛 - var model = new HanAo.TaskInfoModel + if (mst.S_SCHEDULE_TYPE == "AGV") + { + AddOrderNewModel model = new AddOrderNewModel() { - requestPk = mst.S_CODE, - frmPos = mst.S_START_LOC, - toPos = mst.S_END_LOC, - trkType = mst.S_OP_NAME == "鍏ュ簱" ? "1" : "2", - contNo = mst.S_CNTR_CODE + ts_no = 1, + pri = 1, + task_no = mst.S_CODE }; - if (HanAo.CreateOrder(model)) { + List<Param> paramList = new List<Param>(); + var dic = new Dictionary<string, string>(); + dic.Add("IKey", mst.S_CODE); + dic.Add("From", startLoc.S_CODE); + dic.Add("To", endLoc.S_CODE); + dic.Add("FUNC", "0"); + if (mst.S_TYPE.Contains("鍏ュ簱")) + { + dic.Add("DATA", "300"); + } + else + { + dic.Add("DATA", "0"); + } + dic.Add("Ctype", "0"); + foreach (var item in dic) + { + Param param = new Param + { + name = item.Key, + value = item.Value, + }; + paramList.Add(param); + } + model.param = paramList; + LogHelper.Info($"鍚慉GV涓嬪彂浠诲姟锛屼换鍔″弬鏁帮細{model}", "WMS"); + var res = NDCApi.AddOrderNew(model); + if (res != null && res.err_code == 0 || true) + { + //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 mst.N_B_STATE = 1; WCSHelper.UpdateStatus(mst); + result = true; + } + } + else if (mst.S_SCHEDULE_TYPE == "WCS") + { + SendTaskModel sendTask = new SendTaskModel() + { + taskNo = mst.S_CODE, + taskType = mst.S_TYPE.Contains("鍏ュ簱") ? "1" : "2", + from = mst.S_START_LOC, + to = mst.S_END_LOC, + cntrNo = mst.S_CNTR_CODE, + }; + LogHelper.Info($"鍚慦CS涓嬪彂浠诲姟锛屼换鍔″弬鏁帮細{sendTask}", "WMS"); + var bo = WCSDispatch.sendTask(sendTask); + if (true || bo) + { + //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 + mst.N_B_STATE = 1; + WCSHelper.UpdateStatus(mst); + result = true; } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/util/Settings.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/util/Settings.cs index 282a25a..733ba17 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/util/Settings.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/util/Settings.cs @@ -18,6 +18,7 @@ public static List<ConnectLoc> connectLocList { get; set; } public static List<OnLineLoc> onLineLocList { get; set; } public static List<CallOutLoc> callOutLocList { get; set; } + public static List<DeviceConfig> deviceConfigList { get; set; } public static int port { get; set; } public static string WHCode { get; set; } public static string FacCode { get; set; } @@ -65,6 +66,10 @@ { callOutLocList = JsonConvert.DeserializeObject<List<CallOutLoc>>(keyValue.Value.ToString()); } + if (keyValue.Name == "DeviceConfig") + { + deviceConfigList = JsonConvert.DeserializeObject<List<DeviceConfig>>(keyValue.Value.ToString()); + } if (keyValue.Name == "StockArea") { stockArea = keyValue.Value.ToString(); @@ -81,6 +86,12 @@ } + public class DeviceConfig + { + public string deviceNo { get; set; } + public string deviceName { get; set; } + public int roadway { get; set; } + } public class ConnectLoc { diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WCSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WCSHelper.cs index d04f74e..66b1684 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WCSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WCSHelper.cs @@ -180,12 +180,16 @@ if (task != null) { task.N_B_STATE = 4; - if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) + WCSHelper.UpdateStatus(task, "鍙栨秷"); + + var mst = WMSHelper.GetWmsTask(task.S_OP_CODE); + if (mst != null) { - WCSHelper.UpdateStatus(task, "寮哄埗瀹屾垚"); - } - else { - WCSHelper.UpdateStatus(task, "鍙栨秷"); + LocationHelper.UnLockLoc(mst.S_END_LOC); + + mst.N_B_STATE = 3; + mst.S_B_STATE = "鍙栨秷"; + WMSHelper.UpdateTaskState(mst); } } } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WMSHelper.cs index a1736e8..69a9200 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WMSHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/WMSHelper.cs @@ -774,6 +774,7 @@ { query = query.Where((a, b, c) => c.S_ITEM_CODE == itemCode); } + query = query.OrderByDescending((a, b, c) => a.N_ROADWAY == prevLoc.N_ROADWAY); var outLocList = query.ToList(); if (outLocList.Count > 0) @@ -781,12 +782,15 @@ foreach (var loc in outLocList) { // 鏌ヨ宸烽亾鏄惁姝e父锛屽紓甯歌烦杩�- var stackerStates = WCSDispatch.getStackerState(loc.N_ROADWAY); - if ( false /*stackerStates.Count == 0 || stackerStates[0].roadway_state == "0" || stackerStates[0].roadway_state == "3"*/) + var deviceConfig = Settings.deviceConfigList.Where(a => a.roadway == loc.N_ROADWAY).First(); + if (deviceConfig != null) { - continue; + var stackerStates = WCSDispatch.getDeviceStatus(new List<string>() { deviceConfig.deviceNo } ); + if ( stackerStates.Count == 0 || stackerStates[0].workStatus != 1 || stackerStates[0].manualStatus == 1 ) + { + continue; + } } - startLoc = loc; break; } diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.ZS7412/dispatch/HanAo.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.ZS7412/dispatch/HanAo.cs index 67fa4e5..7ac2b9a 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.ZS7412/dispatch/HanAo.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.ZS7412/dispatch/HanAo.cs @@ -8,7 +8,7 @@ namespace HH.WCS.Mobox3.ZS7412.dispatch { /// <summary> - /// 鍥借嚜璋冨害杈呭姪绫�+ /// 鏉ゥ /// </summary> public class HanAo { private static readonly HttpHelper apiHelper = new HttpHelper(); -- Gitblit v1.9.1