From ed05efdc17aab076146b134ebe105b6382f221d7 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期四, 10 七月 2025 10:09:29 +0800
Subject: [PATCH] 格式化代码

---
 MES.Service/service/QC/PcbTestDataService.cs |  703 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 359 insertions(+), 344 deletions(-)

diff --git a/MES.Service/service/QC/PcbTestDataService.cs b/MES.Service/service/QC/PcbTestDataService.cs
index 2f70d7b..0f5aa5c 100644
--- a/MES.Service/service/QC/PcbTestDataService.cs
+++ b/MES.Service/service/QC/PcbTestDataService.cs
@@ -1,366 +1,381 @@
-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>
+public class PcbTestDataService
 {
     /// <summary>
-    /// PCB妫�娴嬫暟鎹湇鍔�
+    ///     淇濆瓨鏁存澘妫�娴嬫暟鎹�
     /// </summary>
-    public class PcbTestDataService
+    /// <param name="dto">鏁存澘妫�娴嬫暟鎹瓺TO</param>
+    /// <returns>淇濆瓨缁撴灉</returns>
+    public bool SaveWholeboardData(WholeboardGenerateDto dto)
     {
-        /// <summary>
-        /// 淇濆瓨鏁存澘妫�娴嬫暟鎹�
-        /// </summary>
-        /// <param name="dto">鏁存澘妫�娴嬫暟鎹瓺TO</param>
-        /// <returns>淇濆瓨缁撴灉</returns>
-        public bool SaveWholeboardData(WholeboardGenerateDto dto)
+        try
         {
-            try
+            return SqlSugarHelper.UseTransactionWithOracle(db =>
             {
-                return SqlSugarHelper.UseTransactionWithOracle(db =>
+                var testData = ConvertWholeboardToEntity(dto);
+                testData.CreateTime = DateTime.Now;
+                testData.DataType = "WHOLE";
+
+                var testDataId =
+                    db.Insertable(testData).ExecuteReturnIdentity();
+
+                var affectedRows = 1;
+                if (dto.BoardData != null && dto.BoardData.Count > 0)
                 {
-                    var testData = ConvertWholeboardToEntity(dto);
-                    testData.CreateTime = DateTime.Now;
-                    testData.DataType = "WHOLE";
-
-                    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)
+                    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);
-                                componentDataList.AddRange(componentData);
-                            }
+                            var componentData =
+                                ConvertComponentListToEntity(boardData.CompData,
+                                    testDataId);
+                            componentDataList.AddRange(componentData);
                         }
 
-                        if (componentDataList.Count > 0)
-                        {
-                            affectedRows += db.Insertable(componentDataList).ExecuteCommand();
-                        }
-                    }
+                    if (componentDataList.Count > 0)
+                        affectedRows += db.Insertable(componentDataList)
+                            .ExecuteCommand();
+                }
 
-                    return affectedRows;
-                }) > 0;
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"淇濆瓨鏁存澘妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
-            }
+                return affectedRows;
+            }) > 0;
         }
-
-        /// <summary>
-        /// 淇濆瓨鍗曟澘妫�娴嬫暟鎹�
-        /// </summary>
-        /// <param name="dto">鍗曟澘妫�娴嬫暟鎹瓺TO</param>
-        /// <returns>淇濆瓨缁撴灉</returns>
-        public bool SaveSingleBoardData(SingleBoardGenerateDto dto)
+        catch (Exception ex)
         {
-            try
-            {
-                return SqlSugarHelper.UseTransactionWithOracle(db =>
-                {
-                    var testData = ConvertSingleBoardToEntity(dto);
-                    testData.CreateTime = DateTime.Now;
-                    testData.DataType = "SINGLE";
-
-                    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();
-                    }
-
-                    return affectedRows;
-                }) > 0;
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"淇濆瓨鍗曟澘妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
-            }
+            throw new Exception($"淇濆瓨鏁存澘妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
         }
