From 4e2242741688e1da1399166b1ada9874f472b819 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期三, 11 六月 2025 17:54:59 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |  134 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 106 insertions(+), 28 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 815bcb1..cc5e417 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -5,16 +5,9 @@
 using SqlSugar;
 using System;
 using System.Collections.Generic;
-using System.Globalization;
 using System.Linq;
-using System.Runtime.ConstrainedExecution;
-using System.Security.Cryptography;
-using System.Security.Cryptography.X509Certificates;
-using System.Security.Policy;
 using System.Threading;
 using System.Threading.Tasks;
-using Topshelf.Runtime.Windows;
-using static HH.WCS.QingXigongchang.dispatch.NDC;
 
 namespace HH.WCS.QingXigongchang.core
 {
@@ -1059,7 +1052,6 @@
                                     dsll.Add(cir1.S_ITEM_CODE, rowlist);
                         }
                     }
-
                     if (dsll.Any())
                         foreach (var r in dsll)
                         {
@@ -1130,7 +1122,9 @@
                                                 isCd = true;
                                                 inlock = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).FirstOrDefault();
                                                 if (inlock != null)
-                                                    arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW);
+                                                {
+                                                    arloclist = arloclist.FindAll(x => x.N_ROW == inlock.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))
                                             {
@@ -1209,7 +1203,7 @@
                                 }
                             }
                         }
-                    else if(InworkLock) InworkLock = false;
+                    else if (InworkLock) InworkLock = false;
                 }
                 catch (Exception ex)
                 {
@@ -1329,12 +1323,20 @@
                     var Syuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => !string.IsNullOrEmpty(x.TagOver) ? 1 : 2).ThenBy(x => x.TagOverTime).ToList();
                     //yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == plc.deviceName && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => !string.IsNullOrEmpty(x.TagOver) ? 1 : 2).ThenBy(x => x.TagOverTime).ToList();
 
-                    var tk = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 1 && x.SQL_State == "鎵ц涓�).FirstOrDefault();
-
+                    var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 1 && x.SQL_State == "鎵ц涓�);
                     if (!Syuworders.Any())
