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 | 1734 ++++++++++++++++++++--------------------------------------- 1 files changed, 594 insertions(+), 1,140 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 1a4c96a..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,6 +847,7 @@ result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); } + } } @@ -727,7 +861,7 @@ /// <summary> - /// 鍑哄簱绠楁硶 + /// 鍑哄簱绠楁硶 鍏堣繘鍏堝嚭 /// </summary> /// <param name="area">搴撳尯</param> /// <returns></returns> @@ -766,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鍑哄簱杞繍 @@ -875,897 +1111,6 @@ return result; } - #region 宸ㄧ煶浠g爜 - /// <summary> - /// 甯歌閫佹缂撳瓨鍖鸿揣浣�abc涓変釜鍖�涓ゅ眰 - /// </summary> - /// <param name="startloc">璧风偣璐т綅</param> - /// <param name="area">搴撳尯</param> - /// <returns></returns> - public static Location InCgWorkTransport(string startloc, string area) - { - Location result = null; - var db = new SqlHelper<object>().GetInstance(); - try - { - //A,B,C3涓揣鏋朵笂锛岃繖涓鏈変紭鍏堢骇浜�CX03,04浼樺厛閫佸埌A鍖鸿揣鏋讹紝CX01,CX02浼樺厛閫佸埌B,C璐ф灦 - var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "閫佹缂撳瓨鍖�).FirstOrDefault(); - - var alllist = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == reservoirs.areaCode).ToList(); - // 浠庨厤缃幏鍙栦紭鍏堢骇瑙勫垯 - var mapping = Settings.PriorityLocs.FirstOrDefault(m => m.Location == startloc); - LogHelper.Info($"閰嶇疆鐨勪紭鍏堢骇瑙勫垯{JsonConvert.SerializeObject(mapping)}"); - if (mapping == null) - { - LogHelper.Info($"鏈壘鍒颁骇绾縶startloc}鐨勪紭鍏堢骇閰嶇疆"); - return null; - } - var primaryAreas = mapping.PrimaryArea.Split(','); - var secondaryAreas = mapping.SecondaryArea.Split(','); - LogHelper.Info($"浼樺厛锛歿JsonConvert.SerializeObject(primaryAreas)}娆¢�锛歿JsonConvert.SerializeObject(secondaryAreas)}"); - // 绛涢�鏈攣涓旀湁绌虹殑璐т綅 - var availablePrimaryLocations = FilterAvailableLocations(alllist, primaryAreas); - //浼樺厛 - result = availablePrimaryLocations.OrderBy(l => l.N_COL).ThenBy(l => l.N_LAYER).FirstOrDefault(); - - // 娆¢� - if (result == null) - { - var availableSecondaryLocations = FilterAvailableLocations(alllist, secondaryAreas); - result = availableSecondaryLocations.OrderBy(l => l.N_COL).ThenBy(l => l.N_LAYER).FirstOrDefault(); - } - - return result; - - } - catch (Exception ex) - { - Console.WriteLine("InWorkTransport:" + ex.Message + ex.StackTrace); - LogHelper.Error("InWorkTransport:" + ex.Message, ex); - } - return result; - } - //绛涢�鍙敤浣嶇疆 - private static List<Location> FilterAvailableLocations(List<Location> locations, string[] targetAreas) - { - return locations - .Where(l => targetAreas.Any(area => l.S_CODE.Contains(area))) - .Where(l => l.N_LOCK_STATE == 0 && l.C_ENABLE == "Y" && l.N_CURRENT_NUM < l.N_CAPACITY) - .ToList(); - } - - /// <summary> - /// 绱у噾鍨嬪叆搴撹揣浣� 绱ф�閫佹鍖�绌烘墭缂撳瓨涓��浜屽尯 - /// </summary> - /// <param name="area">搴撳尯</param> - /// <returns></returns> - public static Location CompactWorkTransport(string area) - { - Location result = null; - var db = new SqlHelper<object>().GetInstance(); - try - { - //鏌ヨ姣忔帓鏈�悗涓�垪鏈夋墭鐩樼殑璐т綅 鏍规嵁琛屽垎鍖�鍐嶆壘姣忎竴琛岀殑鏈�悗涓�垪鏈夎揣鐨勮揣浣�- var list = db.Queryable<Location>(). - Where(a => a.N_CURRENT_NUM > 0 && a.S_AREA_CODE.Trim() == area).PartitionBy(a => a.N_ROW) - .OrderByDescending(a => a.N_COL).Take(1).ToList(); - if (list.Count > 0) - { - for (int i = 0; i < list.Count; i++) - { - LogHelper.Info($"鏈夋墭鐩樻帓鍙穥list[i].N_ROW}锛屽簱鍖簕area}"); - - //鍏ヨ揣浣嶅悗涓�綅璐т綅 - result = db.Queryable<Location>().OrderBy(a => a.N_COL) - .Where(a => a.S_AREA_CODE.Trim() == area && a.N_ROW == list[i].N_ROW - && a.N_COL > list[i].N_COL).First(); - if (result != null && result.N_LOCK_STATE == 0 && result.C_ENABLE == "Y") - { - return result; - } - } - } - //娌℃壘鍒拌鏄庡簱鍖烘槸绌虹殑 鍏ラ噷闈�- else - { - result = db.Queryable<Location>(). - Where(a => a.S_AREA_CODE.Trim() == area && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0) - .OrderBy(a => a.N_COL).OrderBy(a => a.N_ROW).First(); - } - } - catch (Exception ex) - { - Console.WriteLine("InWorkTransport:" + ex.Message + ex.StackTrace); - LogHelper.Error("InWorkTransport:" + ex.Message, ex); - } - return result; - } - - - - /// <summary> - /// 鐗╂枡涓嬬嚎/閫佹缂撳瓨鍖�>甯歌閫佹鍖�- /// </summary> - /// <param name="model.START_LOC">璧风偣璐т綅</param> - /// <param name="model.END_AREA">缁堢偣璐у尯</param> - /// <param name="model.S_ITEM_CODE">鐗╂枡锛堥�濉級</param> - /// <returns></returns> - internal static Results materialOffline(GetSubmitCheck model) - { - var result = new Results() { Code = "0", Message = "涓嬬嚎浠诲姟鐢熸垚鎴愬姛锛�, Data = null }; - var db = new SqlHelper<Location>().GetInstance(); - try - { - //鏍¢獙璧风偣璐т綅鏄惁瀛樺湪/閿佷綇 - var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.START_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") - { - return new Results { Code = "1", Message = $"{model.START_LOC}搴撲綅宸茶閿佸畾!", Data = null }; - } - //璁$畻缁堢偣璐т綅 - if (string.IsNullOrEmpty(model.END_AREA)) - { - return new Results { Code = "1", Message = "鍑哄簱鏈紶缁堢偣搴撳尯!", Data = null }; - } - //濡傛灉鏄揣鎬ラ�妫�尯 绱у噾鍨�- var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "绱ф�閫佹鍖�).FirstOrDefault(); - //濡傛灉鏄�妫�紦瀛樺尯 - var reservoirs2 = Settings.ReservoirAreas.Where(s => s.areaName == "閫佹缂撳瓨鍖�).FirstOrDefault(); - Location OutLoc = null; - if (model.END_AREA.Equals(reservoirs.areaCode)) - { - LogHelper.Info($"绱ф�閫佹鍖�================="); - OutLoc = CompactWorkTransport(model.END_AREA); - } - else if (model.END_AREA.Equals(reservoirs2.areaCode)) - { - LogHelper.Info($"閫佹缂撳瓨鍖�================="); - OutLoc = InCgWorkTransport(model.START_LOC, model.END_AREA); - } - else - { - LogHelper.Info($"鍏朵粬=================="); - OutLoc = InWorkTransport(model.END_AREA); - } - - //娌′紶鐗╂枡鐨勮瘽榛樿涓�釜 - string itemCode = null; - string wlName = null; - if (!string.IsNullOrEmpty(model.S_ITEM_CODE)) - { - itemCode = model.S_ITEM_CODE; - wlName = "甯冨嵎"; - //wlName = db.Queryable<TN_Material>().Where(b => b.S_ITEM_CODE == model.S_ITEM_CODE).First().S_ITEM_NAME; - } - //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴 - string trayCode = ContainerHelper.GenerateCntrNo(); - //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂� 涓嶄紶鐨勮瘽杩欓噷娌℃湁缁戠墿鏂欐墭鐩樿〃 鍙粦浜嗘墭鐩樿揣浣嶈〃 - ContainerHelper.BindLocCntrs(model.START_LOC, trayCode, itemCode, wlName); - - var reservoirs1 = Settings.ReservoirAreas.Where(s => s.areaName == "甯歌閫佹鍖�).FirstOrDefault(); - //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{model.START_LOC}缁堢偣:{OutLoc.S_CODE}", OutLoc.S_CODE == reservoirs1.areaCode ? "甯歌閫佹" : "鐗╂枡涓嬬嚎"); - var res = TaskProcess.CreateTransport(model.START_LOC, OutLoc.S_CODE, OutLoc.S_CODE == reservoirs1.areaCode ? "甯歌閫佹" : "鐗╂枡涓嬬嚎", trayCode, 1, 1); - - if (!res) - { - return new Results { Code = "1", Message = "涓嬬嚎浠诲姟鐢熸垚澶辫触!", Data = null }; - - } - return result; - } - catch (Exception ex) - { - Console.WriteLine("materialOffline:" + ex.Message + ex.StackTrace); - LogHelper.Error("materialOffline:" + ex.Message, ex); - throw; - } - } - /// <summary> - /// 鍛煎彨绌烘墭 - /// </summary> - /// <param name="model.START_LOC">璧风偣绫诲瀷(鎷嗘墭鏈�</param> - /// <param name="model.END_LOC">缁堢偣璐т綅(浜х嚎)</param> - /// <returns></returns> - internal static Results CallEmptyTray(GetSubmitCheck model) - { - var result = new Results() { Code = "0", Message = "鍛煎彨绌烘墭浠诲姟鐢熸垚鎴愬姛锛�, Data = null }; - var db = new SqlHelper<Location>().GetInstance(); - try - { - //蹇呭~鍙傛暟鏍¢獙 - if (string.IsNullOrEmpty(model.START_LOC)) - { - return new Results { Code = "1", Message = "鍛煎彨绌烘墭鏈紶璧风偣搴撲綅!", Data = null }; - } - if (string.IsNullOrEmpty(model.END_LOC)) - { - return new Results { Code = "1", Message = "鍛煎彨绌烘墭鏈紶缁堢偣搴撲綅!", Data = null }; - } - //鏍¢獙缁堢偣璐т綅鏄惁瀛樺湪/閿佸畾 - var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.END_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") - { - return new Results { Code = "1", Message = $"{model.END_LOC}搴撲綅宸茶閿佸畾!", Data = null }; - } - ////浠庨厤缃牴鎹媶鎵樻満绫诲瀷鎵惧埌鍑哄彛璐т綅 - //var reservoirs = Settings.linePlcInfos.Where(s => s.code == model.S_TYPE).FirstOrDefault(); - //string OutLocStr = reservoirs.outLoca; - - //濡傛灉缁堢偣鍜屼骇绾夸笅绾挎槸鍚屼竴涓揣浣�缁堢偣涔熶笉缁戞墭鐩�- string trayCode = ContainerHelper.GenerateCntrNo(); - //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{model.START_LOC}缁堢偣:{model.END_LOC}", "鍛煎彨绌烘墭"); - var res = TaskProcess.CreateTransport(model.START_LOC, model.END_LOC, "鍛煎彨绌烘墭", trayCode, 1, 1); - if (!res) - { - return new Results { Code = "1", Message = "鍛煎彨绌烘墭浠诲姟鐢熸垚澶辫触!", Data = null }; - - } - return result; - } - catch (Exception ex) - { - Console.WriteLine("CallEmptyTray:" + ex.Message + ex.StackTrace); - LogHelper.Error("CallEmptyTray:" + ex.Message, ex); - throw; - } - } - /// <summary> - /// 閫佹 甯歌閫佹鍖�->绱ф�閫佹鍖�- /// </summary> - /// <param name="model.START_LOC">璧风偣璐т綅锛堥�濉級</param> - /// <param name="model.S_ITEM_CODE">鐗╂枡锛堥�濉級</param> - /// <returns></returns> - internal static Results submitCheck(GetSubmitCheck model) - { - var result = new Results() { Code = "0", Message = "閫佹浠诲姟鐢熸垚鎴愬姛锛�, Data = null }; - var db = new SqlHelper<Location>().GetInstance(); - try - { - string startloc = ""; - //鐗╂枡涓嶄负绌哄垯鏍规嵁鐗╂枡鎵捐捣鐐硅揣浣�- if (!string.IsNullOrEmpty(model.S_ITEM_CODE)) - { - //鏍规嵁鐗╂枡鎵捐揣浣�- var cgreservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "甯歌閫佹鍖�).FirstOrDefault(); - startloc = getLocByMaterial(model.S_ITEM_CODE, cgreservoirs.areaCode).S_CODE; - if (startloc == null) - { - return new Results { Code = "1", Message = $"{model.S_ITEM_CODE}鏈壘鍒拌鐗╂枡!", Data = null }; - } - } - //濡傛灉浼犱簡璧风偣 - if (!string.IsNullOrEmpty(model.START_LOC)) - { - var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.START_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") - { - return new Results { Code = "1", Message = $"{model.START_LOC}搴撲綅宸茶閿佸畾!", Data = null }; - } - startloc = loc.S_CODE; - } - //璁$畻绱ф�閫佹鍖虹粓鐐硅揣浣�- var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "绱ф�閫佹鍖�).FirstOrDefault(); - Location OutLoc = TaskProcess.CompactWorkTransport(reservoirs.areaCode); - if (OutLoc == null) - { - return new Results { Code = "1", Message = $"缁堢偣搴撳尯绱ф�閫佹鍖烘湭鎵惧埌绌鸿揣浣�", Data = null }; - } - //鍒涘缓閫佹浠诲姟 - var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == model.START_LOC).First(); - - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startloc}缁堢偣:{OutLoc.S_CODE}", "閫佹"); - var res = TaskProcess.CreateTransport(startloc, OutLoc.S_CODE, "閫佹", locCntrRel.S_CNTR_CODE, 1, 1); - if (!res) - { - return new Results { Code = "1", Message = "閫佹浠诲姟鐢熸垚澶辫触!", Data = null }; - - } - return result; - } - catch (Exception ex) - { - Console.WriteLine("submitCheck:" + ex.Message + ex.StackTrace); - LogHelper.Error("submitCheck:" + ex.Message, ex); - throw; - } - } - - /// <summary> - /// 鏍规嵁鐗╂枡鎵捐揣浣� 鏍规嵁CntrItemDetail鏃堕棿 鍏堣繘鍏堝嚭 杩炶〃鏌ュ垽鏂揣浣嶆湁娌℃湁閿�- /// </summary> - /// <param name="itemCode">鐗╂枡</param> - /// <returns></returns> - public static Location getLocByMaterial(string itemCode, string areaCode) - { - Location result = null; - try - { - var db = new SqlHelper<object>().GetInstance(); - //涓よ〃鑱旀煡鏌ュ嚭鏈夎鐗╂枡鐨勮揣浣嶇紪鍙� 锛堢幇鍦烘病鏈夌墿鏂欒〃锛�- var locCntrs = db.Queryable<LocCntrRel>().LeftJoin<CntrItemDetail>((p, m) => p.S_CNTR_CODE == m.S_CNTR_CODE) - .Where((p, m) => m.S_ITEM_CODE == itemCode) - .OrderBy((p, m) => p.T_CREATE) //鎸夊垱寤烘椂闂撮『搴�- .Select((p, m) => p.S_LOC_CODE) // 閫夋嫨鎵樼洏鐗╂枡琛ㄧ殑鏁版嵁 - .ToList(); - LogHelper.Info($"鏈夌墿鏂檣itemCode}鐨勮揣浣嶇紪鍙穥JsonConvert.SerializeObject(locCntrs)}"); - //鎵惧父瑙勯�妫�尯鍐呭惈鏈夋煡鍑虹墿鏂欒揣浣嶇殑璐т綅 - var locList = db.Queryable<Location>() - .Where(p => p.S_AREA_CODE == areaCode && p.N_LOCK_STATE == 0 && p.C_ENABLE == "Y") - .Where(s => locCntrs.Contains(s.S_CODE.Trim())) - .ToList(); - - if (!locList.Any()) - { - return null; - } - result = locList.FirstOrDefault(); - } - catch (Exception ex) - { - Console.WriteLine("getLocByMaterial:" + ex.Message + ex.StackTrace); - LogHelper.Error("getLocByMaterial:" + ex.Message, ex); - } - return result; - } - - //瀛樻憚鍍忓ご璋冪敤鎺ュ彛绌烘弧鐘舵� 璐т綅锛岀┖婊$姸鎬�- private static string monitorStatus = null; - /// <summary> - /// 鎽勫儚澶寸洃娴嬫帴鍙� - /// </summary> - /// <param name="models.PointCode">鐩戞祴璐т綅</param> - /// <param name="models.PointStatus">鐩戞祴绌烘弧鐘舵�0绌洪棽1鍗犵敤3寮傚父</param> - /// <returns></returns> - internal static Results UpdateFullStatus(List<CameraMonitor> models) - { - var result = new Results() { Code = "0", Message = "鎿嶄綔鎴愬姛", Data = null }; - var db = new SqlHelper<object>().GetInstance(); - //鏍¢獙涓庡唴瀛樻槸鍚︿竴鑷�- if (monitorStatus != null) - { - try - { - //string杞垚list - var jsonList = JsonConvert.DeserializeObject<List<CameraMonitor>>(monitorStatus); - //鎵句袱涓狶ist鐨勪氦闆�- var intersection = jsonList.Where(j => models.Any(m => - m.PointCode == j.PointCode && m.PointStatus == j.PointStatus)).ToList(); - LogHelper.Info($"鎽勫儚澶翠笌涓婃璋冪敤涓�嚧鏁版嵁锛歿JsonConvert.SerializeObject(intersection)}"); - foreach (var model in intersection) - { - //鎵惧埌璇ョ偣浣嶇殑搴撳尯 - var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.PointCode).First(); - //娌¢攣鍐嶇户缁蛋 - if (loc.N_LOCK_STATE == 0 && loc.C_ENABLE == "Y" && loc != null) - { - var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "閫佹鍏ュ簱鍖�).FirstOrDefault(); - //濡傛灉鏄�妫�叆搴撳尯 - if (reservoirs.areaCode.Equals(loc.S_AREA_CODE)) - { - var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == model.PointCode).First(); - var container = new Container(); - if (locCntrRel == null) - { - //绗竴娆¤嚜宸辩粦瀹氫竴涓墭鐩�- string trayCode = ContainerHelper.GenerateCntrNo(); - ContainerHelper.BindLocCntrs(model.PointCode, trayCode, null, null); - container = db.Queryable<Container>().Where(a => a.S_CODE == trayCode).First(); - container.C_FULL = "2"; - } - else - { - //鏌ユ暟鎹簱绌烘弧鐘舵� 璺熺紦瀛樹笉涓�牱鍒欐洿鏂�- //鎵惧埌杩欎釜璐т綅鐨勫鍣�绌烘弧鐘舵�C_FULL鏀规垚2婊� 0 -- 绌�1 -- 鏈夎揣 2 -- 婊�- container = db.Queryable<Container>().Where(a => a.S_CODE == locCntrRel.S_CNTR_CODE).First(); - if (container.C_FULL != model.PointStatus.ToString()) - { - container.C_FULL = "2"; - } - } - var res = db.Updateable(container).UpdateColumns(it => it.C_FULL).ExecuteCommand() > 0; - if (res) - { - LogHelper.Info($"淇敼{model.PointCode}璐т綅绌烘弧鐘舵�鎴愬姛", "鎽勫儚澶寸洃娴�); - } - else - { - LogHelper.Info($"淇敼{model.PointCode}璐т綅绌烘弧鐘舵�澶辫触", "鎽勫儚澶寸洃娴�); - } - } - else - { - //濡傛灉鏄┖鎵樼紦瀛樺尯 鍒ゆ柇鎷嗘墭鏈烘槸鍚︽湁绌轰綅 绌烘墭缂撳瓨鍖烘弧浜嗕笖鎷嗘墭鏈哄叆鍙f湁绌哄垯鍒涘缓浠诲姟 - var reservoirs1 = Settings.ReservoirAreas.Where(s => s.areaName == "3min绌烘墭鍖�).FirstOrDefault(); - var reservoirs2 = Settings.ReservoirAreas.Where(s => s.areaName == "6min绌烘墭鍖�).FirstOrDefault(); - if (loc.S_AREA_CODE.Equals(reservoirs1.areaCode) || loc.S_AREA_CODE.Equals(reservoirs2.areaCode))//涓夊绌烘墭 - { - ProcessEmptyTrayAreas(db, loc, reservoirs1.areaCode, reservoirs2.areaCode); - } - } - } - else - { - LogHelper.Info($"{model.PointCode}璐т綅浠诲姟宸茬粡鐢熸垚", "鎽勫儚澶寸洃娴�); - } - - } - } - catch (Exception ex) - { - Console.WriteLine("UpdateFullStatus:" + ex.Message + ex.StackTrace); - LogHelper.Error("UpdateFullStatus:" + ex.Message, ex); - throw; - } - } - //list杞瑂tring 瀛樺埌鍐呭瓨 - monitorStatus = JsonConvert.SerializeObject(models); - - return result; - } - //鎽勫儚澶寸洃娴嬬┖鎵樼紦瀛樺尯 - private static void ProcessEmptyTrayAreas(SqlSugar.ISqlSugarClient db, Location loc, string areaCode1, string areaCode2) - { - var plcDeviceTable = S7Helper.plcDeviceTables; - if (plcDeviceTable != null) - { - string endLoc = null; - bool request = false; - if (loc.S_AREA_CODE.Equals(areaCode1)) - { - request = plcDeviceTable.requestPut1; - endLoc = Settings.linePlcInfos.Where(s => s.code == "鎷嗘墭鏈�").FirstOrDefault().inLoca; - } - else if (loc.S_AREA_CODE.Equals(areaCode2))//鍏绌烘墭 - { - request = plcDeviceTable.requestPut2; - endLoc = Settings.linePlcInfos.Where(s => s.code == "鎷嗘墭鏈�").FirstOrDefault().inLoca; - } - //鍒ゆ柇鏄惁鍏佽鏀炬 - if (request) - { - //鍒涘缓浠诲姟 浠庣┖鎵樼紦瀛樺尯鍒版媶鎵樻満 - var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == loc.S_AREA_CODE - && a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").OrderByDescending(a => a.N_ROW) - .OrderByDescending(a => a.N_COL).First(); - var startLoc = list.S_CODE; - - string trayCode = ContainerHelper.GenerateCntrNo(); - - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc}缁堢偣:{endLoc}", "鎷嗘墭"); - var res = TaskProcess.CreateTransport(startLoc, endLoc, "鎷嗘墭", trayCode, 1, 1); - if (res) - { - LogHelper.Info($"璧风偣:{startLoc}缁堢偣:{endLoc}浠诲姟鍒涘缓鎴愬姛", "鎷嗘墭"); - } - else - { - LogHelper.Info($"璧风偣:{startLoc}缁堢偣:{endLoc}浠诲姟鍒涘缓澶辫触", "鎷嗘墭"); - } - } - } - else - { - LogHelper.Info($"鏈鍙栧埌鎷嗘墭鏈轰俊鍙�, "鎷嗘墭"); - - } - - } - /// <summary> - /// 鎶芥涓诲姩鍛煎彨 璧风偣锛氶�妫�紦瀛樺尯 - /// </summary> - /// <param name="model.S_ITEM_CODE">鐗╂枡</param> - /// <param name="model.END_LOC">缁堢偣璐т綅</param> - /// <returns></returns> - internal static Results activeCall(GetSubmitCheck model) - { - var result = new Results() { Code = "0", Message = "鎶芥涓诲姩鍛煎彨浠诲姟鐢熸垚鎴愬姛锛�, Data = null }; - var db = new SqlHelper<Location>().GetInstance(); - try - { - //鏍规嵁鐗╂枡鎵炬煇搴撳尯鐨勮揣浣�- var cgreservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "閫佹缂撳瓨鍖�).FirstOrDefault(); - var startloc = getLocByMaterial(model.S_ITEM_CODE, cgreservoirs.areaCode); - if (startloc == null) - { - return new Results { Code = "1", Message = $"鏈壘鍒板寘鍚墿鏂檣model.S_ITEM_CODE}鐨勮揣浣�, Data = null }; - } - //缁堢偣 - var endloc = db.Queryable<Location>().Where(a => a.S_CODE == model.END_LOC).First(); - if (endloc == null || endloc.N_LOCK_STATE != 0 || endloc.C_ENABLE != "Y") - { - return new Results { Code = "1", Message = $"{model.END_LOC}搴撲綅宸茶閿佸畾!", Data = null }; - } - //鍒涘缓浠诲姟 - var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startloc.S_CODE).First(); - - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endloc.S_CODE}", "鎶芥涓诲姩鍛煎彨"); - var res = TaskProcess.CreateTransport(startloc.S_CODE, endloc.S_CODE, "鎶芥涓诲姩鍛煎彨", locCntrRel.S_CNTR_CODE, 1, 1); - if (!res) - { - return new Results { Code = "1", Message = "鎶芥涓诲姩鍛煎彨浠诲姟鐢熸垚澶辫触!", Data = null }; - - } - return result; - } - catch (Exception ex) - { - Console.WriteLine("submitCheck:" + ex.Message + ex.StackTrace); - LogHelper.Error("submitCheck:" + ex.Message, ex); - throw; - } - } - /// <summary> - /// 涓诲姩鐗╂枡缁戝畾 - /// </summary> - /// <param name="model.S_ITEM_CODE">鐗╂枡缂栫爜(閫夊~)</param> - /// <param name="model.BIND_LOC">缁戝畾璐т綅</param> - /// <returns></returns> - internal static Results bindMaterial(GetSubmitCheck model) - { - var result = new Results() { Code = "0", Message = "鐗╂枡缁戝畾鎴愬姛锛�, Data = null }; - var db = new SqlHelper<object>().GetInstance(); - try - { - var loc = db.Queryable<Location>().Where(a => a.S_CODE == model.BIND_LOC).First(); - if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") - { - return new Results { Code = "1", Message = $"缁戝畾璐т綅涓嶅瓨鍦ㄦ垨宸茶閿�, Data = null }; - - } - string cntrStr = ContainerHelper.GenerateCntrNo(); - var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == model.BIND_LOC).First(); - if (locCntrRel != null) - { - cntrStr = locCntrRel.S_CNTR_CODE; - } - var res = ContainerHelper.BindLocCntrs(model.BIND_LOC, cntrStr, model.S_ITEM_CODE, "甯冨嵎"); - if (!res) - { - return new Results { Code = "1", Message = $"鐗╂枡{model.S_ITEM_CODE}璐т綅{model.BIND_LOC}缁戝畾澶辫触", Data = null }; - } - loc.N_CURRENT_NUM++; - var res2 = db.Updateable(loc).UpdateColumns(it => it.N_CURRENT_NUM).ExecuteCommand() > 0; - if (!res2) - { - return new Results { Code = "1", Message = $"璐т綅{model.BIND_LOC}褰撳墠鏁伴噺鑷澶辫触", Data = null }; - } - return result; - } - catch (Exception ex) - { - Console.WriteLine("bindMaterial:" + ex.Message + ex.StackTrace); - LogHelper.Error("bindMaterial:" + ex.Message, ex); - throw; - } - } - /// <summary> - /// 鏁存帓鐗╂枡缁戝畾 - /// </summary> - /// <param name="bondLoc">缁戝畾璐т綅</param> - /// <returns></returns> - internal static Results multBindMaterial(string bondLoc) - { - var result = new Results() { Code = "0", Message = "鏁存帓鐗╂枡缁戝畾鎴愬姛锛�, Data = null }; - var db = new SqlHelper<object>().GetInstance(); - try - { - var location = db.Queryable<Location>().Where(a => a.S_CODE == bondLoc).First(); - //鏌ュ嚭杩欎竴鎺掔殑璐т綅 - var loclist = db.Queryable<Location>() - .Where(a => a.S_AREA_CODE == location.S_AREA_CODE && a.N_ROW == location.N_ROW).ToList(); - foreach (var loc in loclist) - { - //娌¢攣鐨勪笖娌¤揣鐨勬墠缁�- if (loc.N_LOCK_STATE == 0 && loc.N_CURRENT_NUM < loc.N_CAPACITY) - { - - - } - - } - } - catch (Exception ex) - { - Console.WriteLine("multBindMaterial:" + ex.Message + ex.StackTrace); - LogHelper.Error("multBindMaterial:" + ex.Message, ex); - throw; - } - - - return result; - } - /// <summary> - /// 鎸夐挳鐩掕皟鐢ㄤ笅绾�- /// </summary> - /// <param name="startLoc">璧风偣璐т綅</param> - /// <param name="endArea">缁堢偣璐у尯</param> - /// <returns></returns> - internal static bool tcpOffline(string startLoc, string endArea) - { - var db = new SqlHelper<Location>().GetInstance(); - - LogHelper.Info($"tcpOffline=====鍙傛暟:璧风偣璐т綅{startLoc}缁堢偣搴撳尯{endArea}"); - try - { - //鏍¢獙璧风偣璐т綅鏄惁瀛樺湪/閿佷綇 - var loc = db.Queryable<Location>().Where(a => a.S_CODE == startLoc).First(); - if (loc == null || loc.N_LOCK_STATE != 0 || loc.C_ENABLE != "Y") - { - LogHelper.Info("璧风偣璐т綅涓嶅瓨鍦ㄦ垨宸查攣" + startLoc); - return false; - } - //璁$畻缁堢偣璐т綅 - //if (string.IsNullOrEmpty(endArea)) - //{ - // return new Results { Code = "1", Message = "鍑哄簱鏈紶缁堢偣搴撳尯!", Data = null }; - //} - //濡傛灉鏄揣鍑戝瀷 - var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "绱ф�閫佹鍖�).FirstOrDefault(); - Location OutLoc = null; - if (endArea.Equals(reservoirs.areaCode)) - { - OutLoc = CompactWorkTransport(endArea); - } - else - { - OutLoc = InWorkTransport(endArea); - } - //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴 - string trayCode = ContainerHelper.GenerateCntrNo(); - //娌′紶鐗╂枡鐨勮瘽榛樿涓�釜 - string itemCode = null; - string wlName = null; - //if (!string.IsNullOrEmpty(model.S_ITEM_CODE)) - //{ - // itemCode = model.S_ITEM_CODE; - // wlName = db.Queryable<TN_Material>().Where(b => b.S_ITEM_CODE == model.S_ITEM_CODE).First().S_ITEM_NAME; - //} - if (OutLoc == null) - { - LogHelper.Info($"缁堢偣璐т綅涓嶅瓨鍦�, "鎸夐挳鐩掍笅绾�); - return false; - } - ContainerHelper.BindLocCntrs(OutLoc.S_CODE, trayCode, itemCode, wlName); - //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc}缁堢偣:{OutLoc.S_CODE}", "鎸夐挳鐩掍笅绾�); - return TaskProcess.CreateTransport(startLoc, OutLoc.S_CODE, "鎸夐挳鐩掍笅绾�, trayCode, 1, 1); - - } - catch (Exception ex) - { - Console.WriteLine("tcpOffline:" + ex.Message + ex.StackTrace); - LogHelper.Error("tcpOffline:" + ex.Message, ex); - throw; - } - } - /// <summary> - /// 鎸夐挳鐩掕皟鐢ㄧ┖鎵�- /// </summary> - /// <param name="startLoc">璧风偣璐т綅</param> - /// <param name="endLoc">缁堢偣璐т綅</param> - /// <returns></returns> - internal static bool tcpEmptyTray(string startLoc, string endLoc) - { - var db = new SqlHelper<Location>().GetInstance(); - try - { - //鏍¢獙缁堢偣璐т綅鏄惁閿�- var endloc = db.Queryable<Location>().Where(a => a.S_CODE == endLoc).First(); - if (endloc == null || endloc.N_LOCK_STATE != 0 || endloc.C_ENABLE != "Y") - { - LogHelper.Info("缁堢偣璐т綅宸查攣" + endLoc); - return false; - } - //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴 - string trayCode = ContainerHelper.GenerateCntrNo(); - //鍒涘缓浠诲姟 - LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc}缁堢偣:{endLoc}", "鎸夐挳鐩掕皟鐢ㄧ┖鎵�); - return TaskProcess.CreateTransport(startLoc, endLoc, "鎸夐挳鐩掕皟鐢ㄧ┖鎵�, trayCode, 1, 1); - - } - catch (Exception ex) - { - Console.WriteLine("materialOffline:" + ex.Message + ex.StackTrace); - LogHelper.Error("materialOffline:" + ex.Message, ex); - throw; - } - } - - - /// <summary> - /// 瀹夊叏浜や簰 - /// </summary> - /// <param name="model.STATION_NAME">璇锋眰鐐逛綅</param> - /// <param name="model.APPLY_CODE">璇锋眰鐮�/param> - /// <returns></returns> - internal static safeResult safetyInteraction(SafetyInteraction model) - { - //0鍏佽杩涘叆 1涓嶅厑璁歌繘鍏�- var result = new safeResult() { code = "1", msg = "success" }; - try - { - var reservoirs = Settings.SafeInteractions.Where(s => s.location == model.STATION_NAME).FirstOrDefault();//y0-0000 y1-0001 on-FF00 off-0000 - //var rgvSafeInteraction = DeviceProcess.rgvSafeInteraction; - var plcDeviceTable = S7Helper.plcDeviceTables; - if (plcDeviceTable != null) - { - //RGV - if (reservoirs.type.Equals("RGV")) - { - LogHelper.Info($"RGV瀹夊叏浜や簰 璇锋眰鐐逛綅锛歿model.STATION_NAME}璇锋眰鐮侊細{model.APPLY_CODE}"); - //澶勭悊淇″彿 - var res = int.Parse(plcDeviceTable.RGVAllowUnload[reservoirs.code].ToString().Substring(1, 1)); - //鏍规嵁ip璇荤姸鎬�- LogHelper.Info($"RGV瀹夊叏浜や簰缂撳瓨淇″彿{res}锛寋JsonConvert.SerializeObject(plcDeviceTable.RGVAllowUnload)}"); - //鍗歌揣璇锋眰杩涘叆 - if (model.APPLY_CODE.Equals("5")) - { - //1鍏佽鍗歌揣 - if (res == 1) - { - LogHelper.Info($"RGV瀹夊叏浜や簰 鍏佽鍗歌揣"); - return new safeResult() { code = "0", msg = "success" }; - } - } - //鍗歌揣鍚庡凡绂诲紑 - else if (model.APPLY_CODE.Equals("8")) - { - //鍙戦�鍗歌揣瀹屾垚銆佸浣嶄俊鍙�- //鍗歌揣瀹屾垚淇″彿 - S7Helper.WriteInt(50, reservoirs.code * 2 - 2, (short)(reservoirs.code * 10 + 1)); - - // 鍚姩鍚庡彴浠诲姟澶勭悊寤惰繜澶嶄綅 - Task.Run(async () => - { - //10绉掑悗澶嶄綅 - await Task.Delay(10000); - S7Helper.WriteInt(50, reservoirs.code * 2 - 2, (short)(reservoirs.code * 10)); - LogHelper.Info($"RGV瀹夊叏浜や簰 澶嶄綅瀹屾垚"); - }); - //10绉掑悗澶嶄綅 - //S7Helper.WriteInt(50, reservoirs.code * 2 - 2, (short)(reservoirs.code * 10)); - //safeAssistant(reservoirs.code, res); - LogHelper.Info($"RGV瀹夊叏浜や簰 鍗歌揣瀹屾垚"); - return new safeResult() { code = "0", msg = "success" }; - } - - - } - //鎷嗘墭鏈�- else if (reservoirs.type.Equals("CTJ")) - { - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜� 璇锋眰鐐逛綅锛歿model.STATION_NAME}璇锋眰鐮侊細{model.APPLY_CODE}"); - //鎵惧埌绾夸綋 鏍规嵁绾夸綋鎵惧唴瀛橀噷鐨勭姸鎬�- var reservoirs1 = Settings.ConveyorLinesInfos.Where(s => s.location == model.STATION_NAME).FirstOrDefault(); - - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜掑弬鏁皗JsonConvert.SerializeObject(plcDeviceTable)}"); - if (model.APPLY_CODE.Equals("1")) - { - //0-鑴辨満鐘舵�锛�-寰呮満鐘舵�锛�-杩愯涓� 寰呮満涓旀湁鎵樼洏涓旇姹傚彇妗嗘墠璧�- if ((reservoirs1.deviceNo == "1" && plcDeviceTable.requestTake1) || - (reservoirs1.deviceNo == "2" && plcDeviceTable.requestTake2)) - { - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜�鍏佽鍙栨"); - return new safeResult() { code = "0", msg = "success" }; - } - - } - else if (model.APPLY_CODE.Equals("5")) - { - //0-鑴辨満鐘舵�锛�-寰呮満鐘舵�锛�-杩愯涓� 寰呮満涓旀棤鎵樼洏涓斿厑璁告斁妗嗘墠璧�- if ((reservoirs1.deviceNo == "1" && plcDeviceTable.requestPut1) || - (reservoirs1.deviceNo == "2" && plcDeviceTable.requestPut2)) - { - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜�鍏佽鏀炬"); - return new safeResult() { code = "0", msg = "success" }; - } - } - //鍙栬揣绂诲紑 - else if (model.APPLY_CODE.Equals("4")) - { - int offsetAddr = 8; - if (reservoirs1.deviceNo == "1") - { - offsetAddr = 1; - } - else if (reservoirs1.deviceNo == "2") - { - offsetAddr = 3; - } - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜掑啓鍏reservoirs1.deviceNo}锛寋offsetAddr}"); - S7Helper.WriteDouble(reservoirs1.deviceNo, 9, 182, offsetAddr, 1); - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜�鍙栨绂诲紑"); - return new safeResult() { code = "0", msg = "success" }; - } - //鍗歌揣绂诲紑 - else if (model.APPLY_CODE.Equals("8")) - { - int offsetAddr = 8;//闅忎究缁欎竴涓�- if (reservoirs1.deviceNo == "1") - { - offsetAddr = 0; - } - else if (reservoirs1.deviceNo == "2") - { - offsetAddr = 2; - } - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜掑啓鍏reservoirs1.deviceNo}锛寋offsetAddr}"); - S7Helper.WriteDouble(reservoirs1.deviceNo, 9, 182, offsetAddr, 1); - LogHelper.Info($"鎷嗘墭鏈哄畨鍏ㄤ氦浜�鍙栨绂诲紑"); - return new safeResult() { code = "0", msg = "success" }; - } - - } - } - return result; - } - catch (Exception ex) - { - Console.WriteLine("safetyInteraction:" + ex.Message + ex.StackTrace); - LogHelper.Error("safetyInteraction:" + ex.Message, ex); - throw; - } - } - //寰幆鍙戦�淇″彿 - private static void safeAssistant(int code, int res) - { - Thread.Sleep(10000); - S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10)); - LogHelper.Info($"RGV瀹夊叏浜や簰 澶嶄綅瀹屾垚"); - ////2鍗歌揣瀹屾垚纭 - //if (res != 2) - //{ - // //鍗歌揣瀹屾垚淇″彿 - // S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10 + 1)); - // Thread.Sleep(3000); - // safeAssistant(code, res); - //} - //else - //{ - // S7Helper.WriteInt(50, code * 2 - 2, (short)(code * 10)); - //} - - } - - /// <summary> - /// 鎸夐挳鎺у埗鏈嶅姟寮�叧 - /// </summary> - /// <param name="isusing.S_STATUS">鏈嶅姟鐘舵�</param> - /// <param name="isusing.S_TYPE">鏈嶅姟绫诲瀷</param> - /// <returns></returns> - internal static Results switchButton(Isusing isusing) - { - var db = new SqlHelper<object>().GetInstance(); - var result = new Results() { Code = "1", Message = $"鏈嶅姟鐘舵�澶辫触锛�, Data = null }; - var isusinglist = db.Queryable<Isusing>().Where(a => a.S_TYPE == isusing.S_TYPE).First(); - isusinglist.S_STATUS = isusing.S_STATUS; - var res = db.Updateable(isusinglist).UpdateColumns(it => it.S_STATUS).ExecuteCommand() > 0; - if (res) - { - return new Results() { Code = "0", Message = $"鏈嶅姟鐘舵�淇敼鎴愬姛锛�, Data = null }; - - } - return result; - } - //tcp鍙戦�淇″彿 娴嬭瘯鐢�- internal static Results tcpSend(string str) - { - var reservoirs = Settings.SafeInteractions.Where(s => s.code == 1).FirstOrDefault(); - //娴嬭瘯鐢�- LogHelper.Info($"RGV瀹夊叏浜や簰鍙戦�淇″彿{reservoirs.ip},{str}"); - //鏃犵姸鎬佷俊鍙�- bool res = PlcHelper.SendHex(reservoirs.ip, str); - if (res) - { - return new Results() { Code = "0", Message = $"鍙戦�鎴愬姛", Data = null }; - } - - return new Results() { Code = "1", Message = $"鍙戦�澶辫触", Data = null }; - } - - #endregion /// <summary> /// 澶т欢 @@ -1779,278 +1124,387 @@ try { var startLoc = new Location(); - var endLoc = 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 } + }; } - - endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First(); - if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") - { - Message = $"{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 } + }; } - endLoc = InWorkTransport(model.parameter.dst); - if (endLoc==null) + var endLoc = InWorkTransport(model.parameters.dst_area); + if (endLoc == null) { - Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙叆璐т綅!"; + //濡傛灉娌℃壘鍒板氨绛夌涓�潯 + 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); - if (startLoc==null) + startLoc = OutWorkTransportXm(model.parameters.src_area, model.parameters.issueMode); + if (startLoc == null) { - Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙嚭璐т綅!"; + Message = $"{model.parameters.dst}搴撳尯娌℃湁鍙嚭璐т綅!"; + return new TaskResponse + { + header = new ResponseHead { code = 0, desc = Message } + }; } - endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First(); + 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.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE; + + } + break; + case "p2u": + 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.dst}搴撲綅宸茶閿佸畾!"; + 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.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.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}缁堢偣:{endLoc.S_CODE}", model.ts_name); - var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, 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 } - }; - - } - var result = new TaskResponse(); - if (Message != null) - { - result = new TaskResponse - { - header = new ResponseHead { code = 0, desc = Message } + header = new ResponseHead { code = 0, desc = $"{model.taskList[0].parameters.src}搴撲綅宸茶閿佸畾!" } }; } - else + var endLoc = TaskProcess.InWorkTransport(model.shippingRoute); + if (endLoc != null) { - 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; - - } - catch (Exception ex) - { - Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace); - LogHelper.Error("bigMaterial:" + ex.Message, ex); - throw; - } - - } - - - /// <summary> - /// 灏忎欢 - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - internal static TaskResponse smallMaterial(smallMaterial model) - { - try - { - var startLoc = new Location(); - var endLoc = new Location(); - string Message = null; - - if (model.taskType=="鑷姩") - { + ////鍒涘缓鍒扮紦瀛樺尯浠诲姟 + //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); - autoSmallMaterial(model); - - - } - else if (model.taskType == "浜哄伐") - { - artificialSmallMaterial(model); - - } - - - - - - - - var result = new TaskResponse(); - if (Message != null) - { - result = new TaskResponse + //鎵緋2a鐨勪换鍔$紪鐮�+ var order_name = model.taskList.Find(s=>s.ts_name=="p2a").order_name; + //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪 + if (repeatTaskCode(order_name)) { - header = new ResponseHead { code = 0, desc = Message } - }; - } - else - { - result = new TaskResponse - { - header = new ResponseHead { code = 200, desc = "SUCCESS" }, - body = new ResponseBody + Message = order_name + "浠诲姟缂栧彿宸插瓨鍦�; + return new TaskResponse { - msg = "success", - app_name = "Guozi client", - data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } }, - version = "" - } - }; - } - return result; - - } - catch (Exception ex) - { - Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace); - LogHelper.Error("bigMaterial:" + ex.Message, ex); - throw; - } - - } - //鑷姩 鎷嗗垎 - private static string 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) - { - Message = $"{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 Message="鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触"; - } - } - //鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅 - 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 = $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!"; - } - //璐ф灦涓婄殑璐у垽鏂竴涓嬭揣鏋舵湁娌℃湁閿�- 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) + 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) { - Message = $"{startFrameParent.S_FRAME_CODE}搴撲綅宸茶閿佸畾!"; + 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) + { + 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; } - - return Message; - //switch (model.ts_name) - //{ - // case "p2p": - // startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First(); - // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") - // { - // Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!"; - // } - - // endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First(); - // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") - // { - // Message = $"{model.parameter.dst}搴撲綅宸茶閿佸畾!"; - // } - - // break; - // case "p2a": - // startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First(); - // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") - // { - // Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!"; - // } - // endLoc = InWorkTransport(model.parameter.dst); - // if (endLoc == null) - // { - // Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙叆璐т綅!"; - // } - // break; - // case "a2p": - // startLoc = OutWorkTransport(model.parameter.src); - // if (startLoc == null) - // { - // Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙嚭璐т綅!"; - // } - - // endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First(); - // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") - // { - // Message = $"{model.parameter.dst}搴撲綅宸茶閿佸畾!"; - // } - // break; - //} - - //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.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1); - //if (!res) - //{ - // return new TaskResponse - // { - // header = new ResponseHead { code = 1, desc = Message } - // }; - - //} - } - //浜哄伐 涓嶆媶鍒�- private static void artificialSmallMaterial(smallMaterial model) - { - var db = new SqlHelper<Location>().GetInstance(); - - + catch (Exception ex) + { + Console.WriteLine("smallMaterial:" + ex.Message + ex.StackTrace); + LogHelper.Error("smallMaterial:" + ex.Message, ex); + throw; + } } -- Gitblit v1.9.1