生成电梯任务与判断一托延迟处理,生产入库调整
This commit is contained in:
@@ -2320,7 +2320,7 @@ namespace Tnb.ProductionMgr
|
|||||||
List<string> ids = prdVisionResultRecords.Select(x => x.id).ToList();
|
List<string> ids = prdVisionResultRecords.Select(x => x.id).ToList();
|
||||||
|
|
||||||
await db.Updateable<PrdVisionResultRecord>().SetColumns(x => x.status == 1).Where(x => ids.Contains(x.id)).ExecuteCommandAsync();
|
await db.Updateable<PrdVisionResultRecord>().SetColumns(x => x.status == 1).Where(x => ids.Contains(x.id)).ExecuteCommandAsync();
|
||||||
await ReportInstock(new CheckCompleteInput()
|
await ReportInstock(new CheckCompleteInput()
|
||||||
{
|
{
|
||||||
report_id = report.id,
|
report_id = report.id,
|
||||||
pqty = report.reported_qty.ParseToDecimal(),
|
pqty = report.reported_qty.ParseToDecimal(),
|
||||||
@@ -2397,15 +2397,14 @@ namespace Tnb.ProductionMgr
|
|||||||
wmsPrdInstockInput.type = prdMo.mo_type;
|
wmsPrdInstockInput.type = prdMo.mo_type;
|
||||||
wmsPrdInstockInput.create_id = report.create_id;
|
wmsPrdInstockInput.create_id = report.create_id;
|
||||||
wmsPrdInstockInput.prd_report_id = report.id;
|
wmsPrdInstockInput.prd_report_id = report.id;
|
||||||
wmsPrdInstockInput.prdInstockDs = new List<WmsPrdInstockDInput>();
|
|
||||||
wmsPrdInstockInput.prdInstockCodes = new List<WmsPrdInstockCodeInput>();
|
wmsPrdInstockInput.prdInstockCodes = new List<WmsPrdInstockCodeInput>();
|
||||||
wmsPrdInstockInput.prdInstockDs.Add(new WmsPrdInstockDInput()
|
wmsPrdInstockInput.prdInstockD = new WmsPrdInstockDInput()
|
||||||
{
|
{
|
||||||
task_bill_code = prdMoTask.mo_task_code,
|
task_bill_code = prdMoTask.mo_task_code,
|
||||||
warehouse_id = report.warehouse_id,
|
warehouse_id = report.warehouse_id,
|
||||||
startlocation_id = location.id,
|
startlocation_id = location.id,
|
||||||
carry_id = wmsCarryH.id,
|
carry_id = wmsCarryH.id,
|
||||||
});
|
};
|
||||||
|
|
||||||
if (prdMoTask.schedule_type == 1)
|
if (prdMoTask.schedule_type == 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1941,7 +1941,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
//WCS下发任务前会判断是否一托下 防止向WCS发送一托下指令和下发任务同步进行
|
//WCS下发任务前会判断是否一托下 防止向WCS发送一托下指令和下发任务同步进行
|
||||||
await s_elevatortaskWCSRequest.WaitAsync();
|
await s_elevatortaskWCSRequest.WaitAsync();
|
||||||
|
|
||||||
|
|
||||||
var db_ElevatorTaskExceptionHandle = _wareHouseService.db_ElevatorTaskExceptionHandles[index];
|
var db_ElevatorTaskExceptionHandle = _wareHouseService.db_ElevatorTaskExceptionHandles[index];
|
||||||
taskActions[index] = Task.Run(async () =>
|
taskActions[index] = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
@@ -1953,7 +1952,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
.Where(r => r.area_code == area && r.act_end_date == null
|
.Where(r => r.area_code == area && r.act_end_date == null
|
||||||
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
|
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
|
||||||
|
|
||||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】检查到需要恢复/执行的电梯任务{elevatorTasks.Count}条 {string.Join(',', elevatorTasks.Select(x => x.bill_code))}");
|
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】检查到需要恢复/执行的电梯{area}任务{elevatorTasks.Count}条 {string.Join(',', elevatorTasks.Select(x => x.bill_code))}");
|
||||||
|
|
||||||
if (elevatorTasks?.Count > 0)
|
if (elevatorTasks?.Count > 0)
|
||||||
{
|
{
|
||||||
@@ -1968,6 +1967,14 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
var e = await _wareHouseService.FindElevatorFromPars(q);
|
var e = await _wareHouseService.FindElevatorFromPars(q);
|
||||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
|
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
|
||||||
|
|
||||||
|
// 存在叉车已放货完成电梯任务还没生成的情况,这种情况等待完成
|
||||||
|
WmsElevatorH wmsElevator = await db_ElevatorTaskExceptionHandle.Queryable<WmsElevatorH>().Where(r => r.elevator_id == e.device_id).FirstAsync();
|
||||||
|
if (wmsElevator.carry_count != elevatorTasks.Count)
|
||||||
|
{
|
||||||
|
throw new Exception($"电梯{e.elevator_code}内放货托盘为{wmsElevator.carry_count}托,已生成的电梯任务为{elevatorTasks.Count},需要等待电梯任务生成");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 三、四号梯发货带两托货
|
// 三、四号梯发货带两托货
|
||||||
string[] doubleCarryRunElevators =
|
string[] doubleCarryRunElevators =
|
||||||
{
|
{
|
||||||
@@ -1976,7 +1983,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
if (doubleCarryRunElevators.Contains(e.elevator_code) && wmsDistaskHs[0].end_floor == 1)
|
if (doubleCarryRunElevators.Contains(e.elevator_code) && wmsDistaskHs[0].end_floor == 1)
|
||||||
{
|
{
|
||||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】判断为三四号梯任务");
|
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】判断为三四号梯任务");
|
||||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】现在有{group.Count()}托货");
|
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】现在{e.elevator_code}有{group.Count()}托货");
|
||||||
// 电梯内放置两托货呼叫电梯下
|
// 电梯内放置两托货呼叫电梯下
|
||||||
if (group.Count() == 2)
|
if (group.Count() == 2)
|
||||||
{
|
{
|
||||||
@@ -1994,7 +2001,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
else if (group.Count() == 1)
|
else if (group.Count() == 1)
|
||||||
{
|
{
|
||||||
// 如果当前电梯没有执行中的任务 则呼叫电梯下
|
// 如果当前电梯没有执行中的任务 则呼叫电梯下
|
||||||
|
|
||||||
if (db_ElevatorTaskExceptionHandle.Queryable<WmsDistaskH>().Where(r => r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID
|
if (db_ElevatorTaskExceptionHandle.Queryable<WmsDistaskH>().Where(r => r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID
|
||||||
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.endlocation_id == wmsDistaskHs[0].startlocation_id).Count() == 0)
|
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.endlocation_id == wmsDistaskHs[0].startlocation_id).Count() == 0)
|
||||||
{
|
{
|
||||||
@@ -2003,7 +2009,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
wmsDistaskHs[0].device_id = e.device_id;
|
wmsDistaskHs[0].device_id = e.device_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】呼叫电梯 {e.elevator_code}");
|
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】呼叫电梯 {e.elevator_code}");
|
||||||
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs, db_ElevatorTaskExceptionHandle);
|
await _wareHouseService.ExecuteTargetFloorTask(wmsDistaskHs, db_ElevatorTaskExceptionHandle);
|
||||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】呼叫电梯 {e.elevator_code}执行完成");
|
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】呼叫电梯 {e.elevator_code}执行完成");
|
||||||
@@ -2034,8 +2039,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
}
|
}
|
||||||
catch (ObjectDisposedException ex)
|
catch (ObjectDisposedException ex)
|
||||||
{
|
{
|
||||||
LoggerElevatorTask.LogError($"【ElevatorTaskExceptionHandle】 数据库连接异常:{ex.Message}");
|
LoggerElevatorTask.LogWarning($"【ElevatorTaskExceptionHandle】 数据库连接异常:{ex.Message}");
|
||||||
LoggerElevatorTask.LogError($"【ElevatorTaskExceptionHandle】 数据库连接异常:{ex.StackTrace}");
|
LoggerElevatorTask.LogWarning($"【ElevatorTaskExceptionHandle】 数据库连接异常:{ex.StackTrace}");
|
||||||
if (ex.Source == "Npgsql")
|
if (ex.Source == "Npgsql")
|
||||||
db_ElevatorTaskExceptionHandle = _repository.AsSugarClient().CopyNew();
|
db_ElevatorTaskExceptionHandle = _repository.AsSugarClient().CopyNew();
|
||||||
}
|
}
|
||||||
@@ -2373,15 +2378,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
await db_Floor4MJX2MJC.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync();
|
await db_Floor4MJX2MJC.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync();
|
||||||
//锁定终点库位
|
//锁定终点库位
|
||||||
await db_Floor4MJX2MJC.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == endlocation.id).ExecuteCommandAsync();
|
await db_Floor4MJX2MJC.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == endlocation.id).ExecuteCommandAsync();
|
||||||
|
|
||||||
bool result_createPretask = await createPretask(startlocation.id, endlocation.id, wmsCarryH.id, wmsCarryH.carry_code, LoggerFloor4MJX2MJC, db_Floor4MJX2MJC);
|
|
||||||
if (!result_createPretask)
|
|
||||||
{
|
|
||||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
|
||||||
throw new Exception($"【四楼待灭菌线到灭菌仓】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
|
||||||
}
|
|
||||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成成功");
|
|
||||||
|
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
WmsSterilizationInstockH wmsSterilizationInstockH = new WmsSterilizationInstockH();
|
WmsSterilizationInstockH wmsSterilizationInstockH = new WmsSterilizationInstockH();
|
||||||
wmsSterilizationInstockH.carry_id = wmsCarryH.id;
|
wmsSterilizationInstockH.carry_id = wmsCarryH.id;
|
||||||
@@ -2402,6 +2399,15 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
else
|
else
|
||||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 灭菌入库记录生成失败");
|
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 灭菌入库记录生成失败");
|
||||||
|
|
||||||
|
bool result_createPretask = await createPretask(startlocation.id, endlocation.id, wmsCarryH.id, wmsCarryH.carry_code, LoggerFloor4MJX2MJC, db_Floor4MJX2MJC, WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID, "", wmsSterilizationInstockH.id);
|
||||||
|
if (!result_createPretask)
|
||||||
|
{
|
||||||
|
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
||||||
|
throw new Exception($"【四楼待灭菌线到灭菌仓】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
||||||
|
}
|
||||||
|
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成成功");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
await db_Floor4MJX2MJC.Ado.CommitTranAsync();
|
await db_Floor4MJX2MJC.Ado.CommitTranAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto
|
|||||||
{
|
{
|
||||||
public class WmsPrdInstockCodeInput
|
public class WmsPrdInstockCodeInput
|
||||||
{
|
{
|
||||||
|
public string prd_instockd_id { get; set; }
|
||||||
public decimal planqty { get; set; }
|
public decimal planqty { get; set; }
|
||||||
public decimal pqty { get; set; }
|
public decimal pqty { get; set; }
|
||||||
public string code_batch { get; set; }
|
public string code_batch { get; set; }
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs
|
|||||||
public string type { get; set; }
|
public string type { get; set; }
|
||||||
public string create_id { get; set; }
|
public string create_id { get; set; }
|
||||||
public string prd_report_id { get; set; }
|
public string prd_report_id { get; set; }
|
||||||
public List<WmsPrdInstockDInput> prdInstockDs { get; set; }
|
public WmsPrdInstockDInput prdInstockD { get; set; }
|
||||||
public List<WmsPrdInstockCodeInput> prdInstockCodes { get; set; }
|
public List<WmsPrdInstockCodeInput> prdInstockCodes { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,4 +100,10 @@ public partial class WmsElevatorH : BaseEntity<string>
|
|||||||
/// 占用任务
|
/// 占用任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string use_tasks { get; set; }
|
public string use_tasks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 电梯内托数
|
||||||
|
/// </summary>
|
||||||
|
public int carry_count { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ public partial class WmsPrdInstockCode : BaseEntity<string>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string? prd_instock_id { get; set; }
|
public string? prd_instock_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入库明细id
|
||||||
|
/// </summary>
|
||||||
|
public string? prd_instockD_id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 载具ID
|
/// 载具ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2375,13 +2375,22 @@ namespace Tnb.WarehouseMgr
|
|||||||
int doorStatus = -1;
|
int doorStatus = -1;
|
||||||
bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
|
bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
|
||||||
Logger.Information($"{devName.Match(@"\d+")}#梯 关门结果:{closeDoorRes}");
|
Logger.Information($"{devName.Match(@"\d+")}#梯 关门结果:{closeDoorRes}");
|
||||||
|
|
||||||
|
// 检查门状态
|
||||||
|
int checkCloseDoor = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
checkCloseDoor++;
|
||||||
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
||||||
Logger.Information($"{devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
|
Logger.Information($"第{checkCloseDoor}次 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
|
||||||
|
// 30次后重试
|
||||||
|
if (checkCloseDoor >= 30)
|
||||||
|
{
|
||||||
|
throw new Exception($"电梯{devName}关门状态判断已达30次,即将重新执行这批电梯任务");
|
||||||
|
}
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
} while (doorStatus != 4);
|
} while (doorStatus != 4);
|
||||||
Logger.Information($"结束判断 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
|
Logger.Information($"第{checkCloseDoor}次 结束判断 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
|
||||||
|
|
||||||
int floor = await GetRealFloor(devName, disTask.end_floor);
|
int floor = await GetRealFloor(devName, disTask.end_floor);
|
||||||
|
|
||||||
@@ -2394,10 +2403,20 @@ namespace Tnb.WarehouseMgr
|
|||||||
//发送到目标楼的指令
|
//发送到目标楼的指令
|
||||||
dynamic result = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor);
|
dynamic result = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor);
|
||||||
|
|
||||||
|
// 检查电梯下行状态
|
||||||
|
int checkRunDoor = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
checkRunDoor++;
|
||||||
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||||
Logger.Information($"{devName.Match(@"\d+")}#梯 sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
|
Logger.Information($"{devName.Match(@"\d+")}#梯 sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
|
||||||
|
|
||||||
|
Logger.Information($"第{checkCloseDoor}次 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
|
||||||
|
// 180次后重试
|
||||||
|
if (checkRunDoor >= 180)
|
||||||
|
{
|
||||||
|
throw new Exception($"电梯{devName}运行状态判断已达180次,即将重新执行这批电梯任务");
|
||||||
|
}
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
} while (tuple.sysStatus != 3 || tuple.runStatus != 0 || floor != tuple.floorNo);
|
} while (tuple.sysStatus != 3 || tuple.runStatus != 0 || floor != tuple.floorNo);
|
||||||
|
|
||||||
@@ -2417,7 +2436,8 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Error("执行到目标楼层电梯任务失败", ex);
|
Logger.LogWarning("执行到目标楼层电梯任务失败", ex.Message);
|
||||||
|
Logger.LogWarning("执行到目标楼层电梯任务失败", ex.StackTrace);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2594,6 +2614,24 @@ namespace Tnb.WarehouseMgr
|
|||||||
_ = await db.Updateable<BasLocation>().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync();
|
_ = await db.Updateable<BasLocation>().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<WmsDistaskH> disTasks = db.Queryable<WmsDistaskH>().Where(r => input.disTaskIds.Contains(r.id)).ToList();
|
||||||
|
foreach (WmsDistaskH disTask in disTasks)
|
||||||
|
{
|
||||||
|
// 出电梯减一托盘数
|
||||||
|
if (disTask.startlocation_code.Contains("DT") && !disTask.endlocation_code.Contains("DT"))
|
||||||
|
{
|
||||||
|
ElevagorInfoQuery q = new() { startlocation_id = disTask.startlocation_id, taskCode = disTask.bill_code };
|
||||||
|
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯参数 {JsonConvert.SerializeObject(q)}");
|
||||||
|
var e = await FindElevatorFromPars(q);
|
||||||
|
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
|
||||||
|
|
||||||
|
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
|
||||||
|
{
|
||||||
|
carry_count = r.carry_count - 1
|
||||||
|
}).Where(r => r.elevator_id == e.device_id).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await db.Ado.CommitTranAsync();
|
await db.Ado.CommitTranAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2632,6 +2670,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
List<string> preTaskIds = disTasks.Select(x => x.pretask_id).ToList();
|
List<string> preTaskIds = disTasks.Select(x => x.pretask_id).ToList();
|
||||||
_ = await db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
|
_ = await db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
#region 电梯
|
||||||
WmsElevatorH wmsElevatorH = await db.Queryable<WmsElevatorH>().Where(r => disTasks.Select(x => x.area_code).Contains(r.area_code)).FirstAsync();
|
WmsElevatorH wmsElevatorH = await db.Queryable<WmsElevatorH>().Where(r => disTasks.Select(x => x.area_code).Contains(r.area_code)).FirstAsync();
|
||||||
if (wmsElevatorH != null)
|
if (wmsElevatorH != null)
|
||||||
{
|
{
|
||||||
@@ -2645,6 +2684,24 @@ namespace Tnb.WarehouseMgr
|
|||||||
Logger.LogInformation($"【TaskComplate】更新电梯{disTasks[0].area_code}任务行数{eleUpdateRow}");
|
Logger.LogInformation($"【TaskComplate】更新电梯{disTasks[0].area_code}任务行数{eleUpdateRow}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var disTask in disTasks)
|
||||||
|
{
|
||||||
|
// 进电梯任务加一托盘数
|
||||||
|
if (disTask.endlocation_code.Contains("DT") && !disTask.startlocation_code.Contains("DT"))
|
||||||
|
{
|
||||||
|
ElevagorInfoQuery q = new() { endlocation_id = disTask.endlocation_id, taskCode = disTask.bill_code };
|
||||||
|
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯参数 {JsonConvert.SerializeObject(q)}");
|
||||||
|
var e = await FindElevatorFromPars(q);
|
||||||
|
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
|
||||||
|
|
||||||
|
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
|
||||||
|
{
|
||||||
|
carry_count = r.carry_count + 1
|
||||||
|
}).Where(r => r.elevator_id == e.device_id).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
// 更新任务数量
|
// 更新任务数量
|
||||||
_ = await db.Updateable<BasLocation>().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Select(x => x.endlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
|
_ = await db.Updateable<BasLocation>().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Select(x => x.endlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
|
||||||
@@ -4064,7 +4121,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
await _db.Updateable<BasCoderules>().SetColumns(r => r.waternumber == waternumber).Where(r => r.id == basCoderules.id).ExecuteCommandAsync();
|
await _db.Updateable<BasCoderules>().SetColumns(r => r.waternumber == waternumber).Where(r => r.id == basCoderules.id).ExecuteCommandAsync();
|
||||||
watercode = waternumber.ToString().PadLeft(watercodeLength, '0');
|
watercode = waternumber.ToString().PadLeft(watercodeLength, '0');
|
||||||
}
|
}
|
||||||
return prefix + custom + watercode;
|
return watercode;
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -124,8 +124,9 @@ namespace Tnb.WarehouseMgr
|
|||||||
//string code = $"WWSH{watercode}";
|
//string code = $"WWSH{watercode}";
|
||||||
|
|
||||||
string code_batch = string.IsNullOrEmpty(WmsOutsourceD.code_batch) ? "" : WmsOutsourceD.code_batch;
|
string code_batch = string.IsNullOrEmpty(WmsOutsourceD.code_batch) ? "" : WmsOutsourceD.code_batch;
|
||||||
string code = await _wareHouseService.CreateCodeRules("", WmsOutsourceD.matcode + code_batch, 4);
|
string watercode = await _wareHouseService.CreateCodeRules("", WmsOutsourceD.matcode + code_batch, 4);
|
||||||
|
|
||||||
|
string code = $"{WmsOutsourceD.matcode}-{WmsOutsourceD.code_batch}-{watercode}";
|
||||||
WmsTempCode barCode = new()
|
WmsTempCode barCode = new()
|
||||||
{
|
{
|
||||||
material_id = WmsOutsourceD.matcode_id,
|
material_id = WmsOutsourceD.matcode_id,
|
||||||
|
|||||||
@@ -135,23 +135,22 @@ namespace Tnb.WarehouseMgr
|
|||||||
scwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz;
|
scwarehouse_id = WmsWareHouseConst.bipwarehouseid_bz;
|
||||||
}
|
}
|
||||||
#endregion
|
#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>();
|
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)
|
foreach (WmsPrdInstockCodeInput prdInstockCodeInput in input.prdInstockCodes)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -163,11 +162,14 @@ namespace Tnb.WarehouseMgr
|
|||||||
code = prdInstockCodeInput.code,
|
code = prdInstockCodeInput.code,
|
||||||
unit_id = prdInstockCodeInput.unit_id,
|
unit_id = prdInstockCodeInput.unit_id,
|
||||||
carry_id = prdInstockCodeInput.carry_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();
|
await db.Insertable(WmsPrdInstockCodes).ExecuteCommandAsync();
|
||||||
|
|
||||||
@@ -185,125 +187,121 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
await semaphoreSlim.WaitAsync();
|
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)
|
||||||
{
|
{
|
||||||
//入库取终点
|
throw new AppFriendlyException("没有可用的库位", 500);
|
||||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = wmsPrdInstockD.warehouse_id, Size = 1 };
|
}
|
||||||
List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
BasLocation endLocation = endLocations[0];
|
||||||
if (endLocations?.Count == 0)
|
|
||||||
{
|
|
||||||
throw new AppFriendlyException("没有可用的库位", 500);
|
|
||||||
}
|
|
||||||
BasLocation endLocation = endLocations[0];
|
|
||||||
|
|
||||||
BasLocation startLocation = db.Queryable<BasLocation>().Where(r => r.id == wmsPrdInstockD.startlocation_id).First();
|
BasLocation startLocation = db.Queryable<BasLocation>().Where(r => r.id == wmsPrdInstockD.startlocation_id).First();
|
||||||
if (startLocation == null)
|
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;
|
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync();
|
||||||
string startlocation_id_ssx = null;
|
|
||||||
|
|
||||||
|
// 生成到输送线任务
|
||||||
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】注塑车间生产提报");
|
throw new Exception($"注塑车间生成到输送线的任务失败 {res1.msg}");
|
||||||
// 注塑线边库到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}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 生成到中储仓任务
|
||||||
|
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)
|
if (input.bizTypeId == WmsWareHouseConst.BIZTYPE_WMSPRDINSTOCK_ID)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
isOk = await _db.Updateable<WmsPrdInstockD>()
|
isOk = await _db.Updateable<WmsPrdInstockD>()
|
||||||
.SetColumns(it => new WmsPrdInstockD { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID })
|
.SetColumns(it => new WmsPrdInstockD { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID })
|
||||||
.Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync();
|
.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);
|
// 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);
|
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> materialIds = Arrays.AsList(instock.material_id);
|
||||||
List<String> unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList();
|
List<String> unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList();
|
||||||
|
|||||||
@@ -361,9 +361,9 @@ namespace Tnb.WarehouseMgr
|
|||||||
//string watercode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PURCHASE_MAT_ENCODE);
|
//string watercode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PURCHASE_MAT_ENCODE);
|
||||||
|
|
||||||
string code_batch = string.IsNullOrEmpty(WmsPurchaseD.code_batch) ? "" : WmsPurchaseD.code_batch;
|
string code_batch = string.IsNullOrEmpty(WmsPurchaseD.code_batch) ? "" : WmsPurchaseD.code_batch;
|
||||||
string code = await _wareHouseService.CreateCodeRules("", WmsPurchaseD.material_code + code_batch, 4);
|
string watercode = await _wareHouseService.CreateCodeRules("", WmsPurchaseD.material_code + code_batch, 4);
|
||||||
|
|
||||||
//string code = $"CGSH{watercode}";
|
string code = $"{WmsPurchaseD.material_code}-{WmsPurchaseD.code_batch}-{watercode}";
|
||||||
WmsTempCode barCode = new()
|
WmsTempCode barCode = new()
|
||||||
{
|
{
|
||||||
material_id = WmsPurchaseD.material_id,
|
material_id = WmsPurchaseD.material_id,
|
||||||
|
|||||||
@@ -249,8 +249,9 @@ namespace Tnb.WarehouseMgr
|
|||||||
|
|
||||||
//string code = $"YCLDBRK{watercode}";
|
//string code = $"YCLDBRK{watercode}";
|
||||||
string code_batch = string.IsNullOrEmpty(WmsRawmatTransferinstockD.code_batch) ? "" : WmsRawmatTransferinstockD.code_batch;
|
string code_batch = string.IsNullOrEmpty(WmsRawmatTransferinstockD.code_batch) ? "" : WmsRawmatTransferinstockD.code_batch;
|
||||||
string code = await _wareHouseService.CreateCodeRules("", WmsRawmatTransferinstockD.matcode + code_batch, 4);
|
string watercode = await _wareHouseService.CreateCodeRules("", WmsRawmatTransferinstockD.matcode + code_batch, 4);
|
||||||
|
|
||||||
|
string code = $"{WmsRawmatTransferinstockD.matcode}-{WmsRawmatTransferinstockD.code_batch}-{watercode}";
|
||||||
WmsTempCode barCode = new()
|
WmsTempCode barCode = new()
|
||||||
{
|
{
|
||||||
material_id = WmsRawmatTransferinstockD.matcode_id,
|
material_id = WmsRawmatTransferinstockD.matcode_id,
|
||||||
|
|||||||
@@ -62,11 +62,23 @@ namespace Tnb.WarehouseMgr
|
|||||||
throw new ArgumentNullException(nameof(input));
|
throw new ArgumentNullException(nameof(input));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isOk = await _db.Updateable<WmsSterilizationInstockH>().SetColumns(it => new WmsSterilizationInstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID })
|
|
||||||
.Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync();
|
BasLocation endLocation = await _db.Queryable<BasLocation>().Where(r => r.id == input.wmsDistaskH.endlocation_id).FirstAsync();
|
||||||
if (!isOk)
|
// 生产入库(灭菌完成) 仓库传 1001A1100000001MA8KP
|
||||||
|
if (endLocation.wh_id == WmsWareHouseConst.WAREHOUSE_MJC_ID)
|
||||||
{
|
{
|
||||||
throw Oops.Oh(ErrorCode.COM1001);
|
|
||||||
|
}
|
||||||
|
// 生产入库(成品) 仓库传 1001A1100000001MA8ME
|
||||||
|
else if (endLocation.wh_id == WmsWareHouseConst.WAREHOUSE_CP_ID)
|
||||||
|
{
|
||||||
|
bool isOk = await _db.Updateable<WmsSterilizationInstockH>().SetColumns(it => new WmsSterilizationInstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID })
|
||||||
|
.Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync();
|
||||||
|
if (!isOk)
|
||||||
|
{
|
||||||
|
throw Oops.Oh(ErrorCode.COM1001);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user