物料签收

This commit is contained in:
2024-06-24 11:09:16 +08:00
parent c0be9943f8
commit a5eb93809d
3 changed files with 105 additions and 4 deletions

View File

@@ -19,7 +19,11 @@ using Tnb.ProductionMgr.Entities.Dto;
using Tnb.ProductionMgr.Interfaces;
using Tnb.WarehouseMgr;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Attributes;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.WarehouseMgr.Interfaces;
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
namespace Tnb.ProductionMgr
{
@@ -28,19 +32,23 @@ namespace Tnb.ProductionMgr
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
public class PrdMaterialReceiptService : IPrdMaterialReceiptService, IDynamicApiController, ITransient
[ServiceModule(BizTypeId)]
public class PrdMaterialReceiptService : BaseWareHouseService,IPrdMaterialReceiptService, IDynamicApiController, ITransient
{
private const string BizTypeId = "26786119531541";
private readonly ISqlSugarRepository<PrdMaterialReceiptH> _repository;
private readonly IUserManager _userManager;
private readonly IOrganizeService _organizeService;
private readonly IBillRullService _billRullService;
private readonly IPrdMoTaskService _prdMoTaskService;
private readonly IWmsCarryQueryService _wmsCarryQueryService;
public PrdMaterialReceiptService(
ISqlSugarRepository<PrdMaterialReceiptH> repository,
IBillRullService billRullService,
IOrganizeService organizeService,
IPrdMoTaskService prdMoTaskService,
IWmsCarryQueryService wmsCarryQueryService,
IUserManager userManager
)
{
@@ -49,6 +57,7 @@ namespace Tnb.ProductionMgr
_organizeService = organizeService;
_billRullService = billRullService;
_prdMoTaskService = prdMoTaskService;
_wmsCarryQueryService = wmsCarryQueryService;
}
@@ -370,5 +379,93 @@ namespace Tnb.ProductionMgr
? throw Oops.Bah(result.ErrorMessage)
: !result2.IsSuccess ? throw Oops.Bah(result2.ErrorMessage) : (dynamic)"签收成功";
}
public override async Task ModifyAsync(WareHouseUpInput input)
{
if (input == null)
{
throw new ArgumentNullException(nameof(input));
}
if (string.IsNullOrEmpty(input.requireId))
{
throw Oops.Bah("来源id为空");
}
var db = _repository.AsSugarClient();
PrdMoTask moTask = await db.Queryable<PrdMoTask>().SingleAsync(x => x.id == input.requireId);
if (moTask == null)
{
throw Oops.Bah($"未找到来源id为{input.requireId}的生产任务单");
}
string code = await _billRullService.GetBillNumber(Tnb.BasicData.CodeTemplateConst.MATERIAL_RECEIPT_CODE);
OrganizeEntity workshop = await _organizeService.GetAnyParentByWorkstationId(moTask.workstation_id, DictConst.RegionCategoryWorkshopCode);
List<PrdMaterialReceiptH> insertHList = new List<PrdMaterialReceiptH>();
List<PrdMaterialReceiptD> insertDList = new List<PrdMaterialReceiptD>();
string orgId = _userManager.GetUserInfo().Result.organizeId;
foreach(string carryId in input.carryIds)
{
WmsCarryH carry = await db.Queryable<WmsCarryH>().SingleAsync(x => x.id == carryId);
PrdMaterialReceiptH prdMaterialReceiptH = new PrdMaterialReceiptH()
{
code = code,
station_id = moTask.workstation_id,
mo_task_id = moTask.id,
process_id = moTask.process_id,
equip_id = moTask.eqp_id,
workshop_id = workshop?.Id ?? "",
carry_id = carry.id,
workline_id = moTask.workline_id,
carry_code = carry.carry_code,
mbom_process_id = moTask.mbom_process_id,
create_id = _userManager.UserId,
create_time = DateTime.Now,
org_id = orgId
};
insertHList.Add(prdMaterialReceiptH);
CarryQueryOutput carryQueryOutput = await _wmsCarryQueryService.MESCarryQueryResult(new MESCarryQueryResultInput(){carry_code = carry.carry_code});
if (carryQueryOutput.wmsCarryCodes != null && carryQueryOutput.wmsCarryCodes.Count > 0)
{
foreach (var item in carryQueryOutput.wmsCarryCodes)
{
insertDList.Add(new PrdMaterialReceiptD
{
material_receipt_id = prdMaterialReceiptH.id,
material_id = item.material_id,
num = item.codeqty,
batch = item.code_batch,
unit_id = item.unit_id,
carry_id = carry.id,
barcode = item.barcode,
is_all_feeding = 0,
member_carry_id = item.member_carryid,
member_carry_code = item.member_carrycode,
feeding_num = 0,
supplier_id = item.supplier_id,
instock_time = item.instock_time,
check_conclusion = item.check_conclusion,
});
}
}
else
{
throw Oops.Bah("未找到物料明细");
}
}
DbResult<bool> result = await db.Ado.UseTranAsync(async () =>
{
await db.Insertable(insertHList).ExecuteCommandAsync();
await db.Insertable(insertDList).ExecuteCommandAsync();
});
if (!result.IsSuccess)
{
throw Oops.Bah(result.ErrorMessage);
}
}
}
}

View File

@@ -2042,7 +2042,7 @@ namespace Tnb.ProductionMgr
string responseresult = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand2);
Log.Information($"提拔确认完成参数成返回结果:{responseresult}");
X2ServerResult x2ServerResult = JsonConvert.DeserializeObject<X2ServerResult>(responseresult);
if (x2ServerResult.Result != "OK")
if (x2ServerResult.Result != X2ServerResult.Ok)
{
throw Oops.Bah(x2ServerResult.Msg);
}
@@ -2071,7 +2071,7 @@ namespace Tnb.ProductionMgr
string responseresult = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand3,false);
Log.Information($"{eqpDaq3.equip_code},{eqpDaq3.label_name}称重完成返回结果:{responseresult}");
X2ServerResult x2ServerResult = JsonConvert.DeserializeObject<X2ServerResult>(responseresult);
if (x2ServerResult.Result != "OK")
if (x2ServerResult.Result != X2ServerResult.Ok)
{
throw Oops.Bah(x2ServerResult.Msg);
}

View File

@@ -13,8 +13,12 @@ namespace Tnb.Common.Utils
public string Content { get; set; }
}
public class X2ServerResult : Exception
public class X2ServerResult
{
public const string Ok = "Ok";
public string Result { get; set; }
public string Msg { get; set; }