1
dengjunjie
2026-03-04 761260f2ac0aa211625c8904cc86fc2400a8adfc
1
已添加1个文件
已修改9个文件
184 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTReturn.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/IQCResultDTO.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -97,16 +97,30 @@
        #region æµ·åº·AGV其他任务状态
        /// <summary>
        /// AGV待继续执行,AGV待进入输送线口
        /// </summary>
        [Description("AGV待继续执行")]
        AGV_WaitToExecute,
        /// <summary>
        /// AGV进入输送线口中
        /// </summary>
        [Description("AGV进入输送线口中")]
        AGV_ToExecute,
        /// <summary>
        /// æ‰˜ç›˜å·ç¡®è®¤ä¸­
        /// </summary>
        [Description("托盘号确认中")]
        CheckPalletCodeing,
        /// <summary>
        /// AGV待继续执行
        /// æ‰˜ç›˜å·ç¡®è®¤å®Œæˆ
        /// </summary>
        [Description("AGV待继续执行")]
        AGV_WaitToExecute,
        [Description("托盘号确认完成")]
        CheckPalletCodeFinish,
        ///// <summary>
        ///// AGV取/放货中
        ///// </summary>
        //[Description("AGV取/放货中")]
        //AGV_ToPuting,
        #endregion
        #region å››å‘车其他任务状态
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTReturn.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -15,8 +16,8 @@
        /// <summary>
        /// è¿”回码
        /// </summary>
        public int code {  get; set; }
        public bool message {  get; set; }
        public string code {  get; set; }
        public string message {  get; set; }
        public object data {  get; set; }
    }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/WMS/IQCResultDTO.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEAWCS_DTO.WMS
{
    /// <summary>
    /// è´¨æ£€ç»“果反馈
    /// </summary>
    public class IQCResultDTO
    {
        /// <summary>
        /// ç«™å°å·
        /// </summary>
        public string StationCode { get; set; }
        /// <summary>
        /// æ–™ç®±æ¡ç 
        /// </summary>
        public string ContainerCode { get; set; }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -274,5 +274,7 @@
        /// <param name="wMSMoveLocationFeedback"></param>
        /// <returns></returns>
        public WebResponseContent WcsMovingDataBack(WMSMoveLocationFeedback wMSMoveLocationFeedback);
        WebResponseContent ContainerRequest(WMSContainerFlow wMSContainerFlow);
        WebResponseContent IQCResult(IQCResultDTO iQC);
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
@@ -150,7 +150,7 @@
        public DateTime? Dispatchertime { get; set; }
        /// <summary>
        /// å¤‡æ³¨
        /// å¤‡æ³¨,海康AGV任务号
        /// </summary>
        [ImporterHeader(Name = "备注")]
        [ExporterHeader(DisplayName = "备注")]
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/WMS/WMSController.cs
@@ -22,10 +22,6 @@
            _stationMangerService = stationMangerService;
        }
        /// <summary>
        /// WMS下发任务
        /// </summary>
@@ -35,6 +31,18 @@
        public WMSReturn ReceiveWMSTask([FromBody] List<WMSTasksDTO> taskDTOs)
        {
            WebResponseContent content = _taskService.ReceiveWMSTask(taskDTOs);
            return WMSReturnMethod.ReturnWMS(content);
        }
        /// <summary>
        /// å®¹å™¨æµåŠ¨è¯·æ±‚
        /// </summary>
        /// <param name="taskDTOs"></param>
        /// <returns></returns>
        [HttpPost, Route("ContainerRequest"), AllowAnonymous]
        public WMSReturn ContainerRequest([FromBody] WMSContainerFlow wMSContainerFlow)
        {
            WebResponseContent content = _taskService.ContainerRequest(wMSContainerFlow);
            return WMSReturnMethod.ReturnWMS(content);
        }
@@ -51,14 +59,14 @@
        }
        /// <summary>
        /// ä¿®æ”¹ä»»åŠ¡ä¼˜å…ˆçº§
        /// è´¨æ£€ç»“果反馈
        /// </summary>
        /// <param name="updateTaskPriority"></param>
        /// <param name="iQC"></param>
        /// <returns></returns>
        [HttpPost, Route("UpdateWMSTaskPriority"), AllowAnonymous]
        public WMSReturn UpdateWMSTaskPriority([FromBody] WMSUpdateTaskPriority updateTaskPriority)
        [HttpPost, Route("IQCResult"), AllowAnonymous]
        public WMSReturn IQCResult([FromBody] IQCResultDTO iQC)
        {
            WebResponseContent content = _taskService.UpdateWMSTaskPriority(updateTaskPriority);
            WebResponseContent content = _taskService.IQCResult(iQC);
            return WMSReturnMethod.ReturnWMS(content);
        }
