From 829eabf256e29392ca63f6da48829dba3b075dfe Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期五, 24 一月 2025 08:59:53 +0800
Subject: [PATCH] 资料,优化程序

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs |  139 ++++++++++++++++++++++++----------------------
 1 files changed, 73 insertions(+), 66 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 5f5eb0e..60367bd 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -22,6 +22,7 @@
 using Org.BouncyCastle.Asn1.Tsp;
 using SqlSugar;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Diagnostics.CodeAnalysis;
@@ -49,6 +50,7 @@
 using WIDESEA_ITaskInfoService;
 using WIDESEA_Model.Models;
 using WIDESEA_TaskInfoRepository;
+using static WIDESEA_ITaskInfoService.ITaskService;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -79,13 +81,13 @@
             _taskHtyService = taskHtyService;
             _locationInfoService = locationInfoService;
         }
-
+        public string ReceiveWCSTask = WIDESEA_Core.Helper.AppSettings.Configuration["ReceiveWCSTask"];
         /// <summary>
         /// 浠诲姟瀹屾垚
         /// </summary>
         /// <param name="taskNum">浠诲姟鍙�</param>
         /// <returns>杩斿洖澶勭悊缁撴灉</returns>
-        public WebResponseContent TaskCompleted(int taskNum)
+        public WebResponseContent TaskCompleted(int taskNum,int HowWorks)
         {
             try
             {
@@ -93,6 +95,10 @@
                 if (task == null)
                 {
                     return WebResponseContent.Instance.Error("鏈壘鍒颁换鍔′俊鎭�");
+                }
+                if (HowWorks == 1)
+                {
+                    WebResponseContent webResponseContent = HttpHelper.Post<WebResponseContent>(ReceiveWCSTask, task.TaskNum, "浠诲姟鍒犻櫎");
                 }
                 MethodInfo? methodInfo = GetType().GetMethod(((TaskTypeEnum)task.TaskType) + "TaskCompleted");
                 if (methodInfo != null)
@@ -112,25 +118,48 @@
 
         }
 
+        /// <summary>
+        /// 鍏ュ簱瀹屾垚
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
         public WebResponseContent InboundTaskCompleted(Dt_Task task)
         {
             decimal beforeQuantity = 0;
 
+            //鏌ュ簱瀛�
             Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
-
+            //鏌ヨ揣浣�
             Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
-
+            Dt_StockInfoDetail dt_StockInfodetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockInfo.Id);
             CheckCompleted(stockInfo, locationInfo);
 
-            stockInfo.LocationCode = locationInfo.LocationCode;
+            if (stockInfo.MaterialType == (int)InventoryMaterialType.绌烘墭)
+            {
+                string currentTime = DateTime.Now.ToString("HHmmss");
+                stockInfo.PalletCode = "KTP" + currentTime;
+            }
+            stockInfo.LocationCode = task.TargetAddress;
             stockInfo.StockStatus = StockStatusEmun.宸插叆搴�.ObjToInt();
-            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-            
+             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+
+            if(dt_StockInfodetail != null)
+            {
+                dt_StockInfodetail.Status = StockStatusEmun.宸插叆搴�.ObjToInt();
+                _stockService.StockInfoDetailService.Repository.UpdateData(dt_StockInfodetail);
+            }
             beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
 
             int beforeStatus = locationInfo.LocationStatus;
-            locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
-            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(),false);
+            if (stockInfo.MaterialType == (int)InventoryMaterialType.绌烘墭)
+            {
+                locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
+            }
+            else
+            {
+                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+            }
+            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(), false);
 
             _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
             task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
@@ -160,7 +189,7 @@
 
             CheckCompleted(stockInfo, locationInfo);
 
-           
+
             _stockService.StockInfoService.Repository.AddData(stockInfo);
 
             int beforeStatus = locationInfo.LocationStatus;
@@ -172,7 +201,7 @@
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
 
             _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
-            
+
 
             return WebResponseContent.Instance.OK();
         }
@@ -195,10 +224,10 @@
                 return (false, "鏈壘鍒拌揣浣嶄俊鎭�");
             }
 
-            if (isCheckStockDetail && (stockInfo.Details == null || stockInfo.Details.Count == 0))
+            /*if (isCheckStockDetail && (stockInfo.Details == null || stockInfo.Details.Count == 0))
             {
                 return (false, "鏈壘鍒扮粍鐩樻槑缁嗕俊鎭�");
-            }
+            }*/
 
             return (true, "鎴愬姛");
         }
@@ -212,26 +241,33 @@
 
             CheckCompleted(stockInfo, locationInfo);
 
