using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Interfaces; namespace Tnb.BasicData { /// /// 物料清单 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 701)] [Route("api/[area]/[controller]/[action]")] public class BasRouteService : IBasRouteService, IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; public BasRouteService( UserManager userManager, ISqlSugarRepository repository) { _repository = repository; } /// /// 发布工艺路线 /// /// 工艺路线id id [HttpPost] public async Task Publish(Dictionary parameters) { string id = parameters["id"]; _ = await _repository.UpdateAsync(x => new BasRouteH() { status = "1", }, x => x.id == id); } /// /// 复制工艺路线 /// /// 工艺路线id id [HttpPost] public async Task Copy(Dictionary parameters) { string id = parameters["id"]; BasRouteH basRouteH = await _repository.GetByIdAsync(id); List basRouteDs = await _repository.AsSugarClient().Queryable().Where(x => x.route_id == id).ToListAsync(); string newId = SnowflakeIdHelper.NextId(); basRouteH.id = newId; basRouteH.code += "_复制的请修改"; basRouteH.name += "_复制的请修改"; basRouteH.status = "0"; DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { _ = await _repository.InsertAsync(basRouteH); foreach (BasRouteD basRouteD in basRouteDs) { basRouteD.id = SnowflakeIdHelper.NextId(); basRouteD.route_id = newId; } _ = await _repository.AsSugarClient().Insertable(basRouteDs).ExecuteCommandAsync(); }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "复制成功" : result.ErrorMessage; } /// /// 获取有效的已发布的工艺路线 /// [HttpPost] public async Task GetValidRouteList([FromBody] VisualDevDataFieldDataListInput pageInput) { ISqlSugarClient db = _repository.AsSugarClient(); SqlSugarPagedList result = await db.Queryable() .Where(x => x.status == "1" && ((x.start_time != null && x.start_time.Value <= DateTime.Now && x.end_time != null && x.end_time.Value >= DateTime.Now) || (x.start_time == null && x.end_time >= DateTime.Now) || (x.end_time == null && x.start_time <= DateTime.Now) || (x.start_time == null && x.end_time == null) )).Select(x => new VaildRouteOutput() { id = x.id, code = x.code, name = x.name, start_time = x.start_time == null ? "" : x.start_time.Value.ToString("yyyy-MM-dd"), end_time = x.end_time == null ? "" : x.end_time.Value.ToString("yyyy-MM-dd"), }).ToPagedListAsync(pageInput.currentPage, pageInput.pageSize); return PageResult.SqlSugarPageResult(result); } } }