wms 生成任务代码调整

This commit is contained in:
alex
2023-06-28 15:58:41 +08:00
parent 40db052f9b
commit 0cb5abb2ef
5 changed files with 111 additions and 7 deletions

View File

@@ -270,7 +270,7 @@ namespace Tnb.WarehouseMgr
}
//获取所有未下发的预任务申请
var preTasks = await _db.Queryable<WmsPretaskH>().InnerJoin<WmsCarryH>((a, b) => a.startlocation_id == b.location_id)
var preTasks = await _db.Queryable<WmsPretaskH>().InnerJoin<WmsCarryH>((a, b) => a.startlocation_id == b.location_id && a.carry_id == b.id)
.InnerJoin<WmsAreaH>((a, b, c) => a.area_id == c.id)
.Where(a => a.status == WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID)
.OrderBy(a => new { priority = SqlFunc.Desc(a.priority), a.bill_code })
@@ -279,15 +279,20 @@ namespace Tnb.WarehouseMgr
move_num = c.move_num
}, true)
.ToListAsync();
var ids = preTasks.Select(x => x.id).Distinct().ToList();
var preTaskCodes = await _db.Queryable<WmsPretaskCode>().Where(it => ids.Contains(it.bill_id)).ToListAsync();
if (preTasks.Count > 0)
{
//根据预任务管理区分组,获取到所有分组后的预任务,遍历每个预任务 是否为任务链通过管理区ID
var preTaskGroups = preTasks.GroupBy(g => g.area_code).ToList();
List<WmsDistaskH> disTasks = new();
List<WmsDistaskCode> distaskCodes = new();
foreach (var itGroup in preTaskGroups)
{
var moveNum = itGroup.First().move_num;
var items = itGroup.Adapt<List<WmsDistaskH>>();
items.ForEach(x => SnowflakeIdHelper.NextId());
items.ForEach(x =>
{
x.status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID;
@@ -325,14 +330,34 @@ namespace Tnb.WarehouseMgr
await _taskChainAttrHandle(items, areaPreTasks, moveNum);
}
}
if (preTaskCodes?.Count > 0)
{
foreach (var disTask in items)
{
var curPreTaskCodes = preTaskCodes.FindAll(x => x.bill_id == disTask.pretask_id);
var curDisTaskCodes = curPreTaskCodes.Adapt<List<WmsDistaskCode>>();
curPreTaskCodes.ForEach(x =>
{
x.id = SnowflakeIdHelper.NextId();
x.bill_id = disTask.id;
x.create_time = DateTime.Now;
});
distaskCodes.AddRange(curDisTaskCodes);
}
}
disTasks.AddRange(items);
}
try
{
await _db.Ado.BeginTranAsync();
disTasks.ForEach(x => x.id = SnowflakeIdHelper.NextId());
//disTasks.ForEach(x => x.id = SnowflakeIdHelper.NextId());
var row = await _db.Insertable(disTasks).ExecuteCommandAsync();
if (preTaskCodes?.Count > 0)
{
row = await _db.Insertable(distaskCodes).ExecuteCommandAsync();
}
if (row > 0)
{
var preTaskIds = preTasks.Select(x => x.id).ToList();
@@ -462,7 +487,7 @@ namespace Tnb.WarehouseMgr
{
carryStatus = ((int)EnumCarryStatus.).ToString();
}
var cStatus =carryStatus.ParseToInt();
var cStatus = carryStatus.ParseToInt();
await _db.Updateable<BasLocation>().SetColumns(it => new BasLocation { is_use = cStatus, is_lock = 0 }).Where(it => it.id == multis[i].endlocation_id).ExecuteCommandAsync();
}
//更新业务主表的单据状态