1
HuBingJie
8 天以前 5da3a276b7847187a7c155ee069d3cd4c9e58074
´úÂë¹ÜÀí/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -51,9 +51,11 @@
using WIDESEA_Common.Log;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Utilities;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.Enum;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_ISystemServices;
@@ -65,6 +67,7 @@
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_TaskInfoRepository;
using static Microsoft.IO.RecyclableMemoryStreamManager;
using static System.Net.Mime.MediaTypeNames;
@@ -80,6 +83,7 @@
        private readonly IMapper _mapper;
        private readonly IEquipmentStatusService _equipmentStatus;
        private readonly IAgvStationService _gvStationService;
        private readonly IRepository<AbnormalTask> _abnormalTask;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -94,7 +98,7 @@
        public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList();
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService task_HtyService, IRouterRepository routerRepository, IEquipmentStatusService equipmentStatus, IAgvStationService agvStationService) : base(BaseDal)
        public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService task_HtyService, IRouterRepository routerRepository, IEquipmentStatusService equipmentStatus, IAgvStationService agvStationService, IRepository<AbnormalTask> abnormalTask) : base(BaseDal)
        {
            _routerService = routerService;
            _taskExecuteDetailService = taskExecuteDetailService;
@@ -104,6 +108,7 @@
            _routerRepository = routerRepository;
            _equipmentStatus = equipmentStatus;
            _gvStationService = agvStationService;
            _abnormalTask = abnormalTask;
        }
        /// <summary>
@@ -144,7 +149,7 @@
                    if (item.type == 1)     //入库
                    {
                        Dt_Task dt_Task = new Dt_Task();
                        dt_Task.TaskNum = item.taskNo;
                        dt_Task.TaskNum = BaseDal.GetTaskNo().Result;
                        dt_Task.PalletCode = item.containerNo;    //暂无
                        dt_Task.Roadway = "RGV101";
                        dt_Task.TaskType = (int)TaskInboundTypeEnum.Inbound;
@@ -157,6 +162,7 @@
                        dt_Task.NextAddress = "";   //目前暂无
                        dt_Task.Grade = item.priority;
                        dt_Task.WMSId = 0;   //目前暂无
                        dt_Task.LJTaskNum= item.taskNo;
                        BaseDal.AddData(dt_Task);
                        content.code = 0;
@@ -185,7 +191,7 @@
                        AGVStation gVStation = _gvStationService.Corridorequipment(roadway);
                        Dt_Task dt_Task = new Dt_Task();
                        dt_Task.TaskNum = item.taskNo;
                        dt_Task.TaskNum = BaseDal.GetTaskNo().Result;
                        dt_Task.PalletCode = item.containerNo;    //暂无
                        dt_Task.Roadway = roadway;
                        dt_Task.TaskType = (int)TaskOutboundTypeEnum.Outbound;
@@ -198,6 +204,7 @@
                        dt_Task.NextAddress = gVStation.ZicheMotherinlaw.ToString();   //目前暂无
                        dt_Task.Grade = item.priority;
                        dt_Task.WMSId = 0;   //目前暂无
                        dt_Task.LJTaskNum = item.taskNo;
                        BaseDal.AddData(dt_Task);
                        content.code = 0;
@@ -285,6 +292,8 @@
        public Dt_Task ChildVehicleMission(AGVStation aGVStation)
        {
            Dt_Task dt_TasksUP = BaseDal.QueryFirst(x => x.Roadway == aGVStation.ChildPosiDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.RGV_OutZicheExecuting || x.TaskState == (int)TaskOutStatusEnum.RGV_OutZicheFinish || x.TaskState == (int)TaskOutStatusEnum.RGV_OutZicheReleaseExecuting), TaskOrderBy);
            if (dt_TasksUP != null) return null;
            Dt_Task dt_Tasks2 = BaseDal.QueryFirst(x => x.Roadway == aGVStation.ChildPosiDeviceCode && x.CurrentAddress == aGVStation.MotherCardeputy.ToString() && x.RGVTaskType == (int)RGVTaskTypeEnum.PickingUp, TaskOrderBy);
            if (dt_Tasks2 != null) return dt_Tasks2;
@@ -330,7 +339,13 @@
        /// <param name="type">1:查找需要取货的任务</param>
        public Dt_Task PickupWarehouse(string DeviceCode)
        {
            return BaseDal.QueryFirst(x => x.Roadway == DeviceCode && x.TaskState == (int)TaskInStatusEnum.RGV_InNew && x.RGVTaskType == (int)RGVTaskTypeEnum.PickingUp, TaskOrderBy);
            Dt_Task _Task = BaseDal.QueryFirst(x => x.Roadway == DeviceCode && (x.TaskState == (int)TaskInStatusEnum.Inexcepjxz || x.TaskState == (int)TaskInStatusEnum.InAbnormalFinish || x.TaskState == (int)TaskInStatusEnum.InexceptionalSelection || x.TaskState == (int)TaskInStatusEnum.InFinish_exceptionalSelection
             || x.TaskState == (int)TaskInStatusEnum.InAbnormalFinish || x.TaskState == (int)TaskInStatusEnum.RGV_InPickupExecuting || x.TaskState == (int)TaskInStatusEnum.RGV_InPickupFinish || x.TaskState == (int)TaskInStatusEnum.RGV_InReleaseExecuting || x.TaskState == (int)TaskInStatusEnum.RGV_InReleaseFinish));
            if (_Task == null)
            {
                return BaseDal.QueryFirst(x => x.Roadway == DeviceCode && x.TaskState == (int)TaskInStatusEnum.RGV_InNew && x.RGVTaskType == (int)RGVTaskTypeEnum.PickingUp, TaskOrderBy);
            }
            return null;
        }
@@ -441,7 +456,7 @@
                }
                else
                {
                    dt_Task = BaseDal.QueryFirst(x => x.TaskType == (int)TaskOutboundTypeEnum.Outbound && x.NextAddress == "");
                    dt_Task = BaseDal.QueryFirst(x => x.TaskType == (int)TaskOutboundTypeEnum.Outbound && x.NextAddress == ""&&x.TaskState == (int)TaskOutStatusEnum.RGV_OutPickupFinish);
                    if (dt_Task == null) return webResponse.Error("未找到需要修改的任务,无需修改");
                    dt_Task.NextAddress = NextAddress;
                    BaseDal.UpdateData(dt_Task);
@@ -875,8 +890,10 @@
                    
                    if (task.NextAddress == "1001" || task.NextAddress == "1002")
                    {
                        AbnormalTask abnormalTask = _abnormalTask.QueryFirst(x=> x.TaskNum == task.TaskNum);
                        //异常排除任务时,异常上报
                        TaskResultIn(task.TaskNum.ToString(), task.NextAddress, 3, "");
                        TaskResultIn(task.LJTaskNum.ToString(), task.NextAddress, 3,abnormalTask.ErrorContent);
                        AutomaticTaskCompleted(task);   //任务完成
                        BaseDal.DeleteData(task);
                    }
@@ -885,11 +902,13 @@
                        if(task.TaskType == (int)TaskInboundTypeEnum.Inbound && task.NextAddress != "1001" && task.NextAddress != "1002")
                        {
                            TaskResultIn(task.TaskNum.ToString(), "", 2, "");
                            TaskResultIn(task.LJTaskNum.ToString(), "", 2, "");
                        }
                        else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                        {
                            TaskResultOut(task.TaskNum.ToString(), task.NextAddress, 2, "");
                            TaskResultOut(task.LJTaskNum.ToString(), task.NextAddress, 2, "");
                            AutomaticTaskCompleted(task);   //任务完成
                            BaseDal.DeleteData(task);
                        }
                    }
