using JNPF.Common.Contracts; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Logging; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.Common.Utils; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr { /// /// PDA投料记录 /// [OverideVisualDev(ModuleConsts.MODULE_WMSFEEDINGRECORDPDA_ID)] public class WmsPDAFeedingService : BaseWareHouseService, IPdaStroage { private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; private readonly IBillRullService _billRullService; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IWmsCarryService _carryService; public WmsPDAFeedingService( ISqlSugarRepository repository, IUserManager userManager, IBillRullService billRullService, IRunService runService, IVisualDevService visualDevService, IWmsCarryService carryService) { _db = repository.AsSugarClient(); _userManager = userManager; _billRullService = billRullService; _runService = runService; _visualDevService = visualDevService; _carryService = carryService; OverideFuncs.CreateAsync = WmsPDAFeedingRecord; } /// /// PDA投料记录 /// /// /// 输入参数: ///
{ ///
old_carry_id: 料箱ID ///
new_carry_id:新载具ID ///
} /// /// /// private async Task WmsPDAFeedingRecord(VisualDevModelDataCrInput input) { var isOk = false; try { await _db.Ado.BeginTranAsync(); VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSFEEDINGRECORDPDA_ID, true); await _runService.Create(templateEntity, input); var carryId = input.data.ContainsKey("carry_id") ? input.data["carry_id"]?.ToString() : ""; var feedBoxCode = input.data.ContainsKey("feedbox_code") ? input.data["feedbox_code"]?.ToString() : ""; var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); var feedBox = await _db.Queryable().SingleAsync(it => it.feedbox_code == feedBoxCode); var carryMaterial = await _db.Queryable().FirstAsync(it => it.carry_id == carryId); var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); if (carryMaterial != null && feedBox != null && carry != null) { //更新投料箱 feedBox.material_id = carryMaterial.material_id; feedBox.material_code = carryMaterial.material_code; feedBox.qty = carryMaterial.qty; feedBox.batch = carryMaterial?.code_batch!; feedBox.modify_id = _userManager.UserId; feedBox.modify_time = DateTime.Now; var row = await _db.Updateable(feedBox) .UpdateColumns(it => new { it.material_id, it.material_code, it.qty, it.batch, it.modify_id, it.modify_time }).ExecuteCommandAsync(); //更新载具 row = await _carryService.UpdateNullCarry(carry).Unwrap(); isOk = (row > 0); if (!isOk) throw Oops.Oh(ErrorCode.COM1001); } else { if (carryMaterial == null) { throw new AppFriendlyException("没有可用的载具", 500); } if (feedBox == null) { throw new AppFriendlyException("没有可用的投料箱", 500); } } await _db.Ado.CommitTranAsync(); } catch (Exception ex) { Log.Error("投料失败", ex); await _db.Ado.RollbackTranAsync(); throw; } return isOk; } } }