1
pulg
2025-06-11 a7bc7b8dc6e31ce888a254c17b5587f59877d592
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} 需要退库-- 自动退库-未实现");
            }
        }
@@ -3586,11 +3605,27 @@
                            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")
                                {
                                    EndBit = "YWLWJJB";
                                }
                                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)
                                    {
@@ -3786,7 +3821,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 +3851,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;
                            }
                        }
                    }