From 2c889b38311883ceb703c4e0034c798fdaa2e21c Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 12 八月 2025 23:11:57 +0800
Subject: [PATCH] 更新代码,货位分配优化等

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs |   75 +++++++++++++++++++++++++++++++------
 1 files changed, 62 insertions(+), 13 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
index a74fb82..4c88553 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -30,6 +30,7 @@
 using WIDESEA_DTO.Stock;
 using SqlSugar;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -97,6 +98,15 @@
                         PalletType = stockInfo.PalletType,
                         WarehouseId = stockInfo.WarehouseId,
                     };
+                    string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                    float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                    string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+                    if (MaterielCode != null && Quantity != null && BatchNo != null)
+                    {
+                        taskOut.MaterielCode = MaterielCode;
+                        taskOut.Quantity = Quantity;
+                        taskOut.BatchNo = BatchNo;
+                    }
                     stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
                     LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                     locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
@@ -171,6 +181,15 @@
                         PalletType = stockInfo.PalletType,
                         WarehouseId = stockInfo.WarehouseId,
                     };
+                    string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                    float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                    string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+                    if (MaterielCode != null && Quantity != null && BatchNo != null)
+                    {
+                        taskOut.MaterielCode = MaterielCode;
+                        taskOut.Quantity = Quantity;
+                        taskOut.BatchNo = BatchNo;
+                    }
                     stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
                     LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                     locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
@@ -247,6 +266,15 @@
                         PalletType = stockInfo.PalletType,
                         WarehouseId = stockInfo.WarehouseId,
                     };
+                    string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                    float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                    string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+                    if (MaterielCode != null && Quantity != null && BatchNo != null)
+                    {
+                        taskOut.MaterielCode = MaterielCode;
+                        taskOut.Quantity = Quantity;
+                        taskOut.BatchNo = BatchNo;
+                    }
                     stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
                     LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                     locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
@@ -309,6 +337,15 @@
                     PalletType = stockInfo.PalletType,
                     WarehouseId = stockInfo.WarehouseId,
                 };
+                string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+                if (MaterielCode != null && Quantity != null && BatchNo != null)
+                {
+                    taskIn.MaterielCode = MaterielCode;
+                    taskIn.Quantity = Quantity;
+                    taskIn.BatchNo = BatchNo;
+                }
                 //鏇存敼搴撳瓨鐘舵��
                 stockInfo.StockStatus = StockStatusEmun.閫�搴�.ObjToInt();
                 BaseDal.AddData(taskIn);
@@ -488,6 +525,7 @@
         /// <returns></returns>
         public MesResponseContent SubstrateOut(SubstrateOutModel model)
         {
+            MesResponseContent content = new MesResponseContent();
             try
             {
                 string line = string.Empty;
@@ -502,15 +540,15 @@
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == line);
                 if (warehouse == null)
                 {
-                    return MesResponseContent.Instance.Error($"浠撳簱鍩虹淇℃伅鏈厤缃�");
+                    return content.Error($"浠撳簱鍩虹淇℃伅鏈厤缃�");
                 }
 
                 Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterialCode);
                 if (materielInfo == null)
                 {
-                    return MesResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡淇℃伅");
+                    return content.Error($"鏈壘鍒拌鐗╂枡淇℃伅");
                 }
-
+                //鐢熸垚MES鏉挎枡鍑哄簱鍗曟嵁
                 Dt_MesOutboundOrder mesOutboundOrder = new Dt_MesOutboundOrder()
                 {
                     CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
@@ -526,14 +564,15 @@
                 };
 
                 List<Dt_Task> tasks = new List<Dt_Task>();
-
                 List<Dt_StockInfo>? stockInfos = null;
                 List<Dt_OutStockLockInfo>? outStockLockInfos = null;
                 List<Dt_LocationInfo>? locationInfos = null;
                 {
+                    //鍒嗛厤搴撳瓨
                     (List<Dt_StockInfo>, Dt_MesOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesOutboundOrderService.AssignStockOutbound(mesOutboundOrder);
                     if (result.Item1 != null && result.Item1.Count > 0)
                     {
+                        //鍒涘缓浠诲姟
                         tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound);
                         result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
                         result.Item3.ForEach(x =>
@@ -567,23 +606,26 @@
                 _outboundService.MesOutboundOrderService.Repository.AddData(mesOutboundOrder);
                 if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
                 {
-                    WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks);
+                    WebResponseContent contentResponse = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks);
 
-                    if (!content.Status)
+                    if (!contentResponse.Status)
                     {
                         _unitOfWorkManage.RollbackTran();
-                        return MesResponseContent.Instance.Error(content.Message);
+                        return content.Error(contentResponse.Message);
                     }
                 }
                 _unitOfWorkManage.CommitTran();
                 PushTasksToWCS(tasks);
-
-
-                return MesResponseContent.Instance.OK();
+                //灏嗗紑鏂欏垎閰嶇殑搴撳瓨鎵樼洏杩斿洖缁橫ES
+                content.Content = new
+                {
+                    VehicleCode = stockInfos?.Select(x => x.PalletCode).ToList()
+                };
+                return content.OK();
             }
             catch (Exception ex)
             {
-                return MesResponseContent.Instance.Error(ex.Message);
+                return content.Error(ex.Message);
             }
         }
 
@@ -1025,9 +1067,16 @@
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = stockInfo.WarehouseId,
                     PalletType = stockInfo.PalletType,
-                    MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
-                    Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
                 };
+                string MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                float Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                string BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+                if (MaterielCode != null && Quantity != null && BatchNo != null)
+                {
+                    newTask.MaterielCode = MaterielCode;
+                    newTask.Quantity = Quantity;
+                    newTask.BatchNo = BatchNo;
+                }
                 LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                 _unitOfWorkManage.BeginTran();
                 _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation);

--
Gitblit v1.9.3