diff --git a/BasicData/Tnb.BasicData.Entities/Dto/BasDefect/DefectOutput.cs b/BasicData/Tnb.BasicData.Entities/Dto/BasDefect/DefectOutput.cs new file mode 100644 index 00000000..dcf2811c --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Dto/BasDefect/DefectOutput.cs @@ -0,0 +1,9 @@ +namespace Tnb.BasicData.Entities.Dto +{ + public class DefectOutput + { + public string id { get; set; } + public string defect_code { get; set; } + public string defect_name { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/BasDefectService.cs b/BasicData/Tnb.BasicData/BasDefectService.cs index b9fcd432..01cd4c26 100644 --- a/BasicData/Tnb.BasicData/BasDefectService.cs +++ b/BasicData/Tnb.BasicData/BasDefectService.cs @@ -5,6 +5,7 @@ using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using Microsoft.AspNetCore.Mvc; using SqlSugar; +using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Entities; using Tnb.BasicData.Interfaces; @@ -33,18 +34,21 @@ namespace Tnb.BasicData public async Task GetDefectListByProcessId(Dictionary dic) { string processId = dic["processId"]; - return await _repository.AsSugarClient().Queryable() - .LeftJoin((a, b) => a.process_id == b.id) - .LeftJoin((a, b, c) => a.defective_id == c.id) - .LeftJoin((a,b,c,d)=>c.defect_type_id==d.id) - .Where((a, b, c) => a.process_id == processId && c.enabled==1) - .Select((a, b, c,d) => new + var 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 { - id = c.id, - defect_code = c.defect_code, - defect_name = c.defect_name, - defect_type_id = d.defect_type_name, - defect_type_id_id = d.id + defect_type_id = a.id, + defect_type_name = 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(); } }