From 19f17b9edbef87e9bd6ce1293191d8e24506f0cd Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Fri, 28 Mar 2025 14:41:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B4=A8=E9=87=8F=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CQMS/Check/CheckControlApproveService.cs | 2 +- .../CQMS/Check/CheckList.aspx.cs | 104 ++++++++- .../CQMS/Check/JointCheckStatistics.aspx.cs | 216 +++++++++++++++--- .../File/Excel/CQMS/质量巡检模板.xls | Bin 14336 -> 17920 bytes .../File/Excel/CQMS/问题统计模板.xls | Bin 14336 -> 17408 bytes .../File/Excel/CQMS/问题统计模板1.xls | Bin 0 -> 14336 bytes 6 files changed, 278 insertions(+), 44 deletions(-) create mode 100644 SGGL/FineUIPro.Web/File/Excel/CQMS/问题统计模板1.xls diff --git a/SGGL/BLL/CQMS/Check/CheckControlApproveService.cs b/SGGL/BLL/CQMS/Check/CheckControlApproveService.cs index 11ff07a6..cb9bc6cb 100644 --- a/SGGL/BLL/CQMS/Check/CheckControlApproveService.cs +++ b/SGGL/BLL/CQMS/Check/CheckControlApproveService.cs @@ -101,7 +101,7 @@ namespace BLL /// 一个质量巡检审批实体 public static Model.Check_CheckControlApprove GetCheckControlApproveByCheckControlId(string CheckControlCode) { - return db.Check_CheckControlApprove.FirstOrDefault(x => x.CheckControlCode == CheckControlCode && x.ApproveType != "S" && x.ApproveDate == null); + return db.Check_CheckControlApprove.FirstOrDefault(x => x.CheckControlCode == CheckControlCode && x.ApproveType != "S" && x.ApproveDate != null); } /// /// 修改质量巡检审批信息 diff --git a/SGGL/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs index 31583aec..1f70069a 100644 --- a/SGGL/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Check/CheckList.aspx.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using NPOI.SS.UserModel; namespace FineUIPro.Web.CQMS.Check { @@ -693,6 +694,7 @@ namespace FineUIPro.Web.CQMS.Check } if (lists != null) { + lists = lists.OrderByDescending(x => x.CheckDate); string projectName = BLL.ProjectService.GetShortNameByProjectId(this.CurrUser.LoginProjectId); newUrl = uploadfilepath.Replace("质量巡检模板", "质量巡检(" + projectName + DateTime.Now.ToString("yyyyMMdd") + ")"); if (File.Exists(newUrl)) @@ -729,9 +731,13 @@ namespace FineUIPro.Web.CQMS.Check // 第二步:创建新数据行 row = sheet.CreateRow(i); // 添加数据 + // cell = row.CreateCell(0); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.DocCode);//质量巡检编号 + cell = row.CreateCell(0); cell.CellStyle = cellStyle; - cell.SetCellValue(item.DocCode);//质量巡检编号 + cell.SetCellValue(item.CheckDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.CheckDate) : "");//检查日期 cell = row.CreateCell(1); cell.CellStyle = cellStyle; @@ -785,23 +791,99 @@ namespace FineUIPro.Web.CQMS.Check } cell.SetCellValue(t);//问题类别 - cell = row.CreateCell(5); - cell.CellStyle = cellStyle; - cell.SetCellValue(item.CheckSite);//部位 + + // cell = row.CreateCell(5); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.CheckSite);//整改前照片 + //整改前照片 + var attachFile = Funs.DB.AttachFile + .Where(p => p.MenuId == BLL.Const.CheckListMenuId && p.ToKeyId == item.CheckControlCode) + .FirstOrDefault(); + if (attachFile != null) + { + var photoesUrl = attachFile.AttachUrl; + if (photoesUrl != null) + { + string[] arrUrl = photoesUrl.Split(','); + sheet.SetColumnWidth(5, 30 * 256); + row.Height = (short)(90 * 20 * arrUrl.Length); + foreach (string url in arrUrl) + { + var oneUrl = Server.MapPath("~/") + url; + byte[] bytes = System.IO.File.ReadAllBytes(oneUrl); + int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG); - cell = row.CreateCell(6); - cell.CellStyle = cellStyle; - cell.SetCellValue(item.CheckDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.CheckDate) : "");//巡检日期 + // 第三步:创建画部 + IDrawing patriarch = sheet.CreateDrawingPatriarch(); + // 第四步:设置锚点 + int rowline = 1; // y方向 + // 参数说明:(在起始单元格的X坐标0-1023,Y的坐标0-255,在终止单元格的X坐标0-1023,Y的坐标0-255,起始单元格列数,行数,终止单元格列数,行数) + IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 5, i, 6, i + 1); + // 第五步:把图片插到相应的位置+1 + IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); + //就取第一张,如果后期想取全部 那把下面这个跳出语句去掉 + // break; + } + } + } + + //整改后照片 + var attachFile1 = Funs.DB.AttachFile.Where(p => + p.MenuId == BLL.Const.CheckListMenuId && p.ToKeyId == item.CheckControlCode + "r") + .FirstOrDefault(); + if (attachFile1 != null) + { + var photoesUrl1 = attachFile1.AttachUrl; + if (photoesUrl1 != null) + { + string[] arrUrl = photoesUrl1.Split(','); + sheet.SetColumnWidth(6, 30 * 256); + row.Height = (short)(90 * 20 * arrUrl.Length); + foreach (string url in arrUrl) + { + var oneUrl = Server.MapPath("~/") + url; + byte[] bytes = System.IO.File.ReadAllBytes(oneUrl); + int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG); + + // 第三步:创建画部 + IDrawing patriarch = sheet.CreateDrawingPatriarch(); + // 第四步:设置锚点 + int rowline = 1; // y方向 + // 参数说明:(在起始单元格的X坐标0-1023,Y的坐标0-255,在终止单元格的X坐标0-1023,Y的坐标0-255,起始单元格列数,行数,终止单元格列数,行数) + IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 6, i, 7, i + 1); + // 第五步:把图片插到相应的位置+1 + IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); + //就取第一张,如果后期想取全部 那把下面这个跳出语句去掉 + // break; + } + } + } + + // cell = row.CreateCell(6); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.CheckSite);//整改后照片 + + // cell = row.CreateCell(5); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.CheckSite);//部位 cell = row.CreateCell(7); cell.CellStyle = cellStyle; + cell.SetCellValue(item.QuestionDef);//问题描述 + + cell = row.CreateCell(8); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.RectifyOpinion);//整改意见 + + cell = row.CreateCell(9); + cell.CellStyle = cellStyle; cell.SetCellValue(item.LimitDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.LimitDate) : "");//整改日期 - cell = row.CreateCell(8); + cell = row.CreateCell(10); cell.CellStyle = cellStyle; cell.SetCellValue(BLL.UserService.GetUserNameByUserId(item.CheckMan));//检查人 - cell = row.CreateCell(9); + cell = row.CreateCell(11); cell.CellStyle = cellStyle; string s = string.Empty; if (!string.IsNullOrEmpty(item.State)) @@ -810,7 +892,7 @@ namespace FineUIPro.Web.CQMS.Check } cell.SetCellValue(s);//审批状态 - cell = row.CreateCell(10); + cell = row.CreateCell(12); cell.CellStyle = cellStyle; string man = string.Empty; if (!string.IsNullOrEmpty(item.CheckControlCode)) @@ -819,7 +901,7 @@ namespace FineUIPro.Web.CQMS.Check } cell.SetCellValue(man);//办理人 - cell = row.CreateCell(11); + cell = row.CreateCell(13); cell.CellStyle = cellStyle; string status = string.Empty; if (!string.IsNullOrEmpty(item.CheckControlCode)) diff --git a/SGGL/FineUIPro.Web/CQMS/Check/JointCheckStatistics.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Check/JointCheckStatistics.aspx.cs index cbbd7671..2552265f 100644 --- a/SGGL/FineUIPro.Web/CQMS/Check/JointCheckStatistics.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Check/JointCheckStatistics.aspx.cs @@ -488,58 +488,210 @@ namespace FineUIPro.Web.CQMS.Check NPOI.SS.UserModel.IRow row = sheet.GetRow(0); NPOI.SS.UserModel.ICell cell; int i = 2; - foreach (var item in lists) + + // 将 lists 转换为 DataTable + DataTable tb = LINQToDataTable(lists); + // 创建一个列表来存储CheckStatisc对象 + var checkStatiscList = new List(); + if (this.rbType.SelectedValue == "0") + { + // 使用LINQ对DataTable进行分组统计----年份 + var query = from row1 in tb.AsEnumerable() + let checkDate = row1.Field("CheckDate") + let state = row1.Field("OK") + group row1 by new { checkDate.Year, state } + into g + select new + { + Year = g.Key.Year, + State = g.Key.state, + Count = g.Count() + }; + // 计算每个年份的总记录数 + var yearlyTotals = query.GroupBy(q => q.Year).ToDictionary(g => g.Key, g => g.Sum(q => q.Count)); + + // 创建一个包含年度总数和不同State计数的结果集 + var result = query.GroupBy(q => q.Year).Select(g => new + { + Year = g.Key, + YearlyTotal = yearlyTotals[g.Key], + CompleteNumber = g.Where(q => q.State == 1).Sum(q => q.Count), + NCompleteNumber = g.Where(q => q.State == 0).Sum(q => q.Count) + }).ToList(); + // 遍历结果集并创建CheckStatisc对象 + foreach (var item in result) + { + var checkStatisc = new CheckStatisc + { + TypeName = item.Year.ToString(), + AllNumber = item.YearlyTotal, + CompleteNumber = item.CompleteNumber, + NCompleteNumber = item.NCompleteNumber, + Probability = ((double)item.CompleteNumber / item.YearlyTotal * 100).ToString("F2") + "%" + }; + + checkStatiscList.Add(checkStatisc); + } + } + else if (this.rbType.SelectedValue == "1") + { + // 使用LINQ对DataTable进行分组统计----年月 + var queryByMonth = from row1 in tb.AsEnumerable() + let checkDate = row1.Field("CheckDate") + let state = row1.Field("OK") + group row1 by new { checkDate.Year, checkDate.Month, state } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + State = g.Key.state, + Count = g.Count() + }; + + // 计算每个月的总记录数 + var monthlyTotals = queryByMonth.GroupBy(q => new { q.Year, q.Month }).ToDictionary( + g => new { g.Key.Year, g.Key.Month }, + g => g.Sum(q => q.Count)); + + // 创建一个包含月度总数和不同State计数的结果集 + var resultByMonth = queryByMonth.GroupBy(q => new { q.Year, q.Month }).Select(g => new + { + Year = g.Key.Year, + Month = g.Key.Month, + MonthlyTotal = monthlyTotals[g.Key], + CompleteNumber = g.Where(q => q.State == 1).Sum(q => q.Count), + NCompleteNumber = g.Where(q => q.State == 0).Sum(q => q.Count) + }).ToList(); + + // 遍历结果集并创建CheckStatisc对象 + foreach (var item in resultByMonth) + { + var checkStatisc = new CheckStatisc + { + TypeName = $"{item.Year}年{item.Month:D2}月", + AllNumber = item.MonthlyTotal, + CompleteNumber = item.CompleteNumber, + NCompleteNumber = item.NCompleteNumber, + Probability = ((double)item.CompleteNumber / item.MonthlyTotal * 100).ToString("F2") + "%" + }; + + checkStatiscList.Add(checkStatisc); + } + } + else if (this.rbType.SelectedValue == "2") + { + // 使用LINQ对DataTable进行分组统计----专业名称 + var queryByProfessionalName = from row1 in tb.AsEnumerable() + let professionalName = row1.Field("ProfessionalName") + let state = row1.Field("OK") + group row1 by professionalName + into g + select new + { + ProfessionalName = g.Key, + TotalCount = g.Count(), + CompleteCount = g.Count(q => q.Field("OK") == 1), + IncompleteCount = g.Count(q => q.Field("OK") != 0) + }; + + // 遍历结果集并创建CheckStatisc对象 + foreach (var item in queryByProfessionalName) + { + var checkStatisc = new CheckStatisc + { + TypeName = item.ProfessionalName, + AllNumber = item.TotalCount, + CompleteNumber = item.CompleteCount, + NCompleteNumber = item.IncompleteCount, + Probability = ((double)item.CompleteCount / item.TotalCount * 100).ToString("F2") + "%" + }; + + checkStatiscList.Add(checkStatisc); + } + } + checkStatiscList = checkStatiscList.OrderBy(cs => cs.TypeName).ToList(); + + foreach (var item in checkStatiscList) { // 第二步:创建新数据行 row = sheet.CreateRow(i); // 添加数据 cell = row.CreateCell(0); cell.CellStyle = cellStyle; - cell.SetCellValue(BLL.UnitService.GetUnitNameByUnitId(item.UnitId));//施工单位 + cell.SetCellValue(item.TypeName);//类型名称 cell = row.CreateCell(1); cell.CellStyle = cellStyle; - cell.SetCellValue(item.CheckDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.CheckDate) : ""); + cell.SetCellValue(item.AllNumber);//总数 cell = row.CreateCell(2); cell.CellStyle = cellStyle; - cell.SetCellValue(item.CheckTypeStr); + cell.SetCellValue(item.CompleteNumber);//合格数 cell = row.CreateCell(3); cell.CellStyle = cellStyle; - cell.SetCellValue(item.UnitWorkName); + cell.SetCellValue(item.NCompleteNumber);//不合格数 cell = row.CreateCell(4); cell.CellStyle = cellStyle; - cell.SetCellValue(item.ProfessionalName); - - cell = row.CreateCell(5); - cell.CellStyle = cellStyle; - cell.SetCellValue(item.QuestionTypeStr); - - cell = row.CreateCell(6); - cell.CellStyle = cellStyle; - cell.SetCellValue(item.CheckSite); - - cell = row.CreateCell(7); - cell.CellStyle = cellStyle; - cell.SetCellValue(item.QuestionDef); - - cell = row.CreateCell(8); - cell.CellStyle = cellStyle; - cell.SetCellValue(item.HandleWay); - - cell = row.CreateCell(9); - cell.CellStyle = cellStyle; - string s = string.Empty; - if (!string.IsNullOrEmpty(item.JointCheckDetailId)) - { - s = ConvertState(item.JointCheckDetailId); - } - cell.SetCellValue(s); - + cell.SetCellValue(item.Probability);//合格率 + i++; } + + // foreach (var item in lists) + // { + // // 第二步:创建新数据行 + // row = sheet.CreateRow(i); + // // 添加数据 + // cell = row.CreateCell(0); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(BLL.UnitService.GetUnitNameByUnitId(item.UnitId));//施工单位 + // + // cell = row.CreateCell(1); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.CheckDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.CheckDate) : ""); + // + // cell = row.CreateCell(2); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.CheckTypeStr); + // + // cell = row.CreateCell(3); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.UnitWorkName); + // + // cell = row.CreateCell(4); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.ProfessionalName); + // + // cell = row.CreateCell(5); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.QuestionTypeStr); + // + // cell = row.CreateCell(6); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.CheckSite); + // + // cell = row.CreateCell(7); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.QuestionDef); + // + // cell = row.CreateCell(8); + // cell.CellStyle = cellStyle; + // cell.SetCellValue(item.HandleWay); + // + // cell = row.CreateCell(9); + // cell.CellStyle = cellStyle; + // string s = string.Empty; + // if (!string.IsNullOrEmpty(item.JointCheckDetailId)) + // { + // s = ConvertState(item.JointCheckDetailId); + // } + // cell.SetCellValue(s); + // + // i++; + // } // 第三步:写入文件流 using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) { diff --git a/SGGL/FineUIPro.Web/File/Excel/CQMS/质量巡检模板.xls b/SGGL/FineUIPro.Web/File/Excel/CQMS/质量巡检模板.xls index 7cbb71c6754f20fb178c4e64cc33dfe2649c1e04..65c1744352d414c66e375b4d8f0ed031f665ec50 100644 GIT binary patch literal 17920 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 literal 14336 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 diff --git a/SGGL/FineUIPro.Web/File/Excel/CQMS/问题统计模板.xls b/SGGL/FineUIPro.Web/File/Excel/CQMS/问题统计模板.xls index 7f7d2ca0113fd4d00761e0d000534dcbf0e2f1a9..2c0f63f940cc939d286bd794fd26c3004fb9c93f 100644 GIT binary patch literal 17408 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 Va&y9v=8ou-)1f&%tNW*8{tL~a0K5PI literal 14336 zcmeHN33yaRwm!F)baxU+IvZI?(g}n>Hprf^B`jfalqdm%tRWB}qM(_ugn)!a5r{xo z24qk`bVh{%H$YGz5g3FwjsuSjf*Z&n$ULM$eSk*#{ikj^z21KCKEHXNqm`UnRezmx z>eQ*FtLomreP}$p`StK~

    _6nr>SR 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 G%HpoiCmIMfkqeKY^vJ(g)qM(_ugn)!a5r{xo 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 L5iZy9%MAYmx~&C= literal 0 HcmV?d00001