二楼转库传任务单
This commit is contained in:
@@ -38,6 +38,7 @@ using Senparc.Weixin.Work.AdvancedAPIs.OaDataOpen;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Tnb.ProductionMgr.Entities;
|
||||
using Tnb.BasicData;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
@@ -201,7 +202,56 @@ namespace Tnb.WarehouseMgr
|
||||
};
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategyYCL(inStockStrategyInput);
|
||||
|
||||
decimal qty = _db.Queryable<WmsCarryCode>().Where(r => items.Select(a => a.id).Contains(r.carry_id) && r.material_id == input.material_id).Sum(r => r.codeqty);
|
||||
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<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> MaterialInventoryHCC(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);
|
||||
}
|
||||
|
||||
//入库取终点 //出库起点
|
||||
OutStockStrategyQuery inStockStrategyInput = new()
|
||||
{
|
||||
warehouse_id = WmsWareHouseConst.WAREHOUSE_HCC_ID,
|
||||
material_id = input.material_id,
|
||||
code_batch = input.code_batch,
|
||||
Size = input.palletCount
|
||||
};
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategyHCC(inStockStrategyInput);
|
||||
|
||||
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;
|
||||
@@ -257,7 +307,7 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
//入库取终点 //出库起点
|
||||
OutStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_YCL_ID, material_id = wmsMaterialTransferD.material_id, code_batch = wmsMaterialTransferD.code_batch, Size = input.palletCount };
|
||||
OutStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_YCL_ID, material_id = wmsMaterialTransferD.material_id, code_batch = input.code_batch, Size = input.palletCount };
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategyYCL(inStockStrategyInput);
|
||||
|
||||
if (items.Count == 0)
|
||||
@@ -265,7 +315,7 @@ namespace Tnb.WarehouseMgr
|
||||
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).Sum(r => r.codeqty);
|
||||
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)
|
||||
@@ -297,7 +347,7 @@ namespace Tnb.WarehouseMgr
|
||||
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.location_code == wmsCarryH.location_code).FirstAsync();
|
||||
BasLocation startLocation = await _db.Queryable<BasLocation>().Where(r => r.id == wmsCarryH.location_id).FirstAsync();
|
||||
|
||||
BasLocation endLocation = null;
|
||||
// 集中供料区三工位
|
||||
@@ -358,6 +408,157 @@ namespace Tnb.WarehouseMgr
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按料架下发(缓存仓)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> DistributeHCC(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);
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
OrganizeEntity organizeEntity = _db.Queryable<OrganizeEntity>().Where(r => r.EnCode == wmsMaterialTransferD.station_code).First();
|
||||
if (organizeEntity == null)
|
||||
{
|
||||
Logger.LogWarning($"【CallRackToProductionLine】不存在工位code为{wmsMaterialTransferD.station_code}的工位!");
|
||||
throw new AppFriendlyException($"不存在工位code为{wmsMaterialTransferD.station_code}的工位!", 500);
|
||||
}
|
||||
// 获取产线
|
||||
OrganizeEntity organizeEntityCX = _db.Queryable<OrganizeEntity>().Where(r => r.Id == organizeEntity.ParentId).First();
|
||||
if (organizeEntityCX == null)
|
||||
{
|
||||
Logger.LogWarning($"【CallRackToProductionLine】基础资料错误!工位{organizeEntity.EnCode}的上级产线不存在,请检查!");
|
||||
throw new AppFriendlyException($"【CallRackToProductionLine】基础资料错误!工位{organizeEntity.EnCode}的上级产线不存在,请检查!", 500);
|
||||
}
|
||||
|
||||
if (organizeEntityCX.Category != "workline")
|
||||
{
|
||||
Logger.LogWarning($"【CallRackToProductionLine】基础资料错误!工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}不属于产线类型,请检查!");
|
||||
throw new AppFriendlyException($"【CallRackToProductionLine】基础资料错误!工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}不属于产线类型,请检查!", 500);
|
||||
}
|
||||
|
||||
// 获取任务单
|
||||
|
||||
List<PrdMoTask> organizeEntityCXs = _db.Queryable<PrdMoTask>().Where(r => r.workline_id == organizeEntityCX.Id && r.mo_task_status == DictConst.InProgressEnCode).ToList();
|
||||
if (organizeEntityCXs.Count > 1)
|
||||
{
|
||||
Logger.LogWarning($"【CallRackToProductionLine】工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}对应的进行中的任务单不唯一,请检查!");
|
||||
throw new AppFriendlyException($"【CallRackToProductionLine】工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}对应的进行中的任务单不唯一,请检查!", 500);
|
||||
}
|
||||
if (organizeEntityCXs.Count == 0)
|
||||
{
|
||||
Logger.LogWarning($"【CallRackToProductionLine】未找到工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}对应的进行中的任务单,请检查!");
|
||||
throw new AppFriendlyException($"【CallRackToProductionLine】未找到工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}对应的进行中的任务单,请检查!", 500);
|
||||
}
|
||||
PrdMoTask prdMoTask = organizeEntityCXs.First();
|
||||
|
||||
|
||||
|
||||
await s_taskExecuteSemaphore.WaitAsync();
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
//入库取终点 //出库起点
|
||||
OutStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_HCC_ID, material_id = wmsMaterialTransferD.material_id, code_batch = input.code_batch, Size = input.palletCount };
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategyHCC(inStockStrategyInput);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
if (wmsMaterialTransfer.warehouse_instock != WmsWareHouseConst.WAREHOUSE_ZZXBK_ID)
|
||||
{
|
||||
throw new AppFriendlyException($@"转库单{wmsMaterialTransfer.bill_code}入库仓库不是线边库,请检查!", HttpStatusCode.InternalServerError);
|
||||
}
|
||||
|
||||
|
||||
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 = input.endlocation_id;
|
||||
commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID;
|
||||
// 转库单id
|
||||
commonCreatePretaskInput.source_id = input.source_id;
|
||||
// 任务单code
|
||||
commonCreatePretaskInput.require_id = prdMoTask.id;
|
||||
commonCreatePretaskInput.require_code = prdMoTask.mo_task_code;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新子表已下发数量
|
||||
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);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_ = s_taskExecuteSemaphore.Release();
|
||||
InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
|
||||
|
||||
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||
{
|
||||
if (input == null)
|
||||
@@ -372,10 +573,10 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
// 更新已转数量
|
||||
bool isOk = await _db.Updateable<WmsMaterialTransferD>().SetColumns(it => new WmsMaterialTransferD { yzqty = it.yzqty + wmsCarryCodes.Sum(r => r.codeqty)})
|
||||
.Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync();
|
||||
.Where(it => it.id == input.source_id).ExecuteCommandHasChangeAsync();
|
||||
|
||||
// 如果所有明细已完成 更新主表状态为完成
|
||||
WmsMaterialTransferD wmsMaterialTransferd = await _db.Queryable<WmsMaterialTransferD>().Where(r => r.id == input.requireId).SingleAsync();
|
||||
WmsMaterialTransferD wmsMaterialTransferd = await _db.Queryable<WmsMaterialTransferD>().Where(r => r.id == input.source_id).SingleAsync();
|
||||
List<WmsMaterialTransferD> wmsMaterialTransferDs = _db.Queryable<WmsMaterialTransferD>()
|
||||
.Where(a => a.bill_id == wmsMaterialTransferd.bill_id && a.yzqty < a.qty).ToList();
|
||||
bool isOk2 = true;
|
||||
@@ -384,7 +585,9 @@ namespace Tnb.WarehouseMgr
|
||||
isOk2 = await _db.Updateable<WmsMaterialTransfer>().SetColumns(it => new WmsMaterialTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID })
|
||||
.Where(it => it.id == wmsMaterialTransferd.bill_id).ExecuteCommandHasChangeAsync();
|
||||
}
|
||||
|
||||
|
||||
// require_code是任务单
|
||||
string mo_task_code = input.require_code;
|
||||
|
||||
if (!isOk || !isOk2)
|
||||
{
|
||||
@@ -579,7 +782,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
// 获取任务单
|
||||
|
||||
List<PrdMoTask> organizeEntityCXs = _db.Queryable<PrdMoTask>().Where(r => r.workline_code == organizeEntityCX.EnCode).ToList();
|
||||
List<PrdMoTask> organizeEntityCXs = _db.Queryable<PrdMoTask>().Where(r => r.workline_id == organizeEntityCX.Id && r.mo_task_status == DictConst.InProgressEnCode).ToList();
|
||||
if (organizeEntityCXs.Count > 1)
|
||||
{
|
||||
Logger.LogWarning($"【CallRackToProductionLine】工位{organizeEntity.EnCode}的上级{organizeEntityCX.EnCode}对应的进行中的任务单不唯一,请检查!");
|
||||
@@ -625,6 +828,8 @@ namespace Tnb.WarehouseMgr
|
||||
commonCreatePretaskInput.carry_code = wmsCarryH.carry_code;
|
||||
commonCreatePretaskInput.task_type = "";
|
||||
commonCreatePretaskInput.biz_type = "FloorCallMaterial";
|
||||
commonCreatePretaskInput.source_id = "";
|
||||
commonCreatePretaskInput.require_code = "";
|
||||
commonCreatePretaskInput.require_id = prdMoTask.id;
|
||||
commonCreatePretaskInput.require_code = prdMoTask.mo_task_code;
|
||||
|
||||
@@ -716,25 +921,47 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从产线呼叫装料架到暂存仓
|
||||
/// 从产线呼叫装料架到暂存仓/缓存仓
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackInstock(MaterialTransferRackInstockInput input)
|
||||
{
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
|
||||
|
||||
// 料架到暂存仓
|
||||
if (wmsCarryH.carrystd_id == "26037267399717")
|
||||
{
|
||||
return await RackInstock_到暂存仓(input, wmsCarryH);
|
||||
}
|
||||
// 载运小车和载运料架到缓存仓
|
||||
else if (wmsCarryH.carrystd_id == "26103233723941" || wmsCarryH.carrystd_id == "34995839046677")
|
||||
{
|
||||
return await RackInstock_到缓存仓(input, wmsCarryH);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.LogError($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
|
||||
{
|
||||
try
|
||||
{
|
||||
BasLocation startlocation = _db.Queryable<BasLocation>().Where(r => r.id == input.startlocation_id).First();
|
||||
if (startlocation == null)
|
||||
{
|
||||
Logger.LogWarning($"【RackEmptyInstock】不存在id为{input.startlocation_id}的库位!");
|
||||
throw new AppFriendlyException($"【RackEmptyInstock】不存在id为{input.startlocation_id}的库位!", 500);
|
||||
Logger.LogWarning($"【RackInstock】不存在id为{input.startlocation_id}的库位!");
|
||||
throw new AppFriendlyException($"【RackInstock】不存在id为{input.startlocation_id}的库位!", 500);
|
||||
}
|
||||
if (string.IsNullOrEmpty(input.carry_code))
|
||||
{
|
||||
Logger.LogWarning($"【RackEmptyInstock】料架不能为空!{input.carry_code}");
|
||||
throw new AppFriendlyException($"【RackEmptyInstock】料架不能为空!{input.carry_code}!", 500);
|
||||
Logger.LogWarning($"【RackInstock】料架不能为空!{input.carry_code}");
|
||||
throw new AppFriendlyException($"【RackInstock】料架不能为空!{input.carry_code}!", 500);
|
||||
}
|
||||
if (input.judgeEmptyCarry)
|
||||
{
|
||||
@@ -743,8 +970,8 @@ namespace Tnb.WarehouseMgr
|
||||
.Where((a, b) => input.details.Select(r => r.carry_code).Contains(a.carry_code)).Select((a, b) => b).ToList();
|
||||
if (wmsCarryCodes.Count > 0)
|
||||
{
|
||||
Logger.LogWarning($"【RackEmptyInstock】存在非空料箱,不能入库!{input.carry_code}");
|
||||
throw new AppFriendlyException($"【RackEmptyInstock】存在非空料箱,不能入库!{input.carry_code}!", 500);
|
||||
Logger.LogWarning($"【RackInstock】存在非空料箱,不能入库!{input.carry_code}");
|
||||
throw new AppFriendlyException($"【RackInstock】存在非空料箱,不能入库!{input.carry_code}!", 500);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -755,16 +982,15 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
if (rackEndLocations.Count() == 0)
|
||||
{
|
||||
Logger.LogWarning($"【RackEmptyInstock】没有可用的终点库位");
|
||||
throw new AppFriendlyException($"【RackEmptyInstock】没有可用的终点库位!", 500);
|
||||
Logger.LogWarning($"【RackInstock】没有可用的终点库位");
|
||||
throw new AppFriendlyException($"【RackInstock】没有可用的终点库位!", 500);
|
||||
}
|
||||
|
||||
BasLocation endlocation = rackEndLocations.First();
|
||||
|
||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
|
||||
// 重新绑定料箱到料架
|
||||
// 清空料架
|
||||
Logger.LogWarning($"【RackEmptyInstock】清空料架");
|
||||
Logger.LogWarning($"【RackInstock】清空料架");
|
||||
|
||||
List<WmsCarryH> membercarrys = _db.Queryable<WmsCarryH>().Where(r => input.details.Select(r => r.carry_code).Contains(r.carry_code)).ToList();
|
||||
|
||||
@@ -796,7 +1022,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
|
||||
Logger.LogWarning($"【RackEmptyInstock】开始生成预任务");
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new ();
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new();
|
||||
commonCreatePretaskInput.startlocation_id = startlocation.id;
|
||||
commonCreatePretaskInput.endlocation_id = endlocation.id;
|
||||
commonCreatePretaskInput.carry_id = wmsCarryH.id;
|
||||
@@ -807,7 +1033,7 @@ namespace Tnb.WarehouseMgr
|
||||
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput);
|
||||
if (res.code != JNPF.Common.Enums.HttpStatusCode.OK)
|
||||
{
|
||||
Logger.LogInformation($"【RackEmptyInstock】生成预任务失败 载具 {input.carry_code}");
|
||||
Logger.LogInformation($"【RackInstock】生成预任务失败 载具 {input.carry_code}");
|
||||
throw new AppFriendlyException($"生成预任务失败 载具 {input.carry_code}", 500);
|
||||
}
|
||||
Logger.LogWarning($"【RackEmptyInstock】生成预任务成功");
|
||||
@@ -815,14 +1041,72 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError("【RackEmptyInstock】" + ex.Message);
|
||||
Logger.LogError("【RackEmptyInstock】" + ex.StackTrace);
|
||||
Logger.LogError("【RackInstock】" + ex.Message);
|
||||
Logger.LogError("【RackInstock】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
|
||||
}
|
||||
|
||||
async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
|
||||
{
|
||||
try
|
||||
{
|
||||
BasLocation startlocation = _db.Queryable<BasLocation>().Where(r => r.id == input.startlocation_id).First();
|
||||
if (startlocation == null)
|
||||
{
|
||||
Logger.LogWarning($"【RackInstock】不存在id为{input.startlocation_id}的库位!");
|
||||
throw new AppFriendlyException($"【RackInstock】不存在id为{input.startlocation_id}的库位!", 500);
|
||||
}
|
||||
if (string.IsNullOrEmpty(input.carry_code))
|
||||
{
|
||||
Logger.LogWarning($"【RackInstock】料架不能为空!{input.carry_code}");
|
||||
throw new AppFriendlyException($"【RackInstock】料架不能为空!{input.carry_code}!", 500);
|
||||
}
|
||||
|
||||
// 找到未占用且未锁定的库位
|
||||
ISugarQueryable<BasLocation> rackEndLocations =
|
||||
_db.Queryable<BasLocation>()
|
||||
.Where(r => r.wh_id == "26103348825381" && r.is_use == "0" && r.is_lock == 0).OrderBy(a => a.id).Take(1);
|
||||
|
||||
if (rackEndLocations.Count() == 0)
|
||||
{
|
||||
Logger.LogWarning($"【RackInstock】没有可用的终点库位");
|
||||
throw new AppFriendlyException($"【RackInstock】没有可用的终点库位!", 500);
|
||||
}
|
||||
|
||||
BasLocation endlocation = rackEndLocations.First();
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
|
||||
Logger.LogWarning($"【RackEmptyInstock】开始生成预任务");
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new();
|
||||
commonCreatePretaskInput.startlocation_id = startlocation.id;
|
||||
commonCreatePretaskInput.endlocation_id = endlocation.id;
|
||||
commonCreatePretaskInput.carry_id = wmsCarryH.id;
|
||||
commonCreatePretaskInput.carry_code = input.carry_code;
|
||||
commonCreatePretaskInput.task_type = "";
|
||||
commonCreatePretaskInput.biz_type = "FloorCallMaterial";
|
||||
|
||||
var res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput);
|
||||
if (res.code != JNPF.Common.Enums.HttpStatusCode.OK)
|
||||
{
|
||||
Logger.LogInformation($"【RackInstock】生成预任务失败 载具 {input.carry_code}");
|
||||
throw new AppFriendlyException($"生成预任务失败 载具 {input.carry_code}", 500);
|
||||
}
|
||||
Logger.LogWarning($"【RackEmptyInstock】生成预任务成功");
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError("【RackInstock】" + ex.Message);
|
||||
Logger.LogError("【RackInstock】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user