@@ -1286,7 +1305,7 @@
                    }
                    else if (item.type == "put")    //放货
                    {
/*                        if (item.status == 2)   //堆垛机执行中
/*                       if (item.status == 2)   //堆垛机执行中
                        {
                            Dt_Task dt_Task = BaseDal.QueryFirst(x => x.TaskType == (int)TaskOutboundTypeEnum.Outbound && x.TaskState == (int)TaskOutStatusEnum.OutNewLj && x.Roadway == item.rgvTag);
                            if (dt_Task != null)
@@ -1389,7 +1408,7 @@
                            _task_HtyService.AddTaskHty(dt_Task);
                            BaseDal.DeleteData(dt_Task);
                            expoReverse.code = 0;
                            WriteLog.Write_Log("任务取消信息", "任务取消", "信息", $"任务号:{dt_Task.TaskNum},已取消");
                            WriteLog.Write_Log("兰剑调取任务取消信息", "任务取消", "信息", $"任务号:{dt_Task.TaskNum},已取消");
                        }
                        else
                        {
@@ -1464,11 +1483,13 @@
            StkRunStatusReturns LJReturns = HttpHelper.Post<StkRunStatusReturns>(urlLanJianWCSAPI + LanJiantaskResult, reception, "任务反馈接口");
            if (LJReturns.code == 0)
            {
                WriteLog.Write_Log("入库任务上传情况", "正常上传", "内容信息", $"任务编号:{taskNo},目标地址:{finalAddress},上传状态:{status},信息内容:{remark}");
                responseContent.OK("上传成功");
            }
            else
            {
                responseContent.OK("上传失败,原因:" + LJReturns.msg);
                WriteLog.Write_Log("入库任务上传情况", "上传失败", "内容信息", $"任务编号:{taskNo},目标地址:{finalAddress},上传状态:{status},信息内容:{remark}=====》上传失败,原因:{LJReturns.msg}");
                responseContent.Error("上传失败,原因:" + LJReturns.msg);
            }
            // åˆ›å»ºå¹¶èµ‹å€¼
            return responseContent;
@@ -1487,10 +1508,12 @@
            StkRunStatusReturns LJReturns = HttpHelper.Post<StkRunStatusReturns>(urlLanJianWCSAPI + LanJiantaskResult, reception, "任务反馈接口");
            if (LJReturns.code == 0)
            {
                WriteLog.Write_Log("出库任务上传情况", "正常上传", "内容信息", $"任务编号:{taskNo},目标地址:{finalAddress},上传状态:{status},信息内容:{remark}");
                responseContent.OK("上传成功");
            }
            else
            {
                WriteLog.Write_Log("出库任务上传情况", "上传失败", "内容信息", $"任务编号:{taskNo},目标地址:{finalAddress},上传状态:{status},信息内容:{remark}=====》上传失败,原因:{LJReturns.msg}");
                responseContent.OK("上传失败,原因:" + LJReturns.msg);
            }
            // åˆ›å»ºå¹¶èµ‹å€¼
@@ -1584,18 +1607,18 @@
                if (dt_task.NextAddress == "1001" || dt_task.NextAddress == "1002")
                {
                    //异常排除任务时,异常上报
                    TaskResultIn(dt_task.TaskNum.ToString(), dt_task.NextAddress, 3, "手动完成");
                    TaskResultIn(dt_task.LJTaskNum.ToString(), dt_task.NextAddress, 3, "手动完成");
                }
                else
                {
                    if (dt_task.TaskType == (int)TaskInboundTypeEnum.Inbound && dt_task.NextAddress != "1001" && dt_task.NextAddress != "1002")
                    {
                        TaskResultIn(dt_task.TaskNum.ToString(), "", 2, "手动完成");
                        TaskResultIn(dt_task.LJTaskNum.ToString(), "", 2, "手动完成");
                    }
                    else if(dt_task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                    {
                        TaskResultOut(dt_task.TaskNum.ToString(), dt_task.NextAddress, 2, "手动完成");
                        TaskResultOut(dt_task.LJTaskNum.ToString(), dt_task.NextAddress, 2, "手动完成");
                    }
                }
@@ -1673,18 +1696,18 @@
                if (dt_task.NextAddress == "1001" || dt_task.NextAddress == "1002")
                {
                    //异常排除任务时,异常上报
                    TaskResultIn(dt_task.TaskNum.ToString(), dt_task.NextAddress, 3, "任务取消");
                    TaskResultIn(dt_task.LJTaskNum.ToString(), dt_task.NextAddress, 3, "任务取消");
                }
                else
                {
                    if (dt_task.TaskType == (int)TaskInboundTypeEnum.Inbound)
                    {
                        TaskResultIn(dt_task.TaskNum.ToString(), "", 3, "任务取消");
                        TaskResultIn(dt_task.LJTaskNum.ToString(), "", 3, "任务取消");
                    }
                    else
                    {
                        TaskResultOut(dt_task.TaskNum.ToString(), dt_task.NextAddress, 3, "任务取消");
                        TaskResultOut(dt_task.LJTaskNum.ToString(), dt_task.NextAddress, 3, "任务取消");
                    }
                }
@@ -1767,6 +1790,58 @@
        }
        /// <summary>
        /// ä»»åŠ¡å¼‚å¸¸å®Œæˆï¼ˆå†™å…¥å¼‚å¸¸ä¿¡æ¯åŽï¼Œæ ‡è®°å¼‚å¸¸å®Œæˆï¼‰
        /// </summary>
        public WebResponseContent AbnormalComplete(AbnormalCompleteDTO completeDTO)
        {
            try
            {
                Dt_Task dt_task = BaseDal.QueryData().Where(x => x.TaskNum == completeDTO.taskNum).FirstOrDefault();
                if (dt_task == null) return WebResponseContent.Instance.Error($"未查询到任务");
                dt_task.NextAddress = completeDTO.station;
                dt_task.TargetAddress = completeDTO.station;
                //异常排除任务时,异常上报
                WebResponseContent webResponse = TaskResultIn(dt_task.LJTaskNum.ToString(), completeDTO.station, 3, completeDTO.message);
                if (webResponse.Status == false)
                {
                    return webResponse;
                }
                var db = BaseDal.Db as SqlSugarClient;
                db.Ado.BeginTran();
            BaseDal.DeleteData(dt_task);
                var res = _task_HtyService.AddData(new Dt_Task_hty
                {
                    TaskNum = dt_task.TaskNum,
                    PalletCode = dt_task.PalletCode,
                    Roadway = dt_task.Roadway,
                    TaskType = dt_task.TaskType,
                    TaskState = dt_task.TaskState,
                    SourceAddress = dt_task.SourceAddress,
                    TargetAddress = dt_task.TargetAddress,
                    CurrentAddress = dt_task.CurrentAddress,
                    NextAddress = dt_task.NextAddress,
                    WMSId = dt_task.WMSId,
                    Dispatchertime = dt_task.Dispatchertime,
                    Remark = "人工手动异常排出",
                    Creater = App.User.UserName,
                    CreateDate = DateTime.Now,
                    RGVTaskType = dt_task.RGVTaskType,
                    RGVCurrentexecution = dt_task.RGVCurrentexecution
                });
                //提交事务
                db.Ado.CommitTran();
                return WebResponseContent.Instance.OK("人工手动排出成功");
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.ToString());
            }
        }
    }