-
-        /// <summary>
-        /// 鏍规嵁ID鑾峰彇PCB妫�娴嬫暟鎹�
-        /// </summary>
-        /// <param name="id">鏁版嵁ID</param>
-        /// <returns>PCB妫�娴嬫暟鎹�</returns>
-        public MesPcbTestData GetPcbTestDataById(decimal id)
-        {
-            try
-            {
-                var db = SqlSugarHelper.GetInstance();
-                return db.Queryable<MesPcbTestData>()
-                    .Where(x => x.Id == id)
-                    .First();
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"鑾峰彇PCB妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
-            }
-        }
-
-        /// <summary>
-        /// 鏍规嵁鏉′欢鍒嗛〉鏌ヨPCB妫�娴嬫暟鎹�
-        /// </summary>
-        /// <param name="dataType">鏁版嵁绫诲瀷锛圵HOLE/SINGLE锛�</param>
-        /// <param name="deviceName">璁惧鍚嶇О</param>
-        /// <param name="pcbSn">PCB鏉$爜</param>
-        /// <param name="startTime">寮�濮嬫椂闂�</param>
-        /// <param name="endTime">缁撴潫鏃堕棿</param>
-        /// <param name="pageIndex">椤电爜</param>
-        /// <param name="pageSize">椤靛ぇ灏�</param>
-        /// <returns>鍒嗛〉鏁版嵁</returns>
-        public (List<MesPcbTestData> items, int totalCount) GetPcbTestDataPage(
-            string dataType = null,
-            string deviceName = null,
-            string pcbSn = null,
-            DateTime? startTime = null,
-            DateTime? endTime = null,
-            int pageIndex = 1,
-            int pageSize = 20)
-        {
-            try
-            {
-                var db = SqlSugarHelper.GetInstance();
-                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(endTime.HasValue, x => x.PcbTestTime <= endTime.Value)
-                    .OrderBy(x => x.PcbTestTime, OrderByType.Desc)
-                    .ToPageList(pageIndex, pageSize, ref totalCount);
-
-                return (data, totalCount);
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"鏌ヨPCB妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
-            }
-        }
-
-        /// <summary>
-        /// 鏍规嵁娴嬭瘯鏁版嵁ID鑾峰彇鍣ㄤ欢鏁版嵁
-        /// </summary>
-        /// <param name="testDataId">娴嬭瘯鏁版嵁ID</param>
-        /// <returns>鍣ㄤ欢鏁版嵁鍒楄〃</returns>
-        public List<MesPcbComponentData> GetComponentDataByTestDataId(decimal testDataId)
-        {
-            try
-            {
-                var db = SqlSugarHelper.GetInstance();
-                return db.Queryable<MesPcbComponentData>()
-                    .Where(x => x.TestDataId == testDataId)
-                    .OrderBy(x => x.CompDesignator)
-                    .ToList();
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"鑾峰彇鍣ㄤ欢鏁版嵁澶辫触: {ex.Message}", ex);
-            }
-        }
-
-        /// <summary>
-        /// 鏍规嵁PCB鏉$爜鑾峰彇妫�娴嬫暟鎹�
-        /// </summary>
-        /// <param name="pcbSn">PCB鏉$爜</param>
-        /// <returns>妫�娴嬫暟鎹垪琛�</returns>
-        public List<MesPcbTestData> GetPcbTestDataByPcbSn(string pcbSn)
-        {
-            try
-            {
-                var db = SqlSugarHelper.GetInstance();
-                return db.Queryable<MesPcbTestData>()
-                    .Where(x => x.PcbSn == pcbSn)
-                    .OrderBy(x => x.PcbTestTime, OrderByType.Desc)
-                    .ToList();
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"鏍规嵁PCB鏉$爜鑾峰彇妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
-            }
-        }
-
-        /// <summary>
-        /// 鍒犻櫎PCB妫�娴嬫暟鎹紙绾ц仈鍒犻櫎鍣ㄤ欢鏁版嵁锛�
-        /// </summary>
-        /// <param name="id">鏁版嵁ID</param>
-        /// <returns>鍒犻櫎缁撴灉</returns>
-        public bool DeletePcbTestData(decimal id)
-        {
-            try
-            {
-                return SqlSugarHelper.UseTransactionWithOracle(db =>
-                {
-                    var affectedRows = 0;
-                    
-                    // 鍏堝垹闄ゅ櫒浠舵暟鎹�
-                    affectedRows += db.Deleteable<MesPcbComponentData>()
-                        .Where(x => x.TestDataId == id)
-                        .ExecuteCommand();
-                    
-                    // 鍐嶅垹闄や富鏁版嵁
-                    affectedRows += db.Deleteable<MesPcbTestData>()
-                        .Where(x => x.Id == id)
-                        .ExecuteCommand();
-
-                    return affectedRows;
-                }) > 0;
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"鍒犻櫎PCB妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇妫�娴嬬粺璁℃暟鎹�
-        /// </summary>
-        /// <param name="dataType">鏁版嵁绫诲瀷</param>
-        /// <param name="deviceName">璁惧鍚嶇О</param>
-        /// <param name="startTime">寮�濮嬫椂闂�</param>
-        /// <param name="endTime">缁撴潫鏃堕棿</param>
-        /// <returns>缁熻鏁版嵁</returns>
-        public dynamic GetTestStatistics(string dataType = null, string deviceName = null, 
-            DateTime? startTime = null, DateTime? endTime = null)
-        {
-            try
-            {
-                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(endTime.HasValue, x => x.PcbTestTime <= endTime.Value)
-                    .GroupBy(x => new { x.DataType, x.DeviceName })
-                    .Select(x => new
-                    {
-                        DataType = x.DataType,
-                        DeviceName = 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)),
-                        AvgCycleTime = SqlFunc.AggregateAvg(x.PcbCycleTime)
-                    })
-                    .ToList();
-
-                return statistics;
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"鑾峰彇妫�娴嬬粺璁℃暟鎹け璐�: {ex.Message}", ex);
-            }
-        }
-
-        #region 绉佹湁鏂规硶 - DTO杞崲
-
-        /// <summary>
-        /// 灏嗘暣鏉緿TO杞崲涓哄疄浣�
-        /// </summary>
-        /// <param name="dto">鏁存澘DTO</param>
-        /// <returns>瀹炰綋瀵硅薄</returns>
-        private MesPcbTestData ConvertWholeboardToEntity(WholeboardGenerateDto dto)
-        {
-            return new MesPcbTestData
-            {
-                DeviceName = dto.DeviceName,
-                PcbSn = dto.PcbSn,
-                PcbTrackLine = dto.PcbTrackLine,
-                PcbBoardSide = dto.PcbBoardSide,
-                PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime) ? 
-                    DateTime.Parse(dto.PcbTestTime) : null,
-                PcbCycleTime = (decimal?)dto.PcbCycleTime,
-                PcbProjectName = dto.PcbProjectName,
-                PcbRobotResult = dto.PcbRobotResult,
-                PcbUserResult = dto.PcbUserResult,
-                PcbFinalResult = dto.PcbFinalResult,
-                PcbRepairUser = dto.PcbRepairUser,
-                PcbBoardNumber = dto.PcbBoardNumber,
-                PcbBoardRobotNgNumber = dto.PcbBoardRobotNgNumber,
-                PcbBoardUserNgNumber = dto.PcbBoardUserNgNumber,
-                PcbBoardRepassNumber = dto.PcbBoardRepassNumber,
-                PcbCompNumber = dto.PcbCompNumber,
-                PcbCompRobotNgNumber = dto.PcbCompRobotNgNumber,
-                PcbCompUserNgNumber = dto.PcbCompUserNgNumber,
-                PcbCompRepassNumber = dto.PcbCompRepassNumber
-            };
-        }
-
-        /// <summary>
-        /// 灏嗗崟鏉緿TO杞崲涓哄疄浣�
-        /// </summary>
-        /// <param name="dto">鍗曟澘DTO</param>
-        /// <returns>瀹炰綋瀵硅薄</returns>
-        private MesPcbTestData ConvertSingleBoardToEntity(SingleBoardGenerateDto dto)
-        {
-            return new MesPcbTestData
-            {
-                DeviceName = dto.DeviceName,
-                PcbSn = dto.PcbSn,
-                PcbTrackLine = dto.PcbTrackLine,
-                PcbBoardSide = dto.PcbBoardSide,
-                PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime) ? 
-                    DateTime.Parse(dto.PcbTestTime) : null,
-                PcbCycleTime = (decimal?)dto.PcbCycleTime,
-                PcbProjectName = dto.PcbProjectName,
-                PcbRobotResult = dto.PcbRobotResult,
-                PcbUserResult = dto.PcbUserResult,
-                PcbFinalResult = dto.PcbFinalResult,
-                PcbRepairUser = dto.PcbRepairUser,
-                PcbBoardNumber = dto.PcbBoardNumber,
-                PcbCompNumber = dto.PcbCompNumber,
-                BoardSn = dto.BoardSn,
-                BoardNo = dto.BoardNo,
-                BoardRobotResult = dto.BoardRobotResult,
-                BoardUserResult = dto.BoardUserResult,
-                BoardFinalResult = dto.BoardFinalResult,
-                BoardCompNumber = dto.BoardCompNumber,
-                BoardCompRobotNgNumber = dto.BoardCompRobotNgNumber,
-                BoardCompUserNgNumber = dto.BoardCompUserNgNumber,
-                BoardCompRepassNumber = dto.BoardCompRepassNumber
-            };
-        }
-
-        /// <summary>
-        /// 灏嗗櫒浠禗TO鍒楄〃杞崲涓哄疄浣撳垪琛�
-        /// </summary>
-        /// <param name="dtoList">鍣ㄤ欢DTO鍒楄〃</param>
-        /// <param name="testDataId">娴嬭瘯鏁版嵁ID</param>
-        /// <returns>瀹炰綋鍒楄〃</returns>
-        private List<MesPcbComponentData> ConvertComponentListToEntity(List<ComponentDataDto> dtoList, decimal testDataId)
-        {
-            return dtoList.Select(dto => new MesPcbComponentData
-            {
-                TestDataId = testDataId,
-                CompDesignator = dto.CompDesignator,
-                CompPart = dto.CompPart,
-                CompPackage = dto.CompPackage,
-                CompType = dto.CompType,
-                CompRobotCode = dto.CompRobotCode,
-                CompRobotResult = dto.CompRobotResult,
-                CompUserCode = dto.CompUserCode,
-                CompUserResult = dto.CompUserResult,
-                CompImage = dto.CompImage,
-                CreateTime = DateTime.Now
-            }).ToList();
-        }
-
-        #endregion
     }
