分支自 SuZhouGuanHong/TaiYuanTaiZhong

huanghongfeng
2024-05-20 cb62fe00ff0c80bce983b0aa7a2b320fdc26f85f
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/EmptyTrayTask.cs
@@ -6,6 +6,7 @@
using WIDESEA_Comm;
using WIDESEA_Comm.LogInfo;
using WIDESEA_Comm.TaskNo;
using WIDESEA_Common;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WCS.IRepositories;
@@ -34,34 +35,52 @@
                Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
                List<string> strings = new List<string>() { };
                var stations = stationinfoRepository.Find(x => x.stationCode.Contains("X") || x.stationCode.Contains("W01001004") || x.stationCode.Contains("W01001005")).ToList();
                stations = stations.Where(x => x.location_state == "Empty" && x.enable).ToList();
                stations = stations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.enable).ToList();
                foreach (var station in stations)
                {
                    if (agvtaskRepository.Find(x => x.agv_toaddress == station.stationCode).Any())
                        continue;
                    var PalletSignal = Pipeline_client.ReadByOrder<Int16>("R_PalletSignal", station.stationCode);//读取托盘信号:1:有,2无
                    var MaterialSignal = Pipeline_client.ReadByOrder<Int16>("R_MaterialSignal", station.stationCode);//读取货物信号:1:有,2无
                    if (PalletSignal == 2 && MaterialSignal == 2)
                    {
                        dt_agvtask taskPart = new dt_agvtask()
                        if (station.remark == TrayTypeEnum.SmallTray.ToString() || station.remark == TrayTypeEnum.LargeTray.ToString()) station.tray_type = station.remark;
                        var agv_task = agvtaskRepository.Find(x => x.agv_taskstate == AGVTaskStateEnum.Queue.ToString() && x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString() && string.IsNullOrEmpty(x.agv_toaddress) && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
                        if (agv_task != null)
                        {
                            agv_fromaddress = "",
                            agv_id = Guid.NewGuid(),
                            agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
                            agv_grade = station.stationCode.Contains("W0100100") ? 3 : 2,
                            agv_createtime = DateTime.Now,
                            agv_taskstate = "Queue",
                            agv_qty = 1,
                            agv_tasktype = "TaskType_EmptyPallet",
                            agv_toaddress = station.stationCode,
                            agv_userid = "系统",
                            agv_TrayStatus = "EmptyTray",// station.tray_status,
                            agv_Traytype = station.tray_type
                        };
                        station.location_state = LocationStateEnum.Busy.ToString();
                        stationinfoRepository.Update(station, true);
                        agvtaskRepository.Add(taskPart, true);
                        WriteDBLog.Success("创建补空托任务", $"任务编号:{taskPart.agv_tasknum}", "PCS");
                            agv_task.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                            //agv_task.EndQuantity = EmptyStation.quantity;
                            agv_task.agv_toaddress = station.stationCode;
                            agvtaskRepository.Update(agv_task, true);
                            station.location_state = LocationStateEnum.Busy.ToString();
                            stationinfoRepository.Update(station, true);
                            WriteDBLog.Success("更新补空托任务", $"任务编号:{agv_task.agv_tasknum}", "PCS");
                        }
                        else
                        {
                            dt_agvtask taskPart = new dt_agvtask()
                            {
                                agv_fromaddress = "",
                                agv_id = Guid.NewGuid(),
                                agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
                                agv_grade = station.stationCode.Contains("W0100100") ? 3 : 2,
                                agv_createtime = DateTime.Now,
                                agv_taskstate = AGVTaskStateEnum.Queue.ToString(),
                                agv_qty = 1,
                                agv_tasktype = AGVTaskTypeEnum.TaskType_EmptyPallet.ToString(),
                                agv_toaddress = station.stationCode,
                                agv_userid = "系统",
                                agv_TrayStatus = TrayStateEnum.EmptyTray.ToString(),// station.tray_status,
                                agv_Traytype = station.tray_type
                            };
                            station.location_state = LocationStateEnum.Busy.ToString();
                            stationinfoRepository.Update(station, true);
                            agvtaskRepository.Add(taskPart, true);
                            WriteDBLog.Success("创建补空托任务", $"任务编号:{taskPart.agv_tasknum}", "PCS");
                        }
                    }
                }
            }