待灭菌仓流程,erp采购订单接口,日志完善
This commit is contained in:
@@ -80,13 +80,17 @@ namespace Tnb.ProductionMgr
|
||||
private static Timer? Floor2timer移走上升降区未生成预任务且满托的料架;
|
||||
private static Timer? Floor2timer移走下升降区未生成预任务且空托的料架;
|
||||
|
||||
// 四楼待灭菌仓到灭菌线
|
||||
private static Timer? Floor4DMJ2MJXtimer;
|
||||
// 四楼待灭菌线到灭菌仓
|
||||
private static Timer? Floor4MJX2MJCtimer;
|
||||
// 四楼灭菌仓到成品库
|
||||
private static Timer? Floor4DMC2CPKtimer;
|
||||
// 四楼包材自动到二楼包材库
|
||||
private static Timer? PackOutstockServicetimer;
|
||||
|
||||
// 检查到电梯任务异常断开后处理
|
||||
private Thread? ElevatorTaskExceptionHandleThread;
|
||||
|
||||
|
||||
public SemaphoreSlim s_taskCheckGet = new(1);
|
||||
public SemaphoreSlim s_taskScan = new(1);
|
||||
public SemaphoreSlim s_taskSSXcode = new(1);
|
||||
@@ -99,6 +103,9 @@ namespace Tnb.ProductionMgr
|
||||
public SemaphoreSlim s_task移走上升降区未生成预任务且满托的料架 = new(1);
|
||||
public SemaphoreSlim s_task移走下升降区未生成预任务且空托的料架 = new(1);
|
||||
public SemaphoreSlim s_taskPackOutstockService = new(1);
|
||||
public SemaphoreSlim s_taskFloor4DMJ2MJXService = new(1);
|
||||
public SemaphoreSlim s_taskFloor4MJX2MJCService = new(1);
|
||||
public SemaphoreSlim s_taskFloor4DMC2CPKService = new(1);
|
||||
|
||||
private StackExRedisHelper _redisData;
|
||||
private readonly IPrdInstockService _prdInstockService;
|
||||
@@ -115,6 +122,11 @@ namespace Tnb.ProductionMgr
|
||||
private ISqlSugarClient db_Floor2timer移走上升降区未生成预任务且满托的料架;
|
||||
private ISqlSugarClient db_Floor2timer移走下升降区未生成预任务且空托的料架;
|
||||
private ISqlSugarClient db_PackOutstockService;
|
||||
|
||||
private ISqlSugarClient db_Floor4DMJ2MJX;
|
||||
private ISqlSugarClient db_Floor4MJX2MJC;
|
||||
private ISqlSugarClient db_Floor4DMC2CPK;
|
||||
|
||||
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
@@ -165,7 +177,10 @@ namespace Tnb.ProductionMgr
|
||||
db_Floor2timer移走上升降区未生成预任务且满托的料架 = repository.CopyNew();
|
||||
db_Floor2timer移走下升降区未生成预任务且空托的料架 = repository.CopyNew();
|
||||
db_PackOutstockService = repository.CopyNew();
|
||||
}
|
||||
db_Floor4DMJ2MJX = repository.CopyNew();
|
||||
db_Floor4MJX2MJC = repository.CopyNew();
|
||||
db_Floor4DMC2CPK = repository.CopyNew();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1716,7 +1731,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
async void ElevatorTaskExceptionHandle(object args)
|
||||
{
|
||||
List<WmsDistaskH> wmsDistaskHs = _repository.AsSugarClient().Queryable<WmsDistaskH>()
|
||||
.Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date != null && r.act_end_date == null).ToList();
|
||||
.Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date == null && r.act_end_date == null).ToList();
|
||||
|
||||
LoggerElevatorTask.Information($"【ElevatorTaskExceptionHandle】检查到需要恢复的电梯任务{wmsDistaskHs.Count}条 {string.Join(',', wmsDistaskHs.Select(x => x.bill_code))}");
|
||||
foreach (WmsDistaskH wmsDistaskH in wmsDistaskHs)
|
||||
@@ -1850,6 +1865,204 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 灭菌仓
|
||||
/// <summary>
|
||||
/// 四楼待灭菌仓到灭菌线
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private async void Floor4DMJ2MJX(object? args)
|
||||
{
|
||||
if (s_taskFloor4DMJ2MJXService.CurrentCount == 0)
|
||||
return;
|
||||
await s_taskFloor4DMJ2MJXService.WaitAsync();
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
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")} 开始执行四楼待灭菌仓到灭菌线");
|
||||
|
||||
if (false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<BasLocation> endLocations = db_Floor4DMJ2MJX.Queryable<BasLocation>().Where(r => r.wh_id == WmsWareHouseConst.WAREHOUSE_DMJC_ID
|
||||
&& r.is_type == ((int)EnumLocationType.分拣库位).ToString() && r.is_lock == 0).ToList();
|
||||
|
||||
Dictionary<BasLocation, string[]> getdic = new Dictionary<BasLocation, string[]>();
|
||||
foreach (BasLocation endLocation in endLocations)
|
||||
{
|
||||
getdic.Add(endLocation, new string[] { "", "" });
|
||||
}
|
||||
|
||||
foreach (var key in getdic.Keys)
|
||||
{
|
||||
await db_Floor4DMJ2MJX.Ado.BeginTranAsync();
|
||||
var strs = getdic.Where(p => p.Key == key).First().Value;
|
||||
bool result = await GetBoolTag(strs[0], strs[1]);
|
||||
if (result)
|
||||
{
|
||||
LoggerYCLGLDPJInstock.LogInformation($"【四楼待灭菌仓到灭菌线】 上料点 {key} {strs[1]}采集到 {result}");
|
||||
|
||||
OutStockStrategyQuery outStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_DMJC_ID,
|
||||
Size = 1
|
||||
};
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategy(outStockStrategyInput);
|
||||
|
||||
if (items.Count < 1)
|
||||
{
|
||||
LoggerYCLGLDPJInstock.LogInformation($"【四楼待灭菌仓到灭菌线】 没有可以出库的空载具");
|
||||
}
|
||||
|
||||
WmsCarryH wmsCarryH = items[0];
|
||||
|
||||
//锁定起点库位 更新为空闲
|
||||
await db_YCLWXDPJInstocktimer.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1, is_use = "0" }).Where(r => r.id == wmsCarryH.location_id).ExecuteCommandAsync();
|
||||
//锁定终点库位
|
||||
await db_YCLWXDPJInstocktimer.Updateable<BasLocation>().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == key.id).ExecuteCommandAsync();
|
||||
|
||||
bool result_createPretask = await createPretask(wmsCarryH.location_id, key.id, "", "", LoggerYCLGLDPJInstock, db_YCLWXDPJInstocktimer);
|
||||
if (!result_createPretask)
|
||||
{
|
||||
LoggerYCLGLDPJInstock.LogWarning($"【四楼待灭菌仓到灭菌线】 {wmsCarryH.location_code} 到 {key.location_code} 预任务生成失败");
|
||||
throw new Exception($"【四楼待灭菌仓到灭菌线】 {wmsCarryH.location_code} 到 {key.location_code} 预任务生成失败");
|
||||
}
|
||||
LoggerYCLGLDPJInstock.LogWarning($"【四楼待灭菌仓到灭菌线】 {wmsCarryH.location_code} 到 {key.location_code} 预任务生成成功");
|
||||
|
||||
}
|
||||
await db_Floor4DMJ2MJX.Ado.CommitTranAsync();
|
||||
}
|
||||
_ = _wareHouseService.GenTaskExecute();
|
||||
|
||||
}
|
||||
catch (ObjectDisposedException ex)
|
||||
{
|
||||
LoggerFloor4DMJ2MJX.LogError($"【四楼待灭菌仓到灭菌线】 数据库连接异常:{ex.Message}");
|
||||
LoggerFloor4DMJ2MJX.LogError($"【四楼待灭菌仓到灭菌线】 数据库连接异常:{ex.StackTrace}");
|
||||
if (ex.Source == "Npgsql")
|
||||
db_Floor4DMJ2MJX = _repository.AsSugarClient().CopyNew();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("【四楼待灭菌仓到灭菌线】" + ex.Message);
|
||||
LoggerFloor4DMJ2MJX.LogError($"【四楼待灭菌仓到灭菌线】 {ex.Message}");
|
||||
LoggerFloor4DMJ2MJX.LogError($"【四楼待灭菌仓到灭菌线】 {ex.StackTrace}");
|
||||
// 数据库连接断开时会报错
|
||||
try { await db_Floor4DMJ2MJX.Ado.RollbackTranAsync(); } catch { };
|
||||
}
|
||||
finally
|
||||
{
|
||||
s_taskFloor4DMJ2MJXService.Release();
|
||||
if (!db_Floor4DMJ2MJX.Ado.Transaction.IsNull())
|
||||
try { await db_Floor4DMJ2MJX.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");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 四楼待灭菌线到灭菌仓
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private async void Floor4MJX2MJC(object? args)
|
||||
{
|
||||
if (s_taskFloor4MJX2MJCService.CurrentCount == 0)
|
||||
return;
|
||||
await s_taskFloor4MJX2MJCService.WaitAsync();
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
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")} 开始执行四楼待灭菌线到灭菌仓");
|
||||
|
||||
await db_Floor4MJX2MJC.Ado.BeginTranAsync();
|
||||
|
||||
|
||||
await db_Floor4MJX2MJC.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (ObjectDisposedException ex)
|
||||
{
|
||||
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}");
|
||||
// 数据库连接断开时会报错
|
||||
try { await db_Floor4MJX2MJC.Ado.RollbackTranAsync(); } catch { };
|
||||
}
|
||||
finally
|
||||
{
|
||||
s_taskFloor4MJX2MJCService.Release();
|
||||
if (!db_Floor4MJX2MJC.Ado.Transaction.IsNull())
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 四楼灭菌仓到成品库
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
private async void Floor4DMC2CPK(object? args)
|
||||
{
|
||||
if (s_taskFloor4DMC2CPKService.CurrentCount == 0)
|
||||
return;
|
||||
await s_taskFloor4DMC2CPKService.WaitAsync();
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
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")} 开始执行四楼灭菌仓到成品库");
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.BeginTranAsync();
|
||||
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (ObjectDisposedException ex)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogError($"【四楼灭菌仓到成品库】 数据库连接异常:{ex.Message}");
|
||||
LoggerFloor4DMC2CPK.LogError($"【四楼灭菌仓到成品库】 数据库连接异常:{ex.StackTrace}");
|
||||
if (ex.Source == "Npgsql")
|
||||
db_Floor4DMC2CPK = _repository.AsSugarClient().CopyNew();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("【四楼灭菌仓到成品库】" + ex.Message);
|
||||
LoggerFloor4DMC2CPK.LogError($"【四楼灭菌仓到成品库】 {ex.Message}");
|
||||
LoggerFloor4DMC2CPK.LogError($"【四楼灭菌仓到成品库】 {ex.StackTrace}");
|
||||
// 数据库连接断开时会报错
|
||||
try { await db_Floor4DMC2CPK.Ado.RollbackTranAsync(); } catch { };
|
||||
}
|
||||
finally
|
||||
{
|
||||
s_taskFloor4DMC2CPKService.Release();
|
||||
if (!db_Floor4DMC2CPK.Ado.Transaction.IsNull())
|
||||
try { await db_Floor4DMC2CPK.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");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken)
|
||||
@@ -1883,6 +2096,10 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
ElevatorTaskExceptionHandleThread = new Thread(ElevatorTaskExceptionHandle);
|
||||
ElevatorTaskExceptionHandleThread.Start();
|
||||
|
||||
Floor4DMJ2MJXtimer = new Timer(Floor4DMJ2MJX, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
Floor4MJX2MJCtimer = new Timer(Floor4MJX2MJC, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
Floor4DMC2CPKtimer = new Timer(Floor4DMC2CPK, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
@@ -1904,11 +2121,15 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
Floor2timer送满托到下升降区?.Dispose();
|
||||
Floor2timer移走上升降区未生成预任务且满托的料架?.Dispose();
|
||||
Floor2timer移走下升降区未生成预任务且空托的料架?.Dispose();
|
||||
|
||||
BGWCarrySupplementtimer?.Dispose();
|
||||
YCLGLDPJInstocktimer?.Dispose();
|
||||
YCLWXDPJInstocktimer?.Dispose();
|
||||
|
||||
GenTaskExecutetimer?.Dispose();
|
||||
PackOutstockServicetimer?.Dispose();
|
||||
Floor4DMJ2MJXtimer?.Dispose();
|
||||
Floor4MJX2MJCtimer?.Dispose();
|
||||
Floor4DMC2CPKtimer?.Dispose();
|
||||
ElevatorTaskExceptionHandleThread.Abort();
|
||||
}
|
||||
|
||||
#region 日志
|
||||
@@ -2095,7 +2316,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected string _LoggerBGWCarrySupplementFileName = "";
|
||||
protected ILogger _LoggerBGWCarrySupplement;
|
||||
protected ILogger LoggerBGWCarrySupplement
|
||||
@@ -2197,6 +2417,108 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
return _LoggerTimer;
|
||||
}
|
||||
}
|
||||
|
||||
protected string _LoggerFloor4DMJ2MJXFileName = "";
|
||||
protected ILogger _LoggerFloor4DMJ2MJX;
|
||||
protected ILogger LoggerFloor4DMJ2MJX
|
||||
{
|
||||
get
|
||||
{
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/customFloor4DMJ2MJX{DateTime.Now:yyyyMMdd}.log";
|
||||
if (_LoggerFloor4DMJ2MJXFileName != newFileName)
|
||||
{
|
||||
ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddFile(newFileName, cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
}));
|
||||
_LoggerFloor4DMJ2MJX = loggerFactory.CreateLogger(this.GetType());
|
||||
_LoggerFloor4DMJ2MJXFileName = newFileName;
|
||||
}
|
||||
return _LoggerFloor4DMJ2MJX;
|
||||
}
|
||||
}
|
||||
|
||||
protected string _LoggerFloor4MJX2MJCFileName = "";
|
||||
protected ILogger _LoggerFloor4MJX2MJC;
|
||||
protected ILogger LoggerFloor4MJX2MJC
|
||||
{
|
||||
get
|
||||
{
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/customFloor4MJX2MJC{DateTime.Now:yyyyMMdd}.log";
|
||||
if (_LoggerFloor4MJX2MJCFileName != newFileName)
|
||||
{
|
||||
ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddFile(newFileName, cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
}));
|
||||
_LoggerFloor4MJX2MJC = loggerFactory.CreateLogger(this.GetType());
|
||||
_LoggerFloor4MJX2MJCFileName = newFileName;
|
||||
}
|
||||
return _LoggerFloor4MJX2MJC;
|
||||
}
|
||||
}
|
||||
|
||||
protected string _LoggerFloor4DMC2CPKFileName = "";
|
||||
protected ILogger _LoggerFloor4DMC2CPK;
|
||||
protected ILogger LoggerFloor4DMC2CPK
|
||||
{
|
||||
get
|
||||
{
|
||||
string newFileName = $"{AppContext.BaseDirectory}/logs/customFloor4DMC2CPK{DateTime.Now:yyyyMMdd}.log";
|
||||
if (_LoggerFloor4DMC2CPKFileName != newFileName)
|
||||
{
|
||||
ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddFile(newFileName, cfgOpts =>
|
||||
{
|
||||
|
||||
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
|
||||
cfgOpts.MessageFormat = (logMsg) =>
|
||||
{
|
||||
var logLevel = s_logLevelMap[logMsg.LogLevel];
|
||||
var sb = new StringBuilder();
|
||||
_ = sb.Append($"[{logLevel}] ");
|
||||
_ = sb.Append($"{logMsg.LogName} ");
|
||||
_ = sb.Append($"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} ");
|
||||
_ = sb.Append($"#{logMsg.EventId.Id} ");
|
||||
_ = sb.Append(logMsg.Message + " ");
|
||||
_ = sb.Append(logMsg.Exception?.ToString());
|
||||
return sb.ToString();
|
||||
};
|
||||
|
||||
}));
|
||||
_LoggerFloor4DMC2CPK = loggerFactory.CreateLogger(this.GetType());
|
||||
_LoggerFloor4DMC2CPKFileName = newFileName;
|
||||
}
|
||||
return _LoggerFloor4DMC2CPK;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -53,6 +53,7 @@
|
||||
/// 四楼灭菌仓
|
||||
/// </summary>
|
||||
public const string WAREHOUSE_MJC_ID = "35412482304021";
|
||||
|
||||
/// <summary>
|
||||
/// 二楼包材区
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
|
||||
{
|
||||
public class PurchaseOrderInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 单号
|
||||
/// </summary>
|
||||
public string? purchase_order { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系人
|
||||
/// </summary>
|
||||
public string? contact_person { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电话
|
||||
/// </summary>
|
||||
public string? tel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 供应商编号
|
||||
/// </summary>
|
||||
public string? supplier_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 凭证日期
|
||||
/// </summary>
|
||||
public DateTime? certificate_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 供货日期
|
||||
/// </summary>
|
||||
public DateTime? ship_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 主表pk
|
||||
/// </summary>
|
||||
public string? erp_pk { get; set; }
|
||||
|
||||
public List<PurchaseOrderDetail> details { get; set; }
|
||||
}
|
||||
public class PurchaseOrderDetail
|
||||
{
|
||||
/// <summary>
|
||||
/// 行号
|
||||
/// </summary>
|
||||
public string? lineno { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物品代码
|
||||
/// </summary>
|
||||
public string? material_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位代码
|
||||
/// </summary>
|
||||
public string? unit_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采购数量
|
||||
/// </summary>
|
||||
public decimal? purchase_quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存地点编号
|
||||
/// </summary>
|
||||
public string? stock_location { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 交货日期
|
||||
/// </summary>
|
||||
public DateTime? delivery_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 子表主键
|
||||
/// </summary>
|
||||
public string erp_line_pk { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -108,4 +108,9 @@ public partial class WmsPurchaseD : BaseEntity<string>
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public string? container_no { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string? erp_line_pk { get; set; }
|
||||
}
|
||||
|
||||
@@ -145,4 +145,15 @@ public partial class WmsPurchaseH : BaseEntity<string>, IPurchaseAndSaleAuitEnti
|
||||
/// </summary>
|
||||
public int? audit_status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public string? erp_pk { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp采购订单号
|
||||
/// </summary>
|
||||
public string? erp_bill_code { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 采购订单表子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_purchase_order_d")]
|
||||
public partial class WmsPurchaseOrderD : BaseEntity<string>
|
||||
{
|
||||
public WmsPurchaseOrderD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 主表id
|
||||
/// </summary>
|
||||
public string? fk_wms_purchase_order_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料id
|
||||
/// </summary>
|
||||
public string? matcode_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料编号
|
||||
/// </summary>
|
||||
public string? matcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料描述
|
||||
/// </summary>
|
||||
public string? matspecification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采购数量
|
||||
/// </summary>
|
||||
public string? purchase_quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实收数量
|
||||
/// </summary>
|
||||
public string? actual_quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存地点ID
|
||||
/// </summary>
|
||||
public string? stock_location_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存地点
|
||||
/// </summary>
|
||||
public string? stock_location { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 交货日期
|
||||
/// </summary>
|
||||
public string? delivery_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 净价
|
||||
/// </summary>
|
||||
public string? net_price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 货币
|
||||
/// </summary>
|
||||
public string? currency { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工厂
|
||||
/// </summary>
|
||||
public string? factory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp_line_pk
|
||||
/// </summary>
|
||||
public string? erp_line_pk { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 采购订单表
|
||||
/// </summary>
|
||||
[SugarTable("wms_purchase_order_h")]
|
||||
public partial class WmsPurchaseOrderH : BaseEntity<string>
|
||||
{
|
||||
public WmsPurchaseOrderH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 采购订单号
|
||||
/// </summary>
|
||||
public string? purchase_order { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系人
|
||||
/// </summary>
|
||||
public string? contact_person { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电话
|
||||
/// </summary>
|
||||
public string? tel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 供应商ID
|
||||
/// </summary>
|
||||
public string? supplier_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 供应商编号
|
||||
/// </summary>
|
||||
public string? supplier_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 供应商名称
|
||||
/// </summary>
|
||||
public string? supplier_name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳
|
||||
/// </summary>
|
||||
public string? time_stamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单据类型
|
||||
/// </summary>
|
||||
public string? document_type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 凭证日期
|
||||
/// </summary>
|
||||
public string? certificate_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string? create_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime? create_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程任务Id
|
||||
/// </summary>
|
||||
public string? f_flowtaskid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程引擎Id
|
||||
/// </summary>
|
||||
public string? f_flowid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp_pk
|
||||
/// </summary>
|
||||
public string? erp_pk { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// erp_bill_code
|
||||
/// </summary>
|
||||
public string? erp_bill_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 供货日期
|
||||
/// </summary>
|
||||
public DateTime? ship_date { get; set; }
|
||||
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.DynamicApiController;
|
||||
@@ -9,6 +10,7 @@ using Microsoft.AspNetCore.Components.Forms;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
@@ -290,11 +292,118 @@ namespace Tnb.WarehouseMgr
|
||||
await db.Insertable(WmsInstockDs).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 采购订单
|
||||
/// </summary>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Entities.Dto.Outputs.Result> PurchaseOrder(PurchaseOrderInput input)
|
||||
{
|
||||
LoggerErp2Mes.LogInformation($"【PurchaseOrderInput】ERP传入数据:{JsonConvert.SerializeObject(input)}");
|
||||
var db = _repository.AsSugarClient();
|
||||
|
||||
if (string.IsNullOrEmpty(input.erp_pk))
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【PurchaseOrderInput】主表主键不能为空!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"主表主键不能为空!");
|
||||
}
|
||||
|
||||
int count_erp_line_pk = input.details.Where(r => string.IsNullOrEmpty(r.erp_line_pk)).Count();
|
||||
if (count_erp_line_pk > 0)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【PurchaseOrderInput】子表主键不能为空!");
|
||||
throw new AppFriendlyException($@"子表主键不能为空!", 500);
|
||||
}
|
||||
|
||||
var wmsPurchaseOrdersDistinct = input.details.Select(r => new
|
||||
{
|
||||
material_id = r.material_code,
|
||||
code_batch = r.code_batch,
|
||||
}).Distinct();
|
||||
if (wmsPurchaseOrdersDistinct.Count() < input.details.Count)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【PurchaseOrderInput】表体存在物料和批号重复的明细!");
|
||||
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await db.Ado.BeginTranAsync();
|
||||
WmsPurchaseOrderH wmsPurchaseOrderH = new WmsPurchaseOrderH();
|
||||
string Code = await _billRuleService.GetBillNumber("Purchase");
|
||||
|
||||
wmsPurchaseOrderH.purchase_order = Code;
|
||||
wmsPurchaseOrderH.erp_bill_code = input.purchase_order;
|
||||
wmsPurchaseOrderH.contact_person = input.contact_person;
|
||||
wmsPurchaseOrderH.tel = input.tel;
|
||||
wmsPurchaseOrderH.supplier_code = input.supplier_code;
|
||||
wmsPurchaseOrderH.certificate_date = input.certificate_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
wmsPurchaseOrderH.ship_date = input.ship_date;
|
||||
wmsPurchaseOrderH.erp_pk = input.erp_pk;
|
||||
wmsPurchaseOrderH.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsPurchaseOrderH.create_time = DateTime.Now;
|
||||
var supplier = await db.Queryable<BasSupplier>().Where(p => p.supplier_code == input.supplier_code).FirstAsync();
|
||||
if (supplier != null)
|
||||
{
|
||||
wmsPurchaseOrderH.supplier_id = supplier.id;
|
||||
wmsPurchaseOrderH.supplier_name = supplier.supplier_name;
|
||||
}
|
||||
|
||||
await db.Insertable(wmsPurchaseOrderH).ExecuteCommandAsync();
|
||||
|
||||
|
||||
List<WmsPurchaseOrderD> wmsPurchaseOrderDs = new List<WmsPurchaseOrderD>();
|
||||
foreach (var detail in input.details)
|
||||
{
|
||||
WmsPurchaseOrderD wmsPurchaseOrderD = new WmsPurchaseOrderD();
|
||||
|
||||
wmsPurchaseOrderD.fk_wms_purchase_order_id = wmsPurchaseOrderH.id;
|
||||
wmsPurchaseOrderD.matcode = detail.material_code;
|
||||
wmsPurchaseOrderD.unit = detail.unit_code;
|
||||
wmsPurchaseOrderD.purchase_quantity = detail.purchase_quantity.ToString();
|
||||
wmsPurchaseOrderD.stock_location = detail.stock_location;
|
||||
wmsPurchaseOrderD.code_batch = detail.code_batch;
|
||||
wmsPurchaseOrderD.delivery_date = detail.delivery_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
wmsPurchaseOrderD.erp_line_pk = detail.erp_line_pk;
|
||||
wmsPurchaseOrderD.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsPurchaseOrderD.create_time = DateTime.Now;
|
||||
wmsPurchaseOrderD.actual_quantity = "0";
|
||||
|
||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
{
|
||||
wmsPurchaseOrderD.matcode_id = material.id;
|
||||
wmsPurchaseOrderD.matspecification = material.material_specification;
|
||||
}
|
||||
|
||||
wmsPurchaseOrderDs.Add(wmsPurchaseOrderD);
|
||||
}
|
||||
|
||||
await db.Insertable(wmsPurchaseOrderDs).ExecuteCommandAsync();
|
||||
|
||||
await db.Ado.CommitTranAsync();
|
||||
|
||||
LoggerErp2Mes.LogInformation($"【PurchaseOrderInput】成功生成单据:{Code}");
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerErp2Mes.LogError($"【PurchaseOrderInput】{ex.Message}");
|
||||
LoggerErp2Mes.LogError($"【PurchaseOrderInput】{ex.StackTrace}");
|
||||
await db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转库单
|
||||
/// </summary>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Result> MaterialTransfer(MaterialTransferInput input)
|
||||
public async Task<Entities.Dto.Outputs.Result> MaterialTransfer(MaterialTransferInput input)
|
||||
{
|
||||
LoggerErp2Mes.LogInformation($"【MaterialTransfer】ERP传入数据:{JsonConvert.SerializeObject(input)}");
|
||||
var db = _repository.AsSugarClient();
|
||||
@@ -442,9 +551,9 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
|
||||
protected Task<Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
||||
protected Task<Entities.Dto.Outputs.Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
||||
{
|
||||
Result result = new()
|
||||
Entities.Dto.Outputs.Result result = new()
|
||||
{
|
||||
code = statusCode,
|
||||
msg = msg
|
||||
|
||||
@@ -651,13 +651,13 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
public async Task<bool> Check(string code, string action)
|
||||
{
|
||||
Logger.Information($"【Check】 判断CTU是否可以取货 {code} {action}");
|
||||
Logger.Information($"【Check】 判断KIVA是否可以{action} {code}");
|
||||
Dictionary<string, string[]> putdic = new Dictionary<string, string[]>();
|
||||
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
||||
putdic.Add("ZSSSXCTU02", new string[] { "YTCS", "AllowCtuFullOut_CS04", });
|
||||
putdic.Add("ZSSSXCTU01", new string[] { "YTCS", "AllowCtuFullOut_CS02", });
|
||||
getdic.Add("ZSSSXCTU01", new string[] { "YTCS", "AllowAgvEmptyOut_CS01" });
|
||||
getdic.Add("ZSSSXCTU02", new string[] { "YTCS", "AllowAgvEmptyOut_CS03" });
|
||||
putdic.Add("ZSSSXCTU02", new string[] { "YTCS", "左输送线下层允许入箱4", });
|
||||
putdic.Add("ZSSSXCTU01", new string[] { "YTCS", "左输送线下层允许入箱2", });
|
||||
getdic.Add("ZSSSXCTU01", new string[] { "YTCS", "输送线上层允许出箱1" });
|
||||
getdic.Add("ZSSSXCTU02", new string[] { "YTCS", "输送线上层允许出箱3" });
|
||||
|
||||
#region 注塑车间点位
|
||||
putdic.Add("ZS-C01-1", new string[] { "hxjC", "A2允许入空箱", });
|
||||
@@ -751,18 +751,18 @@ namespace Tnb.WarehouseMgr
|
||||
strs = getdic.Where(p => p.Key == code).First().Value;
|
||||
|
||||
bool flag = await _redisData.HashExists(strs[0], strs[1]);
|
||||
Logger.Information($"【Check】{action} 判断CTU是否可以取货1 获取{code}的标签{strs[1]}是否存在 结果为:{flag} ");
|
||||
Logger.Information($"【Check】{action} 判断KIVA是否可以取货(信号是否存在) 获取{code}的标签{strs[1]}是否存在 结果为:{flag} ");
|
||||
if (!flag)
|
||||
{
|
||||
throw new Exception($"【Check】{action} 判断CTU是否可以取货1 获取{code}的标签{strs[1]}是否存在 结果为:{flag} ");
|
||||
throw new Exception($"【Check】{action} 判断KIVA是否可以取货(信号是否存在) 获取{code}的标签{strs[1]}是否存在 结果为:{flag} ");
|
||||
}
|
||||
string data = _redisData.GetHash(strs[0], strs[1]).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
|
||||
Logger.Information($"【Check】{action} 判断CTU是否可以取货2 获取{code}的标签{strs[1]}信号值 结果为:{result} ");
|
||||
Logger.Information($"【Check】{action} 判断KIVA是否可以取货(信号是否允许) 获取{code}的标签{strs[1]}信号值 结果为:{result} ");
|
||||
if (!result)
|
||||
{
|
||||
throw new Exception($"【Check】{action} 判断CTU是否可以取货2 获取{code}的标签{strs[1]}信号值 结果为:{result} ");
|
||||
throw new Exception($"【Check】{action} 判断KIVA是否可以取货(信号是否允许) 获取{code}的标签{strs[1]}信号值 结果为:{result} ");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -773,18 +773,18 @@ namespace Tnb.WarehouseMgr
|
||||
strs = putdic.Where(p => p.Key == code).First().Value;
|
||||
|
||||
bool flag = await _redisData.HashExists(strs[0], strs[1]);
|
||||
Logger.Information($"【Check】 判断CTU是否可以取货1 {code} {action} flag:{flag} ");
|
||||
Logger.Information($"【Check】 判断CTU是否可以放货(信号是否存在) 获取{code}的标签{strs[1]}是否存在 结果为:{flag} ");
|
||||
if (!flag)
|
||||
{
|
||||
throw new Exception($"【Check】 判断CTU是否可以取货1 {code} {action} flag:{flag} ");
|
||||
throw new Exception($"【Check】 判断CTU是否可以放货(信号是否存在) 获取{code}的标签{strs[1]}是否存在 结果为:{flag} ");
|
||||
}
|
||||
string data = _redisData.GetHash(strs[0], strs[1]).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
|
||||
Logger.Information($"【Check】 判断CTU是否可以取货2 {code} {action} result:{result} ");
|
||||
Logger.Information($"【Check】 判断CTU是否可以放货(信号是否允许) 获取{code}的标签{strs[1]}信号值 结果为:{result}");
|
||||
if (!result)
|
||||
{
|
||||
throw new Exception($"【Check】 判断CTU是否可以取货2 {code} {action} result:{result} ");
|
||||
throw new Exception($"【Check】 判断CTU是否可以放货(信号是否允许) 获取{code}的标签{strs[1]}信号值 结果为:{result} ");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -69,10 +69,10 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
throw new Exception($"载具{wmsCarryH.carry_code}已锁定");
|
||||
}
|
||||
if (wmsCarryH.carry_status == "1")
|
||||
{
|
||||
throw new Exception($"载具{wmsCarryH.carry_code}已占用");
|
||||
}
|
||||
//if (wmsCarryH.carry_status == "1")
|
||||
//{
|
||||
// throw new Exception($"载具{wmsCarryH.carry_code}已占用");
|
||||
//}
|
||||
|
||||
if (basLocation.is_lock == 1)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user