From 00e64cba66377cb75c9c947908627fe9f631746e Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期三, 21 一月 2026 13:53:14 +0800
Subject: [PATCH] '手动上传'

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  142 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 134 insertions(+), 8 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 482a45b..4c5f053 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -15,7 +15,10 @@
  *----------------------------------------------------------------*/
 #endregion << 鐗� 鏈� 娉� 閲� >>
 
+using Autofac.Core;
 using AutoMapper;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Logging;
 using Org.BouncyCastle.Math.EC;
 using SixLabors.ImageSharp;
@@ -96,6 +99,75 @@
             return WebResponseContent.Instance.OK();
         }
 
+        public WebResponseContent MESManualUpload(SaveModel saveModel)
+        {
+            WebResponseContent response = new WebResponseContent();
+
+            try
+            {
+                foreach (var key in saveModel.DelKeys)
+                {
+                    int taskId = int.Parse(key.ToString());
+                    Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId);
+
+                    WebResponseContent taskResult = ProcessTask(task);
+                    if (!taskResult.Status)
+                    {
+                        return taskResult;
+                    }
+                }
+
+                return response.OK("鎵�鏈変换鍔″鐞嗘垚鍔�");
+            }
+            catch (Exception ex)
+            {
+                return response.Error($"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
+            }
+        }
+
+        private WebResponseContent ProcessTask(Dt_Task task)
+        {
+            WebResponseContent response = new WebResponseContent();
+
+            switch ((TaskTypeEnum)task.TaskType)
+            {
+                case TaskTypeEnum.Inbound:
+                    if (task.TaskStatus != (int)InTaskStatusEnum.InPLCException &&
+                        task.TaskStatus != (int)InTaskStatusEnum.InSCException)
+                    {
+                        return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                    }
+                    return HandleInboundTask(task, 
+                        GetWcsType(task.TaskStatus,
+                        (int)InTaskStatusEnum.InPLCException,
+                        (int)InTaskStatusEnum.InSCException)
+                        );
+
+                case TaskTypeEnum.Outbound:
+                    if (task.TaskStatus != (int)OutTaskStatusEnum.OutPLCException &&
+                        task.TaskStatus != (int)OutTaskStatusEnum.OutSCException)
+                    {
+                        return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode}");
+                    }
+                    return HandleOutboundTask(task, GetWcsType(task.TaskStatus,
+                        (int)OutTaskStatusEnum.OutPLCException,
+                        (int)OutTaskStatusEnum.OutSCException));
+
+                case TaskTypeEnum.Relocation:
+                    return HandleRelocationTask(task, 2);
+
+                default:
+                    return response.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},绫诲瀷锛歿task.TaskType}");
+            }
+        }
+
+        private int GetWcsType(int taskStatus, int plcStatus, int scStatus)
+        {
+            if (taskStatus == plcStatus) return 1;
+            if (taskStatus == scStatus) return 2;
+            return 0;
+        }
+
 
         /// <summary>
         /// 浠诲姟瀹屾垚鎺ュ彛
@@ -110,15 +182,27 @@
                 Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode);
                 if (task == null)
                     return webResponse.Error("鏈壘鍒颁换鍔′俊鎭�");
+                return TaskCompletedtask(task, wCSTask.TaskType);
+            }
+            catch (Exception ex)
+            {
+                return webResponse.Error($"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
+            }
+        }
 
+        public WebResponseContent TaskCompletedtask(Dt_Task task,int wcstype)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            try
+            {
                 switch ((TaskTypeEnum)task.TaskType)
                 {
                     case TaskTypeEnum.Inbound:
-                        return HandleInboundTask(task, wCSTask.TaskType);
+                        return HandleInboundTask(task, wcstype);
                     case TaskTypeEnum.Outbound:
-                        return HandleOutboundTask(task, wCSTask.TaskType);
+                        return HandleOutboundTask(task, wcstype);
                     case TaskTypeEnum.Relocation:
-                        return HandleRelocationTask(task, wCSTask.TaskType);
+                        return HandleRelocationTask(task, wcstype);
                     default:
                         return webResponse.Error($"浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},绫诲瀷锛歿task.TaskType}");
                 }
@@ -128,6 +212,8 @@
                 return webResponse.Error($"WMS浠诲姟瀹屾垚閿欒锛歿ex.Message}");
             }
         }
+
+
 
         private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType)
         {
@@ -140,7 +226,7 @@
 
                         if (string.IsNullOrEmpty(task.TargetAddress))
                         {
-                            if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting)
+                            if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException)
                             {
                                 int loctype = 0;
                                 if (task.Roadway == "1" || task.Roadway == "2")
@@ -155,6 +241,7 @@
 
                                 //鏌ユ壘璐т綅锛屾洿鏂颁换鍔�
                                 Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype);
+                                if(dt_Location==null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,鎵樼洏缂栧彿锛歿task.PalletCode}");
                                 Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column);
                                 if (ShallowCargoHold == null) return content.Error($"鏈壘鍒拌璐т綅淇℃伅,璐т綅缂栧彿:{dt_Location.LocationCode}鐨勬祬璐т綅");
                                 if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"浠诲姟鍙凤細{task.TaskId},鎵樼洏缂栧彿锛歿task.PalletCode},鏌ユ壘鐨勮揣浣嶆祬璐т綅鏈夎揣锛岃揣浣嶇紪鍙凤細{ShallowCargoHold.LocationCode}");
@@ -182,6 +269,8 @@
                                 dt_StockInfo.StockStatus = (int)StockStatusEmun.鍏ュ簱涓�;
                                 dt_StockInfo.Creater = "MWS";
                                 dt_StockInfo.CreateDate = DateTime.Now;
+                                dt_StockInfo.Roadway = task.Roadway;
+                                
 
                                 _unitOfWorkManage.BeginTran();
                                 _stockInfoService.AddData(dt_StockInfo);
@@ -200,7 +289,7 @@
                         else
                         {
                             //鍒ゆ柇鏄惁鏈夎绔欏彴
-                            if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting)
+                            if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException)
                             {
                                 string Resultplc = MesInTaskStatusEnum.Finish.GetDescription();
                                 MES_parameter mES_PCLParameter = InStoreDocCallback(task.TaskNum, Resultplc, "鎿嶄綔鎴愬姛", task.PalletCode, task.TargetAddress);
@@ -214,6 +303,13 @@
                                 }
                                 else
                                 {
+                                    task.NumberSsuances = task.NumberSsuances + 1;
+                                    if (task.NumberSsuances == 3)
+                                    {
+                                        task.TaskStatus = (int)InTaskStatusEnum.InPLCException;
+                                        task.Remark = "杈撻�佺嚎鍏ュ簱锛氫笂浼燤ES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg;
+                                        BaseDal.UpdateData(task);
+                                    }
                                     return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_PCLParameter.ResultMsg);
                                 }
                             }
@@ -224,7 +320,7 @@
 
                         }
                     case 2:
-                        if (task.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting)
+                        if (task.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting || task.TaskStatus == (int)InTaskStatusEnum.InSCException)
                         {
                             string Resultsc = MesInTaskStatusEnum.Finish.GetDescription();
                             //涓婃姤MES浠诲姟瀹屾垚
@@ -247,6 +343,13 @@
                             }
                             else
                             {
+                                task.NumberSsuances = task.NumberSsuances + 1;
+                                if (task.NumberSsuances == 3)
+                                {
+                                    task.TaskStatus = (int)InTaskStatusEnum.InSCException;
+                                    task.Remark = "鍫嗗灈鏈哄叆搴擄紝涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+                                    BaseDal.UpdateData(task);
+                                }
                                 return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                             }
                         }
@@ -274,7 +377,7 @@
                 switch (wcsTaskType)
                 {
                     case 1:
-                        if(task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting)
+                        if(task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException)
                         {
                             string Resultplc = MesOutTaskStatusEnum.Finish.GetDescription();
                             //涓婃姤MES浠诲姟瀹屾垚
@@ -287,6 +390,13 @@
                             }
                             else
                             {
+                                task.NumberSsuances = task.NumberSsuances + 1;
+                                if (task.NumberSsuances == 3)
+                                {
+                                    task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException;
+                                    task.Remark = "鍑哄簱锛岃緭閫佺嚎涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+                                    BaseDal.UpdateData(task);
+                                }
                                 return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                             }
 
@@ -298,7 +408,7 @@
                         
                     case 2:
 
-                        if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting)
+                        if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutSCException)
                         {
                             //鑾峰彇瀵瑰簲PLC绔欏彴淇℃伅
                             Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway);
@@ -324,6 +434,13 @@
                             }
                             else
                             {
+                                task.NumberSsuances = task.NumberSsuances + 1;
+                                if (task.NumberSsuances == 3)
+                                {
+                                    task.TaskStatus = (int)OutTaskStatusEnum.OutSCException;
+                                    task.Remark = "鍫嗗灈鏈哄嚭搴擄細涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg;
+                                    BaseDal.UpdateData(task);
+                                }
                                 return content.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_SCParameter.ResultMsg);
                             }
                         }
@@ -381,6 +498,13 @@
                         }
                         else
                         {
+                            task.NumberSsuances = task.NumberSsuances + 1;
+                            if (task.NumberSsuances == 3)
+                            {
+                                task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException;
+                                task.Remark = "绉诲簱锛屼笂浼燤ES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg;
+                                BaseDal.UpdateData(task);
+                            }
                             return responseContent.Error("涓婁紶MES澶辫触锛屽師鍥狅細" + mES_Parameter.ResultMsg);
                         }
                     }
@@ -404,6 +528,8 @@
         }
 
 
+
+
         
 
     }

--
Gitblit v1.9.3