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