-                        YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
-                    if (tk != null)
                     {
+                        YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
+                    }
+                    if (tklist.Count() > 0)
+                    {
+                        var tk = tklist.FirstOrDefault();
+                        var Cjsj = LocationHelper.GetList<CjTimeOrder>(x => tklist.Select(c => c.S_CJ_NAME).ToList().Contains(x.S_CJ_NAME) && tklist.Select(c => c.SQL_ItemCode).ToList().Contains(x.S_ITEM_CODE));
+                        if (Cjsj.Count() > 0)
+                        {
+                            var Cj = Cjsj.OrderBy(e => e.T_CJ_TIME).ToList().FirstOrDefault();
+                            tk = tklist.Find(e => e.S_CJ_NAME == Cj.S_CJ_NAME && e.SQL_ItemCode == Cj.S_ITEM_CODE);
+                        }
                         var loc = LocationHelper.GetLoc(plc.location[0]);
                         if (loc.N_CURRENT_NUM > 0 && loc.S_LOCK_STATE == "鏃�)
                         {
@@ -1392,9 +1394,17 @@
                     YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "鏀剁缉鑶滃弶杩�); // PE鍏ュ簱
                     //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "鏀剁缉鑶滃弶杩�);
                     //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "鏀剁缉鑶滃弶杩�);// PE涓嚭搴�-                    var tk = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2鎻愬崌鏈�鏀剁缉鑶� && x.WorkType == 1 && x.SQL_State == "鎵ц涓�).FirstOrDefault();
-                    if (tk != null)
+                    var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2鎻愬崌鏈�鏀剁缉鑶� && x.WorkType == 1 && x.SQL_State == "鎵ц涓�);
+                    if (tklist.Count() > 0)
                     {
+                        var tk = tklist.FirstOrDefault();
+                        var Cjsj = LocationHelper.GetList<CjTimeOrder>(x => tklist.Select(c => c.S_CJ_NAME).ToList().Contains(x.S_CJ_NAME) && tklist.Select(c => c.SQL_ItemCode).ToList().Contains(x.S_ITEM_CODE));
+                        if (Cjsj.Count() > 0)
+                        {
+                            var Cj = Cjsj.OrderBy(e => e.T_CJ_TIME).ToList().FirstOrDefault();
+                            tk = tklist.Find(e => e.S_CJ_NAME == Cj.S_CJ_NAME && e.SQL_ItemCode == Cj.S_ITEM_CODE);
+                        }
+
                         var loc = LocationHelper.GetLoc(plc.location[0]);
                         if (loc.N_CURRENT_NUM > 0 && loc.S_LOCK_STATE == "鏃�)
                         {
@@ -1477,6 +1487,15 @@
                         var ploc = plc.location[0];
                     retuse:
                         var order = yuworders.FirstOrDefault();
+                        if (yuworders.Count() > 0)
+                        {
+                            var Cjsj = LocationHelper.GetList<CjTimeOrder>(x => yuworders.Select(c => c.S_CJ_NAME).ToList().Contains(x.S_CJ_NAME) && yuworders.Select(c => c.SQL_ItemCode).ToList().Contains(x.S_ITEM_CODE));
+                            if (Cjsj.Count() > 0)
+                            {
+                                var Cj = Cjsj.OrderBy(e => e.T_CJ_TIME).ToList().FirstOrDefault();
+                                order = yuworders.Find(e => e.S_CJ_NAME == Cj.S_CJ_NAME && e.SQL_ItemCode == Cj.S_ITEM_CODE);
+                            }
+                        }
                         if (order != null)
                         {
                             var Porder = WCSHelper.GetWorkOrder(order.SQL_LinkLineNO);
@@ -1728,7 +1747,7 @@
                                 if (area == WJ_BQ.RK_BQJBQ)
                                 {
                                     var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, true, false);
-                                    Endbit = hjs.FindAll(x => x.N_CURRENT_NUM==0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                                    Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
                                     if (Endbit != null)
                                     {
                                         var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-鎺ラ┏鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62);
@@ -1770,7 +1789,7 @@
                 }
 
                 //鎵ц閫�簱銆傘�銆�
-               // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 闇�閫�簱-- 鑷姩閫�簱-鏈疄鐜�);
+                // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 闇�閫�簱-- 鑷姩閫�簱-鏈疄鐜�);
             }
 
         }
@@ -3494,6 +3513,8 @@
         }
         public static void AutoRun13TSJ()
         {
+            var list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" };
+            var WorkOrder = new List<YWLWorkOrder>();
             foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1))
             {
                 string pline = PLC.deviceName;
@@ -3512,10 +3533,39 @@
                     if (locs.Find(x => x.N_CURRENT_NUM > 0) != null) //鎷嗗灈鏈夎揣 涓嶅垽鏂�                         continue;
                     can = true;
+
+                    foreach (var item in list)
+                    {
+                        YWLWorkOrder source = new YWLWorkOrder();
+                        var source1 = orkOrd.FirstOrDefault();
+                        source.SQL_PLineNo = source1.SQL_PLineNo;
+                        source.FuLe_PLine_No = source1.FuLe_PLine_No;
+                        source.SQL_LinkLineNO = source1.SQL_LinkLineNO;
+                        source.SQL_Area = source1.SQL_Area;
+                        source.SQL_UsingNow = source1.SQL_UsingNow;
+                        source.SQL_State = source1.SQL_State;
+                        source.SQL_WorkNo = source1.SQL_WorkNo;
+                        source.SQL_ItemCode = source1.SQL_ItemCode;
+                        source.SQL_ItemName = source1.SQL_ItemName;
+                        source.SQL_charge = source1.SQL_charge;
+                        source.SQL_Total = source1.SQL_Total;
+                        source.SQL_PLAN_END = source1.SQL_PLAN_END;
+                        source.SQL_Modify_TIme = source1.SQL_Modify_TIme;
+                        source.OutNum = source1.OutNum;
+                        source.WorkType = source1.WorkType;
+                        source.MidArea = source1.MidArea;
+                        source.TagOver = source1.TagOver;
+                        source.TagOverTime = source1.TagOverTime;
+                        source.S_BQ_TRAY_TYPE = source1.S_BQ_TRAY_TYPE;
+                        source.S_CJ_NAME = source1.S_CJ_NAME;
+                        source.S_ROW = item;
+                        WorkOrder.Add(source);
+                    }
                 }
                 ReadCCK = can;
                 if (orkOrd.Any())
-                    foreach (var od in orkOrd.OrderByDescending(x => x.OutNum))
+                    //  foreach (var od in orkOrd.OrderByDescending(x => x.OutNum))
+                    foreach (var od in WorkOrder)
                     {
                         ///姹囨�浠撳簱閲屾渶澶у眰鏄嚑灞傘�
                         Dictitems Lart = null;
@@ -3553,12 +3603,15 @@
                                     _clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE);
                                     //鏉垮瀷鐩稿悓
                                     var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First();
-                                    LogHelper.Info(rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆�);
+                                    LogHelper.Info(rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆� + JsonConvert.SerializeObject(_clrel0));
                                     var _clcntitem = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE.Trim()).FirstOrDefault();
+                                    LogHelper.Info(rl.S_LOC_CODE + "璇嗗埆鎵樼洏涓婄殑鐗╂枡淇℃伅銆� + JsonConvert.SerializeObject(_clcntitem));
                                     if (_clcntitem != null)
                                     {
+                                        LogHelper.Info("鐩镐簰鏄惁鍖归厤 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName);
                                         if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName)
                                         {
+
                                             StartBit = rl;
                                             break;
                                         }
@@ -3586,11 +3639,31 @@
                             if (StartBit != null && Endbit != null)
                             {
                                 var crs = _clrel.Select(x => x.S_CNTR_CODE).ToList();
-                                var 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);
+                                var EndBit = Endbit.S_LOC_CODE;
+                                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;
+                                    }
+                                }
+                                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);
                                 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 };
                                     var db = new SqlHelper<object>().GetInstance();
