1
pulg
2025-06-13 ee4b91745630afdc875983794d0ee54a7fb6a4a8
1
5个文件已修改
117 ■■■■■ 已修改文件
HH.WCS.QingXiNongfu/core/Monitor.cs 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/process/TaskProcess.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/wms/TaskHelper.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/wms/WCSModel.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/wms/WMSModel.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1120,7 +1120,7 @@
                                            if (CDlist.Contains(EdnRarea))
                                            {
                                                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();
                                                inlock = 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 == "入库锁").FirstOrDefault();
                                                if (inlock != null)
                                                {
                                                    arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList();
@@ -1146,7 +1146,7 @@
                                                    if (s_clrel0 != null && string.IsNullOrEmpty(s_clrel0.S_TYPE))
                                                    {
                                                        var cntrrel = ContainerHelper.GetCntrItemRel(rr_clrel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault();
                                                        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)
                                                        {
                                                            if (_cl2.N_CURRENT_NUM < _cl2.N_CAPACITY)
                                                                endbit = _cl2;
@@ -1166,7 +1166,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)
                                                    {
                                                        LogHelper.Info($"入库库》使用{endbit.S_LOC_CODE}");
                                                    }
@@ -1191,7 +1191,7 @@
                                                LogHelper.Info($"{r.Key}原物料搬运 {sign} 任务 ,创建{res} ");
                                                if (res && inlock == null && isCd)
                                                {
                                                    var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "入库锁", S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW };
                                                    var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "入库锁", S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW };
                                                    WCSHelper.Do(db => db.Insertable(rrrr).ExecuteCommand());
                                                }
                                                if (EdnRarea == "YWLWJJB") InworkLock = false;
@@ -1281,6 +1281,7 @@
                                           S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim(),
                                           S_ITEM_CODE = cir.S_ITEM_CODE,
                                           S_ITEM_NAME = cir.S_ITEM_NAME,
                                           S_CJ_NAME = cir.S_CJ_NAME,
                                           S_CNTR_CODE = cir.S_CNTR_CODE
                                       })
                                       .ToList();
@@ -1331,12 +1332,7 @@
                    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 == "无")
                        {
@@ -1387,23 +1383,16 @@
                try
                {
                    //return;
                    ///起点数据。  终点库区 堆叠层数。
                    YwlPETK_CreInwork(PElocsFirst, "YWLTKMKQ", "提扣叉运", 1);//提扣入库
                    YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "收缩膜叉运"); // PE入库
                    YwlPETK_CreInwork(PElocsFirst, "YWLTKMKQ", "提扣叉运", 3);//提扣入库--PE膜
                    YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "收缩膜叉运", 1); // PE入库 --提扣
                    //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "收缩膜叉运");
                    //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "收缩膜叉运");// PE中出库
                    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 == "无")
