From 9862f9e1237c3d360cb4fb5547d8b11e33578d39 Mon Sep 17 00:00:00 2001 From: czw <selecti@yeah.net> Date: 星期三, 18 六月 2025 22:49:38 +0800 Subject: [PATCH] qx --- HH.WCS.QingXiNongfu/Program.cs | 3 + HH.WCS.QingXiNongfu/wms/TaskHelper.cs | 68 +++++++++++++++------- HH.WCS.QingXiNongfu/process/DeviceProcess.cs | 16 +++++ HH.WCS.QingXiNongfu/core/TaskCore.cs | 20 +++--- HH.WCS.QingXiNongfu/core/Monitor.cs | 29 ++++++--- HH.WCS.QingXiNongfu/process/TaskProcess.cs | 29 +++++---- 6 files changed, 110 insertions(+), 55 deletions(-) diff --git a/HH.WCS.QingXiNongfu/Program.cs b/HH.WCS.QingXiNongfu/Program.cs index 5e51377..9b7ec73 100644 --- a/HH.WCS.QingXiNongfu/Program.cs +++ b/HH.WCS.QingXiNongfu/Program.cs @@ -78,6 +78,9 @@ //Console.WriteLine(set1.SetEquals(set2)); //Console.WriteLine(set1.SetEquals(set3)); #endregion + + var uuu16 = "TN" + (DateTime.Now.ToString("yy")) + ((6180010+ "").PadLeft(8, '0')); + Console.WriteLine(uuu16); } else { diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs index ecc7d8f..2db77df 100644 --- a/HH.WCS.QingXiNongfu/core/Monitor.cs +++ b/HH.WCS.QingXiNongfu/core/Monitor.cs @@ -872,10 +872,10 @@ { var lastloC = locs.OrderByDescending(x => x.N_COL).FirstOrDefault(); if (lastloC.N_CURRENT_NUM == lastloC.N_CAPACITY) WCSHelper.Do(db => db.Deleteable(item).ExecuteCommand()); + else if (new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" }.Contains(item.S_AREA_CODE)) WCSHelper.Do(db => db.Deleteable(item).ExecuteCommand()); } } } - } /// <summary> @@ -1018,7 +1018,7 @@ //InworkLock = false; var usingSpace = new List<string> { "鍏ュ簱鎺ラ┏鍖�, "搴撳唴鎺ラ┏鍖�, "鍑哄簱鎺ラ┏鍖�, "鎻愬崌鏈洪�鏂欏彛" }; //usingSpace = new List<string> { "YWLRGDD", "YWLWJJB", "YWLYLTKQ", "YWLTKKTQ", "YWLKTDDQ", "YWLT1TSJ", "YWLT1TSJCD", "YWLT2TSJ", "YWLT2TSJCD" }; - usingSpace = new List<string> { "YWLWJJB", "YWLYLTKQ", "YWLTKKTQ", "YWLRGDD", "YWLT1TSJ", "YWLT2TSJ" }; + usingSpace = new List<string> { "YWLYLTKQ", "YWLTKKTQ", "YWLWJJB", "YWLRGDD", "YWLT1TSJ", "YWLT2TSJ" }; foreach (var area in usingSpace) { try @@ -3014,7 +3014,7 @@ if (endBit != null) { LogHelper.Info($"{spn} - 鍘讳腑杞尯锛屾壘鍒颁綅缃畕endBit.S_LOC_CODE}"); - bool bb = TaskProcess.CreateTransport(order.SQL_WorkNo, strBit.S_LOC_CODE, endBit.S_LOC_CODE, spn + "涓浆鍘�, new List<string> { crl.S_CNTR_CODE }, strBit.N_CURRENT_NUM, endBit.N_CURRENT_NUM++, 1, 50, crl.S_TYPE); + bool bb = TaskProcess.CreateTransport(order.SQL_WorkNo, strBit.S_LOC_CODE, endBit.S_LOC_CODE, spn + "涓浆鍘�, new List<string> { crl.S_CNTR_CODE }, strBit.N_CURRENT_NUM, endBit.N_CURRENT_NUM+1, 1, 50, crl.S_TYPE); LogHelper.Info($"{spn}鏈紑锛岀炕鏂楁満寮��绾跨▼锛屽垱寤哄幓{areaList}涓浆鍖虹殑浠诲姟{(bb ? "鎴愬姛" : "澶辫触")}"); if (bb && needBread) { @@ -3607,8 +3607,9 @@ foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum)) //foreach (var od in od2.ToList()) { - list.Remove(od.S_ROW); - var odsr = new List<string> { od.S_ROW }.Concat(list).Distinct().ToList(); + var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" }; + l2.Remove(od.S_ROW); + var odsr = new List<string> { od.S_ROW }.Concat(l2).Distinct().ToList(); ///姹囨�浠撳簱閲屾渶澶у眰鏄嚑灞傘� Dictitems Lart = null; foreach (var area in odsr)//od.S_ROW.Split('$')) @@ -3625,6 +3626,7 @@ Lart = d; } } + } } @@ -3684,20 +3686,23 @@ if (StartBit != null && Endbit != null) { var crs = _clrel.Select(x => x.S_CNTR_CODE).ToList(); - var EndBit = Endbit.S_LOC_CODE; + var jbbit = ""; if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ") { var locs1 = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == "YWLWJJB" && x.S_LOCK_STATE != "鎶ュ簾" && x.S_LOCK_STATE == "鏃� && x.N_CURRENT_NUM == 0).ToList(); if (locs1.Count() > 0) { - EndBit = locs1.FirstOrDefault().S_LOC_CODE; + jbbit = locs1.FirstOrDefault().S_LOC_CODE; } else { continue; } } - var b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, EndBit, "鍘熺墿鏂欐惉杩�绾哥", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri, "", Endbit.S_LOC_CODE); + var b = false; + if (!string.IsNullOrEmpty(jbbit)) + b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, jbbit, "鍘熺墿鏂欐惉杩�绾哥", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri, "", Endbit.S_LOC_CODE); + else b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, Endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri); if (b) { var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; @@ -3724,7 +3729,7 @@ //else db.Insertable(r).ExecuteCommand(); od.TagOverTime = DateTime.Now; db.Updateable(od).UpdateColumns(it => new { it.TagOverTime }).ExecuteCommand(); - break; + //break; } } } @@ -3891,6 +3896,7 @@ var locS = LocationHelper.GetAreaNormalLocList(ODs.Key); foreach (var od in ODs) { + LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 寮� 銆嬨�銆�); if (string.IsNullOrEmpty(od.S_ZZ_AREA) || string.IsNullOrEmpty(od.S_END_AREA)) { LogHelper.CError($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�"); @@ -3910,10 +3916,12 @@ var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); if (lastful != null) { + LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆�); var crs = LocationHelper.GetLocCntrRel(lastful.S_LOC_CODE); var cntritems = ContainerHelper.GetCntrItemRel(crs.FirstOrDefault()?.S_CNTR_CODE); if (!cntritems.Any()) continue; + LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆傛帴椹虫槸鍚﹁閿侊紵锛歿InworkLock}"); var cir1 = cntritems.First(); if (od.S_ZZ_AREA == "YWLWJJB") { @@ -3934,7 +3942,7 @@ var cntrrel = ContainerHelper.GetCntrItemRel(rel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); if (cntrrel == null) continue; - if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME) + if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) { Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); } @@ -3947,6 +3955,7 @@ break; } } + LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱缁堢偣銆媨Endbit?.S_LOC_CODE}"); if (Endbit != null) { //鐢熸垚鎺ラ┏鍖轰换鍔★紝鏍囪涓虹粓鐐瑰簱鍖恒� diff --git a/HH.WCS.QingXiNongfu/core/TaskCore.cs b/HH.WCS.QingXiNongfu/core/TaskCore.cs index 3b399fb..7f03a0e 100644 --- a/HH.WCS.QingXiNongfu/core/TaskCore.cs +++ b/HH.WCS.QingXiNongfu/core/TaskCore.cs @@ -200,16 +200,16 @@ var list = TaskHelper.GetTaskListByState("鏈墽琛�); if (list.Count > 0) { - foreach (var mst in list) - { - var dinfo = Settings.GetDeviceInfoList().FindAll(x => x.deviceType == 13); - if (dinfo.Find(x => x.location.Contains(mst.S_START_LOC)) != null) - mst.N_PRIORITY = 99; - else - if (dinfo.Find(x => x.location.Contains(mst.S_END_LOC)) != null) - mst.N_PRIORITY = 98; - } - list = list.OrderByDescending(x => x.N_PRIORITY).ToList(); + //foreach (var mst in list) + //{ + // var dinfo = Settings.GetDeviceInfoList().FindAll(x => x.deviceType == 13); + // if (dinfo.Find(x => x.location.Contains(mst.S_START_LOC)) != null) + // mst.N_PRIORITY = 99; + // else + // if (dinfo.Find(x => x.location.Contains(mst.S_END_LOC)) != null) + // mst.N_PRIORITY = 98; + //} + //list = list.OrderByDescending(x => x.N_PRIORITY).ToList(); list.ForEach(task => { diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs index 32b7729..4dfec0b 100644 --- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs +++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs @@ -178,6 +178,7 @@ { if (od.SQL_Total >= v[0]) { + LogHelper.Info(plc.deviceName + $"宸茬疮璁′俊鍙烽噺{od.SQL_Total} 寰呴鏂欐暟{od.OutNum}--寮�杞崲锛堜俊鍙烽噺>{(od.SQL_Total - v[0])} 棰嗘枡鏁�{od.OutNum + v[1]}"); od.SQL_Total -= v[0]; od.OutNum += v[1]; WCSHelper.Do(db => @@ -299,6 +300,10 @@ { db.Insertable(lirl).ExecuteCommand(); db.Insertable(lcrl).ExecuteCommand(); + db.Insertable(new Container + { + S_CNTR_CODE=lirl.FirstOrDefault().S_CNTR_CODE, + }).ExecuteCommand(); db.Updateable(_cl).UpdateColumns(x => new { x.N_CURRENT_NUM }).ExecuteCommand(); }); goto ballll; @@ -321,7 +326,7 @@ si = "0"; } - else if (data.Contains("11") && (ods.Find(x => x.SQL_PLineNo.Contains("绾哥")) != null||plc.deviceName.Contains("T1"))) + else if (data.Contains("11") && (ods.Find(x => x.SQL_PLineNo.Contains("绾哥")) != null || plc.deviceName.Contains("T1"))) { //if (!ods.Any()) // return; @@ -1809,9 +1814,18 @@ } if (add) { + LogHelper.Info($@"{plc.deviceName}鏂板埌浣嶄俊鍙枫� 鎵цYWL宸ュ崟淇″彿閲忓鍔�"); var ods = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_State == "鎵ц涓� && x.WorkType == 6 && x.SQL_LinkLineNO == plc.deviceName);//.FirstOrDefault(); if (ods.Any()) { + LogHelper.Info($@"{plc.deviceName}鏂板埌浣嶄俊鍙凤紝鎵惧埌宸ュ崟{JsonConvert.SerializeObject(ods.Select(x => new + { + x.SQL_PLineNo, + x.SQL_LinkLineNO, + x.SQL_Total, + x.OutNum + }))}"); + foreach (var od in ods) { od.SQL_Total += 1; diff --git a/HH.WCS.QingXiNongfu/process/TaskProcess.cs b/HH.WCS.QingXiNongfu/process/TaskProcess.cs index 87cce97..3692e9c 100644 --- a/HH.WCS.QingXiNongfu/process/TaskProcess.cs +++ b/HH.WCS.QingXiNongfu/process/TaskProcess.cs @@ -387,7 +387,7 @@ } //缁堢偣璐т綅涓�YWLT1TSJCD 鎴栬� YWLT2TSJCD 鐨�瑕佸彇璐у畬鎴愯В閿佽捣鐐癸紝瑙g粦璧风偣锛岀粦瀹氱粓鐐癸紝鍗歌揣瀹屾垚锛岃В閿佺粓鐐� 2025骞�鏈�0鏃� Plg - //if (mst.S_END_LOC?.Trim() == "YWLT1TSJCD" || mst.S_END_LOC?.Trim() == "YWLT2TSJCD") + //if (mst.S_END_LAREA?.Trim() == "YWLT1TSJCD" || mst.S_END_LAREA?.Trim() == "YWLT2TSJCD") //{ // //瑙g粦璧风偣 // CacheBitUpdate(mst, load: true); @@ -399,19 +399,22 @@ //new List<string> { "鎴愬搧婊℃-鍏ュ簱", "" } if (state == 6 || state == 5) { + LogHelper.Info($"浠诲姟绫诲瀷锛歿mst.S_TYPE}- 鍔ㄤ綔锛歿state}. 鏄惁5绠�锛焮mst.S_TYPE.Contains("鎴愬搧婊℃") || mst.S_TYPE.Contains("澶囪揣")} "); if (mst.S_TYPE.Contains("澶囪揣")) { if (state == 6) goto vvv; } - else if (state == 5) goto vvv; - - ///鍙渶瑕侀噴鏀捐揣浣嶅氨琛屼簡 - //if (mst.S_END_LOC?.Trim() == "YWLT1TSJCD" || mst.S_END_LOC?.Trim() == "YWLT2TSJCD") - //{ - // LocationHelper.UnLockLoc(mst.S_END_LOC.Trim()); - // return r; - //} + else if (state == 5) + { + ///鍙渶瑕侀噴鏀捐揣浣嶅氨琛屼簡 + //if (mst.S_END_LAREA?.Trim() == "YWLT1TSJCD" || mst.S_END_LAREA?.Trim() == "YWLT2TSJCD") + //{ + // LocationHelper.UnLockLoc(mst.S_END_LOC.Trim()); + // return r; + //} + goto vvv; + } if (mst.S_TYPE.Trim() == "J绌虹摱鍧�鍑哄簱") { @@ -1523,10 +1526,10 @@ } } - if (Settings.GetDeviceInfoList().Find(x => x.location.Contains(mst.S_END_LOC))?.deviceType == 13 && mst.S_TYPE.Contains("鏀剁缉鑶滃弶杩�)) - { - end = 7027; - } + //if (Settings.GetDeviceInfoList().Find(x => x.location.Contains(mst.S_END_LOC))?.deviceType == 13 && mst.S_TYPE.Contains("鏀剁缉鑶滃弶杩�)) + //{ + // end = 7027; + //} LogHelper.Info("SendTask " + mst.S_TASK_NO); Console.WriteLine("start=" + start.ToString()); diff --git a/HH.WCS.QingXiNongfu/wms/TaskHelper.cs b/HH.WCS.QingXiNongfu/wms/TaskHelper.cs index 3a93956..76c1125 100644 --- a/HH.WCS.QingXiNongfu/wms/TaskHelper.cs +++ b/HH.WCS.QingXiNongfu/wms/TaskHelper.cs @@ -1,11 +1,14 @@ -锘縰sing HH.WCS.QingXigongchang.process; +锘縰sing HH.WCS.QingXigongchang.dispatch; +using HH.WCS.QingXigongchang.process; using HH.WCS.QingXigongchang.util; using Newtonsoft.Json; +using NLog.Fluent; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using System.Threading.Tasks; namespace HH.WCS.QingXigongchang.wms { @@ -86,6 +89,10 @@ { var fromLoc = LocationHelper.GetLoc(from); var endLoc = LocationHelper.GetLoc(to); + + //NDCHelper.ChangeParam(taskNo, agvsite, 2); + //NDCHelper.ChangeParam(taskNo, 2, 6); + if (fromLoc.S_AREA_CODE == "YWLRGDD") { //鏌ヨ浠诲姟琛� 瑕佹眰鏄彧鑳界敓鎴愪袱涓换鍔�璧风偣搴撳尯涓篩WLRGDD hh_plg 2025骞�鏈�鏃� @@ -123,6 +130,12 @@ return false; } } + if (!taskType.Contains("鎴愬搧婊℃-鍏ュ簱")) + if (endLoc.N_CURRENT_NUM >= endLayer || fromLoc.N_CURRENT_NUM < startLayer) + { + LogHelper.Info($"CreateTransport- CreateTask Error" + $"璧风偣鏁伴噺{fromLoc.N_CURRENT_NUM}<{startLayer}鎴栬�{endLoc.N_CURRENT_NUM}>={endLayer} "); + return false; + } } WMSTask wmsTask = new WMSTask() { @@ -146,6 +159,8 @@ }; LogHelper.Info($"CreateTransport- CreateTask" + $"{JsonConvert.SerializeObject(wmsTask)}"); + LogHelper.Info($"CreateTransport- CreateTask {wmsTask.S_TASK_NO} 璧风偣:{JsonConvert.SerializeObject(from)}"); + LogHelper.Info($"CreateTransport- CreateTask {wmsTask.S_TASK_NO} 缁堢偣:{JsonConvert.SerializeObject(to)}"); return CreateTask(wmsTask, lockLoc); } internal static string GetDeptName(string taskType) @@ -227,37 +242,48 @@ internal static void End(WMSTask task) { var db = new SqlHelper<WMSTask>().GetInstance(); - if (task != null) - { - task.S_B_STATE = "瀹屾垚"; - task.T_END_TIME = DateTime.Now; - db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); - } + //plg 2025骞�鏈�3鏃�10:42:24 if (task.S_END_LAREA == "YWLWJJB" && task.S_START_LAREA != "YWLRGDD") { var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == task.S_TWO_END_LOC).First(); - //鍏堣В閿佺粓鐐�鍦ㄩ攣瀹�- //db.Ado.BeginTran(); - //try - //{ - // model.S_LOCK_STATE = "鏃�; - // var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0; - // LogHelper.Info(task.S_TWO_END_LOC + "LockLoc:閿佺粨鏋� + res); - // db.Ado.CommitTran(); - //} - //catch (Exception ex) - //{ - // db.Ado.RollbackTran(); - // LogHelper.Info("CreateTask 澶辫触 " + ex.Message); - //} if (model != null) { + //鍏堣В閿佺粓鐐�鍦ㄩ攣瀹�+ db.Ado.BeginTran(); + try + { + model.S_LOCK_STATE = "鏃�; + var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0; + LogHelper.Info(task.S_TWO_END_LOC + "LockLoc:閿佺粨鏋� + res); + db.Ado.CommitTran(); + } + catch (Exception ex) + { + db.Ado.RollbackTran(); + LogHelper.Info("CreateTask 澶辫触 " + ex.Message); + } + LogHelper.Info(task.S_TWO_END_LOC + "浜屾浠诲姟 寮�銆�"); var b = TaskProcess.CreateTransport(task.S_SRC_NO, task.S_END_LOC, task.S_TWO_END_LOC, "鍘熺墿鏂欐惉杩�绾哥", task.S_CNTRS.Split(',').ToList(), task.N_START_LAYER, 1, task.N_CNTR_COUNT, task.N_PRIORITY); + //if (b) + //{ + // if (task != null) + // { + // task.S_B_STATE = "瀹屾垚"; + // task.T_END_TIME = DateTime.Now; + // db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); + // } + //} } } + if (task != null) + { + task.S_B_STATE = "瀹屾垚"; + task.T_END_TIME = DateTime.Now; + db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); + } } internal static void Fail(WMSTask task) { -- Gitblit v1.9.1