质量数据

This commit is contained in:
geh 2025-08-21 17:43:07 +08:00
parent 5fabc33476
commit d8ca6432a2
18 changed files with 4089 additions and 0 deletions

View File

@ -0,0 +1,26 @@
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed])
VALUES (N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'现场质量数据', NULL, N'', 170, N'0', N'Menu_ZHGL', '0', '0', '1');
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed])
VALUES (N'51EA8258-C81D-4C33-B939-769450979D14', N'质量基本信息', NULL, N'ZHGL/CQMSData/CQMSBasicData.aspx', 10, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1');
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed])
VALUES (N'6E1F4EF5-47CA-4DF8-B561-3C98DBD88EA2', N'焊接管理', NULL, N'ZHGL/CQMSData/WeldingData.aspx', 20, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1');
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed])
VALUES (N'C9076E93-29DB-419C-8902-789163C6554A', N'现场质量检查', NULL, N'ZHGL/CQMSData/CQMSCheckData.aspx', 30, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1');
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed])
VALUES (N'64FED633-2436-426B-A230-7C0038E44AD4', N'设备材料计量器具质量文件上报', NULL, N'ZHGL/CQMSData/CQMSEquipAndMachineData.aspx', 40, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1');
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed])
VALUES (N'12E7E1FD-6D8D-41D8-801C-E15B68805213', N'共检点明细', NULL, N'ZHGL/CQMSData/CQMSNoticeDetailsData.aspx', 50, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1');
go

View File

@ -2205,6 +2205,11 @@
<Content Include="WorkBench.aspx" />
<Content Include="Work\ToDoList.aspx" />
<Content Include="ZHDD\ZHDD.aspx" />
<Content Include="ZHGL\CQMSData\CQMSBasicData.aspx" />
<Content Include="ZHGL\CQMSData\CQMSCheckData.aspx" />
<Content Include="ZHGL\CQMSData\CQMSEquipAndMachineData.aspx" />
<Content Include="ZHGL\CQMSData\CQMSNoticeDetailsData.aspx" />
<Content Include="ZHGL\CQMSData\WeldingData.aspx" />
<Content Include="ZHGL\DataIn\AccidentCauseReportBar.aspx" />
<Content Include="ZHGL\DataIn\AccidentCauseReportBarIn.aspx" />
<Content Include="ZHGL\DataIn\AccidentCauseReportImport.aspx" />
@ -18776,6 +18781,41 @@
<Compile Include="ZHDD\ZHDD.aspx.designer.cs">
<DependentUpon>ZHDD.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSBasicData.aspx.cs">
<DependentUpon>CQMSBasicData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSBasicData.aspx.designer.cs">
<DependentUpon>CQMSBasicData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSCheckData.aspx.cs">
<DependentUpon>CQMSCheckData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSCheckData.aspx.designer.cs">
<DependentUpon>CQMSCheckData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSEquipAndMachineData.aspx.cs">
<DependentUpon>CQMSEquipAndMachineData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSEquipAndMachineData.aspx.designer.cs">
<DependentUpon>CQMSEquipAndMachineData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSNoticeDetailsData.aspx.cs">
<DependentUpon>CQMSNoticeDetailsData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSNoticeDetailsData.aspx.designer.cs">
<DependentUpon>CQMSNoticeDetailsData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\WeldingData.aspx.cs">
<DependentUpon>WeldingData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\WeldingData.aspx.designer.cs">
<DependentUpon>WeldingData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\DataIn\AccidentCauseReportBar.aspx.cs">
<DependentUpon>AccidentCauseReportBar.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>

View File

@ -0,0 +1,168 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSBasicData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSBasicData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>质量基本信息</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="质量基本信息" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="五环专业工程师" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="160px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="分包商专业工程师" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="一般施工方案审批" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="危大工程审批情况" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="ITP发布情况" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设计交底(次)" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="图纸会审(次)" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设计变更管理" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="现场质量培训" TextAlign="Center">
<Columns>
<f:RenderField Width="110px" ColumnID="Value15" DataField="Value15"
FieldType="String" HeaderText="本月培训次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Value16" DataField="Value16"
FieldType="String" HeaderText="累计培训次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Value17" DataField="Value17"
FieldType="String" HeaderText="本月培训人数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Value18" DataField="Value18"
FieldType="String" HeaderText="累计培训人数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10" />
<f:ListItem Text="15" Value="15" />
<f:ListItem Text="20" Value="20" />
<f:ListItem Text="25" Value="25" />
<f:ListItem Text="所有行" Value="100000" />
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,521 @@
using BLL;
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSBasicData : PageBase
{
//使用DateTime.Now获取当前日期然后获取该月第一天
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
public Model.SGGLDB db = Funs.DB;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = BaseDataService.GetBeUnderConstruction();
if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
{
list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList();
}
var result = new List<dynamic>();
foreach (var project in list)
{
int value1 = 0; // 五环专业工程师
int value2 = 0; // 分包商专业工程师
int value3 = 0;
int value4 = 0;
int value5 = 0;
int value6 = 0;
int value7 = 0;
int value8 = 0;
int value9 = 0;
int value10 = 0;
int value11 = 0;
int value12 = 0;
int value13 = 0;
int value14 = 0;
int value15 = 0;
int value16 = 0;
int value17 = 0;
int value18 = 0;
//根据项目获取总包单位
var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu =>
pu.ProjectId == project.ProjectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位
if (generalContractorUnit != null)
{
var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser
where x.ProjectId == project.ProjectId && x.UnitId == generalContractorUnit.UnitId &&
x.IsPost == true && x.RoleId.Contains(Const.ZBCNEngineer) //专业工程师
select x).ToList();
//五环专业工程师
value1 = constructionManagerGCs.Count;
}
// 获取分包单位的专业工程师
var subContractorUnits = (from x in Funs.DB.Project_ProjectUnit
where x.ProjectId == project.ProjectId && x.UnitType == Const.ProjectUnitType_2 //分包单位
select x).ToList();
foreach (var unit in subContractorUnits)
{
var subContractorUsers = (from x in Funs.DB.Project_ProjectUser
where x.ProjectId == project.ProjectId && x.UnitId == unit.UnitId &&
x.IsPost == true && x.RoleId.Contains(Const.ZBCNEngineer) //分包商专业工程师
select x).ToList();
value2 += subContractorUsers.Count;
}
#region
var query1 = (from c in db.Comprehensive_GeneralPlanApproval
where c.ProjectId == project.ProjectId
select new
{
c.ApprovalDate,
c.ProjectId,
c.CompileDate
}).ToList();
value3 = query1.Where(x => x.ApprovalDate >= firstDayOfMonth).Count();
value4 = query1.Count();
#endregion
#region
var query2 = (from c in db.Comprehensive_MajorPlanApproval
where c.ProjectId == project.ProjectId
select new
{
c.ApprovalDate,
c.ProjectId,
c.ExpertReviewMan,
c.IsReview,
c.CompileDate
}).ToList();
value5 = query2.Where(x => x.ApprovalDate >= firstDayOfMonth).Count();
value6 = query2.Count();
#endregion
#region ITP发布情况
var query3 = (from c in db.Inspection_Test_Plan
where c.ProjectId == project.ProjectId
select new
{
c.ApprovalDate,
c.ProjectId,
c.CreateDate
}).ToList();
value7 = query3.Where(x => x.CreateDate >= firstDayOfMonth).Count();
value8 = query3.Count();
#endregion
#region
var query4 = (from c in db.Comprehensive_DesignDetails
where c.ProjectId == project.ProjectId
select new
{
c.Status,
c.CompileDate,
c.ProjectId,
}).ToList();
value9 = query4.Where(x => x.CompileDate >= firstDayOfMonth).Count();
value10 = query4.Count();
#endregion
#region
var query5 = (from c in db.Comprehensive_ReviewDrawings
where c.ProjectId == project.ProjectId
select new
{
c.Status,
c.ReviewDate,
c.ProjectId,
}).ToList();
value11 = query5.Where(x => x.ReviewDate >= firstDayOfMonth).Count();
value12 = query5.Count();
#endregion
#region
var query6 = (from c in db.Comprehensive_ReviewDrawings
where c.ProjectId == project.ProjectId
select new
{
c.Status,
c.ReviewDate,
c.ProjectId,
}).ToList();
value13 = query6.Where(x => x.ReviewDate >= firstDayOfMonth).Count();
value14 = query6.Count();
#endregion
#region
var query7 = (from x in Funs.DB.Comprehensive_InspectionPerson
join p in Funs.DB.Base_Project on x.ProjectId equals p.ProjectId into pGroup
from p in pGroup.DefaultIfEmpty()
join u in Funs.DB.Base_Unit on x.UnitId equals u.UnitId into uGroup
from u in uGroup.DefaultIfEmpty()
join y in Funs.DB.SitePerson_Person on x.InspectionPersonId equals y.PersonId into yGroup
from y in yGroup.DefaultIfEmpty()
join m in Funs.DB.Base_WorkPost on y.WorkPostId equals m.WorkPostId into mGroup
from m in mGroup.DefaultIfEmpty()
where p.ProjectId == project.ProjectId && x.IsTrain == true
select new
{
x.ProjectId,
p.ProjectName,
u.UnitId,
u.UnitName,
Name = x.PersonName,
Sex = y.Sex == null ? "" : (y.Sex == "1" ? "男" : "女"),
y.IdentityCard,
WorkPostName = m.WorkPostName == null ? "" : m.WorkPostName,
Phone = y.Telephone,
x.CompileDate
}).ToList();
value17 = query7.Where(x => x.CompileDate >= firstDayOfMonth).Count();
value18 = query7.Count();
#endregion
// 构造动态对象用于绑定到Grid
result.Add(new
{
project.ProjectId,
project.ProjectName,
project.ShortName,
Value1 = value1,
Value2 = value2,
Value3 = value3, // 一般施工方案审批本月
Value4 = value4, // 一般施工方案审批累计
Value5 = value5, // 危大工程审批情况本月
Value6 = value6, // 危大工程审批情况累计
Value7 = value7, // ITP发布情况本月
Value8 = value8, // ITP发布情况累计
Value9 = value9, // 设计交底本月
Value10 = value10, // 设计交底累计
Value11 = value11, // 图纸会审本月
Value12 = value12, // 图纸会审累计
Value13 = value13, // 设计变更管理本月
Value14 = value14, // 设计变更管理累计
Value15 = value15, // 现场质量培训本月培训次数
Value16 = value16, // 现场质量培训累计培训次数
Value17 = value17, // 现场质量培训本月培训人数
Value18 = value18 // 现场质量培训累计培训人数
});
}
var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
Grid1.RecordCount = result.Count;
Grid1.DataSource = pagedResult;
Grid1.DataBind();
JObject summary = new JObject();
summary.Add("ProjectName", "合计");
summary.Add("Value1", pagedResult.Sum(p => p.Value1));
summary.Add("Value2", pagedResult.Sum(p => p.Value2));
summary.Add("Value3", pagedResult.Sum(p => p.Value3));
summary.Add("Value4", pagedResult.Sum(p => p.Value4));
summary.Add("Value5", pagedResult.Sum(p => p.Value5));
summary.Add("Value6", pagedResult.Sum(p => p.Value6));
summary.Add("Value7", pagedResult.Sum(p => p.Value7));
summary.Add("Value8", pagedResult.Sum(p => p.Value8));
summary.Add("Value9", pagedResult.Sum(p => p.Value9));
summary.Add("Value10", pagedResult.Sum(p => p.Value10));
summary.Add("Value11", pagedResult.Sum(p => p.Value11));
summary.Add("Value12", pagedResult.Sum(p => p.Value12));
summary.Add("Value13", pagedResult.Sum(p => p.Value13));
summary.Add("Value14", pagedResult.Sum(p => p.Value14));
summary.Add("Value15", pagedResult.Sum(p => p.Value15));
summary.Add("Value16", pagedResult.Sum(p => p.Value16));
summary.Add("Value17", pagedResult.Sum(p => p.Value17));
summary.Add("Value18", pagedResult.Sum(p => p.Value18));
Grid1.SummaryData = summary;
}
#endregion
#region GV
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("质量基本信息表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
int totalColumns = 0;
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
totalColumns += groupField.Columns.Count;
}
else
{
totalColumns += 1;
}
}
// 第一行表头 - 居中显示
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
string html = row.Values[subColumn.ColumnIndex].ToString();
if (subColumn.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
else
{
// 处理普通列
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = subColumn.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(subColumn, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
else
{
// 处理普通列
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = column.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(column, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSBasicData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,156 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSCheckData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSCheckData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>现场质量检查</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server"/>
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="现场质量检查" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="现场共检点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="共检合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="共检一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="计量器具管理(台套)" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="质量专项检查" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月检查次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计检查次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="NCR管理" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12"
FieldType="String" HeaderText="NCR总数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13"
FieldType="String" HeaderText="本月已整改" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14"
FieldType="String" HeaderText="累计已整改" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value15" DataField="Value15"
FieldType="String" HeaderText="累计完成比例" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10"/>
<f:ListItem Text="15" Value="15"/>
<f:ListItem Text="20" Value="20"/>
<f:ListItem Text="25" Value="25"/>
<f:ListItem Text="所有行" Value="100000"/>
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,477 @@
using BLL;
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSCheckData : PageBase
{
//使用DateTime.Now获取当前日期然后获取该月第一天
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
public Model.SGGLDB db = Funs.DB;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = BaseDataService.GetBeUnderConstruction();
if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
{
list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList();
}
var result = new List<dynamic>();
foreach (var project in list)
{
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
string value5 = "0%";
string value6 = "0%";
int value7 = 0;
int value8 = 0;
int value9 = 0;
int value10 = 0;
int value11 = 0;
int value12 = 0;
int value13 = 0;
int value14 = 0;
string value15 = "0%";
#region
//所有集合
List<Model.View_MonthReport_InspectionManagement> totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", Convert.ToDateTime("2015-01-01"), DateTime.Now, false);
//当期集合
List<Model.View_MonthReport_InspectionManagement> managementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", firstDayOfMonth, DateTime.Now, false);
value1 = managementList.Count();
value2 = totalManagementList.Count();
value3 = managementList.Count(x => x.IsOnceQualified == true);
value4 = totalManagementList.Count(x => x.IsOnceQualified == true);
if (value1 != 0)//被除数不能为零
{
value5 = Math.Round((double)value3 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入
}
if (value2 != 0)//被除数不能为零
{
value6 = Math.Round((double)value4 / (double)value2 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#region
var query = (from c in db.Comprehensive_InspectionMachine
where c.ProjectId == project.ProjectId && c.InspectionType.Equals("计量")
select new
{
c.InspectionDate,
c.UnitsCount,
c.ProjectId,
}).ToList();
value7 = query.Where(x => x.InspectionDate >= firstDayOfMonth).Sum(x => x.UnitsCount ?? 0);
value8 = query.Sum(x => x.UnitsCount ?? 0);
#endregion
#region
var query1 = (from c in db.Check_JointCheck
where c.ProjectId == project.ProjectId
select new
{
c.CheckDate,
c.ProjectId,
c.CheckType
}).ToList();
value9 = query1.Where(x => x.CheckDate >= firstDayOfMonth).Count();
value10 = query1.Count();
#endregion
#region
var query2 = from c in db.Comprehensive_NCRManagement
where c.ProjectId == project.ProjectId
select new
{
c.NCRManagementId,
c.ProjectId,
c.IssuedDate,
c.Status,
c.ImplementationFrontState,
};
var AllList = query2.ToList();
var unitNCRStatic = query2.Where(x => x.IssuedDate >= firstDayOfMonth);
value11 = unitNCRStatic.Count();
value12 = AllList.Count();
value13 = unitNCRStatic.Where(x => x.ImplementationFrontState == "已闭合").Count();
value14 = AllList.Where(x => x.ImplementationFrontState == "已闭合").Count();
if (value12 != 0)//被除数不能为零
{
value15 = Math.Round((double)value14 / (double)value12 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
// 构造动态对象用于绑定到Grid
result.Add(new
{
project.ProjectId,
project.ProjectName,
project.ShortName,
Value1 = value1,
Value2 = value2,
Value3 = value3,
Value4 = value4,
Value5 = value5,
Value6 = value6,
Value7 = value7,
Value8 = value8,
Value9 = value9,
Value10 = value10,
Value11 = value11,
Value12 = value12,
Value13 = value13,
Value14 = value14,
Value15 = value15,
});
}
var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
Grid1.RecordCount = result.Count;
Grid1.DataSource = pagedResult;
Grid1.DataBind();
var Value1Sum = pagedResult.Sum(p => p.Value1);
var Value2Sum = pagedResult.Sum(p => p.Value2);
var Value3Sum = pagedResult.Sum(p => p.Value3);
var Value4Sum = pagedResult.Sum(p => p.Value4);
var Value12Sum = pagedResult.Sum(p => p.Value12);
var Value14Sum = pagedResult.Sum(p => p.Value14);
JObject summary = new JObject();
summary.Add("ProjectName", "合计");
summary.Add("Value1", Value1Sum);
summary.Add("Value2", Value2Sum);
summary.Add("Value3", Value3Sum);
summary.Add("Value4", Value4Sum);
if (Value1Sum != 0)
{
summary.Add("Value5", Math.Round((double)Value3Sum / (double)Value1Sum * 100, 2) + "%");
}
else
{
summary.Add("Value5", "0%");
}
if (Value2Sum != 0)
{
summary.Add("Value6", Math.Round((double)Value4Sum / (double)Value2Sum * 100, 2) + "%");
}
else
{
summary.Add("Value6", "0%");
}
summary.Add("Value7", pagedResult.Sum(p => p.Value7));
summary.Add("Value8", pagedResult.Sum(p => p.Value8));
summary.Add("Value9", pagedResult.Sum(p => p.Value9));
summary.Add("Value10", pagedResult.Sum(p => p.Value10));
summary.Add("Value11", pagedResult.Sum(p => p.Value11));
summary.Add("Value12", Value12Sum);
summary.Add("Value13", pagedResult.Sum(p => p.Value13));
summary.Add("Value14", Value14Sum);
if (Value12Sum != 0)
{
summary.Add("Value15", Math.Round((double)Value14Sum / (double)Value12Sum * 100, 2) + "%");
}
else
{
summary.Add("Value15", "0%");
}
Grid1.SummaryData = summary;
}
#endregion
#region GV
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("现场质量检查表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
int totalColumns = 0;
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
totalColumns += groupField.Columns.Count;
}
else
{
totalColumns += 1;
}
}
// 第一行表头 - 居中显示
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
string html = row.Values[subColumn.ColumnIndex].ToString();
if (subColumn.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
else
{
// 处理普通列
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = subColumn.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(subColumn, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
else
{
// 处理普通列
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = column.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(column, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSCheckData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,134 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSEquipAndMachineData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSEquipAndMachineData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>设备材料计量器具质量文件上报</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server"/>
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="设备材料计量器具质量文件上报" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="设备材料报验" TextAlign="Center">
<Columns>
<f:RenderField Width="140px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月报验批次" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="140px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="本月合格批次" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计报验批次" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="累计合格批次" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计验收合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="计量器具管理(台套)" TextAlign="Center">
<Columns>
<f:RenderField Width="120px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="质量文件管理(数量)" TextAlign="Center">
<Columns>
<f:RenderField Width="120px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月上报" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计上报" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="累计未返回" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10"/>
<f:ListItem Text="15" Value="15"/>
<f:ListItem Text="20" Value="20"/>
<f:ListItem Text="25" Value="25"/>
<f:ListItem Text="所有行" Value="100000"/>
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,438 @@
using BLL;
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSEquipAndMachineData : PageBase
{
//使用DateTime.Now获取当前日期然后获取该月第一天
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
public Model.SGGLDB db = Funs.DB;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = BaseDataService.GetBeUnderConstruction();
if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
{
list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList();
}
var result = new List<dynamic>();
foreach (var project in list)
{
int value1 = 0;
int value2 = 0;
string value3 = "0%";
int value4 = 0;
int value5 = 0;
string value6 = "0%";
int value7 = 0;
int value8 = 0;
int value9 = 0;
int value10 = 0;
int value11 = 0;
#region
var query = (from c in db.Comprehensive_InspectionEquipment
where c.ProjectId == project.ProjectId
select new
{
c.SamplingResult,//1合格 2不合格
c.ProjectId,
c.InspectionDate
}).ToList();
var monethCount = query.Where(x => x.InspectionDate >= firstDayOfMonth);
var AllList = query.ToList();
value1 = monethCount.Count();
value2 = monethCount.Where(x => x.SamplingResult == "1").Count();
if (value1 != 0)
{
value3 = Math.Round((double)value2 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入
}
value4 = AllList.Count();
value5 = AllList.Where(x => x.SamplingResult == "1").Count();
if (value4 != 0)
{
value6 = Math.Round((double)value5 / (double)value4 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#region
var query1 = (from c in db.Comprehensive_InspectionMachine
where c.ProjectId == project.ProjectId && c.InspectionType.Equals("计量")
select new
{
c.InspectionDate,
c.UnitsCount,
c.ProjectId,
}).ToList();
value7 = query1.Where(x => x.InspectionDate >= firstDayOfMonth).Sum(x => x.UnitsCount ?? 0);
value8 = query1.Sum(x => x.UnitsCount ?? 0);
#endregion
#region
var query2 = from c in db.Comprehensive_DataReceivingDoc
where c.ProjectId == project.ProjectId
select new
{
c.ReceiveDate,
c.ProjectId,
c.IsReply,
c.RetrunWuhuangCopies,
};
var AllList2 = query2.Where(x => x.IsReply == true).ToList();
//本月数
var monethCount2 = query2.Where(x => x.IsReply == true && x.ReceiveDate >= firstDayOfMonth);
int totalReturnCount = query2.Where(x => x.IsReply == true && x.RetrunWuhuangCopies != null).Count();//总的已返回数量
var NoBackCount = AllList2.Count() - totalReturnCount;//累计未返回数量
value9 = monethCount2.Count();
value10 = AllList2.Count();
value11 = NoBackCount;
#endregion
// 构造动态对象用于绑定到Grid
result.Add(new
{
project.ProjectId,
project.ProjectName,
project.ShortName,
Value1 = value1,
Value2 = value2,
Value3 = value3,
Value4 = value4,
Value5 = value5,
Value6 = value6,
Value7 = value7,
Value8 = value8,
Value9 = value9,
Value10 = value10,
Value11 = value11,
});
}
var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
Grid1.RecordCount = result.Count;
Grid1.DataSource = pagedResult;
Grid1.DataBind();
var Value1Sum = pagedResult.Sum(p => p.Value1);
var Value2Sum = pagedResult.Sum(p => p.Value2);
var Value4Sum = pagedResult.Sum(p => p.Value4);
var Value5Sum = pagedResult.Sum(p => p.Value5);
JObject summary = new JObject();
summary.Add("ProjectName", "合计");
summary.Add("Value1", Value1Sum);
summary.Add("Value2", Value2Sum);
if (Value1Sum != 0)
{
summary.Add("Value3", Math.Round((double)Value2Sum / (double)Value1Sum * 100, 2) + "%");
}
else
{
summary.Add("Value3", "0%");
}
summary.Add("Value4", Value4Sum);
summary.Add("Value5", Value5Sum);
if (Value4Sum != 0)
{
summary.Add("Value6", Math.Round((double)Value5Sum / (double)Value4Sum * 100, 2) + "%");
}
else
{
summary.Add("Value6", "0%");
}
summary.Add("Value7", pagedResult.Sum(p => p.Value7));
summary.Add("Value8", pagedResult.Sum(p => p.Value8));
summary.Add("Value9", pagedResult.Sum(p => p.Value9));
summary.Add("Value10", pagedResult.Sum(p => p.Value10));
summary.Add("Value11", pagedResult.Sum(p => p.Value11));
Grid1.SummaryData = summary;
}
#endregion
#region GV
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("设备材料计量器具质量文件上报表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
int totalColumns = 0;
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
totalColumns += groupField.Columns.Count;
}
else
{
totalColumns += 1;
}
}
// 第一行表头 - 居中显示
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
string html = row.Values[subColumn.ColumnIndex].ToString();
if (subColumn.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
else
{
// 处理普通列
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = subColumn.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(subColumn, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
else
{
// 处理普通列
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = column.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(column, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSEquipAndMachineData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,262 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSNoticeDetailsData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSNoticeDetailsData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>共检点明细</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server"/>
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="共检点明细" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="土建" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设备" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="电气" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value15" DataField="Value15" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value16" DataField="Value16" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value17" DataField="Value17" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value18" DataField="Value18" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="仪表" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value19" DataField="Value19" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value20" DataField="Value20" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value21" DataField="Value21" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value22" DataField="Value22" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value23" DataField="Value23" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value24" DataField="Value24" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="防腐" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value25" DataField="Value25" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value26" DataField="Value26" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value27" DataField="Value27" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value28" DataField="Value28" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value29" DataField="Value29" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value30" DataField="Value30" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10"/>
<f:ListItem Text="15" Value="15"/>
<f:ListItem Text="20" Value="20"/>
<f:ListItem Text="25" Value="25"/>
<f:ListItem Text="所有行" Value="100000"/>
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,663 @@
using BLL;
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSNoticeDetailsData : PageBase
{
//使用DateTime.Now获取当前日期然后获取该月第一天
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
public Model.SGGLDB db = Funs.DB;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = BaseDataService.GetBeUnderConstruction();
if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
{
list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList();
}
var result = new List<dynamic>();
foreach (var project in list)
{
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
string value5 = "0%";
string value6 = "0%";
int value7 = 0;
int value8 = 0;
int value9 = 0;
int value10 = 0;
string value11 = "0%";
string value12 = "0%";
int value13 = 0;
int value14 = 0;
int value15 = 0;
int value16 = 0;
string value17 = "0%";
string value18 = "0%";
int value19 = 0;
int value20 = 0;
int value21 = 0;
int value22 = 0;
string value23 = "0%";
string value24 = "0%";
int value25 = 0;
int value26 = 0;
int value27 = 0;
int value28 = 0;
string value29 = "0%";
string value30 = "0%";
#region
//专业下所有集合
List<Model.View_MonthReport_InspectionManagement> totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, null, Convert.ToDateTime("2015-01-01"), DateTime.Now, false);
//专业下当期集合
List<Model.View_MonthReport_InspectionManagement> managementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, null, firstDayOfMonth, DateTime.Now, false);
#region
string cNProfessionalId1 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "CV" select x.CNProfessionalId).FirstOrDefault();
//专业下所有集合
var totalManagementList1 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId1);
//专业下当期集合
var managementList1 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId1);
value1 = managementList1.Count();
value2 = totalManagementList1.Count();
value3 = managementList1.Count(x => x.IsOnceQualified == true);
value4 = totalManagementList1.Count(x => x.IsOnceQualified == true);
if (value1 != 0)//被除数不能为零
{
value5 = Math.Round((double)value3 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入
}
if (value2 != 0)//被除数不能为零
{
value6 = Math.Round((double)value4 / (double)value2 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#region
string cNProfessionalId2 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "EQ" select x.CNProfessionalId).FirstOrDefault();
//专业下所有集合
var totalManagementList2 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId2);
//专业下当期集合
var managementList2 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId2);
value7 = managementList2.Count();
value8 = totalManagementList2.Count();
value9 = managementList2.Count(x => x.IsOnceQualified == true);
value10 = totalManagementList2.Count(x => x.IsOnceQualified == true);
if (value7 != 0)//被除数不能为零
{
value11 = Math.Round((double)value9 / (double)value7 * 100, 2) + "%";//保留两位小数、后四舍五入
}
if (value8 != 0)//被除数不能为零
{
value12 = Math.Round((double)value10 / (double)value8 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#region
string cNProfessionalId3 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "EL" select x.CNProfessionalId).FirstOrDefault();
//专业下所有集合
var totalManagementList3 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId3);
//专业下当期集合
var managementList3 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId3);
value13 = managementList3.Count();
value14 = totalManagementList3.Count();
value15 = managementList3.Count(x => x.IsOnceQualified == true);
value16 = totalManagementList3.Count(x => x.IsOnceQualified == true);
if (value13 != 0)//被除数不能为零
{
value17 = Math.Round((double)value15 / (double)value13 * 100, 2) + "%";//保留两位小数、后四舍五入
}
if (value14 != 0)//被除数不能为零
{
value18 = Math.Round((double)value16 / (double)value14 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#region
string cNProfessionalId4 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "IN" select x.CNProfessionalId).FirstOrDefault();
//专业下所有集合
var totalManagementList4 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId4);
//专业下当期集合
var managementList4 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId4);
value19 = managementList4.Count();
value20 = totalManagementList4.Count();
value21 = managementList4.Count(x => x.IsOnceQualified == true);
value22 = totalManagementList4.Count(x => x.IsOnceQualified == true);
if (value19 != 0)//被除数不能为零
{
value23 = Math.Round((double)value21 / (double)value19 * 100, 2) + "%";//保留两位小数、后四舍五入
}
if (value20 != 0)//被除数不能为零
{
value24 = Math.Round((double)value22 / (double)value20 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#region
string cNProfessionalId5 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "AC" select x.CNProfessionalId).FirstOrDefault();
//专业下所有集合
var totalManagementList5 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId5);
//专业下当期集合
var managementList5 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId5);
value25 = managementList5.Count();
value26 = totalManagementList5.Count();
value27 = managementList5.Count(x => x.IsOnceQualified == true);
value28 = totalManagementList5.Count(x => x.IsOnceQualified == true);
if (value25 != 0)//被除数不能为零
{
value29 = Math.Round((double)value27 / (double)value25 * 100, 2) + "%";//保留两位小数、后四舍五入
}
if (value26 != 0)//被除数不能为零
{
value30 = Math.Round((double)value28 / (double)value26 * 100, 2) + "%";//保留两位小数、后四舍五入
}
#endregion
#endregion
// 构造动态对象用于绑定到Grid
result.Add(new
{
project.ProjectId,
project.ProjectName,
project.ShortName,
Value1 = value1,
Value2 = value2,
Value3 = value3,
Value4 = value4,
Value5 = value5,
Value6 = value6,
Value7 = value7,
Value8 = value8,
Value9 = value9,
Value10 = value10,
Value11 = value11,
Value12 = value12,
Value13 = value13,
Value14 = value14,
Value15 = value15,
Value16 = value16,
Value17 = value17,
Value18 = value18,
Value19 = value19,
Value20 = value20,
Value21 = value21,
Value22 = value22,
Value23 = value23,
Value24 = value24,
Value25 = value25,
Value26 = value26,
Value27 = value27,
Value28 = value28,
Value29 = value29,
Value30 = value30
});
}
var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
Grid1.RecordCount = result.Count;
Grid1.DataSource = pagedResult;
Grid1.DataBind();
var Value1Sum = pagedResult.Sum(p => p.Value1);
var Value2Sum = pagedResult.Sum(p => p.Value2);
var Value3Sum = pagedResult.Sum(p => p.Value3);
var Value4Sum = pagedResult.Sum(p => p.Value4);
var Value7Sum = pagedResult.Sum(p => p.Value7);
var Value8Sum = pagedResult.Sum(p => p.Value8);
var Value9Sum = pagedResult.Sum(p => p.Value9);
var Value10Sum = pagedResult.Sum(p => p.Value10);
var Value13Sum = pagedResult.Sum(p => p.Value13);
var Value14Sum = pagedResult.Sum(p => p.Value14);
var Value15Sum = pagedResult.Sum(p => p.Value15);
var Value16Sum = pagedResult.Sum(p => p.Value16);
var Value19Sum = pagedResult.Sum(p => p.Value19);
var Value20Sum = pagedResult.Sum(p => p.Value20);
var Value21Sum = pagedResult.Sum(p => p.Value21);
var Value22Sum = pagedResult.Sum(p => p.Value22);
var Value25Sum = pagedResult.Sum(p => p.Value25);
var Value26Sum = pagedResult.Sum(p => p.Value26);
var Value27Sum = pagedResult.Sum(p => p.Value27);
var Value28Sum = pagedResult.Sum(p => p.Value28);
JObject summary = new JObject();
summary.Add("ProjectName", "合计");
summary.Add("Value1", Value1Sum);
summary.Add("Value2", Value2Sum);
summary.Add("Value3", Value3Sum);
summary.Add("Value4", Value4Sum);
if (Value1Sum != 0)
{
summary.Add("Value5", Math.Round((double)Value3Sum / (double)Value1Sum * 100, 2) + "%");
}
else
{
summary.Add("Value5", "0%");
}
if (Value2Sum != 0)
{
summary.Add("Value6", Math.Round((double)Value4Sum / (double)Value2Sum * 100, 2) + "%");
}
else
{
summary.Add("Value6", "0%");
}
summary.Add("Value7", Value7Sum);
summary.Add("Value8", Value8Sum);
summary.Add("Value9", Value9Sum);
summary.Add("Value10", Value10Sum);
if (Value7Sum != 0)
{
summary.Add("Value11", Math.Round((double)Value9Sum / (double)Value7Sum * 100, 2) + "%");
}
else
{
summary.Add("Value11", "0%");
}
if (Value8Sum != 0)
{
summary.Add("Value12", Math.Round((double)Value10Sum / (double)Value8Sum * 100, 2) + "%");
}
else
{
summary.Add("Value12", "0%");
}
summary.Add("Value13", Value13Sum);
summary.Add("Value14", Value14Sum);
summary.Add("Value15", Value15Sum);
summary.Add("Value16", Value16Sum);
if (Value13Sum != 0)
{
summary.Add("Value17", Math.Round((double)Value15Sum / (double)Value13Sum * 100, 2) + "%");
}
else
{
summary.Add("Value17", "0%");
}
if (Value14Sum != 0)
{
summary.Add("Value18", Math.Round((double)Value16Sum / (double)Value14Sum * 100, 2) + "%");
}
else
{
summary.Add("Value18", "0%");
}
summary.Add("Value19", Value19Sum);
summary.Add("Value20", Value20Sum);
summary.Add("Value21", Value21Sum);
summary.Add("Value22", Value22Sum);
if (Value19Sum != 0)
{
summary.Add("Value23", Math.Round((double)Value21Sum / (double)Value19Sum * 100, 2) + "%");
}
else
{
summary.Add("Value23", "0%");
}
if (Value20Sum != 0)
{
summary.Add("Value24", Math.Round((double)Value22Sum / (double)Value20Sum * 100, 2) + "%");
}
else
{
summary.Add("Value24", "0%");
}
summary.Add("Value25", Value25Sum);
summary.Add("Value26", Value26Sum);
summary.Add("Value27", Value27Sum);
summary.Add("Value28", Value28Sum);
if (Value25Sum != 0)
{
summary.Add("Value29", Math.Round((double)Value27Sum / (double)Value25Sum * 100, 2) + "%");
}
else
{
summary.Add("Value29", "0%");
}
if (Value26Sum != 0)
{
summary.Add("Value30", Math.Round((double)Value28Sum / (double)Value26Sum * 100, 2) + "%");
}
else
{
summary.Add("Value30", "0%");
}
Grid1.SummaryData = summary;
}
#endregion
#region GV
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("共检点明细表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 收集所有列信息,包括嵌套的列
List<GridColumn> flattenedColumns = new List<GridColumn>();
List<int> columnLevels = new List<int>();
int maxLevel = GetFlattenedColumns(grid.Columns, flattenedColumns, columnLevels, 0);
// 生成表头
for (int level = 0; level <= maxLevel; level++)
{
sb.Append("<tr>");
int i = 0;
while (i < flattenedColumns.Count)
{
GridColumn column = flattenedColumns[i];
int columnLevel = columnLevels[i];
if (columnLevel == level)
{
// 计算跨行和跨列数
int rowspan = 1;
int colspan = 1;
if (column is GroupField groupField && groupField.Columns != null && groupField.Columns.Count > 0)
{
// 这是一个分组列,计算它的子列数量
colspan = CountLeafColumns(groupField);
rowspan = 1;
}
else
{
// 这是一个叶子列,需要跨行
rowspan = maxLevel - level + 1;
colspan = 1;
}
string cellValue = column.HeaderText ?? "";
if (rowspan > 1)
{
sb.AppendFormat("<td rowspan=\"{0}\" align=\"center\">{1}</td>", rowspan, cellValue);
}
else
{
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", colspan, cellValue);
}
// 跳过已处理的子列
if (colspan > 1)
{
i += colspan;
}
else
{
i++;
}
}
else if (columnLevel < level && !(column is GroupField))
{
// 已经由rowspan处理的单元格跳过
i++;
}
else
{
i++;
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
List<GridColumn> leafColumns = GetLeafColumns(grid.Columns);
foreach (GridColumn column in leafColumns)
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
List<GridColumn> leafColumns = GetLeafColumns(grid.Columns);
foreach (GridColumn column in leafColumns)
{
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = column.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(column, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
// 获取扁平化的列结构和对应的层级
private int GetFlattenedColumns(GridColumnCollection columns, List<GridColumn> flattenedColumns, List<int> columnLevels, int currentLevel)
{
int maxLevel = currentLevel;
foreach (GridColumn column in columns)
{
flattenedColumns.Add(column);
columnLevels.Add(currentLevel);
if (column is GroupField groupField && groupField.Columns != null)
{
int childLevel = GetFlattenedColumns(groupField.Columns, flattenedColumns, columnLevels, currentLevel + 1);
if (childLevel > maxLevel)
maxLevel = childLevel;
}
}
return maxLevel;
}
// 计算一个分组列下的叶子节点数量
private int CountLeafColumns(GridColumn column)
{
if (column is GroupField groupField && groupField.Columns != null)
{
int count = 0;
foreach (GridColumn subColumn in groupField.Columns)
{
count += CountLeafColumns(subColumn);
}
return count;
}
else
{
return 1;
}
}
// 获取所有叶子节点列
private List<GridColumn> GetLeafColumns(GridColumnCollection columns)
{
List<GridColumn> leafColumns = new List<GridColumn>();
foreach (GridColumn column in columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
leafColumns.AddRange(GetLeafColumns(groupField.Columns));
}
else
{
leafColumns.Add(column);
}
}
return leafColumns;
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSNoticeDetailsData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,154 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WeldingData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.WeldingData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>焊接管理</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="焊接管理" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="管道焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="钢结构焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设备焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="其他焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="PQR/WPS报验" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="无损检测管理" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="本月拍片数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12"
FieldType="String" HeaderText="累计拍片数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13"
FieldType="String" HeaderText="本月一次合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14"
FieldType="String" HeaderText="累计一次合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10" />
<f:ListItem Text="15" Value="15" />
<f:ListItem Text="20" Value="20" />
<f:ListItem Text="25" Value="25" />
<f:ListItem Text="所有行" Value="100000" />
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,424 @@
using BLL;
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class WeldingData : PageBase
{
//使用DateTime.Now获取当前日期然后获取该月第一天
DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
public Model.SGGLDB db = Funs.DB;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = BaseDataService.GetBeUnderConstruction();
if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim()))
{
list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList();
}
var result = new List<dynamic>();
foreach (var project in list)
{
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
int value5 = 0;
int value6 = 0;
int value7 = 0;
int value8 = 0;
int value9 = 0;
int value10 = 0;
int value11 = 0;
int value12 = 0;
string value13 = "0%";
string value14 = "0%";
#region
var query1 = from c in db.Comprehensive_InspectionPerson
join cn in db.Base_CNProfessional on c.CNProfessionalId equals cn.CNProfessionalId into cnJoin
from cn in cnJoin.DefaultIfEmpty()
join p in db.Base_Post on c.PostId equals p.PostId into postJoin
from p in postJoin.DefaultIfEmpty()
where c.ProjectId == project.ProjectId
select new
{
c.InspectionPersonId,
c.ProjectId,
c.PersonName,
c.ApprovalTime,
cn.ProfessionalName,
p.PostName
};
var totalWelderList = query1.ToList();
var welderList = query1.Where(x => x.ApprovalTime >= firstDayOfMonth);
value1 = welderList.Count(x => x.ProfessionalName == "管道" && x.PostName == "焊工");
value2 = totalWelderList.Count(x => x.ProfessionalName == "管道" && x.PostName == "焊工");
value3 = welderList.Count(x => x.ProfessionalName == "土建" && x.PostName == "焊工");
value4 = totalWelderList.Count(x => x.ProfessionalName == "土建" && x.PostName == "焊工");
value5 = welderList.Count(x => x.ProfessionalName == "设备" && x.PostName == "焊工");
value6 = totalWelderList.Count(x => x.ProfessionalName == "设备" && x.PostName == "焊工");
value7 = welderList.Count(x => x.ProfessionalName != "管道" && x.ProfessionalName != "土建" && x.ProfessionalName != "设备" && x.PostName == "焊工");
value8 = totalWelderList.Count(x => x.ProfessionalName != "管道" && x.ProfessionalName != "土建" && x.ProfessionalName != "设备" && x.PostName == "焊工");
#endregion
#region PQR/WPS报验
// var detailsGrid9 = (from x in db.Report_Construction_Plan
// where x.ReportId == ReportId && x.ReType == "5"
// select x).ToList();
#endregion
#region
var query2 = from c in db.ProcessControl_NondestructiveTest_New
where c.ProjectId == project.ProjectId
orderby c.CreateDate descending
select new
{
c.CreateDate,
c.ProjectId,
c.ProfessionalName,
c.MonthQuantity,
c.TotalQuantity,
c.MonthRate,
c.TotalRate
};
if (query2.Count()>0)
{
var data1 = query2.FirstOrDefault(x => x.ProfessionalName == "工艺管道");
var data2 = query2.FirstOrDefault(x => x.ProfessionalName == "地管");
var data3 = query2.FirstOrDefault(x => x.ProfessionalName == "非标");
value11 = (int)((data1?.MonthQuantity ?? 0) + (data2?.MonthQuantity ?? 0) + (data3?.MonthQuantity ?? 0));
value12 = (int)((data1?.TotalQuantity ?? 0) + (data2?.TotalQuantity ?? 0) + (data3?.TotalQuantity ?? 0));
}
#endregion
// 构造动态对象用于绑定到Grid
result.Add(new
{
project.ProjectId,
project.ProjectName,
project.ShortName,
Value1 = value1,// 管道焊工本月
Value2 = value2,// 管道焊工累计
Value3 = value3, // 钢结构焊工本月
Value4 = value4, // 钢结构焊工累计
Value5 = value5, // 设备焊工本月
Value6 = value6, // 设备焊工累计
Value7 = value7, // 其他焊工本月
Value8 = value8, // 其他焊工累计
Value9 = value9, // PQR/WPS报验本月
Value10 = value10, // PQR/WPS报验累计
Value11 = value11, // 本月拍片数
Value12 = value12, // 累计拍片数
Value13 = value13, // 本月一次合格率
Value14 = value14, // 累计一次合格率
});
}
var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList();
Grid1.RecordCount = result.Count;
Grid1.DataSource = pagedResult;
Grid1.DataBind();
JObject summary = new JObject();
summary.Add("ProjectName", "合计");
summary.Add("Value1", pagedResult.Sum(p => p.Value1));
summary.Add("Value2", pagedResult.Sum(p => p.Value2));
summary.Add("Value3", pagedResult.Sum(p => p.Value3));
summary.Add("Value4", pagedResult.Sum(p => p.Value4));
summary.Add("Value5", pagedResult.Sum(p => p.Value5));
summary.Add("Value6", pagedResult.Sum(p => p.Value6));
summary.Add("Value7", pagedResult.Sum(p => p.Value7));
summary.Add("Value8", pagedResult.Sum(p => p.Value8));
summary.Add("Value9", pagedResult.Sum(p => p.Value9));
summary.Add("Value10", pagedResult.Sum(p => p.Value10));
summary.Add("Value11", pagedResult.Sum(p => p.Value11));
summary.Add("Value12", pagedResult.Sum(p => p.Value12));
Grid1.SummaryData = summary;
}
#endregion
#region GV
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("焊接管理表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
int totalColumns = 0;
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
totalColumns += groupField.Columns.Count;
}
else
{
totalColumns += 1;
}
}
// 第一行表头 - 居中显示
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
string html = row.Values[subColumn.ColumnIndex].ToString();
if (subColumn.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
else
{
// 处理普通列
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 处理分组列中的每个子列
foreach (GridColumn subColumn in groupField.Columns)
{
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = subColumn.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(subColumn, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
else
{
// 处理普通列
// 使用反射获取DataField属性值避免编译错误
var dataFieldProperty = column.GetType().GetProperty("DataField");
if (dataFieldProperty != null)
{
string dataField = dataFieldProperty.GetValue(column, null) as string;
if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField))
{
sb.AppendFormat("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class WeldingData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -168,6 +168,7 @@
<Compile Include="Controllers\HSSE\TestingController.cs" />
<Compile Include="Controllers\HSSE\TowerCraneController.cs" />
<Compile Include="Controllers\IDP\IDPController.cs" />
<Compile Include="Controllers\JDGL\SGManPowerController.cs" />
<Compile Include="Controllers\JGZL\JGZLController.cs" />
<Compile Include="Controllers\Person\PersonCheckController.cs" />
<Compile Include="Controllers\CQMS\CheckEquipmentController.cs" />