From a296223898d61a9838bbd35ed75c87575e308a36 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期五, 07 十一月 2025 17:19:38 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs |  282 +++++++++++++++++++++++++++----------------------------
 1 files changed, 138 insertions(+), 144 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs"
index 737dc85..ba26209 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs"
@@ -1,5 +1,6 @@
 锘縰sing Mapster;
 using Masuit.Tools;
+using Masuit.Tools.Models;
 using SqlSugar;
 using System.ComponentModel.DataAnnotations;
 using System.Linq.Expressions;
@@ -18,11 +19,13 @@
     private readonly IUnitOfWorkManage _unitOfWorkManage;
     private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
     private readonly IDt_InboundOrderRepository _inboundOrderRepository;
-    public BoxingInfoService(IBoxingInfoRepository BaseDal,IUnitOfWorkManage unitOfWorkManage, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository, IDt_InboundOrderRepository inboundOrderRepository) : base(BaseDal)
+    private readonly IBoxingInfoDetailRepository _boxingInfoDetailRepository;
+    public BoxingInfoService(IBoxingInfoRepository BaseDal,IUnitOfWorkManage unitOfWorkManage, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository, IDt_InboundOrderRepository inboundOrderRepository,IBoxingInfoDetailRepository boxingInfoDetailRepository) : base(BaseDal)
     {
         _unitOfWorkManage = unitOfWorkManage;
         _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
         _inboundOrderRepository = inboundOrderRepository;
+        _boxingInfoDetailRepository = boxingInfoDetailRepository;
     }
     public override PageGridData<DtBoxingInfo> GetPageData(PageDataOptions options)
     {
@@ -92,7 +95,7 @@
             return content.Error(ex.Message);
         }
     }
-    
+
 
     public async Task<WebResponseContent> AddGroupPlateAsync(GroupPlate groupPlate)
     {
@@ -104,108 +107,46 @@
                 return content.Error("鍙傛暟閿欒");
             }
             var infos = await BaseDal.QueryFirstNavAsync(x => x.PalletCode == groupPlate.palletCode);
