diff --git a/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs b/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs index 8aa93f8..4bdf6c2 100644 --- a/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs +++ b/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs @@ -17,7 +17,7 @@ namespace DOAN.Model.MES.trace.Dto public string ProjectCode { get; set; } - public string SubCode { get; set; } + public string SubPartScanCode { get; set; } public DateTime StartTime { get; set; } diff --git a/DOAN.Service/MES/trace/TraceMainService.cs b/DOAN.Service/MES/trace/TraceMainService.cs index 66d8d55..b359daa 100644 --- a/DOAN.Service/MES/trace/TraceMainService.cs +++ b/DOAN.Service/MES/trace/TraceMainService.cs @@ -8,6 +8,7 @@ using DOAN.Repository; using DOAN.Service.Business.IBusinessService; using Infrastructure.Attribute; using Infrastructure.Extensions; +using Microsoft.IdentityModel.Tokens; using SqlSugar; using System; using System.ComponentModel.DataAnnotations; @@ -32,17 +33,24 @@ namespace DOAN.Service { throw new ArgumentNullException(nameof(query)); } + if (!string.IsNullOrEmpty(query.SubPartScanCode)) + { + var partSn = Context.Queryable() + .Where(t => t.SubCode == query.SubPartScanCode) + .Select(t => t.PartSn) + .ToString(); + query.PartSn = partSn; + } var response = Context.Queryable() .LeftJoin((s, r) => s.PartSn == r.PartSn) - .LeftJoin((s, r, t) => s.PartSn == t.PartSn) - .WhereIF(!string.IsNullOrEmpty(query.PartSn), (s, r, t) => s.PartSn == query.PartSn) - .WhereIF(!string.IsNullOrEmpty(query.ProductionSn), (s, r, t) => r.ProductionSn == query.ProductionSn) - .WhereIF(!string.IsNullOrEmpty(query.ProjectCode), (s, r, t) => s.ProjectCode == query.ProjectCode) - .WhereIF(!string.IsNullOrEmpty(query.SubCode), (s, r, t) => t.SubCode == query.SubCode) - .WhereIF(query.StartTime > DateTime.MinValue, (s, r, t) => s.CreateTime >= query.StartTime) - .WhereIF(query.EndTime > DateTime.MinValue, (s, r, t) => s.CreateTime >= query.EndTime) - .OrderByDescending((s, r, t) => s.CreateTime) - .Select((s, r, t) => new TracePartSnDto() + .WhereIF(!string.IsNullOrEmpty(query.PartSn), (s, r) => s.PartSn == query.PartSn) + .WhereIF(!string.IsNullOrEmpty(query.ProductionSn), (s, r) => r.ProductionSn == query.ProductionSn) + .WhereIF(!string.IsNullOrEmpty(query.ProjectCode), (s, r) => s.ProjectCode == query.ProjectCode) + .WhereIF(query.StartTime > DateTime.MinValue, (s, r) => s.CreateTime >= query.StartTime) + .WhereIF(query.EndTime > DateTime.MinValue, (s, r) => s.CreateTime >= query.EndTime) + .OrderByDescending((s, r) => s.CreateTime) + .GroupBy((s, r) => new { s.PartSn, r.ProductionSn }) + .Select((s, r) => new TracePartSnDto() { Id = XueHua, ProjectCode = s.ProjectCode, @@ -51,8 +59,8 @@ namespace DOAN.Service Specification = s.Specification, ProductionSn = r.ProductionSn, PartSN = s.PartSn, - Result = r.Result, - CreateTime = (DateTime)r.CreateTime + Result = r.Result, + CreateTime = r.CreateTime != null ? (DateTime)r.CreateTime : (DateTime)s.CreateTime }) .ToPage(query); return response;