using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Interfaces.System; 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 = 1102)] [Route("api/[area]/[controller]/[action]")] public class BasDefectService : IBasDefectService, IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; private readonly DataBaseManager _dbManager; private readonly IDictionaryDataService _dictionaryDataService; public BasDefectService( ISqlSugarRepository repository, DataBaseManager dbManager, IDictionaryDataService dictionaryDataService) { _repository = repository; _dbManager = dbManager; _dictionaryDataService = dictionaryDataService; } [HttpPost] public async Task GetDefectListByProcessId(Dictionary dic) { string processId = dic["processId"]; ISqlSugarClient db = _repository.AsSugarClient(); List defectIds = await db.Queryable().Where(x => x.process_id == processId).Select(x => x.defective_id).ToListAsync(); List defectTypeIds = await db.Queryable().Where(x => defectIds.Contains(x.id) && x.enabled == 1).Select(x => x.defect_type_id).ToListAsync(); return await _repository.AsSugarClient().Queryable() .Where((a) => defectTypeIds.Contains(a.id)) .Select(a => new { defect_type_id = a.id, a.defect_type_name, children = SqlFunc.Subqueryable().Where(x => x.defect_type_id == a.id && defectIds.Contains(x.id)).ToList(x => new DefectOutput() { id = x.id, defect_code = x.defect_code, defect_name = x.defect_name, }) }).ToListAsync(); } } }