From 2b25f973bb6d72ce6971d6f9c3cdccf51b7962ab Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 06 九月 2025 14:27:08 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhiHuiQiCe/LongDeLiLiKu

---
 项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs |  123 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 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"
new file mode 100644
index 0000000..4f27480
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutBSTOrderService.cs"
@@ -0,0 +1,123 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Common.MaterielEnum;
+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_IBasicRepository;
+using WIDESEA_IOutboundRepository;
+using WIDESEA_IOutboundService;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_OutboundService
+{
+    public class OutBSTOrderService : ServiceBase<Dt_OutBSTOrder, IOutBSTOrderRepository>, IOutBSTOrderService
+    {
+        public IOutBSTOrderRepository Repository => BaseDal;
+        private readonly IBasicRepository _basicRepository;
+        private readonly IMapper _mapper;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _basicRepository = basicRepository;
+            _mapper = mapper;
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+        /// <summary>
+        /// 娣诲姞鍑哄簱鎺掔▼淇℃伅
+        /// </summary>
+        public WebResponseContent AddOutBSTOrder(List<BSTOutOrderDTO> bSTOutOrderDTOs)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //鑾峰彇鎵�鏈夊嚭搴撳崟
+                List<Dt_OutBSTOrder> OldoutBSTOrders = BaseDal.Db.Queryable<Dt_OutBSTOrder>().Includes(x => x.Details).ToList();
+                //鏂板
+                List<BSTOutOrderDTO> outOrderDTOsAdd = bSTOutOrderDTOs.Where(x => x.Way == 1).ToList();
+                //淇敼
+                List<BSTOutOrderDTO> outOrderDTOsUpdate = bSTOutOrderDTOs.Where(x => x.Way == 2).ToList();
+                //鍒犻櫎
+                List<BSTOutOrderDTO> outOrderDTOsDel = bSTOutOrderDTOs.Where(x => x.Way == 3).ToList();
+                //鑾峰彇鎵�鏈夌墿鏂� 
+                List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.鑰佸巶.ObjToInt() && x.MaterialSourceId != 0);
+
+                List<Dt_OutBSTOrder> outBSTAddOrders = new List<Dt_OutBSTOrder>();
+                List<Dt_OutBSTOrder> outBSTUpOrders = new List<Dt_OutBSTOrder>();
+                List<Dt_OutBSTOrder> outBSTDelOrders = new List<Dt_OutBSTOrder>();
+                //鏂板
+                if (outOrderDTOsAdd.Count>0)
+                {
+                    //鍒ゆ柇鍗曟嵁
+                    Dt_OutBSTOrder? ExistAddOutOrder = OldoutBSTOrders.FirstOrDefault(x => outOrderDTOsAdd.Select(x => x.BoardMpsId).Contains(x.BoardMpsId));
+                    if (ExistAddOutOrder != null)
+                    {
+                        return content.Error($"鍑哄簱鎺掔▼Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}宸插瓨鍦�");
+                    }
+                    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)
+                    {
+                        return content.Error($"鐢熶骇鎺掔▼{nameof(bstBoardMpsDetailItem.BoardMpsId)}鐗╂枡Id:{bstBoardMpsDetailItem.MaterialId}涓嶅瓨鍦�");
+                    }
+                    foreach (var item in outOrderDTOsAdd)
+                    {
+                        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);
+                    }
+                }
+                //淇敼
+                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)
+                    {
+
+                    }
+                    else
+                    {
+                        BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId));
+                        return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}");
+                    }
+                }
+                //鍒犻櫎
+                if (outOrderDTOsDel.Count > 0)
+                {
+                    List<Dt_OutBSTOrder>? ExistDeloutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsDel.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList();
+                    //鏇存柊鐨勫崟鎹槸鍚﹀瓨鍦�
+                    if (ExistDeloutBSTOrders.Count == outOrderDTOsDel.Count)
+                    {
+
+                    }
+                    else
+                    {
+                        BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsDel.FirstOrDefault(x => !ExistDeloutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId));
+                        return content.Error($"鏈壘鍒版寚瀹氱敓浜ф帓绋嬪崟Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}");
+                    }
+                }
+                _unitOfWorkManage.BeginTran();
+                BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand();
+                _unitOfWorkManage.CommitTran();
+                content.OK("鎺ユ敹鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+    }
+}

--
Gitblit v1.9.3