1
dengjunjie
2026-03-09 5889168a34bc7867ec0f8c9dab0e5de063c01e99
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -16,6 +16,7 @@
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using AutoMapper;
using SixLabors.ImageSharp.ColorSpaces;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
using WIDESEAWCS_BasicInfoService;
@@ -96,7 +97,8 @@
                        if (!content.Status) throw new Exception(content.Message);
                        if (BaseDal.QueryFirst(x => x.WMSTaskNum == task.taskCode || x.PalletCode == task.containerCode) != null)
                        {
                            continue;
                            throw new Exception($"任务号【{task.taskCode}】/托盘号【{task.containerCode}】已存在任务");
                            //continue;
                        }
                        switch (item.taskType)
                        {
@@ -146,6 +148,9 @@
        public WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask)
        {
            WebResponseContent content = new WebResponseContent();
            var KLS = new CancelGALAXISTask();
            CancelHIKROBOTTask cancelHIKROBOTTask = new CancelHIKROBOTTask();
            CancelSXCTake cancelSXCTake = new CancelSXCTake();
            try
            {
                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode);
@@ -163,7 +168,7 @@
                #region å‡¯ä¹å£«
                if (isGALAXISTask)
                {
                    var KLS = new CancelGALAXISTask
                     KLS = new CancelGALAXISTask
                    {
                        taskId = dt_Task.WMSTaskNum,
                        reportTime = DateTime.Now.ToString()
@@ -176,11 +181,11 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                        return content.OK("取消任务成功", dt_Task);
                         content.OK("取消任务成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{agvContent.data.returnInfo}");
                        content.Error($"任务失败{agvContent.data.returnInfo}");
                    }
                }
@@ -189,9 +194,10 @@
                #region å››å‘车
                if (isAGV)
                {
                    CancelSXCTake cancelSXCTake = new CancelSXCTake
                     cancelSXCTake = new CancelSXCTake
                    {
                        taskID = dt_Task.RGVTaskId
                        taskID = dt_Task.RGVTaskId,
                        withoutRunning = 1
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelSXCTake));
                    if (apiInfo == null) throw new Exception("未找到四向车AGV任务下发接口配置信息!请检查接口配置");
@@ -201,18 +207,18 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                        return content.OK("取消任务成功", dt_Task);
                         content.OK("取消任务成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{fOURBOTReturn.data}");
                        content.Error($"任务失败{fOURBOTReturn.data}");
                    }
                }
                #endregion
                #region æµ·åº·
                if (isHK)
                {
                    CancelHIKROBOTTask cancelHIKROBOTTask = new CancelHIKROBOTTask
                     cancelHIKROBOTTask = new CancelHIKROBOTTask
                    {
                        robotTaskCode = dt_Task.WMSTaskNum,
                        cancelType = "CANCEL"//原软取消,DROP人工介入(原硬取消)
@@ -225,11 +231,11 @@
                    {
                        //直接移入历史
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动完成);
                        return content.OK("取消任务成功", dt_Task);
                         content.OK("取消任务成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{hIKROBOTReturn.data}");
                         content.Error($"任务失败{hIKROBOTReturn.data}");
                    }
                }
@@ -239,6 +245,33 @@
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
                // åœ¨ finally ä¸­åˆ¤æ–­å“ªä¸ªå¯¹è±¡è¢«èµ‹å€¼äº†
                object logObject = null;
                string deviceName = "";
                if (KLS != null )
                {
                    logObject = KLS;
                    deviceName = "凯乐士AGV";
                }
                else if (cancelHIKROBOTTask != null )
                {
                    logObject = cancelHIKROBOTTask;
                    deviceName = "海康机器人";
                }
                else if (cancelSXCTake != null )
                {
                    logObject = cancelSXCTake;
                    deviceName = "四向车";
                }
                if (logObject != null)
                {
                    _trackloginfoService.AddTrackLog(logObject, content, $"取消{deviceName}任务", "", "");
                }
            }
            return content;
        }
