From 06a8b6963d6d4f229d4e196b4b09ce57e2cbf2dd Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期四, 24 七月 2025 17:21:40 +0800 Subject: [PATCH] 印尼佳通-GT服务开发 --- HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs | 858 +++++++++++++++++++------------------------------------- 1 files changed, 290 insertions(+), 568 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs index cb0e21e..fce8014 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs @@ -28,6 +28,7 @@ } + /// <summary> /// 1.鍒涘缓鍏ュ簱浠诲姟 /// </summary> @@ -36,7 +37,7 @@ ReturnResult result = new ReturnResult(); try { - if (model.taskType == "鏈哄彴鍗婂埗鍝佸叆搴� || model.taskType == "鎴愬瀷鏈轰綑鏂欏洖搴�) + if (model.taskType.Contains("鏈哄彴鍗婂埗鍝佸叆搴�) || model.taskType.Contains("鎴愬瀷鏈轰綑鏂欏叆搴�) || model.taskType.Contains("鍗婂埗鍝佹娊妫�叆搴�)) { var itemInfos = model.itemInfo; if (itemInfos == null || itemInfos.Count == 0) @@ -44,27 +45,6 @@ result.ResultCode = 1; result.ResultMsg = "鐗╂枡淇℃伅涓嶈兘涓虹┖"; return result; - } - else - { - foreach (var item in itemInfos) - { - var overage = WMSHelper.getOverage(item.bc_entried); - if (overage != null) - { - DateTime txndate = DateTime.Parse(item.txndate); - DateTime minTime = txndate.AddHours(overage.MINHOUR); - DateTime maxTime = txndate.AddDays(overage.OVERAGE); - item.effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss"); - item.expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss"); - } - else - { - result.ResultCode = 1; - result.ResultMsg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿item.bc_entried}"; - return result; - } - } } } @@ -120,6 +100,7 @@ S_END_AREA = endLoc.S_AREA_CODE, S_TYPE = model.taskType, S_OP_DEF_CODE = model.taskNo, + S_OP_DEF_NAME = "鍗婂埗鍝�浣欐枡/绌烘墭涓嬪彂鍏ュ簱浠诲姟", N_PRIORITY = model.priority, T_START_TIME = DateTime.Now, }; @@ -182,95 +163,14 @@ ReturnResult result = new ReturnResult(); try { - Location startLoc = WMSHelper.GetEmptyTrayStartLoc(model.trayType); - Location middleLoc = null; - string cntrCode = ""; - string descCntrCode = ""; - if (startLoc != null) + EmptyTrayBuffer buffer = new EmptyTrayBuffer() { - // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�- var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); - if (locCntrRels.Count > 0) - { - foreach (var item in locCntrRels) - { - var container = ContainerHelper.GetCntr(item.S_CNTR_CODE); - if (model.trayType == container.N_TYPE) - { - descCntrCode = item.S_CNTR_CODE; - } - cntrCode = cntrCode + "," + item.S_CNTR_CODE; - } - cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); - } - - var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2); - if (locCodes.Count > 0) - { - middleLoc = LocationHelper.GetLoc(locCodes[0]); - } - } - - Location endLoc = LocationHelper.GetLoc(model.endLoc); - if (endLoc == null) - { - result.ResultCode = 1; - result.ResultMsg = "WMS绯荤粺娌℃湁璇ヨ揣浣嶏紝璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�; - return result; - } - - if (startLoc != null) - { - var wmsTask = new WMSTask() - { - S_CNTR_CODE = descCntrCode, - 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.taskNo, - N_PRIORITY = model.priority, - 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 = cntrCode, - S_TYPE = wmsTask.S_TYPE + "-1", - 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 = 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); - } - } - } - else - { - result.ResultCode = 1; - result.ResultMsg = "搴撳唴娌℃湁鏌ュ埌绌烘墭鐩�; - } + TASK_NO = model.taskNo, + TRAY_TYPE = model.trayType, + END_LOC = model.endLoc, + PRIORITY = model.priority, + }; + WMSHelper.addEmptyTrayBuffer(buffer); } catch (Exception ex) { @@ -291,89 +191,125 @@ ReturnResult result = new ReturnResult(); try { - Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode); - Location middleLoc = null; - string descCntrCode = ""; - string cntrCode = ""; - if (startLoc != null) + Location endLoc = LocationHelper.GetLoc(model.endLoc); + if (endLoc.N_CURRENT_NUM == 0) { - // 鏌ヨ鎺ラ┏浣�- var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2); - if (locCodes.Count > 0) + int taskNum = 0; + for (int i = 0; i < endLoc.N_CAPACITY; i++) { - middleLoc = LocationHelper.GetLoc(locCodes[0]); + Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode); + Location middleLoc = null; + string descCntrCode = ""; + string cntrCode = ""; + if (startLoc != null) + { + // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�+ var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); + if (locCntrRels.Count > 0) + { + foreach (var item in locCntrRels) + { + var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE); + if (cntrItemRels.Count > 0) + { + descCntrCode = cntrItemRels[0].S_CNTR_CODE; + } + cntrCode = cntrCode + "," + item.S_CNTR_CODE; + } + cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); + } + } + else + { + LogHelper.Info($"搴撳唴娌℃湁鐗╂枡:{model.itemCode}", "WMS"); + break; + } + + var container = ContainerHelper.GetCntr(descCntrCode); + if (container != null) + { + int isExistBaseTray = 2; + if (container.N_TYPE == 4) + { + isExistBaseTray = 1; + } + + // 鏌ヨ鎺ラ┏浣�+ middleLoc = WMSHelper.getAgvJBLoc(startLoc.N_ROADWAY, 2, isExistBaseTray, 2); + + if (endLoc != null) + { + string taskType = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�; + if (model.taskType == 2) + { + taskType = "鎶芥鍙枡鍑哄簱浠诲姟"; + } + + var wmsTask = new WMSTask() + { + S_CNTR_CODE = descCntrCode, + 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 = taskType, + S_OP_DEF_CODE = model.taskNo, + S_OP_DEF_NAME = "鍙枡鍑哄簱浠诲姟", + N_PRIORITY = model.priority, + 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 = cntrCode, + S_TYPE = wmsTask.S_TYPE + "-1", + 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 = 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); + taskNum++; + } + } + } + } + else + { + result.ResultCode = 1; + result.ResultMsg = $"瀹瑰櫒锛歿cntrCode}涓嶅瓨鍦�; + } } - // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�- var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); - if (locCntrRels.Count > 0) + if (taskNum < endLoc.N_CAPACITY) { - foreach (var item in locCntrRels) - { - var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE); - if (cntrItemRels.Count > 0) - { - descCntrCode = cntrItemRels[0].S_CNTR_CODE; - } - cntrCode = cntrCode + "," + item.S_CNTR_CODE; - } - cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); + result.ResultCode = 1; + result.ResultMsg = $"搴撳唴鐗╂枡涓嶈冻锛屽凡鐢熸垚鍑哄簱浠诲姟鏁�{taskNum}"; } } else { result.ResultCode = 1; - result.ResultMsg = "搴撳唴娌℃湁鏌ュ埌姝ょ墿鏂�; - return result; - } - - Location endLoc = LocationHelper.GetLoc(model.endLoc); - if (endLoc != null) - { - var wmsTask = new WMSTask() - { - S_CNTR_CODE = descCntrCode, - 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.taskNo, - N_PRIORITY = model.priority, - 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 = cntrCode, - S_TYPE = wmsTask.S_TYPE + "-1", - 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 = 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); - } - } + result.ResultMsg = "缁堢偣璐т綅褰撳墠瀹归噺涓嶄负0锛屾棤娉曞彨鏂�; } } catch (Exception ex) @@ -395,36 +331,14 @@ ReturnResult result = new ReturnResult(); try { - if(model.itemInfo != null && model.itemInfo.Count > 0) - { - foreach (var item in model.itemInfo) - { - var overage = WMSHelper.getOverage(item.bc_entried); - if (overage != null) - { - DateTime txndate = DateTime.Parse(item.txndate); - DateTime minTime = txndate.AddHours(overage.MINHOUR); - DateTime maxTime = txndate.AddDays(overage.OVERAGE); - item.effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss"); - item.expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss"); - } - else - { - result.ResultCode = 1; - result.ResultMsg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿item.bc_entried}"; - return result; - } - } - } - var container = ContainerHelper.GetCntr(model.trayCode); - if (container != null) + if (container != null) { Location startLoc = LocationHelper.GetLoc(model.startLoc); - Location endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, model.startLoc, 2); - - if (endLoc != null) + var instockEndLocResult = WMSHelper.GetInstockEndLoc( 0, container.N_TYPE, 0, null, model.startLoc); + if (instockEndLocResult.endLoc != null && instockEndLocResult.agvLoc != null) { + var endLoc = instockEndLocResult.endLoc; string cntrCode = model.trayCode; var locCntrRels = LocationHelper.GetLocCntr(model.startLoc); if (locCntrRels.Count > 0) @@ -442,6 +356,7 @@ S_END_AREA = endLoc.S_AREA_CODE, S_TYPE = "浜哄伐鍏ュ簱浠诲姟", S_OP_DEF_CODE = model.taskNo, + S_OP_DEF_NAME = "浜哄伐鍏ュ簱浠诲姟", N_PRIORITY = model.priority, T_START_TIME = DateTime.Now, }; @@ -483,8 +398,13 @@ else { result.ResultCode = 1; - result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�; + result.ResultMsg = "绔嬪簱娌℃湁绌轰綑鐨勮揣浣�; } + } + else + { + result.ResultCode = 1; + result.ResultMsg = "WMS绯荤粺涓病鏈夎瀹瑰櫒"; } } catch (Exception ex) @@ -538,6 +458,7 @@ S_END_AREA = endLoc.S_AREA_CODE, S_TYPE = "浜哄伐鍑哄簱浠诲姟", S_OP_DEF_CODE = model.taskNo, + S_OP_DEF_NAME = "浜哄伐鍑哄簱浠诲姟", N_PRIORITY = model.priority, T_START_TIME = DateTime.Now, }; @@ -576,7 +497,7 @@ else { result.ResultCode = 1; - result.ResultMsg = "搴撳唴娌℃湁姝ょ墿鏂�; + result.ResultMsg = "搴撳唴娌℃湁婊¤冻鏉′欢鐨勭墿鏂�; } } catch (Exception ex) @@ -601,111 +522,19 @@ try { Location startLoc = LocationHelper.GetLoc(loc); - Location endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2); - - if (endLoc != null && startLoc != null) - { - string trayCode = null; - var locCntrRels = LocationHelper.GetLocCntrRel(loc); - if (locCntrRels.Count > 0) - { - var container = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE); - if (container.N_TYPE == 0) - { - trayCode = container.S_CODE; - } - } - else - { - trayCode = ContainerHelper.GenerateCntrNo(); - ContainerHelper.AddCntr(trayCode, 0); - } - - if (trayCode != null) - { - var wmsTask = new WMSTask() - { - S_CNTR_CODE = 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 = taskNo, - 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 + "-1", - 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); - } - } - } - } - else + if (startLoc == null) { result.ResultCode = 1; - result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�; + result.ResultMsg = "寮�璐т綅涓嶅瓨鍦紒"; + return result; } - } - catch (Exception ex) - { - result.ResultCode = 1; - result.ResultMsg = "WMS鍐呴儴閿欒锛岃鑱旂郴寮�彂浜哄憳鎺掓煡"; - LogHelper.Info($"WMS鍐呴儴閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS"); - } - return result; - } - - /// <summary> - /// 6.1.姣嶆嫋鍏ュ簱浠诲姟 - /// </summary> - /// <param name="loc"></param> - /// <param name="wmsTaskNo"></param> - /// <returns></returns> - public static ReturnResult baseTrayInStockAgv(string loc, string wmsTaskNo) - { - ReturnResult result = new ReturnResult(); - try - { - var mst = WMSHelper.GetWmsTask(wmsTaskNo); - if (mst != null && mst.N_B_STATE < 2) + var cst = WCSHelper.GetTaskByStart(loc); + if (cst == null) { - Location startLoc = LocationHelper.GetLoc(loc); - Location endLoc = LocationHelper.GetLoc(Settings.baseTrayInBufferLoc); - if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0)) + var instockEndLocResult = WMSHelper.GetInstockEndLoc(0, 0, 0, null, loc); + if (instockEndLocResult.endLoc != null && instockEndLocResult.agvLoc != null) { - endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2); - } - - if (endLoc != null && startLoc != null) - { + var endLoc = instockEndLocResult.endLoc; string trayCode = null; var locCntrRels = LocationHelper.GetLocCntrRel(loc); if (locCntrRels.Count > 0) @@ -724,28 +553,49 @@ if (trayCode != null) { - // 鍒涘缓涓�鍏ュ簱浠诲姟 - WCSTask wcsTask = new WCSTask() + var wmsTask = new WMSTask() { - S_OP_NAME = mst.S_OP_DEF_NAME, - S_OP_CODE = mst.S_CODE, - S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = trayCode, - S_TYPE = "姣嶆嫋鍏ュ簱浠诲姟", + 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_SCHEDULE_TYPE = "WCS", + S_TYPE = "姣嶆嫋鍏ュ簱浠诲姟", + S_OP_DEF_CODE = taskNo, + S_OP_DEF_NAME = "姣嶆嫋鍏ュ簱浠诲姟", N_PRIORITY = 1, T_START_TIME = DateTime.Now, }; - - if (WCSHelper.CreateTask(wcsTask)) + if (WMSHelper.CreateWmsTask(wmsTask)) { - // 璧风偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + // 鍒涘缓涓�鍏ュ簱浠诲姟 + 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 + "-1", + 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); + } } } } @@ -755,6 +605,7 @@ result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�; } } + } catch (Exception ex) { @@ -777,99 +628,11 @@ ReturnResult result = new ReturnResult(); try { - Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0, 1); - Location endLoc = LocationHelper.GetLoc(loc); - var agvJBLoc = Settings.getAgvJBLoc(loc); - - if (startLoc != null) + var cst = WCSHelper.GetTaskByEnd(loc); + if (cst == null) { - string trayCode = null; - var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE); - if (locCntrRels.Count == 1) - { - trayCode = locCntrRels[0].S_CNTR_CODE; - } - if (trayCode != null) - { - var wmsTask = new WMSTask() - { - S_CNTR_CODE = 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 = taskNo, - 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 + "-1", - 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); - } - } - } - } - else - { - result.ResultCode = 1; - result.ResultMsg = "娌℃湁绌轰綑鐨勬瘝鎷�; - LogHelper.Info("銆愭瘝鎷栧嚭搴撲换鍔°�搴撳唴娌℃湁绌轰綑鐨勬瘝鎷�, "WMS"); - } - } - catch (Exception ex) - { - result.ResultCode = 1; - result.ResultMsg = "WMS鍐呴儴閿欒锛岃鑱旂郴寮�彂浜哄憳鎺掓煡"; - LogHelper.Info($"WMS鍐呴儴閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS"); - } - return result; - } - - /// <summary> - /// 7.1.姣嶆嫋鍑哄簱浠诲姟锛圓GV锛�- /// </summary> - /// <param name="loc"></param> - /// <param name="wmsTaskNo"></param> - /// <returns></returns> - public static ReturnResult baseTrayOutStockAgv(string loc, string wmsTaskNo) - { - ReturnResult result = new ReturnResult(); - try - { - var mst = WMSHelper.GetWmsTask(wmsTaskNo); - if (mst != null && mst.N_B_STATE < 2) - { - Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0,0); + Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0); Location endLoc = LocationHelper.GetLoc(loc); - if (startLoc != null) { string trayCode = null; @@ -878,31 +641,52 @@ { trayCode = locCntrRels[0].S_CNTR_CODE; } - if (trayCode != null) { - // 鍒涘缓鍏ュ簱浠诲姟 - WCSTask wcsTask = new WCSTask() + var wmsTask = new WMSTask() { - S_OP_NAME = mst.S_OP_DEF_NAME, - S_OP_CODE = mst.S_CODE, - S_CODE = WCSHelper.GenerateTaskNo(), S_CNTR_CODE = trayCode, - S_TYPE = "姣嶆嫋鍑哄簱浠诲姟", + 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_SCHEDULE_TYPE = "WCS", + S_TYPE = "姣嶆嫋鍑哄簱浠诲姟", + S_OP_DEF_CODE = taskNo, + S_OP_DEF_NAME = "姣嶆嫋鍑哄簱浠诲姟", N_PRIORITY = 1, T_START_TIME = DateTime.Now, }; - if (WCSHelper.CreateTask(wcsTask)) + if (WMSHelper.CreateWmsTask(wmsTask)) { - // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + // 鍒涘缓涓�鍏ュ簱浠诲姟 + 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 + "-1", + 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); + } } } } @@ -910,8 +694,9 @@ { result.ResultCode = 1; result.ResultMsg = "娌℃湁绌轰綑鐨勬瘝鎷�; + LogHelper.Info("銆愭瘝鎷栧嚭搴撲换鍔°�搴撳唴娌℃湁绌轰綑鐨勬瘝鎷�, "WMS"); } - } + } } catch (Exception ex) { @@ -966,10 +751,9 @@ TaskProcess.OperateStatus(cst, 6); break; case 7: - WCSHelper.UpdateStatus(cst, "寮傚父鍙栨秷"); + WCSHelper.Cancel(cst); + WCSHelper.UpdateStatus(cst, "鍙栨秷"); TaskProcess.OperateStatus(cst, 7); - mst.N_B_STATE = 3; - WMSHelper.UpdateTaskState(mst); break; case 8: WCSHelper.UpdateStatus(cst, "寮哄埗瀹屾垚"); @@ -1000,81 +784,32 @@ } /// <summary> - /// 璇荤爜鍙嶉 + /// 璐т綅鐘舵�鍙嶉 /// </summary> /// <param name="model"></param> /// <returns></returns> - public static ReturnResult readCodeFeedback(ReadCodeFeedbackModel model) + public static bool locStateFeedBack(LocStateFeedBackModel model) { - ReturnResult responseResult = new ReturnResult(); - var locCntrRels = LocationHelper.GetLocCntr(model.locCode); - if (locCntrRels.Count > 0) + bool result = false; + var task = WCSHelper.GetTask(model.req_no); + if (task != null) { - foreach (var locCntr in locCntrRels) + TaskAction taskAction = null; + if (model.type == "1") { - var container = ContainerHelper.GetCntr(locCntr.S_CNTR_CODE); - if (container != null && container.N_TYPE != 0) - { - var mst = WMSHelper.GetWmsTaskByCntr(locCntr.S_CNTR_CODE); - if (mst != null) - { - int actType = 1; - if (locCntr.S_CNTR_CODE == model.trayCode) - { - if (mst.S_END_LOC == "铏氭嫙璐т綅") - { - // 鑾峰彇鍏ュ簱缁堢偣 - var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, model.locCode, 1); - if (endLoc != null) - { - mst.S_END_LOC = endLoc.S_CODE; - mst.S_END_AREA = endLoc.S_AREA_CODE; - } - else - { - LogHelper.Info("銆怶CS璇荤爜鍙嶉銆戯紝娌℃湁鑾峰彇鍒扮粓鐐硅揣浣嶏紝鍙兘绔嬪簱娌℃湁绌轰綑璐т綅", "WMS"); - responseResult.ResultCode = 1; - responseResult.ResultMsg = "娌℃湁鑾峰彇鍒扮粓鐐硅揣浣嶏紝鍙兘绔嬪簱娌℃湁绌轰綑璐т綅"; - return responseResult; - } - } - } - else - { - LogHelper.Info($"銆怶CS璇荤爜鍙嶉銆戯紝鎵樼洏鐮佸尮閰嶅け璐ワ紝鍙嶉鎵樼洏鐮侊細{model.trayCode} ,璐т綅{model.locCode}鎵樼洏鐮侊細{locCntr.S_CNTR_CODE}", "WMS"); - // 鑾峰彇鍏ュ簱缁堢偣 - var endLoc = WMSHelper.getErrorBufferAreaLoc(); - if (endLoc != null) - { - actType = 2; - LocationHelper.UnLockLoc(mst.S_END_LOC); - mst.S_END_LOC = endLoc.S_CODE; - mst.S_END_AREA = endLoc.S_AREA_CODE; - } - else - { - LogHelper.Info("銆怶CS璇荤爜鍙嶉銆戯紝娌℃湁鑾峰彇鍒扮紦瀛樿揣浣�, "WMS"); - responseResult.ResultCode = 1; - responseResult.ResultMsg = "娌℃湁鑾峰彇鍒扮紦瀛樿揣浣�; - return responseResult; - } - } - - // 鍒涘缓涓嬩釜浠诲姟 - if (mst.S_END_LOC != "铏氭嫙璐т綅") - { - WMSHelper.UpdateTaskEnd(mst); - WCSCore.createLastTask(model.locCode, mst, actType); - } - } - else - { - LogHelper.Info($"銆怶CS璇荤爜鍙嶉銆戯紝瀹瑰櫒:{model.trayCode}娌℃湁鏌ヨ鍒版墽琛屼腑浠诲姟", "WMS"); - } - } + taskAction = WCSHelper.getActionRecord(task.S_CODE, 1101); + } + if (model.type == "2") + { + taskAction = WCSHelper.getActionRecord(task.S_CODE, 1103); + } + if (taskAction != null) + { + taskAction.N_S_STATUS = 1; + result = WCSHelper.updateActionRecord(taskAction); } } - return responseResult; + return result; } /// <summary> @@ -1091,25 +826,19 @@ { ItemBarcodeInfo itemBarcodeInfo = new ItemBarcodeInfo() { + N_RECID = matl.recid, S_ITEM = matl.item, - S_BC_ENTRIED = matl.bc_entried, + S_BC_ENTRIED = matl.barcode, + S_TOOLING_CODE = matl.toolineCode, S_MCN = matl.mcn, - S_OPR = matl.opr, TXNDATE = DateTime.Parse(matl.txndate, enGB) , S_SHIFT = matl.shift, N_QTY = matl.qty, - N_STOCK = matl.stock, - S_LOKASI = matl.lokasi, - S_SARANA = matl.sarana, - BOM1 = matl.bom1, - BOM2 = matl.bom2, - BOM3 = matl.bom3, - S_FOVRAGE = matl.fovrage, S_JDGE = matl.jdge, - S_WMS_JDGE = matl.WMS_jdge, - EFFECTIVE_TIME = matl.effective_time, - EXPIRATION_TIME = matl.expiration_time, - LAST_MODIFY_TIME = matl.last_modify_time + N_OVERAGE = matl.overagv, + N_MINHOUR = matl.minhour, + N_PRODUCT_TYPE_CODE = matl.productTypeCode, + LAST_MODIFY_TIME = matl.last_modify_time, }; itemBarcodeInfos.Add(itemBarcodeInfo); } @@ -1118,95 +847,88 @@ if (!bo) { responseResult.ResultCode = 1; - responseResult.ResultMsg = "鍚屾鐗╂枡鏉$爜淇℃伅澶辫触"; + responseResult.ResultMsg = "鍚屾GT鏉$爜鐗╂枡淇℃伅澶辫触"; } return responseResult; } /// <summary> - /// 鍚屾鐗╂枡鐘舵�淇℃伅 + /// 鍚屾鏉$爜鐘舵�淇℃伅 /// </summary> /// <param name="updateMatlStatuses"></param> /// <returns></returns> - public static ReturnResult synUpdateMatlStatus(List<UpdateMatlStatus> updateMatlStatuses) + public static ReturnResult synBarcodeStatus(List<UpdateMatlStatus> updateMatlStatuses) { ReturnResult responseResult = new ReturnResult(); - var bo = WMSHelper.batchUpdateItemStatus(updateMatlStatuses); - if (!bo) + List<IwmsSemiBldBcstatus> list = new List<IwmsSemiBldBcstatus> (); + if (updateMatlStatuses.Count > 0) { - responseResult.ResultCode = 1; - responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触"; - } - return responseResult; - } - - /// <summary> - /// 鍚屾鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅 - /// </summary> - /// <param name="overages"></param> - /// <returns></returns> - public static ReturnResult synUpdateMatlTimeConfig(List<MatlOverage> overages) - { - ReturnResult responseResult = new ReturnResult(); - if (overages != null && overages.Count > 0) - { - List<Overage> overageList = new List<Overage>(); - - foreach (var item in overages) + foreach (var item in updateMatlStatuses) { - Overage overage = new Overage + IwmsSemiBldBcstatus bCstatus = new IwmsSemiBldBcstatus() { - MCNGRP = item.mcngrp, - ITEMPATT = item.itempatt, - OVERAGE = item.overage, - MINHOUR = int.Parse(item.minhour.ToString()) , - FLAG_STS = item.flag_sts, + N_RECID = item.recid, + S_BC_ENTRIED = item.barcode, + S_MCNGRP = item.mcngrp, + S_JDGE = item.jdge, + LAST_MODIFY_TIME = item.last_modify_time }; - overageList.Add(overage); + list.Add(bCstatus); } - var bo = WMSHelper.batchUpdateMatlTimeConfig(overageList); + + var bo = WMSHelper.synBarcodeStatus(list); if (!bo) { responseResult.ResultCode = 1; - responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触"; + responseResult.ResultMsg = "鍚屾鏉$爜鐘舵�淇℃伅澶辫触"; } } return responseResult; } /// <summary> - /// 璁板綍鏁版嵁鍚屾鏃堕棿 + /// 鍚屾鏉$爜鐘舵�淇℃伅 /// </summary> - /// <param name="model"></param> + /// <param name="updateMatlStatuses"></param> /// <returns></returns> - public static ReturnResult recordDataSynTime(RecordDataSynTimeModel model) + public static ReturnResult synSampleStatus(List<UpdateMatlStatus> updateMatlStatuses) { ReturnResult responseResult = new ReturnResult(); - SynDataTimeRecord record = new SynDataTimeRecord() + List<IwmsSemiBldBcsample> list = new List<IwmsSemiBldBcsample>(); + if (updateMatlStatuses.Count > 0) { - S_SYN_TIME = model.sysTime, - N_SYN_NUM = model.synNum, - RECORD_TABLE = model.recordTable - }; - var bo = WMSHelper.addSynDataTimeReord(record); - if (!bo) - { - responseResult.ResultCode = 1; - responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触"; + foreach (var item in updateMatlStatuses) + { + IwmsSemiBldBcsample bCstatus = new IwmsSemiBldBcsample() + { + N_RECID= item.recid, + S_BC_ENTRIED = item.barcode, + S_MCNGRP = item.mcngrp, + S_JDGE = item.jdge, + LAST_MODIFY_TIME = item.last_modify_time + }; + list.Add(bCstatus); + } + + var bo = WMSHelper.synSamplingStatus(list); + if (!bo) + { + responseResult.ResultCode = 1; + responseResult.ResultMsg = "鍚屾鏉$爜鐘舵�淇℃伅澶辫触"; + } } return responseResult; } - /// <summary> /// 鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿 /// </summary> - /// <param name="recordTable"></param> + /// <param name="tableType"></param> /// <returns></returns> - public static ReturnResult findLastDataSynTime(string recordTable) + public static ReturnResult findDataLastSynTime(int tableType) { ReturnResult responseResult = new ReturnResult(); - var synDataTime = WMSHelper.getLastDataSynTime(recordTable); + var synDataTime = WMSHelper.getDataLastSynTime(tableType); responseResult.data = synDataTime; return responseResult; } @@ -1272,10 +994,11 @@ public class CreateOutOrderModel { public string taskNo { get; set; } // 浠诲姟鍙�- public string trayCode { get; set; } // 浠诲姟鍙�+ public string trayCode { get; set; } // 鎵樼洏鍙� public string itemCode { get; set; } // 鐗╂枡缂栫爜 public string endLoc { get; set; } // 缁堢偣璐т綅 public int priority { get; set; } = 0; // 浼樺厛绾�榛樿0 + public int taskType { get; set; } = 1; // 1.鎴愬瀷鏈哄彨鏂欎换鍔�2.鎶芥鍑哄簱浠诲姟 } public class EmptyTrayOutOrderModel @@ -1290,7 +1013,7 @@ { public string taskNo { get; set; } // 浠诲姟鍙� public string startLoc { get; set; } // 璧风偣璐т綅 - public string taskType { get; set; } // 浠诲姟绫诲瀷 鍏ュ簱鍥炲簱绫诲瀷锛�锛氭満鍙板崐鍒跺搧鍏ュ簱锛�锛氭垚鍨嬫満浣欐枡鍥炲簱锛�锛氭垚鍨嬫満绌烘墭鍥炲簱 + public string taskType { get; set; } // 浠诲姟绫诲瀷 鍏ュ簱鍥炲簱绫诲瀷锛�锛氭満鍙板崐鍒跺搧鍏ュ簱锛�锛氭垚鍨嬫満浣欐枡鍏ュ簱锛�锛氭垚鍨嬫満绌烘墭鍏ュ簱锛�锛氬崐鍒跺搧鎶芥鍏ュ簱 public string trayCode { get; set; } // 鎵樼洏鍙� public int priority { get; set; } = 0;// 浼樺厛绾�榛樿浼� public List<GTItemInfo> itemInfo { get; set; } @@ -1300,16 +1023,15 @@ { public string item { get; set; } // 鐗╁搧浠g爜 public string bc_entried { get; set; } // 鏉″舰鐮佺紪鍙�+ public string toolineCode { get; set; } // 宸ヨ鏉$爜 public string mcn { get; set; } // 鏈哄櫒浠g爜缂栧彿 - public string opr { get; set; } // 鎿嶄綔鍛� public string txndate { get; set; } // 鐢熶骇鏃堕棿 public string shift { get; set; } // 宸ヤ綔鐝 public int qty { get; set; } // 浜у搧鏁伴噺 - public string sarana { get; set; } // 浜у搧鏉愭枡鐨勬墭鐩�鐩�鎺ㄨ溅/璐ц溅ID - public string fovrage { get; set; } // 鏄惁杩囨湡鐨勭姸鎬�Y=杩囨湡锛孨=鏈繃鏈�- public string jdge { get; set; } // 璐ㄩ噺鐘舵� OK=浜у搧鍚堟牸锛孨G=浜у搧涓嶅悎鏍硷紝HLM=浜у搧寰呭畾 - public string effective_time { get; set; } // 鐢熸晥鏃堕棿 (yyyy-MM-dd HH:mm:ss) - public string expiration_time { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss) + public string jdge { get; set; } // 璐ㄩ噺鐘舵� OK=浜у搧鍚堟牸锛孒OLD = 浜у搧寰呭畾 + public int overage { get; set; } // 鐢熸晥鏃堕棿 (yyyy-MM-dd HH:mm:ss) + public int minhour { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss) + public int productTypeCode { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss) } -- Gitblit v1.9.1