dengjunjie
2026-03-17 0c2124ab83fcc330e9620f02fbf02dedf8980526
优化海康AGV三楼四楼任务
已删除2个文件
已修改9个文件
568 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTEqptExecuteNotify.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTEqptRequest.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/TargetRouteDto.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -30,25 +30,61 @@
        [Description("面料出库")]
        MLOutbound,
        /// <summary>
        /// è·¨æ¥¼å±‚运输
        /// è½¬è¿è½¦æ¬è¿
        /// </summary>
        [Description("跨楼层运输")]
        Carry,
        [Description("转运车搬运")]
        F01,
        /// <summary>
        /// è£å‰ªé€è´§
        /// ä¸‰æ¥¼æ»¡æ‰˜ä¸Šæå‡æœº
        /// </summary>
        [Description("裁剪送货")]
        CJCarry,
        [Description("三楼上提升机")]
        RK3F,
        /// <summary>
        /// è£å‰ªå…¥åº“
        /// ä¸‰æ¥¼æå‡æœºå‡ºç©ºæ‰˜
        /// </summary>
        [Description("裁剪入库")]
        CJInbound,
        [Description("三楼提升机出")]
        CK3F,
        /// <summary>
        /// è£å‰ªå‡ºåº“
        /// å››æ¥¼æå‡æœºå…¥åº“
        /// </summary>
        [Description("裁剪出库")]
        CJOutbound,
        [Description("四楼提升机入库")]
        Q1TSJ4,
        /// <summary>
        /// å››æ¥¼åº“内到线边
        /// </summary>
        [Description("四楼库内到线边")]
        STU0003,
        /// <summary>
        /// å››æ¥¼çº¿è¾¹åˆ°çº¿è¾¹
        /// </summary>
        [Description("四楼线边到线边")]
        F02,
        /// <summary>
        /// å››æ¥¼åº“内到提升机
        /// </summary>
        [Description("四楼库内到提升机")]
        CHUKU1,
        /// <summary>
        /// å…­æ¥¼åˆ°ä¸€æ¥¼
        /// </summary>
        [Description("六楼到一楼")]
        Q3RK,
        /// <summary>
        /// ä¸€æ¥¼åˆ°å…­æ¥¼
        /// </summary>
        [Description("一楼到六楼")]
        Q3CK,
        /// <summary>
        /// ç©ºè½¦è·¨æ¥¼å±‚
        /// </summary>
        [Description("空车跨楼层")]
        Move,
        /// <summary>
        /// æˆå“ç§»åº“
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTEqptExecuteNotify.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTEqptRequest.cs
ÎļþÒÑɾ³ý
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/TargetRouteDto.cs
@@ -12,6 +12,12 @@
    public class TargetRouteDto
    {
        /// <summary>
        /// è¯¥æ­¥éª¤æ˜¯å¦è‡ªåŠ¨å¼€å§‹ã€‚0否1是
        /// </summary>
        public int autoStart { get; set; } = 1;
        public int seq { get; set; }
        /// <summary>
        /// ç›®æ ‡ç±»åž‹
        /// ZONE:目标所处区域编号
        /// SITE:站点别名
@@ -40,6 +46,7 @@
        /// <summary>
        /// æœºå™¨äººåˆ°è¾¾åŽçš„æ“ä½œ
        /// COLLECT取货DELIVERY送货
        /// </summary>
        public string operation { get; set; }
@@ -108,6 +115,7 @@
    /// </summary>
    public class CarrierInfoDto
    {
        public string binCategory { get; set; } = "A";
        /// <summary>
        /// è½½å…·ç±»åž‹
        /// </summary>
@@ -121,6 +129,6 @@
        /// <summary>
        /// å±‚号
        /// </summary>
        public int? layer { get; set; }
        //public int? layer { get; set; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -74,14 +74,14 @@
        /// </summary>
        /// <param name="wMSCancelTask">取消任务实体类</param>
        /// <returns></returns>
        public WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask);
         WebResponseContent CancelWMSTask(WMSCancelTask wMSCancelTask);
        /// <summary>
        /// ä¿®æ”¹ä»»åŠ¡ä¼˜å…ˆçº§
        /// </summary>
        /// <param name="updateTaskPriority"></param>
        /// <returns></returns>
        public WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority);
         WebResponseContent UpdateWMSTaskPriority(WMSUpdateTaskPriority updateTaskPriority);
        /// <summary>
        /// æ ¹æ®æ‰˜ç›˜å·ã€èµ·å§‹åœ°å€å‘WMS请求任务
@@ -181,6 +181,12 @@
        /// <param name="task">任务实体对象</param>
        /// <returns></returns>
        WebResponseContent UpdateTaskStatusToNext([NotNull] Dt_Task task);
        /// <summary>
        /// ä¸‹å‘海康AGV任务
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        WebResponseContent SendHIKROBOTTask([NotNull] Dt_Task task);
        /// <summary>
        /// æ ¹æ®ä»»åŠ¡å·ã€å½“å‰åœ°å€æ›´æ–°ä»»åŠ¡ä½ç½®ä¿¡æ¯
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs
@@ -10,6 +10,9 @@
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.AGV.HIKROBOT;
using System.Diagnostics.CodeAnalysis;
namespace WIDESEAWCS_TaskInfoService
{
@@ -25,10 +28,20 @@
        /// <returns></returns>
        public WebResponseContent CreateHKNewInTask(TaskDTO taskDTO, int taskType)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_HKLocationInfo? hKLocationInfo = null;
                #region ç‚¹åˆ°ç‚¹
                if (!string.IsNullOrEmpty(taskDTO.toLocationCode))
                {
                    hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.toLocationCode) ?? throw new Exception($"未找到终点货位【{taskDTO.toLocationCode}】");
                    if (hKLocationInfo.LocationStatus != (int)LocationStatusEnum.Free) throw new Exception($"终点货位【{taskDTO.toLocationCode}】货位状态不为空货位");
                }
                #endregion
                //获取货位信息
                Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"未找到终点库区【{taskDTO.toAreaCode}】可用空货位!"); ;
                else
                    hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"未找到终点库区【{taskDTO.toAreaCode}】可用空货位!");
                Dt_Task dt_Task = new Dt_Task()
                {
                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -46,17 +59,42 @@
                    Creater = "WMS",
                };
                hKLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
                Db.Ado.BeginTran();
                BaseDal.AddData(dt_Task);
                _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
                Db.Ado.CommitTran();
                return WebResponseContent.Instance.OK();
                #region ä¸‹å‘海康AGV任务
                content = SendHIKROBOTTask(dt_Task);
                if (!content.Status) throw new Exception(content.Message);
                dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                dt_Task.Dispatchertime = DateTime.Now;
                #endregion
                try
                {
                    Db.Ado.BeginTran();
                    BaseDal.AddData(dt_Task);
                    _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
                    Db.Ado.CommitTran();
                }
                catch (Exception ex)
                {
                    Db.Ado.RollbackTran();
                    throw new Exception(ex.Message);
                }
                content.OK(data: new
                {
                    taskCode = taskDTO.taskCode,
                    Message = "成功!"
                });
            }
            catch (Exception ex)
            {
                Db.Ado.RollbackTran();
                throw new Exception(ex.Message);
                content.Data = new
                {
                    taskCode = taskDTO.taskCode,
                    Message = $"失败!{ex.Message}"
                };
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// åˆ›å»ºæµ·åº·AGV出库任务
@@ -66,6 +104,7 @@
        /// <returns></returns>
        public WebResponseContent CreateHKNewOutTask(TaskDTO taskDTO, int taskType)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"未找到起点库位【{taskDTO.fromLocationCode}】!");
@@ -88,18 +127,189 @@
                    Creater = "WMS",
                };
                hKLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
                Db.Ado.BeginTran();
                BaseDal.AddData(dt_Task);
                _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
                Db.Ado.CommitTran();
                return WebResponseContent.Instance.OK();
                #region ä¸‹å‘海康AGV任务
                content = SendHIKROBOTTask(dt_Task);
                if (!content.Status) throw new Exception(content.Message);
                dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                dt_Task.Dispatchertime = DateTime.Now;
                #endregion
                try
                {
                    Db.Ado.BeginTran();
                    BaseDal.AddData(dt_Task);
                    _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
                    Db.Ado.CommitTran();
                }
                catch (Exception ex)
                {
                    Db.Ado.RollbackTran();
                    throw new Exception(ex.Message);
                }
                return content.OK(data: new
                {
                    taskCode = taskDTO.taskCode,
                    Message = "成功!"
                });
            }
            catch (Exception ex)
            {
                Db.Ado.RollbackTran();
                throw new Exception(ex.Message);
                content.Data = new
                {
                    taskCode = taskDTO.taskCode,
                    Message = $"失败!{ex.Message}"
                };
                return content.Error(ex.Message);
            }
        }
        #endregion
        #region ä¸‹å‘海康AGV任务
        public WebResponseContent SendHIKROBOTTask([NotNull] Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            HIKROBOTReturn hIKROBOTReturn = null;
            HIKROBOTTaskSubmit hIKROBOTTaskSubmit = null;
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskSubmit)) ?? throw new Exception("未找到海康AGV任务下发接口配置信息!请检查接口配置");
                #region å®žä½“类转换
                hIKROBOTTaskSubmit = HIKROBOTTask(task);
                if (hIKROBOTTaskSubmit == null) throw new Exception("海康AGV任务实体转换失败");
                #endregion
                string response = HttpHelper.Post(apiInfo.ApiAddress, hIKROBOTTaskSubmit.Serialize());
                hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                if (hIKROBOTReturn.code == "SUCCESS")
                {
                    var data = hIKROBOTReturn.data.ToString().DeserializeObject<HIKROBOTReturnData>();
                    content.OK(data: data);
                }
                else
                {
                    throw new Exception(hIKROBOTReturn.message);
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
                _trackloginfoService.AddTrackLog(hIKROBOTTaskSubmit, content, "下发海康AGV任务", "", hIKROBOTReturn.message);
            }
            return content;
        }
        #endregion
        /// <summary>
        /// æµ·åº·ä»»åŠ¡å®žä½“ç±»è½¬æ¢
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public HIKROBOTTaskSubmit HIKROBOTTask(Dt_Task task)
        {
            HIKROBOTTaskSubmit hIKROBOTTaskSubmit = new HIKROBOTTaskSubmit();
            try
            {
                var tasktype = (TaskTypeEnum)Enum.GetValues(typeof(TaskTypeEnum)).GetValue(task.TaskType);
                hIKROBOTTaskSubmit.initPriority = task.Grade;
                hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum;
                hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto();
                CarrierInfoDto carrierInfoDto = new CarrierInfoDto()
                {
                    carrierCode = task.PalletCode,
                    carrierType = task.PalletCode.Contains("LXM") ? "DX" : "SX"
                };
                extraDto.carrierInfo.Add(carrierInfoDto);
                hIKROBOTTaskSubmit.extra = extraDto;
                switch (tasktype)
                {
                    case TaskTypeEnum.CPInbound:
                    case TaskTypeEnum.CPOutbound:
                    case TaskTypeEnum.MLInbound:
                    case TaskTypeEnum.MLOutbound:
                        break;
                    case TaskTypeEnum.F01:
                        break;
                    case TaskTypeEnum.RK3F:
                    case TaskTypeEnum.CK3F:
                    case TaskTypeEnum.F02:
                        {
                            TargetRouteDto target = new TargetRouteDto()
                            {
                                code = task.CurrentAddress,
                                operation = "DELIVERY",//取货
                                seq = 0,
                                type = "SITE",
                            };
                            TargetRouteDto targetRoute = new TargetRouteDto()
                            {
                                code = task.NextAddress,
                                operation = "DELIVERY",//送货
                                seq = 1,
                                type = "SITE"
                            };
                            hIKROBOTTaskSubmit.targetRoute.Add(target);
                            hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
                        }
                        break;
                    case TaskTypeEnum.Q1TSJ4:
                        {
                            TargetRouteDto target = new TargetRouteDto()
                            {
                                code = task.CurrentAddress,
                                operation = "DELIVERY",//取货
                                seq = 0,
                                type = "SITE",
                            };
                            TargetRouteDto targetRoute = new TargetRouteDto()
                            {
                                code = task.NextAddress,
                                operation = "DELIVERY",//送货
                                seq = 1,
                                type = "STORAGE"
                            };
                            hIKROBOTTaskSubmit.targetRoute.Add(target);
                            hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
                        }
                        break;
                    case TaskTypeEnum.STU0003:
                    case TaskTypeEnum.CHUKU1:
                        {
                            TargetRouteDto target = new TargetRouteDto()
                            {
                                code = task.CurrentAddress,
                                operation = "DELIVERY",//取货
                                seq = 0,
                                type = "STORAGE",
                            };
                            TargetRouteDto targetRoute = new TargetRouteDto()
                            {
                                code = task.NextAddress,
                                operation = "DELIVERY",//送货
                                seq = 1,
                                type = "SITE",
                            };
                            hIKROBOTTaskSubmit.targetRoute.Add(target);
                            hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
                        }
                        break;
                    case TaskTypeEnum.Q3RK:
                        break;
                    case TaskTypeEnum.Q3CK:
                        break;
                    case TaskTypeEnum.Move:
                        break;
                    case TaskTypeEnum.CPMoveInventory:
                        break;
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {
            }
            return hIKROBOTTaskSubmit;
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs
@@ -27,18 +27,20 @@
        public WebResponseContent CreateKLSNewInTask(TaskDTO taskDTO, int taskType)
        {
            WebResponseContent content = new WebResponseContent();
            Dt_KLSLocationInfo? kLSLocationInfo = null;
            try
            {
                int containerType = taskDTO.containerCode.Contains("LLM") ? (int)LocationTypeEnum.LargePallet : (int)LocationTypeEnum.SmallPallet;
                #region ç‚¹åˆ°ç‚¹
                if (!string.IsNullOrEmpty(taskDTO.toLocationCode))
                {
                    var LocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.toLocationCode) ?? throw new Exception($"未找到终点货位【{taskDTO.toLocationCode}】");
                    if (LocationInfo.LocationStatus != (int)LocationStatusEnum.Free) throw new Exception($"终点货位【{taskDTO.toLocationCode}】货位状态不为空货位");
                    kLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.toLocationCode) ?? throw new Exception($"未找到终点货位【{taskDTO.toLocationCode}】");
                    if (kLSLocationInfo.LocationStatus != (int)LocationStatusEnum.Free) throw new Exception($"终点货位【{taskDTO.toLocationCode}】货位状态不为空货位");
                }
                #endregion
                //获取货位信息
                Dt_KLSLocationInfo? kLSLocationInfo = _kLSLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode, containerType) ?? throw new Exception($"未找到终点库区【{taskDTO.toAreaCode}】可用空货位!");
                else
                    kLSLocationInfo = _kLSLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode, containerType) ?? throw new Exception($"未找到终点库区【{taskDTO.toAreaCode}】可用空货位!");
                Dt_Task dt_Task = new()
                {
                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -60,6 +62,7 @@
                content = SendKLSTask(dt_Task);
                if (!content.Status) throw new Exception(content.Message);
                dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                dt_Task.Dispatchertime=DateTime.Now;
                #endregion
                try
                {
@@ -125,6 +128,7 @@
                content = SendKLSTask(dt_Task);
                if (!content.Status) throw new Exception(content.Message);
                dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                dt_Task.Dispatchertime = DateTime.Now;
                #endregion
                try
                {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -94,11 +94,11 @@
            {
                List<object> objects = new List<object>();
                foreach (var item in taskDTOs)
                {
                {
                    foreach (var task in item.tasks)
                    {
                        #region åˆ¤æ–­
                       var  contentStatus = TaskHelpMethods.isOkTaskInfo(task, true, true);
                        var contentStatus = TaskHelpMethods.isOkTaskInfo(task, true, true);
                        if (!contentStatus.Status)
                        {
                            objects.Add(new
@@ -107,7 +107,6 @@
                                Message = $"任务号【{task.taskCode}】{content.Message}"
                            });
                            continue;
                            //throw new Exception(content.Message);
                        }
                        if (BaseDal.QueryFirst(x => x.WMSTaskNum == task.taskCode && x.TaskType == item.taskType) != null)
                        {
@@ -142,6 +141,7 @@
                        #endregion
                        switch (item.taskType)
                        {
                            #region å‡¯ä¹å£«AGV面料库
                            case (int)TaskTypeEnum.MLInbound:
                                content = CreateKLSNewInTask(task, item.taskType);
                                objects.Add(content.Data);
@@ -150,6 +150,8 @@
                                content = CreateKLSNewOutTask(task, item.taskType);
                                objects.Add(content.Data);
                                break;
                            #endregion
                            #region æ—·è§†å››å‘车成品库
                            case (int)TaskTypeEnum.CPInbound:
                                content = CreateRGVNewInTask(task, item.taskType);
                                objects.Add(content.Data);
@@ -158,22 +160,30 @@
                                content = CreateRGVNewOutTask(task, item.taskType);
                                objects.Add(content.Data);
                                break;
                            case (int)TaskTypeEnum.CJInbound:
                            #endregion
                            #region æµ·åº·AGV
                            case (int)TaskTypeEnum.Q1TSJ4:
                                content = CreateHKNewInTask(task, item.taskType);
                                objects.Add(content.Data);
                                break;
                            case (int)TaskTypeEnum.CJOutbound:
                            case (int)TaskTypeEnum.STU0003:
                            case (int)TaskTypeEnum.CHUKU1:
                                content = CreateHKNewOutTask(task, item.taskType);
                                objects.Add(content.Data);
                                break;
                            case (int)TaskTypeEnum.Carry:
                            case (int)TaskTypeEnum.F01:
                            case (int)TaskTypeEnum.Q3RK:
                            case (int)TaskTypeEnum.Q3CK:
                                content = CarryTask(task, item.taskType);
                                objects.Add(content.Data);
                                break;
                            case (int)TaskTypeEnum.CJCarry:
                            case (int)TaskTypeEnum.F02:
                            case (int)TaskTypeEnum.RK3F:
                            case (int)TaskTypeEnum.CK3F:
                                content = CJCarryTaske(task, item.taskType);
                                objects.Add(content.Data);
                                break;
                            #endregion
                            default:
                                objects.Add(new
                                {
@@ -212,7 +222,7 @@
            var deviceName = "";
            try
            {
                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode&&x.TaskType!=TaskTypeEnum.CPMoveInventory.ObjToInt());
                Dt_Task dt_Task = BaseDal.QueryFirst(x => x.WMSTaskNum == wMSCancelTask.TaskCode && x.TaskType != TaskTypeEnum.CPMoveInventory.ObjToInt());
                if (dt_Task == null) throw new Exception("未查询到任务号相关任务");
                // åˆ¤æ–­å½“前任务是否为凯乐士任务
@@ -221,13 +231,13 @@
                //四向车
                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;
                bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.Carry || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK;
                //这里将状态改变了198取消任务
                dt_Task.TaskType = TaskStatusEnum.WMSCancel.ObjToInt();
                #region å‡¯ä¹å£«
                if (isGALAXISTask)
                {
                    deviceName= "凯乐士AGV";
                    deviceName = "凯乐士AGV";
                    KLS = new CancelGALAXISTask
                    {
                        taskId = dt_Task.WMSTaskNum,
@@ -256,7 +266,7 @@
                if (isAGV)
                {
                    deviceName = "四向车";
                    if (dt_Task.RGVTaskId==0)
                    if (dt_Task.RGVTaskId == 0)
                    {
                        BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.自动删除);
                        content.OK($"取消{dt_Task.WMSTaskNum}任务成功", dt_Task);
@@ -1127,18 +1137,18 @@
                {
                    //读取光电信号
                    var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
                    if (device == null) throw new Exception("未找到1楼质检门设备信息") ;
                    if (device == null) throw new Exception("未找到1楼质检门设备信息");
                    if (!device.IsConnected) throw new Exception("PLC1楼质检门设备连接失败");
                    var sta = _stationMangerService.Repository.QueryData(x => x.Remark == "成品库");
                    foreach (var item in sta)
                    {
                        bool value = device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.StationCode);
                             list.Add(new
                             {
                                 LoctionCode = item.StationCode,
                                 LocationStatus = value?100:0,
                                 EnableStatus = 0,
                             });
                        bool value = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.StationCode);
                        list.Add(new
                        {
                            LoctionCode = item.StationCode,
                            LocationStatus = value ? 100 : 0,
                            EnableStatus = 0,
                        });
                    }
                    content.OK(data: list);
                }
@@ -1332,6 +1342,6 @@
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs
@@ -24,7 +24,7 @@
        {
            foreach (var item in tasks)
            {
                var content = SendHIKROBOTTask(item);
                var content =_taskService.SendHIKROBOTTask(item);
            }
        }
        #endregion
@@ -34,65 +34,8 @@
        {
            foreach (var item in tasks)
            {
                var content = SendHIKROBOTTask(item);
                var content = _taskService.SendHIKROBOTTask(item);
            }
        }
        #endregion
        #region ä¸‹å‘海康AGV任务
        public WebResponseContent SendHIKROBOTTask(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskSubmit)) ?? throw new Exception("未找到海康AGV任务下发接口配置信息!请检查接口配置");
                #region ä»»åŠ¡ä¿¡æ¯è½¬æ¢
                HIKROBOTTaskSubmit hIKROBOTTaskSubmit = new HIKROBOTTaskSubmit()
                {
                    taskType = "",
                    initPriority = task.Grade,
                    targetRoute = new List<TargetRouteDto>
                    {
                        new TargetRouteDto
                        {
                            type= "SITE",
                            code=task.CurrentAddress,
                            operation="COLLECT",//取货
                        },
                        new TargetRouteDto
                        {
                            type= "SITE",
                            code=task.NextAddress,
                            operation="DELIVERY",//送货
                        }
                    }
                };
                #endregion
                string response = HttpHelper.Post(apiInfo.ApiAddress, hIKROBOTTaskSubmit.Serialize());
                var hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                if (hIKROBOTReturn.code == "SUCCESS")
                {
                    var data = hIKROBOTReturn.data.ToString().DeserializeObject<HIKROBOTReturnData>();
                    content.OK(data: data);
                    //task.Remark = data.robotTaskCode;
                }
                else
                {
                    throw new Exception(hIKROBOTReturn.message);
                }
                //_taskService.UpdateData(task);
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
            }
            return content;
        }
        #endregion
    }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -38,7 +38,7 @@
                    #endregion
                    #region æŸ¥æ‰¾æµ·åº·AGV任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.Carry || x.TaskType == (int)TaskTypeEnum.CJCarry || x.TaskType == (int)TaskTypeEnum.CJInbound || x.TaskType == (int)TaskTypeEnum.CJOutbound).OrderByDescending(x => x.Grade).ToList();
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.Carry || x.TaskType == (int)TaskTypeEnum.RK3F || x.TaskType == (int)TaskTypeEnum.CK3F || x.TaskType == (int)TaskTypeEnum.Q1TSJ4 || x.TaskType == (int)TaskTypeEnum.STU0003 || x.TaskType == (int)TaskTypeEnum.F02 || x.TaskType == (int)TaskTypeEnum.CHUKU1 || x.TaskType == (int)TaskTypeEnum.Q3RK || x.TaskType == (int)TaskTypeEnum.Q3CK).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) HIKROBOTTask(Tasks);
                    #endregion
                }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs
@@ -49,9 +49,9 @@
        {
            try
            {
                //SendNewTask();
                SendNewTask();
                //SendWaitToTask();
                SendWaitToTask();
            }
            catch (Exception ex)
            {