dengjunjie
2026-02-26 933e1bd3517936e1d5488d84827a830cf1310a83
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -26,6 +26,7 @@
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_IBasicInfoService;
@@ -44,6 +45,7 @@
        private readonly IKLSLocationInfoService _kLSLocationInfoService;
        private readonly IRGVLocationInfoService _rGVLocationInfoService;
        private readonly IRepository<Dt_TaskExecuteDetail> _taskExecuteDetailRepository;
        private readonly IApiInfoService _apiInfoService;
        private readonly IMapper _mapper;
        private Dictionary<string, OrderByType> _taskOrderBy = new()
@@ -63,7 +65,7 @@
        /// </summary>
        public IRepository<Dt_Task> Repository => BaseDal;
        public TaskService(IRepository<Dt_Task> BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, IRepository<Dt_TaskExecuteDetail> taskExecuteDetailRepository, IMapper mapper, IKLSLocationInfoService kLSLocationInfoService, IRGVLocationInfoService rGVLocationInfoService, IHKLocationInfoService hKLocationInfoService) : base(BaseDal)
        public TaskService(IRepository<Dt_Task> BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, IRepository<Dt_TaskExecuteDetail> taskExecuteDetailRepository, IMapper mapper, IKLSLocationInfoService kLSLocationInfoService, IRGVLocationInfoService rGVLocationInfoService, IHKLocationInfoService hKLocationInfoService, IApiInfoService apiInfoService) : base(BaseDal)
        {
            _routerService = routerService;
            _taskExecuteDetailService = taskExecuteDetailService;
@@ -72,6 +74,7 @@
            _kLSLocationInfoService = kLSLocationInfoService;
            _rGVLocationInfoService = rGVLocationInfoService;
            _hKLocationInfoService = hKLocationInfoService;
            _apiInfoService = apiInfoService;
        }
        public WebResponseContent ReceiveWMSTask([NotNull] List<WMSTasksDTO> taskDTOs)
        {
@@ -141,7 +144,36 @@
                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode);
                if (dt_Task == null) throw new Exception("未查询到任务号相关任务");
                dt_Task.TaskType = TaskOutStatusEnum.OutCancel.ObjToInt();
                BaseDal.UpdateData(dt_Task);
                // åˆ¤æ–­å½“前任务是否为凯乐士任务
                bool isGALAXISTask = dt_Task.TaskType == (int)TaskTypeEnum.MLInbound ||
                                    dt_Task.TaskType == (int)TaskTypeEnum.MLOutbound;
                //四向车
                bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound;
                //海康
                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.Carry || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJOutbound;
                if (isGALAXISTask)
                {
                    var KLS = new CancelGALAXISTask {
                        taskId= dt_Task.WMSTaskNum,
                        reportTime=DateTime.Now.ToString()
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelGALAXISTask));
                    if (apiInfo == null) throw new Exception("未找到凯乐士AGV任务下发接口配置信息!请检查接口配置");
                    string response = HttpHelper.Post(apiInfo.ApiAddress, KLS.Serialize());
                    GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
                    if (agvContent.success == true && agvContent.code == 0)
                    {
                        BaseDal.UpdateData(dt_Task);
                    }
                    else
                    {
                        content.Error("取消任务失败");
                    }
                }
                //BaseDal.UpdateData(dt_Task);
                content.OK("取消任务成功",dt_Task);
            }
            catch (Exception ex)
@@ -165,7 +197,41 @@
                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == updateTaskPriority.taskCode);
                if (dt_Task == null) throw new Exception("未查询到任务号相关任务");
                dt_Task.Grade = updateTaskPriority.taskPriority;
                BaseDal.UpdateData(dt_Task);
                // åˆ¤æ–­å½“前任务是否为凯乐士任务
                bool isGALAXISTask = dt_Task.TaskType == (int)TaskTypeEnum.MLInbound ||
                                    dt_Task.TaskType == (int)TaskTypeEnum.MLOutbound;
                //四向车
                bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound;
                //海康
                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.Carry || dt_Task.TaskType == (int)TaskTypeEnum.CJInbound|| dt_Task.TaskType == (int)TaskTypeEnum.CJInbound || dt_Task.TaskType == (int)TaskTypeEnum.CJOutbound;
                #region å‡¯ä¹å£«
                if (isGALAXISTask)
                {
                    var updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade
                    {
                        taskId = dt_Task.TaskNum.ToString(),
                        reportTime = DateTime.Now.ToString(),
                        district = dt_Task.Roadway,//任务库区
                        priorityCode = updateTaskPriority.taskPriority,
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(UpdateGALAXISTaskGrade));
                    if (apiInfo == null) throw new Exception("未找到凯乐士AGV任务下发接口配置信息!请检查接口配置");
                    string response = HttpHelper.Post(apiInfo.ApiAddress, updateGALAXISTaskGrade.Serialize());
                    GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
                    if (agvContent.success == true && agvContent.code == 0)
                    {
                        BaseDal.UpdateData(dt_Task);
                    }
                    else
                    {
                        content.Error("修改任务优先级失败");
                    }
                }
                #endregion
                content.OK("修改任务优先级成功", dt_Task);
            }
            catch (Exception ex)
@@ -179,8 +245,6 @@
        /// ä¿®æ”¹åº“位分区
        /// </summary>
        /// <returns></returns>
        ///
        public WebResponseContent ModifyWMSLayoutZone(WMSUpdateLocationArea wMSUpdateLocationArea)
        {
            WebResponseContent content = new WebResponseContent();
@@ -191,27 +255,31 @@
                var hk=new List<Dt_HKLocationInfo>();
                if(wMSUpdateLocationArea.WarehouseId == 1)
                {
                    foreach (var LocationCode in wMSUpdateLocationArea.LocationCodes)
                     var rgvList = _rGVLocationInfoService.Repository.QueryData(x =>wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList();
                    foreach (var item in rgvList)
                    {
                        Dt_RGVLocationInfo dt_RGVLocationInfo = _rGVLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
                       rgv.Add(dt_RGVLocationInfo);
                        item.LocationCode = wMSUpdateLocationArea.UpdateAreaCode;
                    }
                    rgv.AddRange(rgvList);
                }
                if (wMSUpdateLocationArea.WarehouseId == 2)
                {
                    foreach (var LocationCode in wMSUpdateLocationArea.LocationCodes)
                    var KLSLocationInfoList = _kLSLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList();
                    foreach (var item in KLSLocationInfoList)
                    {
                        Dt_KLSLocationInfo dt_KLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
                        kls.Add(dt_KLSLocationInfo);
                        item.LocationCode = wMSUpdateLocationArea.UpdateAreaCode;
                    }
                    kls.AddRange(KLSLocationInfoList);
                }
                if (wMSUpdateLocationArea.WarehouseId == 3)
                {
                    foreach (var LocationCode in wMSUpdateLocationArea.LocationCodes)
                    var hkList = _hKLocationInfoService.Repository.QueryData(x => wMSUpdateLocationArea.LocationCodes.Contains(x.LocationCode)).ToList();
                    foreach (var item in hkList)
                    {
                        Dt_HKLocationInfo dt_HKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == LocationCode);
                        hk.Add(dt_HKLocationInfo);
                        item.LocationCode = wMSUpdateLocationArea.UpdateAreaCode;
                    }
                    hk.AddRange(hkList);
                }
                Db.Ado.BeginTran();
                _rGVLocationInfoService.UpdateData(rgv);