From 7cc26b2202675a4ef2189a60c275bc9345bc9856 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期二, 08 七月 2025 17:04:24 +0800 Subject: [PATCH] 111 --- HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs | 599 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 537 insertions(+), 62 deletions(-) diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs index dba413b..4826fa9 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs @@ -2,6 +2,7 @@ using HH.WCS.Mobox3.NFLZ.dispatch; using HH.WCS.Mobox3.NFLZ.util; using HH.WCS.Mobox3.NFLZ.wms; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -50,12 +51,442 @@ private static void LinZhiAnalysisDeviceChange(string data, Settings.deviceInfo plc) { if (plc.deviceType == 1) AnalysisDoor(data, plc);//鑷姩闂ㄥ鐞�- //if (plc.deviceType == 2) LinJiangAnalysisProductLine(data, plc);//杈撻�绾垮鐞�-- 鎴愬搧涓嬬嚎 - //if (plc.deviceType == 3) LinJiangAnalysisProductLine(data, plc);//杈撻�绾垮鐞�-- 绌烘墭涓婄嚎 + if (plc.deviceType == 2) LinZhiAnalysisProductLine(data, plc);//杈撻�绾垮鐞�-- 鎴愬搧涓嬬嚎 + if (plc.deviceType == 3) LinZhiAnalysisProductLine(data, plc);//杈撻�绾垮鐞�-- 绌烘墭涓婄嚎 if (plc.deviceType == 4) LinZhiAnalysisPreform(data, plc);//鐡跺澂鏈� if (plc.deviceType == 5) LinZhiAnalysisPGDump(data, plc);//鐡剁洊缈绘枟鏈� if (plc.deviceType == 6) LinZhiAnalysisPPDump(data, plc);//鐡跺澂缈绘枟鏈� } + + + + private static void LinZhiAnalysisProductLine(string data, Settings.deviceInfo plc) + { + LogHelper.Info($"{plc.deviceName}-{plc.address}-{data}", "杈撻�绾�); + + if (LineState.Keys.Contains(plc.TN_Location[0])) + { + LineState[plc.TN_Location[0]].status = data; + LineState[plc.TN_Location[0]].modify = DateTime.Now; + } + else + { + LineState.Add(plc.TN_Location[0], new statemodel { status = data, modify = DateTime.Now }); + } + + //鐘舵�1 婊℃墭涓嬬嚎鎴栫┖鎵樹笂绾匡紝鍏蜂綋浠诲姟绫诲瀷闇�鏍规嵁TCP娑堟伅浣嶆暟鍒ゆ柇 11-婊℃墭涓嬬嚎 21-绌烘墭涓婄嚎 + //婊℃墭涓嬬嚎锛氶渶瑕佹牴鎹墿鏂欙紝鍝佺浉锛屾壒娆″叆搴� 绌烘墭涓婄嚎锛氱┖鎵樻槸鍚﹀崟鐙瓨鍦ㄧ┖鎵樺簱鍖猴紝寰呯‘瀹�+ //涓嶅悓浜х嚎涓嬬嚎搴撳尯涓嶅悓锛岄儴鍒嗕骇绾夸笅绾垮簱鍖虹浉鍚岋紝浣嗘湁鍏堝悗椤哄簭 + //涓嬬嚎搴撳尯鍏堝悗椤哄簭锛氬叆搴撳尯鍩熼『搴忥細3-6-2-5-4-1 + //B1~B6 鍙屾墭涓嬬嚎--鍙兘瀛樺湪灏炬墭涓哄崟鎵樼殑鎯呭喌--灏炬墭(鍗曟墭)浜哄伐PDA涓嬪彂(鍏ラ浂澶村簱)----婊℃墭涓嬬嚎 + //B1~B5 鍗曟墭涓婄嚎 B6 鍙屾墭涓婄嚎------------------------------------------------绌烘墭涓婄嚎 + if (data.Length == 4) + { + if (data.Substring(0, 4) == "1220") + { + //婊℃墭涓嬬嚎 + ConveryInfoFull(plc, plc.TN_Location[0]); + } + if (data.Substring(0, 4) == "1021") + { + //绌烘墭涓婄嚎 + ConveryInfoEmpty(plc, plc.TN_Location[0]); + } + } + } + + /// <summary> + /// 杈撻�绾跨┖鎵樹笂绾�+ /// </summary> + /// <param name="plc"></param> + /// <param name="location"></param> + private static void ConveryInfoEmpty(Settings.deviceInfo plc, string location) + { + //try + //{ + // if (location != "") + // { + // if (LocationHelper.CheckLocFree(location)) + // { + // var db = new SqlHelper<object>().GetInstance(); + // bool flag = true; + // var cgInfo = db.Queryable<CGTTable>().Where(a => a.Bit == location).First(); + // if (cgInfo != null) + // { + // if (cgInfo.time.AddSeconds(5) > DateTime.Now) + // { + // flag = false; + // } + // + // } + // if (flag) + // { + // LogHelper.Info($"杈撻�绾匡細{plc.deviceName}, {location}琛ョ┖淇″彿 鏌ヨ宸ュ崟", "杈撻�绾�); + // var workorder = WCSHelper.GetLinZhiWorkOrder(plc.deviceName); + // if (workorder != null && workorder.S_WorkState.Trim() == "鎵ц涓�) + // { + // LogHelper.Info($"杈撻�绾匡細{plc.deviceName}, {location}涓嬬嚎淇″彿 鎵惧埌宸ュ崟", "杈撻�绾�); + // ProductLineempty(plc, location, workorder); + // } + // else + // { + // LogHelper.Info($"杈撻�绾匡細{plc.deviceName} ,{location}涓嬬嚎淇″彿 鏈壘鍒板伐鍗�, "杈撻�绾�); + // } + // } + // } + // else + // { + // LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 褰撳墠浣嶇疆{location}鏈変换鍔★紝涓嶅彲瑙﹀彂绌烘墭涓婄嚎", "杈撻�绾�); + // } + // } + //} + //catch (Exception ex) + //{ + // Console.WriteLine($"杈撻�绾垮懠鍙┖鎵樺紓甯� 寮傚父淇℃伅={ex.Message}"); + //} + } + + /// <summary> + /// 杈撻�绾挎弧鎵樹笅绾�+ /// </summary> + /// <param name="plc"></param> + /// <param name="location"></param> + private static bool ConveryInfoFull(Settings.deviceInfo plc, string location) + { + var result = false; + try + { + if (location != "") + { + //鍙栨弧锛岄渶瑕佹牴鎹伐鍗曚互鍙婁骇绾夸俊鎭紝鍒ゆ柇褰撳墠浜х嚎搴旇涓嬪彂鍒板摢涓簱鍖猴紝浠ュ強鏄粈涔堟墭鐩樼被鍨嬩笅绾�+ if (LocationHelper.CheckLocFree(location)) + { + var db = new SqlHelper<object>().GetInstance(); + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location} 鏌ヨ宸ュ崟", "杈撻�绾�); + //1.鏌ヨ褰撳墠浜х嚎宸ュ崟淇℃伅 + var workOrder = WCSHelper.GetLinZhiWorkOrder(plc.deviceName); + if (workOrder != null) + { + //workOrder.S_BatchNo = DateTime.Now.ToString("yyyy-MM-dd"); + //db.Updateable(workOrder).UpdateColumns(a => new { a.S_BatchNo }).ExecuteCommand(); + // + //workOrder = WCSHelper.GetLinJiangWorkOrder(plc.deviceName); + string DeviceStartTime = DateTime.Now.ToString();//褰撳墠璁惧绗竴娆℃敹鍒颁笅绾夸俊鍙锋椂闂�+ string TrayCode = "";//鎵樼洏缂栫爜--澶氫釜缂栫爜鐢�鑻辨枃閫楀彿闅斿紑 + string BatchNo = string.IsNullOrEmpty(workOrder.S_BatchNo) ? "" : workOrder.S_BatchNo.Trim();//鎵规鍙�+ string ItemLayer = string.IsNullOrEmpty(workOrder.S_ItemLayer) ? "" : workOrder.S_ItemLayer.Trim();//鐗╂枡灞傛暟 + string ItemTrayType = workOrder.S_TrayType;//璐х墿澶у皬鏉�-澶ф澘銆佸皬鏉裤�闆嗗寲鏉�鎵樼洏绫诲瀷闇�鍙樺姩) + string StartBit = plc.TN_Location[0]; + string workNo = ""; + //浠ヤ笅涓変釜瀛楁鏆傛湭浣跨敤 + //string EndBit = ""; + //string StartLayer = "1";//鐢熶骇涓嬬嚎-璧风偣灞傛暟榛樿涓� + //string EndLayer = ""; + + //浜х嚎涓嬬嚎娴佺▼----姝e父娴佺▼涓嬬嚎 + if (workOrder.S_ORDER_TYPE.Trim() != "鏃犵爜鍏ュ簱") + { + bool full = true; + //鍒ゆ柇褰撳墠璐т綅鏄惁瀛樺湪鎵樼洏锛屽鏋滃瓨鍦ㄥ垯 鏃犻渶浠庢墭鐩樹俊鎭腑闂磋〃鑾峰彇 + var trayInfo = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == StartBit).ToList(); + if (trayInfo.Count() > 0) + { + BatchNo = workOrder.S_BatchNo.Trim(); + ItemLayer = workOrder.S_ItemLayer.Trim(); + trayInfo.ForEach(a => + { + TrayCode = TrayCode + a.S_CNTR_CODE + ","; + workNo = a.S_SRC; + }); + } + else + { + //2.鑾峰彇璁惧绗竴娆′笅绾挎椂闂�+ bool IsTime = true; + DeviceStartTime = ConveryInfoFullTwo(plc, DeviceStartTime); + + if (IsTime) + { + //3.澶勭悊 宸ュ崟淇℃伅琛ㄦ暟鎹�-鎵樿銆佹壒娆″彿銆佺墿鏂欏眰鏁�+ full = ConveryInfoFullThree(plc, location, workOrder, DeviceStartTime, ref TrayCode, ref BatchNo, ref ItemLayer, ref workNo); + } + else full = false; + } + + if (full) + { + //5.姝e父浜х嚎涓嬬嚎 + ProductLineFull(plc, location, workOrder, TrayCode, BatchNo, ItemLayer, ItemTrayType, StartBit, workNo); + } + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛屾墭鐩樹俊鎭瓨鍦ㄥ紓甯革紝璇锋煡璇㈠紓甯告棩蹇楋紒", "杈撻�绾�); + } + //鏃犵爜鍏ュ簱娴佺▼----浜哄伐鍒涘缓宸ュ崟鏃�---宸ュ崟绫诲瀷 搴旈�鎷�鏃犵爜鍏ュ簱 + else + { + //鍒ゆ柇褰撳墠璁惧鍙f槸鍚﹀瓨鍦ㄦ墭鐩�浠诲姟鏈彇璐у畬鎴愶紝鎵樼洏杩樻槸缁戝畾鍦ㄨ澶囧彛鐨�锛屾湁娌跨敤锛屾棤鐢熸垚鏂版墭鐩�+ var trayInfo = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == location).ToList(); + if (trayInfo.Count() == 0) TrayCode = Guid.NewGuid().ToString("N") + "," + Guid.NewGuid().ToString("N"); + else + { + TrayCode = ""; + trayInfo.ForEach(a => { TrayCode = TrayCode + "," + a.S_CNTR_CODE.Trim(); }); + } + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location} 鏃犵爜鍏ュ簱锛�, "杈撻�绾�); + Console.WriteLine($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location} 鏃犵爜鍏ュ簱锛�); + ProductLineFull(plc, location, workOrder, TrayCode, BatchNo, ItemLayer, workOrder.S_TrayType, StartBit, workOrder.S_WorkNo); + } + } + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location} 鏈壘鍒板伐鍗�, "杈撻�绾�); + } + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 褰撳墠浣嶇疆{location}鏈変换鍔★紝涓嶅彲瑙﹀彂婊℃墭涓嬬嚎", "杈撻�绾�); + } + } + catch (Exception ex) + { + LogHelper.Info($"杈撻�绾垮鐞嗗紓甯革細{ex.Message}", "杈撻�绾�); + } + + return result; + } + + private static void ProductLineFull(Settings.deviceInfo plc, string location, LinZhiWorkOrder workOrder, string TrayCode, string BatchNo, string ItemLayer, string ItemTrayType, string StartBit, string workNo = "", bool ProType = true) + { + //5.鏍规嵁閰嶇疆鏂囦欢鑾峰彇褰撳墠浜х嚎浼樺厛涓嬪彂搴撳尯锛屽啀杩炲悓鐗╂枡銆佸ぇ灏忔澘銆佹壒娆★紝鑾峰彇姝ゅ簱鍖�鍙敤璐т綅 + // 閬嶅巻搴撳尯鏌ヨ-鍒ゆ柇鎺掗攣-琛ㄥ悕锛�RowLock + var creResult = false; + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 鏌ヨ鍏ュ簱缁堢偣璐т綅", "杈撻�绾�); + ////Console.WriteLine($"杈撻�绾匡細{plc.deviceName} 鏌ヨ鍏ュ簱缁堢偣璐т綅"); + //string ItemNameLayer = workOrder.S_ItemCode.Trim() + workOrder.S_ItemLayer.Trim(); + //var PriProLineInfo = Settings.GetDaMingShanPriProLineList().Where(a => a.deviceName == plc.deviceName && a.ItemTrayType == "婊� && a.ItemName == workOrder.S_ItemCode.Trim()).FirstOrDefault(); + var db = new SqlHelper<object>().GetInstance(); + LogHelper.Info($"itemtrayType锛歿ItemTrayType}"); + var ipl = db.Queryable<itemPrecedenceLine>().Where(a => a.S_ITEM_CODE == workOrder.S_ItemCode.Trim() && a.S_TRAY_TYPE.Trim() == ItemTrayType.Trim()).OrderByDescending(a => a.S_PRIORITY).ToList(); + if (ipl.Count() > 0) + { + if (ProType) + { + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 鏌ヨ鍒拌〃鏁版嵁", "杈撻�绾�); + ////Console.WriteLine($"杈撻�绾匡細{plc.deviceName} 鏌ヨ鍒伴厤缃枃浠�); + for (int i = 0; i < ipl.Count(); i++) + { + string areaCode = ipl[i].S_AREA_CODE; + if (!creResult) creResult = TaskProcess.LinZhiPlcTask(StartBit, "鎴愬搧涓嬬嚎", TrayCode, areaCode, workOrder.S_ItemCode.Trim(), BatchNo, ItemLayer, ItemTrayType, plc.deviceName, true, workNo); + } + } + else + { + for (int i = 0; i < ipl.Count(); i++) + { + string areaCode = ipl[i].S_AREA_CODE; + if (!creResult) creResult = TaskProcess.LinZhiPlcTask(StartBit, "闆跺ご涓嬬嚎", TrayCode, areaCode, workOrder.S_ItemCode.Trim(), BatchNo, ItemLayer, ItemTrayType, plc.deviceName, true, workOrder.S_WorkNo.Trim()); + } + } + + if (creResult) + { + LogHelper.Info("缁戝畾鎵樼洏琛ㄥ拰鎵樼洏鐗╂枡琛�); + //浠诲姟鍒涘缓鎴愬姛 缁戝畾璧风偣鎵樼洏琛紝鎵樼洏鐗╂枡琛�+ TaskProcess.BindLocCntr(StartBit, TrayCode, workOrder.S_ItemCode.Trim(), BatchNo, workNo, ItemLayer); + } + } + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location} 鏈幏鍙栧埌褰撳墠浜х嚎鐨勪紭鍏堜笅绾垮簱鍖�itemPrecedenceLine 鏁版嵁銆傝鐗╂枡涓嶅瓨鍦細{workOrder.S_ItemCode.Trim()}", "杈撻�绾�); + } + + + private static bool ConveryInfoFullThree(Settings.deviceInfo plc, string location, LinZhiWorkOrder workOrder, string DeviceStartTime, ref string TrayCode, ref string BatchNo, ref string ItemLayer, ref string workNo) + { + bool result = true; + var db = new SqlHelper<object>().GetInstance(); + //3.浠�瀵屽嫆鎵樼洏淇℃伅涓棿琛�鑾峰彇 dateTime < DeviceStartTime 鐨勬暟鎹� ChunAnTrayInfo + // 鏈変袱鏉★細杩涘叆绗�3-1 姝�+ // 灏忎簬涓ゆ潯锛氬紓甯�杩炴帴 鎶ヨ鍣�杩涜澹板厜鎶ヨ + //3-1.鍒ゆ柇鎵樼洏淇℃伅涓�鎵樿銆佹壒娆″彿銆佺墿鏂欏眰鏁�鏄惁鏈夊�---------鏍规嵁 鎵樿 鍒ゆ柇褰撳墠鎵樼洏鏄惁涓洪浂澶�+ // 鏈夊�锛氬垽鏂綋鍓嶅�鏄惁涓�宸ュ崟淇℃伅 鐩稿悓锛屼笉鍚屼唬琛�褰撳墠浜х嚎鍒囨崲浜嗙敓浜х被鍨嬫垨棣栨涓嬬嚎锛岄渶鍚屾鏇存柊 宸ュ崟淇℃伅 + // 鏃犲�锛氬垽鏂伐鍗曟槸鍚﹀瓨鍦ㄥ搴斿�锛屼笉瀛樺湪 鍗�寮傚父 + if (!string.IsNullOrEmpty(DeviceStartTime)) + { + var trayTableInfo = WCSHelper.GetLinZhiTrayInfoList(DeviceStartTime, plc.deviceName); + if (trayTableInfo != null) + { + if (trayTableInfo.Count == 2)// || trayTableInfo.Count == 1 + { + workNo = trayTableInfo[0].workNo; + LogHelper.Info($"杈撻�绾匡細鑾峰彇褰撳墠涓嬬嚎鏃堕棿鍓嶇殑涓や釜鎵樼洏鏁版嵁锛屾寜鏃堕棿鍗囧簭銆備骇绾垮彿锛歿plc.deviceName},涓嬬嚎鏃堕棿锛歿DeviceStartTime}.", "杈撻�绾�); + trayTableInfo = db.Queryable<LinZhiTrayInfo>().Where(a => Convert.ToDateTime(a.dateTime.Trim()) < Convert.ToDateTime(DeviceStartTime) && a.deviceName == plc.deviceName).OrderBy(a => a.dateTime).Take(2).ToList(); + LogHelper.Info($"杈撻�绾匡細鑾峰彇褰撳墠涓嬬嚎鏃堕棿鍓嶇殑涓や釜鎵樼洏鏁版嵁涓猴細{JsonConvert.SerializeObject(trayTableInfo)}銆倇plc.deviceName},涓嬬嚎鏃堕棿锛歿DeviceStartTime}.", "杈撻�绾�); + string trayCode = ""; string batchNo = ""; string itemLayer = ""; + //1-棣栧厛鍒ゆ柇宸ュ崟 鎵樿銆佹壒娆″彿銆佺墿鏂欏眰鏁�涓変釜鍙傛暟鏄惁鏈夊� + // 鏈夊�锛氬垽鏂拰褰撳墠鍊兼槸鍚︾浉鍚岋紝涓嶅悓 鍗�鏇存柊 UpdateWorkInfo + // 鏃犲�锛氭洿鏂板伐鍗曞搴斾俊鎭�+ trayTableInfo.ForEach(a => + { + trayCode = trayCode + "," + a.trayCode; + string TrayRule = ""; + string UpdateWorkOn = "";//鏇存柊宸ュ崟淇℃伅寮�叧 榛樿涓虹┖ 1-闇�鏇存柊 鎵樿銆佹壒娆″彿銆佺墿鏂欏眰鏁�淇℃伅 + + + //鐢熶骇涓嬬嚎锛氶鎵樹笅绾�蹇呴』 浼犺緭鍏ㄩ儴淇℃伅-鎵樿銆佹壒娆″彿銆佺墿鏂欏眰鏁帮紱鍚﹀垯 绗竴鎵樺氨鏃犳硶涓嬬嚎 + // 涔嬪悗濡傛灉缂哄皯淇℃伅锛屽彲浠ヤ粠宸ュ崟鑾峰彇 + //宸ュ崟鍒濆鐘舵�锛氭墭瑙勩�鎵规鍙枫�鐗╂枡灞傛暟 蹇呯劧鏈変竴涓�涓虹┖锛涘悗缁細涓�洿鏈夊� + Console.WriteLine($"鏇存敼宸ュ崟鎵樼洏鏁版嵁锛氬伐鍗曞彿锛歿workOrder.S_WorkNo},鎵樿锛歿a.trayRule},鎵规鍙凤細{a.batchNo},鐗╂枡灞傛暟锛歿a.itemLayer}"); + if (string.IsNullOrEmpty(workOrder.S_TrayRules) || string.IsNullOrEmpty(workOrder.S_BatchNo) || string.IsNullOrEmpty(workOrder.S_ItemLayer)) + { + WCSHelper.UpdateWorkInfo(workOrder, a.trayRule, a.batchNo, a.itemLayer); + batchNo = a.batchNo; itemLayer = a.itemLayer; + } + //澶勭悊 褰撳墠鎵樼洏 鎵樿銆佹壒娆″彿銆佺墿鏂欏眰鏁�淇℃伅 + ConveryInfoFullThreeS(plc, location, a, workOrder, DeviceStartTime, ref batchNo, ref itemLayer, ref TrayRule, ref UpdateWorkOn); + if (UpdateWorkOn == "1") WCSHelper.UpdateWorkInfo(workOrder, TrayRule, batchNo, itemLayer); + //闆跺ご鐗╂枡鍒ゆ柇 + //if (TrayRule != a.trayNum) + //{ + // result = false; + // LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀敓浜т笅绾�褰撳墠鐗╂枡绠辨暟锛歿a.itemLayer}涓庢爣鍑嗘墭瑙勶細{TrayRule}涓嶇锛屾爣鍑嗘墭瑙勪俊鎭紓甯革紒", "杈撻�绾�); + // //姝e父涓嬬嚎-涓嶆槸鏁存墭涓嬬嚎 杩炴帴鎶ヨ鍣� 鎶ヨ + // Console.WriteLine($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀敓浜т笅绾�褰撳墠鐗╂枡绠辨暟锛歿a.itemLayer}涓庢爣鍑嗘墭瑙勶細{TrayRule}涓嶇锛屾爣鍑嗘墭瑙勪俊鎭紓甯革紒"); + // SendErrorTcpMsg(plc, DeviceStartTime); + //} + }); + var trayAll = WCSHelper.GetLinJiangTrayInfoAllList(plc.deviceName); + if (trayTableInfo.Count != trayAll.Count && trayTableInfo.Count == 1) + { + result = false; + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀涓�涓嬬嚎鏃堕棿涔嬪墠鍙幏寰梴trayTableInfo.Count}鏉℃墭鐩樹俊鎭紝璁板綍鎵樼洏淇℃伅涓簕trayAll.Count}鏉★紝鎵樼洏淇℃伅寮傚父锛�, "杈撻�绾�); + //杩炴帴鎶ヨ鍣� 杩涜寮傚父鎶ヨ + Console.WriteLine($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀涓�涓嬬嚎鏃堕棿涔嬪墠鍙幏寰梴trayTableInfo.Count}鏉℃墭鐩樹俊鎭紝璁板綍鎵樼洏淇℃伅涓簕trayAll.Count}鏉★紝鎵樼洏淇℃伅寮傚父锛�); + SendErrorTcpMsg(plc, DeviceStartTime); + db.Deleteable<LinZhiDeviceState>().Where(a => a.DeviceName == plc.deviceName).ExecuteCommand(); + } + TrayCode = trayCode; BatchNo = batchNo; ItemLayer = itemLayer; + } + else + { + result = false; + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀涓�涓嬬嚎鏃堕棿涔嬪墠鍙幏寰梴trayTableInfo.Count}鏉℃墭鐩樹俊鎭紝鎵樼洏淇℃伅寮傚父锛�, "杈撻�绾�); + //杩炴帴鎶ヨ鍣� 杩涜寮傚父鎶ヨ + Console.WriteLine($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀涓�涓嬬嚎鏃堕棿涔嬪墠鍙幏寰梴trayTableInfo.Count}鏉℃墭鐩樹俊鎭紝鎵樼洏淇℃伅寮傚父锛�); + SendErrorTcpMsg(plc, DeviceStartTime); + db.Deleteable<LinZhiDeviceState>().Where(a => a.DeviceName == plc.deviceName).ExecuteCommand(); + } + } + else + { + result = false; + LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛岀涓�涓嬬嚎鏃堕棿涔嬪墠鍙幏寰梴trayTableInfo.Count}鏉℃墭鐩樹俊鎭紝鎵樼洏淇℃伅寮傚父锛�, "杈撻�绾�); + SendErrorTcpMsg(plc, DeviceStartTime); + db.Deleteable<LinZhiDeviceState>().Where(a => a.DeviceName == plc.deviceName).ExecuteCommand(); + + } + } + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location} ,DeviceStartTime 璁惧绗竴娆′笅绾挎椂闂翠负绌猴紝绋嬪簭寮傚父锛�, "杈撻�绾�); + return result; + } + + /// <summary> + /// 杈撻�绾挎墭鐩樹俊鎭紓甯�鍚戣緭閫佺嚎鍙戦�寮傚父淇″彿 + /// 1銆佷笅绾挎椂闂村墠鐨勬墭鐩樻暟灏忎簬2 + /// 2銆佹墭瑙勪笉绛変簬褰撳墠鏁伴噺 + /// </summary> + /// <param name="plc"></param> + public static void SendErrorTcpMsg(Settings.deviceInfo plc, string deviceStartTime) + { + if (DateTime.Now >= Convert.ToDateTime(deviceStartTime)) PlcHelper.SendHex(plc.address, "3F00600d0a"); + } + + private static void ConveryInfoFullThreeS(Settings.deviceInfo plc, string location, LinZhiTrayInfo a, LinZhiWorkOrder workOrder, string DeviceStartTime, ref string BatchNo, ref string ItemLayer, ref string TrayRule, ref string UpdateWorkOn) + { + if (string.IsNullOrEmpty(a.trayRule)) + { + //浼犺緭缂哄皯 鏍囧噯鎵樿淇℃伅锛岄渶瑕佷粠宸ュ崟鑾峰彇 + if (!string.IsNullOrEmpty(workOrder.S_TrayRules)) TrayRule = workOrder.S_TrayRules; + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛屾墭鐩樹俊鎭〃鏃犳爣鍑嗘墭瑙勪俊鎭笖宸ュ崟:{workOrder.S_WorkNo}涔熸病鏈夋爣鍑嗘墭瑙勪俊鎭紝鏍囧噯鎵樿淇℃伅寮傚父锛�, "杈撻�绾�); + } + else + { + //涓�鍒囨崲浜�鐢熶骇鐗╂枡锛岄渶瑕佹洿鏂�宸ュ崟淇℃伅 + if (workOrder.S_TrayRules != a.trayRule) + { + TrayRule = a.trayRule; + UpdateWorkOn = "1"; + } + else TrayRule = a.trayRule; + } + if (string.IsNullOrEmpty(a.batchNo)) + { + //浼犺緭缂哄皯 鎵规鍙蜂俊鎭紝闇�浠庡伐鍗曡幏鍙�+ if (!string.IsNullOrEmpty(workOrder.S_BatchNo)) BatchNo = workOrder.S_BatchNo; + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛屾墭鐩樹俊鎭〃鏃犳壒娆″彿淇℃伅涓斿伐鍗�{workOrder.S_WorkNo}涔熸病鏈夋壒娆″彿淇℃伅锛屾壒娆″彿淇℃伅寮傚父锛�, "杈撻�绾�); + } + else + { + //涓�鍒囨崲浜�鐢熶骇鐗╂枡锛岄渶瑕佹洿鏂�宸ュ崟淇℃伅 + if (workOrder.S_BatchNo != a.batchNo) + { + BatchNo = a.batchNo; + UpdateWorkOn = "1"; + } + else BatchNo = a.batchNo; + } + if (string.IsNullOrEmpty(a.itemLayer)) + { + //浼犺緭缂哄皯 鎵规鍙蜂俊鎭紝闇�浠庡伐鍗曡幏鍙�+ if (!string.IsNullOrEmpty(workOrder.S_ItemLayer)) ItemLayer = workOrder.S_ItemLayer; + else LogHelper.Info($"杈撻�绾匡細{plc.deviceName} 涓嬬嚎淇″彿锛歿location},涓嬬嚎鏃堕棿锛歿DeviceStartTime}锛屾墭鐩樹俊鎭〃鏃犵墿鏂欏眰鏁颁俊鎭笖宸ュ崟:{workOrder.S_WorkNo}涔熸病鏈夌墿鏂欏眰鏁颁俊鎭紝鐗╂枡灞傛暟淇℃伅寮傚父锛�, "杈撻�绾�); + } + else + { + //涓�鍒囨崲浜�鐢熶骇鐗╂枡锛岄渶瑕佹洿鏂�宸ュ崟淇℃伅 + if (workOrder.S_ItemLayer != a.itemLayer) + { + ItemLayer = a.itemLayer; + UpdateWorkOn = "1"; + } + else ItemLayer = a.itemLayer; + } + } + + + private static string ConveryInfoFullTwo(Settings.deviceInfo plc, string DeviceStartTime) + { + //2.鑾峰彇褰撳墠浜х嚎 璁惧涓棿琛�瀵瑰簲淇℃伅 LinJiangDeviceState + //2-1.鏈夋暟鎹紝鍒ゆ柇褰撳墠鏄惁涓虹涓�鏀跺埌涓嬬嚎淇″彿 + // 绗竴娆★細鏇存柊 DeviceState = 1锛孌eviceStartTime = 褰撳墠鏃堕棿 + // 绗琋娆★細鍒ゆ柇褰撳墠 DeviceState 鏄惁涓�锛屼笉涓�锛屾洿鏂�DeviceState 浠ュ強 DeviceStartTime + //2-2.鏃犳暟鎹紝鎻掑叆 DeviceName 锛孌eviceState = 1锛孌eviceStartTime = 褰撳墠鏃堕棿 鏁版嵁 + //浠诲姟鍒涘缓鎴愬姛浼氬垹闄ゆ琛ㄦ暟鎹�+ + var db = new SqlHelper<object>().GetInstance(); + var workInfo = db.Queryable<LinZhiWorkOrder>().Where(a => a.S_PLineNo == plc.deviceName && a.S_ORDER_TYPE == "浜х嚎涓嬬嚎" && a.S_WorkState == "鎵ц涓�).First(); + if (workInfo != null) + { + var deviceTableInfo = WCSHelper.GetLinJiangDeviceState(plc.deviceName); + if (deviceTableInfo != null) + { + if (deviceTableInfo.DeviceState.Trim() != "1") + { + WCSHelper.UpdateLinJiangDeviceState(deviceTableInfo, "1", DeviceStartTime); + //isTime = false; + } + else + { + DeviceStartTime = deviceTableInfo.DeviceTime; + } + } + else + { + DateTime dateTime = Convert.ToDateTime(DeviceStartTime).AddMinutes(1); + DeviceStartTime = dateTime.ToString(); + WCSHelper.LinJiangInsertDeviceState(new LinZhiDeviceState + { + DeviceName = plc.deviceName, + DeviceTime = DeviceStartTime, + DeviceState = "1" + }); + } + } + return DeviceStartTime; + } + /// <summary> /// 鐡跺澂缈绘枟鏈虹┖鎵樹笅绾� /// </summary> @@ -83,14 +514,13 @@ { LogHelper.Info($"鏌ヨ鍒版墽琛屼腑鐨勫伐鍗曪紝宸ュ崟绫诲瀷锛歿workInfo.S_PLineNo}"); string startArea = ""; - string endArea = ""; string fullTaskType = ""; string emptyTaskType = ""; if (workInfo.S_UsingNow == "Y") { LogHelper.Info("鍗充骇鍗崇敤宸ュ崟"); //鍗充骇鍗崇敤鍦ㄨ捣鐐逛负绾胯竟 - var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇鍗崇敤A" && a.enable == 1).FirstOrDefault(); + var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂鍗充骇婊℃" && a.enable == 1).FirstOrDefault(); if (bcpInfo != null) { startArea = bcpInfo.areaCode; @@ -102,7 +532,8 @@ { LogHelper.Info("闈炲嵆浜у嵆鐢ㄥ伐鍗�); //闈炲嵆浜у嵆鐢ㄨ捣鐐逛负搴撳尯 - var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂闈炲嵆浜у嵆鐢� && a.enable == 1).FirstOrDefault(); + string areaName = plc.deviceName.Split('-')[1].Substring(0, 1) + "鍙风摱鍧炕鏂楁満闈炲嵆浜ф弧妗�; + var bcpInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault(); if (bcpInfo != null) { startArea = bcpInfo.areaCode; @@ -111,11 +542,9 @@ emptyTaskType = "缈绘枟鏈哄簱瀛樼┖鎵樹笅绾匡紙鐡跺澂锛�; } - endArea = Settings.areaInfos.Where(a => a.areaName == "鐡跺澂缈绘枟鏈虹┖鎵� && a.enable == 1).FirstOrDefault().areaCode; - if (data.Length == 6) { - if (data.Substring(0, 2) == "11") + if (data.Substring(2, 2) == "22") { if (LocationHelper.CheckLocFree(plc.TN_Location[0])) { @@ -138,30 +567,26 @@ //鍒ゆ柇褰撳墠缈绘枟鏈烘槸鍚︽湁閫佽繃婊℃墭 S_NOTE 瀛楁榛樿绌哄瓧绗︿覆锛屾弧鎵樺嵏璐у畬鎴愪箣鍚庝細鏍囪涓烘弧鎵橈紝绌烘墭鍙栬揣瀹屾垚澶嶄綅涓虹┖瀛楃涓� Location startLoca = null; var locCode = plc.TN_Location[0]; - var plcLoca = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locCode).ToList(); - if (plcLoca.Count <= 0) + var plcLoca = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locCode).First(); + if (plcLoca == null) { LogHelper.Info($"鐡跺澂缈绘枟鏈轰笂鏃犳墭鐩橈紝鐢熸垚婊℃墭涓婄嚎浠诲姟锛岀摱鍧炕鏂楁満鐐逛綅锛歿plc.TN_Location[0]}"); //鍒濆鐘舵�锛屾棤鎵樼洏锛岀洿鎺ヤ笂婊℃墭(闈炲嵆浜у嵆鐢ㄩ渶瑕佹牎楠�濂楄瀹屾垚锛屽嵆浜у嵆鐢ㄧ洿鎺ヤ娇鐢� if (workInfo.S_UsingNow == "Y") { - LogHelper.Info($"鐡跺澂鍗充骇鍗崇敤A搴撳尯鏌ユ壘"); + LogHelper.Info($"鐡跺澂鍗充骇婊℃ 鏌ユ壘"); startLoca = getFDSXArea(db, workInfo, startArea); - if (startLoca == null) - { - LogHelper.Info($"鐡跺澂鍗充骇鍗崇敤A搴撳尯鏈壘鍒版弧鎵橈紝鍘荤摱鍧嵆浜у嵆鐢˙搴撳尯鏌ユ壘"); - startLoca = TaskProcess.BCPInOrOut(db, true, "鐡跺澂鍗充骇鍗崇敤B", workInfo.S_ItemCode); - } } else { + LogHelper.Info($"鐡跺澂缈绘枟鏈洪潪鍗充骇婊℃ 鏌ユ壘"); startLoca = getFDSXArea(db, workInfo, startArea); } if (startLoca != null) { //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(startLoca.S_CODE, locCode, "鍑哄簱", fullTaskType, startLoca.LocCntrRel.S_CNTR_CODE); + WMSHelper.CreateOpTask(startLoca.S_CODE, locCode, "鍑哄簱", fullTaskType, startLoca.LocCntrRel.S_CNTR_CODE, "", "", workInfo.S_WorkNo); } } else @@ -169,7 +594,7 @@ LogHelper.Info($"鐡跺澂缈绘枟鏈轰笂鏈夌┖鎵樼洏锛岀敓鎴愮┖鎵樹笅绾夸换鍔★紝鐡跺澂缈绘枟鏈虹偣浣嶏細{plc.TN_Location[0]}"); //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(locCode, "", "鍏ュ簱", emptyTaskType, plcLoca[0].S_CNTR_CODE); + WMSHelper.CreateOpTask(locCode, "", "鍏ュ簱", emptyTaskType, plcLoca.S_CNTR_CODE, "", "", workInfo.S_WorkNo); } } } @@ -212,12 +637,11 @@ { LogHelper.Info($"鏌ヨ鍒版墽琛屼腑鐨勫伐鍗曪紝宸ュ崟绫诲瀷锛歿workInfo.S_PLineNo}"); string startArea = ""; - string endArea = ""; string fullTaskType = ""; string emptyTaskType = ""; LogHelper.Info("闈炲嵆浜у嵆鐢ㄥ伐鍗�); //闈炲嵆浜у嵆鐢ㄨ捣鐐逛负搴撳尯 - var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "鐡剁洊闈炲嵆浜у嵆鐢� && a.enable == 1).FirstOrDefault(); + var bcpInfo = Settings.areaInfos.Where(a => a.areaName == "鐡剁洊闈炲嵆浜ф弧妗� && a.enable == 1).FirstOrDefault(); if (bcpInfo != null) { startArea = bcpInfo.areaCode; @@ -226,16 +650,13 @@ fullTaskType = "缈绘枟鏈哄簱瀛樻弧鎵樹笂绾匡紙鐡剁洊锛�; emptyTaskType = "缈绘枟鏈哄簱瀛樼┖鎵樹笅绾匡紙鐡剁洊锛�; - endArea = Settings.areaInfos.Where(a => a.areaCode == "鐡剁洊绌烘墭" && a.enable == 1).FirstOrDefault().areaCode; - if (data.Length == 6) { - if (data.Substring(0, 2) == "11") + if (data.Substring(2, 2) == "22") { if (LocationHelper.CheckLocFree(plc.TN_Location[0])) { var bit = plc.TN_Location[0]; - bool flag = true; var cgInfo = db.Queryable<CGTTable>().Where(a => a.Bit == bit).First(); if (cgInfo != null) @@ -251,8 +672,8 @@ Location startLoca = null; var locCode = plc.TN_Location[0]; - var plcLoca = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locCode).ToList(); - if (plcLoca.Count <= 0) + var plcLoca = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locCode).First(); + if (plcLoca == null) { LogHelper.Info($"鐡剁洊缈绘枟鏈轰笂鏃犳墭鐩橈紝鐢熸垚婊℃墭涓婄嚎浠诲姟锛岀摱鐩栫炕鏂楁満鐐逛綅锛歿plc.TN_Location[0]}"); //鍒濆鐘舵�锛屾棤鎵樼洏锛岀洿鎺ヤ笂婊℃墭(闈炲嵆浜у嵆鐢ㄩ渶瑕佹牎楠�濂楄瀹屾垚锛屽嵆浜у嵆鐢ㄧ洿鎺ヤ娇鐢� @@ -261,14 +682,14 @@ if (startLoca != null) { //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(startLoca.S_CODE, locCode, "鍑哄簱", fullTaskType, startLoca.LocCntrRel.S_CNTR_CODE); + WMSHelper.CreateOpTask(startLoca.S_CODE, locCode, "鍑哄簱", fullTaskType, startLoca.LocCntrRel.S_CNTR_CODE,"","",workInfo.S_WorkNo); } } else { - LogHelper.Info($"鐡剁洊缈绘枟鏈轰笂鏈夌┖鎵樼洏锛岀敓鎴愮┖鎵樹笅绾夸换鍔★紝鐡剁洊缈绘枟鏈虹偣浣嶏細{plc.TN_Location[0]}"); + LogHelper.Info($"鐡剁洊缈绘枟鏈轰笂鏈夌┖鎵樼洏锛岀敓鎴愮┖鎵樹笅绾夸换鍔★紝鐡剁洊缈绘枟鏈虹偣浣嶏細{locCode}"); //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(plc.TN_Location[0],"", "鍏ュ簱", emptyTaskType, startLoca.LocCntrRel.S_CNTR_CODE); + WMSHelper.CreateOpTask(locCode, "", "鍏ュ簱", emptyTaskType, plcLoca.S_CNTR_CODE,"","",workInfo.S_WorkNo); } } } @@ -287,6 +708,7 @@ { foreach(var a in locList) { + LogHelper.Info($"getFDSXArea:鏌ヨ鍒板綋鍓嶈揣浣嶉攣鐘舵�锛歿a.S_LOCK_STATE},璐т綅缂栫爜锛歿a.S_CODE}"); if(a.S_LOCK_STATE == "鏃�) { var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First(); @@ -295,16 +717,28 @@ var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First(); if(itemInfo != null) { - if(itemInfo.S_ITEM_CODE == workInfo.S_ItemCode) + LogHelper.Info($"getFDSXArea:鏌ヨ鍒扮墿鏂欑紪鐮侊細{itemInfo.S_ITEM_CODE}"); + if (itemInfo.S_ITEM_CODE == workInfo.S_ItemCode) { result = a; break; } } - + else + { + LogHelper.Info($"getFDSXArea:褰撳墠鎵樼洏鏈粦瀹氱墿鏂欙紝鎵樼洏缂栫爜锛歿cntrInfo.S_CNTR_CODE}"); + } + } + else + { + LogHelper.Info($"getFDSXArea:褰撳墠璐т綅鏈粦瀹氭墭鐩�); } } } + } + else + { + LogHelper.Info($"getFDSXArea:鏈煡璇㈠埌鍙敤婊℃墭锛屽簱鍖虹紪鐮侊細{startArea}"); } return result; } @@ -319,6 +753,21 @@ { LogHelper.Info($"{plc.deviceName}-{plc.address}-{data}", "鐡跺澂鏈�); var db = new SqlHelper<object>().GetInstance(); + + LogHelper.Info($"鐡跺澂鏈猴紝鏌ヨ浠诲姟缁堢偣锛歿plc.TN_Location[0]}"); + if (LineState.Keys.Contains(plc.TN_Location[0])) + { + LogHelper.Info("鐡跺澂鏈哄寘鍚浠诲姟缁堢偣"); + LineState[plc.TN_Location[0]].status = data; + LineState[plc.TN_Location[0]].modify = DateTime.Now; + } + else + { + LogHelper.Info("鐡跺澂鏈烘湭鍖呭惈璇ヤ换鍔$粓鐐�); + LineState.Add(plc.TN_Location[0], new statemodel { status = data, modify = DateTime.Now }); + } + + var workInfo = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_PLineNo == plc.deviceName).First(); if (workInfo != null && workInfo.S_WorkState == "鎵ц涓�) { @@ -336,12 +785,11 @@ taskType = "娉ㄥ搴撳瓨婊℃墭涓嬬嚎锛堢摱鍧級"; } //endArea = Settings.GetLinJiangBCPAreaList().Where(a => a.AreaName == "鐡跺澂婊℃墭" && a.Enable == "1").FirstOrDefault().AreaNo; - - if (data.Length == 4) + if (data.Length == 8) { - if (data == "1122") LinZhialysisBottleCapAndPreformTwo(plc, db, workInfo, endArea, taskType, plc.TN_Location[0], "鐡跺澂鏈�); + if (data.Substring(0,2) == "12") LinZhialysisBottleCapAndPreformTwo(plc, db, workInfo, endArea, taskType, plc.TN_Location[0], "鐡跺澂鏈�); - if (data == "1221") LinZhialysisBottleCapAndPreformTwo(plc, db, workInfo, endArea, taskType, plc.TN_Location[1], "鐡跺澂鏈�); + if (data.Substring(2,2) == "22") LinZhialysisBottleCapAndPreformTwo(plc, db, workInfo, endArea, taskType, plc.TN_Location[1], "鐡跺澂鏈�); } } else LogHelper.Info($"鐡跺澂鏈猴細{plc.deviceName} 鏈紑鍚伐鍗曪紝涓嶅彲瑙﹀彂婊℃墭涓嬬嚎", "鐡跺澂鏈�); @@ -394,36 +842,35 @@ taskType = $"娉ㄥ搴撳瓨绌烘墭涓婄嚎({machine})"; } - Location startLoca = TaskProcess.getMStartLoc(db); - //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(startLoca.S_CODE, deviceBit, "鍑哄簱", taskType, startLoca.LocCntrRel.S_CNTR_CODE); + Location startLoca = TaskProcess.getMStartLoc(db,workInfo.S_UsingNow); + if (startLoca != null) + { + //鍒涘缓浣滀笟 + WMSHelper.CreateOpTask(startLoca.S_CODE, deviceBit, "鍑哄簱", taskType, startLoca.LocCntrRel.S_CNTR_CODE, "", "", workInfo.S_WorkNo); + } + else + { + LogHelper.Info("鏈煡璇㈠埌鍙嚭绌烘墭"); + } + } else { - LogHelper.Info($"{type}娉ㄥ鏈轰笂鏈粦瀹氭墭鐩�鑷姩缁戝畾鎵樼洏"); string cntrCode = Guid.NewGuid().ToString("N"); var cntrInfo = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == deviceBit).First(); if(cntrInfo == null) { - LocCntrRel cntr = new LocCntrRel - { - S_LOC_CODE = deviceBit, - S_CNTR_CODE = cntrCode, - }; - if (db.Insertable(cntr).ExecuteCommand() > 0) - { - locInfo.N_CURRENT_NUM = locInfo.N_CURRENT_NUM + 1; - db.Updateable(locInfo).UpdateColumns(a => a.N_CURRENT_NUM).ExecuteCommand(); - LogHelper.Info($"璧风偣鎴愬姛缁戝畾鎵樼洏锛岃捣鐐癸細{deviceBit}锛屾墭鐩樺彿锛歿cntrCode}"); - - } + LogHelper.Info($"{type}娉ㄥ鏈轰笂鏈粦瀹氭墭鐩�鑷姩缁戝畾鎵樼洏"); + + TaskProcess.BindLocCntr(deviceBit, cntrCode, workInfo.S_ItemCode, ""); } else { cntrCode = cntrInfo.S_CNTR_CODE; + TaskProcess.BindCntrItem(cntrCode, workInfo.S_ItemCode, "", ""); } //鍒涘缓浣滀笟 - WMSHelper.CreateOpTask(deviceBit, "", "鍏ュ簱", taskType, cntrCode); + WMSHelper.CreateOpTask(deviceBit, "", "鍏ュ簱", taskType, cntrCode,"","",workInfo.S_WorkNo); } } } @@ -482,19 +929,32 @@ if (mst.S_TYPE.Contains("缈绘枟鏈�)) { LogHelper.Info($"鏌ヨ缈绘枟鏈哄厑璁稿彇绌轰俊鍙�鍏佽鍙栫┖淇″彿={LineState[mst.S_START_LOC.Trim()].status} 鏃堕棿闂撮殧={DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds}", "瀹夊叏浜や簰"); - if (LineState[mst.S_START_LOC.Trim()].status == "112100" && DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds < 10) + if (LineState[mst.S_START_LOC.Trim()].status.Substring(4,2) == "00" && DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds < 10) { - NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1101, 18); + //NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1101, 18); + NDCApi.ChangeOrderParam(mst.S_CODE.Trim(), 18, "1101"); TaskProcess.sendSing(mst, 1101); } } else { LogHelper.Info($"鏌ヨ杈撻�绾垮厑璁稿彇婊′俊鍙�鍏佽鍙栨弧淇″彿={LineState[mst.S_START_LOC.Trim()].status} 鏃堕棿闂撮殧={DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds}", "瀹夊叏浜や簰"); - if (LineState[mst.S_START_LOC.Trim()].status == "1220" && DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds < 10) + if (mst.S_TYPE.Contains("婊℃墭涓嬬嚎")) { - NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1101, 18); - TaskProcess.sendSing(mst, 1101); + if ((LineState[mst.S_START_LOC.Trim()].status.Substring(4,2) == "00" || LineState[mst.S_START_LOC.Trim()].status.Substring(4,2) == "02") && DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds < 10) + { + //NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1101, 18); + NDCApi.ChangeOrderParam(mst.S_CODE.Trim(), 18, "1101"); + } + } + else + { + if (LineState[mst.S_START_LOC.Trim()].status == "1220" && DateTime.Now.Subtract(LineState[mst.S_START_LOC.Trim()].modify).TotalSeconds < 10) + { + //NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1101, 18); + NDCApi.ChangeOrderParam(mst.S_CODE.Trim(), 18, "1101"); + TaskProcess.sendSing(mst, 1101); + } } } } @@ -512,20 +972,35 @@ if (mst.S_TYPE.Contains("缈绘枟鏈�)) { LogHelper.Info($"鏌ヨ缈绘枟鏈哄厑璁镐笂婊′俊鍙�鍏佽涓婃弧淇″彿={LineState[mst.S_END_LOC.Trim()].status} 鏃堕棿闂撮殧={DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds}", "瀹夊叏浜や簰"); - if (LineState[mst.S_END_LOC.Trim()].status == "112100" && DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds < 10) + if (LineState[mst.S_END_LOC.Trim()].status.Substring(4,2) == "00" && DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds < 10) { - NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1103, 18); + //NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1103, 18); + NDCApi.ChangeOrderParam(mst.S_CODE.Trim(), 18, "1103"); TaskProcess.sendSing(mst, 1103); } } else { LogHelper.Info($"鏌ヨ杈撻�绾垮厑璁歌ˉ绌轰俊鍙�鍏佽琛ョ┖淇″彿={LineState[mst.S_END_LOC.Trim()].status} 鏃堕棿闂撮殧={DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds}", "瀹夊叏浜や簰"); - if (LineState[mst.S_END_LOC.Trim()].status == "1021" && DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds < 10) + if (mst.S_TYPE.Contains("绌烘墭涓婄嚎")) { - NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1103, 18); - TaskProcess.sendSing(mst, 1103); + if ((LineState[mst.S_END_LOC.Trim()].status.Substring(4,2) == "00" || LineState[mst.S_END_LOC.Trim()].status.Substring(4,2) == "02") && DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds < 10) + { + //NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1103, 18); + NDCApi.ChangeOrderParam(mst.S_CODE.Trim(), 18, "1103"); + TaskProcess.sendSing(mst, 1103); + } } + else + { + if (LineState[mst.S_END_LOC.Trim()].status == "1021" && DateTime.Now.Subtract(LineState[mst.S_END_LOC.Trim()].modify).TotalSeconds < 10) + { + //NDCHelper.ChangeParam(mst.S_CODE.Trim(), 1103, 18); + NDCApi.ChangeOrderParam(mst.S_CODE.Trim(), 18, "1103"); + TaskProcess.sendSing(mst, 1103); + } + } + } } else LogHelper.Info($"瀛楀吀涓湭鍖呭惈缁堢偣鐨勫叧閿瓧锛岀粓鐐硅揣浣嶏細{mst.S_END_LOC}"); -- Gitblit v1.9.1