+                                    //缁欑粓鐐归攣瀹氫綇
+                                    if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ")
+                                    {
+                                        var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == Endbit.S_LOC_CODE).First();
+
+                                        model.S_LOCK_STATE = "鍏ュ簱閿�;
+                                        var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0;
+                                        LogHelper.Info(Endbit.S_LOC_CODE + "LockLoc:閿佺粨鏋� + res);
+                                    }
+                                    //鎺掗攣
                                     var row = db.Queryable<RowLock>().Where(x => x.S_AREA_CODE == r.S_AREA_CODE && r.N_ROW == x.N_ROW).First();
                                     if (row != null)
                                     {
@@ -3623,10 +3696,14 @@
                     pline = "T2鎻愬崌鏈�绾哥";
                 var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�);
                 if (orkOrd.Any())
-                    foreach (var ork in orkOrd)
-                    {
-                        list = list.Concat(ork.S_ROW.Split('$')).ToList();
-                    }
+                {
+                    list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" };
+                    //foreach (var ork in orkOrd)
+                    //{
+                    //    list = list.Concat(ork.S_ROW.Split('$')).ToList();
+                    //}
+                }
+
             }
             foreach (var area in list.Distinct())
             {
@@ -3786,7 +3863,7 @@
                                     else InworkLock = true;
                                 }
                                 else InworkLock = false;
-                                    var zzlocs = LocationHelper.GetAreaNormalLocList(od.S_ZZ_AREA);
+                                var zzlocs = LocationHelper.GetAreaNormalLocList(od.S_ZZ_AREA);
                                 Location Endbit = null;
                                 foreach (var zzrs in zzlocs.GroupBy(x => x.N_ROW).OrderBy(x => x.Key))
                                 {
@@ -3816,8 +3893,9 @@
                                     //鐢熸垚鎺ラ┏鍖轰换鍔★紝鏍囪涓虹粓鐐瑰簱鍖恒�
                                     var b = TaskProcess.CreateTransport(od.S_ID, lastful.S_LOC_CODE, Endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", crs.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, crs.Count, 50, od.S_END_AREA);
                                     if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;
-                                        break;
-                                }else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;
+                                    break;
+                                }
+                                else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;
                             }
                         }
                     }

--
Gitblit v1.9.1