现场问题处理
This commit is contained in:
@@ -2085,10 +2085,10 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
if (s_agvElevatortaskDic.CurrentCount == 0)
|
||||
return;
|
||||
|
||||
await s_agvElevatortaskDic.WaitAsync();
|
||||
var floor3outstock = await db_agvElevatorTaskExceptionHandles.Queryable<BasFactoryConfig>().Where(p => p.key == "floor3outstock").FirstAsync();
|
||||
if (floor3outstock != null && floor3outstock.value == "0")
|
||||
return;
|
||||
await s_agvElevatortaskDic.WaitAsync();
|
||||
|
||||
try
|
||||
{
|
||||
@@ -2218,28 +2218,28 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
|
||||
// 检查有没有同时从同个暂存区分区发到同个电梯任务
|
||||
if (wmsElevatorH.task_nums + wmsElevatorH.carry_count > 0)
|
||||
{
|
||||
List<string> currentAreaLocs = await db_agvElevatorTaskExceptionHandles.Queryable<WmsElevatorcacheArea>().Where(r => r.name == 切换发货区).Select(r => r.location_code).ToListAsync();
|
||||
// 同个暂存分区同个电梯的托盘
|
||||
List<string> _carrys = await db_agvElevatorTaskExceptionHandles.Queryable<WmsPretaskH>()
|
||||
.InnerJoin<WmsPretaskH>((a, b) => currentAreaLocs.Contains(a.startlocation_code) && a.carry_code == b.carry_code
|
||||
&& a.endlocation_code == b.startlocation_code && a.endlocation_code == $"DT-3-{elevatorSno}")
|
||||
.Where((a, b) => (a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID)
|
||||
|| (b.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && b.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID)).Select((a, b) => a.carry_code).ToListAsync();
|
||||
//if (wmsElevatorH.task_nums + wmsElevatorH.carry_count > 0)
|
||||
//{
|
||||
// List<string> currentAreaLocs = await db_agvElevatorTaskExceptionHandles.Queryable<WmsElevatorcacheArea>().Where(r => r.name == 切换发货区).Select(r => r.location_code).ToListAsync();
|
||||
// // 同个暂存分区同个电梯的托盘
|
||||
// List<string> _carrys = await db_agvElevatorTaskExceptionHandles.Queryable<WmsPretaskH>()
|
||||
// .InnerJoin<WmsPretaskH>((a, b) => currentAreaLocs.Contains(a.startlocation_code) && a.carry_code == b.carry_code
|
||||
// && a.endlocation_code == b.startlocation_code && a.endlocation_code == $"DT-3-{elevatorSno}")
|
||||
// .Where((a, b) => (a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID)
|
||||
// || (b.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && b.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID)).Select((a, b) => a.carry_code).ToListAsync();
|
||||
|
||||
if (_carrys.Count > 0)
|
||||
{
|
||||
LoggerAgvElevatorTask.LogInformation($"出现同时从同个暂存区分区发到同个电梯{wmsElevatorH.elevator_code}的托盘{string.Join(',', _carrys)},等待托盘任务完成");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// if (_carrys.Count > 0)
|
||||
// {
|
||||
// LoggerAgvElevatorTask.LogInformation($"出现同时从同个暂存区分区发到同个电梯{wmsElevatorH.elevator_code}的托盘{string.Join(',', _carrys)},等待托盘任务完成");
|
||||
// continue;
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
floor3FirstSelectElevatorTasknums.value = (int.Parse(floor3FirstSelectElevatorTasknums.value) - 1).ToString();
|
||||
if (floor3FirstSelectElevatorTasknums.value == "0")
|
||||
{
|
||||
LoggerAgvElevatorTask.LogInformation($"重置首选电梯为{(wmsElevatorH.elevator_code == "Elevator3" ? "Elevator4" : "Elevator3")}");
|
||||
LoggerAgvElevatorTask.LogInformation($"下次任务下发后重置首选电梯为{(wmsElevatorH.elevator_code == "Elevator3" ? "Elevator4" : "Elevator3")}");
|
||||
// 选择另一个电梯座位首选电梯
|
||||
await db_agvElevatorTaskExceptionHandles.Updateable<BasFactoryConfig>().SetColumns(r => r.value == (r.value == "Elevator3" ? "Elevator4" : "Elevator3"))
|
||||
.Where(r => r.key == "floor3FirstSelectElevator").ExecuteCommandAsync();
|
||||
@@ -2309,7 +2309,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
if (isOk)
|
||||
{
|
||||
LoggerAgvElevatorTask.LogInformation($"成功下发预任务 {string.Join(',', preTasks.Select(r => r.bill_code))}");
|
||||
LoggerAgvElevatorTask.LogInformation($"成功下发载具 {string.Join(',', preTasks.Select(r => r.carry_code))}");
|
||||
LoggerAgvElevatorTask.LogInformation($"成功下发载具 {string.Join(',', preTasks.Distinct().Select(r => r.carry_code))}");
|
||||
//查询库位表
|
||||
BasLocation location = await db_agvElevatorTaskExceptionHandles.Queryable<BasLocation>().SingleAsync(it => it.id == startloc.id);
|
||||
{
|
||||
@@ -2992,8 +2992,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
F2KTPsupplementtimer = new Timer(F2KTPsupplement, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
YCLInternalTransfertimer = new Timer(YCLInternalTransfer, null, TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(185));
|
||||
|
||||
elevatorTimer = new Timer(ElevatorTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(20));
|
||||
agvelevatorTimer = new Timer(AgvelevatorTimerTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(20));
|
||||
elevatorTimer = new Timer(ElevatorTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10));
|
||||
agvelevatorTimer = new Timer(AgvelevatorTimerTaskExceptionHandle, null, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
@@ -236,5 +236,7 @@ namespace Tnb.WarehouseMgr.Interfaces
|
||||
Task<WmsElevatorH> FindElevatorFromPars(ElevagorInfoQuery input);
|
||||
|
||||
Task<string> CreateCodeRules(string prefix, string custom, int watercodeLength);
|
||||
|
||||
public Task CallingLanding(List<WmsDistaskH?> agvDTTasks);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,9 +92,9 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
Logger.Information($"【LoadConfirm】接收到WCS取货确认信号.................. {JsonConvert.SerializeObject(input)}");
|
||||
|
||||
var dis = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code == input.taskCode).First();
|
||||
try
|
||||
{
|
||||
var dis = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code == input.taskCode).First();
|
||||
if (dis.area_code == "ZSCJ001")
|
||||
{
|
||||
var flag = await _wareHouseService.Check(dis.startlocation_code, "LOAD");
|
||||
@@ -900,6 +900,11 @@ namespace Tnb.WarehouseMgr
|
||||
_ = await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
// 三楼出库取货完成时呼叫电梯
|
||||
if (disTask.area_code == "FC")
|
||||
{
|
||||
_wareHouseService.CallingLanding(new List<WmsDistaskH?>() { disTask });
|
||||
}
|
||||
|
||||
// 中储仓KIVA取货确认后不需要再发送信号给输送线
|
||||
if (disTask.startlocation_code == "ZSSSXCTU01" || disTask.startlocation_code == "ZSSSXCTU02")
|
||||
|
||||
@@ -939,7 +939,284 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 转库单
|
||||
/// </summary>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Entities.Dto.Outputs.Result> MaterialTransferBatch(List<MaterialTransferInput> inputs)
|
||||
{
|
||||
LoggerErp2Mes.LogInformation($"【MaterialTransfer】ERP传入数据:{JsonConvert.SerializeObject(inputs)}");
|
||||
var db = _repository.AsSugarClient();
|
||||
|
||||
List<string> error_erpbillcodes = new List<string>();
|
||||
foreach (MaterialTransferInput input in inputs)
|
||||
{
|
||||
try
|
||||
{
|
||||
WmsErpWarehouserelaH wmsErpWarehouserelaHout = await db.Queryable<WmsErpWarehouserelaH>().Where(r => r.erp_warehousecode == input.warehouse_outstock).FirstAsync();
|
||||
if (wmsErpWarehouserelaHout == null)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【TransferOrder】不存在erp仓库类型{input.warehouse_outstock}对应wms系统的映射关系!");
|
||||
throw new AppFriendlyException($@"不存在erp仓库类型{input.warehouse_outstock}对应wms系统的映射关系!", 500);
|
||||
}
|
||||
|
||||
WmsErpWarehouserelaH wmsErpWarehouserelaHin = await db.Queryable<WmsErpWarehouserelaH>().Where(r => r.erp_warehousecode == input.warehouse_instock).FirstAsync();
|
||||
if (wmsErpWarehouserelaHin == null)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【TransferOrder】不存在erp仓库类型{input.warehouse_instock}对应wms系统的映射关系!");
|
||||
throw new AppFriendlyException($@"不存在erp仓库类型{input.warehouse_instock}对应wms系统的映射关系!", 500);
|
||||
}
|
||||
|
||||
string warehouse_outstock_code = wmsErpWarehouserelaHout.wms_warehousecode;
|
||||
string warehouse_instock_code = wmsErpWarehouserelaHin.wms_warehousecode;
|
||||
|
||||
BasWarehouse warehouse_outstock = await db.Queryable<BasWarehouse>().Where(r => r.whcode == warehouse_outstock_code).FirstAsync();
|
||||
BasWarehouse warehouse_instock = await db.Queryable<BasWarehouse>().Where(r => r.whcode == warehouse_instock_code).FirstAsync();
|
||||
if (warehouse_outstock == null)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【MaterialTransfer】无法查询到出库仓库{input.warehouse_outstock}的档案记录!");
|
||||
throw new AppFriendlyException($"无法查询到出库仓库{input.warehouse_outstock}的档案记录!", 500);
|
||||
}
|
||||
if (warehouse_instock == null)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【MaterialTransfer】无法查询到入库仓库{input.warehouse_instock}的档案记录!");
|
||||
throw new AppFriendlyException($"无法查询到入库仓库{input.warehouse_instock}的档案记录!", 500);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(input.erp_pk))
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【MaterialTransfer】主表主键不能为空!");
|
||||
throw new AppFriendlyException($@"主表主键不能为空!", 500);
|
||||
}
|
||||
|
||||
int count_erp_line_pk = input.details.Where(r => string.IsNullOrEmpty(r.erp_line_pk)).Count();
|
||||
if (count_erp_line_pk > 0)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】子表主键不能为空!");
|
||||
throw new AppFriendlyException($@"子表主键不能为空!", 500);
|
||||
}
|
||||
|
||||
string transfer_type = "";
|
||||
// 中储仓到暂存仓
|
||||
if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID
|
||||
&& (warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZCC_ID || warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_HCC_ID))
|
||||
{
|
||||
int count = input.details.Where(r => string.IsNullOrEmpty(r.station_code)).Count();
|
||||
if (count > 0)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体存在未填写工位的明细!");
|
||||
throw new AppFriendlyException($@"表体存在未填写工位的明细!", 500);
|
||||
}
|
||||
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_CGCK_CODE;
|
||||
}
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_CPCRK_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_CP_ID)
|
||||
{
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_WXDBRK_CODE;
|
||||
}
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_JZGL_ID)
|
||||
{
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE;
|
||||
}
|
||||
else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZZXBK_ID)
|
||||
{
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_CROSSLAYER_CODE;
|
||||
}
|
||||
|
||||
// 暂时其他情况都算齐套出入库类型(未定)
|
||||
else
|
||||
{
|
||||
int count = input.details.Where(r => string.IsNullOrEmpty(r.station_code)).Count();
|
||||
if (count > 0)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体存在未填写工位的明细!");
|
||||
throw new AppFriendlyException($@"表体存在未填写工位的明细!", 500);
|
||||
}
|
||||
|
||||
transfer_type = WmsWareHouseConst.MATERIALTRANSFER_QTCRK_CODE;
|
||||
}
|
||||
|
||||
|
||||
//var wmsMaterialTransferdsDistinct = input.details.Select(r => new
|
||||
//{
|
||||
// material_id = r.material_code,
|
||||
// code_batch = r.code_batch,
|
||||
//}).Distinct();
|
||||
//if (wmsMaterialTransferdsDistinct.Count() < input.details.Count)
|
||||
//{
|
||||
// _LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体存在物料和批号重复的明细!");
|
||||
// throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
|
||||
//}
|
||||
|
||||
await db.Ado.BeginTranAsync();
|
||||
|
||||
// 判断是否重复传输
|
||||
WmsMaterialTransfer wmsMaterialTransferRep = await db.Queryable<WmsMaterialTransfer>().Where(r => r.erp_bill_code == input.bill_code).FirstAsync();
|
||||
if (wmsMaterialTransferRep != null)
|
||||
{
|
||||
// 判断单据是否已经下发
|
||||
List<WmsMaterialTransferD> _wmsMaterialTransferDs = await db.Queryable<WmsMaterialTransferD>().Where(r => r.bill_id == wmsMaterialTransferRep.id).ToListAsync();
|
||||
bool isxf = _wmsMaterialTransferDs.Where(r => r.yxfqty > 0).Any();
|
||||
if (isxf)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【TransferOutstock】wms已下发使用转库单{input.bill_code}!");
|
||||
throw new AppFriendlyException($@"wms已下发使用转库单{input.bill_code}!", 500);
|
||||
}
|
||||
else // 删除数据重新插入
|
||||
{
|
||||
await db.Deleteable<WmsMaterialTransfer>().Where(r => r.id == wmsMaterialTransferRep.id).ExecuteCommandAsync();
|
||||
await db.Deleteable<WmsMaterialTransferD>().Where(r => r.bill_id == wmsMaterialTransferRep.id).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
|
||||
List<MaterialTransferDetail> details = input.details.Where(r => r.qty > 0).ToList();
|
||||
List<MaterialTransferDetail> details_return = input.details.Where(r => r.qty < 0).ToList();
|
||||
|
||||
if (details.Count > 0)
|
||||
{
|
||||
WmsMaterialTransfer wmsMaterialTransfer = new WmsMaterialTransfer();
|
||||
string Code = await _billRuleService.GetBillNumber("MaterialTransfer");
|
||||
wmsMaterialTransfer.bill_code = Code;
|
||||
wmsMaterialTransfer.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
wmsMaterialTransfer.bill_date = DateTime.Now;
|
||||
wmsMaterialTransfer.warehouse_outstock = warehouse_outstock.id;
|
||||
wmsMaterialTransfer.warehouse_instock = warehouse_instock.id;
|
||||
wmsMaterialTransfer.biller_out = input.biller_out;
|
||||
wmsMaterialTransfer.depart_out = input.depart_out;
|
||||
wmsMaterialTransfer.biller_in = input.biller_in;
|
||||
wmsMaterialTransfer.depart_in = input.depart_in;
|
||||
wmsMaterialTransfer.deliver_date = input.deliver_date;
|
||||
wmsMaterialTransfer.arrival_date = input.arrival_date;
|
||||
wmsMaterialTransfer.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsMaterialTransfer.create_time = DateTime.Now;
|
||||
wmsMaterialTransfer.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
wmsMaterialTransfer.erp_bill_code = input.bill_code;
|
||||
wmsMaterialTransfer.type = transfer_type;
|
||||
wmsMaterialTransfer.erp_pk = input.erp_pk;
|
||||
|
||||
await db.Insertable(wmsMaterialTransfer).ExecuteCommandAsync();
|
||||
|
||||
List<WmsMaterialTransferD> wmsMaterialTransferDs = new List<WmsMaterialTransferD>();
|
||||
foreach (var detail in details)
|
||||
{
|
||||
WmsMaterialTransferD wmsMaterialTransferD = new WmsMaterialTransferD();
|
||||
wmsMaterialTransferD.lineno = detail.lineno;
|
||||
wmsMaterialTransferD.material_code = detail.material_code;
|
||||
wmsMaterialTransferD.code_batch = detail.code_batch;
|
||||
wmsMaterialTransferD.station_code = detail.station_code;
|
||||
wmsMaterialTransferD.qty = detail.qty;
|
||||
wmsMaterialTransferD.bill_id = wmsMaterialTransfer.id;
|
||||
|
||||
wmsMaterialTransferD.yxfqty = 0;
|
||||
wmsMaterialTransferD.yzqty = 0;
|
||||
wmsMaterialTransferD.yxfqty_rk = 0;
|
||||
wmsMaterialTransferD.yzqty_rk = 0;
|
||||
wmsMaterialTransferD.erp_line_pk = detail.erp_line_pk;
|
||||
|
||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
{
|
||||
wmsMaterialTransferD.material_id = material.id;
|
||||
wmsMaterialTransferD.material_specification = material.material_specification;
|
||||
}
|
||||
|
||||
|
||||
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||
if (erpExtendField != null)
|
||||
{
|
||||
wmsMaterialTransferD.unit_id = erpExtendField.Id;
|
||||
wmsMaterialTransferD.unit_code = erpExtendField.EnCode;
|
||||
}
|
||||
else
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
||||
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||
}
|
||||
|
||||
wmsMaterialTransferDs.Add(wmsMaterialTransferD);
|
||||
}
|
||||
|
||||
await db.Insertable(wmsMaterialTransferDs).ExecuteCommandAsync();
|
||||
LoggerErp2Mes.LogInformation($"【MaterialTransfer】成功生成单据:{Code}");
|
||||
}
|
||||
|
||||
if (details_return.Count > 0)
|
||||
{
|
||||
WmsPrdReturnH wmsPrdReturnH = new WmsPrdReturnH();
|
||||
string Code = await _billRuleService.GetBillNumber("WMSPRDRETURN");
|
||||
wmsPrdReturnH.bill_code = Code;
|
||||
wmsPrdReturnH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
wmsPrdReturnH.warehouse_id = warehouse_instock.id;
|
||||
wmsPrdReturnH.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsPrdReturnH.create_time = DateTime.Now;
|
||||
wmsPrdReturnH.erp_bill_code = input.bill_code;
|
||||
wmsPrdReturnH.transfer_type = transfer_type;
|
||||
wmsPrdReturnH.erp_pk = input.erp_pk;
|
||||
|
||||
await db.Insertable(wmsPrdReturnH).ExecuteCommandAsync();
|
||||
|
||||
List<WmsPrdReturnD> wmsPrdReturnDs = new List<WmsPrdReturnD>();
|
||||
foreach (var detail in details_return)
|
||||
{
|
||||
WmsPrdReturnD wmsPrdReturnD = new WmsPrdReturnD();
|
||||
wmsPrdReturnD.lineno = detail.lineno;
|
||||
wmsPrdReturnD.material_code = detail.material_code;
|
||||
wmsPrdReturnD.code_batch = detail.code_batch;
|
||||
wmsPrdReturnD.qty = -detail.qty;
|
||||
wmsPrdReturnD.bill_id = wmsPrdReturnH.id;
|
||||
|
||||
wmsPrdReturnD.ytqty = 0;
|
||||
wmsPrdReturnD.erp_line_pk = detail.erp_line_pk;
|
||||
|
||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
{
|
||||
wmsPrdReturnD.material_id = material.id;
|
||||
wmsPrdReturnD.material_code = material.code;
|
||||
wmsPrdReturnD.material_name = material.name;
|
||||
}
|
||||
|
||||
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||
if (erpExtendField != null)
|
||||
{
|
||||
wmsPrdReturnD.unit_id = erpExtendField.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
||||
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||
}
|
||||
|
||||
wmsPrdReturnDs.Add(wmsPrdReturnD);
|
||||
}
|
||||
|
||||
await db.Insertable(wmsPrdReturnDs).ExecuteCommandAsync();
|
||||
LoggerErp2Mes.LogInformation($"【MaterialTransfer】成功生成单据:{Code}");
|
||||
}
|
||||
|
||||
await db.Ado.CommitTranAsync();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
error_erpbillcodes.Add($"bip单据号{input.bill_code}: {ex.Message}");
|
||||
LoggerErp2Mes.LogWarning($"【MaterialTransfer】{ex.Message}");
|
||||
LoggerErp2Mes.LogWarning($"【MaterialTransfer】{ex.StackTrace}");
|
||||
await db.Ado.RollbackTranAsync();
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (error_erpbillcodes.Count > 0)
|
||||
{
|
||||
LoggerErp2Mes.LogWarning($"同步失败信息:{string.Join(',', error_erpbillcodes)}");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"同步失败信息:{string.Join(',', error_erpbillcodes)}");
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
/// <summary>
|
||||
/// 销售发货单
|
||||
/// </summary>
|
||||
@@ -1017,6 +1294,7 @@ namespace Tnb.WarehouseMgr
|
||||
string Code = await _billRuleService.GetBillNumber("WmsSale");
|
||||
|
||||
wmsSaleH.bill_code = Code;
|
||||
wmsSaleH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
wmsSaleH.erp_bill_code = input.bill_code;
|
||||
wmsSaleH.bill_type = "25103439022357";//销售出库单
|
||||
wmsSaleH.audit_status = 0;
|
||||
@@ -1032,7 +1310,7 @@ namespace Tnb.WarehouseMgr
|
||||
wmsSaleH.customer_name = customer.customer_name;
|
||||
}
|
||||
|
||||
wmsSaleH.ship_date = input.ship_date.Value;
|
||||
//wmsSaleH.ship_date = input.ship_date.Value;
|
||||
wmsSaleH.erp_pk = input.erp_pk;
|
||||
wmsSaleH.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsSaleH.create_time = DateTime.Now;
|
||||
|
||||
@@ -1871,26 +1871,8 @@ namespace Tnb.WarehouseMgr
|
||||
task.device_id = e.device_id;
|
||||
}
|
||||
}
|
||||
_ = CallingLanding(agvDTTasks);
|
||||
|
||||
Logger.Information($"【GenTaskExecute】呼梯任务数:{agvDTTasks.Count}");
|
||||
List<(string endlocation_code, string device_id, string id, int start_floor)> endLocCodes = agvDTTasks.Where(r => !string.IsNullOrEmpty(r.device_id))
|
||||
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
|
||||
var callLiftCnt = endLocCodes?.Count ?? 0;
|
||||
Logger.Information($"【GenTaskExecute】实际可呼梯任务数:{callLiftCnt}");
|
||||
|
||||
if (endLocCodes?.Count > 0)
|
||||
{
|
||||
if (endLocCodes.Select(x => x.device_id).All(x => !x.IsNullOrWhiteSpace()))
|
||||
{
|
||||
Logger.Information("【GenTaskExecute】呼梯操作");
|
||||
_ = CallingLanding(endLocCodes);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("【GenTaskExecute】呼梯失败,没有设备ID");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//执行电梯任务
|
||||
List<WmsDistaskH>? elevatorTasks = disTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
|
||||
@@ -1994,6 +1976,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取电梯根据任务单号
|
||||
/// </summary>
|
||||
@@ -2398,8 +2381,28 @@ namespace Tnb.WarehouseMgr
|
||||
/// </summary>
|
||||
/// <param name="endLocCodes"></param>
|
||||
/// <returns></returns>
|
||||
private async Task CallingLanding(List<(string endlocation_code, string device_id, string id, int floorNO)> endLocCodes)
|
||||
public async Task CallingLanding(List<WmsDistaskH?> agvDTTasks)
|
||||
{
|
||||
Logger.Information($"【GenTaskExecute】呼梯任务数:{agvDTTasks.Count}");
|
||||
List<(string endlocation_code, string device_id, string id, int start_floor)> endLocCodes = agvDTTasks.Where(r => !string.IsNullOrEmpty(r.device_id))
|
||||
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
|
||||
var callLiftCnt = endLocCodes?.Count ?? 0;
|
||||
Logger.Information($"【GenTaskExecute】实际可呼梯任务数:{callLiftCnt}");
|
||||
|
||||
if (endLocCodes?.Count > 0)
|
||||
{
|
||||
if (endLocCodes.Select(x => x.device_id).All(x => !x.IsNullOrWhiteSpace()))
|
||||
{
|
||||
Logger.Information("【GenTaskExecute】呼梯操作");
|
||||
// todo
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("【GenTaskExecute】呼梯失败,没有设备ID");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Logger.Information($"【CallingLanding】 开始呼梯操作.............");
|
||||
try
|
||||
{
|
||||
@@ -2561,15 +2564,15 @@ namespace Tnb.WarehouseMgr
|
||||
#region 电梯第三次改动
|
||||
|
||||
// 一托下的时候切换首选电梯
|
||||
if (disTaskIds.Count == 1)
|
||||
{
|
||||
// 选择另一个电梯座位首选电梯
|
||||
await db.Updateable<BasFactoryConfig>().SetColumns(r => r.value == (r.value == "Elevator3" ? "Elevator4" : "Elevator3"))
|
||||
.Where(r => r.key == "floor3FirstSelectElevator").ExecuteCommandAsync();
|
||||
// 剩余可放托数
|
||||
await db.Updateable<BasFactoryConfig>().SetColumns(r => r.value == "2")
|
||||
.Where(r => r.key == "floor3FirstSelectElevatorTasknums").ExecuteCommandAsync();
|
||||
}
|
||||
//if (disTaskIds.Count == 1)
|
||||
//{
|
||||
// 选择另一个电梯座位首选电梯
|
||||
await db.Updateable<BasFactoryConfig>().SetColumns(r => r.value == (r.value == "Elevator3" ? "Elevator4" : "Elevator3"))
|
||||
.Where(r => r.key == "floor3FirstSelectElevator").ExecuteCommandAsync();
|
||||
// 剩余可放托数
|
||||
await db.Updateable<BasFactoryConfig>().SetColumns(r => r.value == "2")
|
||||
.Where(r => r.key == "floor3FirstSelectElevatorTasknums").ExecuteCommandAsync();
|
||||
//}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -4396,6 +4399,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
public SemaphoreSlim GetSemaphore(string type, string warehouse_id, string region_id = "")
|
||||
{
|
||||
Logger.LogInformation($"【GetSemaphore】type:{type} warehouse_id:{warehouse_id} region_id:{region_id}");
|
||||
SemaphoreSlim result = null;
|
||||
switch (warehouse_id)
|
||||
{
|
||||
@@ -4465,7 +4469,7 @@ namespace Tnb.WarehouseMgr
|
||||
break;
|
||||
}
|
||||
}
|
||||
return _s_taskExecuteSemaphore_F1ZCCOutstock;
|
||||
return result;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -451,6 +451,7 @@ namespace Tnb.WarehouseMgr
|
||||
foreach (var detail in WmsCarryCodes)
|
||||
{
|
||||
var wmsCarrybindCode = detail.Adapt<WmsCarrybindCode>();
|
||||
wmsCarrybindCode.id = SnowflakeIdHelper.NextId();
|
||||
wmsCarrybindCode.membercarry_id = input.membercarry_id;
|
||||
wmsCarrybindCode.membercarry_code = input.membercarry_code;
|
||||
wmsCarrybindCode.carrybind_id = wmsCarrybindH.id;
|
||||
|
||||
@@ -59,8 +59,7 @@ namespace Tnb.WarehouseMgr
|
||||
.LeftJoin<WmsCarrystd>((a, b, c, d) => d.id == b.carrystd_id)
|
||||
.LeftJoin<WmsCarryCode>((a, b, c, d, e) => e.carry_id == b.id)
|
||||
.LeftJoin<BasMaterial>((a, b, c, d, e, f) => f.id == e.material_id)
|
||||
.Where((a, b, c, d, e) => a.is_type == ((int)EnumLocationType.存储库位).ToString()
|
||||
&& ((!string.IsNullOrEmpty(b.carry_code) && b.carry_status != "0" && b.carry_status != "6") || string.IsNullOrEmpty(b.carry_code)))
|
||||
.Where((a, b, c, d, e) => ((!string.IsNullOrEmpty(b.carry_code) && b.carry_status != "0" && b.carry_status != "6") || string.IsNullOrEmpty(b.carry_code)))
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||
.WhereIF(!string.IsNullOrEmpty(carry_code), (a, b, c, d) => b.carry_code.Contains(carry_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => e.material_code.Contains(material_code))
|
||||
@@ -71,8 +70,8 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
warehouse_name = c.whname,
|
||||
carry_id = b.id,
|
||||
carry_code = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_code,
|
||||
carry_name = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_name,
|
||||
carry_code = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) && c.id == WmsWareHouseConst.WAREHOUSE_YCL_ID ? "空托盘堆垛" : b.carry_code,
|
||||
carry_name = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) && c.id == WmsWareHouseConst.WAREHOUSE_YCL_ID ? "空托盘堆垛" : b.carry_name,
|
||||
carry_status = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||
carry_type = d.carrystd_name,
|
||||
location_code = a.location_code,
|
||||
@@ -101,7 +100,7 @@ namespace Tnb.WarehouseMgr
|
||||
.InnerJoin<WmsCarryCode>((a, b, c, d, e, f) => f.carry_id == e.membercarry_id)
|
||||
.InnerJoin<BasMaterial>((a, b, c, d, e, f, g) => g.id == f.material_id)
|
||||
.InnerJoin<WmsCarryH>((a, b, c, d, e, f, g, h) => h.id == e.membercarry_id)
|
||||
.Where((a, b, c, d, e) => a.is_type == ((int)EnumLocationType.存储库位).ToString() && b.carry_status != "0" && b.carry_status != "6")
|
||||
.Where((a, b, c, d, e) => b.carry_status != "0" && b.carry_status != "6")
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||
.WhereIF(!string.IsNullOrEmpty(carry_code), (a, b, c, d, e, f, g, h) => b.carry_code.Contains(carry_code)|| h.carry_code.Contains(carry_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f, g) => g.code.Contains(material_code))
|
||||
@@ -205,51 +204,56 @@ namespace Tnb.WarehouseMgr
|
||||
var warehouse_id = "";
|
||||
var carry_code = "";
|
||||
var material_code = "";
|
||||
var container_no = "";
|
||||
var code_batch = "";
|
||||
if (!input.queryJson.IsNullOrWhiteSpace())
|
||||
{
|
||||
warehouse_id = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.warehouse_id));
|
||||
carry_code = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.carry_code));
|
||||
material_code = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_code));
|
||||
code_batch = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.code_batch));
|
||||
container_no = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.container_no));
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<WmsCarryStockReport> items = await _db.Queryable<BasLocation>()
|
||||
.LeftJoin<WmsCarryH>((a, b) => b.location_id == a.id)
|
||||
.InnerJoin<BasWarehouse>((a, b, c) => a.wh_id == c.id)
|
||||
.LeftJoin<WmsCarrystd>((a, b, c, d) => d.id == b.carrystd_id)
|
||||
.LeftJoin<WmsCarryCode>((a, b, c, d, e) => e.carry_id == b.id)
|
||||
.LeftJoin<BasMaterial>((a, b, c, d, e, f) => f.id == e.material_id)
|
||||
.Where((a, b, c, d, e) => a.is_type == ((int)EnumLocationType.存储库位).ToString() && a.is_use == "1"
|
||||
&& ((!string.IsNullOrEmpty(b.carry_code) && b.carry_status != "0" && b.carry_status != "6") || string.IsNullOrEmpty(b.carry_code)))
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||
.WhereIF(!string.IsNullOrEmpty(carry_code), (a, b, c, d) => b.carry_code.Contains(carry_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => e.material_code.Contains(material_code))
|
||||
.OrderByDescending((a, b, c, d, e, f) => b.carry_code)
|
||||
.Select((a, b, c, d, e, f) => new WmsCarryStockReport
|
||||
{
|
||||
warehouse_name = c.whname,
|
||||
carry_id = b.id,
|
||||
carry_code = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_code,
|
||||
carry_name = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_name,
|
||||
carry_status = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||
carry_type = d.carrystd_name,
|
||||
location_code = a.location_code,
|
||||
location_name = a.location_name,
|
||||
location_status = a.is_lock == 1 ? "锁定" : "未锁定",
|
||||
instock_time = b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
|
||||
barcode = e.barcode,
|
||||
code_batch = e.code_batch,
|
||||
qty = e.codeqty,
|
||||
material_id = e.material_id,
|
||||
material_code = e.material_code,
|
||||
material_name = f.name,
|
||||
unit = e.unit_id,
|
||||
creator = e.create_id,
|
||||
bind_time = e.create_time != null ? e.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
|
||||
})
|
||||
.OrderBy((a) => a.location_code)
|
||||
.ToListAsync();
|
||||
.LeftJoin<WmsCarryH>((a, b) => b.location_id == a.id)
|
||||
.InnerJoin<BasWarehouse>((a, b, c) => a.wh_id == c.id)
|
||||
.LeftJoin<WmsCarrystd>((a, b, c, d) => d.id == b.carrystd_id)
|
||||
.LeftJoin<WmsCarryCode>((a, b, c, d, e) => e.carry_id == b.id)
|
||||
.LeftJoin<BasMaterial>((a, b, c, d, e, f) => f.id == e.material_id)
|
||||
.Where((a, b, c, d, e) => ((!string.IsNullOrEmpty(b.carry_code) && b.carry_status != "0" && b.carry_status != "6") || string.IsNullOrEmpty(b.carry_code)))
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||
.WhereIF(!string.IsNullOrEmpty(carry_code), (a, b, c, d) => b.carry_code.Contains(carry_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f) => e.material_code.Contains(material_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f) => e.code_batch.Contains(code_batch))
|
||||
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f) => f.container_no.Contains(container_no))
|
||||
.OrderByDescending((a, b, c, d, e, f) => b.carry_code)
|
||||
.Select((a, b, c, d, e, f) => new WmsCarryStockReport
|
||||
{
|
||||
warehouse_name = c.whname,
|
||||
carry_id = b.id,
|
||||
carry_code = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) && c.id == WmsWareHouseConst.WAREHOUSE_YCL_ID ? "空托盘堆垛" : b.carry_code,
|
||||
carry_name = a.is_use == "1" && string.IsNullOrEmpty(b.carry_code) && c.id == WmsWareHouseConst.WAREHOUSE_YCL_ID ? "空托盘堆垛" : b.carry_name,
|
||||
carry_status = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||
carry_type = d.carrystd_name,
|
||||
location_code = a.location_code,
|
||||
location_name = a.location_name,
|
||||
location_status = a.is_lock == 1 ? "锁定" : "未锁定",
|
||||
instock_time = b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
|
||||
barcode = e.barcode,
|
||||
code_batch = e.code_batch,
|
||||
qty = e.codeqty,
|
||||
material_id = e.material_id,
|
||||
material_code = e.material_code,
|
||||
material_name = f.name,
|
||||
unit = e.unit_id,
|
||||
creator = e.create_id,
|
||||
bind_time = e.create_time != null ? e.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
|
||||
})
|
||||
.OrderBy((a) => a.location_code)
|
||||
.ToListAsync();
|
||||
|
||||
// 料架
|
||||
List<WmsCarryStockReport> items_LJ = await _db.Queryable<BasLocation>()
|
||||
@@ -264,6 +268,8 @@ namespace Tnb.WarehouseMgr
|
||||
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||
.WhereIF(!string.IsNullOrEmpty(carry_code), (a, b, c, d, e, f, g, h) => b.carry_code.Contains(carry_code) || h.carry_code.Contains(carry_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e, f, g) => g.code.Contains(material_code))
|
||||
.WhereIF(!string.IsNullOrEmpty(code_batch), (a, b, c, d, e, f, g) => f.code_batch.Contains(code_batch))
|
||||
.WhereIF(!string.IsNullOrEmpty(container_no), (a, b, c, d, e, f, g) => g.container_no.Contains(container_no))
|
||||
.Select((a, b, c, d, e, f, g, h) => new WmsCarryStockReport
|
||||
{
|
||||
warehouse_name = c.whname,
|
||||
|
||||
@@ -11,6 +11,7 @@ using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
@@ -255,8 +256,8 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Information($"空载具出库错误", ex.Message);
|
||||
Logger.Information($"空载具出库错误", ex.StackTrace);
|
||||
Logger.LogWarning($"空载具出库错误 {ex.Message}");
|
||||
Logger.LogWarning($"空载具出库错误 {ex.StackTrace}");
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
|
||||
@@ -108,7 +108,6 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
queryJson = JObject.Parse(input.queryJson);
|
||||
}
|
||||
|
||||
|
||||
SqlSugarPagedList<WmsMaterialTransfer> result = await _db.Queryable<WmsMaterialTransfer>()
|
||||
.InnerJoin<DictionaryDataEntity>((a, b) => a.status == b.Id)
|
||||
@@ -117,7 +116,7 @@ namespace Tnb.WarehouseMgr
|
||||
.InnerJoin<BasWarehouse>((a, b, c, d, e) => e.id == a.warehouse_instock)
|
||||
.LeftJoin<DictionaryDataEntity>((a, b, c, d, e, f) => a.type == f.EnCode)
|
||||
// 只显示未完成的单据
|
||||
.Where(a => a.status != "25065149810453")
|
||||
//.Where(a => a.status != "25065149810453")
|
||||
.WhereIF(queryJson != null && queryJson["type"] != null, a => a.type == queryJson["type"].ToString())
|
||||
.WhereIF(queryJson != null && queryJson["bill_code"] != null, a => a.bill_code.Contains(queryJson["bill_code"].ToString()))
|
||||
.Select((a, b, c, d, e, f) => new WmsMaterialTransfer
|
||||
@@ -195,7 +194,6 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取物料库存
|
||||
/// </summary>
|
||||
@@ -787,8 +785,10 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
semaphoreSlimOutStock = _wareHouseService.GetSemaphore("outstock", WmsWareHouseConst.WAREHOUSE_BCK_ID);
|
||||
await semaphoreSlimOutStock.WaitAsync();
|
||||
Logger.LogInformation($"开始执行下发到包材库1");
|
||||
semaphoreSlimInStock = _wareHouseService.GetSemaphore("instock", WmsWareHouseConst.WAREHOUSE_F2BCQ_ID);
|
||||
await semaphoreSlimInStock.WaitAsync();
|
||||
Logger.LogInformation($"开始执行下发到包材库2");
|
||||
if (string.IsNullOrEmpty(input.source_id))
|
||||
{
|
||||
throw new AppFriendlyException("来源单据id不可为空", 500);
|
||||
@@ -1127,6 +1127,7 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync();
|
||||
|
||||
Logger.LogInformation($"中储仓下发到二楼暂存仓");
|
||||
try
|
||||
{
|
||||
WmsMaterialTransfer wmsMaterialTransfer = _db.Queryable<WmsMaterialTransfer>().Where(r => r.id == input.source_id).First();
|
||||
@@ -1269,7 +1270,7 @@ namespace Tnb.WarehouseMgr
|
||||
public async Task<Entities.Dto.Outputs.Result> DistributeZCCToYCL(MaterialTransferDistributeToZCCInput input)
|
||||
{
|
||||
await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync();
|
||||
|
||||
Logger.LogInformation($"开始执行中储仓退料到原材料仓");
|
||||
try
|
||||
{
|
||||
WmsMaterialTransfer wmsMaterialTransfer = _db.Queryable<WmsMaterialTransfer>().Where(r => r.id == input.source_id).First();
|
||||
|
||||
@@ -120,11 +120,12 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
if (input.data.ContainsKey(nameof(WmsTransfer.endlocation_id)))
|
||||
{
|
||||
ePoint = await _db!.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.data[nameof(WmsTransfer.endlocation_id)].ToString());
|
||||
ePoint = await _db!.Queryable<WmsPointH>().FirstAsync(it => it.location_code == input.data[nameof(WmsTransfer.endlocation_id)].ToString());
|
||||
}
|
||||
|
||||
if (sPoint != null && ePoint != null)
|
||||
{
|
||||
Logger.LogError($"【PDADelivery】起点 {sPoint.point_code} 终点 {ePoint.point_code}");
|
||||
List<WmsPointH> points = new List<WmsPointH>();
|
||||
if (sPoint.area_code != ePoint.area_code)
|
||||
{
|
||||
@@ -198,10 +199,17 @@ namespace Tnb.WarehouseMgr
|
||||
_ = await _db.Updateable<BasLocation>().SetColumns(it => new BasLocation { is_lock = 1 }).Where(it => ids.Contains(it.id)).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new AppFriendlyException($"【PDADelivery】生成预任务失败", 500);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
throw new AppFriendlyException($"【PDADelivery】点位不存在", 500);
|
||||
}
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user