-            if (!infos.IsNullOrEmpty())
+            List<DtBoxingInfoDetail> details = new List<DtBoxingInfoDetail>();
+            if (infos != null)
             {
-                infos.StockStatus = (int)StockStateEmun.缁勭洏鎾ら攢;
-                DtBoxingInfo_Hty stockhty = infos.Adapt<DtBoxingInfo_Hty>();
-                stockhty.ModifyDate = DateTime.Now;
-
-                List<DtBoxingInfoDetail> details = new List<DtBoxingInfoDetail>();
                 foreach (var item in groupPlate.groups)
                 {
-                    foreach (var info in infos.BoxingInfoDetails)
+                    if (infos.BoxingInfoDetails.Count > 0)
                     {
-                        if (item.orderNo == info.OrderNo)
+                        var detail = _boxingInfoDetailRepository.QueryFirst(x => x.OrderNo == item.orderNo);
+                        if (detail != null)
                         {
-                            var x = details.Where(x => x.MaterielCode == info.MaterielCode && x.Warehouse == info.Warehouse && x.DrawingNumber == info.DrawingNumber && x.DemandClassification == info.DemandClassification && x.Quantity != info.Quantity).FirstOrDefault();
-                            if(x != null)
+                            DtBoxingInfoDetail boxdetail = new DtBoxingInfoDetail()
                             {
-                                details.Remove(x);
-                                x.MaterielCode = info.MaterielCode;
-                                x.MaterielName = info.MaterielName;
-                                x.DemandClassification = info.DemandClassification;
-                                x.Warehouse = info.Warehouse;
-                                x.OrderNo = info.OrderNo;
-                                x.Unit = info.Unit;
-                                x.WareHouseId = info.WareHouseId;
-                                x.Specs = info.Specs;
-                                x.Weight = info.Weight;
-                                x.Quantity = x.Quantity + item.quantity;
-                                x.DrawingNumber = info.DrawingNumber;
-                                x.Date = info.Date;
-                                details.Add(x);
-                            }
-                            else
-                            {
-                                DtBoxingInfoDetail detail = new DtBoxingInfoDetail()
-                                {
-                                    MaterielCode = info.MaterielCode,
-                                    MaterielName = info.MaterielName,
-                                    DemandClassification = info.DemandClassification,
-                                    Warehouse = info.Warehouse,
-                                    OrderNo = info.OrderNo,
-                                    Unit = info.Unit,
-                                    Specs = info.Specs,
-                                    Weight = info.Weight,
-                                    WareHouseId = info.WareHouseId,
-                                    Quantity = item.quantity,
-                                    DrawingNumber = info.DrawingNumber,
-                                    Date = info.Date,
-                                };
-                                details.Add(detail);
-                            }  
+                                MaterielCode = detail.MaterielCode,
+                                MaterielName = detail.MaterielName,
+                                DemandClassification = detail.DemandClassification,
+                                Warehouse = detail.Warehouse,
+                                OrderNo = detail.OrderNo,
+                                Unit = detail.Unit,
+                                Specs = detail.Specs,
+                                Weight = detail.Weight,
+                                WareHouseId = detail.WareHouseId,
+                                Quantity = item.quantity,
+                                DrawingNumber = detail.DrawingNumber,
+                                Date = detail.Date,
+                            };
+                            details.Add(boxdetail);
                         }
                         else
                         {
-                            var InboundOrder = _inboundOrderRepository.QueryFirst(x => x.OrderNo == item.orderNo);
-
-                            if (InboundOrder != null)
-                            {
-                                var x = details.Where(x => x.MaterielCode == InboundOrder.MaterialNo && x.Warehouse == InboundOrder.WarehouseName && x.DrawingNumber == InboundOrder.ProductDrawingNumber && x.DemandClassification == InboundOrder.DemandClassification).FirstOrDefault();
-                                if (x != null)
-                                {
-                                    details.Remove(x);
-                                    x.MaterielCode = InboundOrder.MaterialNo;
-                                    x.MaterielName = InboundOrder.MaterialName;
-                                    x.DemandClassification = InboundOrder.DemandClassification;
-                                    x.Warehouse = InboundOrder.WarehouseName;
-                                    x.OrderNo = InboundOrder.UpperOrderNo;
-                                    x.Unit = InboundOrder.Unit;
-                                    x.WareHouseId = InboundOrder.WareHouseId;
-                                    x.Specs = InboundOrder.Specs;
-                                    x.Weight = InboundOrder.Weight;
-                                    x.Quantity = x.Quantity + item.quantity;
-                                    x.DrawingNumber = InboundOrder.ProductDrawingNumber;
-                                    x.Date = InboundOrder.Datetime;
-                                    details.Add(x);
-                                }
-                                else
-                                {
-                                    DtBoxingInfoDetail detail = new DtBoxingInfoDetail()
-                                    {
-                                        MaterielCode = InboundOrder.MaterialNo,
-                                        MaterielName = InboundOrder.MaterialName,
-                                        DemandClassification = InboundOrder.DemandClassification,
-                                        Warehouse = InboundOrder.WarehouseName,
-                                        OrderNo = InboundOrder.UpperOrderNo,
-                                        Unit = InboundOrder.Unit,
-                                        Specs = InboundOrder.Specs,
-                                        Weight = InboundOrder.Weight,
-                                        WareHouseId = InboundOrder.WareHouseId,
-                                        Quantity = item.quantity,
-                                        DrawingNumber = InboundOrder.ProductDrawingNumber,
-                                        Date = InboundOrder.Datetime,
-                                    };
-                                    details.Add(detail);
-                                }
-                            }
-                            else
-                            {
-                                return content.Error("鏈壘鍒板叆搴撳崟鎹俊鎭�");
-                            }
+                            details = GetDtBoxingInfoDetails(item, details);
                         }
                     }
+                    else
+                    {
+                        details = GetDtBoxingInfoDetails(item, details);
+                    }
                 }
