using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Extension; using JNPF.Common.Filter; using JNPF.FriendlyException; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Dto.Inputs; using Tnb.WarehouseMgr.Entities.Dto.Outputs; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr { /// /// 齐套配套方案服务 /// [OverideVisualDev(ModuleId)] public class WmsCollocationSchemeSevice : WmsBasicConfBase, IWmsCollocationSchemeSevice { private const string ModuleId = "26167204892965"; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly ISqlSugarRepository _repository; public WmsCollocationSchemeSevice( ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService ) { _repository = repository; DbContext = _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; OverideFuncs.CreateAsync = Create; } private async Task Create(VisualDevModelDataCrInput input) { string materialCode = ""; int seq = 0; if (input.data.ContainsKey(nameof(WmsCollocationSchemeH.material_code))) { materialCode = input.data[nameof(WmsCollocationSchemeH.material_code)]?.ToString()!; } if (input.data.ContainsKey(nameof(WmsCollocationSchemeH.seq)) && input.data[nameof(WmsCollocationSchemeH.seq)] != null) { seq = input.data[nameof(WmsCollocationSchemeH.seq)].ParseToInt(); } if (!materialCode.IsNullOrEmpty() && seq > 0) { WmsCollocationSchemeH item = await _repository.GetFirstAsync(it => it.material_code == materialCode && it.seq == seq); if (item != null) { throw new AppFriendlyException($"物料+顺序【{materialCode}{seq}】,在数据库中已存在", 500); } } try { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, input); } catch (Exception) { return Task.FromResult(false); } return await Task.FromResult(true); } /// /// MES齐套搭配方案查询接口 /// /// /// [HttpPost] //[NonUnify] public async Task MESCollocationSchemeQuery(MESCollocationSchemeQueryInput input) { if (input.IsNull()) { throw new ArgumentNullException("input"); } SqlSugarPagedList pageData = new(); try { pageData = await _db.Queryable() .Where(a => a.material_id == input.material_id) .Select(a => new CollocationSchemeOutput { list = SqlFunc.Subqueryable().Where(b => b.bill_id == a.id).ToList(), }, true) .Mapper(it => it.CollocationSchemeDsJson = JsonConvert.SerializeObject(it.list)) .ToPagedListAsync(input.currentPage, input.pageSize); } catch (Exception) { } return pageData == null ? Enumerable.Empty() : PageResult.SqlSugarPageResult(pageData); } } }