分拣任务变更 现场问题处理
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user