From b7796f5e4d6594976ea948905af769eca863f27c Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期一, 07 七月 2025 15:28:15 +0800
Subject: [PATCH] 代码更新

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesOutboundOrderService.cs |   65 ++++++++++++++++++++++++++++++--
 1 files changed, 60 insertions(+), 5 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesOutboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesOutboundOrderService.cs"
index fa7fd73..42aba4b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesOutboundOrderService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/MesOutboundOrderService.cs"
@@ -20,6 +20,8 @@
 using WIDESEA_IBasicService;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_IRecordService;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.TaskEnum;
 
 namespace WIDESEA_OutboundService
 {
@@ -58,18 +60,19 @@
             float originalNeedQuantity = mesOutboundOrder.OrderQuantity;
 
             float needQuantity = originalNeedQuantity;
-
+            //鑾峰彇搴撳瓨
             List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(mesOutboundOrder.MaterialCode, "", mesOutboundOrder.WarehouseId);
             if (!stockInfos.Any())
             {
                 throw new Exception($"鏈壘鍒板彲鍒嗛厤搴撳瓨");
             }
             List<Dt_StockInfo> autoAssignStocks = _stockService.StockInfoService.GetOutboundStocks(stockInfos, mesOutboundOrder.MaterialCode, needQuantity, out float residueQuantity);
-            mesOutboundOrder.LockQuantity += needQuantity - residueQuantity;
+            if (residueQuantity>0)
+            {
+                throw new Exception($"搴撳瓨涓嶈冻");
+            }
+            autoAssignStocks.OrderBy(x => x.Details.FirstOrDefault()?.StockQuantity).ToList();
             outStocks.AddRange(autoAssignStocks);
-            float assignQuantity = needQuantity - residueQuantity;
-
-            float orderQuantity = mesOutboundOrder.OrderQuantity;
             for (int j = 0; j < autoAssignStocks.Count; j++)
             {
                 float detailAssignQuantity = outStockLockInfos.Where(x => x.MaterielCode == mesOutboundOrder.MaterialCode).Sum(x => x.AssignQuantity);//鍑哄簱璁㈠崟鏄庣粏宸插垎閰嶆暟閲�
@@ -104,6 +107,9 @@
         {
             try
             {
+                stockInfos.ForEach(x => {
+                    x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+                });
                 _stockService.StockInfoService.Repository.UpdateData(stockInfos);
                 List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
                 foreach (var item in stockInfos)
@@ -140,5 +146,54 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
+
+        public WebResponseContent AddMesOrder(SubstrateOutModel substrateOutModel)
+        {
+            try
+            {
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA57.ToString());
+                if (warehouse == null)
+                {
+                    return WebResponseContent.Instance.Error($"浠撳簱鍩虹淇℃伅鏈厤缃�");
+                }
+
+                Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == substrateOutModel.MaterialCode);
+                if (materielInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡淇℃伅");
+                }
+                int orderType = 0;
+                if(substrateOutModel.Line == "1011")
+                {
+                    orderType = MesOutboundOrderTypeEnum.HandSubstrateOutPick.ObjToInt();
+                }
+                else
+                {
+                    orderType = MesOutboundOrderTypeEnum.HandSubstrateOut.ObjToInt();
+                }
+
+                Dt_MesOutboundOrder mesOutboundOrder = new Dt_MesOutboundOrder()
+                {
+                    CreateType = OrderCreateTypeEnum.CreateInSystem.ObjToInt(),
+                    Line = substrateOutModel.Line,
+                    MaterialCode = substrateOutModel.MaterialCode,
+                    MaterialName = materielInfo.MaterielName,
+                    OrderQuantity = substrateOutModel.RequiredQuantity,
+                    TaskNo = DateTime.Now.ToString("yyyyMMddHHmmss"),
+                    Unit = substrateOutModel.Unit,
+                    OrderType = orderType,
+                    OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(),
+                    WarehouseId = warehouse.WarehouseId
+                };
+
+                AddData(mesOutboundOrder);
+                
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
     }
 }

--
Gitblit v1.9.3