sjz
2 天以前 74ab9465837f8a6f9eae854059e9783eff24e173
MES.Service/service/QC/PcbTestDataService.cs
@@ -1,14 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.util;
using SqlSugar;
namespace MES.Service.service.QC
{
namespace MES.Service.service.QC;
    /// <summary>
    /// PCB检测数据服务
    /// </summary>
@@ -29,25 +26,26 @@
                    testData.CreateTime = DateTime.Now;
                    testData.DataType = "WHOLE";
                    var testDataId = db.Insertable(testData).ExecuteReturnIdentity();
                var testDataId =
                    db.Insertable(testData).ExecuteReturnIdentity();
                    var affectedRows = 1;
                    if (dto.BoardData != null && dto.BoardData.Count > 0)
                    {
                        var componentDataList = new List<MesPcbComponentData>();
                        foreach (var boardData in dto.BoardData)
                        if (boardData.CompData != null &&
                            boardData.CompData.Count > 0)
                        {
                            if (boardData.CompData != null && boardData.CompData.Count > 0)
                            {
                                var componentData = ConvertComponentListToEntity(boardData.CompData, testDataId);
                            var componentData =
                                ConvertComponentListToEntity(boardData.CompData,
                                    testDataId);
                                componentDataList.AddRange(componentData);
                            }
                        }
                        if (componentDataList.Count > 0)
                        {
                            affectedRows += db.Insertable(componentDataList).ExecuteCommand();
                        }
                        affectedRows += db.Insertable(componentDataList)
                            .ExecuteCommand();
                    }
                    return affectedRows;
@@ -74,13 +72,16 @@
                    testData.CreateTime = DateTime.Now;
                    testData.DataType = "SINGLE";
                    var testDataId = db.Insertable(testData).ExecuteReturnIdentity();
                var testDataId =
                    db.Insertable(testData).ExecuteReturnIdentity();
                    var affectedRows = 1;
                    if (dto.CompData != null && dto.CompData.Count > 0)
                    {
                        var componentDataList = ConvertComponentListToEntity(dto.CompData, testDataId);
                        affectedRows += db.Insertable(componentDataList).ExecuteCommand();
                    var componentDataList =
                        ConvertComponentListToEntity(dto.CompData, testDataId);
                    affectedRows += db.Insertable(componentDataList)
                        .ExecuteCommand();
                    }
                    return affectedRows;
@@ -138,10 +139,14 @@
                var totalCount = 0;
                var data = db.Queryable<MesPcbTestData>()
                    .WhereIF(StringUtil.IsNotNullOrEmpty(dataType), x => x.DataType == dataType)
                    .WhereIF(StringUtil.IsNotNullOrEmpty(deviceName), x => x.DeviceName.Contains(deviceName))
                    .WhereIF(StringUtil.IsNotNullOrEmpty(pcbSn), x => x.PcbSn.Contains(pcbSn))
                    .WhereIF(startTime.HasValue, x => x.PcbTestTime >= startTime.Value)
                .WhereIF(StringUtil.IsNotNullOrEmpty(dataType),
                    x => x.DataType == dataType)
                .WhereIF(StringUtil.IsNotNullOrEmpty(deviceName),
                    x => x.DeviceName.Contains(deviceName))
                .WhereIF(StringUtil.IsNotNullOrEmpty(pcbSn),
                    x => x.PcbSn.Contains(pcbSn))
                .WhereIF(startTime.HasValue,
                    x => x.PcbTestTime >= startTime.Value)
                    .WhereIF(endTime.HasValue, x => x.PcbTestTime <= endTime.Value)
                    .OrderBy(x => x.PcbTestTime, OrderByType.Desc)
                    .ToPageList(pageIndex, pageSize, ref totalCount);
@@ -159,7 +164,8 @@
        /// </summary>
        /// <param name="testDataId">测试数据ID</param>
        /// <returns>器件数据列表</returns>
        public List<MesPcbComponentData> GetComponentDataByTestDataId(decimal testDataId)
    public List<MesPcbComponentData> GetComponentDataByTestDataId(
        decimal testDataId)
        {
            try
            {
@@ -236,7 +242,8 @@
        /// <param name="startTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <returns>统计数据</returns>
        public dynamic GetTestStatistics(string dataType = null, string deviceName = null,
    public dynamic GetTestStatistics(string dataType = null,
        string deviceName = null,
            DateTime? startTime = null, DateTime? endTime = null)
        {
            try
@@ -244,18 +251,23 @@
                var db = SqlSugarHelper.GetInstance();
                
                var statistics = db.Queryable<MesPcbTestData>()
                    .WhereIF(StringUtil.IsNotNullOrEmpty(dataType), x => x.DataType == dataType)
                    .WhereIF(StringUtil.IsNotNullOrEmpty(deviceName), x => x.DeviceName == deviceName)
                    .WhereIF(startTime.HasValue, x => x.PcbTestTime >= startTime.Value)
                .WhereIF(StringUtil.IsNotNullOrEmpty(dataType),
                    x => x.DataType == dataType)
                .WhereIF(StringUtil.IsNotNullOrEmpty(deviceName),
                    x => x.DeviceName == deviceName)
                .WhereIF(startTime.HasValue,
                    x => x.PcbTestTime >= startTime.Value)
                    .WhereIF(endTime.HasValue, x => x.PcbTestTime <= endTime.Value)
                    .GroupBy(x => new { x.DataType, x.DeviceName })
                    .Select(x => new
                    {
                        DataType = x.DataType,
                        DeviceName = x.DeviceName,
                    x.DataType,
                    x.DeviceName,
                        TotalCount = SqlFunc.AggregateCount(x.Id),
                        PassCount = SqlFunc.AggregateCount(SqlFunc.IIF(x.PcbFinalResult == "PASS", x.Id, 0)),
                        FailCount = SqlFunc.AggregateCount(SqlFunc.IIF(x.PcbFinalResult == "FAIL", x.Id, 0)),
                    PassCount = SqlFunc.AggregateCount(
                        SqlFunc.IIF(x.PcbFinalResult == "PASS", x.Id, 0)),
                    FailCount = SqlFunc.AggregateCount(
                        SqlFunc.IIF(x.PcbFinalResult == "FAIL", x.Id, 0)),
                        AvgCycleTime = SqlFunc.AggregateAvg(x.PcbCycleTime)
                    })
                    .ToList();
@@ -283,8 +295,9 @@
                PcbSn = dto.PcbSn,
                PcbTrackLine = dto.PcbTrackLine,
                PcbBoardSide = dto.PcbBoardSide,
                PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime) ?
                    DateTime.Parse(dto.PcbTestTime) : null,
            PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime)
                ? DateTime.Parse(dto.PcbTestTime)
                : null,
                PcbCycleTime = (decimal?)dto.PcbCycleTime,
                PcbProjectName = dto.PcbProjectName,
                PcbRobotResult = dto.PcbRobotResult,
@@ -307,7 +320,8 @@
        /// </summary>
        /// <param name="dto">单板DTO</param>
        /// <returns>实体对象</returns>
        private MesPcbTestData ConvertSingleBoardToEntity(SingleBoardGenerateDto dto)
    private MesPcbTestData ConvertSingleBoardToEntity(
        SingleBoardGenerateDto dto)
        {
            return new MesPcbTestData
            {
@@ -315,8 +329,9 @@
                PcbSn = dto.PcbSn,
                PcbTrackLine = dto.PcbTrackLine,
                PcbBoardSide = dto.PcbBoardSide,
                PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime) ?
                    DateTime.Parse(dto.PcbTestTime) : null,
            PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime)
                ? DateTime.Parse(dto.PcbTestTime)
                : null,
                PcbCycleTime = (decimal?)dto.PcbCycleTime,
                PcbProjectName = dto.PcbProjectName,
                PcbRobotResult = dto.PcbRobotResult,
@@ -343,7 +358,8 @@
        /// <param name="dtoList">器件DTO列表</param>
        /// <param name="testDataId">测试数据ID</param>
        /// <returns>实体列表</returns>
        private List<MesPcbComponentData> ConvertComponentListToEntity(List<ComponentDataDto> dtoList, decimal testDataId)
    private List<MesPcbComponentData> ConvertComponentListToEntity(
        List<ComponentDataDto> dtoList, decimal testDataId)
        {
            return dtoList.Select(dto => new MesPcbComponentData
            {
@@ -362,5 +378,4 @@
        }
        #endregion
    }
}