Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -2420,7 +2420,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 四楼待灭菌线到灭菌仓
|
||||
/// 四楼灭菌线到解析仓
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private async void Floor4MJX2MJC(object? args)
|
||||
@@ -2432,8 +2432,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
stopwatch.Start();
|
||||
try
|
||||
{
|
||||
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼待灭菌线到灭菌仓");
|
||||
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼待灭菌线到灭菌仓");
|
||||
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼灭菌线到解析仓");
|
||||
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼灭菌线到解析仓");
|
||||
|
||||
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
||||
getdic.Add("MJQ-QU01", new string[] { "4楼下料输送西区", "下料工位1请求取盘", "下料工位1条码" });
|
||||
@@ -2446,75 +2446,89 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
bool result = await GetBoolTag(strs[0], strs[1]);
|
||||
if (result)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 下料点 {key} {strs[1]}采集到 {result}");
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new()
|
||||
SemaphoreSlim semaphoreSlim = null;
|
||||
try
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_MJC_ID,
|
||||
Size = 1
|
||||
};
|
||||
List<BasLocation> items = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
semaphoreSlim = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_MJC_ID);
|
||||
await semaphoreSlim.WaitAsync();
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼灭菌线到解析仓】 下料点 {key} {strs[1]}采集到 {result}");
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_MJC_ID,
|
||||
Size = 1
|
||||
};
|
||||
List<BasLocation> items = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
|
||||
if (items.Count < 1)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼灭菌线到解析仓】 没有可以入库的库位");
|
||||
break;
|
||||
}
|
||||
var endlocation = items.First();
|
||||
|
||||
await db_Floor4MJX2MJC.Ado.BeginTranAsync();
|
||||
BasLocation startlocation = await db_Floor4MJX2MJC.Queryable<BasLocation>().Where(r => r.location_code == key).FirstAsync();
|
||||
|
||||
if (startlocation.is_lock == 1)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼灭菌线到解析仓】 起点库位{startlocation.location_code}已锁定");
|
||||
continue;
|
||||
}
|
||||
string carry_code = (await GetStringTag(strs[0], strs[2])).Replace("\r", "").Replace(" ", "");
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼灭菌线到解析仓】 下料点 {key} {strs[2]}采集到 {carry_code}");
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼灭菌线到解析仓】 下料点 {key} {strs[2]}采集到长度 {carry_code.Length}");
|
||||
WmsCarryH wmsCarryH = await db_Floor4MJX2MJC.Queryable<WmsCarryH>().Where(r => r.carry_code == carry_code).FirstAsync();
|
||||
if (wmsCarryH == null)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼灭菌线到解析仓】 托盘号{carry_code}在系统中不存在");
|
||||
continue;
|
||||
}
|
||||
//锁定起点库位
|
||||
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();
|
||||
|
||||
DateTime dateTime = DateTime.Now;
|
||||
WmsSterilizationInstockH wmsSterilizationInstockH = new WmsSterilizationInstockH();
|
||||
string code = await _billRullService.GetBillNumber("WmsSterilizationInstockH");
|
||||
wmsSterilizationInstockH.bill_code = code;
|
||||
wmsSterilizationInstockH.carry_id = wmsCarryH.id;
|
||||
wmsSterilizationInstockH.carry_code = wmsCarryH.carry_code;
|
||||
wmsSterilizationInstockH.location_id = endlocation.id;
|
||||
wmsSterilizationInstockH.location_code = endlocation.location_code;
|
||||
wmsSterilizationInstockH.create_id = WmsWareHouseConst.AdministratorUserId;
|
||||
wmsSterilizationInstockH.create_time = dateTime;
|
||||
wmsSterilizationInstockH.instock_time = dateTime;
|
||||
wmsSterilizationInstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
wmsSterilizationInstockH.xl_location_id = startlocation.id;
|
||||
wmsSterilizationInstockH.xl_location_code = startlocation.location_code;
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
wmsSterilizationInstockH.origin = "生产入库";
|
||||
|
||||
int row = await db_Floor4MJX2MJC.Insertable(wmsSterilizationInstockH).ExecuteCommandAsync();
|
||||
if (row > 0)
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼灭菌线到解析仓】 灭菌入库记录生成成功");
|
||||
else
|
||||
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} 预任务生成成功");
|
||||
|
||||
if (items.Count < 1)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 没有可以入库的库位");
|
||||
break;
|
||||
}
|
||||
var endlocation = items.First();
|
||||
|
||||
await db_Floor4MJX2MJC.Ado.BeginTranAsync();
|
||||
BasLocation startlocation = await db_Floor4MJX2MJC.Queryable<BasLocation>().Where(r => r.location_code == key).FirstAsync();
|
||||
|
||||
if (startlocation.is_lock == 1)
|
||||
catch
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 起点库位{startlocation.location_code}已锁定");
|
||||
continue;
|
||||
throw;
|
||||
}
|
||||
string carry_code = (await GetStringTag(strs[0], strs[2])).Replace("\r", "").Replace(" ", "");
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 下料点 {key} {strs[2]}采集到 {carry_code}");
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 下料点 {key} {strs[2]}采集到长度 {carry_code.Length}");
|
||||
WmsCarryH wmsCarryH = await db_Floor4MJX2MJC.Queryable<WmsCarryH>().Where(r => r.carry_code == carry_code).FirstAsync();
|
||||
if (wmsCarryH == null)
|
||||
finally
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼待灭菌线到灭菌仓】 托盘号{carry_code}在系统中不存在");
|
||||
continue;
|
||||
semaphoreSlim.Release();
|
||||
}
|
||||
//锁定起点库位
|
||||
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();
|
||||
|
||||
DateTime dateTime = DateTime.Now;
|
||||
WmsSterilizationInstockH wmsSterilizationInstockH = new WmsSterilizationInstockH();
|
||||
string code = await _billRullService.GetBillNumber("WmsSterilizationInstockH");
|
||||
wmsSterilizationInstockH.bill_code = code;
|
||||
wmsSterilizationInstockH.carry_id = wmsCarryH.id;
|
||||
wmsSterilizationInstockH.carry_code = wmsCarryH.carry_code;
|
||||
wmsSterilizationInstockH.location_id = endlocation.id;
|
||||
wmsSterilizationInstockH.location_code = endlocation.location_code;
|
||||
wmsSterilizationInstockH.create_id = WmsWareHouseConst.AdministratorUserId;
|
||||
wmsSterilizationInstockH.create_time = dateTime;
|
||||
wmsSterilizationInstockH.instock_time = dateTime;
|
||||
wmsSterilizationInstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
wmsSterilizationInstockH.xl_location_id = startlocation.id;
|
||||
wmsSterilizationInstockH.xl_location_code = startlocation.location_code;
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
|
||||
int row = await db_Floor4MJX2MJC.Insertable(wmsSterilizationInstockH).ExecuteCommandAsync();
|
||||
if (row > 0)
|
||||
LoggerFloor4MJX2MJC.LogInformation($"【四楼待灭菌线到灭菌仓】 灭菌入库记录生成成功");
|
||||
else
|
||||
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();
|
||||
}
|
||||
@@ -2523,16 +2537,16 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
}
|
||||
catch (ObjectDisposedException ex)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼待灭菌线到灭菌仓】 数据库连接异常:{ex.Message}");
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼待灭菌线到灭菌仓】 数据库连接异常:{ex.StackTrace}");
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼灭菌线到解析仓】 数据库连接异常:{ex.Message}");
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼灭菌线到解析仓】 数据库连接异常:{ex.StackTrace}");
|
||||
if (ex.Source == "Npgsql")
|
||||
db_Floor4MJX2MJC = _repository.AsSugarClient().CopyNew();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("【四楼待灭菌线到灭菌仓】" + ex.Message);
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼待灭菌线到灭菌仓】 {ex.Message}");
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼待灭菌线到灭菌仓】 {ex.StackTrace}");
|
||||
Console.WriteLine("【四楼灭菌线到解析仓】" + ex.Message);
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼灭菌线到解析仓】 {ex.Message}");
|
||||
LoggerFloor4MJX2MJC.LogError($"【四楼灭菌线到解析仓】 {ex.StackTrace}");
|
||||
// 数据库连接断开时会报错
|
||||
try { await db_Floor4MJX2MJC.Ado.RollbackTranAsync(); } catch { };
|
||||
}
|
||||
@@ -2543,8 +2557,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
try { await db_Floor4MJX2MJC.Ado.CommitTranAsync(); } catch { };
|
||||
_wareHouseService.GenTaskExecute();
|
||||
stopwatch.Stop();
|
||||
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束四楼待灭菌线到灭菌仓 {stopwatch.ElapsedMilliseconds} ms");
|
||||
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束四楼待灭菌线到灭菌仓 {stopwatch.ElapsedMilliseconds} ms");
|
||||
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束四楼灭菌线到解析仓 {stopwatch.ElapsedMilliseconds} ms");
|
||||
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束四楼灭菌线到解析仓 {stopwatch.ElapsedMilliseconds} ms");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2593,60 +2607,79 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
foreach (WmsSterilizationInstockH wmsSterilizationInstockH in wmsSterilizationInstockHs)
|
||||
{
|
||||
WmsCarryH wmsCarryH = await db_Floor4DMC2CPK.Queryable<WmsCarryH>().Where(r => r.id == wmsSterilizationInstockH.carry_id).FirstAsync();
|
||||
|
||||
if (wmsCarryH.location_id != wmsSterilizationInstockH.location_id)
|
||||
SemaphoreSlim semaphoreSlim_MJC = null;
|
||||
SemaphoreSlim semaphoreSlim_CPK = null;
|
||||
try
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致");
|
||||
continue;
|
||||
semaphoreSlim_MJC = _wareHouseService.GetSemaphore("outstock", WmsWareHouseConst.WAREHOUSE_MJC_ID);
|
||||
await semaphoreSlim_MJC.WaitAsync();
|
||||
semaphoreSlim_CPK = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_CP_ID);
|
||||
await semaphoreSlim_CPK.WaitAsync();
|
||||
|
||||
WmsCarryH wmsCarryH = await db_Floor4DMC2CPK.Queryable<WmsCarryH>().Where(r => r.id == wmsSterilizationInstockH.carry_id).FirstAsync();
|
||||
|
||||
if (wmsCarryH.location_id != wmsSterilizationInstockH.location_id)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致");
|
||||
continue;
|
||||
}
|
||||
|
||||
BasLocation startlocation = await db_Floor4DMC2CPK.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
|
||||
if (startlocation.is_lock == 1)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼待灭菌线到灭菌仓】 起点库位{startlocation.location_code}已锁定");
|
||||
continue;
|
||||
}
|
||||
await db_Floor4DMC2CPK.Ado.BeginTranAsync();
|
||||
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID,
|
||||
Region_id = WmsWareHouseConst.REGION_CPOutstock_ID,
|
||||
Size = 1
|
||||
};
|
||||
List<BasLocation> items = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
|
||||
if (items.Count < 1)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 没有可以入库的库位");
|
||||
break;
|
||||
}
|
||||
BasLocation endlocation = items[0];
|
||||
|
||||
//锁定起点库位
|
||||
await db_Floor4DMC2CPK.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync();
|
||||
//锁定终点库位
|
||||
await db_Floor4DMC2CPK.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,
|
||||
LoggerFloor4DMC2CPK, db_Floor4DMC2CPK, WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID, "", wmsSterilizationInstockH.id);
|
||||
if (!result_createPretask)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
||||
throw new Exception($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
||||
}
|
||||
LoggerFloor4DMC2CPK.LogInformation($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成成功");
|
||||
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID;
|
||||
wmsSterilizationInstockH.cp_location_id = endlocation.id;
|
||||
wmsSterilizationInstockH.cp_location_code = endlocation.location_code;
|
||||
|
||||
await db_Floor4DMC2CPK.Updateable(wmsSterilizationInstockH).UpdateColumns(r => new { r.status }).ExecuteCommandAsync();
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.CommitTranAsync();
|
||||
}
|
||||
|
||||
BasLocation startlocation = await db_Floor4DMC2CPK.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
|
||||
if (startlocation.is_lock == 1)
|
||||
catch
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼待灭菌线到灭菌仓】 起点库位{startlocation.location_code}已锁定");
|
||||
continue;
|
||||
throw;
|
||||
}
|
||||
await db_Floor4DMC2CPK.Ado.BeginTranAsync();
|
||||
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new()
|
||||
finally
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID,
|
||||
Region_id = WmsWareHouseConst.REGION_CPOutstock_ID,
|
||||
Size = 1
|
||||
};
|
||||
List<BasLocation> items = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
|
||||
if (items.Count < 1)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 没有可以入库的库位");
|
||||
break;
|
||||
semaphoreSlim_MJC.Release();
|
||||
semaphoreSlim_CPK.Release();
|
||||
}
|
||||
BasLocation endlocation = items[0];
|
||||
|
||||
//锁定起点库位
|
||||
await db_Floor4DMC2CPK.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync();
|
||||
//锁定终点库位
|
||||
await db_Floor4DMC2CPK.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,
|
||||
LoggerFloor4DMC2CPK, db_Floor4DMC2CPK, WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID, "", wmsSterilizationInstockH.id);
|
||||
if (!result_createPretask)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
||||
throw new Exception($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败");
|
||||
}
|
||||
LoggerFloor4DMC2CPK.LogInformation($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成成功");
|
||||
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID;
|
||||
wmsSterilizationInstockH.cp_location_id = endlocation.id;
|
||||
wmsSterilizationInstockH.cp_location_code = endlocation.location_code;
|
||||
|
||||
await db_Floor4DMC2CPK.Updateable(wmsSterilizationInstockH).UpdateColumns(r => new { r.status }).ExecuteCommandAsync();
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.CommitTranAsync();
|
||||
}
|
||||
}
|
||||
catch (ObjectDisposedException ex)
|
||||
@@ -3189,7 +3222,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
Floor4DMJ2MJXtimer = new Timer(Floor4DMJ2MJX, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
Floor4MJX2MJCtimer = new Timer(Floor4MJX2MJC, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
Floor4DMC2CPKtimer = new Timer(Floor4DMC2CPK, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
// 需求变更弃用
|
||||
//Floor4DMC2CPKtimer = new Timer(Floor4DMC2CPK, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
|
||||
|
||||
F2KTPsupplementtimer = new Timer(F2KTPsupplement, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
YCLInternalTransfertimer = new Timer(YCLInternalTransfer, null, TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(185));
|
||||
@@ -3391,7 +3425,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
{
|
||||
get
|
||||
{
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/{DateTime.Now:yyyyMMdd}/原材料仓/custom{DateTime.Now:yyyyMMdd}八工位空托盘补充.log";
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/{DateTime.Now:yyyyMMdd}/原材料仓/custom{DateTime.Now:yyyyMMdd}八工位入库/空托盘补充.log";
|
||||
if (_LoggerBGWCarrySupplementFileName != newFileName)
|
||||
{
|
||||
ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddFile(newFileName, cfgOpts =>
|
||||
@@ -3561,7 +3595,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
{
|
||||
get
|
||||
{
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/{DateTime.Now:yyyyMMdd}/四楼灭菌/custom{DateTime.Now:yyyyMMdd}灭菌仓到成品仓.log";
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/{DateTime.Now:yyyyMMdd}/四楼灭菌/custom{DateTime.Now:yyyyMMdd}四楼灭菌线到解析仓.log";
|
||||
if (_LoggerFloor4DMC2CPKFileName != newFileName)
|
||||
{
|
||||
ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddFile(newFileName, cfgOpts =>
|
||||
|
||||
@@ -126,6 +126,10 @@ namespace Tnb.WarehouseMgr.Entities.Consts
|
||||
/// 外协调拨出库
|
||||
/// </summary>
|
||||
public const string MATERIALTRANSFER_WXDBOUTWAREHOUSE_CODE = "wxdbOutWarehouse";
|
||||
/// <summary>
|
||||
/// 灭菌入库
|
||||
/// </summary>
|
||||
public const string MATERIALTRANSFER_SterilizationInstock_CODE = "SterilizationInstock";
|
||||
|
||||
/// <summary>
|
||||
/// 出入库单据状态TypeID
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace Tnb.WarehouseMgr.Entities.Dto
|
||||
{
|
||||
/// <summary>
|
||||
/// 库房业务更新输入参数
|
||||
/// </summary>
|
||||
public class DistributeF4JXCInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 组织ID
|
||||
/// </summary>
|
||||
public string org_id { get; set; }
|
||||
/// <summary>
|
||||
/// 来源单据id
|
||||
/// </summary>
|
||||
public string? source_id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -89,9 +89,14 @@ public partial class WmsSterilizationInstockH : BaseEntity<string>
|
||||
/// </summary>
|
||||
public string? status { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 单号
|
||||
/// </summary>
|
||||
public string? bill_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 来源
|
||||
/// </summary>
|
||||
public string? origin { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -72,6 +72,16 @@ namespace Tnb.WarehouseMgr
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F4DMJCInstock = new(1);
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F4DMJCOutstock = new(1);
|
||||
/// <summary>
|
||||
/// 解析库
|
||||
/// </summary>
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F4JXKOutstock = new(1);
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F4JXKInstock = new(1);
|
||||
/// <summary>
|
||||
/// 二楼空托区
|
||||
/// </summary>
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F2KTQOutstock = new(1);
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F2KTQInstock = new(1);
|
||||
/// <summary>
|
||||
/// 成品仓
|
||||
/// </summary>
|
||||
public static SemaphoreSlim _s_taskExecuteSemaphore_F3CPInstock = new(1);
|
||||
|
||||
@@ -622,7 +622,8 @@ namespace Tnb.WarehouseMgr
|
||||
wmsOutsourceOrderD.fk_wms_outsource_order_id = wmsOutsourceOrderH.id;
|
||||
wmsOutsourceOrderD.matcode = detail.material_code;
|
||||
|
||||
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => b.EnCode == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||
|
||||
if (erpExtendField != null)
|
||||
{
|
||||
wmsOutsourceOrderD.unit_id = erpExtendField.Id;
|
||||
@@ -761,6 +762,9 @@ namespace Tnb.WarehouseMgr
|
||||
// 外协调拨出库
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID)
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_WXDBOUTWAREHOUSE_CODE;
|
||||
// 灭菌入库
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_JXK_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_CP_ID)
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_SterilizationInstock_CODE;
|
||||
#endregion
|
||||
|
||||
//var wmsMaterialTransferdsDistinct = input.details.Select(r => new
|
||||
@@ -1025,6 +1029,9 @@ namespace Tnb.WarehouseMgr
|
||||
// 外协调拨出库
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID)
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_WXDBOUTWAREHOUSE_CODE;
|
||||
// 灭菌入库
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_JXK_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_CP_ID)
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_SterilizationInstock_CODE;
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
@@ -132,6 +132,14 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
get { return _s_taskExecuteSemaphore_F2ZCCOutstock; }
|
||||
}
|
||||
public SemaphoreSlim s_taskExecuteSemaphore_F4JXKOutstock
|
||||
{
|
||||
get { return _s_taskExecuteSemaphore_F4JXKOutstock; }
|
||||
}
|
||||
public SemaphoreSlim s_taskExecuteSemaphore_F4JXKInstock
|
||||
{
|
||||
get { return _s_taskExecuteSemaphore_F4JXKInstock; }
|
||||
}
|
||||
|
||||
|
||||
public Dictionary<string, SemaphoreSlim> s_elevatortaskDic
|
||||
@@ -1216,20 +1224,20 @@ namespace Tnb.WarehouseMgr
|
||||
getdic.Add("ZSSSXCTU02", new string[] { "YTCS", "右输送线上层允许出箱3", "true" });
|
||||
getdic.Add("ZSSSXCTU01", new string[] { "YTCS", "左输送线上层允许出箱1", "true" });
|
||||
getdic.Add("SSX-011-008", new string[] { "东面提升机输送线", "入库输送线8出箱完毕", "true" });
|
||||
getdic.Add("ZS-C01-2", new string[] { "hxjC", "A2AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C02-2", new string[] { "hxjC", "A3AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C03-2", new string[] { "hxjC", "A4AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C04-2", new string[] { "hxjC", "A5AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C05-2", new string[] { "hxjC", "A6AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C06-2", new string[] { "hxjC", "A7AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C07-2", new string[] { "hxjC", "A8AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C08-2", new string[] { "hxjC", "A9AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C09-2", new string[] { "hxjC", "A10AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C10-2", new string[] { "hxjC", "A11AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C11-2", new string[] { "hxjC", "A12AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C12-2", new string[] { "hxjC", "A13AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-C01-2", new string[] { "hxjC", "A2AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C02-2", new string[] { "hxjC", "A3AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C03-2", new string[] { "hxjC", "A4AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C04-2", new string[] { "hxjC", "A5AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C05-2", new string[] { "hxjC", "A6AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C06-2", new string[] { "hxjC", "A7AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C07-2", new string[] { "hxjC", "A8AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C08-2", new string[] { "hxjC", "A9AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C09-2", new string[] { "hxjC", "A10AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C10-2", new string[] { "hxjC", "A11AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C11-2", new string[] { "hxjC", "A12AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C12-2", new string[] { "hxjC", "A13AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1AGV允许入满箱", "false" });
|
||||
|
||||
//getdic.Add("ZS-A01-2", new string[] { "hxjA", "A3AGV允许入满箱", "true" });
|
||||
//getdic.Add("ZS-A02-2", new string[] { "hxjA", "A4AGV允许入满箱", "true" });
|
||||
@@ -1237,12 +1245,12 @@ namespace Tnb.WarehouseMgr
|
||||
//getdic.Add("ZS-D06-2", new string[] { "hxjA", "A6AGV允许入满箱", "true" });
|
||||
//getdic.Add("ZS-A05-2", new string[] { "hxjA", "A7AGV允许入满箱", "true" });
|
||||
//getdic.Add("ZS-A06-2", new string[] { "hxjA", "A8AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A12-2", new string[] { "hxjA", "A14AGV允许入满箱", "true" });
|
||||
getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-A12-2", new string[] { "hxjA", "A14AGV允许入满箱", "false" });
|
||||
|
||||
getdic.Add("ZS-D01-2", new string[] { "hxjA", "A1AGV允许入满箱", "false" });
|
||||
getdic.Add("ZS-D02-2", new string[] { "hxjA", "A2AGV允许入满箱", "false" });
|
||||
@@ -1264,20 +1272,20 @@ namespace Tnb.WarehouseMgr
|
||||
putdic.Add("SSX-121-009", new string[] { "东面提升机输送线", "上升降机9入箱完毕", "true" });
|
||||
putdic.Add("SSX-121-010", new string[] { "东面提升机输送线", "上升降机10入箱完毕", "true" });
|
||||
putdic.Add("YCLCKBGW", new string[] { "CP8", "PutDoneEmptyBox", "true" });
|
||||
putdic.Add("ZS-C01-1", new string[] { "hxjC", "A2AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C02-1", new string[] { "hxjC", "A3AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C03-1", new string[] { "hxjC", "A4AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C04-1", new string[] { "hxjC", "A5AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C05-1", new string[] { "hxjC", "A6AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C06-1", new string[] { "hxjC", "A7AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C07-1", new string[] { "hxjC", "A8AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C08-1", new string[] { "hxjC", "A9AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C09-1", new string[] { "hxjC", "A10AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C10-1", new string[] { "hxjC", "A11AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C11-1", new string[] { "hxjC", "A12AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C12-1", new string[] { "hxjC", "A13AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C13-1", new string[] { "hxjC", "A14AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C14-1", new string[] { "hxjC", "A1AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-C01-1", new string[] { "hxjC", "A2AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C02-1", new string[] { "hxjC", "A3AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C03-1", new string[] { "hxjC", "A4AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C04-1", new string[] { "hxjC", "A5AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C05-1", new string[] { "hxjC", "A6AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C06-1", new string[] { "hxjC", "A7AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C07-1", new string[] { "hxjC", "A8AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C08-1", new string[] { "hxjC", "A9AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C09-1", new string[] { "hxjC", "A10AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C10-1", new string[] { "hxjC", "A11AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C11-1", new string[] { "hxjC", "A12AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C12-1", new string[] { "hxjC", "A13AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C13-1", new string[] { "hxjC", "A14AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-C14-1", new string[] { "hxjC", "A1AGV允许出空箱", "false" });
|
||||
|
||||
//putdic.Add("ZS-A01-1", new string[] { "hxjA", "A3AGV允许出空箱", "true" });
|
||||
//putdic.Add("ZS-A02-1", new string[] { "hxjA", "A4AGV允许出空箱", "true" });
|
||||
@@ -1285,12 +1293,12 @@ namespace Tnb.WarehouseMgr
|
||||
//putdic.Add("ZS-D06-1", new string[] { "hxjA", "A6AGV允许出空箱", "false" });
|
||||
//putdic.Add("ZS-A05-1", new string[] { "hxjA", "A7AGV允许出空箱", "true" });
|
||||
//putdic.Add("ZS-A06-1", new string[] { "hxjA", "A8AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-A07-1", new string[] { "hxjA", "A9AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-A08-1", new string[] { "hxjA", "A10AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-A09-1", new string[] { "hxjA", "A11AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-A10-1", new string[] { "hxjA", "A12AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-A07-1", new string[] { "hxjA", "A9AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-A08-1", new string[] { "hxjA", "A10AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-A09-1", new string[] { "hxjA", "A11AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-A10-1", new string[] { "hxjA", "A12AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-A11-1", new string[] { "hxjA", "A13AGV允许出空箱", "false" });
|
||||
putdic.Add("ZS-A12-1", new string[] { "hxjA", "A14AGV允许出空箱", "true" });
|
||||
putdic.Add("ZS-A12-1", new string[] { "hxjA", "A14AGV允许出空箱", "false" });
|
||||
|
||||
// D线 待改成配置
|
||||
putdic.Add("ZS-D01-1", new string[] { "hxjA", "A1AGV允许出空箱", "false" });
|
||||
@@ -2874,7 +2882,8 @@ namespace Tnb.WarehouseMgr
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.location_id == wmsDistaskH.startlocation_id
|
||||
&& r.carry_code != wmsDistaskH.carry_code).FirstAsync();
|
||||
BasLocation startlocation = await _db.Queryable<BasLocation>().Where(r => r.location_code == wmsDistaskH.startlocation_code).FirstAsync();
|
||||
if (wmsCarryH != null && startlocation.is_type == ((int)(EnumLocationType.存储库位)).ToString())
|
||||
WmsCarryH wmsTaskCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == wmsDistaskH.carry_id).FirstAsync();
|
||||
if (wmsCarryH != null && startlocation.is_type == ((int)(EnumLocationType.存储库位)).ToString() && wmsTaskCarryH.carrystd_id != WmsWareHouseConst.CARRY_LJSTD_ID)
|
||||
{
|
||||
throw Oops.Bah($"任务单{wmsDistaskH.bill_code}的起点库位{wmsDistaskH.startlocation_code}是存储库位,且已被载具{wmsCarryH.carry_code}占用!");
|
||||
}
|
||||
@@ -2973,7 +2982,8 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.location_id == wmsDistaskH.endlocation_id && r.carry_code != wmsDistaskH.carry_code).FirstAsync();
|
||||
BasLocation endlocation = await _db.Queryable<BasLocation>().Where(r => r.location_code == wmsDistaskH.endlocation_code).FirstAsync();
|
||||
if (wmsCarryH != null && endlocation.is_type == ((int)(EnumLocationType.存储库位)).ToString())
|
||||
WmsCarryH wmsTaskCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == wmsDistaskH.carry_id).FirstAsync();
|
||||
if (wmsCarryH != null && endlocation.is_type == ((int)(EnumLocationType.存储库位)).ToString() && wmsTaskCarryH.carrystd_id != WmsWareHouseConst.CARRY_LJSTD_ID)
|
||||
{
|
||||
throw Oops.Bah($"任务单{wmsDistaskH.bill_code}的终点库位{wmsDistaskH.endlocation_code}是存储库位,且已被载具{wmsCarryH.carry_code}占用!");
|
||||
}
|
||||
@@ -3587,8 +3597,8 @@ namespace Tnb.WarehouseMgr
|
||||
// points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
|
||||
//}
|
||||
#endregion
|
||||
//1-3
|
||||
if (startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CPCRK_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CP_ID)
|
||||
//1-4
|
||||
if (startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CPCRK_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_JXK_ID)
|
||||
{
|
||||
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "2" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
|
||||
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
|
||||
@@ -3596,8 +3606,8 @@ namespace Tnb.WarehouseMgr
|
||||
points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
|
||||
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-01-0{elevatorSno}").First());
|
||||
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-1-{elevatorSno}").First());
|
||||
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-3-{elevatorSno}").First());
|
||||
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-03-0{elevatorSno}").First());
|
||||
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First());
|
||||
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-04-0{elevatorSno}").First());
|
||||
points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
|
||||
}
|
||||
// 2-4
|
||||
@@ -4596,6 +4606,22 @@ namespace Tnb.WarehouseMgr
|
||||
result = _s_taskExecuteSemaphore_F2BCQInstock;
|
||||
break;
|
||||
}
|
||||
case WmsWareHouseConst.WAREHOUSE_MJC_ID:
|
||||
{
|
||||
if (type == "outstock")
|
||||
result = _s_taskExecuteSemaphore_F4JXKOutstock;
|
||||
else if (type == "instock")
|
||||
result = _s_taskExecuteSemaphore_F4JXKInstock;
|
||||
break;
|
||||
}
|
||||
case WmsWareHouseConst.WAREHOUSE_F2KTQ_ID:
|
||||
{
|
||||
if (type == "outstock")
|
||||
result = _s_taskExecuteSemaphore_F2KTQOutstock;
|
||||
else if (type == "instock")
|
||||
result = _s_taskExecuteSemaphore_F2KTQInstock;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -91,6 +91,11 @@ namespace Tnb.WarehouseMgr
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
|
||||
if (input.details.Count == 0)
|
||||
{
|
||||
throw new AppFriendlyException($"【MaterialSign】未接收到物料列表数据,请重试", 500);
|
||||
}
|
||||
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
|
||||
if (wmsCarryH == null)
|
||||
{
|
||||
@@ -282,6 +287,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
|
||||
await _db.Updateable<BasLocation>().SetColumns(r => r.is_use == "0").Where(r => r.id == carryLoc.id).ExecuteCommandAsync();
|
||||
|
||||
await _db.Insertable(wmsMaterialSignH).ExecuteCommandAsync();
|
||||
await _db.Insertable(wmsMaterialSignDs).ExecuteCommandAsync();
|
||||
|
||||
@@ -380,7 +380,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
List<BasLocation> endLocations = new List<BasLocation>();
|
||||
// 集中供料区三工位
|
||||
if (wmsMaterialTransfer.warehouse_instock == WmsWareHouseConst.WAREHOUSE_JZGL_ID|| wmsMaterialTransfer.warehouse_instock == WmsWareHouseConst.WAREHOUSE_WBZHHC_ID)
|
||||
if (wmsMaterialTransfer.warehouse_instock == WmsWareHouseConst.WAREHOUSE_JZGL_ID || wmsMaterialTransfer.warehouse_instock == WmsWareHouseConst.WAREHOUSE_WBZHHC_ID)
|
||||
{
|
||||
// 控制权限 原材料出库到集中供料权限 1.注塑加料工权限 2.注塑领班权限
|
||||
var power = _db.Queryable<UserEntity>()
|
||||
@@ -474,6 +474,186 @@ namespace Tnb.WarehouseMgr
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 灭菌入库
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <param name="wmsMaterialTransferD"></param>
|
||||
/// <param name="wmsMaterialTransfer"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Entities.Dto.Outputs.Result> DistributeF4JXC(DistributeF4JXCInput input)
|
||||
{
|
||||
SemaphoreSlim semaphoreSlim_MJC = null;
|
||||
SemaphoreSlim semaphoreSlim_CPK = null;
|
||||
try
|
||||
{
|
||||
semaphoreSlim_MJC = _wareHouseService.GetSemaphore("outstock", WmsWareHouseConst.WAREHOUSE_MJC_ID);
|
||||
await semaphoreSlim_MJC.WaitAsync();
|
||||
semaphoreSlim_CPK = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_CP_ID);
|
||||
await semaphoreSlim_CPK.WaitAsync();
|
||||
|
||||
if (string.IsNullOrEmpty(input.source_id))
|
||||
{
|
||||
throw new AppFriendlyException("来源单据id不可为空", 500);
|
||||
}
|
||||
|
||||
WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable<WmsMaterialTransfer>().FirstAsync(it => it.id == input.source_id);
|
||||
List<WmsMaterialTransferD> wmsMaterialTransferDs = _db.Queryable<WmsMaterialTransferD>()
|
||||
.Where(a => a.bill_id == wmsMaterialTransfer.id).ToList();
|
||||
|
||||
if (wmsMaterialTransfer == null)
|
||||
{
|
||||
throw new AppFriendlyException($"不存在id为{input.source_id}的转库单", 500);
|
||||
}
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
foreach (WmsMaterialTransferD wmsMaterialTransferD in wmsMaterialTransferDs)
|
||||
{
|
||||
// 转库单载具子表
|
||||
List<WmsMaterialTransferCarry> wmsMaterialTransferCarrys = new List<WmsMaterialTransferCarry>();
|
||||
|
||||
// 需要转库数量
|
||||
decimal needOut = (wmsMaterialTransferD.qty - wmsMaterialTransferD.yxfqty).Value;
|
||||
|
||||
//出库取起点,获取所有符合输入的载具规格的载具
|
||||
OutStockStrategyQuery outStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_HCC_ID,
|
||||
material_id = wmsMaterialTransferD.material_id,
|
||||
code_batch = wmsMaterialTransferD.code_batch,
|
||||
qty = needOut,
|
||||
dbConn = _db
|
||||
};
|
||||
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> carryitems = await _wareHouseService.OutStockStrategy_saleRelease(outStockStrategyInput);
|
||||
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> items_pretask = carryitems.Where(r => r.Item1 == "预任务").ToList();
|
||||
|
||||
decimal canOutstockQty = items_pretask.Sum(r => r.Item3.codeqty).ParseToDecimal();
|
||||
if (canOutstockQty != needOut)
|
||||
{
|
||||
throw new AppFriendlyException($@"当前可出库数量与需要出库数量不一致时无法出库! 当前可出库数量为 {canOutstockQty.ToString("G")},需要出库数量为{needOut.ToString("G")}", 500);
|
||||
}
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, Size = items_pretask.Count, Region_id = WmsWareHouseConst.REGION_CPOutstock_ID };
|
||||
List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
|
||||
int instockLocIndex = 0;
|
||||
foreach (Tuple<string, WmsCarryH, WmsCarryCode, BasLocation> item in items_pretask)
|
||||
{
|
||||
WmsCarryH wmsCarryH = item.Item2;
|
||||
WmsCarryCode carryCode = item.Item3;
|
||||
decimal codeqty = carryCode.codeqty;
|
||||
BasLocation startLocation = item.Item4;
|
||||
|
||||
|
||||
WmsSterilizationInstockH wmsSterilizationInstockH = await _db.Queryable<WmsSterilizationInstockH>().Where(r => r.carry_id == wmsCarryH.id
|
||||
&& r.status == WmsWareHouseConst.BILLSTATUS_ADD_ID && r.origin == "外协调拨入库").FirstAsync();
|
||||
if (wmsSterilizationInstockH == null)
|
||||
{
|
||||
Logger.LogWarning($"【四楼静置仓到成品库】载具{wmsCarryH.carry_code}没有找到新增状态且来源是外协调拨入库的灭菌入库记录!");
|
||||
continue;
|
||||
}
|
||||
if (wmsCarryH.location_id != wmsSterilizationInstockH.location_id)
|
||||
{
|
||||
Logger.LogWarning($"【四楼静置仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致");
|
||||
continue;
|
||||
}
|
||||
|
||||
BasLocation startlocation = await _db.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
|
||||
if (startlocation.is_lock == 1)
|
||||
{
|
||||
Logger.LogWarning($"【四楼静置仓到成品库】 起点库位{startlocation.location_code}已锁定");
|
||||
continue;
|
||||
}
|
||||
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID;
|
||||
wmsSterilizationInstockH.cp_location_id = endLocations[instockLocIndex].id;
|
||||
wmsSterilizationInstockH.cp_location_code = endLocations[instockLocIndex].location_code;
|
||||
|
||||
await _db.Updateable(wmsSterilizationInstockH).UpdateColumns(r => new { r.status }).ExecuteCommandAsync();
|
||||
|
||||
// 转库单载具子表
|
||||
WmsMaterialTransferCarry wmsMaterialTransferCarry = new WmsMaterialTransferCarry();
|
||||
wmsMaterialTransferCarry.bill_id = input.source_id;
|
||||
wmsMaterialTransferCarry.carry_id = wmsCarryH.id;
|
||||
wmsMaterialTransferCarry.carry_code = wmsCarryH.carry_code;
|
||||
wmsMaterialTransferCarry.create_id = _userManager.UserId;
|
||||
wmsMaterialTransferCarry.create_time = DateTime.Now;
|
||||
wmsMaterialTransferCarry.endlocation_id = endLocations[instockLocIndex].id;
|
||||
wmsMaterialTransferCarry.endlocation_code = endLocations[instockLocIndex].location_code;
|
||||
wmsMaterialTransferCarry.startlocation_id = startLocation.id;
|
||||
wmsMaterialTransferCarry.startlocation_code = startLocation.location_code;
|
||||
wmsMaterialTransferCarry.mat_bill_id = wmsMaterialTransferD.id;
|
||||
wmsMaterialTransferCarry.qty = codeqty;
|
||||
wmsMaterialTransferCarrys.Add(wmsMaterialTransferCarry);
|
||||
|
||||
await _db.Updateable<WmsCarryH>().SetColumns(r => r.work_station == wmsMaterialTransferD.station_code).Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync();
|
||||
|
||||
instockLocIndex++;
|
||||
}
|
||||
|
||||
await _db.Updateable<WmsMaterialTransfer>().SetColumns(r => new WmsMaterialTransfer
|
||||
{
|
||||
status = WmsWareHouseConst.BILLSTATUS_ON_ID,
|
||||
carry_count = (r.carry_count == null ? 0 : r.carry_count) + wmsMaterialTransferCarrys.Count,
|
||||
remainbindracknum = (r.remainbindracknum == null ? 0 : r.remainbindracknum) + wmsMaterialTransferCarrys.Count
|
||||
}).Where(r => r.id == input.source_id).ExecuteCommandAsync();
|
||||
Logger.LogInformation($"【DistributeF4JXC】更新转库单{wmsMaterialTransfer.bill_code}主表的数据");
|
||||
|
||||
foreach (WmsMaterialTransferCarry wmsMaterialTransferCarry in wmsMaterialTransferCarrys)
|
||||
{
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput.startlocation_id = wmsMaterialTransferCarry.startlocation_id;
|
||||
commonCreatePretaskInput.endlocation_id = wmsMaterialTransferCarry.endlocation_id;
|
||||
commonCreatePretaskInput.carry_id = wmsMaterialTransferCarry.carry_id;
|
||||
commonCreatePretaskInput.carry_code = wmsMaterialTransferCarry.carry_code;
|
||||
commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID;
|
||||
commonCreatePretaskInput.source_id = wmsMaterialTransferCarry.mat_bill_id;
|
||||
commonCreatePretaskInput.isExcuteMission = false;
|
||||
|
||||
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db);
|
||||
if (res.code != JNPF.Common.Enums.HttpStatusCode.OK)
|
||||
{
|
||||
Logger.LogInformation($"【DistributeF4JXC】生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}");
|
||||
throw new AppFriendlyException($"生成预任务失败 载具 {wmsMaterialTransferCarry.carry_code}", 500);
|
||||
}
|
||||
JObject keyValuePairs = JObject.Parse(res.data.ToString());
|
||||
JArray array = JArray.Parse(keyValuePairs["pretaskids"].ToString());
|
||||
wmsMaterialTransferCarry.pretask_id = array[0].ToString();
|
||||
|
||||
await _db.Updateable<WmsMaterialTransferD>().SetColumns(r => r.yxfqty == r.yxfqty + wmsMaterialTransferCarry.qty).Where(r => r.id == wmsMaterialTransferCarry.mat_bill_id).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
await _db.Insertable(wmsMaterialTransferCarrys).ExecuteCommandAsync();
|
||||
Logger.LogInformation($"【DistributeF4JXC】插入转库单{wmsMaterialTransfer.bill_code}载具表的数据");
|
||||
|
||||
Logger.LogInformation($"转库单{wmsMaterialTransfer.bill_code} 行号 {wmsMaterialTransferD.lineno}预任务{wmsMaterialTransferCarrys.Count}条全部生成成功");
|
||||
}
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError("【DistributeF4JXC】" + ex.Message);
|
||||
Logger.LogError("【DistributeF4JXC】" + ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
semaphoreSlim_MJC.Release();
|
||||
semaphoreSlim_CPK.Release();
|
||||
}
|
||||
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
|
||||
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Entities.Dto.Outputs.Result> QtckList(QueryQTCKInput input)
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace Tnb.WarehouseMgr
|
||||
}*/
|
||||
|
||||
/// <summary>
|
||||
/// 1楼到3楼 外协入库
|
||||
/// 1楼到4楼 外协入库
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
@@ -198,7 +198,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
await _db.Ado.BeginTranAsync();
|
||||
//入库取终点 //出库起点
|
||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID,Region_id = WmsWareHouseConst.REGION_CPOutstock_ID, Size = 1 };
|
||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_JXK_ID, Size = 1 };
|
||||
List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
if (endLocations.Count == 0)
|
||||
{
|
||||
|
||||
@@ -94,13 +94,11 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogWarning("【WmsPackInstockService ModifyAsync】" + ex.Message);
|
||||
Logger.LogWarning("【WmsPackInstockService ModifyAsync】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
if (endLocations.Count < items_pretask.Count)
|
||||
{
|
||||
throw new AppFriendlyException("三楼人工出库区没有足够的未锁定且空闲的出库工位", 500);
|
||||
throw new AppFriendlyException($"三楼人工出库区没有足够的未锁定且空闲的出库库位!需要{items_pretask.Count}个库位,实际可用{endLocations.Count}个库位", 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,33 +106,33 @@ namespace Tnb.WarehouseMgr
|
||||
else
|
||||
{
|
||||
input.sidx = input.sidx.Replace("create_time", "a.create_time").Replace("erp_bill_code", "e.erp_bill_code");
|
||||
|
||||
}
|
||||
|
||||
Dictionary<string, object> status_dic = await _db.Queryable<DictionaryTypeEntity>()
|
||||
.InnerJoin<DictionaryDataEntity>((a, b) => a.Id == b.DictionaryTypeId)
|
||||
.Where((a, b) => a.FullName == "单据状态").Select((a, b) => b).ToDictionaryAsync(k => k.Id, v => v.FullName);
|
||||
|
||||
SqlSugarPagedList<WmsSortingtask> result = await _db.Queryable<WmsSortingtask>()
|
||||
var _result = await _db.Queryable<WmsSortingtask>()
|
||||
.InnerJoin<WmsCarryCode>((a, b) => a.carry_id == b.carry_id)
|
||||
.InnerJoin<BasMaterial>((a, b, c) => b.material_id == c.id)
|
||||
.InnerJoin<WmsSaleD>((a, b, c, d) => a.source_id == d.id)
|
||||
.InnerJoin<WmsSaleH>((a, b, c, d, e) => e.id == d.bill_id)
|
||||
.WhereIF(!string.IsNullOrEmpty(status), (a, b, c, d, e) => a.status == status)
|
||||
.Select((a, b, c, d, e) => new WmsSortingtask
|
||||
.InnerJoin<DictionaryDataEntity>((a, b, c, d, e, f) => f.Id == a.status)
|
||||
.WhereIF(!string.IsNullOrEmpty(status), (a, b, c, d, e, f) => a.status == status)
|
||||
.Select((a, b, c, d, e, f) => new WmsSortingtask
|
||||
{
|
||||
id = a.id,
|
||||
create_time = DateTime.Parse(a.create_time.ToString("yyyy-MM-dd HH:mm:ss")),
|
||||
material_id = c.id,
|
||||
material_code =c.code ,
|
||||
material_code = c.code,
|
||||
material_name = c.name,
|
||||
material_specification =c.material_specification,
|
||||
material_specification = c.material_specification,
|
||||
code_batch = b.code_batch,
|
||||
erp_bill_code = e.erp_bill_code
|
||||
erp_bill_code = e.erp_bill_code,
|
||||
status = f.FullName
|
||||
}, true)
|
||||
.OrderBy($"{input.sidx} {input.sort}")
|
||||
.ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
|
||||
return PageResult<WmsSortingtask>.SqlSugarPageResult(result);
|
||||
var result = PageResult<WmsSortingtask>.SqlSugarPageResult(_result);
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ namespace Tnb.WarehouseMgr
|
||||
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f) => f.container_no.Contains(container_no))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => f.code.Contains(material_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d, e, f) => c.wh_id == warehouse_id)
|
||||
.Where((a, b, c, d, e, f) => c.is_type == ((int)EnumLocationType.存储库位).ToString())
|
||||
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
|
||||
{
|
||||
org_id = e.org_id,
|
||||
@@ -136,6 +137,7 @@ namespace Tnb.WarehouseMgr
|
||||
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f, g, h) => f.container_no.Contains(container_no))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => f.code.Contains(material_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d, e, f) => c.wh_id == warehouse_id)
|
||||
.Where((a, b, c, d, e, f) => c.is_type == ((int)EnumLocationType.存储库位).ToString())
|
||||
.Select((a, b, c, d, e, f, g, h) => new WmsStockReportH
|
||||
{
|
||||
org_id = e.org_id,
|
||||
|
||||
@@ -30,6 +30,7 @@ using Tnb.WarehouseMgr.Interfaces;
|
||||
using Tnb.BasicData;
|
||||
using Tnb.ProductionMgr.Entities.Entity;
|
||||
using Tnb.BasicData.Interfaces;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
@@ -73,6 +74,31 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().FirstAsync(x => x.id == input.wmsDistaskH.carry_id);
|
||||
DateTime dateTime = DateTime.Now;
|
||||
WmsSterilizationInstockH wmsSterilizationInstockH = new WmsSterilizationInstockH();
|
||||
string code = await _billRullService.GetBillNumber("WmsSterilizationInstockH");
|
||||
wmsSterilizationInstockH.bill_code = code;
|
||||
wmsSterilizationInstockH.carry_id = wmsCarryH.id;
|
||||
wmsSterilizationInstockH.carry_code = wmsCarryH.carry_code;
|
||||
wmsSterilizationInstockH.location_id = input.wmsDistaskH.endlocation_id;
|
||||
wmsSterilizationInstockH.location_code = input.wmsDistaskH.endlocation_code;
|
||||
wmsSterilizationInstockH.create_id = WmsWareHouseConst.AdministratorUserId;
|
||||
wmsSterilizationInstockH.create_time = dateTime;
|
||||
wmsSterilizationInstockH.instock_time = dateTime;
|
||||
wmsSterilizationInstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
wmsSterilizationInstockH.xl_location_id = input.wmsDistaskH.startlocation_id;
|
||||
wmsSterilizationInstockH.xl_location_code = input.wmsDistaskH.startlocation_code;
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
wmsSterilizationInstockH.origin = "外协调拨入库";
|
||||
|
||||
int row = await _db.Insertable(wmsSterilizationInstockH).ExecuteCommandAsync();
|
||||
if (row > 0)
|
||||
Logger.LogInformation($"【外协到解析仓】 灭菌入库记录生成成功");
|
||||
else
|
||||
Logger.LogWarning($"【外协到解析仓】 灭菌入库记录生成失败");
|
||||
|
||||
|
||||
Logger.Information($"进入成品调拨入库单上传BIP逻辑");
|
||||
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
if (endLocations.Count < items_pretask.Count)
|
||||
{
|
||||
throw new AppFriendlyException("三楼人工出库区没有足够的未锁定且空闲的出库工位", 500);
|
||||
throw new AppFriendlyException($"三楼人工出库区没有足够的未锁定且空闲的出库库位!需要{items_pretask.Count}个库位,实际可用{endLocations.Count}个库位", 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user