@@ -1489,12 +1478,12 @@
                        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);
                            }
                            //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)
                        {
@@ -1541,15 +1530,18 @@
                                    var cirs = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE);
                                    if (!cirs.Any()) continue;
                                    cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault();
                                    if (cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName)
                                    if (cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName && cir.S_CJ_NAME == order.S_CJ_NAME)
                                    {
                                        //plg 2025年6月13日 09:08:10
                                        Temp = new locCntItem
                                        {
                                            N_CURRENT_NUM = lastfull.N_CURRENT_NUM,
                                            S_CNTR_CODE = cir.S_CNTR_CODE,
                                            S_LOC_CODE = lastfull.S_LOC_CODE,
                                            HalfOrFull = (cir.N_BQ_TRAY_TYPE == .5 ? 1 : (cir.N_BQ_TRAY_TYPE == .75 ? 2 : 3)),
                                            S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim()
                                            S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim(),
                                            S_CJ_NAME = cir.S_CJ_NAME
                                        };
                                        if (outlock != null)
                                        {
@@ -1833,15 +1825,17 @@
                            var cirs = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE);
                            if (!cirs.Any()) continue;
                            cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault();
                            if (cir.S_ITEM_CODE == od.SQL_ItemCode && cir.S_ITEM_NAME == od.SQL_ItemName)
                            if (cir.S_ITEM_CODE == od.SQL_ItemCode && cir.S_ITEM_NAME == od.SQL_ItemName && cir.S_CJ_NAME == od.S_CJ_NAME)
                            {
                                //plg 2025年6月13日 09:09:25
                                Temp = new locCntItem
                                {
                                    N_CURRENT_NUM = lastfull.N_CURRENT_NUM,
                                    S_CNTR_CODE = cir.S_CNTR_CODE,
                                    S_LOC_CODE = lastfull.S_LOC_CODE,
                                    HalfOrFull = (cir.N_BQ_TRAY_TYPE == .5 ? 1 : (cir.N_BQ_TRAY_TYPE == .75 ? 2 : 3)),
                                    S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim()
                                    S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim(),
                                    S_CJ_NAME = cir.S_CJ_NAME
                                };
                                if (outlock != null)
                                {
@@ -3501,6 +3495,8 @@
        {
            public string ItemCode { get; set; }
            public string ItemName { get; set; }
            public string S_CJ_NAME { get; set; }
            /// <summary>
            /// 最高层
            /// </summary>
@@ -3511,6 +3507,9 @@
            public string Row { get; set; }
        }
        /// <summary>
        /// 原物料纸箱出库
        /// </summary>
        public static void AutoRun13TSJ()
        {
            var list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" };
@@ -3541,7 +3540,7 @@
                        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_Area = item;
                        source.SQL_UsingNow = source1.SQL_UsingNow;
                        source.SQL_State = source1.SQL_State;
                        source.SQL_WorkNo = source1.SQL_WorkNo;
@@ -3573,7 +3572,7 @@
                        {
                            if (dsi.TryGetValue(area, out var dictitems1))
                            {
                                foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName))
                                foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME))
                                {
                                    if (Lart == null)
                                        Lart = d;
@@ -3609,7 +3608,7 @@
                                    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)
                                        if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME)
                                        {
                                            StartBit = rl;
@@ -3648,7 +3647,7 @@
                                        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);
                                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)
                                {
@@ -3723,7 +3722,7 @@
                    {
                        if (dsi.TryGetValue(area, out dictitems))
                        {
                            var ill = dictitems.Find(x => x.ItemCode == _clcntitem.S_ITEM_CODE && x.ItemName == _clcntitem.S_ITEM_NAME);
                            var ill = dictitems.Find(x => x.ItemCode == _clcntitem.S_ITEM_CODE && x.ItemName == _clcntitem.S_ITEM_NAME && _clcntitem.S_CJ_NAME == x.S_CJ_NAME);
                            if (ill != null)
                            {
                                if (rl.N_CURRENT_NUM > ill.ItemLayer)
@@ -3739,6 +3738,7 @@
                                ItemName = _clcntitem.S_ITEM_NAME,
                                ItemCode = _clcntitem.S_ITEM_CODE,
                                ItemLayer = rl.N_CURRENT_NUM,
                                S_CJ_NAME = _clcntitem.S_CJ_NAME,
                                area = area,
                                Row = $"{rl.S_LOC_CODE}"
                            });
@@ -3752,6 +3752,7 @@
                                ItemName = _clcntitem.S_ITEM_NAME,
                                ItemCode = _clcntitem.S_ITEM_CODE,
                                ItemLayer = rl.N_CURRENT_NUM,
                                S_CJ_NAME = _clcntitem.S_CJ_NAME,
                                area = area,
                                Row = $"{rl.S_LOC_CODE}"
                            });
