From 8419cb523a107c6b865628db4cdf8ef5d32b40f7 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期二, 13 八月 2024 10:28:46 +0800
Subject: [PATCH] 拼箱功能开发

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |  160 ++++++++++++++++++++++++-----------------------------
 1 files changed, 73 insertions(+), 87 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 8726081..f2f8ea3 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -430,6 +430,7 @@
                                 IsWave = "0",
                                 WaveNo = "",
                                 IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
+                                IsMixBox = d.IsMixBox,
 
                                 OrderDetailCode = d.OrderDetailCode,
 
@@ -540,7 +541,7 @@
                                 var item = new BllExportNoticeDetail()
                                 {
                                     SONo = billNo,
-                                    OrderDetailCode=d.OrderDetailCode,
+                                    OrderDetailCode = d.OrderDetailCode,
                                     SkuNo = sku.SkuNo,
                                     SkuName = sku.SkuName,
                                     Standard = sku.Standard,
@@ -559,6 +560,7 @@
                                     IsWave = "0",
                                     WaveNo = "",
                                     IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
+                                    IsMixBox = d.IsMixBox,
 
                                     CreateUser = 0,
                                 };
@@ -812,70 +814,62 @@
 
         #region 鍩虹鍔熻兘
 
-        public List<ExportNoticeDto> GetExportNoticeList(string no, string type, string status, string lotNo, int? logisticsId, string isWave, string isDespatch, string waveNo, int page, int limit, out int count)
+        public async Task<List<ExportNoticeDto>> GetExportNoticeList(GetExportNoticeVm model, RefAsync<int> count)
         {
-            try
-            {
-                var strList = new List<string>();
+            var strList = new List<string>();
 
-                if (!string.IsNullOrWhiteSpace(lotNo))
+            if (!string.IsNullOrWhiteSpace(model.LotNo))
+            {
+                var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.LotNo.Contains(model.LotNo.Trim())).Select(m => m.SONo).Distinct().ToList();
+                strList = detailList;
+            }
+            Expression<Func<BllExportNotice, bool>> item = Expressionable.Create<BllExportNotice>()
+                .AndIF(!string.IsNullOrWhiteSpace(model.No), it => it.SONo.Contains(model.No.Trim()))
+                .AndIF(!string.IsNullOrWhiteSpace(model.Type), it => it.Type == model.Type)
+                .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status)
+                .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId)
+                .AndIF(!string.IsNullOrWhiteSpace(model.IsWave), it => it.IsWave == model.IsWave)
+                .AndIF(!string.IsNullOrWhiteSpace(model.IsDespatch), it => it.IsDespatch == model.IsDespatch)
+                .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim()))
+                .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => strList.Contains(it.SONo))
+                .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+            var data = await GetAllWhereAsync(item)
+                .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
+                .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
+                .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
+                .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id)
+                .Select((a, b, c, d, e) => new ExportNoticeDto()
                 {
-                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.LotNo.Contains(lotNo.Trim())).Select(m => m.SONo).Distinct().ToList();
-                    strList = detailList;
-                }
-                Expression<Func<BllExportNotice, bool>> item = Expressionable.Create<BllExportNotice>()
-                    .AndIF(!string.IsNullOrWhiteSpace(no), it => it.SONo.Contains(no.Trim()))
-                    .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type)
-                    .AndIF(!string.IsNullOrWhiteSpace(status), it => it.Status == status)
-                    .AndIF(logisticsId != null, it => it.LogisticsId == logisticsId)
-                    .AndIF(!string.IsNullOrWhiteSpace(isWave), it => it.IsWave == isWave)
-                    .AndIF(!string.IsNullOrWhiteSpace(isDespatch), it => it.IsDespatch == isDespatch)
-                    .AndIF(!string.IsNullOrWhiteSpace(waveNo), it => it.WaveNo.Contains(waveNo.Trim()))
-                    .AndIF(!string.IsNullOrWhiteSpace(lotNo), it => strList.Contains(it.SONo))
-                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
-                var total = 0;
-                var data = GetAllWhereAsync(item)
-                    .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
-                    .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
-                    .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
-                    .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id)
-                    .Select((a, b, c, d, e) => new ExportNoticeDto()
-                    {
-                        Id = a.Id,
-                        SONo = a.SONo,
-                        Type = a.Type,
-                        Status = a.Status,
-                        Origin = a.Origin,
-                        CustomerNo = a.CustomerNo,
-                        CustomerName = a.CustomerName,
-                        LotNo = a.LotNo,
-                        LotText = a.LotText,
-                        SupplierLot = a.SupplierLot,
-                        LogisticsId = a.LogisticsId,
-                        LogisticsName = b.CarrierName,
-                        IsWave = a.IsWave,
-                        WaveNo = a.WaveNo,
-                        IsDespatch = a.IsDespatch,
-                        Demo = a.Demo,
+                    Id = a.Id,
+                    SONo = a.SONo,
+                    Type = a.Type,
+                    Status = a.Status,
+                    Origin = a.Origin,
+                    CustomerNo = a.CustomerNo,
+                    CustomerName = a.CustomerName,
+                    LotNo = a.LotNo,
+                    LotText = a.LotText,
+                    SupplierLot = a.SupplierLot,
+                    LogisticsId = a.LogisticsId,
+                    LogisticsName = b.CarrierName,
+                    IsWave = a.IsWave,
+                    WaveNo = a.WaveNo,
+                    IsDespatch = a.IsDespatch,
+                    Demo = a.Demo,
 
-                        CreateUserName = c.RealName,
-                        UpdateUserName = c.RealName,
-                        CreateTime = a.CreateTime,
-                        UpdateTime = a.UpdateTime,
+                    CreateUserName = c.RealName,
+                    UpdateUserName = c.RealName,
+                    CreateTime = a.CreateTime,
+                    UpdateTime = a.UpdateTime,
 
-                        CheckUserName = e.RealName,
-                        CheckTime = a.CheckTime
-                    })
-                    .OrderByDescending(a => a.CreateTime)
-                    .ToOffsetPage(page, limit, ref total);
-                count = total;
+                    CheckUserName = e.RealName,
+                    CheckTime = a.CheckTime
+                })
+                .OrderByDescending(a => a.CreateTime)
+                .ToPageListAsync(model.Page, model.Limit, count);
 
