1
HuBingJie
2025-12-05 28110912ca4803e5793f181517d7bf2d7a5ea2ad
´úÂë¹ÜÀí/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;
@@ -81,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()
@@ -95,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;
@@ -105,6 +108,7 @@
            _routerRepository = routerRepository;
            _equipmentStatus = equipmentStatus;
            _gvStationService = agvStationService;
            _abnormalTask = abnormalTask;
        }
        /// <summary>
@@ -333,7 +337,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;
        }
@@ -444,7 +454,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);
@@ -878,8 +888,10 @@
                    
                    if (task.NextAddress == "1001" || task.NextAddress == "1002")
                    {
                        AbnormalTask abnormalTask = _abnormalTask.QueryFirst(x=> x.TaskNum == task.TaskNum);
                        //异常排除任务时,异常上报
                        TaskResultIn(task.LJTaskNum.ToString(), task.NextAddress, 3, "");
                        TaskResultIn(task.LJTaskNum.ToString(), task.NextAddress, 3,abnormalTask.ErrorContent);
                        AutomaticTaskCompleted(task);   //任务完成
                        BaseDal.DeleteData(task);
                    }
@@ -893,6 +905,8 @@
                        else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
                        {
                            TaskResultOut(task.LJTaskNum.ToString(), task.NextAddress, 2, "");
                            AutomaticTaskCompleted(task);   //任务完成
                            BaseDal.DeleteData(task);
                        }
                    }
@@ -1289,7 +1303,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)
@@ -1473,7 +1487,7 @@
            else
            {
                WriteLog.Write_Log("入库任务上传情况", "上传失败", "内容信息", $"任务编号:{taskNo},目标地址:{finalAddress},上传状态:{status},信息内容:{remark}=====》上传失败,原因:{LJReturns.msg}");
                responseContent.OK("上传失败,原因:" + LJReturns.msg);
                responseContent.Error("上传失败,原因:" + LJReturns.msg);
            }
            // åˆ›å»ºå¹¶èµ‹å€¼
            return responseContent;
@@ -1774,6 +1788,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());
            }
        }
    }