using JNPF.Common.Core.Manager; using JNPF.Common.Enums; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; using JNPF.VisualDev; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Interfaces; namespace Tnb.BasicData { /// /// esop关联 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 1102)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModelId)] public class BasESopService : IBasESopService, IOverideVisualDevService, IDynamicApiController, ITransient { public const string ModelId = "26919620992277"; private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public BasESopService( IUserManager userManager, ISqlSugarRepository repository) { _repository = repository; _userManager = userManager; OverideFuncs.GetListAsync = GetList; } /// /// ESOP列表 /// /// /// [HttpPost] public async Task GetList(VisualDevModelListQueryInput input) { ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = string.IsNullOrEmpty(input.queryJson) ? null : input.queryJson.ToObject>(); string? code = queryJson != null && queryJson.ContainsKey("code") ? queryJson["code"].ToString() : ""; string? name = queryJson != null && queryJson.ContainsKey("name") ? queryJson["name"].ToString() : ""; string? version = queryJson != null && queryJson.ContainsKey("version") ? queryJson["version"].ToString() : ""; SqlSugarPagedList list = await db.Queryable((a, b, c, d, e) => new object[] { JoinType.Left, a.mbom_id == b.id, JoinType.Left, a.mbom_process_id == c.id, JoinType.Left, a.create_id == d.Id, JoinType.Left, c.process_id == e.id, }) .WhereIF(!string.IsNullOrEmpty(code), (a, b, c, d) => a.code.Contains(code!)) .WhereIF(!string.IsNullOrEmpty(name), (a, b, c, d) => a.name.Contains(name!)) .WhereIF(!string.IsNullOrEmpty(version), (a, b, c, d) => a.version.Contains(version!)) .Where((a, b, c) => a.enabled == 1) .Select((a, b, c, d, e) => new ESopListOutput { id = a.id, code = a.code, name = a.name, mbom_id = b.version!, mbom_process_id = e.process_name!, version = a.version, enabled = a.enabled == 1 ? "是" : "否", attachment = a.attachment, remark = a.remark, create_id = d.RealName, create_time = a.create_time == null ? "" : a.create_time.Value.ToString("yyyy-MM-dd"), mbom_id_id = a.mbom_id, mbom_process_id_id = a.mbom_process_id }).ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(list); } [HttpPost] public async Task GetHistoryList(EsopHistoryListQueryInput input) { ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = new(); if (input != null && !string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input?.queryJson ?? ""); } string code = queryJson != null && queryJson.ContainsKey("code") ? queryJson["code"].ToString() : ""; string name = queryJson != null && queryJson.ContainsKey("name") ? queryJson["name"].ToString() : ""; string version = queryJson != null && queryJson.ContainsKey("version") ? queryJson["version"].ToString() : ""; SqlSugarPagedList list = await db.Queryable((a, b, c, d, e) => new object[] { JoinType.Left, a.mbom_id == b.id, JoinType.Left, a.mbom_process_id == c.id, JoinType.Left, a.create_id == d.Id, JoinType.Left, c.process_id == e.id, }) .WhereIF(!string.IsNullOrEmpty(code), (a, b, c, d) => a.code.Contains(code)) .WhereIF(!string.IsNullOrEmpty(name), (a, b, c, d) => a.name.Contains(name)) .WhereIF(!string.IsNullOrEmpty(version), (a, b, c, d) => a.version.Contains(version)) .Where((a, b, c) => a.mbom_id == input!.mbom_id && a.mbom_process_id == input!.mbom_process_id) .Select((a, b, c, d, e) => new ESopListOutput { id = a.id, code = a.code, name = a.name, mbom_id = b.version!, mbom_process_id = e.process_name!, version = a.version, enabled = a.enabled == 1 ? "是" : "否", attachment = a.attachment, remark = a.remark, create_id = d.RealName, create_time = a.create_time == null ? "" : a.create_time.Value.ToString("yyyy-MM-dd"), mbom_id_id = a.mbom_id }).ToPagedListAsync(input?.currentPage ?? 1, input?.pageSize ?? 50); return PageResult.SqlSugarPageResult(list); } [HttpPost] public async Task GetEntityByMbomProcessId(Dictionary dic) { string mbomProcessId = dic["mbomProcessId"]; return !string.IsNullOrEmpty(mbomProcessId) ? await _repository.GetFirstAsync(x => x.mbom_process_id == mbomProcessId && x.enabled == 1) : (dynamic)null; } [HttpPost] public async Task UploadNewVersion(UploadNewVersionInput input) { if (_repository.IsAny(x => x.mbom_id == input.mbom_id && x.mbom_process_id == input.mbom_process_id && x.version == input.version)) { throw Oops.Bah("已存在该版本"); } ISqlSugarClient db = _repository.AsSugarClient(); DbResult result = await db.Ado.UseTranAsync(async () => { _ = await _repository.UpdateAsync(x => new BasESop() { enabled = 0, }, x => x.mbom_id == input.mbom_id && x.mbom_process_id == input.mbom_process_id); BasESop basESop = new() { code = input.code, name = input.name, version = input.version, attachment = input.attachment, mbom_id = input.mbom_id, mbom_process_id = input.mbom_process_id, remark = input.remark, create_id = _userManager.UserId, create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, enabled = 1, }; _ = await _repository.InsertAsync(basESop); }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "上传成功" : result.ErrorMessage); } } }