| | |
| | | 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> |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | /// </summary> |
| | | /// <param name="testDataId">测试数据ID</param> |
| | | /// <returns>器件数据列表</returns> |
| | | public List<MesPcbComponentData> GetComponentDataByTestDataId(decimal testDataId) |
| | | public List<MesPcbComponentData> GetComponentDataByTestDataId( |
| | | decimal testDataId) |
| | | { |
| | | try |
| | | { |
| | |
| | | /// <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 |
| | |
| | | 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(); |
| | |
| | | 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, |
| | |
| | | /// </summary> |
| | | /// <param name="dto">单板DTO</param> |
| | | /// <returns>实体对象</returns> |
| | | private MesPcbTestData ConvertSingleBoardToEntity(SingleBoardGenerateDto dto) |
| | | private MesPcbTestData ConvertSingleBoardToEntity( |
| | | SingleBoardGenerateDto dto) |
| | | { |
| | | return new MesPcbTestData |
| | | { |
| | |
| | | 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, |
| | |
| | | /// <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 |
| | | { |
| | |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |