yanjinhui
2026-03-24 4bdc37291d784008cea7fb9d105077b65a12beb9
job优化
已添加2个文件
已修改7个文件
369 ■■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs 171 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/与上游系统接口清单/WMS接口对接文档_V2026324.docx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/与设备交互接口/海康AGV/高普WCS.海康协议260323-1.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -91,6 +91,17 @@
        /// </summary>
        [Description("成品移库")]
        CPMoveInventory,
        /// <summary>
        /// çº¿è¾¹åˆ°æå‡æœº
        /// </summary>
        [Description("线边到提升机")]
        F04,
        /// <summary>
        /// æå‡æœºåˆ°çº¿è¾¹
        /// </summary>
        [Description("提升机到线边")]
        F03,
    }
    public enum TaskInboundTypeEnum
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs
@@ -181,7 +181,7 @@
                // åˆ›å»ºHeaders字典
                var headers = new Dictionary<string, string>
                {
                    { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() }
                    { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString()+task.TaskNum }
                    // å¦‚果需要其他Header,可以继续添加
                    // { "Content-Type", "application/json" }
                };
@@ -221,7 +221,7 @@
            HIKROBOTTaskSubmit hIKROBOTTaskSubmit = new HIKROBOTTaskSubmit();
            try
            {
                var tasktype = (TaskTypeEnum)Enum.GetValues(typeof(TaskTypeEnum)).GetValue(task.TaskType-1);
                var tasktype = (TaskTypeEnum)Enum.GetValues(typeof(TaskTypeEnum)).GetValue(task.TaskType - 1);
                hIKROBOTTaskSubmit.initPriority = task.Grade;
                hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum;
@@ -245,6 +245,8 @@
                    case TaskTypeEnum.RK3F:
                    case TaskTypeEnum.CK3F:
                    case TaskTypeEnum.F02:
                    case TaskTypeEnum.F03:
                    case TaskTypeEnum.F04:
                        {
                            TargetRouteDto target = new TargetRouteDto()
                            {
@@ -330,11 +332,11 @@
        /// </summary>
        /// <param name="TaskCode">任务号</param>
        /// <returns></returns>
        public WebResponseContent Hikvisiontaskscontinue(string TaskCode,string Address=null)
        public WebResponseContent Hikvisiontaskscontinue(string TaskCode, string Address = null)
        {
            WebResponseContent content = new WebResponseContent();
            HIKROBOTReturn hIKROBOTReturn = null;
            HIKROBOTTaskContinue hIKROBOTTaskContinue =null;
            HIKROBOTTaskContinue hIKROBOTTaskContinue = null;
            try
            {
                // 1. å‚数验证
@@ -346,8 +348,8 @@
                hIKROBOTTaskContinue = new HIKROBOTTaskContinue()
                {
                    triggerCode = TaskCode,
                    triggerType="TASK",//固定值
                    targetRoute=string.IsNullOrEmpty(Address)?null:
                    triggerType = "TASK",//固定值
                    targetRoute = string.IsNullOrEmpty(Address) ? null :
                    new TargetRouteDto()
                    {
                        code = Address,
@@ -356,11 +358,11 @@
                };
                var headers = new Dictionary<string, string>
                {
                    { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() }
                    { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString()+TaskCode }
                };
                string response = HttpHelper.Post(apiInfo.ApiAddress, hIKROBOTTaskContinue.Serialize(),headers: headers);
                string response = HttpHelper.Post(apiInfo.ApiAddress, hIKROBOTTaskContinue.Serialize(), headers: headers);
                hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
                if (hIKROBOTReturn.code == "SUCCESS")
                {
                    var data = hIKROBOTReturn.data.ToString().DeserializeObject<HIKROBOTReturnData>();
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -83,7 +83,6 @@
                            break;
                        case "outbin"://离开起点
                            {
                                ///判断任务是否跟设备有关
                                TaskFromCompleted(task, deviceTypeEnum);
                            }
@@ -100,27 +99,27 @@
                                    {
                                        DeviceProDTO? deviceProDTO = device.DeviceProDTOs.FirstOrDefault((DeviceProDTO x) => x.DeviceProParamName == HoistEnum.Inboundboxon.ToString());
                                        if (device.IsConnected)
                                            device.SetValue(HoistEnum.Inboundboxon, 1);//
                                            device.SetValue(HoistEnum.Inboundboxon, 1);
                                        else
                                            task.ExceptionMessage = "提升机信息设备连接失败";
                                    }
                                }
                                //出提升机
                                if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                {
                                    var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                                    if (device == null) task.ExceptionMessage = "未找到提升机信息";
                                    else
                                    {
                                        if (device.IsConnected)
                                            device.SetValue(HoistEnum.Outboundboxon,1);//出库完成
                                            device.SetValue(HoistEnum.Outboundboxon, 1);//出库完成
                                        else
                                            task.ExceptionMessage = "提升机信息设备连接失败";
                                    }
                                }
                                //四楼 å‡ºåº“
                                if (task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                {
                                    var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                                    if (device == null) task.ExceptionMessage = "未找到提升机信息";
@@ -130,10 +129,10 @@
                                            device.SetValue(HoistEnum.Emptyboxplacedinposition, 1);
                                        else
                                            task.ExceptionMessage = "提升机信息设备连接失败";
                                    }
                                    }
                                }
                                //四楼 å…¥åº“
                                if (task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
                                {
                                    var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                                    if (device == null) task.ExceptionMessage = "未找到提升机信息";
@@ -141,10 +140,10 @@
                                    {
                                        if (device.IsConnected)
                                            //写以一个出库完成信号
                                            device.SetValue(HoistEnum.Outboundboxretrievalcompleted,"1",task.SourceAddress);
                                            device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress);
                                        else
                                            task.ExceptionMessage = "提升机信息设备连接失败";
                                    }
                                    }
                                }
                            }
                            break;
@@ -163,7 +162,6 @@
                        case "end"://任务完成通知
                            {
                                ///判断任务是否跟设备有关
                                TaskCompleted(task, deviceTypeEnum);
                            }
                            break;
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -130,7 +130,7 @@
                            continue;
                            //throw new Exception($"托盘号【{task.containerCode}】已存在任务");
                        }
                        if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType) != null)
                        if (BaseDal.QueryFirst(x => x.SourceAddress == task.fromLocationCode && x.TaskType == item.taskType&&x.TaskState<TaskStatusEnum.TakeFinish.ObjToInt())!=null)
                        {
                            objects.Add(new
                            {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs
@@ -69,7 +69,7 @@
                            continue;
                            //throw new Exception("设备故障");
                        }
                        if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt()|| task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt())
                        if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt() || task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt())
                        {
                            if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt())
                            {
@@ -87,21 +87,15 @@
                            }
                            else
                            {
                                #region 4楼入库
                                //4楼出库料箱到位
                                if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, task.SourceAddress) != 1)
                                if (device.GetValue<HoistEnum, short>(HoistEnum.ReturnbinAvailable, task.TargetAddress) != 2)
                                {
                                    if (task.ExceptionMessage != "4楼入库料箱没有到位")
                                    if (task.ExceptionMessage != "4F提升机入口有货")
                                    {
                                        task.ExceptionMessage = "4楼入库料箱没有到位";
                                        task.ExceptionMessage = "4F提升机入口有货";
                                        Uptasks.Add(task);
                                    }
                                    continue;
                                }
                                #endregion
                            }
@@ -109,7 +103,7 @@
                            var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum);
                            if (result.Status == false)
                            {
                                if (task.ExceptionMessage!= result.Message)
                                if (task.ExceptionMessage != result.Message)
                                {
                                    task.ExceptionMessage = result.Message;
                                    Uptasks.Add(task);
@@ -123,62 +117,36 @@
                            //这里任务变成了CheckPalletCodeing
                        }
                        else if(task.TaskType == TaskTypeEnum.CK3F.ObjToInt()) //出库
                        else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() || task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) //出库
                        {
                            ////出库料箱缓存数量(这个是库区查询的时候要查一下,返给wms)
                            //if (device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJ") == 0) throw new Exception("没有出库料箱缓存数量为空");
                            //读取3楼出库料箱到位
                            if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, task.SourceAddress) != 1)
                            if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt())
                            {
                                if (task.ExceptionMessage != "3楼出库料箱没有到位")
                                //读取3楼出库料箱到位
                                if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, task.SourceAddress) != 1)
                                {
                                    task.ExceptionMessage = "3楼出库料箱没有到位";
                                    Uptasks.Add(task);
                                    if (task.ExceptionMessage != "3楼提升机出口光电反馈无货")
                                    {
                                        task.ExceptionMessage = "3楼提升机出口光电反馈无货";
                                        Uptasks.Add(task);
                                    }
                                    continue;
                                }
                                continue;
                            }
                            //然后调用输送线接口,通知输送线有料箱需要入库,任务举行执行
                            var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum);
                            if (result.Status == false)
                            else
                            {
                                if (task.ExceptionMessage != result.Message)
                                if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, task.SourceAddress) != 1)
                                {
                                    task.ExceptionMessage = result.Message;
                                    Uptasks.Add(task);
                                    if (task.ExceptionMessage != "4楼提升机出口光电反馈无货")
                                    {
                                        task.ExceptionMessage = "4楼提升机出口光电反馈无货";
                                        Uptasks.Add(task);
                                    }
                                    continue;
                                }
                                continue;
                            }
                            task.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
                            task.ExceptionMessage = "";
                            Uptasks.Add(task);
                        }
                        else if (task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt())//4楼出库任务
                        {
                            #region å‡ºåº“信号
                            //回空箱的时候要读一个吗
                            if (device.GetValue<HoistEnum, string>(HoistEnum.Emptycontainernumber, task.TargetAddress) == null)
                            {
                                if (task.ExceptionMessage != "4楼空箱,读码器没有读到值")
                                {
                                    task.ExceptionMessage = "4楼空箱,读码器没有读到值";
                                    Uptasks.Add(task);
                                }
                                continue;
                            }
                            //判断4楼空箱到位
                            if (device.GetValue<HoistEnum, short>(HoistEnum.ReturnbinAvailable, task.TargetAddress) != 2)
                            {
                                if (task.ExceptionMessage != "提升机入库空无货")
                                {
                                    task.ExceptionMessage = "提升机入库空无货";
                                    Uptasks.Add(task);
                                }
                                continue;
                            }
                            #endregion
                            //然后调用输送线接口,通知输送线有料箱需要入库,任务举行执行
                            var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum);
                            if (result.Status == false)
