静置仓逻辑编写,返回提示修改 bug,包材出库逻辑变更
This commit is contained in:
@@ -102,7 +102,7 @@ namespace Tnb.ProductionMgr
|
||||
public SemaphoreSlim s_task送满托到下升降区 = new(1);
|
||||
public SemaphoreSlim s_task移走上升降区未生成预任务且满托的料架 = new(1);
|
||||
public SemaphoreSlim s_task移走下升降区未生成预任务且空托的料架 = new(1);
|
||||
public SemaphoreSlim s_taskPackOutstockService = 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);
|
||||
@@ -1490,7 +1490,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
{
|
||||
LoggerFloor2RackDelivery.LogWarning($"【移走上升降区满托的料架】找不到转库单{wmsMechanicalArmH.outbill}");
|
||||
}
|
||||
bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走上升降区未生成预任务且满托的料架, true, wmsMaterialTransferId);
|
||||
bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走上升降区未生成预任务且满托的料架, "erp_qtrk", wmsMaterialTransferId);
|
||||
if (!result)
|
||||
{
|
||||
LoggerFloor2RackDelivery.LogError($"【移走上升降区满托的料架】 未成功生成预任务 起点{wmsMechanicalArmH.location_code} 终点{endLocation.location_code} 料架 {wmsMechanicalArmH.rackcode}");
|
||||
@@ -1623,7 +1623,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
LoggerFloor2RackDelivery.LogInformation($"【移走下升降区空托的料架】 开始执行预任务生成: 料架区为{wmsMechanicalArmH.name}{wmsMechanicalArmH.stackingposition} 料架为{wmsMechanicalArmH.rackcode}");
|
||||
|
||||
bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走下升降区未生成预任务且空托的料架, true);
|
||||
bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走下升降区未生成预任务且空托的料架);
|
||||
if (!result)
|
||||
{
|
||||
LoggerFloor2RackDelivery.LogInformation($"【移走下升降区空托的料架】 未成功生成预任务 起点{wmsMechanicalArmH.location_code} 终点{endLocation.location_code} 料架 {wmsMechanicalArmH.rackcode}");
|
||||
@@ -1672,7 +1672,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
}
|
||||
|
||||
// 上下升降机生成预任务(补充料架、上升降机取货到料架、上升降机满托运走,下升降机拿货到输送线、下升降机空托运走)
|
||||
private async Task<bool> createPretask(string startlocation_id, string endlocation_id, string carry_id, string carry_code, ILogger logger, ISqlSugarClient dbConn, bool isSync2Erp = false, string source_id = "")
|
||||
private async Task<bool> createPretask(string startlocation_id, string endlocation_id, string carry_id, string carry_code, ILogger logger, ISqlSugarClient dbConn, string biz_type = "", string source_id = "", string require_id = "")
|
||||
{
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput.startlocation_id = startlocation_id;
|
||||
@@ -1680,8 +1680,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
commonCreatePretaskInput.carry_id = carry_id;
|
||||
commonCreatePretaskInput.carry_code = carry_code;
|
||||
commonCreatePretaskInput.task_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID;
|
||||
commonCreatePretaskInput.biz_type = isSync2Erp ? "erp_qtrk" : "";
|
||||
commonCreatePretaskInput.require_id = "";
|
||||
commonCreatePretaskInput.biz_type = biz_type;
|
||||
commonCreatePretaskInput.require_id = require_id;
|
||||
commonCreatePretaskInput.source_id = source_id;
|
||||
commonCreatePretaskInput.isExcuteMission = false;
|
||||
|
||||
@@ -1700,35 +1700,35 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
/// 四楼包材自动到二楼包材库
|
||||
/// </summary>
|
||||
/// <param name="args"></param>
|
||||
public async void PackOutstockService(object? args)
|
||||
{
|
||||
if (s_taskPackOutstockService.CurrentCount == 0)
|
||||
return;
|
||||
await s_taskPackOutstockService.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")} 开始执行四楼包材自动到二楼包材库");
|
||||
//public async void PackOutstockService(object? args)
|
||||
//{
|
||||
// if (s_taskPackOutstockService.CurrentCount == 0)
|
||||
// return;
|
||||
// await s_taskPackOutstockService.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 _wmsPackOutstockService.Distribute();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("【四楼包材自动到二楼包材库】" + ex.Message);
|
||||
LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.Message}");
|
||||
LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.StackTrace}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
s_taskPackOutstockService.Release();
|
||||
// await _wmsPackOutstockService.Distribute();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("【四楼包材自动到二楼包材库】" + ex.Message);
|
||||
// LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.Message}");
|
||||
// LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.StackTrace}");
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// s_taskPackOutstockService.Release();
|
||||
|
||||
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");
|
||||
}
|
||||
}
|
||||
// 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");
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
async void ElevatorTaskExceptionHandle(object args)
|
||||
@@ -2063,7 +2063,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
wmsSterilizationInstockH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
wmsSterilizationInstockH.xl_location_id = startlocation.id;
|
||||
wmsSterilizationInstockH.xl_location_code = startlocation.location_code;
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID;
|
||||
wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
|
||||
int row = await db_Floor4MJX2MJC.Insertable(wmsSterilizationInstockH).ExecuteCommandAsync();
|
||||
if (row > 0)
|
||||
@@ -2120,20 +2120,73 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼灭菌仓到成品库");
|
||||
LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼灭菌仓到成品库");
|
||||
|
||||
WmsFloor4stewingConfig wmsFloor4StewingConfig = await db_Floor4DMC2CPK.Queryable<WmsFloor4stewingConfig>()
|
||||
.Where(r => r.name == "静置时间(小时)").FirstAsync();
|
||||
|
||||
if (wmsFloor4StewingConfig == null)
|
||||
{
|
||||
LoggerFloor4MJX2MJC.LogWarning($"【四楼灭菌仓到成品库】 未在静置仓配置中配置 静置时间(小时)");
|
||||
return;
|
||||
}
|
||||
int hours = 168;
|
||||
|
||||
if (!int.TryParse(wmsFloor4StewingConfig.value, out hours))
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 静置时间(小时) 配置有误,错误值为 {wmsFloor4StewingConfig.value}");
|
||||
return;
|
||||
}
|
||||
|
||||
List<WmsSterilizationInstockH> wmsSterilizationInstockHs = db_Floor4DMC2CPK.Queryable<WmsSterilizationInstockH>()
|
||||
.Where(r => DateTime.Now.Subtract(r.instock_time.Value).TotalHours > hours && r.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToList();
|
||||
|
||||
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)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致");
|
||||
continue;
|
||||
}
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.BeginTranAsync();
|
||||
|
||||
|
||||
BasLocation startlocation = await db_Floor4DMJ2MJX.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID,
|
||||
Size = 1
|
||||
};
|
||||
List<BasLocation> items = await _wareHouseService.InStockStrategy(inStockStrategyInput);
|
||||
|
||||
if (items.Count < 1)
|
||||
{
|
||||
LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 没有可以入库的库位");
|
||||
break;
|
||||
}
|
||||
BasLocation endlocation = items[0];
|
||||
|
||||
//锁定起点库位
|
||||
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();
|
||||
|
||||
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;
|
||||
await db_Floor4DMC2CPK.Updateable(wmsSterilizationInstockH).UpdateColumns(r => new { r.status }).ExecuteCommandAsync();
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.CommitTranAsync();
|
||||
}
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.BeginTranAsync();
|
||||
|
||||
|
||||
await db_Floor4DMC2CPK.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (ObjectDisposedException ex)
|
||||
{
|
||||
@@ -2190,6 +2243,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
GenTaskExecutetimer = new Timer(GenTaskExecute, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
|
||||
// 停用
|
||||
//PackOutstockServicetimer = new Timer(PackOutstockService, null, TimeSpan.Zero, TimeSpan.FromSeconds(60));
|
||||
|
||||
ElevatorTaskExceptionHandleThread = new Thread(ElevatorTaskExceptionHandle);
|
||||
|
||||
@@ -145,6 +145,10 @@ public class ModuleConsts
|
||||
/// </summary>
|
||||
public const string MODULE_WMSTRANSFER_ID = "26125750270757";
|
||||
/// <summary>
|
||||
/// 模块标识-灭菌入库 todo
|
||||
/// </summary>
|
||||
public const string MODULE_WMSSTERILIZATIONINSTOCKCHID = "MODULE_WMSSTERILIZATIONINSTOCKCHID";
|
||||
/// <summary>
|
||||
/// 模块标识-载具移出
|
||||
/// </summary>
|
||||
public const string MODULE_WMSCARRYMOOUTSTK_ID = "26123262586661";
|
||||
|
||||
@@ -311,6 +311,11 @@
|
||||
/// </summary>
|
||||
public const string BIZTYPE_WMSPRDINSTOCK_ID = "34840264160277";
|
||||
|
||||
/// <summary>
|
||||
/// 灭菌入库 todo
|
||||
/// </summary>
|
||||
public const string BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID = "BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID";
|
||||
|
||||
/// <summary>
|
||||
/// 条码打印状态-已完成
|
||||
/// </summary>
|
||||
|
||||
@@ -17,5 +17,11 @@
|
||||
/// 批次
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
/// <summary>
|
||||
/// 仓库
|
||||
/// </summary>
|
||||
public string? warehouse_id { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,9 +108,4 @@ 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; }
|
||||
}
|
||||
|
||||
@@ -144,16 +144,6 @@ 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; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,12 @@ namespace Tnb.WarehouseMgr.Interfaces
|
||||
/// <returns></returns>
|
||||
Task<List<BasLocation>> InStockStrategy([FromQuery] InStockStrategyQuery input);
|
||||
/// <summary>
|
||||
/// 入库策略(包材库)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<BasLocation>> InStockStrategyBCK([FromQuery] InStockStrategyQuery input);
|
||||
/// <summary>
|
||||
/// 包材库2楼入库策略
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
|
||||
@@ -10,6 +10,6 @@ namespace Tnb.WarehouseMgr.Interfaces
|
||||
|
||||
public interface IWmsEmptycarryInstockLogService
|
||||
{
|
||||
Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Instock(WmsEmptycarryInstockServiceInstockInput input);
|
||||
Task<dynamic> Instock(WmsEmptycarryInstockServiceInstockInput input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,6 +234,36 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
return items.Take(input.Size).ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// 入库策略
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<List<BasLocation>> InStockStrategyBCK([FromQuery] InStockStrategyQuery input)
|
||||
{
|
||||
List<BasLocation> items = new();
|
||||
try
|
||||
{
|
||||
WmsInstockPolicies policy = await _db.CopyNew().Queryable<WmsInstockPolicies>().Where(it => it.status == 1).FirstAsync();
|
||||
if (policy == null)
|
||||
{
|
||||
throw new AppFriendlyException("没有可用的策略", 500);
|
||||
}
|
||||
|
||||
Expression<Func<BasLocation, bool>> whereExp = Expressionable.Create<BasLocation>()
|
||||
.And(it => it.wh_id == input.warehouse_id)
|
||||
.And(it => it.is_lock == 0)
|
||||
.And(it => it.is_type == ((int)EnumLocationType.分拣库位).ToString())
|
||||
.And(it => it.is_use == ((int)EnumCarryStatus.空闲).ToString())
|
||||
.ToExpression();
|
||||
items = await _db.CopyNew().Queryable<BasLocation>().Where(whereExp).OrderBy(policy.policy).ToListAsync();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
return items.Take(input.Size).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 包材库2楼入库策略
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// </param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Instock(WmsEmptycarryInstockServiceInstockInput input)
|
||||
public async Task<dynamic> Instock(WmsEmptycarryInstockServiceInstockInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -107,14 +107,15 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Insertable(wmsEmptycarryInstockLog).ExecuteCommandAsync();
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.Message);
|
||||
Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,7 +298,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(MaterialTransferDistributeInput input)
|
||||
public async Task<dynamic> Distribute(MaterialTransferDistributeInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -421,7 +421,7 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError("【Distribute】" + ex.Message);
|
||||
Logger.LogError("【Distribute】" + ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -429,7 +429,7 @@ namespace Tnb.WarehouseMgr
|
||||
InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -439,7 +439,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> DistributeHCC(MaterialTransferDistributeInput input)
|
||||
public async Task<dynamic> DistributeHCC(MaterialTransferDistributeInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -571,7 +571,7 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError("【Distribute】" + ex.Message);
|
||||
Logger.LogError("【Distribute】" + ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -579,7 +579,195 @@ namespace Tnb.WarehouseMgr
|
||||
InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取物料库存(通用)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> MaterialInventoryCommon(MaterialTransferGetMaterialInventoryInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (input.palletCount <= 0)
|
||||
{
|
||||
throw new AppFriendlyException("托盘数必须大于0", 500);
|
||||
}
|
||||
if (string.IsNullOrEmpty(input.material_id))
|
||||
{
|
||||
throw new AppFriendlyException("物料id不可为空", 500);
|
||||
}
|
||||
//if (string.IsNullOrEmpty(input.code_batch))
|
||||
//{
|
||||
// throw new AppFriendlyException("批号不可为空", 500);
|
||||
//}
|
||||
if (string.IsNullOrEmpty(input.warehouse_id))
|
||||
{
|
||||
throw new AppFriendlyException("仓库不可为空", 500);
|
||||
}
|
||||
|
||||
//入库取终点 //出库起点
|
||||
OutStockStrategyQuery inStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = input.warehouse_id,
|
||||
material_id = input.material_id,
|
||||
code_batch = input.code_batch,
|
||||
Size = input.palletCount
|
||||
};
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategy(inStockStrategyInput);
|
||||
|
||||
if (string.IsNullOrEmpty(input.code_batch))
|
||||
input.code_batch = null;
|
||||
|
||||
decimal qty = _db.Queryable<WmsCarryCode>().Where(r => items.Select(a => a.id).Contains(r.carry_id) && r.material_id == input.material_id && r.code_batch == input.code_batch).Sum(r => r.codeqty);
|
||||
|
||||
JObject keyValuePairs = new JObject();
|
||||
keyValuePairs["realPalletCount"] = items.Count;
|
||||
keyValuePairs["realInvQty"] = qty;
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功", keyValuePairs);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按料架下发(包材库)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<dynamic> DistributeBCK(MaterialTransferDistributeInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(input.source_id))
|
||||
{
|
||||
throw new AppFriendlyException("来源单据id不可为空", 500);
|
||||
}
|
||||
if (input.palletCount <= 0)
|
||||
{
|
||||
throw new AppFriendlyException("料架数必须大于0", 500);
|
||||
}
|
||||
if (input.qty <= 0)
|
||||
{
|
||||
throw new AppFriendlyException("数量必须大于0", 500);
|
||||
}
|
||||
//if (string.IsNullOrEmpty(input.code_batch))
|
||||
//{
|
||||
// throw new AppFriendlyException("批号不可为空", 500);
|
||||
//}
|
||||
if (string.IsNullOrEmpty(input.code_batch))
|
||||
input.code_batch = null;
|
||||
|
||||
WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable<WmsMaterialTransferD>().FirstAsync(it => it.id == input.source_id);
|
||||
WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable<WmsMaterialTransfer>().FirstAsync(it => it.id == wmsMaterialTransferD.bill_id);
|
||||
|
||||
if (wmsMaterialTransferD.yxfqty == wmsMaterialTransferD.qty)
|
||||
{
|
||||
throw new AppFriendlyException("已下发数量已达到转库数量", 500);
|
||||
}
|
||||
|
||||
if (wmsMaterialTransfer.warehouse_outstock != WmsWareHouseConst.WAREHOUSE_BCK_ID)
|
||||
{
|
||||
throw new AppFriendlyException($@"转库单{wmsMaterialTransfer.bill_code}入库仓库不是四楼包材库,请检查!", HttpStatusCode.InternalServerError);
|
||||
}
|
||||
if (wmsMaterialTransfer.warehouse_instock != WmsWareHouseConst.WAREHOUSE_F2BCQ_ID)
|
||||
{
|
||||
throw new AppFriendlyException($@"转库单{wmsMaterialTransfer.bill_code}入库仓库不是二楼包材库,请检查!", HttpStatusCode.InternalServerError);
|
||||
}
|
||||
|
||||
await s_taskExecuteSemaphore.WaitAsync();
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
//入库取终点 //出库起点
|
||||
OutStockStrategyQuery outStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_BCK_ID, material_id = wmsMaterialTransferD.material_id, code_batch = input.code_batch, Size = input.palletCount };
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategy(outStockStrategyInput);
|
||||
|
||||
if (items.Count == 0)
|
||||
{
|
||||
throw new AppFriendlyException($@"没有可以出库的载具", 500);
|
||||
}
|
||||
|
||||
decimal qty = _db.Queryable<WmsCarryCode>().Where(r => items.Select(a => a.id).Contains(r.carry_id) && r.material_id == wmsMaterialTransferD.material_id && r.code_batch == input.code_batch).Sum(r => r.codeqty);
|
||||
|
||||
// 暂定PDA上查询到的物料批次和库存数量与提交时获取的不一致时,需要前台重新获取库存接口
|
||||
if (input.palletCount != items.Count || input.qty != qty)
|
||||
{
|
||||
throw new AppFriendlyException($@"当前实际料架数量为{input.palletCount} 实际库存数量为{qty},与前台数据不一致,请重新获取库存", HttpStatusCode.InternalServerError);
|
||||
}
|
||||
|
||||
InStockStrategyQuery inStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_F2BCQ_ID,
|
||||
Size = input.palletCount
|
||||
};
|
||||
List<BasLocation> endlocations = await _wareHouseService.InStockStrategyBCK(inStockStrategyInput);
|
||||
|
||||
if (endlocations.Count < 1)
|
||||
{
|
||||
throw new AppFriendlyException($@"没有可以入库的库位", 500);
|
||||
}
|
||||
|
||||
if (items.Count == 0)
|
||||
{
|
||||
throw new AppFriendlyException($@"没有可以出库的载具", 500);
|
||||
}
|
||||
|
||||
int index = 0;
|
||||
foreach (var wmsCarryH in items)
|
||||
{
|
||||
WmsCarryCode wmsCarryCode = await _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == wmsCarryH.id).FirstAsync();
|
||||
BasLocation startLocation = await _db.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput.endlocation_id = endlocations[index].id;
|
||||
commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID;
|
||||
commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID;
|
||||
// 转库单id
|
||||
commonCreatePretaskInput.source_id = input.source_id;
|
||||
commonCreatePretaskInput.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput.isExcuteMission = false;
|
||||
|
||||
Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput);
|
||||
|
||||
if (res.code != HttpStatusCode.OK)
|
||||
{
|
||||
Logger.LogInformation($@"生成预任务失败");
|
||||
throw new AppFriendlyException($@"生成预任务失败", 500);
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
// 更新子表已下发数量
|
||||
await _db.Updateable<WmsMaterialTransferD>().SetColumns(r => r.yxfqty == r.yxfqty + input.qty).Where(r => r.id == input.source_id).ExecuteCommandAsync();
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError("【Distribute】" + ex.Message);
|
||||
Logger.LogError("【Distribute】" + ex.StackTrace);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_ = s_taskExecuteSemaphore.Release();
|
||||
InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -723,7 +911,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> DistributeToZCC(MaterialTransferDistributeToZCCInput input)
|
||||
public async Task<dynamic> DistributeToZCC(MaterialTransferDistributeToZCCInput input)
|
||||
{
|
||||
s_taskDistributeToZCC.Wait();
|
||||
|
||||
@@ -849,14 +1037,14 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError("【DistributeToZCC】" + ex.Message);
|
||||
Logger.LogError("【DistributeToZCC】" + ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
s_taskDistributeToZCC.Release();
|
||||
InvokeGenPretaskExcute();
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -866,7 +1054,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input)
|
||||
public async Task<dynamic> CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -968,10 +1156,10 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
Logger.LogError("【CallRackToProductionLine】" + ex.Message);
|
||||
Logger.LogError("【CallRackToProductionLine】" + ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -981,7 +1169,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input)
|
||||
public async Task<dynamic> RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1035,13 +1223,13 @@ namespace Tnb.WarehouseMgr
|
||||
pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes));
|
||||
jArray.Add(pairs);
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功", jArray);
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError("【RackAndMatByWorkstation】" + ex.Message);
|
||||
Logger.LogError("【RackAndMatByWorkstation】" + ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
return Oops.Bah(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1051,7 +1239,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackInstock(MaterialTransferRackInstockInput input)
|
||||
public async Task<dynamic> RackInstock(MaterialTransferRackInstockInput input)
|
||||
{
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
|
||||
|
||||
@@ -1068,11 +1256,11 @@ namespace Tnb.WarehouseMgr
|
||||
else
|
||||
{
|
||||
Logger.LogError($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
return Oops.Bah($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
}
|
||||
}
|
||||
|
||||
async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
|
||||
async Task<dynamic> RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1175,12 +1363,12 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.LogError("【RackInstock】" + ex.Message);
|
||||
Logger.LogError("【RackInstock】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
|
||||
async Task<dynamic> RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1234,9 +1422,9 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.LogError("【RackInstock】" + ex.Message);
|
||||
Logger.LogError("【RackInstock】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -163,7 +163,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> OutsourcedPartsInstock(OutsourcedPartsInstockInput input)
|
||||
public async Task<dynamic> OutsourcedPartsInstock(OutsourcedPartsInstockInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -360,7 +360,7 @@ namespace Tnb.WarehouseMgr
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -368,7 +368,7 @@ namespace Tnb.WarehouseMgr
|
||||
await InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -377,7 +377,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> FinishproductOutstockSign(FinishproductOutstockSignInput input)
|
||||
public async Task<dynamic> FinishproductOutstockSign(FinishproductOutstockSignInput input)
|
||||
{
|
||||
Logger.LogInformation($"【FinishproductOutstockSign】载具签收 {input.carry_code}");
|
||||
if (string.IsNullOrEmpty(input.carry_code))
|
||||
@@ -458,10 +458,10 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.Error($"【FinishproductOutstockSign】 {ex.Message}");
|
||||
Logger.Error($"【FinishproductOutstockSign】 {ex.StackTrace}");
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.BasicData.Interfaces;
|
||||
@@ -197,8 +198,10 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"【PDADelivery】{ex.Message}");
|
||||
Logger.LogError($"【PDADelivery】{ex.StackTrace}");
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> PackInstock(OutsourcedPartsInstockInput input)
|
||||
public async Task<dynamic> PackInstock(OutsourcedPartsInstockInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -180,6 +180,10 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
|
||||
ePoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == endLocations[0].id);
|
||||
if (ePoint == null)
|
||||
{
|
||||
throw new AppFriendlyException($"{endLocations[0].location_code}终点未配置点位", 500);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -314,7 +318,7 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.LogError($"【PackInstock】 {ex.Message}");
|
||||
Logger.LogError($"【PackInstock】 {ex.StackTrace}");
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -322,7 +326,7 @@ namespace Tnb.WarehouseMgr
|
||||
await InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ namespace Tnb.WarehouseMgr
|
||||
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;
|
||||
@@ -258,7 +258,7 @@ namespace Tnb.WarehouseMgr
|
||||
Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db);
|
||||
if (res2.code != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"包装车间生成到中储仓的任务失败 {res2.msg}");
|
||||
throw new Exception($"包装车间生成任务失败 {res2.msg}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Result> PrdReturn(PrdReturnInput input)
|
||||
public async Task<dynamic> PrdReturn(PrdReturnInput input)
|
||||
{
|
||||
WmsPrdReturnH wmsPrdReturnH = await _db.Queryable<WmsPrdReturnH>().Where(r => r.id == input.source_id).FirstAsync();
|
||||
if (wmsPrdReturnH == null)
|
||||
@@ -93,12 +93,12 @@ namespace Tnb.WarehouseMgr
|
||||
else
|
||||
{
|
||||
Logger.LogError($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
return Oops.Bah($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async Task<Result> Return_到暂存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH)
|
||||
async Task<dynamic> Return_到暂存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -228,12 +228,12 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.LogError("【PrdReturn】" + ex.Message);
|
||||
Logger.LogError("【PrdReturn】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
async Task<Result> Return_到缓存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH)
|
||||
async Task<dynamic> Return_到缓存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -335,9 +335,9 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.LogError("【PrdReturn】" + ex.Message);
|
||||
Logger.LogError("【PrdReturn】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(SaleReleaseDistributeInput input)
|
||||
public async Task<dynamic> Distribute(SaleReleaseDistributeInput input)
|
||||
{
|
||||
Logger.LogInformation($"【Distribute】 销售出库下发");
|
||||
try
|
||||
@@ -359,7 +359,7 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError($"【Distribute】 销售出库 {ex.Message}");
|
||||
Logger.LogError($"【Distribute】 销售出库 {ex.StackTrace}");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -367,7 +367,7 @@ namespace Tnb.WarehouseMgr
|
||||
await InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -376,7 +376,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Sort(FinishproductOutstockSortInput input)
|
||||
public async Task<dynamic> Sort(FinishproductOutstockSortInput input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input.source_id))
|
||||
{
|
||||
@@ -413,10 +413,10 @@ namespace Tnb.WarehouseMgr
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
throw Oops.Bah(ex.Message);
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.EventBus;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Attributes;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 库内转移
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WMSSTERILIZATIONINSTOCKCHID)]
|
||||
[ServiceModule(BizTypeId)]
|
||||
public class WmsSterilizationInstockHService : BaseWareHouseService
|
||||
{
|
||||
private const string BizTypeId = WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID;
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
private readonly IWareHouseService _wareHouseService;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IUserManager _userManager;
|
||||
|
||||
public WmsSterilizationInstockHService(
|
||||
ISqlSugarRepository<WmsCarryH> repository,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService,
|
||||
IWareHouseService wareHouseService,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IEventPublisher publisher)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
_wareHouseService = wareHouseService;
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
|
||||
}
|
||||
|
||||
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
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();
|
||||
if (!isOk)
|
||||
{
|
||||
throw Oops.Oh(ErrorCode.COM1001);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user