取消逻辑调整 原材料看板调整

This commit is contained in:
2024-07-31 14:24:44 +08:00
parent 9221113607
commit b9ae51f015
8 changed files with 641 additions and 132 deletions

View File

@@ -796,6 +796,105 @@ namespace Tnb.WarehouseMgr
}
}
/// <summary>
/// 原材料调拨入库单
/// </summary>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<Entities.Dto.Outputs.Result> RawmatTransferInstock(RawMatTransferInstockInput input)
{
LoggerErp2Mes.LogInformation($"【RawMatTransferInstock】ERP传入数据:{JsonConvert.SerializeObject(input)}");
var db = _repository.AsSugarClient();
if (string.IsNullOrEmpty(input.erp_pk))
{
_LoggerErp2Mes.LogWarning($"【RawMatTransferInstock】主表主键不能为空");
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($@"【RawMatTransferInstock】子表主键不能为空");
throw new AppFriendlyException($@"子表主键不能为空!", 500);
}
var wmsPurchaseOrdersDistinct = input.details.Select(r => new
{
material_id = r.material_code,
code_batch = r.code_batch,
}).Distinct();
if (wmsPurchaseOrdersDistinct.Count() < input.details.Count)
{
_LoggerErp2Mes.LogWarning($@"【RawMatTransferInstock】表体存在物料和批号重复的明细");
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
}
try
{
await db.Ado.BeginTranAsync();
WmsRawmatTransferinstockH wmsRawmatTransferinstockH = new WmsRawmatTransferinstockH();
string Code = await _billRuleService.GetBillNumber("RawMatTransferInstock");
wmsRawmatTransferinstockH.bill_code = Code;
wmsRawmatTransferinstockH.erp_bill_code = input.outsource_order;
wmsRawmatTransferinstockH.contact_person = input.contact_person;
wmsRawmatTransferinstockH.tel = input.tel;
wmsRawmatTransferinstockH.outstockorg_code = input.outstockorg_code;
wmsRawmatTransferinstockH.erp_pk = input.erp_pk;
wmsRawmatTransferinstockH.create_id = WmsWareHouseConst.ErpUserId;
wmsRawmatTransferinstockH.create_time = DateTime.Now;
await db.Insertable(wmsRawmatTransferinstockH).ExecuteCommandAsync();
List<WmsRawmatTransferinstockD> wmsRawmatTransferinstockDs = new List<WmsRawmatTransferinstockD>();
foreach (var detail in input.details)
{
WmsRawmatTransferinstockD msRawmatTransferinstockD = new WmsRawmatTransferinstockD();
msRawmatTransferinstockD.bill_id = wmsRawmatTransferinstockH.id;
msRawmatTransferinstockD.matcode = detail.material_code;
msRawmatTransferinstockD.unit = detail.unit_code;
msRawmatTransferinstockD.qty = detail.qty;
msRawmatTransferinstockD.stock_location = detail.stock_location;
msRawmatTransferinstockD.code_batch = detail.code_batch;
msRawmatTransferinstockD.delivery_date = detail.delivery_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
msRawmatTransferinstockD.erp_line_pk = detail.erp_line_pk;
msRawmatTransferinstockD.create_id = WmsWareHouseConst.ErpUserId;
msRawmatTransferinstockD.create_time = DateTime.Now;
msRawmatTransferinstockD.actual_qty = 0;
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
if (material != null)
{
msRawmatTransferinstockD.matcode_id = material.id;
msRawmatTransferinstockD.matspecification = material.material_specification;
}
wmsRawmatTransferinstockDs.Add(msRawmatTransferinstockD);
}
await db.Insertable(wmsRawmatTransferinstockDs).ExecuteCommandAsync();
await db.Ado.CommitTranAsync();
LoggerErp2Mes.LogInformation($"【RawMatTransferInstock】成功生成单据:{Code}");
return await ToApiResult(HttpStatusCode.OK, "成功");
}
catch (Exception ex)
{
LoggerErp2Mes.LogError($"【RawMatTransferInstock】{ex.Message}");
LoggerErp2Mes.LogError($"【RawMatTransferInstock】{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()