分拣任务变更 现场问题处理

This commit is contained in:
2024-10-15 14:30:59 +08:00
parent da3db7aee6
commit ca45839b2a
15 changed files with 262 additions and 35 deletions

View File

@@ -475,13 +475,75 @@ namespace Tnb.WarehouseMgr
}
// 解锁分拣载具
await _db.Updateable<WmsCarryH>().SetColumns(r => r.is_lock == 0).Where(r => r.id == wmsSortingtask.carry_id).ExecuteCommandAsync();
// 扣减载具物料库存
await _db.Updateable<WmsCarryCode>().SetColumns(r => r.codeqty == r.codeqty - wmsSortingtask.qty).Where(r => r.carry_id == wmsSortingtask.carry_id).ExecuteCommandAsync();
if (input.change_carry == 0)
{
await _db.Updateable<WmsCarryCode>().SetColumns(r => r.codeqty == r.codeqty - wmsSortingtask.qty).Where(r => r.carry_id == wmsSortingtask.carry_id).ExecuteCommandAsync();
}
else
{
if (string.IsNullOrEmpty(input.new_carrycode))
{
throw new AppFriendlyException("转移托盘不能为空!", 500);
}
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == wmsSortingtask.carry_id).FirstAsync();
WmsCarryH new_wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.new_carrycode).FirstAsync();
if (wmsCarryH.carry_code == new_wmsCarryH.carry_code)
{
throw new AppFriendlyException($"转移托盘{new_wmsCarryH.carry_code}与原托盘不能相同!", 500);
}
if (new_wmsCarryH == null)
{
throw new AppFriendlyException($"转移托盘{new_wmsCarryH.carry_code}不存在!", 500);
}
new_wmsCarryH.is_lock = 0;
new_wmsCarryH.carry_status = "1";
new_wmsCarryH.location_id = wmsCarryH.location_id;
new_wmsCarryH.location_code = wmsCarryH.location_code;
wmsCarryH.location_id = "";
wmsCarryH.location_code = "";
List<WmsCarryCode> new_wmsCarryCodes = await _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == new_wmsCarryH.id).ToListAsync();
WmsCarryCode wmsCarryCode = await _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == wmsSortingtask.carry_id).FirstAsync();
if (new_wmsCarryCodes.Count > 1)
{
throw new AppFriendlyException($"转移托盘{new_wmsCarryH.carry_code}上存在多条物料批次数据,请检查!", 500);
}
WmsCarryCode new_wmsCarryCode = wmsCarryCode.Adapt<WmsCarryCode>();
if (new_wmsCarryCodes.Count > 0)
{
if (new_wmsCarryCodes[0].material_id != wmsCarryCode.material_id || new_wmsCarryCodes[0].code_batch != wmsCarryCode.code_batch)
{
throw new AppFriendlyException($"转移托盘{new_wmsCarryH.carry_code}上的物料批次数据与分拣托盘上的物料批次数据不一致,不能转移!", 500);
}
new_wmsCarryCode = new_wmsCarryCodes[0];
new_wmsCarryCode.codeqty = wmsCarryCode.codeqty - wmsSortingtask.qty + new_wmsCarryCodes[0].codeqty;
await _db.Updateable(new_wmsCarryCode).UpdateColumns(r => new { r.codeqty }).ExecuteCommandAsync();
}
else
{
new_wmsCarryCode.id = SnowflakeIdHelper.NextId();
new_wmsCarryCode.carry_id = new_wmsCarryH.id;
new_wmsCarryCode.barcode = new_wmsCarryH.carry_code;
new_wmsCarryCode.codeqty = wmsCarryCode.codeqty - wmsSortingtask.qty;
await _db.Insertable(new_wmsCarryCode).ExecuteCommandAsync();
}
await _db.Updateable<WmsCarryCode>().SetColumns(r => r.codeqty == wmsSortingtask.qty).Where(r => r.carry_id == wmsSortingtask.carry_id).ExecuteCommandAsync();
await _db.Updateable(new_wmsCarryH).UpdateColumns(r => new { r.is_lock, r.carry_status, r.location_id, r.location_code }).ExecuteCommandAsync();
await _db.Updateable(wmsCarryH).UpdateColumns(r => new { r.location_id, r.location_code }).ExecuteCommandAsync();
}
await _db.Updateable<WmsSortingtask>().SetColumns(r => new WmsSortingtask
{
status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID,
complete_time = DateTime.Now
complete_time = DateTime.Now,
change_carry = input.change_carry,
new_carrycode = input.new_carrycode
}).Where(r => r.id == wmsSortingtask.id).ExecuteCommandAsync();
// 改为销售出库单
await _db.Updateable<WmsSaleD>().SetColumns(r => r.purchase_prqty == r.purchase_prqty + wmsSortingtask.qty).Where(r => r.id == wmsSortingtask.source_id).ExecuteCommandAsync();