This commit is contained in:
alex
2023-07-18 14:03:58 +08:00
parent 58d1fc736e
commit bc5a67338a
4 changed files with 128 additions and 89 deletions

View File

@@ -63,11 +63,17 @@ namespace Tnb.WarehouseMgr
{ {
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
//判断目标库位是否自动签收
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
var carry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString());
var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc);
if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500);
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTK_ID, true); VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTK_ID, true);
await _runService.Create(templateEntity, input); await _runService.Create(templateEntity, input);
//入库取终点 //入库取终点
//var OutStockStrategyInput = new OutStockStrategyQuery { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString(), Size = 1 }; //var OutStockStrategyInput = new OutStockStrategyQuery { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString(), Size = 1 };
var carry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString());
WmsPointH? sPoint = null; WmsPointH? sPoint = null;
WmsPointH? ePoint = null; WmsPointH? ePoint = null;
if (input.data.ContainsKey(nameof(WmsPointH.location_id))) if (input.data.ContainsKey(nameof(WmsPointH.location_id)))
@@ -113,8 +119,6 @@ namespace Tnb.WarehouseMgr
preTask.create_time = DateTime.Now; preTask.create_time = DateTime.Now;
return preTask; return preTask;
}).ToList(); }).ToList();
//判断目标库位是否自动签收
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
if (loc.is_sign ==0 ) { if (loc.is_sign ==0 ) {
preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值
} }

View File

