原材料仓绑定采购/委外/调拨条码接口调整、载具绑定记录调整启用、入库流水插入调整
This commit is contained in:
@@ -9,6 +9,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs
|
|||||||
public class AddOutinStockDetailInput
|
public class AddOutinStockDetailInput
|
||||||
{
|
{
|
||||||
public WmsDistaskH disTask { get; set; }
|
public WmsDistaskH disTask { get; set; }
|
||||||
public string? warehouse_id { get; set; }
|
public string? start_warehouse_id { get; set; }
|
||||||
|
public string? end_warehouse_id { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,4 +114,9 @@ public partial class WmsOutsourceD : BaseEntity<string>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? modify_time { get; set; }
|
public DateTime? modify_time { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 已绑定数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? bind_qty { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,4 +118,9 @@ public partial class WmsPurchaseD : BaseEntity<string>
|
|||||||
/// erp到货单子表pk
|
/// erp到货单子表pk
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string erp_arriveorder_b_pk { get;set; }
|
public string erp_arriveorder_b_pk { get;set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 已绑定数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? bind_qty { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,4 +124,8 @@ public partial class WmsRawmatTransferinstockD : BaseEntity<string>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string? lineno { get; set; }
|
public string? lineno { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 已绑定数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? bind_qty { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -884,7 +884,6 @@ namespace Tnb.WarehouseMgr
|
|||||||
|
|
||||||
await db.Insertable(wmsRawmatTransferinstockH).ExecuteCommandAsync();
|
await db.Insertable(wmsRawmatTransferinstockH).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
|
||||||
List<WmsRawmatTransferinstockD> wmsRawmatTransferinstockDs = new List<WmsRawmatTransferinstockD>();
|
List<WmsRawmatTransferinstockD> wmsRawmatTransferinstockDs = new List<WmsRawmatTransferinstockD>();
|
||||||
foreach (var detail in input.details)
|
foreach (var detail in input.details)
|
||||||
{
|
{
|
||||||
@@ -893,7 +892,6 @@ namespace Tnb.WarehouseMgr
|
|||||||
msRawmatTransferinstockD.bill_id = wmsRawmatTransferinstockH.id;
|
msRawmatTransferinstockD.bill_id = wmsRawmatTransferinstockH.id;
|
||||||
msRawmatTransferinstockD.matcode = detail.material_code;
|
msRawmatTransferinstockD.matcode = detail.material_code;
|
||||||
|
|
||||||
|
|
||||||
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();
|
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)
|
if (erpExtendField != null)
|
||||||
{
|
{
|
||||||
@@ -948,7 +946,6 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected Task<Entities.Dto.Outputs.Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
protected Task<Entities.Dto.Outputs.Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
||||||
{
|
{
|
||||||
Entities.Dto.Outputs.Result result = new()
|
Entities.Dto.Outputs.Result result = new()
|
||||||
|
|||||||
@@ -1049,7 +1049,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
Logger.Information($"SsxControlLOAD:{JsonConvert.SerializeObject(dicCommand)}");
|
Logger.Information($"SsxControlLOAD:{JsonConvert.SerializeObject(dicCommand)}");
|
||||||
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
|
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
|
||||||
Logger.Information($"SsxControlLOAD:{str}");
|
Logger.Information($"SsxControlLOAD:{str}");
|
||||||
Logger.Information($"SsxControlUNLOAD - 控制后查询:{_redisData.GetHash(strarr[0], strarr[1]).Result}");
|
//Logger.Information($"SsxControlUNLOAD - 控制后查询:{_redisData.GetHash(strarr[0], strarr[1]).Result}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (action == "UNLOAD")//放货
|
else if (action == "UNLOAD")//放货
|
||||||
@@ -1067,7 +1067,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
Logger.Information($"SsxControlUNLOAD:{JsonConvert.SerializeObject(dicCommand)}");
|
Logger.Information($"SsxControlUNLOAD:{JsonConvert.SerializeObject(dicCommand)}");
|
||||||
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
|
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
|
||||||
Logger.Information($"SsxControlUNLOAD:{str}");
|
Logger.Information($"SsxControlUNLOAD:{str}");
|
||||||
Logger.Information($"SsxControlUNLOAD - 控制后查询:{_redisData.GetHash(strarr[0], strarr[1]).Result}");
|
//Logger.Information($"SsxControlUNLOAD - 控制后查询:{_redisData.GetHash(strarr[0], strarr[1]).Result}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2556,7 +2556,8 @@ namespace Tnb.WarehouseMgr
|
|||||||
{
|
{
|
||||||
AddOutinStockDetailInput addOutinStockDetailInput = new AddOutinStockDetailInput();
|
AddOutinStockDetailInput addOutinStockDetailInput = new AddOutinStockDetailInput();
|
||||||
addOutinStockDetailInput.disTask = dt;
|
addOutinStockDetailInput.disTask = dt;
|
||||||
addOutinStockDetailInput.warehouse_id = carryCodeIts[0].warehouse_id;
|
addOutinStockDetailInput.start_warehouse_id = locWhIdMap.ContainsKey(dt.startlocation_id) ? locWhIdMap[dt.startlocation_id].ToString() : "";
|
||||||
|
addOutinStockDetailInput.end_warehouse_id = locWhIdMap.ContainsKey(dt.endlocation_id) ? locWhIdMap[dt.endlocation_id].ToString() : "";
|
||||||
await _wmsOutinStockDetailService.AddOutinStockDetail(addOutinStockDetailInput, _db);
|
await _wmsOutinStockDetailService.AddOutinStockDetail(addOutinStockDetailInput, _db);
|
||||||
|
|
||||||
#region todo 移到service中
|
#region todo 移到service中
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ using Tnb.WarehouseMgr.Entities.Consts;
|
|||||||
using Tnb.WarehouseMgr.Entities.Dto;
|
using Tnb.WarehouseMgr.Entities.Dto;
|
||||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||||
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
|
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
|
||||||
|
using Tnb.WarehouseMgr.Entities.Entity;
|
||||||
using Tnb.WarehouseMgr.Entities.Enums;
|
using Tnb.WarehouseMgr.Entities.Enums;
|
||||||
using Tnb.WarehouseMgr.Interfaces;
|
using Tnb.WarehouseMgr.Interfaces;
|
||||||
|
|
||||||
@@ -188,7 +189,67 @@ namespace Tnb.WarehouseMgr
|
|||||||
throw new Exception($"不能绑定多个不同类型单据打印的条码!:{string.Join(',', WmsTempCodes.DistinctBy(r => r.required_type).Select(r => r.barcode).ToList())}");
|
throw new Exception($"不能绑定多个不同类型单据打印的条码!:{string.Join(',', WmsTempCodes.DistinctBy(r => r.required_type).Select(r => r.barcode).ToList())}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var bill_group = WmsTempCodes.GroupBy(r => new { r.require_id, r.required_type });
|
||||||
|
foreach (var group in bill_group)
|
||||||
|
{
|
||||||
|
string required_type = group.Key.required_type;
|
||||||
|
switch (required_type)
|
||||||
|
{
|
||||||
|
case WmsWareHouseConst.BILLTYPE_PURCHASE_ID:
|
||||||
|
{
|
||||||
|
decimal? sum = input.details.Where(r => group.Select(r => r.barcode).Contains(r.barcode)).Select(r => r.codeqty).Sum();
|
||||||
|
WmsPurchaseD wmsPurchaseD = await _db.Queryable<WmsPurchaseD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
||||||
|
decimal? bind_qty = wmsPurchaseD.bind_qty ?? 0;
|
||||||
|
if (sum + bind_qty > wmsPurchaseD.purchase_arriveqty)
|
||||||
|
{
|
||||||
|
throw new Exception($"托盘{input.carrycode} 物料{wmsPurchaseD.material_code} 当前绑定数量为{sum} 剩余可绑定数量为{(wmsPurchaseD.purchase_arriveqty - bind_qty).ParseToFloat()}!");
|
||||||
|
}
|
||||||
|
wmsPurchaseD.bind_qty = sum + bind_qty;
|
||||||
|
await _db.Updateable(wmsPurchaseD).ExecuteCommandAsync();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WmsWareHouseConst.BILLTYPE_OUTSOURCE_ID:
|
||||||
|
{
|
||||||
|
decimal? sum = group.Select(r => r.codeqty).Sum();
|
||||||
|
WmsOutsourceD wmsOutsourceD = await _db.Queryable<WmsOutsourceD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
||||||
|
decimal? bind_qty = wmsOutsourceD.bind_qty ?? 0;
|
||||||
|
if (sum + bind_qty > wmsOutsourceD.actual_quantity)
|
||||||
|
{
|
||||||
|
throw new Exception($"托盘{input.carrycode} 物料{wmsOutsourceD.matcode} 当前绑定数量为{sum} 剩余可绑定数量为{wmsOutsourceD.actual_quantity - bind_qty}!");
|
||||||
|
}
|
||||||
|
wmsOutsourceD.bind_qty = sum + bind_qty;
|
||||||
|
await _db.Updateable(wmsOutsourceD).ExecuteCommandAsync();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID:
|
||||||
|
{
|
||||||
|
decimal? sum = group.Select(r => r.codeqty).Sum();
|
||||||
|
WmsRawmatTransferinstockD wmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().Where(r => r.id == group.Key.require_id).FirstAsync();
|
||||||
|
decimal? bind_qty = wmsRawmatTransferinstockD.bind_qty ?? 0;
|
||||||
|
if (sum + bind_qty > wmsRawmatTransferinstockD.actual_qty)
|
||||||
|
{
|
||||||
|
throw new Exception($"托盘{input.carrycode} 物料{wmsRawmatTransferinstockD.matcode} 当前绑定数量为{sum} 剩余可绑定数量为{wmsRawmatTransferinstockD.actual_qty - bind_qty}!");
|
||||||
|
}
|
||||||
|
wmsRawmatTransferinstockD.bind_qty = sum + bind_qty;
|
||||||
|
await _db.Updateable(wmsRawmatTransferinstockD).ExecuteCommandAsync();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WmsCarrybindH wmsCarrybindH = new WmsCarrybindH();
|
||||||
|
wmsCarrybindH.carry_id = carry.id;
|
||||||
|
wmsCarrybindH.carry_code = carry.carry_code;
|
||||||
|
wmsCarrybindH.create_id = input.create_id;
|
||||||
|
wmsCarrybindH.create_time = DateTime.Now;
|
||||||
|
wmsCarrybindH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
|
wmsCarrybindH.location_id = WmsWareHouseConst.LOCATION_YCLBGWDRK;
|
||||||
|
wmsCarrybindH.location_code = "YCLBGWDRK";
|
||||||
|
|
||||||
List<WmsCarryCode> WmsCarryCodes = new List<WmsCarryCode>();
|
List<WmsCarryCode> WmsCarryCodes = new List<WmsCarryCode>();
|
||||||
|
|
||||||
|
List<WmsCarrybindCode> wmsCarrybindCodes = new List<WmsCarrybindCode>();
|
||||||
|
|
||||||
foreach (var detail in input.details)
|
foreach (var detail in input.details)
|
||||||
{
|
{
|
||||||
var WmsCarryCode = detail.Adapt<WmsCarryCode>();
|
var WmsCarryCode = detail.Adapt<WmsCarryCode>();
|
||||||
@@ -199,10 +260,19 @@ namespace Tnb.WarehouseMgr
|
|||||||
WmsCarryCode.create_id = input.create_id;
|
WmsCarryCode.create_id = input.create_id;
|
||||||
WmsCarryCode.create_time = DateTime.Now;
|
WmsCarryCode.create_time = DateTime.Now;
|
||||||
WmsCarryCodes.Add(WmsCarryCode);
|
WmsCarryCodes.Add(WmsCarryCode);
|
||||||
|
|
||||||
|
var wmsCarrybindCode = detail.Adapt<WmsCarrybindCode>();
|
||||||
|
wmsCarrybindCode.carrybind_id = wmsCarrybindH.id;
|
||||||
|
wmsCarrybindCodes.Add(wmsCarrybindCode);
|
||||||
}
|
}
|
||||||
int rows = 0;
|
int rows = 0;
|
||||||
if (WmsCarryCodes.Count > 0)
|
if (WmsCarryCodes.Count > 0)
|
||||||
|
{
|
||||||
rows = await _db.Insertable(WmsCarryCodes).ExecuteCommandAsync();
|
rows = await _db.Insertable(WmsCarryCodes).ExecuteCommandAsync();
|
||||||
|
await _db.Insertable(wmsCarrybindH).ExecuteCommandAsync();
|
||||||
|
await _db.Insertable(wmsCarrybindCodes).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
await _db.Updateable<WmsCarryH>().SetColumns(r => new WmsCarryH
|
await _db.Updateable<WmsCarryH>().SetColumns(r => new WmsCarryH
|
||||||
{
|
{
|
||||||
@@ -214,6 +284,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
{
|
{
|
||||||
throw new Exception($"物料列表为空,不能提交绑定,可能的原因;1.需要检查扫码设置(新PDA) 2.未扫到有效的二维码 详细信息:接收到{input.details.Count}个条码 但是成功绑定的条码数量为0个!");
|
throw new Exception($"物料列表为空,不能提交绑定,可能的原因;1.需要检查扫码设置(新PDA) 2.未扫到有效的二维码 详细信息:接收到{input.details.Count}个条码 但是成功绑定的条码数量为0个!");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (PostgresException ex)
|
catch (PostgresException ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1868,6 +1868,12 @@ namespace Tnb.WarehouseMgr
|
|||||||
Logger.LogWarning($"【RackInstock】料架不能为空!{input.carry_code}");
|
Logger.LogWarning($"【RackInstock】料架不能为空!{input.carry_code}");
|
||||||
throw new AppFriendlyException($"【RackInstock】料架不能为空!{input.carry_code}!", 500);
|
throw new AppFriendlyException($"【RackInstock】料架不能为空!{input.carry_code}!", 500);
|
||||||
}
|
}
|
||||||
|
if (wmsCarryH.carry_status != "0")
|
||||||
|
{
|
||||||
|
Logger.LogWarning($"【RackInstock】料架为非空闲状态,不能退回缓存仓!{input.carry_code}");
|
||||||
|
throw new AppFriendlyException($"【RackInstock】料架为非空闲状态,不能退回缓存仓!{input.carry_code}!", 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 找到未占用且未锁定的库位
|
// 找到未占用且未锁定的库位
|
||||||
ISugarQueryable<BasLocation> rackEndLocations =
|
ISugarQueryable<BasLocation> rackEndLocations =
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
case WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID:
|
case WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID:
|
||||||
{
|
{
|
||||||
type = "转移";
|
type = "出库";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -123,7 +123,10 @@ namespace Tnb.WarehouseMgr
|
|||||||
//await db.Ado.BeginTranAsync();
|
//await db.Ado.BeginTranAsync();
|
||||||
|
|
||||||
WmsOutinStockDetail wmsOutinStockDetail = new WmsOutinStockDetail();
|
WmsOutinStockDetail wmsOutinStockDetail = new WmsOutinStockDetail();
|
||||||
wmsOutinStockDetail.warehouse_id = input.warehouse_id;
|
if (type == "入库")
|
||||||
|
wmsOutinStockDetail.warehouse_id = input.end_warehouse_id;
|
||||||
|
else if (type == "出库")
|
||||||
|
wmsOutinStockDetail.warehouse_id = input.start_warehouse_id;
|
||||||
wmsOutinStockDetail.carry_id = input.disTask.carry_id;
|
wmsOutinStockDetail.carry_id = input.disTask.carry_id;
|
||||||
wmsOutinStockDetail.carry_code = input.disTask.carry_code;
|
wmsOutinStockDetail.carry_code = input.disTask.carry_code;
|
||||||
wmsOutinStockDetail.create_id = GetUserIdByTask();
|
wmsOutinStockDetail.create_id = GetUserIdByTask();
|
||||||
@@ -179,12 +182,12 @@ namespace Tnb.WarehouseMgr
|
|||||||
int rows = await db.Insertable(wmsOutinStockDetail).ExecuteCommandAsync();
|
int rows = await db.Insertable(wmsOutinStockDetail).ExecuteCommandAsync();
|
||||||
if (rows == 0)
|
if (rows == 0)
|
||||||
{
|
{
|
||||||
throw new Exception($"插入入库明细失败!");
|
throw new Exception($"插入出入库明细失败!");
|
||||||
}
|
}
|
||||||
rows = await db.Insertable(wmsOutinStockCodes).ExecuteCommandAsync();
|
rows = await db.Insertable(wmsOutinStockCodes).ExecuteCommandAsync();
|
||||||
if (rows == 0)
|
if (rows == 0)
|
||||||
{
|
{
|
||||||
throw new Exception($"插入入库明细条码失败!");
|
throw new Exception($"插入出入库明细条码失败!");
|
||||||
}
|
}
|
||||||
await db.Ado.CommitTranAsync();
|
await db.Ado.CommitTranAsync();
|
||||||
}
|
}
|
||||||
@@ -193,14 +196,14 @@ namespace Tnb.WarehouseMgr
|
|||||||
////await db.Ado.RollbackTranAsync();
|
////await db.Ado.RollbackTranAsync();
|
||||||
Logger.LogError(ex.Message);
|
Logger.LogError(ex.Message);
|
||||||
Logger.LogError(ex.StackTrace);
|
Logger.LogError(ex.StackTrace);
|
||||||
throw new AppFriendlyException($"插入入库明细失败 {ex.Message}", 500);
|
//throw new AppFriendlyException($"插入出入库明细失败 {ex.Message}", 500);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
//await db.Ado.RollbackTranAsync();
|
//await db.Ado.RollbackTranAsync();
|
||||||
Logger.LogError(ex.Message);
|
Logger.LogError(ex.Message);
|
||||||
Logger.LogError(ex.StackTrace);
|
Logger.LogError(ex.StackTrace);
|
||||||
throw new AppFriendlyException($"插入入库明细失败 {ex.Message}", 500);
|
//throw new AppFriendlyException($"插入出入库明细失败 {ex.Message}", 500);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user