This commit is contained in:
qianjiawei
2023-07-20 17:36:35 +08:00
2 changed files with 32 additions and 25 deletions

View File

@@ -368,16 +368,17 @@ namespace Tnb.WarehouseMgr
{
List<WmsCarryMat> carryMats = new();
List<WmsCarryCode> carryCodes = new();
var whereExp = Expressionable.Create<WmsCarryH, WmsCarryCode, BasLocation>()
.And((a, b, c) => a.is_lock == 0)
.And((a, b, c) => !string.IsNullOrEmpty(a.location_id))
.And((a, b, c) => a.status == (int)EnumCarryStatus.)
.And((a, b, c) => c.is_type == ((int)EnumLocationType.).ToString());
foreach (var os in outStockDList)
{
whereExp.And((a, b, c) => b.material_id == os.material_id)
.AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch);
var whereExp = Expressionable.Create<WmsCarryH, WmsCarryCode, BasLocation>()
.And((a, b, c) => a.is_lock == 0)
.And((a, b, c) => !string.IsNullOrEmpty(a.location_id))
.And((a, b, c) => a.status == (int)EnumCarryStatus.)
.And((a, b, c) => c.is_type == ((int)EnumLocationType.).ToString())
.And((a, b, c) => b.material_id == os.material_id)
.AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch);
var carryCodesPart = await _db.Queryable<WmsCarryH>().InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id).InnerJoin<BasLocation>((a, b, c) => a.location_id == c.id)
.Where(whereExp.ToExpression())

View File

@@ -56,7 +56,9 @@ namespace Tnb.WarehouseMgr
var endLocation = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == secondLocationId);
var setSortings = await _db.Queryable<WmsSetsortingH>()
.Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID).OrderBy(a => a.seq)
.Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID)
.Select<WmsSetsortingH>()
.OrderBy(a => a.seq)
.ToListAsync();
var items = await _db.Queryable<WmsSetsortingH>().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToListAsync();
var onFlag = items?.Count > 0;
@@ -64,17 +66,12 @@ namespace Tnb.WarehouseMgr
{
await _db.Ado.BeginTranAsync();
var singleSorting = new WmsSetsortingH();
if (setSortings?.Count > 0)
{
singleSorting = setSortings[0];
var curCarry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == singleSorting.carry_id);
var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, endLocation);
if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500);
}
if (setSortings?.Count > 0 && !onFlag)
{
var singleSorting = setSortings[0];
var setSortingDList = await _db.Queryable<WmsSetsortingD>().Where(it => it.bill_id == singleSorting.id).ToListAsync();
if (setSortingDList?.Count > 0)
@@ -83,18 +80,20 @@ namespace Tnb.WarehouseMgr
List<WmsCarryCode> carryCodes = new();
List<string> carryIds = new();
var whereExpr = Expressionable.Create<WmsCarryH, WmsCarryCode, BasLocation>()
.And((a, b, c) => a.is_lock == 0)
.And((a, b, c) => !string.IsNullOrEmpty(a.location_id))
.And((a, b, c) => a.status == (int)EnumCarryStatus.);
;
foreach (var os in setSortingDList)
{
whereExpr.And((a, b, c) => b.material_id == os.material_id)
.And((a, b, c) => c.wh_id == os.warehouse_id)
.AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch);
var whereExpr = Expressionable.Create<WmsCarryH, WmsCarryCode, BasLocation>()
.And((a, b, c) => a.is_lock == 0)
.And((a, b, c) => !string.IsNullOrEmpty(a.location_id))
.And((a, b, c) => a.status == (int)EnumCarryStatus.)
.And((a, b, c) => b.material_id == os.material_id)
.And((a, b, c) => c.wh_id == os.warehouse_id)
.AndIF(!string.IsNullOrEmpty(os.code_batch), (a, b, c) => b.code_batch == os.code_batch)
.ToExpression();
;
var carryCodesPart = await _db.Queryable<WmsCarryH>().InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id).InnerJoin<BasLocation>((a, b, c) => a.location_id == c.id)
.Where(whereExpr.ToExpression())
.Where(whereExpr)
.Select<WmsCarryCode>()
.ToListAsync();
if (carryCodesPart?.Count > 0)
@@ -152,6 +151,13 @@ namespace Tnb.WarehouseMgr
var carrys = await _db.Queryable<WmsCarryH>().Where(it => carryIds.Contains(it.id)).ToArrayAsync();
if (carrys?.Length > 0)
{
if (setSortings?.Count > 0)
{
var curCarry = carrys[^carrys.Length];
var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, endLocation);
if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500);
}
List<WmsPretaskH> preTasks = new();
List<string> locIds = new();