Files
tnb.server/EquipMgr/Tnb.EquipMgr/EqpEquipSparePartsInstockService.cs
2024-08-06 17:39:39 +08:00

100 lines
4.0 KiB
C#

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
{
/// <summary>
/// 备品备件入库
/// </summary>
[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<EqpEquipSpareParts> _repository;
private readonly IUserManager _userManager;
private readonly IVisualDevService _visualDevService;
private readonly IRunService _runService;
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
public EqpEquipSparePartsInstockService(ISqlSugarRepository<EqpEquipSpareParts> repository,
IVisualDevService visualDevService,
IRunService runService,
IUserManager userManager)
{
_userManager = userManager;
_visualDevService = visualDevService;
_runService = runService;
_repository = repository;
OverideFuncs.CreateAsync = Create;
}
private async Task<dynamic> Create(VisualDevModelDataCrInput input)
{
ISqlSugarClient db = _repository.AsSugarClient();
DbResult<bool> 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<EqpSparePartsInstockH>()
.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<EqpSparePartsInstockD>()
.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<EqpSparePartsInstockD>()
.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);
}
}
}