1
HuBingJie
2025-11-22 51af2794f47d5b68496edbc09d0ccb168347f02b
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Routing;
using Autofac.Core;
using Microsoft.AspNetCore.Routing;
using Quartz;
using SqlSugar;
using System.Threading.Tasks;
@@ -17,6 +18,7 @@
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_TaskInfoService;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
@@ -50,7 +52,7 @@
            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
            if (flag && value != null)
            {
                OtherDevice device = (OtherDevice)value;
                OtherDevice  device = (OtherDevice)value;
                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();//获取设备下的站台
                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); //获取设备下的站台
                try
@@ -91,6 +93,7 @@
                                        if (dt_Ta != null)
                                        {
                                            device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
                                            bool endpos = device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
                                            device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
@@ -110,13 +113,15 @@
                                //输送线完成修改成输送线完成状态待堆垛机执行任务
                                if (conveyorLineSignalRead.STB && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !ACK)
                                {
                                    if (!string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))
                                    Dt_Task dt_Task = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode);
                                    if (!string.IsNullOrEmpty(conveyorLineInfoRead.Barcode)&& dt_Task !=null)
                                    {
                                        bool ack = device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
                                        bool taskno = device.SetValue(W_ConveyorLineDB.TaskNo,1, item.StationCode);
                                        WebResponseContent contentweb = _taskService.UpdateTaskIninfo(conveyorLineInfoRead.Barcode,item.StationCode); //根据条码跟设备编号去查询并修改任务
                                        if (contentweb.Status)
                                        {
                                            device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
                                            device.SetValue(W_ConveyorLineDB.TaskNo,1, item.StationCode);
                                        }
                                    }
                                }
@@ -160,18 +165,29 @@
                                    
                                    Dt_Task dt_Ta = _taskService.GetOutTaskInfo(item.StationCode);  //获取出库任务
                                    if (dt_Ta != null)
                                    {
                                        device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
                                        device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
                                        device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
                                        //堆垛机任务完成下一地址改成输送线下一地址,设备编号改成输送线
                                        _taskService.UpdateTaskStatusToNext(dt_Ta.TaskNum);
                                        bool taskno = device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
                                        bool endpos = device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
                                        bool stb = device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
                                        if (dt_Ta.TargetAddress !="2021" && dt_Ta.TargetAddress != "2020")
                                        {
                                            //删除任务
                                            _taskRepository.DeleteData(dt_Ta);
                                            if (taskno && endpos && stb)
                                            {
                                            //堆垛机任务完成下一地址改成输送线下一地址,设备编号改成输送线
                                            WebResponseContent webResponse = _taskService.UpdateTaskStatusToNext(dt_Ta.TaskNum);
                                            if (webResponse.Status)
                                            {
                                                if (dt_Ta.TargetAddress != "2021" && dt_Ta.TargetAddress != "2020")
                                                {
                                                    //删除任务
                                                    bool res = _taskRepository.DeleteData(dt_Ta);
                                                    if (res)
                                                    {
                                                        TaskService.AddTaskHistory(dt_Ta);
                                                    }
                                                }
                                            }
                                        }
                                        
                                    }
@@ -189,14 +205,28 @@
                            {
                                if (conveyorLineSignalRead.STB && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !ACK)
                                {
                                    if (conveyorLineInfoRead.TaskNo == 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))//采购入库
                                    Dt_Task dt_Task = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode);
                                    if (conveyorLineInfoRead.TaskNo == 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.Barcode)&& dt_Task != null)//采购入库
                                    {
                                        Dt_Task dt_Ta = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode); //通过条码去查询任务
                                        if(dt_Ta != null)
                                        //if (dt_Ta.SourceAddress == "2021" || dt_Ta.SourceAddress == "2020")
                                        //{
                                        //    bool IsOccupied2008 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
                                        //    bool IsOccupied2009 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
                                        //    bool IsOccupied2015 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
                                        //    bool IsOccupied2016 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
                                        //    //判断是否成立
                                        //    if (IsOccupied2008 || IsOccupied2009 || IsOccupied2015 || IsOccupied2016)
                                        //    {
                                        //        return null;
                                        //    }
                                        //}
                                        if (dt_Ta != null)
                                        {
                                            device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.SourceAddress, item.StationCode);
                                            device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
                                            device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
                                            bool endpos = device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.SourceAddress, item.StationCode);
                                            bool taskno = device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
                                            bool ack = device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
                                        }
                                       
                                    }
@@ -210,10 +240,8 @@
                            }
                            }
                        }
                    }
                catch (Exception ex)
                {
                }
@@ -223,5 +251,26 @@
            }
            return Task.CompletedTask;
        }
        //获取拣选状态有无货状态
        public static bool GetPick()
        {
            //bool IsOccupied2008 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
            //bool IsOccupied2009 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
            //bool IsOccupied2015 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
            //bool IsOccupied2016 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
            ////判断是否成立
            //if (IsOccupied2008&&IsOccupied2009&&IsOccupied2015&&IsOccupied2016)
            //{
            //    return false;
            //}
            //else
            //{
            //    return true;
            //}
            return true;
        }
    }
}