using Infrastructure.Attribute; using Newtonsoft.Json; using SqlSugar; using System; using System.Linq; using ZR.Model; using ZR.Model.Business; using ZR.Model.Dto; using ZR.Repository; using ZR.Service.Business.IBusinessService; namespace ZR.Service.Business { /// /// 质量BackEnd统计报表业务模块Service业务层处理 /// [AppService( ServiceType = typeof(IQcBackEndServiceStatisticsService), ServiceLifetime = LifeTime.Transient )] public class QcBackEndServiceStatisticsService : BaseService, IQcBackEndServiceStatisticsService { /// /// 查询质量BackEnd统计报表业务模块列表 /// /// /// public PagedInfo GetList(QcBackEndServiceStatisticsQueryDto parm) { var predicate = Expressionable.Create(); var response = Queryable() .Where(predicate.ToExpression()) .ToPage(parm); return response; } /// /// 获取详情 /// /// /// public QcBackEndServiceStatistics GetInfo(string Id) { var response = Queryable().Where(x => x.Id == Id).First(); return response; } /// /// 添加质量BackEnd统计报表业务模块 /// /// /// public QcBackEndServiceStatistics AddQcBackEndServiceStatistics(QcBackEndServiceStatistics model) { return Context.Insertable(model).ExecuteReturnEntity(); } /// /// 修改质量BackEnd统计报表业务模块 /// /// /// public int UpdateQcBackEndServiceStatistics(QcBackEndServiceStatistics model) { //var response = Update(w => w.Id == model.Id, it => new QcBackEndServiceStatistics() //{ // WorkOrder = model.WorkOrder, // PartNumber = model.PartNumber, // Description = model.Description, // Specification = model.Specification, // Color = model.Color, // Team = model.Team, // SiteNo = model.SiteNo, // ComNo = model.ComNo, // IsOnetime = model.IsOnetime, // IsBack = model.IsBack, // IsPolish = model.IsPolish, // IsOut = model.IsOut, // StartTime = model.StartTime, // EndTime = model.EndTime, // Label = model.Label, // RequireNumber = model.RequireNumber, // QualifiedNumber = model.QualifiedNumber, // QualifiedRate = model.QualifiedRate, // DamoNumber = model.DamoNumber, // BaofeiNumber = model.BaofeiNumber, // GroupCode = model.GroupCode, // GroupSort = model.GroupSort, // GroupDefectJson = model.GroupDefectJson, // Type = model.Type, // Status = model.Status, // Remark = model.Remark, // CreatedBy = model.CreatedBy, // CreatedTime = model.CreatedTime, // UpdatedBy = model.UpdatedBy, // UpdatedTime = model.UpdatedTime, //}); //return response; return Update(model, true); } public List GetReviseList(QcBackEndServiceStatisticsQueryDto parm) { var predicate = Expressionable .Create() .AndIF( !string.IsNullOrEmpty(parm.WorkOrder), x => x.WorkOrder.Contains(parm.WorkOrder) ) .AndIF( !string.IsNullOrEmpty(parm.PartNumber), x => x.PartNumber.Contains(parm.PartNumber) ) .AndIF( !string.IsNullOrEmpty(parm.Description), x => x.Description.Contains(parm.Description) ) .AndIF(!string.IsNullOrEmpty(parm.Team), x => x.Team == parm.Team) .AndIF(!string.IsNullOrEmpty(parm.SiteNo), x => x.SiteNo == parm.SiteNo) .AndIF(!string.IsNullOrEmpty(parm.ComNo), x => x.ComNo == parm.ComNo) .AndIF(parm.IsOnetime.HasValue, x => x.IsOnetime == parm.IsOnetime.Value) .AndIF(parm.IsBack.HasValue, x => x.IsBack == parm.IsBack.Value) .AndIF(parm.IsPolish.HasValue, x => x.IsPolish == parm.IsPolish.Value) .AndIF(parm.IsOut.HasValue, x => x.IsOut == parm.IsOut.Value) .AndIF( parm.StartTime.HasValue && parm.EndTime.HasValue, x => x.StartTime >= parm.StartTime.Value && x.StartTime <= parm.EndTime.Value ) .And(x => x.Status == "1") .ToExpression(); var query = Context.Queryable().Where(predicate); var result = query .OrderByIF(parm.StatisticsOrderType == 1, it => it.WorkOrder) .OrderByIF(parm.StatisticsOrderType == 2, it => it.PartNumber) .OrderByIF(parm.StatisticsOrderType == 3, it => it.QualifiedRate, OrderByType.Desc) .OrderByIF(parm.StatisticsOrderType == 4, it => it.StartTime) .OrderBy(it => it.GroupCode) .OrderBy(it => it.GroupSort) .ToList(); List defectList = Context.Queryable().ToList(); var resultList = new List(); foreach (var item in result) { var dto = new QcBackEndServiceStatisticsDto { Id = item.Id, WorkOrder = item.WorkOrder, PartNumber = item.PartNumber, Description = item.Description, Specification = item.Specification, Color = item.Color, Team = item.Team, SiteNo = item.SiteNo, ComNo = item.ComNo, IsOnetime = item.IsOnetime, IsBack = item.IsBack, IsPolish = item.IsPolish, IsOut = item.IsOut, StartTime = item.StartTime, EndTime = item.EndTime, Label = item.Label, RequireNumber = item.RequireNumber, QualifiedNumber = item.QualifiedNumber, QualifiedRate = item.QualifiedRate, PolishNumber = item.PolishNumber, DamoNumber = item.DamoNumber, BaofeiNumber = item.BaofeiNumber, GroupCode = item.GroupCode, GroupSort = item.GroupSort, GroupDefectJson = item.GroupDefectJson, Type = item.Type, Status = item.Status, Remark = item.Remark, CreatedBy = item.CreatedBy, CreatedTime = item.CreatedTime, UpdatedBy = item.UpdatedBy, UpdatedTime = item.UpdatedTime }; // 解析 GroupDefectJson if (!string.IsNullOrEmpty(item.GroupDefectJson)) { try { var defects = JsonConvert.DeserializeObject< List >(item.GroupDefectJson); foreach (var defect in defects) { var baseDefect = defectList.FirstOrDefault(d => d.Code == defect.DefectCode ); if (baseDefect != null) { // 取得第一个和最后一个字符 string code = defect.DefectCode; char firstChar = code[0]; char lastChar = code[code.Length - 1]; // 组合第一个和最后一个字符 string propertyName = $"{firstChar}{lastChar}"; dto.AddDynamicProperty(propertyName, defect.DefectNum); } } } catch (Exception ex) { Console.WriteLine($"Error parsing GroupDefectJson: {ex.Message}"); } } resultList.Add(dto); } return resultList; } } }