HH.WCS.QingXiNongfu/process/TaskProcess.cs
@@ -1600,7 +1600,7 @@
        /// <param name="trayCarryCount"></param>
        /// <param name="priority"></param>
        /// <returns></returns>
        public static bool CreateTransport(string wWorkNo, string start, string end, string taskType, List<string> cntrs, int startLayer, int endLayer, int trayCarryCount = 1, int priority = 1, string note = "")
        public static bool CreateTransport(string wWorkNo, string start, string end, string taskType, List<string> cntrs, int startLayer, int endLayer, int trayCarryCount = 1, int priority = 1, string note = "", string TwoEndLoc = "")
        {
            var result = false;
            //批次号存托盘号,1~3个托盘
@@ -1609,7 +1609,7 @@
            LogHelper.Info($"CreateTransport-  " + $"{taskNo}-{start}-{end}-{taskType}");
            var res = TaskHelper.CreateTask(wWorkNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, trayCarryCount, startLayer, endLayer, note, lockLoc: true);
            var res = TaskHelper.CreateTask(wWorkNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, trayCarryCount, startLayer, endLayer, note, lockLoc: true, TwoEndLoc);
            if (res)
            {
                result = true;
HH.WCS.QingXiNongfu/wms/TaskHelper.cs
@@ -82,7 +82,7 @@
            var db = new SqlHelper<WMSTask>().GetInstance();
            return db.Queryable<WMSTask>().Where(a => a.S_TYPE.Trim() == taskType).ToList();
        }
        internal static bool CreateTask(string no, string from, string to, string taskType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1, string note = "", bool lockLoc = false)
        internal static bool CreateTask(string no, string from, string to, string taskType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1, string note = "", bool lockLoc = false, string TwoEndLoc = "")
        {
            var fromLoc = LocationHelper.GetLoc(from);
            var endLoc = LocationHelper.GetLoc(to);
@@ -136,6 +136,7 @@
                S_SRC_NO = no,
                N_PRIORITY = pri,
                S_NOTE = note,
                S_TWO_END_LOC = TwoEndLoc,
                S_WORK_MODE = "agv",
                S_B_STATE = "未执行",
                S_CNTRS = cntrInfo,
@@ -232,9 +233,26 @@
                task.T_END_TIME = DateTime.Now;
                db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_END_TIME }).ExecuteCommand();
            }
            if (task.S_END_LAREA == "YWLWJJB")
            //plg 2025年6月13日 10:42:24
            if (task.S_END_LAREA == "YWLWJJB" && task.S_START_LAREA != "YWLRGDD")
            {
                var b = TaskProcess.CreateTransport(task.S_SRC_NO, task.S_END_LOC, task.S_NOTE, "原物料搬运-纸箱", task.S_CNTRS.Split(',').ToList(), task.N_START_LAYER, 1, task.N_CNTR_COUNT, task.N_PRIORITY);
                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);
                }
                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);
            }
        }
        internal static void Fail(WMSTask task)
@@ -283,12 +301,10 @@
                    LogHelper.Info(wmsTask.S_START_LOC + "LockLoc:锁结果" + res);
                    model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == wmsTask.S_END_LOC).First();
                    if (wmsTask.S_START_LAREA != "YWLWJJB")
                    {
                        model.S_LOCK_STATE = "入库锁";
                        res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0;
                        LogHelper.Info(wmsTask.S_END_LOC + "LockLoc:锁结果" + res);
                    }
                }
                db.Insertable(wmsTask).ExecuteCommand();
                db.Ado.CommitTran();
HH.WCS.QingXiNongfu/wms/WCSModel.cs
@@ -274,6 +274,9 @@
        public string TagOver { get; internal set; }
        public DateTime? TagOverTime { get; internal set; }
        public string S_BQ_TRAY_TYPE { get; internal set; } = "";
        /// <summary>
        /// 厂家
        /// </summary>
        public string S_CJ_NAME { get; set; }
    }
HH.WCS.QingXiNongfu/wms/WMSModel.cs
@@ -2,10 +2,6 @@
using HH.WCS.QingXigongchang.util;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WCS.QingXigongchang.wms
{
@@ -73,6 +69,7 @@
        public int N_LAYER { get; internal set; }
        public string S_ITEM_CODE { get; internal set; }
        public string S_ITEM_NAME { get; internal set; }
        public string S_CJ_NAME { get; set; }
    }
@@ -215,6 +212,11 @@
        /// 半托1 0.5 半托2。 0.75  满托 1 
        /// </summary>
        public double N_BQ_TRAY_TYPE { get; set; } = 1;
        /// <summary>
        /// 厂家
        /// </summary>
        public string S_CJ_NAME { get; set; }
        public int ItemLayer { get; set; }
        [SugarColumn(IsIgnore = true)]
@@ -378,6 +380,7 @@
        public string S_END_LAREA { get; set; }
        public string S_START_LOC { get; set; }
        public string S_END_LOC { get; set; }
        public string S_TWO_END_LOC { get; set; }
        public string S_TYPE { get; set; }
        public string S_NOTE { get; set; }
        public string S_SRC_SYS { get; set; }