using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using JNPF.Common.Contracts; using JNPF.Common.Enums; using JNPF.Common.Extension; using JNPF.FriendlyException; using JNPF.Systems.Interfaces.System; using Microsoft.AspNetCore.Mvc; using Microsoft.CodeAnalysis.Operations; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; using Tnb.WarehouseMgr.Entities.Dto.Inputs; using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr { /// /// 出库签收 /// public class WmsSignForDeliveryService : BaseWareHouseService { private readonly ISqlSugarClient _db; private readonly IWmsCarryService _wareCarryService; private readonly IDictionaryDataService _dictionaryDataService; private readonly IWmsCarryMoveInStockService _wmsCarryMoveInStockService; private static Dictionary _dicBizType = new(); public WmsSignForDeliveryService(ISqlSugarRepository repository, IWmsCarryService wareCarryService, IDictionaryDataService dictionaryDataService, IWmsCarryMoveInStockService wmsCarryMoveInStockService) { _db = repository.AsSugarClient(); _wareCarryService = wareCarryService; _dictionaryDataService = dictionaryDataService; _wmsCarryMoveInStockService = wmsCarryMoveInStockService; } /// /// 根据载具ID获取,对应的执行任务记录 /// /// /// [HttpGet] public async Task GetDisTasksByCarryId([FromRoute] string carryId) { var item = await _db.Queryable().FirstAsync(it => it.carry_id == carryId && it.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID && it.is_sign == 0); return item; } /// /// 出库签收 /// /// [HttpPost] public async Task SignForDelivery(SignForDeliveryInput input) { if (_dicBizType.Count < 1) { _dicBizType = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_BIZTYPE_ID); } try { await _db.Ado.BeginTranAsync(); var carry = await _db.Queryable().SingleAsync(it => it.id == input.carryId); if (carry != null) { if (carry.location_id.IsNotEmptyOrNull()) { var loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); loc.is_use = (int)EnumCarryStatus.空闲; await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); } var disTask = await _db.Queryable().SingleAsync(it => it.id == input.disTaskId); if (disTask != null) { if (_dicBizType.ContainsKey(disTask.biz_type)) { switch (_dicBizType[disTask.biz_type]) { case "空载具出库": case "寄存出库": case "齐套出库": case "一般出库": { WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List { input.carryId } }; await DoUpdate(upInput); //回更业务 } break; case "载具移出": { WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List { input.carryId } }; await DoUpdate(upInput); //回更业务 } break; } } disTask.is_sign = 1; await _db.Updateable(disTask).UpdateColumns(it => it.is_sign).ExecuteCommandAsync(); } } await _db.Ado.CommitTranAsync(); } catch (Exception) { await _db.Ado.RollbackTranAsync(); throw; } } } }