+
+    /// <summary>
+    ///     淇濆瓨鍗曟澘妫�娴嬫暟鎹�
+    /// </summary>
+    /// <param name="dto">鍗曟澘妫�娴嬫暟鎹瓺TO</param>
+    /// <returns>淇濆瓨缁撴灉</returns>
+    public bool SaveSingleBoardData(SingleBoardGenerateDto dto)
+    {
+        try
+        {
+            return SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                var testData = ConvertSingleBoardToEntity(dto);
+                testData.CreateTime = DateTime.Now;
+                testData.DataType = "SINGLE";
+
+                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();
+                }
+
+                return affectedRows;
+            }) > 0;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"淇濆瓨鍗曟澘妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁ID鑾峰彇PCB妫�娴嬫暟鎹�
+    /// </summary>
+    /// <param name="id">鏁版嵁ID</param>
+    /// <returns>PCB妫�娴嬫暟鎹�</returns>
+    public MesPcbTestData GetPcbTestDataById(decimal id)
+    {
+        try
+        {
+            var db = SqlSugarHelper.GetInstance();
+            return db.Queryable<MesPcbTestData>()
+                .Where(x => x.Id == id)
+                .First();
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"鑾峰彇PCB妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁鏉′欢鍒嗛〉鏌ヨPCB妫�娴嬫暟鎹�
+    /// </summary>
+    /// <param name="dataType">鏁版嵁绫诲瀷锛圵HOLE/SINGLE锛�</param>
+    /// <param name="deviceName">璁惧鍚嶇О</param>
+    /// <param name="pcbSn">PCB鏉$爜</param>
+    /// <param name="startTime">寮�濮嬫椂闂�</param>
+    /// <param name="endTime">缁撴潫鏃堕棿</param>
+    /// <param name="pageIndex">椤电爜</param>
+    /// <param name="pageSize">椤靛ぇ灏�</param>
+    /// <returns>鍒嗛〉鏁版嵁</returns>
+    public (List<MesPcbTestData> items, int totalCount) GetPcbTestDataPage(
+        string dataType = null,
+        string deviceName = null,
+        string pcbSn = null,
+        DateTime? startTime = null,
+        DateTime? endTime = null,
+        int pageIndex = 1,
+        int pageSize = 20)
+    {
+        try
+        {
+            var db = SqlSugarHelper.GetInstance();
+            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(endTime.HasValue, x => x.PcbTestTime <= endTime.Value)
+                .OrderBy(x => x.PcbTestTime, OrderByType.Desc)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return (data, totalCount);
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"鏌ヨPCB妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁娴嬭瘯鏁版嵁ID鑾峰彇鍣ㄤ欢鏁版嵁
+    /// </summary>
+    /// <param name="testDataId">娴嬭瘯鏁版嵁ID</param>
+    /// <returns>鍣ㄤ欢鏁版嵁鍒楄〃</returns>
+    public List<MesPcbComponentData> GetComponentDataByTestDataId(
+        decimal testDataId)
+    {
+        try
+        {
+            var db = SqlSugarHelper.GetInstance();
+            return db.Queryable<MesPcbComponentData>()
+                .Where(x => x.TestDataId == testDataId)
+                .OrderBy(x => x.CompDesignator)
+                .ToList();
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"鑾峰彇鍣ㄤ欢鏁版嵁澶辫触: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁PCB鏉$爜鑾峰彇妫�娴嬫暟鎹�
+    /// </summary>
+    /// <param name="pcbSn">PCB鏉$爜</param>
+    /// <returns>妫�娴嬫暟鎹垪琛�</returns>
+    public List<MesPcbTestData> GetPcbTestDataByPcbSn(string pcbSn)
+    {
+        try
+        {
+            var db = SqlSugarHelper.GetInstance();
+            return db.Queryable<MesPcbTestData>()
+                .Where(x => x.PcbSn == pcbSn)
+                .OrderBy(x => x.PcbTestTime, OrderByType.Desc)
+                .ToList();
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"鏍规嵁PCB鏉$爜鑾峰彇妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    ///     鍒犻櫎PCB妫�娴嬫暟鎹紙绾ц仈鍒犻櫎鍣ㄤ欢鏁版嵁锛�
+    /// </summary>
+    /// <param name="id">鏁版嵁ID</param>
+    /// <returns>鍒犻櫎缁撴灉</returns>
+    public bool DeletePcbTestData(decimal id)
+    {
+        try
+        {
+            return SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                var affectedRows = 0;
+
+                // 鍏堝垹闄ゅ櫒浠舵暟鎹�
+                affectedRows += db.Deleteable<MesPcbComponentData>()
+                    .Where(x => x.TestDataId == id)
+                    .ExecuteCommand();
+
+                // 鍐嶅垹闄や富鏁版嵁
+                affectedRows += db.Deleteable<MesPcbTestData>()
+                    .Where(x => x.Id == id)
+                    .ExecuteCommand();
+
+                return affectedRows;
+            }) > 0;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"鍒犻櫎PCB妫�娴嬫暟鎹け璐�: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇妫�娴嬬粺璁℃暟鎹�
+    /// </summary>
+    /// <param name="dataType">鏁版嵁绫诲瀷</param>
+    /// <param name="deviceName">璁惧鍚嶇О</param>
+    /// <param name="startTime">寮�濮嬫椂闂�</param>
+    /// <param name="endTime">缁撴潫鏃堕棿</param>
+    /// <returns>缁熻鏁版嵁</returns>
+    public dynamic GetTestStatistics(string dataType = null,
+        string deviceName = null,
+        DateTime? startTime = null, DateTime? endTime = null)
+    {
+        try
+        {
+            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(endTime.HasValue, x => x.PcbTestTime <= endTime.Value)
+                .GroupBy(x => new { x.DataType, x.DeviceName })
+                .Select(x => new
+                {
+                    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)),
+                    AvgCycleTime = SqlFunc.AggregateAvg(x.PcbCycleTime)
+                })
+                .ToList();
+
+            return statistics;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"鑾峰彇妫�娴嬬粺璁℃暟鎹け璐�: {ex.Message}", ex);
+        }
+    }
+
+    #region 绉佹湁鏂规硶 - DTO杞崲
+
+    /// <summary>
+    ///     灏嗘暣鏉緿TO杞崲涓哄疄浣�
+    /// </summary>
+    /// <param name="dto">鏁存澘DTO</param>
+    /// <returns>瀹炰綋瀵硅薄</returns>
+    private MesPcbTestData ConvertWholeboardToEntity(WholeboardGenerateDto dto)
+    {
+        return new MesPcbTestData
+        {
+            DeviceName = dto.DeviceName,
+            PcbSn = dto.PcbSn,
+            PcbTrackLine = dto.PcbTrackLine,
+            PcbBoardSide = dto.PcbBoardSide,
+            PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime)
+                ? DateTime.Parse(dto.PcbTestTime)
+                : null,
+            PcbCycleTime = (decimal?)dto.PcbCycleTime,
+            PcbProjectName = dto.PcbProjectName,
+            PcbRobotResult = dto.PcbRobotResult,
+            PcbUserResult = dto.PcbUserResult,
+            PcbFinalResult = dto.PcbFinalResult,
+            PcbRepairUser = dto.PcbRepairUser,
+            PcbBoardNumber = dto.PcbBoardNumber,
+            PcbBoardRobotNgNumber = dto.PcbBoardRobotNgNumber,
+            PcbBoardUserNgNumber = dto.PcbBoardUserNgNumber,
+            PcbBoardRepassNumber = dto.PcbBoardRepassNumber,
+            PcbCompNumber = dto.PcbCompNumber,
+            PcbCompRobotNgNumber = dto.PcbCompRobotNgNumber,
+            PcbCompUserNgNumber = dto.PcbCompUserNgNumber,
+            PcbCompRepassNumber = dto.PcbCompRepassNumber
+        };
+    }
+
+    /// <summary>
+    ///     灏嗗崟鏉緿TO杞崲涓哄疄浣�
+    /// </summary>
+    /// <param name="dto">鍗曟澘DTO</param>
+    /// <returns>瀹炰綋瀵硅薄</returns>
+    private MesPcbTestData ConvertSingleBoardToEntity(
+        SingleBoardGenerateDto dto)
+    {
+        return new MesPcbTestData
+        {
+            DeviceName = dto.DeviceName,
+            PcbSn = dto.PcbSn,
+            PcbTrackLine = dto.PcbTrackLine,
+            PcbBoardSide = dto.PcbBoardSide,
+            PcbTestTime = StringUtil.IsNotNullOrEmpty(dto.PcbTestTime)
+                ? DateTime.Parse(dto.PcbTestTime)
+                : null,
+            PcbCycleTime = (decimal?)dto.PcbCycleTime,
+            PcbProjectName = dto.PcbProjectName,
+            PcbRobotResult = dto.PcbRobotResult,
+            PcbUserResult = dto.PcbUserResult,
+            PcbFinalResult = dto.PcbFinalResult,
+            PcbRepairUser = dto.PcbRepairUser,
+            PcbBoardNumber = dto.PcbBoardNumber,
+            PcbCompNumber = dto.PcbCompNumber,
+            BoardSn = dto.BoardSn,
+            BoardNo = dto.BoardNo,
+            BoardRobotResult = dto.BoardRobotResult,
+            BoardUserResult = dto.BoardUserResult,
+            BoardFinalResult = dto.BoardFinalResult,
+            BoardCompNumber = dto.BoardCompNumber,
+            BoardCompRobotNgNumber = dto.BoardCompRobotNgNumber,
+            BoardCompUserNgNumber = dto.BoardCompUserNgNumber,
+            BoardCompRepassNumber = dto.BoardCompRepassNumber
+        };
+    }
+
+    /// <summary>
+    ///     灏嗗櫒浠禗TO鍒楄〃杞崲涓哄疄浣撳垪琛�
+    /// </summary>
+    /// <param name="dtoList">鍣ㄤ欢DTO鍒楄〃</param>
+    /// <param name="testDataId">娴嬭瘯鏁版嵁ID</param>
+    /// <returns>瀹炰綋鍒楄〃</returns>
+    private List<MesPcbComponentData> ConvertComponentListToEntity(
+        List<ComponentDataDto> dtoList, decimal testDataId)
+    {
+        return dtoList.Select(dto => new MesPcbComponentData
+        {
+            TestDataId = testDataId,
+            CompDesignator = dto.CompDesignator,
+            CompPart = dto.CompPart,
+            CompPackage = dto.CompPackage,
+            CompType = dto.CompType,
+            CompRobotCode = dto.CompRobotCode,
+            CompRobotResult = dto.CompRobotResult,
+            CompUserCode = dto.CompUserCode,
+            CompUserResult = dto.CompUserResult,
+            CompImage = dto.CompImage,
+            CreateTime = DateTime.Now
+        }).ToList();
+    }
+
+    #endregion
 }
\ No newline at end of file

--
Gitblit v1.9.3