分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-06-15 23e4f986644298cb23ac43173414b7e1404b6657
任务逻辑优化
已修改9个文件
已添加10个文件
416 ■■■■ 文件已修改
代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs 97 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/GetStation/EmptyPalletStation.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/EmptyPalletTask.cs 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendToaddress.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobSendTask.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/601--VK05--提交车轮类型返回车轮数据_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/602--VK05--扫码交互_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/603--VK05--贴标机交互_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/610---VK05--07辊道接收车轮确认_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/611---VK05--机加工完成确认_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/612--VK05--确认转盘方向,告知车轮去向_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/630--VK05--显示工位数据_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/631--VK05--机加工车床状态给PCS_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/632--VK05--老桁架状态给PCS_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/通信协议/太重老PCS与辊道交互表-2024-04-23/TZ--VK05辊道交互表/633--VK05--辊道状态给PCS_1_1.png 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs
@@ -186,17 +186,6 @@
                        var mes_Head = mes_HeadRepository.FindFirst(x => x.jobID == Mes_Work.jobID);
                        //需添加查询车轮SN号订单逻辑   éœ€æ·»åŠ å…¥åº“æ¨¡å¼åˆ¤æ–­ï¼Œæ‰‹åŠ¨å…¥åº“æ¨¡å¼éœ€äººå·¥æ·»åŠ å…¥åº“åº“åŒºï¼Œå¦åˆ™æŠ¥è­¦
                        //var pattern = patternRepository.FindFirst(x => x.pattern_name == "入库模式").pattern_state;
                        //if (pattern != 1 && string.IsNullOrEmpty(mes_Head.area))
                        //{
                        //    client.WriteByOrder("W_i_status", (byte)4, name);
                        //    client.WriteByOrder("R_oi_on", (byte)0, name);
                        //    #region æ—¥å¿—记录
                        //    WriteLog.Write_Log(name, wp_id, "错误信息!", $"读取桁架信息:\n车轮SN:{wp_id}\n\n写入桁架信息:\nW_i_status:4\nR_oi_on:0\n\n手动入库模式未选择库区");
                        //    #endregion
                        //    continue;
                        //}
                        var geometry = Pipeline.QueryMateriel(Mes_Work.drawingNo);
                        if (geometry == null)
                        {
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs
@@ -407,39 +407,23 @@
                        var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//读取货物信号:1:有,2无
                        if (PalletSignal == 1 && MaterialSignal == 2 && (station.stationCode.Contains("S0100100") ? station.tray_status == "EmptyTray" : true))
                        {
                            var area = station.tray_type == "SmallTray" ? "11" : "10";
                            remark = "查询是否存在补空托队列任务";
                            var task = agvtaskService.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == "Queue" && x.agv_tasktype == "TaskType_EmptyPallet" && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                            if (task != null)
                            {
                                task.agv_fromaddress = station.stationCode;
                                task.StarQuantity = 0;
                                task.agv_taskstate = "Create";
                                if (station.stationCode.Contains("S0100100"))
                                    task.agv_grade = 3;
                                agvtaskService.Update(task, true);
                                station.location_state = LocationStateEnum.Busy.ToString();
                                stationinfoRepository.Update(station, true);
                                WriteDBLog.Success("更新补空托队列任务", $"任务编号:{task.agv_tasknum},托盘信号:{PalletSignal},货物信号:{MaterialSignal}", "PCS");
                                continue;
                            }
                            #region æ£€æµ‹ä¸Šæ–™çš„空托叠盘
                            //remark = "查询空托叠盘位";
                            //var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.enable).ToList();
                            //if (stationCode.Contains("S"))
                            #region æŸ¥è¯¢æ˜¯å¦å­˜åœ¨è¡¥ç©ºæ‰˜é˜Ÿåˆ—任务
                            //var area = station.tray_type == "SmallTray" ? "11" : "10";
                            //remark = "查询是否存在补空托队列任务";
                            //var task = agvtaskService.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == "Queue" && x.agv_tasktype == "TaskType_EmptyPallet" && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                            //if (task != null)
                            //{
                            //    //var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
                            //    EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.quantity < 5 && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
                            //    if (EmptyStation == null)
                            //        EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
                            //    if (EmptyStation == null)
                            //    {
                            //        EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderByDescending(x => x.quantity).FirstOrDefault();
                            //        if (EmptyStation != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyStation);
                            //    }
                            //}
                            //EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity == 5).FirstOrDefault();
                            //if (EmptyStation != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyStation);
                            //    task.agv_fromaddress = station.stationCode;
                            //    task.StarQuantity = 0;
                            //    task.agv_taskstate = "Create";
                            //    if (station.stationCode.Contains("S0100100"))
                            //        task.agv_grade = 3;
                            //    agvtaskService.Update(task, true);
                            //    station.location_state = LocationStateEnum.Busy.ToString();
                            //    stationinfoRepository.Update(station, true);
                            //    WriteDBLog.Success("更新补空托队列任务", $"任务编号:{task.agv_tasknum},托盘信号:{PalletSignal},货物信号:{MaterialSignal}", "PCS");
                            //    continue;
                            //}
                            #endregion
                            #region åˆ›å»ºå–空托队列任务
@@ -451,61 +435,19 @@
                                agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1,
                                agv_createtime = DateTime.Now,
                                agv_taskstate = AGVTaskStateEnum.Queue.ToString(),
                                //agv_materielid = station.stationType,
                                agv_qty = 1,
                                StarQuantity = 0,
                                EndQuantity = 0,//EmptyStation.quantity,
                                EndQuantity = 0,
                                agv_tasktype = AGVTaskTypeEnum.TaskType_EmptyPallet.ToString(),
                                agv_toaddress = "",//EmptyStation.stationCode,
                                agv_toaddress = "",
                                agv_userid = "系统",
                                agv_TrayStatus = "EmptyTray",//station.tray_status,
                                agv_TrayStatus = "EmptyTray",
                                agv_Traytype = station.tray_type,
                            };
                            agvtaskService.Add(agvtask, true);
                            station.location_state = LocationStateEnum.Busy.ToString();
                            stationinfoRepository.Update(station, true);
                            //EmptyStation.location_state = LocationStateEnum.Busy.ToString();
                            //stationinfoRepository.Update(EmptyStation, true);
                            WriteDBLog.Success("创建自动取空托队列任务", $"任务编号:{agvtask.agv_tasknum},托盘信号:{PalletSignal},货物信号:{MaterialSignal}", "PCS");
                            #endregion
                            #region åˆ›å»ºå–空托新建任务
                            //else
                            //{
                            //    remark = "查找库内空托位";
                            //    EmptyStation = GetStation.EmptyPalletStation(area);
                            //    if (EmptyStation != null)
                            //        if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any()) return;
                            //}
                            //if (EmptyStation != null)
                            //{
                            //    dt_agvtask agvtask = new dt_agvtask()
                            //    {
                            //        agv_fromaddress = station.stationCode,
                            //        agv_id = Guid.NewGuid(),
                            //        agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
                            //        agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1,
                            //        agv_createtime = DateTime.Now,
                            //        agv_taskstate = AGVTaskStateEnum.Create.ToString(),
                            //        //agv_materielid = station.stationType,
                            //        agv_qty = 1,
                            //        StarQuantity = 0,
                            //        EndQuantity = EmptyStation.quantity,
                            //        agv_tasktype = "TaskType_EmptyPallet",
                            //        agv_toaddress = EmptyStation.stationCode,
                            //        agv_userid = "系统",
                            //        agv_TrayStatus = "EmptyTray",//station.tray_status,
                            //        agv_Traytype = station.tray_type,
                            //    };
                            //    agvtaskService.Add(agvtask, true);
                            //    station.location_state = LocationStateEnum.Busy.ToString();
                            //    stationinfoRepository.Update(station, true);
                            //    EmptyStation.location_state = LocationStateEnum.Busy.ToString();
                            //    stationinfoRepository.Update(EmptyStation, true);
                            //    WriteDBLog.Success("创建自动取空托任务", $"任务编号:{agvtask.agv_tasknum},托盘信号:{PalletSignal},货物信号:{MaterialSignal}", "PCS");
                            //}
                            #endregion
                        }
                    }
