1
qinchulong
2025-03-02 5729bfa51a9e8a4781755233324d7e9d002295c0
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs
@@ -15,8 +15,11 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
@@ -30,11 +33,21 @@
    public class GZJJob : JobBase, IJob
    {
        private readonly ITaskService _taskService;
        private readonly Idt_ErrormsginfoService _ErrormsginfoService;
        private readonly IRepository<dt_stationInfo> _dt_stationInfoRepository;
        private readonly IRepository<Dt_Task> _dt_taskRepositiry;
        WebSocketServer _webSocketServer;
        public GZJJob(ITaskService taskService, WebSocketServer webSocketServer)
        public GZJJob(ITaskService taskService, WebSocketServer webSocketServer, Idt_ErrormsginfoService errormsginfoService,
            Idt_StationinfoService stationinfoService,
            IRepository<dt_stationInfo> dt_stationInfoRepository,
            IRepository<Dt_Task> dt_taskRepositiry)
        {
            _taskService = taskService;//注入
            _webSocketServer = webSocketServer;
            _ErrormsginfoService = errormsginfoService;
            _dt_stationInfoRepository = dt_stationInfoRepository;
            _dt_taskRepositiry = dt_taskRepositiry;
        }
        public Task Execute(IJobExecutionContext context)
@@ -46,25 +59,80 @@
                OtherDevice device = (OtherDevice)value;
                try
                {
                    //Example
                    //device.GetValue  è¯»å–
                    //device.SetValue  å†™å…¥
                    //_taskService.Repository; //仓储层,进行数据库访问
                    OHTReadData oHTReadData = new OHTReadData();
                    //todo:读取设备数据,
                    //todo:设备状态数据发送给前端
                    #region ç”Ÿæˆå…¥åº“任务
                    if (!OHTJob.oHTReadData.R_GZJ_isWork)
                    {
                        throw new Exception($"规整机投入使用信号为false");
                    }
                    Dt_Task task = new Dt_Task();
                    
                    //WriteInfo(device.DeviceName, "infoLog");
                    if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_DK_isready)//RGV上料模式,且东跨架子有上料信号
                    {
                        var station=_dt_stationInfoRepository.QueryFirst(v=>v.msg== "东跨架子");
                        task.SourceAddress = station.Row + "-" + station.Column + "-1";
                        task.TargetAddress = "";
                        task.Grade = 1;
                        task.Remark = (int)MateTypeEnum.ZiChan;
                    }
                    else if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_XK_isready)//RGV上料模式,且西跨架子有上料信号
                    {
                        var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                        task.SourceAddress = station.Row + "-" + station.Column + "-1";
                        task.TargetAddress = "";
                        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.Remark = (int)MateTypeEnum.ZiChan;
                    }
                    else 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";
                        task.TargetAddress = "";
                        task.Grade = 1;
                        task.Remark = (int)MateTypeEnum.WaiGou;
                    }
                    else 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";
                        task.TargetAddress = "";
                        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;
                    }
                    else
                    {
                        throw new Exception($"规整机当前信号不满足入库任务生成条件");
                    }
                    task.Roadway = "TC01";
                    task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                    task.TaskState = (int)TaskInStatusEnum.InNew;
                    //WriteDebug(device.DeviceName, "debugLog");
                    _dt_taskRepositiry.AddData(task);
                    #endregion
                }
                catch (Exception ex)
                {
                    WriteError(device.DeviceName, "错误", ex);
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 2);
                }
            }