@@ -252,6 +285,9 @@
        public WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority)
        {
            WebResponseContent content = new WebResponseContent();
            var updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade();
            var request = new UpdateAgvSXCTake();
            var Hkrequest = new HIKROBOTTaskGrade();
            try
            {
                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == updateTaskPriority.taskCode);
@@ -271,7 +307,7 @@
                #region å‡¯ä¹å£«
                if (isGALAXISTask)
                {
                    var updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade
                    updateGALAXISTaskGrade = new UpdateGALAXISTaskGrade
                    {
                        taskId = dt_Task.WMSTaskNum,
                        reportTime = DateTime.Now.ToString(),
@@ -286,11 +322,11 @@
                    {
                        BaseDal.UpdateData(dt_Task);
                        return content.OK("修改任务优先级成功", dt_Task);
                         content.OK("修改任务优先级成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{agvContent.data.returnInfo}");
                         content.Error($"任务失败{agvContent.data.returnInfo}");
                    }
                }
                #endregion
@@ -298,23 +334,23 @@
                #region å››å‘车
                if (isAGV)
                {
                    var request = new UpdateAgvSXCTake
                     request = new UpdateAgvSXCTake
                    {
                        taskID = dt_Task.RGVTaskId,
                        priority = updateTaskPriority.taskPriority
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(UpdateAgvSXCTake));
                    if (apiInfo == null) throw new Exception("未找到四向车AGV任务下发接口配置信息!请检查接口配置");
                    if (apiInfo == null) throw new Exception("未找到更新四向车任务优先级接口配置信息!请检查接口配置");
                    string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize());
                    FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                    if (fOURBOTReturn.returnCode == 0 && fOURBOTReturn.returnUserMsg == "成功")
                    {
                        BaseDal.UpdateData(dt_Task);
                        return content.OK("修改任务优先级成功", dt_Task);
                         content.OK("修改任务优先级成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{fOURBOTReturn.data}");
                         content.Error($"任务失败{fOURBOTReturn.data}");
                    }
                }
@@ -322,23 +358,23 @@
                #region æµ·åº·
                if (isHK)
                {
                    var request = new HIKROBOTTaskGrade
                     Hkrequest = new HIKROBOTTaskGrade
                    {
                        robotTaskCode = dt_Task.WMSTaskNum,//任务号
                        initPriority = updateTaskPriority.taskPriority//优先级
                    };
                    Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskGrade));
                    if (apiInfo == null) throw new Exception("未找到四向车AGV任务下发接口配置信息!请检查接口配置");
                    string response = HttpHelper.Post(apiInfo.ApiAddress, request.Serialize());
                    string response = HttpHelper.Post(apiInfo.ApiAddress, Hkrequest.Serialize());
                    HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                    if (hIKROBOTReturn.code == "SUCCESS0" && hIKROBOTReturn.message == "成功")
                    {
                        BaseDal.UpdateData(dt_Task);
                        return content.OK("修改任务优先级成功", dt_Task);
                         content.OK("修改任务优先级成功", dt_Task);
                    }
                    else
                    {
                        return content.Error($"任务失败{hIKROBOTReturn.data}");
                         content.Error($"任务失败{hIKROBOTReturn.data}");
                    }
                }
                #endregion
@@ -346,6 +382,33 @@
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
                // åœ¨ finally ä¸­åˆ¤æ–­å“ªä¸ªå¯¹è±¡è¢«èµ‹å€¼äº†
                object logObject = null;
                string deviceName = "";
                if (updateGALAXISTaskGrade != null )
                {
                    logObject = updateGALAXISTaskGrade;
                    deviceName = "凯乐士AGV";
                }
                else if (Hkrequest != null)
                {
                    logObject = Hkrequest;
                    deviceName = "海康机器人";
                }
                else if (request != null )
                {
                    logObject = request;
                    deviceName = "四向车";
                }
                if (logObject != null)
                {
                    _trackloginfoService.AddTrackLog(logObject, content, $"修改{deviceName}任务优先级", "", "");
                }
            }
            return content;
        }
@@ -1057,7 +1120,8 @@
                };
                string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOToccupyStation.Serialize());
                FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>();
                if (fOURBOTReturn.returnCode != 0) throw new Exception(fOURBOTReturn.returnUserMsg);
                if (fOURBOTReturn.returnCode != 0 && fOURBOTReturn.returnUserMsg != $"站点已被占用,(podID={iQC.ContainerCode})")
                    throw new Exception(fOURBOTReturn.returnUserMsg);
                #endregion
                #region åˆ›å»ºå››å‘车任务
@@ -1105,7 +1169,7 @@
                var Agvlocation = _rGVLocationInfoService.Repository.QueryData(x => fOURBOTStorageStatusNotify.storageCode.Contains(x.LocationCode));
                foreach (var item in Agvlocation)
                {
                    item.LocationStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable);
                    item.EnableStatus = (int)(fOURBOTStorageStatusNotify.disable == 0 ? EnableStatusEnum.Normal : EnableStatusEnum.Disable);
                }
                _rGVLocationInfoService.UpdateData(Agvlocation);
                return WebResponseContent.Instance.OK();