1
pulg
2025-05-27 bc3d7a828114cb9df154da869ec986cf6733a779
HH.WCS.ZCQTJ/core/TaskCore.cs
@@ -2,6 +2,7 @@
using HH.WCS.Hexafluo.process;
using HH.WCS.Hexafluo.util;
using HH.WCS.Hexafluo.wms;
using HH.WCS.SJML.Entitys;
using HH.WCS.SJML.util;
using HH.WCS.ZCQTJ.Entitys;
using Newtonsoft.Json;
@@ -90,11 +91,38 @@
            //获取所有未执行的任务
            lock (locko9)
            {
                var Lo = SqlSugarHelper.Db.Queryable<TaskLockEntitys>().Where(a => a.DeviceName == "AGV")?.First();
                var chi = new SqlHelper<object>().GetInstance();
                var newDb = chi.CopyNew();
                var Lo = newDb.Queryable<TaskLockEntitys>().Where(a => a.DeviceName == "AGV")?.First();
                DateTime date = DateTime.Now;
                if (Lo != null && Lo.IsEnable == "Y")
                {
                    List<string> state = new List<string> { "未执行", "待推送" };
                    var list = TaskHelper.GetTaskListByState(state);
                    //查询是否有送满取空的 空入任务 有的话需要等待20分钟
                    var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "送满取空对应的空托点位")?.First();
                    if (transportTask != null)
                    {
                        var ListString = JsonConvert.DeserializeObject<List<string>>(transportTask.TypeJson);
                        if (ListString.Count() > 0)
                        {
                            //剔除时间没到20分钟的空托入库--特制
                            var TiemTask = list.FindAll(e => ListString.Contains(e.S_START_LOC) && e.S_TYPE == "入库").ToList();
                            if (TiemTask.Count() > 0)
                            {
                                foreach (var item in TiemTask)
                                {
                                    if (item.T_CREATE.AddMinutes(20) > date)//没超时20分钟
                                    {
                                        //排除
                                        list.Remove(item);
                                        LogHelper.Info("NDC", $"没超时20分钟 排除的任务有:{JsonConvert.SerializeObject(item)}");
                                    }
                                }
                            }
                        }
                    }
                    var RkTask = list.FindAll(e => e.S_TYPE == "入库").ToList();
                    //  var CkTask = list.FindAll(e => e.S_TYPE == "出库").ToList();
                    if (RkTask.Count > 0)
@@ -105,7 +133,7 @@
                            TaskProcess.SendTask(item);
                        }
                    }
                    var CkTaskList = SqlSugarHelper.Db.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
                    var CkTaskList = newDb.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
                    && a.S_NOTE == "agv任务" && a.S_TYPE == "出库" && a.S_START_LAREA != "TMCKJBW").ToList();
                    if (CkTaskList.Count > 0)
                    {
@@ -140,7 +168,7 @@
                            //else
                            //{
                            List<string> States = new List<string>() { "已推送", "执行中", "开始取货" };
                            var taskList = SqlSugarHelper.Db.Queryable<WMSTask>().Where(e => e.S_START_LOC == item.S_START_LOC
                            var taskList = newDb.Queryable<WMSTask>().Where(e => e.S_START_LOC == item.S_START_LOC
                            && States.Contains(e.S_B_STATE.Trim()) && e.S_NOTE == "agv任务").ToList();
                            LogHelper.Info("NDC", $"出库正在判断是否可以下发的 agv任务 起点库区不是LC11M的agv任务(判断是否有相同起点的别的agv任务):{JsonConvert.SerializeObject(taskList)}");
                            if (taskList.Count > 0)
@@ -151,7 +179,7 @@
                            //  }
                        }
                    }
                    var CkTaskList1 = SqlSugarHelper.Db.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
                    var CkTaskList1 = newDb.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
                  && a.S_NOTE == "agv任务" && a.S_TYPE == "出库" && a.S_START_LAREA == "TMCKJBW").OrderBy(e => e.T_CREATE).ToList();
                    if (CkTaskList1.Count() > 0)
@@ -162,7 +190,7 @@
                        {
                            LogHelper.Info("NDC", $"出库正在判断是否可以下发的 agv任务号:{item.S_TASK_NO}");
                            //查询主任务的起点库区
                            var ZhuTask = SqlSugarHelper.Db.Queryable<WMSTask>().Where(e => e.S_SRC_NO == item.S_SRC_NO).ToList();
                            var ZhuTask = newDb.Queryable<WMSTask>().Where(e => e.S_SRC_NO == item.S_SRC_NO).ToList();
                            LogHelper.Info("NDC", $"出库正在判断是否可以下发的 agv任务 所对应的所有相关任务:{JsonConvert.SerializeObject(ZhuTask)}");
                            var hh = ZhuTask.FindAll(e => e.S_START_LAREA == "LC11M").ToList();
                            if (hh.Any())