@@ -67,10 +75,22 @@
        /// </summary>
        /// <param name="WMSUpdateLocationArea"></param>
        /// <returns></returns>
        [HttpPost, Route("ModifyWMSLayoutZone"), AllowAnonymous]
        public WMSReturn ModifyWMSLayoutZone([FromBody] WMSUpdateLocationArea wMSUpdateLocationArea)
        [HttpPost, Route("UpdateArea"), AllowAnonymous]
        public WMSReturn UpdateArea([FromBody] WMSUpdateLocationArea wMSUpdateLocationArea)
        {
            WebResponseContent content = _taskService.ModifyWMSLayoutZone(wMSUpdateLocationArea);
            return WMSReturnMethod.ReturnWMS(content);
        }
        /// <summary>
        /// ä¿®æ”¹ä»»åŠ¡ä¼˜å…ˆçº§
        /// </summary>
        /// <param name="updateTaskPriority"></param>
        /// <returns></returns>
        [HttpPost, Route("UpdateTaskGrade"), AllowAnonymous]
        public WMSReturn UpdateTaskGrade([FromBody] WMSUpdateTaskPriority updateTaskPriority)
        {
            WebResponseContent content = _taskService.UpdateWMSTaskPriority(updateTaskPriority);
            return WMSReturnMethod.ReturnWMS(content);
        }
@@ -79,8 +99,8 @@
        /// </summary>
        /// <param name="AreaCode">区域号</param>
        /// <returns></returns>
        [HttpPost, Route("LocationInquiry"), AllowAnonymous]
        public WMSReturn LocationInquiry(string AreaCode)
        [HttpPost, Route("QueryStation"), AllowAnonymous]
        public WMSReturn QueryStation(string AreaCode)
        {
            WebResponseContent content = _taskService.LocationInquiry(AreaCode);
            return WMSReturnMethod.ReturnWMS(content);
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -33,7 +33,7 @@
    "DBSeedEnable": false,
    "QuartzDBSeedEnable": false,
    "LogDeubgEnable": true, //是否记录调试日志
    "PrintSql": true, //打印SQL语句
    "PrintSql": false, //打印SQL语句
    "LogAOPEnable": true, //是否记录AOP日志
    "WebSocketEnable": true, //是否开启WebSocket服务
    "WebSocketPort": 9296 //WebSocket服务端口
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -966,5 +966,15 @@
        {
            throw new NotImplementedException();
        }
        public WebResponseContent ContainerRequest(WMSContainerFlow wMSContainerFlow)
        {
            throw new NotImplementedException();
        }
        public WebResponseContent IQCResult(IQCResultDTO iQC)
        {
            throw new NotImplementedException();
        }
    }
}
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs
@@ -5,7 +5,10 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.AGV.HIKROBOT;
using WIDESEAWCS_DTO.RGV.FOURBOT;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_Tasks
@@ -13,25 +16,73 @@
    public partial class TaskJob
    {
        #region å¤„理海康AGV任务
        /// <summary>
        /// å¤„理海康不同类型的任务,进行不同的业务逻辑处理(配套任务:修改平库货位信息/换层任务记录小车信息(小车位置层);出入库任务处理库位信息)
        /// </summary>
        /// <param name="tasks"></param>
        public void HIKROBOTTask(List<Dt_Task> tasks)
        {
            foreach (var item in tasks)
            {
                SendHIKROBOTTask(item);
                var content = SendHIKROBOTTask(item);
            }
        }
        #endregion
        #region å¤„理海康待继续执行任务
        public void SendAGVWaitToExecuteTask(List<Dt_Task> tasks)
        {
            foreach (var item in tasks)
            {
                var content = SendHIKROBOTTask(item);
            }
        }
        #endregion
        #region ä¸‹å‘海康AGV任务
        public void SendHIKROBOTTask(Dt_Task task)
        public WebResponseContent SendHIKROBOTTask(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            HIKROBOTTaskSubmit hIKROBOTTaskSubmit = new HIKROBOTTaskSubmit();
            try
            {
                hIKROBOTTaskSubmit.taskType = "";
                hIKROBOTTaskSubmit.targetRoute = new List<TargetRouteDto> { new TargetRouteDto() };
                hIKROBOTTaskSubmit.initPriority = task.Grade;
                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)
            {
@@ -41,6 +92,7 @@
            {
            }
            return content;
        }
        #endregion
    }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -85,8 +85,14 @@
                if (Tasks.Count > 0) SendOutTask(Tasks);
                #endregion
                #region ä¸‹å‘托盘确认的海康AGV任务
                #region ä¸‹å‘外设允许进入的海康AGV任务
                Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.AGV_WaitToExecute).ToList();
                if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                #endregion
                #region ä¸‹å‘托盘确认完成的海康AGV任务
                Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish).ToList();
                if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
                #endregion
            }
            catch (Exception ex)