wangxinhui
2026-03-26 5c272c606bdf2da3577dbaa5f48d0ee163f1e7d2
纸张淋膜半成品入库逻辑优化

纸张淋膜半成品入库逻辑优化
已修改5个文件
116 ■■■■■ 文件已修改
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC3.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -231,7 +231,7 @@
                            return WebResponseContent.Instance.Error($"未找到站台配置信息");
                        }
                        //获取路由信息
                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi) && x.Depth==1);
                        List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && (item.SourceAddress == x.StartPosi || item.RoadWay == x.StartPosi || stationManger.StationDeviceCode==x.StartPosi) && x.Depth==1);
                        router = routers.FirstOrDefault();
                        if (router == null)
                        {
@@ -251,7 +251,7 @@
                                }
                                else
                                {
                                    task.CurrentAddress = router.StartPosi;
                                    task.CurrentAddress = router.StartPosi == "AGV" ? item.SourceAddress : router.StartPosi;
                                    task.NextAddress = router.NextPosi;
                                    task.DeviceCode = router.ChildPosiDeviceCode;
                                }
@@ -701,7 +701,15 @@
            else
                return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.CurrentAddress == currentAddress && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
        }
        private static int OldorNew = 0;
        private static Dictionary<string, int> dict = new Dictionary<string, int>
        {
            { "SC01_YL", 0 },
            { "SC02_YL", 0 },
            { "SC03_YLDual", 0 },
            { "SC04_YLDual", 0 },
            { "SC05_YLDual", 0 }
        };
        private readonly static object lockerOldorNew = new object();
        /// <summary>
        /// åŽŸæ–™åº“ä»»åŠ¡æŸ¥è¯¢
        /// </summary>
@@ -710,66 +718,70 @@
        /// <returns>返回任务实体对象,可能为null</returns>
        public Dt_Task QueryStackerYLTask(string deviceNo,TaskTypeGroup? taskTypeGroup= null)
        {
            if (taskTypeGroup == null)
            lock (lockerOldorNew)
            {
                Dt_Task taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt(), TaskOrderBy);
                if (taskSend == null)
                int OldorNew = dict[deviceNo];
                if (taskTypeGroup == null)
                {
                    OldorNew = 1;
                    List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .ToList();
                    if (specificTasks.Any())
                    Dt_Task taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt(), TaskOrderBy);
                    if (taskSend == null || OldorNew == 0)
                    {
                        //根据时间筛查严格排序
                        Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .FirstOrDefault();
                        Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
                        if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
                        dict[deviceNo] = 1;
                        List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                                .ThenBy(t => t.Grade)
                                .ThenBy(t => t.TaskNum)
                                .ToList();
                        if (specificTasks.Any())
                        {
                            taskSend = taskCheckSend;
                            //根据时间筛查严格排序
                            Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                                .ThenBy(t => t.Grade)
                                .ThenBy(t => t.TaskNum)
                                .FirstOrDefault();
                            Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
                            if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
                            {
                                taskSend = taskCheckSend;
                            }
                        }
                    }
                    else
                    {
                        dict[deviceNo] = 0;
                    }
                    return taskSend;
                }
                else
                {
                    OldorNew = 0;
                }
                return taskSend;
            }
            else
            {
                Dt_Task taskSend = null;
                if (OldorNew == 0)
                {
                    OldorNew = 1;
                    List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .ToList();
                    if (specificTasks.Any())
                    Dt_Task taskSend = null;
                    if (OldorNew == 0)
                    {
                        //根据时间筛查严格排序
                        Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                            .ThenBy(t => t.Grade)
                            .ThenBy(t => t.TaskNum)
                            .FirstOrDefault();
                        Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
                        if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
                        dict[deviceNo] = 1;
                        List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                                .ThenBy(t => t.Grade)
                                .ThenBy(t => t.TaskNum)
                                .ToList();
                        if (specificTasks.Any())
                        {
                            taskSend = taskCheckSend;
                            //根据时间筛查严格排序
                            Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
                                .ThenBy(t => t.Grade)
                                .ThenBy(t => t.TaskNum)
                                .FirstOrDefault();
                            Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
                            if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
                            {
                                taskSend = taskCheckSend;
                            }
                        }
                    }
                    else
                    {
                        dict[deviceNo] = 0;
                        taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt() && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
                    }
                    return taskSend;
                }
                else
                {
                    OldorNew = 0;
                    taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt() && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
                }
                return taskSend;
            }
        }
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/StackerCraneJob_YLSC2.cs
@@ -307,6 +307,7 @@
                    {
                        task.ExceptionMessage = "出库站台无法下发";
                        _taskRepository.UpdateData(task);
                        WriteInfo(task.DeviceCode, $"出库站台无法下发");
                    }
                }
                else
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/Ô­ÁÏ¿â/StackerCraneJob_YLSC3.cs
@@ -360,6 +360,7 @@
                        {
                            task.ExceptionMessage = "出库站台无法下发";
                            _taskRepository.UpdateData(task);
                            WriteInfo(task.DeviceCode, $"出库站台无法下发");
                        }
                    }
                    else
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/AGV_CPExtend.cs
@@ -103,7 +103,7 @@
                                throw new Exception("未找到AGV站点");
                            }
                            //取放任务模版
                            if (stationMangerStart.StationCode.Contains("PNT") && !stationMangerEnd.StationCode.Contains("PNT") && stationMangerEnd.IsManual==0)//请求放
                            if ((stationMangerStart.StationCode.Contains("PNT") || stationMangerStart.StationCode.Contains("-")) && !stationMangerEnd.StationCode.Contains("PNT") && stationMangerEnd.IsManual==0)//请求放
                            {
                                agvTaskSend.TaskCode = "DUIGAO1";
                                if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//潜伏顶升车
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -2073,7 +2073,7 @@
                        NextAddress = "",
                        PalletCode = item.BarCode,
                        Roadway = "",
                        SourceAddress = CheckPointCode.AGVStationCode,
                        SourceAddress = item.PointCode.StartsWith("YS") ? CheckPointCode.AGVStationCode : CheckPointCode.MESPointCode,
                        TargetAddress = "",
                        TaskType = 0,
                        TaskStatus = TaskStatusEnum.New.ObjToInt(),