增加PC载具物料绑定记录表(载具绑定)、erp调拨订单、报表bug
This commit is contained in:
@@ -946,6 +946,116 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 调拨订单
|
||||
/// </summary>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Entities.Dto.Outputs.Result> TransferOrder(TransferOrderInput input)
|
||||
{
|
||||
LoggerErp2Mes.LogInformation($"【TransferOrder】ERP传入数据:{JsonConvert.SerializeObject(input)}");
|
||||
var db = _repository.AsSugarClient();
|
||||
|
||||
if (string.IsNullOrEmpty(input.erp_pk))
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【TransferOrder】主表主键不能为空!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"主表主键不能为空!");
|
||||
}
|
||||
|
||||
int count_erp_line_pk = input.details.Where(r => string.IsNullOrEmpty(r.erp_line_pk)).Count();
|
||||
if (count_erp_line_pk > 0)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【TransferOrder】子表主键不能为空!");
|
||||
throw new AppFriendlyException($@"子表主键不能为空!", 500);
|
||||
}
|
||||
|
||||
var wmsTransferOrdersDistinct = input.details.Select(r => new
|
||||
{
|
||||
material_id = r.material_code,
|
||||
code_batch = r.code_batch,
|
||||
}).Distinct();
|
||||
if (wmsTransferOrdersDistinct.Count() < input.details.Count)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【TransferOrder】表体存在物料和批号重复的明细!");
|
||||
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await db.Ado.BeginTranAsync();
|
||||
WmsTransferOrderH wmsTransferOrderH = new WmsTransferOrderH();
|
||||
string Code = await _billRuleService.GetBillNumber("WmsTransferOrder");
|
||||
|
||||
wmsTransferOrderH.bill_code = Code;
|
||||
wmsTransferOrderH.erp_bill_code = input.transfer_order;
|
||||
wmsTransferOrderH.biller = input.biller;
|
||||
wmsTransferOrderH.dept_code = input.dept_code;
|
||||
wmsTransferOrderH.erp_pk = input.erp_pk;
|
||||
wmsTransferOrderH.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsTransferOrderH.create_time = DateTime.Now;
|
||||
wmsTransferOrderH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||
await db.Insertable(wmsTransferOrderH).ExecuteCommandAsync();
|
||||
|
||||
|
||||
List<WmsTransferOrderD> wmsTransferOrderDs = new List<WmsTransferOrderD>();
|
||||
foreach (var detail in input.details)
|
||||
{
|
||||
WmsTransferOrderD wmsTransferOrderD = new WmsTransferOrderD();
|
||||
|
||||
wmsTransferOrderD.bill_id = wmsTransferOrderD.id;
|
||||
wmsTransferOrderD.unit = detail.unit_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();
|
||||
if (erpExtendField != null)
|
||||
{
|
||||
wmsTransferOrderD.unit = erpExtendField.EnCode;
|
||||
}
|
||||
else
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【TransferOrder】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
||||
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||
}
|
||||
|
||||
|
||||
wmsTransferOrderD.qty = detail.qty;
|
||||
wmsTransferOrderD.batchno = detail.code_batch;
|
||||
wmsTransferOrderD.erp_line_pk = detail.erp_line_pk;
|
||||
wmsTransferOrderD.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsTransferOrderD.create_time = DateTime.Now;
|
||||
wmsTransferOrderD.lineno = detail.lineno;
|
||||
|
||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
{
|
||||
wmsTransferOrderD.material_id = material.id;
|
||||
wmsTransferOrderD.material_code = material.code;
|
||||
wmsTransferOrderD.material_name = material.name;
|
||||
wmsTransferOrderD.material_specification = material.material_specification;
|
||||
}
|
||||
|
||||
wmsTransferOrderDs.Add(wmsTransferOrderD);
|
||||
}
|
||||
|
||||
await db.Insertable(wmsTransferOrderDs).ExecuteCommandAsync();
|
||||
|
||||
await db.Ado.CommitTranAsync();
|
||||
|
||||
LoggerErp2Mes.LogInformation($"【TransferOrder】成功生成单据:{Code}");
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerErp2Mes.LogError($"【TransferOrder】{ex.Message}");
|
||||
LoggerErp2Mes.LogError($"【TransferOrder】{ex.StackTrace}");
|
||||
await db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected Task<Entities.Dto.Outputs.Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
||||
{
|
||||
Entities.Dto.Outputs.Result result = new()
|
||||
|
||||
Reference in New Issue
Block a user