-            stockInfo.LocationCode = locationInfo.LocationCode;
             stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
             int beforeStatus = locationInfo.LocationStatus;
-            if (task.Depth == 1)
+            /*if (task.Depth == 1)
             {
-                if (DepthTask(task)) { }
+                *//*if (DepthTask(task)) 
+                {
+                }
                 else
                 {
                     locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                     _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
                     _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
-                }
+                }*//*
+                locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
+                _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
             }
             else
             {
                 locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                 _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
                 _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
-            }
+            }*/
+            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false);
+            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
 
             task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
@@ -244,7 +280,8 @@
             _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) - beforeQuantity, StockChangeType.Outbound);
 
 
-            return OnOutboundTaskCompleted?.Invoke(task) ?? WebResponseContent.Instance.OK();
+            //return OnOutboundTaskCompleted?.Invoke(task) ?? WebResponseContent.Instance.OK();
+            return WebResponseContent.Instance.OK();
         }
 
         public WebResponseContent PalletOutboundTaskCompleted(Dt_Task task)
@@ -267,41 +304,44 @@
             task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
             BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
             _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
-            
+
             _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
 
             return WebResponseContent.Instance.OK();
         }
 
-        public WebResponseContent RelocationTaskCompleted(Dt_Task task)
+        public WebResponseContent RelocationInTaskCompleted(Dt_Task task)
         {
             Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
 
+            Dt_LocationInfo locationpoint = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
             Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
-
-            CheckCompleted(stockInfo, locationEnd);
+            List<Dt_LocationInfo> loca = new List<Dt_LocationInfo>();
 
             stockInfo.LocationCode = locationEnd.LocationCode;
             stockInfo.StockStatus = StockStatusEmun.宸插叆搴�.ObjToInt();
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
-          
-            _basicService.LocationInfoService.RelocationFree(locationEnd, task.TaskNum);
 
-            task.TaskStatus = InTaskStatusEnum.RelocationFinish.ObjToInt();
-            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚);
+            locationpoint.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+
+            locationEnd.LocationStatus = locationEnd.LocationStatus == LocationStatusEnum.Lock.ObjToInt() ? LocationStatusEnum.InStock.ObjToInt() : LocationStatusEnum.Pallet.ObjToInt();
 
             
+            loca.Add(locationpoint);
+            loca.Add(locationEnd);
+
+            _basicService.LocationInfoService.Repository.UpdateData(loca);
             return WebResponseContent.Instance.OK();
         }
         public bool DepthTask(Dt_Task task)
         {
-            Dt_LocationInfo location=_locationInfoService.Repository.QueryFirst(x=>x.LocationCode == task.SourceAddress);
-            if(location != null)
+            Dt_LocationInfo location = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+            if (location != null)
             {
-                if(location.Row%2==0)
+                if (location.Row % 2 == 0)
                 {
                     Dt_LocationInfo locations = _locationInfoService.Repository.QueryFirst(x => x.Row == location.Row + 1 && x.Layer == location.Layer && x.Column == location.Column && x.RoadwayNo == location.RoadwayNo);
-                    Dt_Task tasks=BaseDal.QueryFirst(x=>x.SourceAddress == locations.LocationCode);
+                    Dt_Task tasks = BaseDal.QueryFirst(x => x.SourceAddress == locations.LocationCode);
                     return tasks != null ? true : false;
                 }
                 else
@@ -314,39 +354,6 @@
             return false;
         }
 
-        /// <summary>
-        /// 鍒涘缓浠诲姟
-        /// </summary>
-        /// <param name="taskInfo"></param>
-        /// <returns></returns>
-        public Dt_Task CreateTask(Dt_Task tasks)
-        {
-            try
-            {
-                if (tasks.TaskType == (int)TaskTypeEnum.Inbound)
-                {
-                    Dt_Task task = new Dt_Task()
-                    {
-                        TaskType = (int)TaskTypeEnum.Outbound, //浠诲姟绫诲瀷
-                        CreateDate = DateTime.Now,
-                        ModifyDate = DateTime.Now,
-                        Grade = 1,
-                        Creater = "鍒涙櫤WMS",// 鍒涘缓浜�
-                    };
-                    return task;
-                }
-                else
-                {
-                    return null;
-                }
-
-            }
-            catch (Exception ex)
-            {
-                //WriteLog.GetLog("鍒涘缓浠诲姟").Write($"{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}", "鍒涘缓浠诲姟");
-                throw;
-            }
-
-        }
-    }
+        
+    }   
 }

--
Gitblit v1.9.3