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