生成电梯任务与判断一托延迟处理,生产入库调整
This commit is contained in:
@@ -135,23 +135,22 @@ namespace Tnb.WarehouseMgr
|
||||
scwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz;
|
||||
}
|
||||
#endregion
|
||||
foreach (WmsPrdInstockDInput prdInstockDInput in input.prdInstockDs)
|
||||
{
|
||||
WmsPrdInstockDs.Add(new WmsPrdInstockD()
|
||||
{
|
||||
task_bill_code = prdInstockDInput.task_bill_code,
|
||||
warehouse_id = prdInstockDInput.warehouse_id,
|
||||
startlocation_id = prdInstockDInput.startlocation_id,
|
||||
carry_id = prdInstockDInput.carry_id,
|
||||
create_id = input.create_id,
|
||||
create_time = DateTime.Now,
|
||||
prd_instock_id = prd_instock_code_id,
|
||||
status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID,
|
||||
scwarehouse_id = scwarehouse_id
|
||||
});
|
||||
}
|
||||
|
||||
List<WmsPrdInstockCode> WmsPrdInstockCodes = new List<WmsPrdInstockCode>();
|
||||
WmsPrdInstockDInput prdInstockDInput = input.prdInstockD;
|
||||
WmsPrdInstockD wmsPrdInstockD = new WmsPrdInstockD()
|
||||
{
|
||||
task_bill_code = prdInstockDInput.task_bill_code,
|
||||
warehouse_id = prdInstockDInput.warehouse_id,
|
||||
startlocation_id = prdInstockDInput.startlocation_id,
|
||||
carry_id = prdInstockDInput.carry_id,
|
||||
create_id = input.create_id,
|
||||
create_time = DateTime.Now,
|
||||
prd_instock_id = prd_instock_code_id,
|
||||
status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID,
|
||||
scwarehouse_id = scwarehouse_id
|
||||
};
|
||||
WmsPrdInstockDs.Add(wmsPrdInstockD);
|
||||
|
||||
foreach (WmsPrdInstockCodeInput prdInstockCodeInput in input.prdInstockCodes)
|
||||
{
|
||||
|
||||
@@ -163,11 +162,14 @@ namespace Tnb.WarehouseMgr
|
||||
code = prdInstockCodeInput.code,
|
||||
unit_id = prdInstockCodeInput.unit_id,
|
||||
carry_id = prdInstockCodeInput.carry_id,
|
||||
prd_instock_id = prd_instock_code_id
|
||||
prd_instock_id = prd_instock_code_id,
|
||||
prd_instockD_id = wmsPrdInstockD.id
|
||||
});
|
||||
}
|
||||
|
||||
await db.Insertable(WmsPrdInstockDs).ExecuteCommandAsync();
|
||||
|
||||
|
||||
await db.Insertable(wmsPrdInstockD).ExecuteCommandAsync();
|
||||
|
||||
await db.Insertable(WmsPrdInstockCodes).ExecuteCommandAsync();
|
||||
|
||||
@@ -185,125 +187,121 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
await semaphoreSlim.WaitAsync();
|
||||
|
||||
foreach (WmsPrdInstockD wmsPrdInstockD in WmsPrdInstockDs)
|
||||
//入库取终点
|
||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = wmsPrdInstockD.warehouse_id, Size = 1 };
|
||||
List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
if (endLocations?.Count == 0)
|
||||
{
|
||||
//入库取终点
|
||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = wmsPrdInstockD.warehouse_id, Size = 1 };
|
||||
List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
if (endLocations?.Count == 0)
|
||||
{
|
||||
throw new AppFriendlyException("没有可用的库位", 500);
|
||||
}
|
||||
BasLocation endLocation = endLocations[0];
|
||||
throw new AppFriendlyException("没有可用的库位", 500);
|
||||
}
|
||||
BasLocation endLocation = endLocations[0];
|
||||
|
||||
BasLocation startLocation = db.Queryable<BasLocation>().Where(r => r.id == wmsPrdInstockD.startlocation_id).First();
|
||||
if (startLocation == null)
|
||||
BasLocation startLocation = db.Queryable<BasLocation>().Where(r => r.id == wmsPrdInstockD.startlocation_id).First();
|
||||
if (startLocation == null)
|
||||
{
|
||||
throw new AppFriendlyException("系统中找不到起点ID的库位信息", 500);
|
||||
}
|
||||
|
||||
BasLocation endlocation_ssx = null;
|
||||
string startlocation_id_ssx = null;
|
||||
|
||||
|
||||
if (type == DictConst.PrdMoTypeZS)
|
||||
{
|
||||
Logger.LogInformation($"【PrdInstock】注塑车间生产提报");
|
||||
// 注塑线边库到2,4输送线
|
||||
// 根据ZSSSXCTU01 ZSSSXCTU02任务数平均分配任务
|
||||
endlocation_ssx = await db.Queryable<BasLocation>().Where(r => new string[2] { "32624148726549", "32624157608981" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
||||
await db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync();
|
||||
|
||||
// ZSSSXCTU01 对应 SSX-011-002
|
||||
if (endlocation_ssx.location_code == "ZSSSXCTU01")
|
||||
{
|
||||
throw new AppFriendlyException("系统中找不到起点ID的库位信息", 500);
|
||||
startlocation_id_ssx = "32609073591317";
|
||||
}
|
||||
// ZSSSXCTU02 对应 SSX-011-004
|
||||
else if (endlocation_ssx.location_code == "ZSSSXCTU02")
|
||||
{
|
||||
startlocation_id_ssx = "32609093546005";
|
||||
}
|
||||
|
||||
BasLocation endlocation_ssx = null;
|
||||
string startlocation_id_ssx = null;
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||
|
||||
|
||||
if (type == DictConst.PrdMoTypeZS)
|
||||
// 生成到输送线任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput1 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput1.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput1.endlocation_id = endlocation_ssx.id;
|
||||
commonCreatePretaskInput1.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput1.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput1.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput1.biz_type = "";
|
||||
commonCreatePretaskInput1.require_id = wmsPrdInstockD.id;
|
||||
commonCreatePretaskInput1.isExcuteMission = false;
|
||||
Entities.Dto.Outputs.Result res1 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput1, db);
|
||||
if (res1.code != HttpStatusCode.OK)
|
||||
{
|
||||
Logger.LogInformation($"【PrdInstock】注塑车间生产提报");
|
||||
// 注塑线边库到2,4输送线
|
||||
// 根据ZSSSXCTU01 ZSSSXCTU02任务数平均分配任务
|
||||
endlocation_ssx = await db.Queryable<BasLocation>().Where(r => new string[2] { "32624148726549", "32624157608981" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
||||
await db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => endlocation_ssx.id == it.id).ExecuteCommandAsync();
|
||||
|
||||
// ZSSSXCTU01 对应 SSX-011-002
|
||||
if (endlocation_ssx.location_code == "ZSSSXCTU01")
|
||||
{
|
||||
startlocation_id_ssx = "32609073591317";
|
||||
}
|
||||
// ZSSSXCTU02 对应 SSX-011-004
|
||||
else if (endlocation_ssx.location_code == "ZSSSXCTU02")
|
||||
{
|
||||
startlocation_id_ssx = "32609093546005";
|
||||
}
|
||||
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||
|
||||
// 生成到输送线任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput1 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput1.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput1.endlocation_id = endlocation_ssx.id;
|
||||
commonCreatePretaskInput1.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput1.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput1.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput1.biz_type = "";
|
||||
commonCreatePretaskInput1.require_id = wmsPrdInstockD.id;
|
||||
commonCreatePretaskInput1.isExcuteMission = false;
|
||||
Entities.Dto.Outputs.Result res1 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput1, db);
|
||||
if (res1.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"注塑车间生成到输送线的任务失败 {res1.msg}");
|
||||
}
|
||||
|
||||
// 生成到中储仓任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput2.startlocation_id = startlocation_id_ssx;
|
||||
commonCreatePretaskInput2.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput2.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID;
|
||||
commonCreatePretaskInput2.require_id = wmsPrdInstockD.id;
|
||||
commonCreatePretaskInput2.isChangeCarryLoc2StartLoc = false;
|
||||
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"注塑车间生成到中储仓的任务失败 {res2.msg}");
|
||||
}
|
||||
}
|
||||
else if (type == DictConst.PrdMoTypeJC)
|
||||
{
|
||||
Logger.LogInformation($"【PrdInstock】挤出车间生产提报");
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||
|
||||
// 生成到中储仓任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput2.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput2.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput2.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID;
|
||||
commonCreatePretaskInput2.require_id = wmsPrdInstockD.id;
|
||||
commonCreatePretaskInput2.isChangeCarryLoc2StartLoc = false;
|
||||
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"挤出车间生成到中储仓的任务失败 {res2.msg}");
|
||||
}
|
||||
}
|
||||
else if (type == DictConst.PrdMoTypeBZ)
|
||||
{
|
||||
Logger.LogInformation($"【PrdInstock】包装车间生产提报");
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||
|
||||
// 生成任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput2.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput2.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput2.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID;
|
||||
commonCreatePretaskInput2.require_id = wmsPrdInstockD.id;
|
||||
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"包装车间生成任务失败 {res2.msg}");
|
||||
}
|
||||
throw new Exception($"注塑车间生成到输送线的任务失败 {res1.msg}");
|
||||
}
|
||||
|
||||
// 生成到中储仓任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput2.startlocation_id = startlocation_id_ssx;
|
||||
commonCreatePretaskInput2.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput2.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID;
|
||||
commonCreatePretaskInput2.require_id = wmsPrdInstockD.id;
|
||||
commonCreatePretaskInput2.isChangeCarryLoc2StartLoc = false;
|
||||
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"注塑车间生成到中储仓的任务失败 {res2.msg}");
|
||||
}
|
||||
}
|
||||
else if (type == DictConst.PrdMoTypeJC)
|
||||
{
|
||||
Logger.LogInformation($"【PrdInstock】挤出车间生产提报");
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||
|
||||
// 生成到中储仓任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput2.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput2.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput2.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID;
|
||||
commonCreatePretaskInput2.require_id = wmsPrdInstockD.id;
|
||||
commonCreatePretaskInput2.isChangeCarryLoc2StartLoc = false;
|
||||
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"挤出车间生成到中储仓的任务失败 {res2.msg}");
|
||||
}
|
||||
}
|
||||
else if (type == DictConst.PrdMoTypeBZ)
|
||||
{
|
||||
Logger.LogInformation($"【PrdInstock】包装车间生产提报");
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||
|
||||
// 生成任务
|
||||
CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput2.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput2.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput2.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput2.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput2.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput2.biz_type = WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID;
|
||||
commonCreatePretaskInput2.require_id = wmsPrdInstockD.id;
|
||||
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"包装车间生成任务失败 {res2.msg}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -337,6 +335,8 @@ namespace Tnb.WarehouseMgr
|
||||
// 如果生产入库 输送线到仓库这条任务完成,反写单据数据
|
||||
if (input.bizTypeId == WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID)
|
||||
{
|
||||
|
||||
|
||||
isOk = await _db.Updateable<WmsPrdInstockD>()
|
||||
.SetColumns(it => new WmsPrdInstockD { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID })
|
||||
.Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync();
|
||||
@@ -347,7 +347,7 @@ namespace Tnb.WarehouseMgr
|
||||
// BasWarehouse kcWarehouse = await _db.Queryable<BasWarehouse>().SingleAsync(x=>x.id==wmsPrdInstockD.warehouse_id);
|
||||
PrdReport prdReport = await _db.Queryable<PrdReport>().SingleAsync(x => x.id == instock.prd_report_id);
|
||||
|
||||
List<WmsPrdInstockCode> allInstockDetails = await _db.Queryable<WmsPrdInstockCode>().Where(it => it.prd_instock_id == instock.id).ToListAsync();
|
||||
List<WmsPrdInstockCode> allInstockDetails = await _db.Queryable<WmsPrdInstockCode>().Where(it => it.prd_instockD_id == wmsPrdInstockD.id).ToListAsync();
|
||||
|
||||
List<String> materialIds = Arrays.AsList(instock.material_id);
|
||||
List<String> unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList();
|
||||
|
||||
Reference in New Issue
Block a user