@@ -517,7 +459,6 @@
            }
            catch (Exception ex)
            {
                //WriteDBLog.Error("创建自动取空托任务", $"错误信息:{ex.Message}", "PCS");
                WriteLog.Write_Log("报错日志", "创建自动取空托队列任务", "错误信息!", $"错误信息:{ex.Message}");
            }
        }
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/GetStation/EmptyPalletStation.cs
@@ -131,27 +131,20 @@
                if (!Pipeline_client.IsConnected) throw new Exception("与链条机连接超时!");
                var area = task.agv_Traytype == "SmallTray" ? "11" : "10";
                #region ä¼˜å…ˆå‡º3库区内空托盘
                //if (area == "11")
                //{
                //    EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && x.stationCode == "C01004002" /*&& x.location_state == "Stroge"*/ && x.tray_status == "EmptyTray" && x.enable).FirstOrDefault();
                //    if (EmptyStation == null)
                //        EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && x.stationCode == "C01005002"/* && x.location_state == "Stroge"*/ && x.tray_status == "EmptyTray" && x.enable).FirstOrDefault();
                //    if (EmptyStation != null)
                //        EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && x.area == EmptyStation.area && x.line == EmptyStation.line /*&& x.location_state == "Stroge"*/ && x.tray_status == "EmptyTray" && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
                //    if (EmptyStation != null)//空托货位不为空判断是否存在其他任务
                //        if (stationinfoRepository.Find(x => x.line == EmptyStation.line && x.area == EmptyStation.area && x.location_state.Contains("Busy")).Any()) EmptyStation = null;
                //    //if (EmptyStation.location_state == LocationStateEnum.Busy.ToString()) EmptyStation = null;
                //}
                #endregion
                #region æŸ¥æ‰¾AB库区可出库空托货位
                if (area == "11")
                {
                    //EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.lastUpdateTime).FirstOrDefault();
                    EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderBy(x => x.area).ThenBy(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                    if (EmptyStation != null)//必须出完AB库空托才能出空托区
                        if (QueueStation(EmptyStation.stationCode) || stationinfoRepository.Find(x => x.line == EmptyStation.line && x.area == EmptyStation.area && x.location_state.Contains("Busy")).Any()) return;// EmptyStation = null;
                    #region å¿…须出完AB库空托才能出空托区
                    //if (EmptyStation != null)
                    //    if (QueueStation(EmptyStation.stationCode) || stationinfoRepository.Find(x => x.line == EmptyStation.line && x.area == EmptyStation.area && x.location_state.Contains("Busy")).Any()) return;
                    #endregion
                    #region AB库空托位占用出空托区
                    if (EmptyStation != null)
                        if (QueueStation(EmptyStation.stationCode) || stationinfoRepository.Find(x => x.line == EmptyStation.line && x.area == EmptyStation.area && x.location_state.Contains("Busy")).Any()) EmptyStation = null;
                    #endregion
                }
                #endregion
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/EmptyPalletTask.cs
@@ -31,79 +31,81 @@
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
                Idt_management_timeRepository timeRepository = new dt_management_timeRepository(Context);
                #region å ç›˜åŒºæ»¡5个入库 éœ€ä¼˜åŒ–
                #region å ç›˜åŒºæ»¡5个入库
                var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.enable).ToList();
                var EmptyD = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity == 5).FirstOrDefault();
                if (EmptyD != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyD);
                var val = timeRepository.Find(x => x.management_name == "StackingArea").FirstOrDefault().management_numericalvalue;
                var val = timeRepository.Find(x => x.management_name == "StackingArea").FirstOrDefault().management_numericalvalue;//超时未使用,触发入库
                EmptyD = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity < 5 && x.lastUpdateTime.AddHours(val) < DateTime.Now).FirstOrDefault();
                if (EmptyD != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyD);
                #endregion
                var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
                foreach (var agv_task in agv_tasks)
               {
                    try
                    {
                        tasknum = agv_task.agv_tasknum;
                        #region MyRegion
                        //var task = agvtaskRepository.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && x.agv_Traytype == agv_task.agv_Traytype).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                        //if (task != null)
                        //{
                        //    task.agv_fromaddress = station.stationCode;
                        //    task.StarQuantity = 0;
                        //    task.agv_taskstate = "Create";
                        //    if (station.stationCode.Contains("S0100100"))
                        //        task.agv_grade = 3;
                        //    agvtaskService.Update(task, true);
                        //    station.location_state = LocationStateEnum.Busy.ToString();
                        //    stationinfoRepository.Update(station, true);
                        //    WriteDBLog.Success("更新补空托队列任务", $"任务编号:{task.agv_tasknum},托盘信号:{PalletSignal},货物信号:{MaterialSignal}", "WMS");
                        //    return;
                        //}
                        #endregion
                        #region MyRegion
                        //dt_stationinfo EmptyStation = null;
                        //#region æ£€æµ‹ä¸Šæ–™çš„空托叠盘
                        //if (agv_task.agv_fromaddress.Contains("S"))
                        //{
                        //    //var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
                        //    EmptyStation = EmptyStations.Where(x => x.tray_type == agv_task.agv_Traytype && x.quantity < 5 && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
                        //    if (EmptyStation == null)
                        //        EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
                        //    if (EmptyStation == null)
                        //    {
                        //        EmptyD = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderByDescending(x => x.quantity).FirstOrDefault();
                        //        if (EmptyD != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyD);
                        //    }
                        //}
                        //#endregion
                        //else
                        //{
                        //    EmptyStation = GetStation.EmptyPalletStation1(agv_task.agv_Traytype == "SmallTray" ? "11" : "10");
                        //}
                #region å¤–协空托队列任务直接入库
                //var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
                //foreach (var agv_task in agv_tasks)
                //{
                //    try
                //    {
                //        tasknum = agv_task.agv_tasknum;
                //        #region MyRegion
                //        //var task = agvtaskRepository.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && x.agv_Traytype == agv_task.agv_Traytype).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                //        //if (task != null)
                //        //{
                //        //    task.agv_fromaddress = station.stationCode;
                //        //    task.StarQuantity = 0;
                //        //    task.agv_taskstate = "Create";
                //        //    if (station.stationCode.Contains("S0100100"))
                //        //        task.agv_grade = 3;
                //        //    agvtaskService.Update(task, true);
                //        //    station.location_state = LocationStateEnum.Busy.ToString();
                //        //    stationinfoRepository.Update(station, true);
                //        //    WriteDBLog.Success("更新补空托队列任务", $"任务编号:{task.agv_tasknum},托盘信号:{PalletSignal},货物信号:{MaterialSignal}", "WMS");
                //        //    return;
                //        //}
                //        #endregion
                //        #region MyRegion
                //        //dt_stationinfo EmptyStation = null;
                //        //#region æ£€æµ‹ä¸Šæ–™çš„空托叠盘
                //        //if (agv_task.agv_fromaddress.Contains("S"))
                //        //{
                //        //    //var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
                //        //    EmptyStation = EmptyStations.Where(x => x.tray_type == agv_task.agv_Traytype && x.quantity < 5 && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
                //        //    if (EmptyStation == null)
                //        //        EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
                //        //    if (EmptyStation == null)
                //        //    {
                //        //        EmptyD = EmptyStations.Where(x => x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderByDescending(x => x.quantity).FirstOrDefault();
                //        //        if (EmptyD != null) EmptyTray.CreateEmptyTrayIn(stationinfoRepository, EmptyD);
                //        //    }
                //        //}
                //        //#endregion
                //        //else
                //        //{
                //        //    EmptyStation = GetStation.EmptyPalletStation1(agv_task.agv_Traytype == "SmallTray" ? "11" : "10");
                //        //}
                        #endregion
                //        #endregion
                        var EmptyStation = EmptyTray.GetEmptyTrayStation(stationinfoRepository, agv_task);
                        if (EmptyStation != null)
                        {
                            agv_task.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                            agv_task.EndQuantity = EmptyStation.quantity;
                            agv_task.agv_toaddress = EmptyStation.stationCode;
                            agvtaskRepository.Update(agv_task, true);
                            EmptyStation.location_state = LocationStateEnum.Busy.ToString();
                            EmptyStation.tray_status = TrayStateEnum.EmptyTray.ToString();
                            stationinfoRepository.Update(EmptyStation, true);
                            WriteDBLog.Success("更新自动取空托队列任务", $"任务编号:{agv_task.agv_tasknum}", "WMS");
                        }
                    }
                    catch (Exception ex)
                    {
                        WriteLog.Write_Log("报错日志", "更新自动取空托队列任务", "错误信息!", $"{tasknum};错误信息:{ex.Message}");
                    }
                //        var EmptyStation = EmptyTray.GetEmptyTrayStation(stationinfoRepository, agv_task);
                //        if (EmptyStation != null)
                //        {
                //            agv_task.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                //            agv_task.EndQuantity = EmptyStation.quantity;
                //            agv_task.agv_toaddress = EmptyStation.stationCode;
                //            agvtaskRepository.Update(agv_task, true);
                //            EmptyStation.location_state = LocationStateEnum.Busy.ToString();
                //            EmptyStation.tray_status = TrayStateEnum.EmptyTray.ToString();
                //            stationinfoRepository.Update(EmptyStation, true);
                //            WriteDBLog.Success("更新自动取空托队列任务", $"任务编号:{agv_task.agv_tasknum}", "WMS");
                //        }
                //    }
                //    catch (Exception ex)
                //    {
                //        WriteLog.Write_Log("报错日志", "更新自动取空托队列任务", "错误信息!", $"{tasknum};错误信息:{ex.Message}");
                //    }
                }
                //}
                #endregion
            }
            catch (Exception ex)
            {
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendFromaddress.cs
@@ -27,12 +27,43 @@
                Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(Context);
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
                RequestFromTask requestFromTask = new RequestFromTask();
                var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && !x.agv_fromaddress.Contains("W") && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
                var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() /*&& !x.agv_fromaddress.Contains("W")*/ && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
                var tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_fromaddress)).ToList();//查找所有补空托任务
                foreach (var agv_task in agv_tasks)
                {
                    try
                    {
                        EmptyTray.GetEmptyTrayStation(stationinfoRepository, agv_task);
                        #region æŸ¥æ‰¾æ»¡è¶³æ¡ä»¶çš„补空托任务
                        var task = tasks.Where(x => x.agv_Traytype == agv_task.agv_Traytype).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                        if (task != null)
                        {
                            agv_task.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                            agv_task.EndQuantity = task.EndQuantity;
                            agv_task.agv_toaddress = task.agv_toaddress;
                            agvtaskRepository.Update(agv_task, x => new { x.agv_taskstate, x.EndQuantity, x.agv_toaddress }, true);
                            agvtaskRepository.Delete(task, true);
                            tasks.Remove(task);
                            WriteDBLog.Success("更新自动取空托队列任务", $"任务编号:{agv_task.agv_tasknum},删除补空托任务:{task.agv_tasknum}", "WMS");
                            continue;
                        }
                        #endregion
                        #region å ç›˜åŒºæ»¡5个,不下发检测上料的空托起点任务
                        if (agv_task.agv_fromaddress.Contains("S"))
                            if (stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity == 5).Any()) continue;
                        #endregion
                        #region AGV上有两个空托,不下发外协取空托任务
                        if (agv_task.agv_fromaddress.Contains("W"))
                        {
                            var count = agvtaskRepository.Find(x => x.agv_taskstate != AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_toaddress)).Count();
                            if (count >= 2) continue;
                        }
                        #endregion
                        requestFromTask.TASK_NO = agv_task.agv_tasknum;
                        requestFromTask.FROM_POSITION = agv_task.agv_fromaddress;
                        requestFromTask.Material = agv_task.agv_materielid;
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/SendToaddress.cs
@@ -27,12 +27,14 @@
            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
            RequestToaddTask requestFromTask = new RequestToaddTask();
            var agv_tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Complete.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_toaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).ToList();
            var tasks = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_fromaddress)).ToList();//查找所有补空托任务
            foreach (var agv_task in agv_tasks)
            {
                try
                {
                    #region æŸ¥æ‰¾æ»¡è¶³æ¡ä»¶çš„补空托任务
                    var task = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && x.agv_Traytype == agv_task.agv_Traytype && string.IsNullOrEmpty(x.agv_fromaddress)).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                    var task = tasks.Where(x => x.agv_Traytype == agv_task.agv_Traytype).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                    if (task != null)
                    {
                        requestFromTask.TASK_NO = agv_task.agv_tasknum;
@@ -54,10 +56,11 @@
                            agv_task.agv_toaddress = task.agv_toaddress;
                            agvtaskRepository.Update(agv_task, true);
                            agvtaskRepository.Delete(task, true);
                            tasks.Remove(task);
                        }
                        else
                            throw new Exception(respone.Msg);
                        WriteDBLog.Success("更新自动取空托队列任务", $"任务编号:{agv_task.agv_tasknum}", "WMS");
                        WriteDBLog.Success("更新自动取空托队列任务", $"任务编号:{agv_task.agv_tasknum},删除补空托任务:{task.agv_tasknum}", "WMS");
                    }
                    #endregion
                    else