@@ -70,8 +70,7 @@ namespace Tnb.WarehouseMgr
{ {
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYOUTSTK_ID, true);
await _runService.Create(templateEntity, input);
/*//入库取终点 /*//入库取终点
var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString(), Size = 1 }; var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString(), Size = 1 };
@@ -85,6 +84,17 @@ namespace Tnb.WarehouseMgr
&& a.carry_status == ((int)EnumCarryStatus.).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.).ToString()) && a.carry_status == ((int)EnumCarryStatus.).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.).ToString())
.ToListAsync(); .ToListAsync();
// 判断最终目标库位是否可以放置当前载具
if (carrys?.Count > 0)
{
var curCarry = carrys[^carrys.Count];
var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, loc);
if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500);
}
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYOUTSTK_ID, true);
await _runService.Create(templateEntity, input);
WmsPointH? sPoint = null; WmsPointH? sPoint = null;
WmsPointH? ePoint = null; WmsPointH? ePoint = null;
if (input.data.ContainsKey(nameof(WmsPointH.location_id))) if (input.data.ContainsKey(nameof(WmsPointH.location_id)))
@@ -92,12 +102,12 @@ namespace Tnb.WarehouseMgr
ePoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString() && it.is_lock == 0); ePoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString() && it.is_lock == 0);
} }
//根据每个载具的起始库位做路径运算 //根据每个载具的起始库位做路径运算
for (int i = 0; i < setQty.qty; i++)
{
if (carrys?.Count > 0) if (carrys?.Count > 0)
{
for (int i = 0; i < setQty.qty; i++)
{ {
sPoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == carrys[i].location_id); sPoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == carrys[i].location_id);
}
var isOk = false; var isOk = false;
if (sPoint != null && ePoint != null) if (sPoint != null && ePoint != null)
{ {
@@ -175,7 +185,7 @@ namespace Tnb.WarehouseMgr
{ {
throw new AppFriendlyException("无可出库的空载具或目标库位不存在或者目标库位被锁", 500); throw new AppFriendlyException("无可出库的空载具或目标库位不存在或者目标库位被锁", 500);
} }
}
} }
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
@@ -226,7 +236,7 @@ namespace Tnb.WarehouseMgr
if (input.IsNull()) throw new ArgumentNullException("input"); if (input.IsNull()) throw new ArgumentNullException("input");
try try
{ {
var location = await _db.Queryable<BasLocation>().SingleAsync(it => it.location_code == input.location_code && it.is_type != EnumLocationType..ToString()) ?? throw new AppFriendlyException("无此库位或为存储库位",500); var location = await _db.Queryable<BasLocation>().SingleAsync(it => it.location_code == input.location_code && it.is_type != EnumLocationType..ToString()) ?? throw new AppFriendlyException("无此库位或为存储库位", 500);
Dictionary<string, object> dic = new() Dictionary<string, object> dic = new()
{ {
[nameof(WmsEmptyOutstockH.id)] = SnowflakeIdHelper.NextId(), [nameof(WmsEmptyOutstockH.id)] = SnowflakeIdHelper.NextId(),

View File

@@ -81,8 +81,8 @@ namespace Tnb.WarehouseMgr
//判断目标库位是否自动签收 //判断目标库位是否自动签收
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSOUTSTOCK_ID, true);
await _runService.Create(templateEntity, input);
var carryIds = new List<string>(); var carryIds = new List<string>();
@@ -178,9 +178,19 @@ namespace Tnb.WarehouseMgr
await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync();
await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync();
} }
var carrys = await _db.Queryable<WmsCarryH>().Where(it => carryIds.Contains(it.id)).ToListAsync(); var carrys = await _db.Queryable<WmsCarryH>().Where(it => carryIds.Contains(it.id)).ToListAsync();
if (carrys?.Count > 0) if (carrys?.Count > 0)
{ {
var curCarry = carrys[^carrys.Count];
var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, loc);
if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500);
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSOUTSTOCK_ID, true);
await _runService.Create(templateEntity, input);
List<WmsPretaskH> preTasks = new(); List<WmsPretaskH> preTasks = new();
List<string> locIds = new(); List<string> locIds = new();
foreach (var carry in carrys) foreach (var carry in carrys)
@@ -274,6 +284,9 @@ namespace Tnb.WarehouseMgr
} }
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
} }
catch (Exception) catch (Exception)
@@ -333,7 +346,7 @@ namespace Tnb.WarehouseMgr
outstock.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;// 新增 outstock.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;// 新增
outstock.create_id = _userManager.UserId; outstock.create_id = _userManager.UserId;
outstock.create_time = DateTime.Now; outstock.create_time = DateTime.Now;
await _db.Insertable(outstock).ExecuteCommandAsync();
//明细表 //明细表
foreach (var outstockD in outstockDs!) foreach (var outstockD in outstockDs!)
{ {
@@ -344,7 +357,7 @@ namespace Tnb.WarehouseMgr
outstock.create_time = outstock.create_time; outstock.create_time = outstock.create_time;
outstock.create_id = outstock.create_id; outstock.create_id = outstock.create_id;
} }
await _db.Insertable(outstockDs).ExecuteCommandAsync();
//var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == outstock.location_id.ToString()); //var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == outstock.location_id.ToString());
var carryIds = new List<string>(); var carryIds = new List<string>();
//tablefield120 出库物料明细 //tablefield120 出库物料明细
@@ -432,6 +445,15 @@ namespace Tnb.WarehouseMgr
} }
} }
carryIds = allOutIds.Concat(sortingOutIds).ToList(); carryIds = allOutIds.Concat(sortingOutIds).ToList();
if(carryIds?.Count> 0)
{
var carryId = carryIds[^carryIds.Count];
var curCurry =await _db.Queryable<WmsCarryH>().SingleAsync(it=>it.id == carryId);
var isMatch = await IsCarryAndLocationMatchByCarryStd(curCurry, location);
if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500);
}
await _db.Insertable(outstock).ExecuteCommandAsync();
await _db.Insertable(outstockDs).ExecuteCommandAsync();
await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync();
await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync();

View File

@@ -63,10 +63,14 @@ namespace Tnb.WarehouseMgr
{ {
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
var carry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString());
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc);
if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500);
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTKPDA_ID, true); VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTKPDA_ID, true);
await _runService.Create(templateEntity, input); await _runService.Create(templateEntity, input);
//出库取起点 //出库取起点
var carry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString());
WmsPointH? sPoint = null; WmsPointH? sPoint = null;
WmsPointH? ePoint = null; WmsPointH? ePoint = null;
if (input.data.ContainsKey(nameof(WmsPointH.location_id))) if (input.data.ContainsKey(nameof(WmsPointH.location_id)))
@@ -114,7 +118,6 @@ namespace Tnb.WarehouseMgr
return preTask; return preTask;
}).ToList(); }).ToList();
//判断目标库位是否自动签收 //判断目标库位是否自动签收
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
if (loc.is_sign == 0) if (loc.is_sign == 0)
{ {
preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值