-                return data;
-            }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
+            return data;
         }
 
         //鑾峰彇娣诲姞/缂栬緫鍑哄簱鍗曟椂閫夋嫨鐗╂枡鏄庣粏淇℃伅
@@ -1908,33 +1902,23 @@
         /// <param name="limit">闆舵墭鏍囪</param> 
         /// <param name="count">闆舵墭鏍囪</param> 
         /// <returns></returns>
-        public List<DataStockDetail> GetPalletNoOutList(string skuNo, string skuName, string palletNo, string lotNo, string inspectMark, string bitPalletMark, int page, int limit, out int count)
+        public async Task<List<DataStockDetail>> GetPalletNoOutList(GetPalletNoOutVm model, RefAsync<int> count)
         {
+            Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
+                   .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), m => m.SkuNo.Contains(model.SkuNo.Trim()))
+                   .AndIF(!string.IsNullOrWhiteSpace(model.SkuName), m => m.SkuName.Contains(model.SkuName.Trim()))
+                   .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), m => m.PalletNo.Contains(model.PalletNo.Trim()))
+                   .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), m => m.LotNo.Contains(model.LotNo.Trim()))
+                   .AndIF(!string.IsNullOrWhiteSpace(model.InspectMark), m => m.InspectMark == model.InspectMark)
+                   .AndIF(!string.IsNullOrWhiteSpace(model.BitPalletMark), m => m.BitPalletMark == model.BitPalletMark)
+                   .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo))
+                   .And(a => a.Status == "0")
+                   .And(a => a.WareHouseNo == "W01")
+                   .ToExpression();
+            var data = await Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToPageListAsync(model.Page, model.Limit, count);
+            //data.Select(m => m.Status == "0" && m.IsDel == "0");
 
-            try
-            {
-                Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
-                    .AndIF(!string.IsNullOrWhiteSpace(skuNo), m => m.SkuNo.Contains(skuNo.Trim()))
-                    .AndIF(!string.IsNullOrWhiteSpace(skuName), m => m.SkuName.Contains(skuName.Trim()))
-                    .AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo.Contains(palletNo.Trim()))
-                    .AndIF(!string.IsNullOrWhiteSpace(lotNo), m => m.LotNo.Contains(lotNo.Trim()))
-                    .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark == inspectMark)
-                    .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark == bitPalletMark)
-                    .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo))
-                    .And(a => a.Status == "0")
-                    .And(a => a.WareHouseNo == "W01")
-                    .ToExpression();
-                var total = 0;
-                var data = Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToOffsetPage(page, limit, ref total);
-                //data.Select(m => m.Status == "0" && m.IsDel == "0");
-                count = total;
-
-                return data;
-            }
-            catch (Exception e)
-            {
-                throw new Exception(e.Message);
-            }
+            return data;
         }
 
         //鎵樼洏鍑哄簱
@@ -4325,6 +4309,8 @@
                 var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList();
                 //搴撳瓨鎬昏〃淇℃伅
                 var data = Db.Queryable<DataStock>().Where(m => m.IsDel == "0").ToList();
+                //搴撳瓨鏄庣粏涓楠屽悎鏍兼壒娆¢泦鍚�
+                var dataDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").GroupBy(g => g.LotNo).Select(s => s.LotNo).ToList();
                 //搴撳瓨鏄庣粏琛ㄤ俊鎭�
                 var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0").ToList();
 
@@ -4334,7 +4320,7 @@
                 {
                     //楠岃瘉鍏堣繘鍏堝嚭鍘熷垯
                     
-                    var forData = data.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 ).Select(m=>m.LotNo).ToList(); //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬0)
+                    var forData = data.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 && dataDetail.Contains(m.LotNo)).Select(m=>m.LotNo).ToList(); //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬0)
 
                     forData.Add(item.LotNo);  //闆嗗悎娣诲姞鍗曟嵁鐨勬壒娆�
                     //鑾峰彇鎺掑簭鍚庣殑绗竴涓壒娆�
@@ -4394,7 +4380,7 @@
 
                 var exAllotList = new List<BllExportAllot>();
                 var assign = new AllotSku();
-                var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛屾棤闇�鎵樼洏涓婂叏閮ㄥ垎閰嶇殑
+                var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛� 鏃犻渶鎵樼洏涓婂叏閮ㄥ垎閰嶇殑
                 Db.BeginTran();
                 try
                 {
@@ -4472,7 +4458,7 @@
                         }
                         else
                         {
-                            qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic);
+                            qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox);
                         }
                         
                         foreach (var sc in stockQtyDic)

--
Gitblit v1.8.0