Zhang-Hong-Lin
2025-03-09 9d34ec27aa5bb9310abd23c6f542b6e4e79a3637
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs
@@ -5,6 +5,7 @@
using Microsoft.Extensions.Hosting;
using Microsoft.VisualBasic.FileIO;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using Quartz;
using SixLabors.ImageSharp.PixelFormats;
using System;
@@ -104,7 +105,14 @@
                            if (oldhtytask ==null) 
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                task.Grade = 1;
                                if (OHTJob.oHTReadData.R_DK_isready)
                                {
                                    task.Grade = 2;
                                }
                                else
                                {
                                    task.Grade = 1;
                                }
                                task.Remark = (int)MateTypeEnum.ZiChan;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
@@ -135,17 +143,8 @@
                            if (oldhtytask==null)
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                var DKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                                string address = DKstation.Row + "-" + DKstation.Column + "-1";
                                var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                                if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                                {
                                    task.Grade = 2;
                                }
                                else
                                {
                                    task.Grade = 1;
                                }
                                task.Grade = 1;
                                task.Remark = (int)MateTypeEnum.ZiChan;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
@@ -168,14 +167,63 @@
                                _dt_taskRepositiry.AddData(task);
                            }
                        }
                        if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_DK_isready)//人工叉车上料模式,且西跨架子有上料信号
                        if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_DK_isready)
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (oldhtytask==null)
                            if (oldhtytask == null)
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                if (OHTJob.oHTReadData.R_XK_isready)
                                {
                                    task.Grade = 2;
                                }
                                else
                                {
                                    task.Grade = 1;
                                }
                                task.Remark = (int)MateTypeEnum.WaiGou;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                                var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                                if (Onelocation.Depth == 1)
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                                }
                                else
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                                }
                                task.NextAddress = Towlocation.LocationCode;
                                task.Roadway = "TC01";
                                task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.PalletCode = "text";
                                task.CurrentAddress = "text";
                                task.WMSId = 3;
                                _dt_taskRepositiry.AddData(task);
                            }
                        }
                        if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_XK_isready)
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (oldhtytask == null)
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                //var XKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                                //string address = XKstation.Row + "-" + XKstation.Column + "-1";
                                //var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                                //if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                                //{
                                //    task.Grade = 2;
                                //}
                                //else
                                //{
                                //    task.Grade = 1;
                                //}
                                task.Grade = 1;
                                task.Remark = (int)MateTypeEnum.WaiGou;
                                //查找相邻的库位
@@ -199,55 +247,17 @@
                                _dt_taskRepositiry.AddData(task);
                            }
                        }
                        if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_XK_isready)//人工叉车上料模式,且东跨架子有上料信号
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (oldhtytask == null)
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                var XKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                                string address = XKstation.Row + "-" + XKstation.Column + "-1";
                                var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                                if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                                {
                                    task.Grade = 2;
                                }
                                else
                                {
                                    task.Grade = 1;
                                }
                                task.Remark = (int)MateTypeEnum.WaiGou;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                                var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                                if (Onelocation.Depth == 1)
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                                }
                                else
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                                }
                                task.NextAddress = Towlocation.LocationCode;
                                task.Roadway = "TC01";
                                task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.PalletCode = "text";
                                task.CurrentAddress = "text";
                                task.WMSId = 3;
                                _dt_taskRepositiry.AddData(task);
                            }
                        }
                    }
                    //直接出库
                    else if(Inisout.InOut == 2)
                    {
                        if (!OHTJob.oHTReadData.R_ZXJ_TCMode || !OHTJob.oHTReadData.R_HC_isReadyWork)
                        if (!OHTJob.oHTReadData.R_ZXJ_TCMode)
                        {
                            throw new Exception($"整形机不属于天车上料模式或天车放板信号为false");
                        }
                        if (!OHTJob.oHTReadData.R_HC_isReadyWork)
                        {
                            throw new Exception($"整形机天车放板信号为false");
                        }
                        Dt_Task outtask = new Dt_Task();
                        //小车上料
@@ -303,17 +313,21 @@
                try
                {
                    #region ç”Ÿæˆå‡ºåº“任务
                    if (!OHTJob.oHTReadData.R_ZXJ_isWork)
                    {
                        throw new Exception($"整形机投入使用信号为false");
                    }
                    //if (!OHTJob.oHTReadData.R_ZXJ_isWork)
                    //{
                    //    throw new Exception($"整形机投入使用信号为false");
                    //}
                    var isout = _outStockRepository.QueryFirst(v => v.Id == 1);
                    if (isout.isout == 1)
                    {
                        if (!OHTJob.oHTReadData.R_ZXJ_TCMode || !OHTJob.oHTReadData.R_HC_isReadyWork)
                        if (!OHTJob.oHTReadData.R_ZXJ_TCMode )
                        {
                            throw new Exception($"整形机不属于天车上料模式或天车放板信号为false");
                        }
                        if (!OHTJob.oHTReadData.R_HC_isReadyWork)
                        {
                            throw new Exception($"整形机天车放板信号为false");
                        }
                        //查询当前任务池中是否存在出库任务,出库任务只能存在一条
                        var oldtask = _dt_taskRepositiry.QueryFirst(v => v.TaskType == (int)TaskOutboundTypeEnum.Outbound);
                        if (oldtask != null)