From d0632f9b1e3b3fa424cf4e2447fc97bb5391ec3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=99=93=E4=B8=9C?= <17363321594@163.com> Date: Tue, 30 Sep 2025 15:39:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BA=A7=E5=93=81=E8=BF=BD?= =?UTF-8?q?=E6=BA=AF=E4=BF=A1=E6=81=AF=E5=88=97=E8=A1=A8=E3=80=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=AD=90=E9=9B=B6=E4=BB=B6=E3=80=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E5=B9=B3=E5=8F=B0=E5=8A=9F=E8=83=BD=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MES/trace/TraceMainController.cs | 39 +++++ DOAN.Model/MES/trace/Dto/TraceQueryDto.cs | 49 ++++++ .../MES/trace/Dto/TraceSnQcRecordDto.cs | 3 + DOAN.Model/MES/trace/Dto/TraceSnSubScanDto.cs | 1 + .../MES/trace/IService/ITraceMainService.cs | 22 +++ DOAN.Service/MES/trace/TraceMainService.cs | 145 +++++++++++++++++- 6 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 DOAN.Model/MES/trace/Dto/TraceQueryDto.cs diff --git a/DOAN.Admin.WebApi/Controllers/MES/trace/TraceMainController.cs b/DOAN.Admin.WebApi/Controllers/MES/trace/TraceMainController.cs index bfcccba..cc03733 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/trace/TraceMainController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/trace/TraceMainController.cs @@ -1,5 +1,6 @@ using DOAN.Model; using DOAN.Model.Dto; +using DOAN.Model.MES.trace.Dto; using DOAN.Service.Business.IBusinessService; using Microsoft.AspNetCore.Mvc; @@ -22,6 +23,44 @@ namespace DOAN.Admin.WebApi.Controllers _TraceMainService = TraceMainService; } + /// + /// 获取产品追溯信息列表 + /// + /// + /// + [HttpPost("getPartSnList")] + [AllowAnonymous] + public IActionResult GetPartSnList([FromBody] TracePartSnQueryDto query) + { + var response = _TraceMainService.GetPartSnList(query); + return SUCCESS(response); + } + + /// + /// 获取子零件 + /// + /// + /// + [HttpPost("getSnSubScanList")] + [AllowAnonymous] + public IActionResult GetSnSubScanList([FromBody] TraceSnSubScanQueryDto query) + { + var response = _TraceMainService.GetSnSubScanList(query); + return SUCCESS(response); + } + + /// + /// 获取检测平台(折叠:zd/终检:eol) + /// + /// + /// + [HttpPost("getSnQcRecordList")] + [AllowAnonymous] + public IActionResult GetSnQcRecordList([FromBody] TraceSnQcRecordQueryDto query) { + var response = _TraceMainService.GetSnQcRecordList(query); + return SUCCESS(response); + } + /// /// 获取配置 /// diff --git a/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs b/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs new file mode 100644 index 0000000..8aa93f8 --- /dev/null +++ b/DOAN.Model/MES/trace/Dto/TraceQueryDto.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DOAN.Model.MES.trace.Dto +{ + /// + /// 追溯项目清单查询对象 + /// + public class TracePartSnQueryDto : PagerInfo + { + public string PartSn { get; set; } + + public string ProductionSn { get; set; } + + public string ProjectCode { get; set; } + + public string SubCode { get; set; } + + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } + } + + /// + /// 产品追溯信息DTO + /// + public class TracePartSnDto : PagerInfo + { + public string Id { get; set; } + public string ProjectCode { get; set; } + + public string ProductionCode { get; set; } + + public string ProductionName { get; set; } + + public string Specification { get; set; } + + public string ProductionSn { get; set; } + + public string PartSN { get; set; } + + public string Result { get; set; } + + public DateTime CreateTime { get; set; } + } +} diff --git a/DOAN.Model/MES/trace/Dto/TraceSnQcRecordDto.cs b/DOAN.Model/MES/trace/Dto/TraceSnQcRecordDto.cs index 0a285c9..11a0b76 100644 --- a/DOAN.Model/MES/trace/Dto/TraceSnQcRecordDto.cs +++ b/DOAN.Model/MES/trace/Dto/TraceSnQcRecordDto.cs @@ -7,6 +7,9 @@ namespace DOAN.Model.Dto /// public class TraceSnQcRecordQueryDto : PagerInfo { + public string PartSn { get; set; } + + public string QcType { get; set; } } /// diff --git a/DOAN.Model/MES/trace/Dto/TraceSnSubScanDto.cs b/DOAN.Model/MES/trace/Dto/TraceSnSubScanDto.cs index 6824366..2f7f418 100644 --- a/DOAN.Model/MES/trace/Dto/TraceSnSubScanDto.cs +++ b/DOAN.Model/MES/trace/Dto/TraceSnSubScanDto.cs @@ -7,6 +7,7 @@ namespace DOAN.Model.Dto /// public class TraceSnSubScanQueryDto : PagerInfo { + public string PartSn { get; set; } } /// diff --git a/DOAN.Service/MES/trace/IService/ITraceMainService.cs b/DOAN.Service/MES/trace/IService/ITraceMainService.cs index 77f3123..cc4a984 100644 --- a/DOAN.Service/MES/trace/IService/ITraceMainService.cs +++ b/DOAN.Service/MES/trace/IService/ITraceMainService.cs @@ -1,5 +1,6 @@ using DOAN.Model; using DOAN.Model.Dto; +using DOAN.Model.MES.trace.Dto; namespace DOAN.Service.Business.IBusinessService { @@ -8,6 +9,27 @@ namespace DOAN.Service.Business.IBusinessService /// public interface ITraceMainService : IBaseService { + /// + /// 获取产品追溯信息列表 + /// + /// + /// + PagedInfo GetPartSnList(TracePartSnQueryDto query); + + /// + /// 获取子零件 + /// + /// + /// + PagedInfo GetSnSubScanList(TraceSnSubScanQueryDto query); + + /// + /// 获取检测平台(折叠:zd/终检:eol) + /// + /// + /// + PagedInfo GetSnQcRecordList(TraceSnQcRecordQueryDto query); + /// /// 获取配置列表 /// diff --git a/DOAN.Service/MES/trace/TraceMainService.cs b/DOAN.Service/MES/trace/TraceMainService.cs index 383c6a8..66d8d55 100644 --- a/DOAN.Service/MES/trace/TraceMainService.cs +++ b/DOAN.Service/MES/trace/TraceMainService.cs @@ -1,13 +1,17 @@ -using System; -using System.Linq; using Aliyun.OSS; using DOAN.Model; using DOAN.Model.Dto; +using DOAN.Model.MES.dev; +using DOAN.Model.MES.trace; +using DOAN.Model.MES.trace.Dto; using DOAN.Repository; using DOAN.Service.Business.IBusinessService; using Infrastructure.Attribute; using Infrastructure.Extensions; using SqlSugar; +using System; +using System.ComponentModel.DataAnnotations; +using System.Linq; namespace DOAN.Service { @@ -17,6 +21,143 @@ namespace DOAN.Service [AppService(ServiceType = typeof(ITraceMainService), ServiceLifetime = LifeTime.Transient)] public class TraceMainService : BaseService, ITraceMainService { + /// + /// 获取产品追溯信息列表 + /// + /// + /// + public PagedInfo GetPartSnList(TracePartSnQueryDto query) + { + if (query == null) + { + throw new ArgumentNullException(nameof(query)); + } + 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() + { + Id = XueHua, + ProjectCode = s.ProjectCode, + ProductionCode = r.ProductionCode, + ProductionName = r.ProductionName, + Specification = s.Specification, + ProductionSn = r.ProductionSn, + PartSN = s.PartSn, + Result = r.Result, + CreateTime = (DateTime)r.CreateTime + }) + .ToPage(query); + return response; + } + + /// + /// 获取子零件 + /// + /// + /// + /// + public PagedInfo GetSnSubScanList(TraceSnSubScanQueryDto query) + { + if (query == null) + { + throw new ArgumentNullException(nameof(query)); + } + var response = Context.Queryable() + .Where(t => t.PartSn == query.PartSn) + .Select(t => new TraceSnSubScanDto() + { + Id = t.Id, + SubCode = t.SubCode, + SubName = t.SubName, + Specification = t.Specification, + PartSn = t.PartSn, + SubPartScanCode = t.SubPartScanCode, + IsBack = t.IsBack, + CreateTime = t.CreateTime + }) + .ToPage(query); + return response; + } + + /// + /// 获取检测平台(折叠:zd/终检:eol) + /// + /// + /// + /// + public PagedInfo GetSnQcRecordList(TraceSnQcRecordQueryDto query) + { + if (query == null) + { + throw new ArgumentNullException(nameof(query)); + } + var response = Context.Queryable() + .Where(r => r.PartSn == query.PartSn && r.QcType == query.QcType) + .Select(r => new TraceSnQcRecordDto() + { + Id = r.Id, + ProjectCode = r.ProjectCode, + ProductionCode = r.ProductionCode, + ProductionName = r.ProductionName, + Specification = r.Specification, + PartSn = r.PartSn, + QcType = r.QcType, + IsBack = r.IsBack, + CreateBy = r.CreateBy, + CreateTime = r.CreateTime, + Value01 = r.Value01, + Value02 = r.Value02, + Value03 = r.Value03, + Value04 = r.Value04, + Value05 = r.Value05, + Value06 = r.Value06, + Value07 = r.Value07, + Value08 = r.Value08, + Value09 = r.Value09, + Value10 = r.Value10, + Value11 = r.Value11, + Value12 = r.Value12, + Value13 = r.Value13, + Value14 = r.Value14, + Value15 = r.Value15, + Value16 = r.Value16, + Value17 = r.Value17, + Value18 = r.Value18, + Value19 = r.Value19, + Value20 = r.Value20, + Value21 = r.Value21, + Value22 = r.Value22, + Value23 = r.Value23, + Value24 = r.Value24, + Value25 = r.Value25, + Value26 = r.Value26, + Value27 = r.Value27, + Value28 = r.Value28, + Value29 = r.Value29, + Value30 = r.Value30, + Value31 = r.Value31, + Value32 = r.Value32, + Value33 = r.Value33, + Value34 = r.Value34, + Value35 = r.Value35, + Value36 = r.Value36, + Value37 = r.Value37, + Value38 = r.Value38, + Value39 = r.Value39, + Value40 = r.Value40, + }) + .ToPage(query); + return response; + } + public List GetConfig(DeviceDownLoadTraceConfigQueryDto parm) { var response = Context