From d14030746fcd0310d3c9b028fe2c0a5b78984eb6 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 21 四月 2026 19:44:16 +0800
Subject: [PATCH] Merge branch 'dev' of http://115.159.85.185:8098/r/SuZhouGuanHong/ShanMeiXinNengYuan into dev

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs |   76 +++++++++++++++++++++++++++++++++-----
 1 files changed, 66 insertions(+), 10 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
index 5ff1ed7..1e60a39 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RobotTaskService.cs
@@ -20,7 +20,9 @@
 using MapsterMapper;
 using Microsoft.Extensions.Configuration;
 using Newtonsoft.Json;
+using Serilog;
 using SqlSugar;
+using System.Diagnostics;
 using System.Diagnostics.CodeAnalysis;
 using WIDESEA_Core;
 using WIDESEAWCS_Common.HttpEnum;
@@ -28,6 +30,7 @@
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseServices;
 using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_Core.Utilities;
 using WIDESEAWCS_DTO.Stock;
 using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_ITaskInfoRepository;
@@ -35,6 +38,7 @@
 using WIDESEAWCS_Model.Models;
 using WIDESEAWCS_QuartzJob;
 using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_Tasks;
 
 namespace WIDESEAWCS_TaskInfoService
 {
@@ -43,6 +47,7 @@
         private readonly IMapper _mapper;
         private readonly HttpClientHelper _httpClientHelper;
         private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+        private readonly ILogger _logger;
 
         private Dictionary<string, OrderByType> _taskOrderBy = new()
             {
@@ -59,11 +64,12 @@
 
         public List<int> TaskRobotTypes => typeof(TaskOtherTypeEnum).GetEnumIndexList();
 
-        public RobotTaskService(IRobotTaskRepository BaseDal, IMapper mapper, HttpClientHelper httpClientHelper, ITaskExecuteDetailService taskExecuteDetailService) : base(BaseDal)
+        public RobotTaskService(IRobotTaskRepository BaseDal, IMapper mapper, HttpClientHelper httpClientHelper, ITaskExecuteDetailService taskExecuteDetailService, ILogger logger) : base(BaseDal)
         {
             _mapper = mapper;
             _httpClientHelper = httpClientHelper;
             _taskExecuteDetailService = taskExecuteDetailService;
+            _logger = logger;
         }
 
         public WebResponseContent ReceiveWMSTask([NotNull] WMSTaskDTO taskDTO, StockDTO stockDTO)
@@ -79,18 +85,18 @@
                 Dt_RobotTask task = new Dt_RobotTask
                 {
                     RobotTaskNum = taskDTO.TaskNum,
-                    RobotSourceAddressLineCode = stockDTO.SourceLineNo,
-                    RobotTargetAddressLineCode = stockDTO.TargetLineNo,
-                    RobotRoadway = stockDTO.Roadway,
+                    RobotSourceAddressLineCode = stockDTO?.SourceLineNo ?? string.Empty,
+                    RobotTargetAddressLineCode = stockDTO?.TargetLineNo ?? string.Empty,
+                    RobotRoadway = stockDTO?.Roadway ?? string.Empty,
                     RobotSourceAddress = taskDTO.SourceAddress,
                     RobotTargetAddress = taskDTO.TargetAddress,
-                    RobotSourceAddressPalletCode = stockDTO.SourcePalletNo,
-                    RobotTargetAddressPalletCode = stockDTO.TargetPalletNo,
+                    RobotSourceAddressPalletCode = stockDTO?.SourcePalletNo ?? string.Empty,
+                    RobotTargetAddressPalletCode = stockDTO?.TargetPalletNo ?? string.Empty,
                     RobotTaskType = taskDTO.TaskType,
                     RobotTaskState = taskDTO.TaskStatus,
                     RobotGrade = taskDTO.Grade,
                     Creater = "WMS",
-                    RobotTaskTotalNum = 0,
+                    RobotTaskTotalNum = taskDTO.TaskQuantity,
                 };
 
                 BaseDal.AddData(task);
@@ -130,13 +136,20 @@
         {
             string configKey = ResolveRobotTaskConfigKey(task.TargetAddress);
             StockDTO stock = BuildRobotTaskStock(task, configKey);
+            string requestParam = stock.ToJson();
+            var stopwatch = Stopwatch.StartNew();
 
-            var result = _httpClientHelper.Post<WebResponseContent>(configKey, stock.ToJson());
-
+            var result = _httpClientHelper.Post<WebResponseContent>(configKey, requestParam);
+            stopwatch.Stop();
             if (!result.IsSuccess || !result.Data.Status)
+            {
+                QuartzLogHelper.LogError(_logger, $"璋冪敤WMS鎺ュ彛澶辫触,鎺ュ彛:銆恵configKey}銆�,璇锋眰鍙傛暟:銆恵requestParam}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�", "RobotTaskService");
                 return WebResponseContent.Instance.Error($"鑾峰彇WMS绯荤粺鏈烘鎵嬩换鍔″け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,鐩爣鍦板潃:銆恵task.TargetAddress}銆�,鎺ュ彛:銆恵configKey}銆�,閿欒淇℃伅:銆恵result.Data?.Message}銆�");
+            }
 
-            var wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result.Data.Data?.ToString() ?? string.Empty);
+            QuartzLogHelper.LogInfo(_logger, $"璋冪敤WMS鎺ュ彛鎴愬姛,鎺ュ彛:銆恵configKey}銆�,鍝嶅簲鏁版嵁:銆恵result.Data?.Data}銆�,鑰楁椂:{stopwatch.ElapsedMilliseconds}ms", "RobotTaskService");
+
+            var wMSTask = JsonConvert.DeserializeObject<WMSTaskDTO>(result?.Data?.Data?.ToString() ?? string.Empty);
             if (wMSTask == null)
                 return WebResponseContent.Instance.Error($"鑾峰彇WMS绯荤粺鏈烘鎵嬩换鍔″け璐�,浠诲姟鍙�:銆恵task.TaskNum}銆�,鎵樼洏鍙�:銆恵task.PalletCode}銆�,閿欒淇℃伅:銆怶MS鏈繑鍥炴湁鏁堜换鍔℃暟鎹��");
 
@@ -234,6 +247,49 @@
             return stock;
         }
 
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            try
+            {
+                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)
+                {
+                    return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+                }
+
+                string validResult = typeof(Dt_RobotTask).ValidateDicInEntity(saveModel.MainData, true, TProperties);
+                if (!string.IsNullOrEmpty(validResult))
+                {
+                    return WebResponseContent.Instance.Error(validResult);
+                }
+
+                object? taskNumObj = saveModel.MainData[nameof(Dt_RobotTask.RobotTaskNum)];
+                if (taskNumObj != null)
+                {
+                    int taskNum = Convert.ToInt32(taskNumObj);
+                    if (BaseDal.QueryFirst(x => x.RobotTaskNum == taskNum) != null)
+                    {
+                        return WebResponseContent.Instance.Error($"浠诲姟缂栧彿 {taskNum} 宸插瓨鍦�");
+                    }
+                }
+
+                Dt_RobotTask entity = saveModel.MainData.DicToModel<Dt_RobotTask>();
+                entity.Creater = "鎵嬪姩鍒涘缓";
+                entity.CreateDate = DateTime.Now;
+
+                if (saveModel.DetailData == null || saveModel.DetailData.Count == 0)
+                {
+                    BaseDal.AddData(entity);
+                    return WebResponseContent.Instance.OK("鏂板鎴愬姛", entity);
+                }
+
+                return base.AddData(saveModel);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error($"鏂板澶辫触,閿欒淇℃伅:{ex.Message}");
+            }
+        }
+
         /// <summary>
         /// 鏍规嵁鐩爣鍦板潃鎸夈�岀簿纭� > 鍥為��鍊笺�嶈В鏋愯鍒欏�笺��
         /// </summary>

--
Gitblit v1.9.3