From 810fe2bcf1888eacd926f3caa604f033483d20c9 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 30 十月 2024 14:57:33 +0800
Subject: [PATCH] 优化WMS基础管理模块、任务管理添加任务历史信息

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 100 insertions(+), 0 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 e0ba81d..1c40c2f 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"
@@ -28,6 +28,8 @@
 using System.Reflection.Metadata;
 using System.Text;
 using System.Threading.Tasks;
+using System.Transactions;
+using WIDESEA_Common.TaskEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -47,6 +49,7 @@
 using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
 using WIDESEA_TaskInfoRepository;
+using WIDESEAWCS_DTO.WCSInfo;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -229,5 +232,102 @@
 
             return WebResponseContent.Instance.OK();
         }
+        /// <summary>
+        /// 鍚屾浠诲姟鐘舵��
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public WebResponseContent UpdateTaskStatus(WMSTaskDTO WMStask)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == WMStask.TaskNum && x.TaskType == WMStask.TaskType);
+                if (task == null) return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔′俊鎭�");
+                if (task.TaskType == (int)TaskTypeEnum.Inbound)
+                {
+                    int nextStatus = task.TaskStatus.GetNextNotCompletedStatus<TaskInStatusEnum>();
+                    if (WMStask.TaskState != nextStatus) return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佹湁璇�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskStatus}銆�");
+                    task.TaskStatus = nextStatus;
+                    switch (nextStatus)
+                    {
+                        case (int)TaskInStatusEnum.SC_InFinish:
+                            content = UpdateTaskStatusInFinish(task);
+                            break;
+                        default:
+                            break;
+                    }
+                }
+                else if (task.TaskType == (int)TaskTypeEnum.Outbound)
+                {
+                    int nextStatus = task.TaskStatus.GetNextNotCompletedStatus<TaskOutStatusEnum>();
+                    if (WMStask.TaskState != nextStatus) return WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佹湁璇�,浠诲姟鍙�:銆恵task.TaskNum}銆�,浠诲姟鐘舵��:銆恵task.TaskStatus}銆�");
+                    task.TaskStatus = nextStatus;
+                    switch (nextStatus)
+                    {
+                        case (int)TaskOutStatusEnum.SC_OutFinish:
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鏇存柊浠诲姟鐘舵�佸畬鎴�
+        /// </summary>
+        /// <param name="WMStask"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateTaskStatusInFinish(Dt_Task task)
+        {
+            WebResponseContent content = new WebResponseContent().OK();
+            try
+            {
+                Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
+                Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                var result = CheckCompleted(stockInfo, locationInfo);
+                if (!result.Item1) throw new Exception(result.Item2);
+                if (stockInfo.StockStatus != StockStatusEmun.鍏ュ簱涓�.ObjToInt()) throw new Exception($"鎵樼洏[{task.PalletCode}],璇ョ粍鐩樼姸鎬佷笉鍙叆搴�");
+                stockInfo.StockStatus = StockStatusEmun.宸插叆搴�.ObjToInt();
+                locationInfo.CurrentQty++;
+                locationInfo.LocationStatus = locationInfo.MaxQty - locationInfo.CurrentQty == 0 ? LocationStatusEnum.Fullload.ObjToInt() : LocationStatusEnum.InStock.ObjToInt();
+                using (TransactionScope scope = new TransactionScope())
+                {
+                    BaseDal.UpdateData(task);
+                    _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
+                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    scope.Complete();
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// 鏇存柊浠诲姟鐘舵�佹墽琛�
+        /// </summary>
+        /// <param name="WMStask"></param>
+        /// <returns></returns>
+        public WebResponseContent UpdateTaskStatusExecuting(Dt_Task task)
+        {
+            WebResponseContent content = new WebResponseContent().OK();
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }

--
Gitblit v1.9.3