1
dengjunjie
2026-03-14 b722c82e469ca7f717ef3526b472b392f5334692
1
已修改6个文件
86 ■■■■ 文件已修改
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/TrackloginfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/GALAXIS/GALAXISTaskInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/TrackloginfoService.cs
@@ -47,6 +47,7 @@
                    //tracklog_content = JsonConvert.SerializeObject(entity),
                    tracklog_content = entity is string strEntity ? strEntity : JsonConvert.SerializeObject(entity),//如果entity是字符串类型,则直接使用,否则序列化为JSON字符串
                    tracklog_createtime = DateTime.Now,
                    Creater = "system",
                    tracklog_type = content.Status ? "成功" : "失败",
                    tracklog_code = content.Status ? logCode : ("4" + logCode),
                    tracklog_des = description,
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/GALAXIS/GALAXISTaskInfo.cs
@@ -13,7 +13,7 @@
    {
        public string groupId { get; set; }
        public string msgTime { get; set; }
        public List<GALAXISTask> tasks { get; set; }
        public List<GALAXISTask> tasks { get; set; }=new List<GALAXISTask>();
    }
    public class GALAXISTask
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -6,7 +6,7 @@
            "Microsoft.AspNetCore": "Warning"
        }
    },
    "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType",
  "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType,TaskStatusEnum,TaskTypeEnum",
    "AllowedHosts": "*",
    "ConnectionStringsEncryption": false,
    "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true 
