using System.CodeDom.Compiler; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using NPOI.SS.Formula.Functions; using SqlSugar; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Interfaces; namespace Tnb.EquipMgr { /// /// 备品备件入库 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class EqpEquipSparePartsInstockService : IOverideVisualDevService, IDynamicApiController, ITransient { private const string ModuleId = "27338626725397"; private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public EqpEquipSparePartsInstockService(ISqlSugarRepository repository, IVisualDevService visualDevService, IRunService runService, IUserManager userManager) { _userManager = userManager; _visualDevService = visualDevService; _runService = runService; _repository = repository; OverideFuncs.CreateAsync = Create; } private async Task Create(VisualDevModelDataCrInput input) { ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, input); string id = input.data["ReturnIdentity"].ToString(); string nowStr = DateTime.Now.ToString("yyyy-MM-dd"); string nowStr2 = DateTime.Now.ToString("yyyyMMdd"); EqpSparePartsInstockH eqpSparePartsInstockH = await db.Queryable() .Where(x => x.id!=id && x.create_time.Value.ToString("yyyy-MM-dd") == nowStr) .OrderByDescending(x => x.create_time) .FirstAsync(); string batch = ""; if (eqpSparePartsInstockH != null) { EqpSparePartsInstockD eqpSparePartsInstockD = await db.Queryable() .Where(x => x.instock_id == eqpSparePartsInstockH.id) .FirstAsync(); if (!string.IsNullOrEmpty(eqpSparePartsInstockD.batch)) { string batchNum = eqpSparePartsInstockD.batch.Substring(eqpSparePartsInstockD.batch.Length - 3); int num = int.Parse(batchNum) + 1; batch = nowStr2 + num.ToString().PadLeft(3,'0'); } else { batch = nowStr2 + "1".PadLeft(3,'0'); } } else { batch = nowStr2 + "1".PadLeft(3,'0'); } await db.Updateable() .SetColumns(x => x.batch == batch) .Where(x => x.instock_id == id) .ExecuteCommandAsync(); }); return !result.IsSuccess ? throw Oops.Bah(result.ErrorMessage) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } } }