1
pulg
13 小时以前 8741f7e84dc7c0a1150c92758ebb2cf4b7d18c73
HH.WCS.QingXiNongfu/wms/TaskHelper.cs
@@ -1,4 +1,5 @@
using HH.WCS.QingXigongchang.process;
using HH.WCS.QingXigongchang.dispatch;
using HH.WCS.QingXigongchang.process;
using HH.WCS.QingXigongchang.util;
using Newtonsoft.Json;
using SqlSugar;
@@ -82,18 +83,23 @@
            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);
            var chi = new SqlHelper<object>().GetInstance();
            var newDb = chi.CopyNew();
            //NDCHelper.ChangeParam(taskNo, agvsite, 2);
            //NDCHelper.ChangeParam(taskNo, 2, 6);
            if (fromLoc.S_AREA_CODE == "YWLRGDD")
            {
                //查询任务表  要求是只能生成两个任务 起点库区为YWLRGDD  hh_plg  2025年6月9日 
                List<string> TaskState = new List<string>() { "完成", "取消" };
                var TaskListNum = LocationHelper.GetList<WMSTask>(x => x.S_START_LAREA == "YWLRGDD" && !TaskState.Contains(x.S_B_STATE));
                if (TaskListNum.Count() >= 2)
                var TaskListNum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == "YWLRGDD" && l.S_LOCK_STATE == "出库锁").ToList();
                if (TaskListNum.Count() >= 3)
                {
                    LogHelper.Info($"CreateTransport-  CreateTask Error" + $"起点库区为YWLRGDD 则最多只能生成两个任务");
                    LogHelper.Info($"CreateTransport-  CreateTask Error" + $"起点库区为YWLRGDD 则最多只能生成三个任务");
                    return false;
                }
            }
@@ -123,6 +129,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()
            {
@@ -136,6 +148,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,
@@ -145,6 +158,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)
@@ -225,16 +240,75 @@
        }
        internal static void End(WMSTask task)
        {
            var db = new SqlHelper<WMSTask>().GetInstance();
            var db = new SqlHelper<object>().GetInstance();
            if (task.S_START_LOC == "YWLT1TSJCD-1" && task.N_START_LAYER == 2)
            {
                var _clrel = LocationHelper.GetLocCntrRel(task.S_START_LOC);
                if (_clrel != null)
                {
                    var sta = db.Queryable<Location>().Where(l => l.S_LOC_CODE == task.S_START_LOC).First();
                    if (sta.N_CURRENT_NUM > 0 && sta.S_LOCK_STATE == "无")
                    {
                        var sign = Settings.GetTimeStamp();
                        var res = TaskProcess.CreateTransport(sign, task.S_START_LOC, task.S_END_LOC, "原物料搬运-纸箱", new List<string> { _clrel.FirstOrDefault().S_CNTR_CODE }, sta.N_CURRENT_NUM, 1, 1, 60);
                    }
                }
            }
            if (task.S_END_LAREA == "YWLYLTKQ" || task.S_END_LAREA == "YWLTKKTQ")
            {
                //查询出库锁YWLWJJB
                var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == "YWLWJJB" && x.S_LOCK_STATE == "出库锁");
                if (ls.Any())
                {
                    var tas = db.Queryable<WMSTask>().Where(a => a.S_START_LOC == ls.First().S_LOC_CODE).ToList().FirstOrDefault();
                    if (tas.S_B_STATE == "已推送")
                    {
                        NDC.ChangeParamPri(tas.S_TASK_NO, 70);
                    }
                }
            }
            ////plg 2025年6月13日 10:42:24
            //if (task.S_END_LAREA == "YWLWJJB" && task.S_START_LAREA != "YWLRGDD" && !string.IsNullOrEmpty(task.S_TWO_END_LOC))
            //{
            //    var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == task.S_TWO_END_LOC).First();
            //    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();
            }
            if (task.S_END_LAREA == "YWLWJJB")
            {
                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);
            }
        }
        internal static void Fail(WMSTask task)
@@ -283,12 +357,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);
                    }
                    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();
@@ -313,7 +385,7 @@
        {
            var db = new SqlHelper<object>().GetInstance();
            //LogHelper.Info(DateTime.Now.ToLongTimeString() + "=====" + ShuiGaiTask.ToString());
            return db.Queryable<WMSTask>().OrderBy(" N_PRIORITY DESC ").Where(a => a.S_B_STATE.Trim() == state).Take(10).ToList();
            return db.Queryable<WMSTask>().OrderBy(" N_PRIORITY DESC ").Where(a => a.S_B_STATE.Trim() == state).ToList();
        }