@@ -17,7 +17,7 @@
    //5.PostgreSQL
    "DBType": "SqlServer",
    //连接字符串
    "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_GP;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
  "ConnectionString": "Data Source=172.16.161.20;Initial Catalog=WIDESEAWCS_GP;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    //跨域
    "Cors": {
        "PolicyName": "CorsIpAccess", //策略名称
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs
@@ -10,6 +10,9 @@
using WIDESEAWCS_Common.LocationEnum;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_DTO;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Core.Helper;
namespace WIDESEAWCS_TaskInfoService
{
@@ -26,12 +29,12 @@
            WebResponseContent content = new WebResponseContent();
            try
            {
                int containerType = taskDTO.containerCode.Contains("LLM") ? LocationTypeEnum.LargePallet.ObjToInt() : LocationTypeEnum.SmallPallet.ObjToInt();
                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 != LocationStatusEnum.Free.ObjToInt()) throw new Exception($"终点货位【{taskDTO.toLocationCode}】货位状态不为空货位");
                    if (LocationInfo.LocationStatus != (int)LocationStatusEnum.Free) throw new Exception($"终点货位【{taskDTO.toLocationCode}】货位状态不为空货位");
                }
                #endregion
                //获取货位信息
@@ -44,7 +47,7 @@
                    Grade = taskDTO.taskPriority,
                    PalletCode = taskDTO.containerCode,
                    Roadway = kLSLocationInfo.RoadwayNo,
                    TaskState = TaskStatusEnum.New.ObjToInt(),
                    TaskState = (int)TaskStatusEnum.New,
                    TaskType = taskType,
                    SourceAddress = taskDTO.fromLocationCode,
                    CurrentAddress = taskDTO.fromLocationCode,
@@ -52,7 +55,12 @@
                    TargetAddress = kLSLocationInfo.LocationCode,
                    Creater = "WMS",
                };
                kLSLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt();
                kLSLocationInfo.LocationStatus = (int)LocationStatusEnum.InLock;
                #region ä¸‹å‘凯乐士任务
                content = SendKLSTask(dt_Task);
                if (!content.Status) throw new Exception(content.Message);
                dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                #endregion
                try
                {
                    Db.Ado.BeginTran();
@@ -94,7 +102,7 @@
            try
            {
                Dt_KLSLocationInfo? kLSLocationInfo = _kLSLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"未找到起点库位【{taskDTO.fromLocationCode}】!");
                if (kLSLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"起点库位【{taskDTO.fromLocationCode}】当前库位状态不可出库!");
                if (kLSLocationInfo.LocationStatus != (int)LocationStatusEnum.InStock) throw new Exception($"起点库位【{taskDTO.fromLocationCode}】当前库位状态不可出库!");
                Dt_Task dt_Task = new()
                {
                    TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
@@ -103,7 +111,7 @@
                    Grade = taskDTO.taskPriority,
                    PalletCode = taskDTO.containerCode,
                    Roadway = kLSLocationInfo.RoadwayNo,
                    TaskState = TaskStatusEnum.New.ObjToInt(),
                    TaskState = (int)TaskStatusEnum.New,
                    TaskType = taskType,
                    SourceAddress = taskDTO.fromLocationCode,
                    CurrentAddress = taskDTO.fromLocationCode,
@@ -111,7 +119,12 @@
                    TargetAddress = taskDTO.toLocationCode,
                    Creater = "WMS",
                };
                kLSLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
                kLSLocationInfo.LocationStatus = (int)LocationStatusEnum.OutLock;
                #region ä¸‹å‘凯乐士任务
                content = SendKLSTask(dt_Task);
                if (!content.Status) throw new Exception(content.Message);
                dt_Task.TaskState = (int)TaskStatusEnum.Execut;
                #endregion
                try
                {
                    Db.Ado.BeginTran();
@@ -142,6 +155,47 @@
        }
        #endregion
        #region ä¸‹å‘凯乐士任务
        public WebResponseContent SendKLSTask(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            GALAXISTaskInfo gALAXISTaskInfo = new();
            GALAXISReturn agvContent = new();
            try
            {
                gALAXISTaskInfo.groupId = DateTime.Now.ToString("yyMMddHHmmss") + task.TaskNum;
                gALAXISTaskInfo.msgTime = DateTime.Now.ToString();
                GALAXISTask gALAXISTask = new GALAXISTask()
                {
                    taskId = task.WMSTaskNum,
                    taskType = task.TaskType == (int)TaskTypeEnum.MLInbound ? 0 : 1,
                    barCode = task.PalletCode,
                    endNode = task.TargetAddress,
                    startNode = task.SourceAddress,
                    priorityCode = task.Grade
                };
                gALAXISTaskInfo.tasks.Add(gALAXISTask);
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GALAXISTaskInfo)) ?? throw new Exception("未找到凯乐士AGV任务下发接口配置信息!请检查接口配置");
                string response = HttpHelper.Post(apiInfo.ApiAddress, gALAXISTaskInfo.Serialize());
                agvContent = response.DeserializeObject<GALAXISReturn>();
                content.OK(data: agvContent);
                if (agvContent.success)
                {
                    if (agvContent.data.returnStatus != 0) throw new Exception(agvContent.data.returnInfo);
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            finally
            {
                _trackloginfoService.AddTrackLog(gALAXISTaskInfo, content, "下发凯乐士AGV任务", "", agvContent.data.returnInfo);
            }
            return content;
        }
        #endregion
        #region 5 è·¨æ¥¼å±‚运输任务创建
        public WebResponseContent CarryTask(TaskDTO taskDTO, int taskType)
        {
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/KLSTaskExtend.cs
@@ -21,6 +21,7 @@
        {
            WebResponseContent content = new WebResponseContent(); // åˆ›å»ºå“åº”对象
            GALAXISTaskInfo gALAXISTaskInfo = new();
            GALAXISReturn agvContent = new();
            try
            {
                gALAXISTaskInfo.groupId = DateTime.Now.ToString("yyMMddHHmmss");
@@ -41,7 +42,7 @@
                }
                Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(GALAXISTaskInfo)) ?? throw new Exception("未找到凯乐士AGV任务下发接口配置信息!请检查接口配置");
                string response = HttpHelper.Post(apiInfo.ApiAddress, gALAXISTaskInfo.Serialize());
                GALAXISReturn agvContent = response.DeserializeObject<GALAXISReturn>();
                agvContent = response.DeserializeObject<GALAXISReturn>();
                content.OK(data: agvContent);
                if (agvContent.success)
                {
@@ -61,7 +62,7 @@
            }
            finally
            {
                _trackloginfoService.AddTrackLog(gALAXISTaskInfo, content, "下发凯乐士AGV任务","","");
                _trackloginfoService.AddTrackLog(gALAXISTaskInfo, content, "下发凯乐士AGV任务", "", agvContent.data.returnInfo);
                //dt_trackloginfoService.Instance.AddTrackLog(outTaskInfo, content, "接收宇航WMS出库任务下发", "", $"{msg},变更结果:{content.Status}");
            }
        }
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs
@@ -26,12 +26,12 @@
                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);
                    //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任务
                    Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.CPInbound).OrderByDescending(x => x.Grade).ToList();
                    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);