From 20a71f4bafb8cda355948cc061827b8d4752966f Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期三, 17 十二月 2025 10:44:17 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs |   90 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 80 insertions(+), 10 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
index 5f48f16..aa37561 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
@@ -1,4 +1,5 @@
-锘縰sing Newtonsoft.Json;
+锘縰sing AutoMapper;
+using Newtonsoft.Json;
 using Newtonsoft.Json.Serialization;
 using SqlSugar;
 using WIDESEA_Common.LocationEnum;
@@ -21,7 +22,7 @@
 {
     public partial class OutboundService : IOutboundService
     {
-
+        private readonly IMapper _mapper;
         public IUnitOfWorkManage _unitOfWorkManage { get; }
 
         public IOutboundOrderDetailService OutboundOrderDetailService { get; }
@@ -42,9 +43,11 @@
         private readonly IRepository<Dt_LocationInfo> _locationInfoRepository;
         private readonly IRepository<Dt_StockQuantityChangeRecord> _stockChangeRepository;
         private readonly IRepository<Dt_StockInfoDetail_Hty> _stockDetailHistoryRepository;
+        private readonly IFeedbackMesService _feedbackMesService;
 
-        public OutboundService(IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> detailRepository, IRepository<Dt_OutboundOrder> outboundRepository, IRepository<Dt_OutStockLockInfo> outboundLockInfoRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_StockInfoDetail> stockDetailRepository, IRepository<Dt_StockQuantityChangeRecord> stockChangeRepository, IRepository<Dt_StockInfoDetail_Hty> stockDetailHistoryRepository, IBasicService basicService, IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService)
+        public OutboundService(IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> detailRepository, IRepository<Dt_OutboundOrder> outboundRepository, IRepository<Dt_OutStockLockInfo> outboundLockInfoRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_StockInfoDetail> stockDetailRepository, IRepository<Dt_StockQuantityChangeRecord> stockChangeRepository, IRepository<Dt_StockInfoDetail_Hty> stockDetailHistoryRepository, IBasicService basicService, IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrderService outboundOrderService, IOutStockLockInfoService outboundStockLockInfoService, IFeedbackMesService feedbackMesService)
         {
+            _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
             Db = _unitOfWorkManage.GetDbClient();
             OutboundOrderDetailService = outboundOrderDetailService;
@@ -59,8 +62,10 @@
             _stockChangeRepository = stockChangeRepository;
             _stockDetailHistoryRepository = stockDetailHistoryRepository;
             _basicService = basicService;
+            _feedbackMesService = feedbackMesService;
         }
 
+        #region 鍑哄簱鍒嗛厤
         /// <summary>
         /// 鍒嗘嫞鍑哄簱鎿嶄綔
         /// </summary>
@@ -783,6 +788,7 @@
                 return false;
             }
         }
+        #endregion
 
 
         /// <summary>
@@ -888,7 +894,7 @@
 
                 // 8. 鍒ゆ柇鏄惁闇�瑕佹媶鍖咃紙褰撳嚭搴撴暟閲忓皬浜庡簱瀛樻暟閲忔椂闇�瑕佹媶鍖咃級
                 bool isUnpacked = actualOutboundQuantity < stockDetail.StockQuantity;
-                string newBarcode = string.Empty;
+                List<MaterialCodeReturnDTO> returnDTOs = new List<MaterialCodeReturnDTO>();
 
                 // 9. 寮�鍚簨鍔�
                 _unitOfWorkManage.BeginTran();
@@ -899,7 +905,7 @@
                     // 鏍规嵁鏄惁鎷嗗寘鎵ц涓嶅悓鐨勬搷浣�
                     if (isUnpacked)
                     {
-                        newBarcode = PerformUnpackOperation(stockDetail, stockInfo, actualOutboundQuantity, request, beforeQuantity, lockInfo.TaskNum.GetValueOrDefault());
+                        returnDTOs = PerformUnpackOperation(stockDetail, stockInfo, actualOutboundQuantity, request, beforeQuantity, lockInfo.TaskNum.GetValueOrDefault());
                     }
                     else
                     {
@@ -993,14 +999,14 @@
                         BeforeQuantity = beforeQuantity,
                         AfterQuantity = isUnpacked ? actualOutboundQuantity : 0,
                         ChangeQuantity = -actualOutboundQuantity,
-                        IsUnpacked = isUnpacked
+                        IsUnpacked = isUnpacked,
+                        MaterialCodes = returnDTOs
                     };
 
                     response.Success = true;
-                    response.Message = isUnpacked ? $"鎷嗗寘鍑哄簱瀹屾垚锛屽凡鐢熸垚鏂版潯鐮侊細{newBarcode}" : "鍑哄簱瀹屾垚";
+                    response.Message = "鍑哄簱瀹屾垚";
                     response.ScannedDetail = scannedDetail;
                     response.UpdatedDetails = updateDetails;
-                    response.NewBarcode = newBarcode;
 
                     // 妫�鏌ュ嚭搴撳崟鏄惁瀹屾垚
                     if (CheckOutboundOrderCompleted(request.OrderNo))