@@ -66,9 +69,6 @@
                        var EmptyStation = EmptyTray.GetEmptyTrayStation(stationinfoRepository, agv_task);
                        if (EmptyStation != null)
                        {
                            //agv_task.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                            //agvtaskRepository.Update(agv_task, true);//查看AGV任务数据是否在另一个方法内进行了数据更新
                            requestFromTask.TASK_NO = agv_task.agv_tasknum;
                            requestFromTask.TO_POSITION = EmptyStation.stationCode;
                            requestFromTask.Material = agv_task.agv_materielid;
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs
@@ -151,50 +151,96 @@
                Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
                #region æŸ¥æ‰¾AB库可入空托空货位
                if (area == "11" && stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any())
                #region ç©ºæ‰˜åº“区占用入AB库区
                if (stationinfoRepository.Find(x => x.area == area && x.enable && x.location_state == LocationStateEnum.Busy.ToString()).Any() || stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any())
                {
                    #region MyRegion
                    var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                    #endregion
                    if (EmptyStation == null)
                        EmptyStation = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Busy.ToString() && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                    #region æŸ¥æ‰¾åº“区2和库区3的空托货位
                    //var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3")
                    //   && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.lastUpdateTime).FirstOrDefault();
                    if (EmptyStation != null)
                    #region æŸ¥æ‰¾AB库可入空托空货位
                    if (area == "11")
                    {
                        stationinfo = Station(EmptyStation, stationinfoRepository);
                        if (stationinfo != null)
                            if (!QueueStation(stationinfo.stationCode)) return stationinfo;
                        #region MyRegion
                        var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                        #endregion
                        if (EmptyStation == null)
                            EmptyStation = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Busy.ToString() && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                        EmptyStation = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
                        if (EmptyStation.quantity != 5) return null;
                        #region æŸ¥æ‰¾åº“区2和库区3的空托货位
                        if (EmptyStation != null)
                        {
                            stationinfo = Station(EmptyStation, stationinfoRepository);
                            if (stationinfo != null)
                                if (!QueueStation(stationinfo.stationCode)) return stationinfo;
                            EmptyStation = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
                            if (EmptyStation.quantity != 5) return null;
                        }
                        #endregion
                        #region æœªæ‰¾åˆ°ç©ºæ‰˜è´§ä½æˆ–当前行已满,寻找新的一行
                        stationinfo = stationinfoRepository.Find(x => x.column == 2 && x.area == "3" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
                        if (stationinfo == null)
                            stationinfo = stationinfoRepository.Find(x => x.column == 1 && x.area == "2" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
                        #endregion
                    }
                    #endregion
                    #region æœªæ‰¾åˆ°ç©ºæ‰˜è´§ä½æˆ–当前行已满,寻找新的一行
                    stationinfo = stationinfoRepository.Find(x => x.column == 2 && x.area == "3" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
                    if (stationinfo == null)
                        stationinfo = stationinfoRepository.Find(x => x.column == 1 && x.area == "2" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
                    #endregion
                }
                #endregion
                #region æŸ¥æ‰¾ç©ºæ‰˜åº“区
                else
                {
                    if (stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Busy.ToString()).Any()) return stationinfo;
                    stationinfo = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.enable).OrderBy(x => x.column).FirstOrDefault();
                    if (stationinfo != null)
                        if (!QueueStation(stationinfo.stationCode) && stationinfo.quantity < 5) return stationinfo;
                    stationinfo = stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
                }
                #endregion
                #region ç©ºæ‰˜åº“区满后入AB库区
                //#region æŸ¥æ‰¾AB库可入空托空货位
                //if (area == "11" && stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any())
                //{
                //    #region MyRegion
                //    var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                //    #endregion
                //    if (EmptyStation == null)
                //        EmptyStation = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Busy.ToString() && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
                //    #region æŸ¥æ‰¾åº“区2和库区3的空托货位
                //    //var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3")
                //    //   && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.lastUpdateTime).FirstOrDefault();
                //    if (EmptyStation != null)
                //    {
                //        stationinfo = Station(EmptyStation, stationinfoRepository);
                //        if (stationinfo != null)
                //            if (!QueueStation(stationinfo.stationCode)) return stationinfo;
                //        EmptyStation = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
                //        if (EmptyStation.quantity != 5) return null;
                //    }
                //    #endregion
                //    #region æœªæ‰¾åˆ°ç©ºæ‰˜è´§ä½æˆ–当前行已满,寻找新的一行
                //    stationinfo = stationinfoRepository.Find(x => x.column == 2 && x.area == "3" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
                //    if (stationinfo == null)
                //        stationinfo = stationinfoRepository.Find(x => x.column == 1 && x.area == "2" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
                //    #endregion
                //}
                //#endregion
                //#region æŸ¥æ‰¾ç©ºæ‰˜åº“区
                //else
                //{
                //    if (stationinfoRepository.Find(x => x.area == area && x.enable && x.location_state == LocationStateEnum.Busy.ToString()).Any()) return stationinfo;
                //    stationinfo = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.enable).OrderBy(x => x.column).FirstOrDefault();
                //    if (stationinfo != null)
                //        if (!QueueStation(stationinfo.stationCode) && stationinfo.quantity < 5) return stationinfo;
                //    stationinfo = stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
                //}
                //#endregion
                #endregion
                #region æŸ¥çœ‹å½“前空货位后是否存在有料
                if (stationinfo != null)
                    if (GetStation.QueueStation(stationinfo.stationCode)) stationinfo = null;
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobSendTask.cs
@@ -12,9 +12,9 @@
        [Invoke(Begin = "2024-01-01 00:00", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)]
        public void SendTaskTime()
        {
            AGVServer.SendFromaddress();
            AGVServer.SendToaddress();
            AGVServer.UpdateEmptyPalletTask();
            AGVServer.SendToaddress();
            AGVServer.SendFromaddress();
            AGVServer.SendAgvTask();
        }
    }
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs
@@ -293,7 +293,7 @@
            Idt_agvtaskRepository db = new dt_agvtaskRepository(volContext);
            var dataList = db.Find(_ => true).OrderByDescending(x => x.agv_createtime).ToList();
            var data = dataList.Where(x => x.agv_taskstate != "队列" && x.agv_taskstate != "Queue").ToList();
            var data = dataList.Where(x => x.agv_taskstate != "队列" && x.agv_taskstate != "Queue" && x.agv_taskstate != "任务暂停" && x.agv_taskstate != "Pause").ToList();
            if (data.Count < 10)
            {
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/601--VK05--Ìá½»³µÂÖÀàÐÍ·µ»Ø³µÂÖÊý¾Ý_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/602--VK05--ɨÂë½»»¥_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/603--VK05--Ìù±ê»ú½»»¥_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/610---VK05--07¹õµÀ½ÓÊÕ³µÂÖÈ·ÈÏ_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/611---VK05--»ú¼Ó¹¤Íê³ÉÈ·ÈÏ_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/612--VK05--È·ÈÏתÅÌ·½Ïò£¬¸æÖª³µÂÖÈ¥Ïò_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/630--VK05--ÏÔʾ¹¤Î»Êý¾Ý_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/631--VK05--»ú¼Ó¹¤³µ´²×´Ì¬¸øPCS_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/632--VK05--ÀÏèì¼Ü״̬¸øPCS_1_1.png
ÏîÄ¿×ÊÁÏ/ͨÐÅЭÒé/Ì«ÖØÀÏPCSÓë¹õµÀ½»»¥±í-2024-04-23/TZ--VK05¹õµÀ½»»¥±í/633--VK05--¹õµÀ״̬¸øPCS_1_1.png