From f7307a062b594cbfd1652a68178d3b771e948362 Mon Sep 17 00:00:00 2001
From: yyk <2336760928@qq.com>
Date: 星期四, 22 八月 2024 14:39:42 +0800
Subject: [PATCH] 修改仓库区域显示
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 216 ++++++++++++++++++++++++++---------------------------
1 files changed, 107 insertions(+), 109 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 3f7e3e2..230ca96 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,
};
@@ -814,67 +816,60 @@
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(model.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(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();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+ 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,
- 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()
- {
- 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)
+ .ToPageListAsync(model.Page, model.Limit, count);
- 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;
}
//鑾峰彇娣诲姞/缂栬緫鍑哄簱鍗曟椂閫夋嫨鐗╂枡鏄庣粏淇℃伅
@@ -1907,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;
}
//鎵樼洏鍑哄簱
@@ -4324,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();
@@ -4332,8 +4319,10 @@
foreach (var item in noticeDetail)
{
//楠岃瘉鍏堣繘鍏堝嚭鍘熷垯
-
- 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)
+ //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬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();
forData.Add(item.LotNo); //闆嗗悎娣诲姞鍗曟嵁鐨勬壒娆�
//鑾峰彇鎺掑簭鍚庣殑绗竴涓壒娆�
@@ -4346,15 +4335,37 @@
//楠岃瘉鏁堟湡浼樺厛鍘熷垯
var forDataBox = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && m.Qty > 0).ToList();
- var expirationTime = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.Qty > 0).OrderBy(m=>m.ExpirationTime).Select(m=>m.ExpirationTime).First(); //鑾峰彇褰撳墠鍗曟嵁鎵规鐨勬渶杩戞晥鏈�
- var num = forDataBox.Count(m => m.ExpirationTime > expirationTime); //鑾峰彇搴撳瓨涓叾瀹冩壒娆℃晥鏈熷ぇ浜庡綋鍓嶅崟鎹壒娆$殑鏁堟湡鏁伴噺
- //鍒ゆ柇鏄惁澶т簬0
- if (num>0)
+ //鑾峰彇褰撳墠鍗曟嵁鎵规鐨勬渶杩戞晥鏈�
+ var expirationTimedt = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo
+ && m.LotNo == item.LotNo && m.Qty > 0).ToList();
+ if (expirationTimedt.Count > 0)
{
- bl = false;
- break;
+ var expirationTime = expirationTimedt.OrderBy(m => m.ExpirationTime).Select(m => m.ExpirationTime).First();
+ //鑾峰彇搴撳瓨涓叾瀹冩壒娆℃晥鏈熷ぇ浜庡綋鍓嶅崟鎹壒娆$殑鏁堟湡鏁伴噺
+ var num = forDataBox.Count(m => m.ExpirationTime > expirationTime);
+ //鍒ゆ柇鏄惁澶т簬0
+ if (num > 0)
+ {
+ bl = false;
+ break;
+ }
}
+ else
+ {
+ var dataDetailtime = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").
+ Where(m => m.SkuNo == item.SkuNo
+ && m.LotNo == item.LotNo && m.Qty > 0)
+ .OrderBy(m => m.ExpirationTime)
+ .Select(m => m.ExpirationTime).First();
+ var num = forDataBox.Count(m => m.ExpirationTime > dataDetailtime);
+ //鍒ゆ柇鏄惁澶т簬0
+ if (num > 0)
+ {
+ bl = false;
+ break;
+ }
+ }
}
@@ -4393,7 +4404,6 @@
var exAllotList = new List<BllExportAllot>();
var assign = new AllotSku();
- var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛屾棤闇�鎵樼洏涓婂叏閮ㄥ垎閰嶇殑
Db.BeginTran();
try
{
@@ -4441,12 +4451,6 @@
{
stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
}
- if (notice.Type == "1" && !specialSku.Contains(detail.SkuNo))
- {
- //鍒嗛厤鏁翠釜鎵樼洏涓婄殑鐗╂枡 鍙煡璇㈡湭鍒嗛厤鐨勬墭鐩�
- stockDetail = stockDetail.Where(m => m.Status == "0").ToList();
-
- }
if (stockDetail.Sum(m=>m.Qty-m.LockQty) < needQty)
{
throw new Exception("搴撳瓨鏄庣粏鏁伴噺涓嶈冻");
@@ -4464,16 +4468,7 @@
Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
var qty = 0m;
//鍒嗛厤璐х墿
- if (notice.Type == "1" && !specialSku.Contains(detail.SkuNo))//鍒ゆ柇鏄惁鏈鏂欏嚭搴�
- {
- //鍒嗛厤鍥涙ゼ澶囨枡鎶曟枡鐨勭墿鏂�
- qty += assign.LingLiaoAllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic);
- }
- 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)
{
var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key);
@@ -4531,7 +4526,9 @@
if (qty > detail.Qty)
{
//搴撳瓨鎬昏〃
- var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
+ var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0"
+ && d.SkuNo == detail.SkuNo
+ && d.LotNo == detail.LotNo);
stock.LockQty += qty-detail.Qty;
Db.Updateable(stock).ExecuteCommand();
@@ -4592,7 +4589,8 @@
var zd = Db.Updateable(notice).ExecuteCommand();
//娣诲姞鎿嶄綔鏃ュ織璁板綍
- var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍒嗛厤", $"鑷姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
+ var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁",
+ notice.SONo, "鍒嗛厤", $"鑷姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
if (zd > 0 && mx > 0 && fp > 0 && k)
{
--
Gitblit v1.8.0