@@ -1074,10 +1080,16 @@
         /// <param name="beforeQuantity"></param>
         /// <param name="taskNum"></param>
         /// <returns></returns>
-        private string PerformUnpackOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
+        private List<MaterialCodeReturnDTO> PerformUnpackOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
             decimal actualOutboundQuantity, OutboundCompleteRequestDTO request, decimal beforeQuantity, int taskNum)
         {
             string newBarcode = GenerateNewBarcode();
+
+            string remark = $"鎷嗗寘璁板綍锛屽師鏉$爜锛歿request.Barcode}锛屽師鏁伴噺锛歿stockDetail.StockQuantity}锛屽嚭搴撴潯鐮侊細{newBarcode}锛� 鍑哄簱鏁伴噺锛歿actualOutboundQuantity}锛屽洖搴撴潯鐮侊細{request.Barcode}锛屽洖搴撴暟閲忥細{stockDetail.StockQuantity - actualOutboundQuantity},鎿嶄綔鑰咃細{request.Operator}";
+
+            List<Dt_MaterialCodeInfo> materialCodeInfos = CreateMaterialCodeInfos(stockDetail, newBarcode, actualOutboundQuantity, remark);
+
+            List<MaterialCodeReturnDTO> returnDTOs = _mapper.Map<List<MaterialCodeReturnDTO>>(materialCodeInfos);
 
             // 淇濆瓨鍘熷搴撳瓨鏄庣粏鍒板巻鍙茶褰�
             Dt_StockInfoDetail_Hty originalHistoryRecord = new Dt_StockInfoDetail_Hty
@@ -1138,7 +1150,7 @@
             };
             _stockChangeRepository.AddData(unpackChangeRecord);
 
-            return newBarcode;
+            return returnDTOs;
         }
 
         /// <summary>
@@ -1214,6 +1226,64 @@
         }
 
         /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="stockDetail"></param>
+        /// <param name="newBarcode"></param>
+        /// <param name="splitQuantity"></param>
+        /// <param name="afterQuantity"></param>
+        /// <param name="remark"></param>
+        /// <returns></returns>
+        private List<Dt_MaterialCodeInfo> CreateMaterialCodeInfos(Dt_StockInfoDetail stockDetail, string newBarcode, decimal splitQuantity, string remark)
+        {
+            List<Dt_MaterialCodeInfo> materialCodeInfos = new List<Dt_MaterialCodeInfo>();
+
+            Dt_MaterielInfo? materielInfo = _basicService.MaterielInfoService.Repository.QueryFirst(x => x.MaterielCode == stockDetail.MaterielCode);
+
+            Dt_MaterialCodeInfo outMaterialCodeInfo = new Dt_MaterialCodeInfo()
+            {
+                AfterQuantity = splitQuantity,
+                BatchNo = stockDetail.BatchNo,
+                FactoryArea = stockDetail.FactoryArea,
+                MaterialName = materielInfo?.MaterielName ?? stockDetail.MaterielName,
+                MaterialSpec = materielInfo?.MaterielSpec ?? "",
+                MaterialCode = stockDetail.MaterielCode,
+                NewBarcode = newBarcode,
+                OldBarcode = stockDetail.Barcode,
+                OriginalQuantity = stockDetail.StockQuantity,
+                PruchaseOrderNo = stockDetail.OrderNo,
+                SuplierCode = stockDetail.SupplyCode,
+                Unit = stockDetail.Unit,
+                Date = DateTime.Now.ToString("yyyy-MM-dd"),
+                Remark = remark
+            };
+            materialCodeInfos.Add(outMaterialCodeInfo);
+
+            Dt_MaterialCodeInfo returnMaterialCodeInfo = new Dt_MaterialCodeInfo()
+            {
+                AfterQuantity = stockDetail.StockQuantity - splitQuantity,
+                BatchNo = stockDetail.BatchNo,
+                FactoryArea = stockDetail.FactoryArea,
+                MaterialName = materielInfo?.MaterielName ?? stockDetail.MaterielName,
+                MaterialSpec = materielInfo?.MaterielSpec ?? "",
+                MaterialCode = stockDetail.MaterielCode,
+                NewBarcode = stockDetail.Barcode,
+                OldBarcode = stockDetail.Barcode,
+                OriginalQuantity = stockDetail.StockQuantity,
+                PruchaseOrderNo = stockDetail.OrderNo,
+                SuplierCode = stockDetail.SupplyCode,
+                Unit = stockDetail.Unit,
+                Date = DateTime.Now.ToString("yyyy-MM-dd"),
+                Remark = remark
+            };
+
+            materialCodeInfos.Add(returnMaterialCodeInfo);
+
+            _basicService.MaterielCodeInfoService.Repository.AddData(materialCodeInfos);
+            return materialCodeInfos;
+        }
+
+        /// <summary>
         /// 鏇存柊璇ユ墭鐩樿鐗╂枡鐨勬墍鏈夐攣瀹氳褰曠殑绱宸插嚭搴撴暟閲�
         /// </summary>
         /// <param name="stockId">搴撳瓨ID</param>

--
Gitblit v1.9.3