+                infos.StockStatus = (int)StockStateEmun.缁勭洏鎾ら攢;
+                DtBoxingInfo_Hty stockhty = infos.Adapt<DtBoxingInfo_Hty>();
+                stockhty.ModifyDate = DateTime.Now;
                 DtBoxingInfo boxing = new DtBoxingInfo()
                 {
                     PalletCode = groupPlate.palletCode,
@@ -215,65 +156,67 @@
                 await _unitOfWorkManage.UseTranAsync(async () =>
                 {
                     await BaseDal.Db.DeleteNav<DtBoxingInfo>(x => x.Id == infos.Id)
-                                            .Include(x => x.BoxingInfoDetails)
-                                            .ExecuteCommandAsync();
+                                        .Include(x => x.BoxingInfoDetails)
+                                        .ExecuteCommandAsync();
                     await AddStockHtyAsync(stockhty);
+
                     await BaseDal.AddDataNavAsync(boxing);
                 });
-                content.OK("缁勭洏鎴愬姛");
-
+                return content.OK("缁勭洏鎴愬姛");
             }
             else
             {
-                List<DtBoxingInfoDetail> details = new List<DtBoxingInfoDetail>();
                 foreach (var item in groupPlate.groups)
                 {
-                    var InboundOrder = _inboundOrderRepository.QueryFirst(x => x.OrderNo == item.orderNo);
+                    #region  
+                    //var InboundOrder = _inboundOrderRepository.QueryFirst(x => x.OrderNo == item.orderNo);
 
-                    if (InboundOrder != null)
-                    {
-                        var x = details.Where(x => x.MaterielCode == InboundOrder.MaterialNo && x.Warehouse == InboundOrder.WarehouseName && x.DrawingNumber == InboundOrder.ProductDrawingNumber && x.DemandClassification == InboundOrder.DemandClassification).FirstOrDefault();
-                        if (x != null)
-                        {
-                            details.Remove(x);
-                            x.MaterielCode = InboundOrder.MaterialNo;
-                            x.MaterielName = InboundOrder.MaterialName;
-                            x.DemandClassification = InboundOrder.DemandClassification;
-                            x.Warehouse = InboundOrder.WarehouseName;
-                            x.OrderNo = InboundOrder.UpperOrderNo;
-                            x.Unit = InboundOrder.Unit;
-                            x.WareHouseId = InboundOrder.WareHouseId;
-                            x.Specs = InboundOrder.Specs;
-                            x.Weight = InboundOrder.Weight;
-                            x.Quantity = x.Quantity + item.quantity;
-                            x.DrawingNumber = InboundOrder.ProductDrawingNumber;
-                            x.Date = InboundOrder.Datetime;
-                            details.Add(x);
-                        }
-                        else
-                        {
-                            DtBoxingInfoDetail detail = new DtBoxingInfoDetail()
-                            {
-                                MaterielCode = InboundOrder.MaterialNo,
-                                MaterielName = InboundOrder.MaterialName,
-                                DemandClassification = InboundOrder.DemandClassification,
-                                Warehouse = InboundOrder.WarehouseName,
-                                OrderNo = InboundOrder.UpperOrderNo,
-                                Unit = InboundOrder.Unit,
-                                Specs = InboundOrder.Specs,
-                                Weight = InboundOrder.Weight,
-                                WareHouseId = InboundOrder.WareHouseId,
-                                Quantity = item.quantity,
-                                DrawingNumber = InboundOrder.ProductDrawingNumber,
-                                Date = InboundOrder.Datetime,
-                            };
-                            details.Add(detail);
-                        }
-                    }
-                    else
-                    {
-                        return content.Error("鏈壘鍒板叆搴撳崟鎹俊鎭�");
-                    }
+                    //if (InboundOrder != null)
+                    //{
+                    //    var x = details.Where(x => x.MaterielCode == InboundOrder.MaterialNo && x.Warehouse == InboundOrder.WarehouseName && x.DrawingNumber == InboundOrder.ProductDrawingNumber && x.DemandClassification == InboundOrder.DemandClassification).FirstOrDefault();
+                    //    if (x != null)
+                    //    {
+                    //        details.Remove(x);
+                    //        x.MaterielCode = InboundOrder.MaterialNo;
+                    //        x.MaterielName = InboundOrder.MaterialName;
+                    //        x.DemandClassification = InboundOrder.DemandClassification;
+                    //        x.Warehouse = InboundOrder.WarehouseName;
+                    //        x.OrderNo = InboundOrder.OrderNo;
+                    //        x.Unit = InboundOrder.Unit;
+                    //        x.WareHouseId = InboundOrder.WareHouseId;
+                    //        x.Specs = InboundOrder.Specs;
+                    //        x.Weight = InboundOrder.Weight;
+                    //        x.Quantity = x.Quantity + item.quantity;
+                    //        x.DrawingNumber = InboundOrder.ProductDrawingNumber;
+                    //        x.Date = InboundOrder.Datetime;
+                    //        details.Add(x);
+                    //    }
+                    //    else
+                    //    {
+                    //        DtBoxingInfoDetail detail = new DtBoxingInfoDetail()
+                    //        {
+                    //            MaterielCode = InboundOrder.MaterialNo,
+                    //            MaterielName = InboundOrder.MaterialName,
+                    //            DemandClassification = InboundOrder.DemandClassification,
+                    //            Warehouse = InboundOrder.WarehouseName,
+                    //            OrderNo = InboundOrder.OrderNo,
+                    //            Unit = InboundOrder.Unit,
+                    //            Specs = InboundOrder.Specs,
+                    //            Weight = InboundOrder.Weight,
+                    //            WareHouseId = InboundOrder.WareHouseId,
+                    //            Quantity = item.quantity,
+                    //            DrawingNumber = InboundOrder.ProductDrawingNumber,
+                    //            Date = InboundOrder.Datetime,
+                    //        };
+                    //        details.Add(detail);
+                    //    }
+                    //}
+                    //else
+                    //{
+                    //    return content.Error("鏈壘鍒板叆搴撳崟鎹俊鎭�");
+                    //}
+                    #endregion
+                    details = GetDtBoxingInfoDetails(item,details);
                 }
                 DtBoxingInfo boxing = new DtBoxingInfo()
                 {
@@ -282,15 +225,66 @@
                     BoxingInfoDetails = details
                 };
                 await BaseDal.AddDataNavAsync(boxing);
-                content.OK("缁勭洏鎴愬姛");
+                return content.OK("缁勭洏鎴愬姛");
             }
