From d66d362ee6d76f02331e56df1fdec1c2114c9f3e Mon Sep 17 00:00:00 2001 From: zxx <Zxx@HanInfo> Date: 星期三, 16 七月 2025 17:31:41 +0800 Subject: [PATCH] 1 --- HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs | 739 +++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 562 insertions(+), 177 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs index d2a5cdf..6e250bf 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs @@ -27,6 +27,9 @@ using Newtonsoft.Json.Linq; using S7.Net; using System.Threading.Tasks; +using HH.WCS.XiaoMi.LISTA.dispatch; +using static HH.WCS.XiaoMi.LISTA.dispatch.RcsHelper; +using System.Diagnostics; namespace HH.WCS.XiaoMi.process { @@ -46,32 +49,14 @@ { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}"); - if (mst.S_FRAME_CODE != null) - { - LocationHelper.UnBindingLocHj(mst.S_START_LOC, mst.S_FRAME_CODE); + LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); - } - else - { - LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); - - } } else { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}"); - //濡傛灉璐ф灦鏈夊�鍒欑粦璐ф灦 - if (mst.S_FRAME_CODE!=null) - { - LocationHelper.BindingLocHj(mst.S_END_LOC, mst.S_FRAME_CODE); - - } - else - { - LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); - - } + LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } } @@ -138,9 +123,15 @@ if (state == 7) { CacheBitCancelUpdate(mst); + ////灏忕背璁㈠崟鍙栨秷 + //CancelModel cancelModel = new CancelModel(); + //cancelModel.order_name = mst.S_CODE; + //cancelModel.order_command_type_id = 2; + //RcsHelper.CancelOrder(cancelModel); + } } - + private static object locLocker = new object(); /// <summary> @@ -368,7 +359,127 @@ else { result = true; } return result; } + //灏忕背鎺ㄩ�浠诲姟 + internal static bool SendXmTask(WCSTask mst) + { + var result = false; + var taskState = mst.N_B_STATE; + if (taskState == 0) + { + Console.WriteLine($"浠诲姟mst {JsonConvert.SerializeObject(mst)}"); + LogHelper.Info($"浠诲姟mst {JsonConvert.SerializeObject(mst)}", "浠诲姟"); + //var startLoc = LocationHelper.GetLoc(mst.S_START_LOC); + //var endLoc = LocationHelper.GetLoc(mst.S_END_LOC); + if (mst.S_START_LOC != null && mst.S_END_LOC != null) + { + bool res = false; + if (mst.S_TYPE == "澶т欢") + { + string src = $"\"src\":\"{mst.S_START_LOC}\","; + string dst = $"\"dst\":\"{mst.S_END_LOC}\","; + string carrier_type_id = $"\"carrier_type_id\":\"1\""; + string parmeS = "{"; + string parmeD = "}"; + string parme = parmeS + src + dst + carrier_type_id + parmeD; + LogHelper.Info($"鎺ㄩ�浠诲姟鍙傛暟{parme}", "浠诲姟"); + AntsTaskModel model = new AntsTaskModel(); + model.order_name = mst.S_CODE; + model.priority = 1; + model.dead_line = DateTime.Now.ToString(); + model.ts_name = "p2p"; + model.parameters = parme; + //model.parameters = new AntsParasModel { + // src = mst.S_START_LOC, + // dst = mst.S_END_LOC, + // carrier_type_id="-99" + //}; + res = RcsHelper.CreateAntsOrder(model); + } + else if (mst.S_TYPE == "灏忎欢閫氱敤杞﹀瀷") + { + string src = $"\"src\":\"{mst.S_START_LOC}\","; + string dst = $"\"dst\":\"{mst.S_END_LOC}\","; + string car_type = $"\"car_type\":\"1\","; + string src_ort = $"\"src_ort\":\"-1\","; + string dst_ort = $"\"dst_ort\":\"-1\""; + string parmeS = "{"; + string parmeD = "}"; + string parme = parmeS + src + dst + car_type + src_ort + dst_ort + parmeD; + + LogHelper.Info($"鎺ㄩ�浠诲姟鍙傛暟{parme}", "浠诲姟"); + + PickingTaskModel model = new PickingTaskModel(); + model.order_name = mst.S_CODE; + model.priority = 1; + model.dead_line = DateTime.Now.ToString(); + model.ts_name = "p2p"; + model.parameters = parme; + //model.parameters = new AntsParasModel { + // src = mst.S_START_LOC, + // dst = mst.S_END_LOC, + // carrier_type_id="-99" + //}; + res = RcsHelper.CreatePickingOrder(model); + } + else if (mst.S_TYPE == "inbound") + { + //鏌ュ嚭璐ф灦缂栫爜 + var db = new SqlHelper<Object>().GetInstance(); + var locFrameRel = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == mst.S_START_LOC).First(); + string tote_id = $"\"tote_id\":\"{locFrameRel.S_FRAME_CODE}\","; + string task_type = $"\"task_type\":\"{mst.S_TYPE}\","; + string src = $"\"src\":\"{mst.S_START_LOC}\","; + string dst = $"\"dst\":\"{mst.S_END_LOC}\","; + + string extra_info = $"\"extra_info\":"; + string layer = $"\"layer\":[1,2,3,4],"; + string put = $"\"put\":true"; + string parmeS = "{"; + string parmeD = "}"; + string parmezS = "["; + string parmezD = "]"; + string parme = parmeS + tote_id + task_type + src + dst + extra_info + parmezS+ parmeS + layer + put + parmeD + parmezD + parmeD; + + LogHelper.Info($"鎺ㄩ�浠诲姟鍙傛暟{parme}", "浠诲姟"); + + PickingTaskModel model = new PickingTaskModel(); + model.order_name = mst.S_CODE; + model.priority = 1; + model.dead_line = DateTime.Now.ToString(); + model.ts_name = "picking_ts"; + model.parameters = parme; + //model.parameters = new AntsParasModel { + // src = mst.S_START_LOC, + // dst = mst.S_END_LOC, + // carrier_type_id="-99" + //}; + res = RcsHelper.CreatePickingOrder(model); + } + + + if (res) + { + //鏇存柊浠诲姟鐘舵� + mst.N_B_STATE = 1; + //mst.S_EQ_TASK_CODE = res.ToString(); + WCSHelper.UpdateStatus(mst); + WCSHelper.UpdateEQNo(mst); + ////鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔$姸鎬�+ //TaskHelper.UpdateStatus(mst, "宸叉帹閫�); + ////鎺ㄩ�鎴愬姛锛屼慨鏀瑰浗鑷狪D + //TaskHelper.UpdateGzId(mst, res); + LogHelper.Info($"浠诲姟mst {mst.S_CODE}鎺ㄩ�鎴愬姛", "浠诲姟"); + result = true; + } + + } + + } + + else { result = true; } + return result; + } /// <summary> /// 鍒涘缓鎼繍浠诲姟 @@ -396,6 +507,28 @@ //浠诲姟鍒涘缓鎴愬姛锛岃捣鐐硅揣浣嶅嚭搴撻攣瀹氾紝缁堢偣璐т綅鍏ュ簱閿佸畾 LocationHelper.LockLoc(start, 2); LocationHelper.LockLoc(end, 1); + } + return result; + } + //灏忕背澶т欢 + public static bool CreateTransportDj(string start, string end, string taskType, string cntrs, string orderName, int startLayer, int endLayer, int trayCarryCount = 1, int priority = 1) + { + var result = false; + var trayCodes = cntrs; + var taskNo = DateTime.Now.Ticks.ToString(); + + + + var res = WCSHelper.CreateTaskDj(taskNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, orderName, trayCarryCount, startLayer, endLayer); + if (res) + { + result = true; + //浠诲姟鍒涘缓鎴愬姛锛岃捣鐐硅揣浣嶅嚭搴撻攣瀹氾紝缁堢偣璐т綅鍏ュ簱閿佸畾 + LocationHelper.LockLoc(start, 2); + if (end!=null&& end != "") + { + LocationHelper.LockLoc(end, 1); + } } return result; } @@ -714,7 +847,7 @@ result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); } - + } } @@ -728,7 +861,7 @@ /// <summary> - /// 鍑哄簱绠楁硶 + /// 鍑哄簱绠楁硶 鍏堣繘鍏堝嚭 /// </summary> /// <param name="area">搴撳尯</param> /// <returns></returns> @@ -767,6 +900,108 @@ LogHelper.Error("OutWorkTransport:" + ex.Message, ex); } return result; + } + + /// <summary> + /// 灏忕背鍑哄簱绠楁硶 鍏堣繘鍏堝嚭 + /// </summary> + /// <param name="area">搴撳尯</param> + /// <returns></returns> + public static Location OutWorkTransportXm(string area, string issueMode) + { + Location result = null; + try + { + var db = new SqlHelper<Object>().GetInstance(); + + // 鑾峰彇鎵�湁绗﹀悎鏉′欢鐨勮揣浣�+ var query = db.Queryable<Location>().Where(a => a.S_AREA_CODE == area); + + // 鏍规嵁鍙戞枡鏂瑰紡搴旂敤涓嶅悓鐨勭瓫閫夊拰鎺掑簭閫昏緫 + switch (issueMode) + { + case "9": // 鍙戞弧绠憋紝鏁伴噺澶т簬0鐨勫厛杩涘厛鍑�+ query = query.Where(a => a.N_CURRENT_NUM > 0); + var list9 = query.ToList() + .OrderBy(s => s.T_CREATE) // 鍏堣繘鍏堝嚭 + .ToList(); + result = GetFirstAvailableLocation(list9); + break; + + case "0": // 鍙戠┖绠憋紝鏁伴噺=0鐨勫厛杩涘厛鍑�+ query = query.Where(a => a.N_CURRENT_NUM == 0); + var list0 = query.ToList() + .OrderBy(s => s.T_CREATE) // 鍏堣繘鍏堝嚭 + .ToList(); + result = GetFirstAvailableLocation(list0); + break; + + case "8": // 绠卞瓙鍨嬪彿浼樺厛绾э細娈嬬>绌虹锛堟畫鍐呰‖锛�婊$>绌虹>绌虹锛堟弧鍐呰‖锛�鍏跺畠 + var list8 = query.ToList() + .OrderBy(s => GetBoxTypePriority(s,new[] { "2", "4", "1", "3", "5" })) // 鎸夋寚瀹氫紭鍏堢骇鎺掑簭 + .ThenBy(s => s.T_CREATE) // 鐩稿悓浼樺厛绾ф寜鍏堣繘鍏堝嚭 + .ToList(); + result = GetFirstAvailableLocation(list8); + break; + + case "1": // 绠卞瓙鍨嬪彿浼樺厛绾э細娈嬬>绌虹锛堟畫鍐呰‖锛�绌虹>绌虹锛堟弧鍐呰‖锛�婊$>鍏跺畠 + var list1 = query.ToList() + .OrderBy(s => GetBoxTypePriority(s,new[] { "2", "4", "3", "5", "1" })) // 鎸夋寚瀹氫紭鍏堢骇鎺掑簭 + .ThenBy(s => s.T_CREATE) // 鐩稿悓浼樺厛绾ф寜鍏堣繘鍏堝嚭 + .ToList(); + result = GetFirstAvailableLocation(list1); + break; + + default: // 涓嶅~-鎸夊厛杩涘厛鍑�+ var listDefault = query.ToList() + .OrderBy(s => s.T_CREATE) // 鍏堣繘鍏堝嚭 + .ToList(); + result = GetFirstAvailableLocation(listDefault); + break; + } + } + catch (Exception ex) + { + Console.WriteLine("OutWorkTransport:" + ex.Message + ex.StackTrace); + LogHelper.Error("OutWorkTransport:" + ex.Message, ex); + } + return result; + } + + // 杈呭姪鏂规硶锛氭牴鎹瀛愬瀷鍙疯幏鍙栦紭鍏堢骇 + private static int GetBoxTypePriority(Location location, string[] priorityOrder) + { + var db = new SqlHelper<Object>().GetInstance(); + var locCntrRel = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == location.S_CODE).First(); + if (locCntrRel != null) + { + var container = db.Queryable<Container>().Where(c => c.S_CODE == locCntrRel.S_CNTR_CODE).First(); + if (container != null) + { + // 鏌ユ壘绠卞瓙鍨嬪彿鍦ㄤ紭鍏堢骇鏁扮粍涓殑浣嶇疆 + var index = Array.IndexOf(priorityOrder, container.S_SPEC); + return index >= 0 ? index : priorityOrder.Length; // 涓嶅湪浼樺厛绾у垪琛ㄤ腑鐨勬帓鍦ㄦ渶鍚�+ } + } + return priorityOrder.Length; // 娌℃湁鍏宠仈瀹瑰櫒鐨勬帓鍦ㄦ渶鍚�+ } + + // 杈呭姪鏂规硶锛氳幏鍙栫涓�釜鍙敤鐨勮揣浣�+ private static Location GetFirstAvailableLocation(List<Location> locations) + { + var db = new SqlHelper<Object>().GetInstance(); + foreach (var location in locations) + { + if (location.N_LOCK_STATE == 0) // 鍒ゆ柇璐т綅鏄惁琚攣浣�+ { + var locCntrRel = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == location.S_CODE).First(); + if (locCntrRel != null) // 鍒ゆ柇鏄惁鏈夋墭鐩�+ { + return location; + } + } + } + return null; } /// <summary> /// WMS鍑哄簱杞繍 @@ -891,81 +1126,352 @@ var startLoc = new Location(); string endLocStr = null; string Message = null; + //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪 + if (repeatTaskCode(model.order_name)) + { + Message = model.order_name+"浠诲姟缂栧彿宸插瓨鍦�; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } switch (model.ts_name) { case "p2p": - startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First(); + startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First(); if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") { - Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!"; + Message = $"{model.parameters.src}搴撲綅宸茶閿佸畾!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; } - endLocStr = model.parameter.dst; - + endLocStr = model.parameters.dst; + break; case "p2a": - startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First(); + startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First(); if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") { - Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!"; + Message = $"{model.parameters.src}搴撲綅宸茶閿佸畾!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; } - var endLoc = InWorkTransport(model.parameter.dst_area); - if (endLoc==null) + var endLoc = InWorkTransport(model.parameters.dst_area); + if (endLoc == null) { //濡傛灉娌℃壘鍒板氨绛夌涓�潯 - endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameter.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE; + endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE; } break; case "a2p": - startLoc = OutWorkTransport(model.parameter.src_area); - if (startLoc==null) - { - Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙嚭璐т綅!"; - } - - endLocStr = model.parameter.dst; - break; - case "a2a": - startLoc = OutWorkTransport(model.parameter.src_area); + startLoc = OutWorkTransportXm(model.parameters.src_area, model.parameters.issueMode); if (startLoc == null) { - Message = $"{model.parameter.src}搴撳尯娌℃湁鍙嚭璐т綅!"; + Message = $"{model.parameters.dst}搴撳尯娌℃湁鍙嚭璐т綅!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; } - var endLoc1 = InWorkTransport(model.parameter.dst_area); + + endLocStr = model.parameters.dst; + break; + case "a2a": + startLoc = OutWorkTransportXm(model.parameters.src_area,model.parameters.issueMode); + if (startLoc == null) + { + Message = $"{model.parameters.src}搴撳尯娌℃湁鍙嚭璐т綅!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } + var endLoc1 = InWorkTransport(model.parameters.dst_area); if (endLoc1 == null) { //濡傛灉娌℃壘鍒板氨绛夌涓�潯 - endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameter.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE; + endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE; } break; case "p2u": - startLoc = OutWorkTransport(model.parameter.src); + startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First(); + if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") + { + Message = $"{model.parameters.src}搴撲綅宸茶閿佸畾!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } + endLocStr = ""; + break; + case "a2u": + startLoc = OutWorkTransportXm(model.parameters.src, model.parameters.issueMode); if (startLoc == null) { - Message = $"{model.parameter.src}搴撳尯娌℃湁鍙嚭璐т綅!"; + Message = $"{model.parameters.src}搴撳尯娌℃湁鍙嚭璐т綅!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; } endLocStr = ""; break; } + LogHelper.Info($"bigMaterial 鎺ユ敹鍙傛暟{JsonConvert.SerializeObject(model)}"); //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴 string trayCode = ContainerHelper.GenerateCntrNo(); //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�- ContainerHelper.BindLocCntrsXm(startLoc.S_CODE, trayCode, model.parameter.sku, "", model.parameter.BatchNo, model.parameter.issueMode, model.parameter.num); + ContainerHelper.BindLocCntrsXm(startLoc.S_CODE, trayCode, model.parameters.sku, "", model.parameters.BatchNo, model.parameters.issueMode, model.parameters.num, model.parameters.boxType); var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLocStr}", model.ts_name); - var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLocStr, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1); - if (!res) + LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLocStr}", "澶т欢"); + var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLocStr, "澶т欢", locCntrRel.S_CNTR_CODE, model.order_name, 1, 1); + var result = new TaskResponse(); + if (res) + { + result = new TaskResponse + { + header = new ResponseHead { code = 200, desc = "SUCCESS" }, + body = new ResponseBody + { + msg = "success", + app_name = "Guozi client", + data = new List<ResponseData> { new ResponseData { in_order_id = model.order_name } }, + version = "" + } + }; + } + else { + Message = $"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLocStr}澶辫触"; + result = new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } + return result; + + } + catch (Exception ex) + { + Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace); + LogHelper.Error("bigMaterial:" + ex.Message, ex); + throw; + } + + } + + //灏忎欢 + public static TaskResponse smallMaterial(smallMaterial model) + { + var db = new SqlHelper<Location>().GetInstance(); + try + { + string Message = null; + + //鎷嗗垎鎴愪袱鏉′换鍔★紝涓�潯鏄枡鏋跺埌鎸囧畾鐨勭紦瀛樺尯锛屼簩鏄枡鏋朵笂鐨勬墭鐩樺埌鎸囧畾鐨勫伐浣嶏紙灏忕背wcs浼狅級涓�澶�+ var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.taskList[0].parameters.src).First(); + if (startLoc == null || startLoc.N_LOCK_STATE != 0) { return new TaskResponse { - header = new ResponseHead { code = 1, desc = Message } + header = new ResponseHead { code = 0, desc = $"{model.taskList[0].parameters.src}搴撲綅宸茶閿佸畾!" } }; + } + var endLoc = TaskProcess.InWorkTransport(model.shippingRoute); + if (endLoc != null) + { + ////鍒涘缓鍒扮紦瀛樺尯浠诲姟 + //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); + + //鎵緋2a鐨勪换鍔$紪鐮�+ var order_name = model.taskList.Find(s=>s.ts_name=="p2a").order_name; + //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪 + if (repeatTaskCode(order_name)) + { + Message = order_name + "浠诲姟缂栧彿宸插瓨鍦�; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } + //鍒涘缓浠诲姟 + LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "灏忎欢閫氱敤杞﹀瀷"); + var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLoc.S_CODE, "灏忎欢閫氱敤杞﹀瀷", model.rackNumber, order_name, 1, 1); + if (!res) + { + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = $"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}澶辫触" } + }; + } + } + var result = new TaskResponse(); + //鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅 + foreach (var tasklist in model.taskList) + { + if (tasklist.ts_name == "p2p") + { + //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪 + if (repeatTaskCode(tasklist.order_name)) + { + Message = tasklist.order_name + "浠诲姟缂栧彿宸插瓨鍦�; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } + //鍏堢粦瀹氭枡鏋跺拰鏂欑浣�+ ContainerHelper.BindLocCntrsXmLj(tasklist.rackPosition, model.rackNumber); + + var startloc = db.Queryable<Location>().Where(a => a.S_CODE == tasklist.rackPosition).First(); + if (startloc == null || startloc.N_LOCK_STATE != 0) + { + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = $"{startloc.S_CODE}搴撲綅宸茶閿佸畾!" } + }; + } + var endlocstr = tasklist.parameters.dst; + + //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴 + string trayCode = ContainerHelper.GenerateCntrNo(); + //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�+ ContainerHelper.BindLocCntrsXm(startloc.S_CODE, trayCode, tasklist.parameters.sku, "", tasklist.parameters.BatchNo, tasklist.parameters.issueMode, tasklist.parameters.num,""); + + var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startloc.S_CODE).First(); + //鍒涘缓浠诲姟 + LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endlocstr}", "inbound"); + var res = TaskProcess.CreateTransportDj(startloc.S_CODE, endlocstr, "inbound", locCntrRel.S_CNTR_CODE, tasklist.order_name, 1, 1); + + if (res) + { + result = new TaskResponse + { + header = new ResponseHead { code = 200, desc = "SUCCESS" }, + body = new ResponseBody + { + msg = "success", + app_name = "Guozi client", + data = new List<ResponseData> { new ResponseData { in_order_id = tasklist.order_name } }, + version = "" + } + }; + } + else + { + Message = $"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endlocstr}澶辫触"; + result = new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; + } + + } } + return result; + } + catch (Exception ex) + { + Console.WriteLine("smallMaterial:" + ex.Message + ex.StackTrace); + LogHelper.Error("smallMaterial:" + ex.Message, ex); + throw; + } + } + //浠诲姟鍙烽噸澶嶅垽鏂�+ private static bool repeatTaskCode(string orderName) { + var db = new SqlHelper<WCSTask>().GetInstance(); + var result = db.Queryable<WCSTask>().Where(a => a.S_CODE == orderName).Count(); + return result > 0; + + } + + //浼犳劅鍣ㄥ皬浠�+ public static TaskResponse sensorSmallMaterial(sensorSmallMaterial model) + { + var db = new SqlHelper<Location>().GetInstance(); + try + { + string Message = null; + + + + ////鎷嗗垎鎴愪袱鏉′换鍔★紝涓�潯鏄枡鏋跺埌鎸囧畾鐨勭紦瀛樺尯锛屼簩鏄枡鏋朵笂鐨勬墭鐩樺埌鎸囧畾鐨勫伐浣嶏紙灏忕背wcs浼狅級涓�澶�+ //var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.taskList[0].parameters.src).First(); + //if (startLoc == null || startLoc.N_LOCK_STATE != 0) + //{ + // return new TaskResponse + // { + // header = new ResponseHead { code = 0, desc = $"{model.taskList[0].parameters.src}搴撲綅宸茶閿佸畾!" } + // }; + //} + //var endLoc = TaskProcess.InWorkTransport(model.shippingRoute); + //if (endLoc != null) + //{ + // ////鍒涘缓鍒扮紦瀛樺尯浠诲姟 + // //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); + + // //鎵緋2a鐨勪换鍔$紪鐮�+ // var order_name = model.taskList.Find(s => s.ts_name == "p2a").order_name; + // //鍒涘缓浠诲姟 + // LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "灏忎欢閫氱敤杞﹀瀷"); + // var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLoc.S_CODE, "灏忎欢閫氱敤杞﹀瀷", model.rackNumber, order_name, 1, 1); + // if (!res) + // { + // return new TaskResponse + // { + // header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触" } + // }; + // } + //} + ////鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅 + //foreach (var tasklist in model.taskList) + //{ + // if (tasklist.ts_name == "p2p") + // { + // //鍏堢粦瀹氭枡鏋跺拰鏂欑浣�+ // ContainerHelper.BindLocCntrsXmLj(tasklist.rackPosition, model.rackNumber); + + // var startloc = db.Queryable<Location>().Where(a => a.S_CODE == tasklist.rackPosition).First(); + // if (startloc == null || startloc.N_LOCK_STATE != 0) + // { + // return new TaskResponse + // { + // header = new ResponseHead { code = 0, desc = $"{startloc.S_CODE}搴撲綅宸茶閿佸畾!" } + // }; + // } + // var endlocstr = tasklist.parameters.dst; + + // //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴 + // string trayCode = ContainerHelper.GenerateCntrNo(); + // //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�+ // ContainerHelper.BindLocCntrsXm(startloc.S_CODE, trayCode, tasklist.parameters.sku, "", tasklist.parameters.BatchNo, tasklist.parameters.issueMode, tasklist.parameters.num); + + // var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startloc.S_CODE).First(); + // //鍒涘缓浠诲姟 + // LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endlocstr}", "inbound"); + // var res = TaskProcess.CreateTransportDj(startloc.S_CODE, endlocstr, "inbound", locCntrRel.S_CNTR_CODE, tasklist.order_name, 1, 1); + // if (!res) + // { + // return new TaskResponse + // { + // header = new ResponseHead { code = 1, desc = Message } + // }; + + // } + + // } + + //} var result = new TaskResponse(); if (Message != null) { @@ -990,137 +1496,16 @@ } return result; + + } catch (Exception ex) { - Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace); - LogHelper.Error("bigMaterial:" + ex.Message, ex); + Console.WriteLine("smallMaterial:" + ex.Message + ex.StackTrace); + LogHelper.Error("smallMaterial:" + ex.Message, ex); throw; } - } - - - public static TaskResponse autoSmallMaterial(smallMaterial model) { - var db = new SqlHelper<Location>().GetInstance(); - - string Message = null; - - //鎷嗗垎鎴愪袱鏉′换鍔★紝涓�潯鏄枡鏋跺埌鎸囧畾鐨勭紦瀛樺尯锛屼簩鏄枡鏋朵笂鐨勬墭鐩樺埌鎸囧畾鐨勫伐浣嶏紙灏忕背wcs浼狅級涓�澶�- var startFrame = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == model.parameters[0].src).First(); - - var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == startFrame.S_FRAME_CODE).First(); - if (startLoc == null || startLoc.N_LOCK_STATE != 0) - { - return new TaskResponse - { - header = new ResponseHead { code = 0, desc = $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!" } - }; - } - var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == model.routeType).FirstOrDefault(); - var endLoc = TaskProcess.InWorkTransport(endReservoirs.areaCode); - if (endLoc != null) - { - //鍒涘缓鍒扮紦瀛樺尯浠诲姟 - var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); - //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", model.ts_name); - var res = TaskProcess.CreateTransportHj(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_FRAME_CODE, 1, 1); - if (!res) - { - return new TaskResponse - { - header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触" } - }; - } - } - //鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅 - foreach (var parameter in model.parameters) - { - var startLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.src).First(); - if (startLocHj == null || startLocHj.N_LOCK_STATE != 0) - { - Message = Message==null? $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!": Message+ $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!"; - } - else - { - //璐ф灦涓婄殑璐у垽鏂竴涓嬭揣鏋舵湁娌℃湁閿�- var startFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.src).First(); - if (startFrameParent != null) - { - var startLocParent = db.Queryable<Location>().Where(a => a.S_CODE == startFrameParent.S_FRAME_CODE).First(); - if (startLocParent == null || startLocParent.N_LOCK_STATE != 0) - { - return new TaskResponse - { - header = new ResponseHead { code = 0, desc = $"{startFrameParent.S_FRAME_CODE}璐ф灦宸茶閿佸畾!" } - }; - } - } - var endLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.dst).First(); - if (endLocHj == null || endLocHj.N_LOCK_STATE != 0 || endLocHj.C_ENABLE != "Y") - { - //搴旇缁曡矾 - - Message = Message == null ? $"{parameter.dst}搴撲綅宸茶閿佸畾!" : Message + $"{parameter.dst}搴撲綅宸茶閿佸畾!"; - } - else - { - //璐ф灦涓婄殑璐у垽鏂竴涓嬭揣鏋舵湁娌℃湁閿�- var endFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.dst).First(); - if (endFrameParent != null) - { - var endLocParent = db.Queryable<Location>().Where(a => a.S_CODE == endFrameParent.S_FRAME_CODE).First(); - if (endLocParent == null || endLocParent.N_LOCK_STATE != 0) - { - return new TaskResponse - { - header = new ResponseHead { code = 0, desc = $"{endFrameParent.S_FRAME_CODE}璐ф灦宸茶閿佸畾!" } - }; - } - } - //鍒涘缓鍒扮紦瀛樺尯浠诲姟 - var locCntrRel1 = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLocHj.S_CODE).First(); - //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLocHj.S_CODE}缁堢偣:{endLocHj.S_CODE}", model.ts_name); - var res = TaskProcess.CreateTransport(startLocHj.S_CODE, endLocHj.S_CODE, model.ts_name, locCntrRel1.S_CNTR_CODE, 1, 1); - if (!res) - { - return new TaskResponse - { - header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟2鍒涘缓澶辫触" } - }; - } - - } - - } - } - var result = new TaskResponse(); - if (Message != null) - { - result = new TaskResponse - { - header = new ResponseHead { code = 0, desc = Message } - }; - } - else - { - result = new TaskResponse - { - header = new ResponseHead { code = 200, desc = "SUCCESS" }, - body = new ResponseBody - { - msg = "success", - app_name = "Guozi client", - data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } }, - version = "" - } - }; - } - return result; - } - } -- Gitblit v1.9.1