From aa9f03add1c43871c1fa7ad66d8122c8c8d161e0 Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期六, 05 七月 2025 14:05:34 +0800 Subject: [PATCH] 1 --- HH.WCS.QingXiNongfu/api/AgvController.cs | 2 HH.WCS.QingXiNongfu/Program.cs | 2 HH.WCS.QingXiNongfu/process/DeviceProcess.cs | 53 +++++++++++++++++ HH.WCS.QingXiNongfu/core/TaskCore.cs | 2 HH.WCS.QingXiNongfu/core/Monitor.cs | 92 ++++++++++-------------------- HH.WCS.QingXiNongfu/process/TaskProcess.cs | 1 HH.WCS.QingXiNongfu/wms/WCSModel.cs | 5 + 7 files changed, 91 insertions(+), 66 deletions(-) diff --git a/HH.WCS.QingXiNongfu/Program.cs b/HH.WCS.QingXiNongfu/Program.cs index 7a98936..b6a4111 100644 --- a/HH.WCS.QingXiNongfu/Program.cs +++ b/HH.WCS.QingXiNongfu/Program.cs @@ -760,7 +760,7 @@ GetTask(Monitor.AutoRunABD), GetTask(Monitor.AutoRun13TSJ), GetTask(Monitor.ZdzyABArea), - GetTask(Monitor.Qchc), + // GetTask(Monitor.Qchc), //GetTask(Monitor.AutoTK_PE),//鎻愭墸 - PE鑶滃嚭鍏ュ簱 diff --git a/HH.WCS.QingXiNongfu/api/AgvController.cs b/HH.WCS.QingXiNongfu/api/AgvController.cs index ce3f676..9313d8e 100644 --- a/HH.WCS.QingXiNongfu/api/AgvController.cs +++ b/HH.WCS.QingXiNongfu/api/AgvController.cs @@ -25,7 +25,7 @@ public ReturnResult AGVCallbackCancel(AgvTaskState model) { - LogHelper.Warn("AGVCallbackCancel Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask"); + LogHelper.Info("AGVCallbackCancel Request锛� + JsonConvert.SerializeObject(model), "HosttoagvTask"); //TaskCore.OperateTaskStatus(model); var R = NDCHelper.CancelS(model.No); //鎸囧畾浠诲姟宸茬粡瀹屾垚鎴栧彇娑堬紝鏃犳硶鍐嶅鐞�diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs index 5189a8a..330f190 100644 --- a/HH.WCS.QingXiNongfu/core/Monitor.cs +++ b/HH.WCS.QingXiNongfu/core/Monitor.cs @@ -1197,71 +1197,38 @@ if (CDlist.Contains(EdnRarea)) { isCd = true; - //inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).ToList(); - //if (inlockLis.Count() > 0) - //{ - // inlock = inlockLis.FirstOrDefault(); - //} - inlock = RGRow.FirstOrDefault(); - if (inlock != null) - { - //褰撳叆搴撶殑浠诲姟鑳芥斁婊′竴鎺掑苟涓旇繕鏈変綑鐨勬椂鍊�寮�浜屾帓 - //鍏堝垽鏂捣鐐规湁澶氬皯鐩稿悓鐨�鑳藉叆鐨勭墿鏂�- if (_cl.S_AREA_CODE == "YWLRGDD")//鍒ゆ柇璧风偣鏄惁鏄汉宸ュ爢鍙犲尯 - { - inlockLis = RGRow.FindAll(e => e.S_AREA_CODE == EdnRarea && e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME).ToList(); - //鐒跺悗鍒ゆ柇浜哄伐鍫嗗彔鍖洪渶瑕佸叆搴撳灏戞墭鍚屽搧绉嶇墿鏂�startMum - //璐т綅 鎵樼洏 鐗╂枡琛ㄨ仈鏌�- LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 寮�"); - var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); - ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE); - var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); - LogHelper.Info($"璧风偣瑕佸叆CD鐨勬湁澶氬皯鎵樼洏鏁伴噺涓簕lstCanOutL.Count()}"); - //鍒ゆ柇缁堢偣鎺掕兘鍏ュ灏� 灏戜簬鍏ュ簱鎵樼洏鏁板垯澶氬紑涓�帓 EndMum - var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); - LogHelper.Info($"缁堢偣CD鎺掓湁澶氬皯绌烘墭鑳藉叆{lstCanOutL.Count()}"); - if (lstCanOutL.Count <= EndMum.Count()) - { - arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); - } - else - { - arloclist = arloclist.FindAll(x => !inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); - inlock = null; - } - LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 缁撴潫"); - } - else - { - arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList(); - } - } - else - { - if (_cl.S_AREA_CODE == "YWLRGDD") - { - //鏌ヨ鏄惁鏈夊凡缁忓叆浜嗙殑鎺�- var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); - ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea); - var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); - LogHelper.Info($"缁堢偣鏈夌浉鍚岀殑鐗╂枡鐨勮揣浣嶆湁{lstCanOutL.Count()}"); - var ca1 = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); - ca1.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == EdnRarea); - var lstCanOutLSta = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca1.ToExpression()).ToList(); - if (lstCanOutL.Count() > 0) + if (_cl.S_AREA_CODE == "YWLRGDD") + { + //鏌ヨ鏄惁鏈夊凡缁忓叆浜嗙殑鎺�+ var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); + ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea); + var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); + LogHelper.Info($"缁堢偣鏈夌浉鍚岀殑鐗╂枡鐨勮揣浣嶆湁{lstCanOutL.Count()}"); + + var ca1 = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); + ca1.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == EdnRarea); + var lstCanOutLSta = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca1.ToExpression()).ToList(); + if (lstCanOutL.Count() > 0) + { + var ProRow = lstCanOutLSta.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList(); + //杩欎簺鎺掕兘鍏ョ殑璐т綅鏁�+ var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); + + //鏌ヨ姣忎竴鎺掓渶澶х殑鍒�灏忎簬杩欎簺鍒楃殑 涓嶅厑璁稿叆 + foreach (var item in ProRow) { - var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); - if (EndMum.Count() > 0) + var MaxCol = lstCanOutLSta.FindAll(d => d.N_ROW == item.N_ROW).OrderByDescending(f => f.N_COL).First(); + EndMum.RemoveAll(f => f.N_ROW == item.N_ROW && f.N_COL < MaxCol.N_COL); + } + if (EndMum.Count() > 0) + { + if (lstCanOutL.Count() <= EndMum.Count()) { - if (lstCanOutL.Count() <= EndMum.Count()) - { - arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); - } + arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); } } } - } } foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key)) @@ -1485,6 +1452,7 @@ } } var locsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_TYPE == WJ_BQ.RK_BBHJQ); + var SblocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_NOTE.Contains("姘�) && x.S_TYPE == WJ_BQ.RK_BBHJQ); var SlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_TYPE == SX_BQ.RK_BBHJQ); var TKlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鎻愭墸-")); var PElocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏀剁缉鑶�")); @@ -1513,7 +1481,6 @@ // 鏍囩鍑哄簱銆傝揣鏋剁洿鎺ュ嚭鍒扮嚎杈� YwlBQ_CreWJOutOrder(); } - // 鏍囩鏃犺弻閫�簱銆� YwlBQ_CreWJTK(); } @@ -1531,7 +1498,8 @@ var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "涓按鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0).OrderBy(x => x.TagOverTime).ToList(); if (LocLock(SX_BQ.RK_BBHJQ)) { - YwlBQ_CreInwork(locsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); + //姘存爣鍏ュ簱 + YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); } if (yuworders.Any()) { @@ -1562,7 +1530,7 @@ if (LocLock(SX_BQ.RK_BBHJQ)) { //姘寸嚎鏍囩鍏ュ簱 - YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); + YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); } if (tklist.Count() > 0) { diff --git a/HH.WCS.QingXiNongfu/core/TaskCore.cs b/HH.WCS.QingXiNongfu/core/TaskCore.cs index 093bc4d..6035cc5 100644 --- a/HH.WCS.QingXiNongfu/core/TaskCore.cs +++ b/HH.WCS.QingXiNongfu/core/TaskCore.cs @@ -98,7 +98,7 @@ TaskHelper.BeEnd(wmsTask); break; case 9://寮哄埗鍙栨秷 //璧风偣瑙g粦閿侀噴鏀�缁堢偣閿侀噴鏀�- var R = NDCHelper.CancelS(model.No); + // var R = NDCHelper.CancelS(model.No); r = TaskProcess.OperateStatus(wmsTask, 9); if (r.ResultCode != -1) { diff --git a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs index 640d998..65da30a 100644 --- a/HH.WCS.QingXiNongfu/process/DeviceProcess.cs +++ b/HH.WCS.QingXiNongfu/process/DeviceProcess.cs @@ -1733,9 +1733,42 @@ 鐘舵�2 閫佺┖瀹屾垚涔嬪悗涓虹姸鎬� 鐘舵�3 婊℃墭鍙栬蛋锛岄�绌轰箣鍓嶄负鐘舵�3锛屽紑鏈洪粯璁ょ姸鎬佷篃涓虹姸鎬� */ + //3F 00 12 22 0D 0A--鏃犱换鍔′俊鍙�+ //3F 00 11 22 0D 0A--A鍙e伐浣滀俊鍙�+ //3F 00 12 21 0D 0A--B鍙d俊鍙�+ //3F 00 11 21 0D 0A--A銆丅鍙e伐浣滀俊鍙�+ + //A鍙e浣嶄俊鍙�- 3F 00 10 0D 0A + //B鍙e浣嶄俊鍙�- 3F 00 20 0D 0A if (data.Length == 4) { + //if (data == "1122")//A鍙e伐浣滀俊鍙�+ //{ + // if (BottlePEMInfoFullTwo(plc, plc.location[0])) + // { + + // } + //} + //else if (data == "1221")//B鍙e伐浣滀俊鍙�+ //{ + // if (BottlePEMInfoFullTwo(plc, plc.location[1])) + // { + + // } + //} + //else if (data == "1121")//B鍙e伐浣滀俊鍙�+ //{ + // if (BottlePEMInfoFullTwo(plc, plc.location[0])) + // { + + // } + // if (BottlePEMInfoFullTwo(plc, plc.location[1])) + // { + + // } + //} + if (data.Substring(1, 1) == "1") { if (BottlePEMInfoFull(plc, plc.location[0])) @@ -1964,6 +1997,26 @@ } } } + static bool BottlePEMInfoFullTwo(Settings.deviceInfo plc, string location) + { + try + { + if (location != "") + { + var workOrder = WCSHelper.GetWorkOrder(plc.deviceName); + if (workOrder == null) + { + LogHelper.Info(plc.deviceName + "娌℃湁銆愭墽琛屼腑銆戠殑宸ュ崟"); + return false; + } + } + return false; + } + catch (Exception ex) + { + return false; + } + } //鐡跺澂婊″叆搴�diff --git a/HH.WCS.QingXiNongfu/process/TaskProcess.cs b/HH.WCS.QingXiNongfu/process/TaskProcess.cs index 48f649f..5b96932 100644 --- a/HH.WCS.QingXiNongfu/process/TaskProcess.cs +++ b/HH.WCS.QingXiNongfu/process/TaskProcess.cs @@ -399,7 +399,6 @@ //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("澶囪揣")) { diff --git a/HH.WCS.QingXiNongfu/wms/WCSModel.cs b/HH.WCS.QingXiNongfu/wms/WCSModel.cs index 7ce11e3..29531c3 100644 --- a/HH.WCS.QingXiNongfu/wms/WCSModel.cs +++ b/HH.WCS.QingXiNongfu/wms/WCSModel.cs @@ -285,6 +285,11 @@ public string S_CJ_NAME { get; set; } } + [SuGG("鍗婃垚鍝佸尯鍩熻〃")] + public class BcpQyOrder : BaseModel + { + } + [SuGG("鍘傚鏃堕棿琛�)] public class CjTimeOrder : BaseModel { -- Gitblit v1.9.1