From fb745c842df36edc5101291a7f239c11c97bcc2f Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 11 九月 2025 16:46:33 +0800
Subject: [PATCH] 最新代码更新,BST,MES部分

---
 项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs |   56 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 44 insertions(+), 12 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
index 4f27480..988d3c5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
@@ -5,12 +5,13 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Common.MaterielEnum;
+using WIDESEA_Common.OrderEnum;
 using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Helper;
-using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.ERP;
 using WIDESEA_IBasicRepository;
 using WIDESEA_IOutboundRepository;
 using WIDESEA_IOutboundService;
@@ -24,12 +25,14 @@
         private readonly IBasicRepository _basicRepository;
         private readonly IMapper _mapper;
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IOutBSTOrderDetailRepository _outBSTOrderDetailRepository;
 
-        public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage,IOutBSTOrderDetailRepository outBSTOrderDetailRepository) : base(BaseDal)
         {
             _basicRepository = basicRepository;
             _mapper = mapper;
             _unitOfWorkManage = unitOfWorkManage;
+            _outBSTOrderDetailRepository = outBSTOrderDetailRepository;
         }
         /// <summary>
         /// 娣诲姞鍑哄簱鎺掔▼淇℃伅
@@ -53,6 +56,7 @@
                 List<Dt_OutBSTOrder> outBSTAddOrders = new List<Dt_OutBSTOrder>();
                 List<Dt_OutBSTOrder> outBSTUpOrders = new List<Dt_OutBSTOrder>();
                 List<Dt_OutBSTOrder> outBSTDelOrders = new List<Dt_OutBSTOrder>();
+                List<Dt_OutBSTOrderDetail> outBSTOrderDetailsDel = new List<Dt_OutBSTOrderDetail>();
                 //鏂板
                 if (outOrderDTOsAdd.Count>0)
                 {
@@ -62,8 +66,8 @@
                     {
                         return content.Error($"鍑哄簱鎺掔▼Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}宸插瓨鍦�");
                     }
-                    List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList();
                     //鍒ゆ柇鏄惁瀛樺湪鐗╂枡
+                    List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList();
                     BstBoardMpsDetailItem? bstBoardMpsDetailItem = bstBoardMpsDetailItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId));
                     if (bstBoardMpsDetailItem != null)
                     {
@@ -71,6 +75,10 @@
                     }
                     foreach (var item in outOrderDTOsAdd)
                     {
+                        if (outOrderDTOsUpdate.FirstOrDefault(x => x.BoardMpsId == item.BoardMpsId) != null)
+                        {
+                            continue;
+                        }
                         List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList();
                         Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item);
                         outBSTOrder.Details=bSTOrderDetails;
@@ -80,16 +88,38 @@
                 //淇敼
                 if (outOrderDTOsUpdate.Count > 0)
                 {
-                    List<Dt_OutBSTOrder>? ExistUpdateoutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList();
-                    //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦�
-                    if (ExistUpdateoutBSTOrders.Count == outOrderDTOsUpdate.Count)
+                    List<Dt_OutBSTOrder>? ExistUpdateOutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList();
+                    
+                    foreach (var item in outOrderDTOsUpdate)
                     {
-
-                    }
-                    else
-                    {
-                        BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId));
-                        return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}");
+                        Dt_OutBSTOrder? outBSTOrderUpdate = ExistUpdateOutBSTOrders.FirstOrDefault(x=>x.BoardMpsId==item.BoardMpsId);
+                        //濡傛灉璁㈠崟宸插瓨鍦ㄥ垯杩涜鏇存敼
+                        if (outBSTOrderUpdate != null)
+                        {
+                            if (outBSTOrderUpdate.OutBSTOrderStatus != OutOrderStatusEnum.鏈紑濮�.ObjToInt())
+                            {
+                                return content.Error($"閲囪喘{nameof(outBSTOrderUpdate.BoardMpsId)}:{outBSTOrderUpdate.BoardMpsId}璁㈠崟鍑哄簱涓紝涓嶅彲鏇存敼");
+                            }
+                            //鏇存柊鏁版嵁
+                            outBSTOrderDetailsDel.AddRange(outBSTOrderUpdate.Details);
+                            List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList();
+                            bSTOrderDetails.ForEach(x =>
+                            {
+                                x.OutBSTOrderId = outBSTOrderUpdate.Id;
+                            });
+                            outBSTOrderUpdate.Details = bSTOrderDetails;
+                            outBSTOrderUpdate.BoardMpsId= item.BoardMpsId;
+                            outBSTOrderUpdate.BoardMpsNo= item.BoardMpsNo;
+                            outBSTOrderUpdate.ProductionDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ProductionDate).DateTime;
+                            outBSTUpOrders.Add(outBSTOrderUpdate);
+                        }
+                        else//濡傛灉涓嶅瓨鍦ㄥ垯杩涜鏂板
+                        {
+                            List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList();
+                            Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item);
+                            outBSTOrder.Details = bSTOrderDetails;
+                            outBSTAddOrders.Add(outBSTOrder);
+                        }
                     }
                 }
                 //鍒犻櫎
@@ -109,6 +139,8 @@
                 }
                 _unitOfWorkManage.BeginTran();
                 BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand();
+                _outBSTOrderDetailRepository.DeleteData(outBSTOrderDetailsDel);
+                BaseDal.Db.UpdateNav(outBSTUpOrders).Include(x => x.Details).ExecuteCommand();
                 _unitOfWorkManage.CommitTran();
                 content.OK("鎺ユ敹鎴愬姛");
             }

--
Gitblit v1.9.3