-            return content;
         }
         catch (Exception ex)
         {
             return content.Error(ex.Message);
         }
     }
+
+
+    public List<DtBoxingInfoDetail> GetDtBoxingInfoDetails(GroupPlateInfo info, List<DtBoxingInfoDetail> details)
+    {
+        var InboundOrder = _inboundOrderRepository.QueryFirst(x => x.OrderNo == info.orderNo);
+        if (InboundOrder != null)
+        {
+            var x = details.Where(x => x.MaterielCode == InboundOrder.MaterialNo && x.Warehouse == InboundOrder.WarehouseName && x.DrawingNumber == InboundOrder.ProductDrawingNumber && x.DemandClassification == InboundOrder.DemandClassification).FirstOrDefault();
+            if (x != null)
+            {
+                details.Remove(x);
+                x.MaterielCode = InboundOrder.MaterialNo;
+                x.MaterielName = InboundOrder.MaterialName;
+                x.DemandClassification = InboundOrder.DemandClassification;
+                x.Warehouse = InboundOrder.WarehouseName;
+                x.OrderNo = InboundOrder.OrderNo;
+                x.Unit = InboundOrder.Unit;
+                x.WareHouseId = InboundOrder.WareHouseId;
+                x.Specs = InboundOrder.Specs;
+                x.Weight = InboundOrder.Weight;
+                x.Quantity = x.Quantity + info.quantity;
+                x.DrawingNumber = InboundOrder.ProductDrawingNumber;
+                x.Date = InboundOrder.Datetime;
+                details.Add(x);
+            }
+            else
+            {
+                DtBoxingInfoDetail boxdetail = new DtBoxingInfoDetail()
+                {
+                    MaterielCode = InboundOrder.MaterialNo,
+                    MaterielName = InboundOrder.MaterialName,
+                    DemandClassification = InboundOrder.DemandClassification,
+                    Warehouse = InboundOrder.WarehouseName,
+                    OrderNo = InboundOrder.OrderNo,
+                    Unit = InboundOrder.Unit,
+                    Specs = InboundOrder.Specs,
+                    Weight = InboundOrder.Weight,
+                    WareHouseId = InboundOrder.WareHouseId,
+                    Quantity = info.quantity,
+                    DrawingNumber = InboundOrder.ProductDrawingNumber,
+                    Date = InboundOrder.Datetime,
+                };
+                details.Add(boxdetail);
+            }
+            return details;
+        }
+        else
+        {
+            throw new Exception($"鏈壘鍒板叆搴撳崟鎹畕info.orderNo}");
+        }
+    }
+
     #endregion
 
     #region 瑙g洏

--
Gitblit v1.9.3