@@ -190,21 +158,17 @@
                                }
                                continue;
                            }
                            task.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
                            task.ExceptionMessage = "";
                            Uptasks.Add(task);
                        }
                        //else if (task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt()) //四楼库内到提升机
                        //{
                        //}
                    }
                    #region æ‰˜ç›˜å·ç¡®è®¤ä¸­
                    //查找三楼入库任务状态为CheckPalletCodeing的任务托盘号确认中
                    var RK3FTasks = _taskService.Repository.QueryFirst(x => x.TaskType == TaskTypeEnum.RK3F.ObjToInt() && x.TaskState == (int)TaskStatusEnum.CheckPalletCodeing);
                    if (RK3FTasks!=null)
                    if (RK3FTasks != null)
                    {
                        var Barcode = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1);
                        //检查3楼入库箱号是多少,然后传给wms
@@ -235,6 +199,7 @@
                        RK3FTasks.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish;
                        Uptasks.Add(RK3FTasks);
                    }
                    #endregion
                    if (Uptasks.Count > 0)
                    {
                        _taskService.UpdateData(Uptasks);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs
@@ -39,10 +39,10 @@
            try
            {
                #region ä¸‰æ¥¼è‡ªåŠ¨ä»»åŠ¡
                List<string> StationCodes = new() { "0321935CC0329515", "0321935CC0329015", "0321935CC0328485", "0321935CC0328005" };
                List<string> StationCodes = new() { "0348840CC0315655", "0349350CC0315655" };
                var stations = _StationInfoService.Repository.QueryData(x => StationCodes.Contains(x.StationCode));
                #region å…¥æå‡æœºä»»åŠ¡
                var station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock);
                var station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
                if (station != null)
                {
                    var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
@@ -79,10 +79,10 @@
                {
                    if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, "TSJC3F") == 1)
                    {
                        Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC3F");
                        Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC3F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
                        if (dt_Task == null)
                        {
                            station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free);
                            station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
                            if (station != null)
                            {
                                var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
@@ -118,8 +118,89 @@
                #endregion
                #region 4F
                List<string> stationCodes = new() { "0319882DD0312730", "0319882DD0313240" };
                var Stations = _StationInfoService.Repository.QueryData(x => stationCodes.Contains(x.StationCode));
                #region å…¥æå‡æœºä»»åŠ¡
                var Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
                if (Station != null)
                {
                    var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
                    Dt_Task dt_Task = new Dt_Task()
                    {
                        TaskNum = tasknum,
                        WMSTaskNum = "GP" + tasknum,
                        Grade = 60,
                        PalletCode = Station.PalletCode,
                        Roadway = "",
                        TaskState = (int)TaskStatusEnum.New,
                        TaskType = TaskTypeEnum.F04.ObjToInt(),
                        SourceAddress = Station.StationCode,
                        CurrentAddress = Station.StationCode,
                        NextAddress = "TSJR4F",
                        TargetAddress = "TSJR4F",
                        Creater = "WCS",
                    };
                    var content = _taskService.SendHIKROBOTTask(dt_Task);
                    if (content.Status)
                    {
                        dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                        dt_Task.Dispatchertime = DateTime.Now;
                        Station.StationStatus = (int)LocationStatusEnum.OutLock;
                        _taskService.AddData(dt_Task);
                        _StationInfoService.UpdateData(Station);
                    }
                }
                #endregion
                #region å‡ºæå‡æœºä»»åŠ¡
                device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
                if (device != null && device.IsConnected)
                {
                    if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
                    {
                        Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
                        if (dt_Task == null)
                        {
                            Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
                            if (Station != null)
                            {
                                var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
                                dt_Task = new Dt_Task()
                                {
                                    TaskNum = tasknum,
                                    WMSTaskNum = "GP" + tasknum,
                                    Grade = 60,
                                    PalletCode = "LXM" + tasknum,
                                    Roadway = "",
                                    TaskState = (int)TaskStatusEnum.New,
                                    TaskType = TaskTypeEnum.F03.ObjToInt(),
                                    SourceAddress = "TSJC4F",
                                    CurrentAddress = "TSJC4F",
                                    NextAddress = Station.StationCode,
                                    TargetAddress = Station.StationCode,
                                    Creater = "WCS",
                                };
                                var content = _taskService.SendHIKROBOTTask(dt_Task);
                                if (content.Status)
                                {
                                    dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                                    dt_Task.Dispatchertime = DateTime.Now;
                                    Station.StationStatus = (int)LocationStatusEnum.InLock;
                                    _taskService.AddData(dt_Task);
                                    _StationInfoService.UpdateData(Station);
                                }
                            }
                        }
                    }
                }
                #endregion
                #endregion
                #region å››æ¥¼è‡ªåŠ¨ä»»åŠ¡
                List<string> LocationCodes = new() { "RGD0303A04041","RG0302A05041","RG0304A05041","RG0205A05031" };
                //List<string> LocationCodes = new() { "RGD0303A04041", "RG0302A05041", "RG0304A05041", "RG0205A05031" };
                List<string> LocationCodes = new() { "RGD0302A05041", "RGD0304A05041", "R3CG0106A04031", "RGD0307A05012" };
                var hKLocationInfos = _HKLocationInfoService.Repository.QueryData(x => LocationCodes.Contains(x.LocationCode));
                #region å…¥æå‡æœºä»»åŠ¡
                var hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.InStock);
@@ -154,46 +235,46 @@
                #endregion
                #region å‡ºæå‡æœºä»»åŠ¡
                if (device != null && device.IsConnected)
                {
                    if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
                    {
                        Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F");
                        if (dt_Task == null)
                        {
                            hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.Free);
                            if (hKLocation != null)
                            {
                                var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
                                 dt_Task = new Dt_Task()
                                {
                                    TaskNum = tasknum,
                                    WMSTaskNum = "GP" + tasknum,
                                    Grade = 60,
                                    PalletCode = "LXM" + tasknum,
                                    Roadway = "",
                                    TaskState = (int)TaskStatusEnum.New,
                                    TaskType = TaskTypeEnum.Q1TSJ4.ObjToInt(),
                                    SourceAddress = "TSJC4F",
                                    CurrentAddress = "TSJC4F",
                                    NextAddress = hKLocation.LocationCode,
                                    TargetAddress = hKLocation.LocationCode,
                                    Creater = "WCS",
                                };
                                var content = _taskService.SendHIKROBOTTask(dt_Task);
                                if (content.Status)
                                {
                                    dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                                    dt_Task.Dispatchertime = DateTime.Now;
                                    hKLocation.LocationStatus = (int)LocationStatusEnum.InLock;
                                    _taskService.AddData(dt_Task);
                                    _HKLocationInfoService.UpdateData(hKLocation);
                                }
                            }
                        }
                    }
                }
                //if (device != null && device.IsConnected)
                //{
                //    if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
                //    {
                //        Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F");
                //        if (dt_Task == null)
                //        {
                //            hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.Free);
                //            if (hKLocation != null)
                //            {
                //                var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
                //                dt_Task = new Dt_Task()
                //                {
                //                    TaskNum = tasknum,
                //                    WMSTaskNum = "GP" + tasknum,
                //                    Grade = 60,
                //                    PalletCode = "LXM" + tasknum,
                //                    Roadway = "",
                //                    TaskState = (int)TaskStatusEnum.New,
                //                    TaskType = TaskTypeEnum.Q1TSJ4.ObjToInt(),
                //                    SourceAddress = "TSJC4F",
                //                    CurrentAddress = "TSJC4F",
                //                    NextAddress = hKLocation.LocationCode,
                //                    TargetAddress = hKLocation.LocationCode,
                //                    Creater = "WCS",
                //                };
                //                var content = _taskService.SendHIKROBOTTask(dt_Task);
                //                if (content.Status)
                //                {
                //                    dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                //                    dt_Task.Dispatchertime = DateTime.Now;
                //                    hKLocation.LocationStatus = (int)LocationStatusEnum.InLock;
                //                    _taskService.AddData(dt_Task);
                //                    _HKLocationInfoService.UpdateData(hKLocation);
                //                }
                //            }
                //        }
                //    }
                //}
                #endregion
                #endregion
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -20,33 +20,33 @@
        /// </summary>
        public void SendNewTask()
        {
            try
            {
                var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.New).ToList();
                if (newTasks.Count > 0)
                {
                    #region æŸ¥æ‰¾å‡¯ä¹å£«ä»»åŠ¡
                    //var Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.MLInbound || x.TaskType == (int)TaskTypeEnum.MLOutbound).OrderByDescending(x => x.Grade).ToList();
                    //if (Tasks.Count > 0) SendGALAXISTask(Tasks);
                    #endregion
            //try
            //{
            //    var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.New).ToList();
            //    if (newTasks.Count > 0)
            //    {
            //        #region æŸ¥æ‰¾å‡¯ä¹å£«ä»»åŠ¡
            //        //var Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.MLInbound || x.TaskType == (int)TaskTypeEnum.MLOutbound).OrderByDescending(x => x.Grade).ToList();
            //        //if (Tasks.Count > 0) SendGALAXISTask(Tasks);
            //        #endregion
                    #region æŸ¥æ‰¾RGV任务
                    var Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendRGVNewInTask(Tasks);
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) IsMoveTask(Tasks);
                    #endregion
            //        #region æŸ¥æ‰¾RGV任务
            //        var Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).OrderByDescending(x => x.Grade).ToList();
            //        if (Tasks.Count > 0) SendRGVNewInTask(Tasks);
            //        Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPOutbound).OrderByDescending(x => x.Grade).ToList();
            //        if (Tasks.Count > 0) IsMoveTask(Tasks);
            //        #endregion
                    #region æŸ¥æ‰¾æµ·åº·AGV任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.F01 || 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
                }
            }
            catch (Exception ex)
            {
                WriteError(nameof(TaskJob), ex.Message, ex);
            }
            //        #region æŸ¥æ‰¾æµ·åº·AGV任务
            //        Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.F01 || 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
            //    }
            //}
            //catch (Exception ex)
            //{
            //    WriteError(nameof(TaskJob), ex.Message, ex);
            //}
        }
        #endregion
@@ -94,13 +94,13 @@
                    #endregion
                    #region ä¸‹å‘外设允许进入的海康AGV任务
                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.AGV_WaitToExecute).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    //Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.AGV_WaitToExecute).OrderByDescending(x => x.Grade).ToList();
                    //if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    #endregion
                    #region ä¸‹å‘托盘确认完成的海康AGV任务
                    Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish).OrderByDescending(x => x.Grade).ToList();
                    if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    //Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish).OrderByDescending(x => x.Grade).ToList();
                    //if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                    #endregion
                }
            }
ÏîÄ¿×ÊÁÏ/ÓëÉÏÓÎϵͳ½Ó¿ÚÇåµ¥/WMS½Ó¿Ú¶Ô½ÓÎĵµ_V2026324.docx
Binary files differ
ÏîÄ¿×ÊÁÏ/ÓëÉ豸½»»¥½Ó¿Ú/º£¿µAGV/¸ßÆÕWCS.º£¿µÐ­Òé260323-1.xlsx
Binary files differ