1HSE不符合项清单和统计功能
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
|
||||||
|
update Sys_Menu
|
||||||
|
set Url='common/mainMenu_HSECheck.aspx'
|
||||||
|
where MenuId='10615676-E53B-4E67-8CD5-7385057A3A82'
|
||||||
|
|
||||||
|
go
|
||||||
|
|
||||||
|
|
||||||
|
--淃커섬:HSE꼇륜북헌데固셕
|
||||||
|
IF NOT EXISTS (SELECT * FROM Sys_Menu WHERE MenuId = '10615676-E53B-4E67-8CD5-7385057ABCDE')
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO dbo.Sys_Menu (MenuId, MenuName,Url, SortIndex, SuperMenu, MenuType, IsOffice, IsEnd, IsUsed)
|
||||||
|
VALUES (N'10615676-E53B-4E67-8CD5-7385057ABCDE', N'HSE꼇륜북헌데固셕', N'common/mainMenu_HSECheck.aspx', 20, N'467A0CB9-737D-4451-965E-869EBC3A4BD6', N'Menu_HSSE', 0,1, 1);
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -31,9 +31,37 @@ namespace BLL
|
|||||||
/// 职业健康危害因素数据导入模板
|
/// 职业健康危害因素数据导入模板
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string HazardFactorOccHealthDataInTemplateUrl = "File\\Excel\\DataIn\\职业健康危害因素数据导入模板.xlsx";
|
public const string HazardFactorOccHealthDataInTemplateUrl = "File\\Excel\\DataIn\\职业健康危害因素数据导入模板.xlsx";
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region HSE不符合项
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// S1安全管理Id
|
||||||
|
/// </summary>
|
||||||
|
public const string SafetyClassifyIdS1 = "c8701e01-14a6-45d3-96bf-96c5dd1acb9d";
|
||||||
|
/// <summary>
|
||||||
|
/// S2施工作业Id
|
||||||
|
/// </summary>
|
||||||
|
public const string SafetyClassifyIdS2 = "db8c5a03-d356-4e6e-bb2e-a4f14ab76c76";
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// N1管控红线Id
|
||||||
|
/// </summary>
|
||||||
|
public const string SafetyNatureIdN1 = "4c03e852-f058-4c33-b879-da4c3abf5a14";
|
||||||
|
/// <summary>
|
||||||
|
/// N2危险作业许可Id
|
||||||
|
/// </summary>
|
||||||
|
public const string SafetyNatureIdN2 = "f78830db-87d5-433c-a04a-72d61eeacef9";
|
||||||
|
/// <summary>
|
||||||
|
/// N3较大隐患Id
|
||||||
|
/// </summary>
|
||||||
|
public const string SafetyNatureIdN3 = "4cd15090-0fb0-4bdf-9a72-3076f90fe5c6";
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 焊条发放回收纪录
|
/// 焊条发放回收纪录
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -155,11 +155,23 @@
|
|||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
<f:RenderField Width="140px" HeaderText="问题分类" ColumnID="ClassifyName" DataField="ClassifyName" SortField="ClassifyName" FieldType="String" TextAlign="Center" HeaderTextAlign="Center">
|
<f:RenderField Width="140px" HeaderText="问题分类" ColumnID="ClassifyName" DataField="ClassifyName" SortField="ClassifyName" FieldType="String" TextAlign="Center" HeaderTextAlign="Center">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
<f:RenderField Width="200px" HeaderText="分类明细" ColumnID="ClassifyItemName" DataField="ClassifyItemName" SortField="ClassifyItemName" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
<%--<f:RenderField Width="200px" HeaderText="分类明细" ColumnID="ClassifyItemName" DataField="ClassifyItemName" SortField="ClassifyItemName" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>--%>
|
||||||
|
<f:RenderField Width="200px" HeaderText="S1安全管理" ColumnID="S1Name" DataField="S1Name" SortField="S1Name" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>
|
||||||
|
<f:RenderField Width="200px" HeaderText="S2施工作业" ColumnID="S2Name" DataField="S2Name" SortField="S2Name" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
<f:RenderField Width="140px" HeaderText="问题性质" ColumnID="NatureName" DataField="NatureName" SortField="NatureName" FieldType="String" TextAlign="Center" HeaderTextAlign="Center">
|
<f:RenderField Width="140px" HeaderText="问题性质" ColumnID="NatureName" DataField="NatureName" SortField="NatureName" FieldType="String" TextAlign="Center" HeaderTextAlign="Center">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
<f:RenderField Width="260px" HeaderText="性质明细" ColumnID="NatureItemContent" DataField="NatureItemContent" SortField="NatureItemContent" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
<%--<f:RenderField Width="260px" HeaderText="性质明细" ColumnID="NatureItemContent" DataField="NatureItemContent" SortField="NatureItemContent" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>--%>
|
||||||
|
<f:RenderField Width="260px" HeaderText="管控红线" ColumnID="N1Content" DataField="N1Content" SortField="N1Content" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>
|
||||||
|
<f:RenderField Width="260px" HeaderText="危险作业许可" ColumnID="N2Content" DataField="N2Content" SortField="N2Content" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>
|
||||||
|
<f:RenderField Width="260px" HeaderText="较大隐患" ColumnID="N3Content" DataField="N3Content" SortField="N3Content" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>
|
||||||
|
<f:RenderField Width="200px" HeaderText="备注" ColumnID="Remark" DataField="Remark" SortField="Remark" FieldType="String" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
|
|
||||||
<%--<f:TemplateField ColumnID="tfImageUrl1" Width="120px" HeaderText="整改前" HeaderTextAlign="Center"
|
<%--<f:TemplateField ColumnID="tfImageUrl1" Width="120px" HeaderText="整改前" HeaderTextAlign="Center"
|
||||||
|
|||||||
@@ -133,14 +133,25 @@ namespace FineUIPro.Web.Check.HSE
|
|||||||
protected DataTable ChecklistData()
|
protected DataTable ChecklistData()
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append("SELECT spc.ClassifyName,s1.ClassifyItemName AS S1Name,s2.ClassifyItemName AS S2Name,spn.NatureName,n1.NatureItemContent AS N1Content,n2.NatureItemContent AS N2Content,n3.NatureItemContent AS N3Content,tba.* ");
|
||||||
|
sb.Append("FROM CheckProblem_Safety AS tba WITH(NOLOCK) ");
|
||||||
|
sb.Append("LEFT JOIN Base_SafetyProblemClassify AS spc ON spc.ClassifyId=tba.ClassifyId ");
|
||||||
|
sb.Append($"LEFT JOIN Base_SafetyProblemClassifyItem AS s1 ON s1.ClassifyItemId=tba.ClassifyItemId and s1.ClassifyId='{Const.SafetyClassifyIdS1}' ");
|
||||||
|
sb.Append($"LEFT JOIN Base_SafetyProblemClassifyItem AS s2 ON s2.ClassifyItemId=tba.ClassifyItemId and s2.ClassifyId='{Const.SafetyClassifyIdS2}' ");
|
||||||
|
sb.Append("LEFT JOIN Base_SafetyProblemNature AS spn ON spn.NatureId=tba.NatureId ");
|
||||||
|
sb.Append($"LEFT JOIN Base_SafetyProblemNatureItem AS n1 ON n1.NatureItemId=tba.NatureItemId and n1.NatureId='{Const.SafetyNatureIdN1}' ");
|
||||||
|
sb.Append($"LEFT JOIN Base_SafetyProblemNatureItem AS n2 ON n2.NatureItemId=tba.NatureItemId and n2.NatureId='{Const.SafetyNatureIdN2}' ");
|
||||||
|
sb.Append($"LEFT JOIN Base_SafetyProblemNatureItem AS n3 ON n3.NatureItemId=tba.NatureItemId and n3.NatureId='{Const.SafetyNatureIdN3}' ");
|
||||||
|
sb.Append("WHERE 1=1 ");
|
||||||
|
|
||||||
|
/*
|
||||||
sb.Append("SELECT spc.ClassifyName,spcItem.ClassifyItemName,spn.NatureName,spnItem.NatureItemContent,tba.* ");
|
sb.Append("SELECT spc.ClassifyName,spcItem.ClassifyItemName,spn.NatureName,spnItem.NatureItemContent,tba.* ");
|
||||||
sb.Append("FROM CheckProblem_Safety AS tba WITH(NOLOCK) ");
|
sb.Append("FROM CheckProblem_Safety AS tba WITH(NOLOCK) ");
|
||||||
sb.Append("LEFT JOIN Base_SafetyProblemClassify AS spc ON spc.ClassifyId=tba.ClassifyId ");
|
sb.Append("LEFT JOIN Base_SafetyProblemClassify AS spc ON spc.ClassifyId=tba.ClassifyId ");
|
||||||
sb.Append("LEFT JOIN Base_SafetyProblemClassifyItem AS spcItem ON spcItem.ClassifyItemId=tba.ClassifyItemId ");
|
sb.Append("LEFT JOIN Base_SafetyProblemClassifyItem AS spcItem ON spcItem.ClassifyItemId=tba.ClassifyItemId ");
|
||||||
sb.Append("LEFT JOIN Base_SafetyProblemNature AS spn ON spn.NatureId=tba.NatureId ");
|
sb.Append("LEFT JOIN Base_SafetyProblemNature AS spn ON spn.NatureId=tba.NatureId ");
|
||||||
sb.Append("LEFT JOIN Base_SafetyProblemNatureItem AS spnItem ON spnItem.NatureItemId=tba.NatureItemId ");
|
sb.Append("LEFT JOIN Base_SafetyProblemNatureItem AS spnItem ON spnItem.NatureItemId=tba.NatureItemId ");
|
||||||
sb.Append("WHERE 1=1 ");
|
sb.Append("WHERE 1=1 ");*/
|
||||||
|
|
||||||
List<SqlParameter> listStr = new List<SqlParameter>();
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
||||||
if (this.CurrUser.UnitId != null && this.CurrUser.UnitId != Const.UnitId_XJYJ && (this.CurrUser.UserId != Const.hfnbdId || this.CurrUser.UserId != Const.sysglyId))
|
if (this.CurrUser.UnitId != null && this.CurrUser.UnitId != Const.UnitId_XJYJ && (this.CurrUser.UserId != Const.hfnbdId || this.CurrUser.UserId != Const.sysglyId))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -326,6 +326,7 @@
|
|||||||
<Content Include="common\lib\world.js" />
|
<Content Include="common\lib\world.js" />
|
||||||
<Content Include="common\mainMenu_FiveStarts.aspx" />
|
<Content Include="common\mainMenu_FiveStarts.aspx" />
|
||||||
<Content Include="common\mainMenu_HJGL2.aspx" />
|
<Content Include="common\mainMenu_HJGL2.aspx" />
|
||||||
|
<Content Include="common\mainMenu_HSECheck.aspx" />
|
||||||
<Content Include="common\mainMenu_Staff.aspx" />
|
<Content Include="common\mainMenu_Staff.aspx" />
|
||||||
<Content Include="common\mainMenu_HSSE2.aspx" />
|
<Content Include="common\mainMenu_HSSE2.aspx" />
|
||||||
<Content Include="common\mainMenu_SubPackManage.aspx" />
|
<Content Include="common\mainMenu_SubPackManage.aspx" />
|
||||||
@@ -8204,6 +8205,13 @@
|
|||||||
<Compile Include="common\mainMenu_HJGL2.aspx.designer.cs">
|
<Compile Include="common\mainMenu_HJGL2.aspx.designer.cs">
|
||||||
<DependentUpon>mainMenu_HJGL2.aspx</DependentUpon>
|
<DependentUpon>mainMenu_HJGL2.aspx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="common\mainMenu_HSECheck.aspx.cs">
|
||||||
|
<DependentUpon>mainMenu_HSECheck.aspx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="common\mainMenu_HSECheck.aspx.designer.cs">
|
||||||
|
<DependentUpon>mainMenu_HSECheck.aspx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="common\mainMenu_Staff.aspx.cs">
|
<Compile Include="common\mainMenu_Staff.aspx.cs">
|
||||||
<DependentUpon>mainMenu_Staff.aspx</DependentUpon>
|
<DependentUpon>mainMenu_Staff.aspx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
|||||||
@@ -0,0 +1,649 @@
|
|||||||
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="mainMenu_HSECheck.aspx.cs" Inherits="FineUIPro.Web.mainMenu_HSECheck" %>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head id="Head1" runat="server">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>首页</title>
|
||||||
|
<link href="../res/index/css/reset.css" rel="stylesheet" />
|
||||||
|
<link href="../res/index/css/home.css" rel="stylesheet" />
|
||||||
|
<link href="../res/index/css/swiper-3.4.2.min.css" rel="stylesheet" />
|
||||||
|
<style type="text/css">
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flexV {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
height: 100%;
|
||||||
|
padding: 15px;
|
||||||
|
/*background-color: #EEEED1;*/
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iteml {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemb {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-wrap {
|
||||||
|
padding: 0;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-wrap:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bw-b-bottom {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bw-b-bottom-up {
|
||||||
|
border-radius: 0;
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bw-item-content {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top .item {
|
||||||
|
}
|
||||||
|
|
||||||
|
.bw-b {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bw-b-bottom-up {
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-wrap {
|
||||||
|
left: auto;
|
||||||
|
right: 15px;
|
||||||
|
top: 5px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab .t-item {
|
||||||
|
width: auto;
|
||||||
|
padding: 5px 10px;
|
||||||
|
color: #363636;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tit-item {
|
||||||
|
padding: 0 10px;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-wrap .tab .t-item {
|
||||||
|
color: #1C1C1C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-item {
|
||||||
|
margin-left: 10px;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip {
|
||||||
|
width: 25px;
|
||||||
|
height: 13px;
|
||||||
|
background-color: #258F76;
|
||||||
|
border-radius: 2px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tip-next {
|
||||||
|
background-color: #4F4F4F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.myTableClass {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
margin: 2px 1px;
|
||||||
|
border-collapse: collapse; /* 设置表格边框合并 */
|
||||||
|
border: 1px solid #BEBEBE;
|
||||||
|
background: #ffffff;
|
||||||
|
color: #8B8989; /* 设置表格文字颜色 */
|
||||||
|
text-align: center; /* 设置表格文字居中 */
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-title {
|
||||||
|
height: 48px;
|
||||||
|
color: #3CB371;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-header {
|
||||||
|
height: 36px;
|
||||||
|
color: #1C86EE;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
td, th {
|
||||||
|
border: 1px solid #BEBEBE;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap flex flexV">
|
||||||
|
<div class="bottom-wrap flex1">
|
||||||
|
<div class="top flex">
|
||||||
|
<div class="item flex1 iteml">
|
||||||
|
<div class="bw-b-bottom">
|
||||||
|
<div class="bw-b-bottom-up">
|
||||||
|
<div class="bw-item-content">
|
||||||
|
<div id="classifyTable" runat="server" style="width: 100%; height: 100%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item flex2 iteml">
|
||||||
|
<div class="bw-b-bottom">
|
||||||
|
<div class="bw-b-bottom-up">
|
||||||
|
<div class="tab-wrap">
|
||||||
|
<div class="tab" data-value="2">
|
||||||
|
<div class="t-item active">本月</div>
|
||||||
|
<div class="spline"></div>
|
||||||
|
<div class="t-item">今年</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bw-item-content">
|
||||||
|
<div id="classifyBarChart" style="width: 100%; height: 100%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bottom-wrap flex1">
|
||||||
|
<div class="top flex">
|
||||||
|
<div class="item flex1 iteml">
|
||||||
|
<div class="bw-b-bottom">
|
||||||
|
<div class="bw-b-bottom-up">
|
||||||
|
<div class="tab-wrap">
|
||||||
|
<div class="tab" data-value="3">
|
||||||
|
<div class="t-item active">本月</div>
|
||||||
|
<div class="spline"></div>
|
||||||
|
<div class="t-item">今年</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bw-item-content">
|
||||||
|
<div id="s1Pie" style="width: 100%; height: 100%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item flex1 iteml">
|
||||||
|
<div class="bw-b-bottom">
|
||||||
|
<div class="bw-b-bottom-up">
|
||||||
|
<div class="tab-wrap">
|
||||||
|
<div class="tab" data-value="4">
|
||||||
|
<div class="t-item active">本月</div>
|
||||||
|
<div class="spline"></div>
|
||||||
|
<div class="t-item">今年</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bw-item-content">
|
||||||
|
<div id="s2Pie" style="width: 100%; height: 100%;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<script type="text/javascript" src="../res/index/js/jquery-3.4.1.min.js"></script>
|
||||||
|
<script type="text/javascript" src="../res/index/js/swiper-3.4.2.jquery.min.js"></script>
|
||||||
|
<script type="text/javascript" src="../res/index/js/echarts.min.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
function category_S1Pie(id, sum, pieData, legdata) {
|
||||||
|
// 基于准备好的dom,初始化echarts实例
|
||||||
|
var myChart = echarts.init(document.getElementById(id))
|
||||||
|
// 指定图表的配置项和数据
|
||||||
|
var option = {
|
||||||
|
title: [{
|
||||||
|
text: '安全管理类统计',
|
||||||
|
left: 'center'
|
||||||
|
}],
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{a} <br/>{b}: {c} ({d}%)'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical',
|
||||||
|
left: 'left',
|
||||||
|
data: legdata,
|
||||||
|
},
|
||||||
|
graphic: {
|
||||||
|
type: "text",
|
||||||
|
left: "36%",
|
||||||
|
top: "52%",
|
||||||
|
style: {
|
||||||
|
text: sum,
|
||||||
|
textAlign: "center",
|
||||||
|
fill: "#000",
|
||||||
|
fontSize: 18,
|
||||||
|
fontWeight: 600
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '安全管理类统计',
|
||||||
|
type: 'pie',
|
||||||
|
radius: '50%',
|
||||||
|
data: pieData,
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
// 使用刚指定的配置项和数据显示图表。
|
||||||
|
myChart.setOption(option);
|
||||||
|
}
|
||||||
|
var s1Pie =<%=S1Pie %>;
|
||||||
|
var sum = s1Pie.stack;
|
||||||
|
var pieData = s1Pie.series[0].pieData;
|
||||||
|
var legend = s1Pie.series[0].dataString;
|
||||||
|
category_S1Pie('s1Pie', sum, pieData, legend);
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function category_S2Pie(id, sum, pieData, legdata) {
|
||||||
|
// 基于准备好的dom,初始化echarts实例
|
||||||
|
var myChart = echarts.init(document.getElementById(id))
|
||||||
|
// 指定图表的配置项和数据
|
||||||
|
var option = {
|
||||||
|
title: [{
|
||||||
|
text: '施工作业类统计',
|
||||||
|
left: 'center'
|
||||||
|
}],
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{a} <br/>{b}: {c} ({d}%)'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical',
|
||||||
|
left: 'left',
|
||||||
|
data: legdata,
|
||||||
|
},
|
||||||
|
graphic: {
|
||||||
|
type: "text",
|
||||||
|
left: "36%",
|
||||||
|
top: "52%",
|
||||||
|
style: {
|
||||||
|
text: sum,
|
||||||
|
textAlign: "center",
|
||||||
|
fill: "#000",
|
||||||
|
fontSize: 18,
|
||||||
|
fontWeight: 600
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '施工作业类统计',
|
||||||
|
type: 'pie',
|
||||||
|
radius: '50%',
|
||||||
|
data: pieData,
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
// 使用刚指定的配置项和数据显示图表。
|
||||||
|
myChart.setOption(option);
|
||||||
|
}
|
||||||
|
var s2Pie =<%=S2Pie %>;
|
||||||
|
var sum = s2Pie.stack;
|
||||||
|
var pieData = s2Pie.series[0].pieData;
|
||||||
|
var legend = s2Pie.series[0].dataString;
|
||||||
|
category_S2Pie('s2Pie', sum, pieData, legend);
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function category_ClassifyBar(id, xArr, data, num) {
|
||||||
|
// 基于准备好的dom,初始化echarts实例
|
||||||
|
var myChart = echarts.init(document.getElementById(id))
|
||||||
|
// 指定图表的配置项和数据
|
||||||
|
var option = {
|
||||||
|
title: {
|
||||||
|
// left:'center',
|
||||||
|
text: '按问题分类统计',
|
||||||
|
textStyle: {
|
||||||
|
color: '#1C1C1C',
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: 700
|
||||||
|
},
|
||||||
|
show: true
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
legend: {
|
||||||
|
left: '80%',
|
||||||
|
show: true,
|
||||||
|
textStyle: {//图例文字的样式
|
||||||
|
color: '#363636',
|
||||||
|
fontSize: 12,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataZoom: [//底部滚动条
|
||||||
|
{
|
||||||
|
type: 'slider',
|
||||||
|
// start: 0,
|
||||||
|
// end: 60
|
||||||
|
maxValueSpan: 10,
|
||||||
|
show: false,//true:显示、false:隐藏
|
||||||
|
xAxisIndex: [0],
|
||||||
|
bottom: 0, height: 10,
|
||||||
|
backgroundColor: 'rgba(0,0,0,0)',
|
||||||
|
borderColor: 'none',
|
||||||
|
brushSelect: false,
|
||||||
|
textStyle: {
|
||||||
|
color: 'rgba(0,0,0,0)'
|
||||||
|
},
|
||||||
|
selectedDataBackground: {
|
||||||
|
areaStyle: {
|
||||||
|
color: 'red',
|
||||||
|
borderWidth: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleStyle: { // 缩放手柄的样式
|
||||||
|
color: "#0a1449"
|
||||||
|
},
|
||||||
|
moveHandleStyle: {
|
||||||
|
color: '#0a1449'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
xAxis: {
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: 'rgba(0,0,0, 0.3)',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
show: true,
|
||||||
|
textStyle: {
|
||||||
|
color: 'rgba(0,0,0, 0.8)'
|
||||||
|
},
|
||||||
|
interval: 0,
|
||||||
|
rotate: -15,
|
||||||
|
formatter: function (value) {
|
||||||
|
var ret = "";//拼接加\n返回的类目项
|
||||||
|
var maxLength = num;//每项显示文字个数
|
||||||
|
var valLength = value.length;//X轴类目项的文字个数
|
||||||
|
var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
|
||||||
|
if (rowN > 1)//如果类目项的文字大于maxLength,
|
||||||
|
{
|
||||||
|
for (var i = 0; i < rowN; i++) {
|
||||||
|
var temp = "";//每次截取的字符串
|
||||||
|
var start = i * maxLength;//开始截取的位置
|
||||||
|
var end = start + maxLength;//结束截取的位置
|
||||||
|
//这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
|
||||||
|
//temp = value.substring(start, end) + "\n";
|
||||||
|
temp = value.substring(start, end) + (i == rowN - 1 ? "" : "\n");
|
||||||
|
ret += temp; //凭借最终的字符串
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
type: 'category',
|
||||||
|
data: xArr,
|
||||||
|
boundaryGap: [0, 0.01],
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
axisTick: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: false,
|
||||||
|
lineStyle: {
|
||||||
|
color: 'rgba(0,0,0, 0.3)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
show: true,
|
||||||
|
textStyle: {
|
||||||
|
color: 'rgba(0,0,0, 0.8)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: data,
|
||||||
|
grid: {
|
||||||
|
top: '20%',
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: 40,
|
||||||
|
containLabel: true,
|
||||||
|
backgroundColor: 'rgba(0,162,233, 0.01)',
|
||||||
|
// borderColor: 'rgba(0,162,233, 1)'
|
||||||
|
},
|
||||||
|
backgroundColor: 'rgba(0,162,233, 0.01)',
|
||||||
|
textStyle: {
|
||||||
|
color: 'rgba(0,0,0, 0.3)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用刚指定的配置项和数据显示图表。
|
||||||
|
myChart.setOption(option)
|
||||||
|
}
|
||||||
|
var classifyBar =<%=ClassifyBar %>;
|
||||||
|
var xArr = classifyBar.categories;
|
||||||
|
var data = [
|
||||||
|
{
|
||||||
|
name: '承包商',
|
||||||
|
type: 'bar',
|
||||||
|
stack: '总量',
|
||||||
|
barWidth: 40,
|
||||||
|
data: classifyBar.series[0].data,
|
||||||
|
label: { //柱体上显示数值
|
||||||
|
show: true,//开启显示
|
||||||
|
position: ['35%', '50%'],//在上方显示
|
||||||
|
textStyle: {//数值样式
|
||||||
|
fontSize: '20px',
|
||||||
|
color: '#363636'
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// 当数值为0时返回空字符串,不显示标签
|
||||||
|
return params.value === 0 ? '' : params.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: { normal: { color: 'rgba(255,0,0, 0.5)' } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '项目部',
|
||||||
|
type: 'bar',
|
||||||
|
stack: '总量',
|
||||||
|
barWidth: 40,
|
||||||
|
data: classifyBar.series[1].data,
|
||||||
|
label: { //柱体上显示数值
|
||||||
|
show: true,//开启显示
|
||||||
|
position: ['35%', '50%'],//在上方显示
|
||||||
|
textStyle: {//数值样式
|
||||||
|
fontSize: '20px',
|
||||||
|
color: '#363636'
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// 当数值为0时返回空字符串,不显示标签
|
||||||
|
return params.value === 0 ? '' : params.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: { normal: { color: 'rgba(0,100,0,0.8)' } }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
category_ClassifyBar('classifyBarChart', xArr, data, classifyBar.xFontNum);
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
$(".tab .t-item").click(function () {
|
||||||
|
var $this = $(this)
|
||||||
|
var index = $this.index()
|
||||||
|
if ($this.hasClass('active') && index == 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var $tab = $this.closest(".tab")
|
||||||
|
var value = $tab.attr("data-value")
|
||||||
|
$tab.find(".t-item").removeClass('active');
|
||||||
|
$this.addClass('active')
|
||||||
|
|
||||||
|
var two =<%=ClassifyBar %>;
|
||||||
|
var two2 =<%=ClassifyBarYear %>;
|
||||||
|
|
||||||
|
var pieS1 =<%=S1Pie %>;
|
||||||
|
var pieS1Year =<%=S1PieYear %>;
|
||||||
|
var pieS2 =<%=S2Pie %>;
|
||||||
|
var pieS2Year =<%=S2PieYear %>;
|
||||||
|
if (value == 2) {
|
||||||
|
var xArr = two.categories;
|
||||||
|
var xFontNum = two.xFontNum;
|
||||||
|
var data = [
|
||||||
|
{
|
||||||
|
name: '承包商',
|
||||||
|
type: 'bar',
|
||||||
|
stack: '总量',
|
||||||
|
barWidth: 40,
|
||||||
|
data: two.series[0].data,
|
||||||
|
label: { //柱体上显示数值
|
||||||
|
show: true,//开启显示
|
||||||
|
position: ['35%', '50%'],//在上方显示
|
||||||
|
textStyle: {//数值样式
|
||||||
|
fontSize: '20px',
|
||||||
|
color: '#363636'
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// 当数值为0时返回空字符串,不显示标签
|
||||||
|
return params.value === 0 ? '' : params.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: { normal: { color: 'rgba(255,0,0, 0.5)' } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '项目部',
|
||||||
|
type: 'bar',
|
||||||
|
stack: '总量',
|
||||||
|
barWidth: 40,
|
||||||
|
data: two.series[1].data,
|
||||||
|
label: { //柱体上显示数值
|
||||||
|
show: true,//开启显示
|
||||||
|
position: ['35%', '50%'],//在上方显示
|
||||||
|
textStyle: {//数值样式
|
||||||
|
fontSize: '20px',
|
||||||
|
color: '#363636'
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// 当数值为0时返回空字符串,不显示标签
|
||||||
|
return params.value === 0 ? '' : params.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: { normal: { color: 'rgba(0,100,0,0.8)' } }
|
||||||
|
}
|
||||||
|
];
|
||||||
|
if (index == 2) {
|
||||||
|
xArr = two2.categories;
|
||||||
|
xFontNum = two2.xFontNum;
|
||||||
|
data = [
|
||||||
|
{
|
||||||
|
name: '承包商',
|
||||||
|
type: 'bar',
|
||||||
|
stack: '总量',
|
||||||
|
barWidth: 40,
|
||||||
|
data: two2.series[0].data,
|
||||||
|
label: { //柱体上显示数值
|
||||||
|
show: true,//开启显示
|
||||||
|
position: ['35%', '50%'],//在上方显示
|
||||||
|
textStyle: {//数值样式
|
||||||
|
fontSize: '20px',
|
||||||
|
color: '#363636'
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// 当数值为0时返回空字符串,不显示标签
|
||||||
|
return params.value === 0 ? '' : params.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: { normal: { color: 'rgba(255,0,0, 0.5)' } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '项目部',
|
||||||
|
type: 'bar',
|
||||||
|
stack: '总量',
|
||||||
|
barWidth: 40,
|
||||||
|
data: two2.series[1].data,
|
||||||
|
label: { //柱体上显示数值
|
||||||
|
show: true,//开启显示
|
||||||
|
position: ['35%', '50%'],//在上方显示
|
||||||
|
textStyle: {//数值样式
|
||||||
|
fontSize: '20px',
|
||||||
|
color: '#363636'
|
||||||
|
},
|
||||||
|
formatter: function (params) {
|
||||||
|
// 当数值为0时返回空字符串,不显示标签
|
||||||
|
return params.value === 0 ? '' : params.value;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: { normal: { color: 'rgba(0,100,0,0.8)' } }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
category_ClassifyBar('classifyBarChart', xArr, data, xFontNum);
|
||||||
|
}
|
||||||
|
if (value == 3) {
|
||||||
|
var sum = pieS1.stack;
|
||||||
|
var pieData = pieS1.series[0].pieData;
|
||||||
|
var legend = pieS1.series[0].dataString;
|
||||||
|
if (index == 2) {
|
||||||
|
sum = pieS1Year.stack;
|
||||||
|
pieData = pieS1Year.series[0].pieData;
|
||||||
|
legend = pieS1Year.series[0].dataString;
|
||||||
|
}
|
||||||
|
category_S1Pie('s1Pie', sum, pieData, legend);
|
||||||
|
}
|
||||||
|
if (value == 4) {
|
||||||
|
var sum = pieS2.stack;
|
||||||
|
var pieData = pieS2.series[0].pieData;
|
||||||
|
var legend = pieS2.series[0].dataString;
|
||||||
|
if (index == 2) {
|
||||||
|
sum = pieS2Year.stack;
|
||||||
|
pieData = pieS2Year.series[0].pieData;
|
||||||
|
legend = pieS2Year.series[0].dataString;
|
||||||
|
}
|
||||||
|
category_S2Pie('s2Pie', sum, pieData, legend);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
@@ -0,0 +1,407 @@
|
|||||||
|
using BLL;
|
||||||
|
using Model;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
|
||||||
|
namespace FineUIPro.Web
|
||||||
|
{
|
||||||
|
public partial class mainMenu_HSECheck : PageBase
|
||||||
|
{
|
||||||
|
#region 定义项
|
||||||
|
/// <summary>
|
||||||
|
/// 项目主键
|
||||||
|
/// </summary>
|
||||||
|
public string ProjectId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (string)ViewState["ProjectId"];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
ViewState["ProjectId"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// HSE不符合项【本年】
|
||||||
|
/// </summary>
|
||||||
|
public static List<Model.CheckProblem_Safety> list = new List<Model.CheckProblem_Safety>();
|
||||||
|
/// <summary>
|
||||||
|
/// HSE不符合项【本月】
|
||||||
|
/// </summary>
|
||||||
|
public static List<Model.CheckProblem_Safety> listMon = new List<Model.CheckProblem_Safety>();
|
||||||
|
/// <summary>
|
||||||
|
/// 问题分类
|
||||||
|
/// </summary>
|
||||||
|
public static List<Model.Base_SafetyProblemClassify> classifys = new List<Model.Base_SafetyProblemClassify>();
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当前时间
|
||||||
|
/// </summary>
|
||||||
|
public static DateTime dateNow = DateTime.Now;
|
||||||
|
public static DateTime dateMon = Convert.ToDateTime($"{dateNow.Year}-{dateNow.Month}-01");
|
||||||
|
public static DateTime dateYear = Convert.ToDateTime($"{dateNow.Year}-01-01");
|
||||||
|
#endregion
|
||||||
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!IsPostBack)
|
||||||
|
{
|
||||||
|
this.ProjectId = this.CurrUser.LoginProjectId;
|
||||||
|
if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.CurrUser.LoginProjectId)
|
||||||
|
{
|
||||||
|
this.ProjectId = Request.Params["projectId"];
|
||||||
|
}
|
||||||
|
|
||||||
|
//var dateNow = DateTime.Now;
|
||||||
|
//var dateMon = Convert.ToDateTime($"{dateNow.Year}-{dateNow.Month}-01");
|
||||||
|
//var dateYear = Convert.ToDateTime($"{dateNow.Year}-01-01");
|
||||||
|
|
||||||
|
Model.CNPCDB db = Funs.DB;
|
||||||
|
list = (from x in db.CheckProblem_Safety where x.CheckDate >= dateYear select x).ToList();
|
||||||
|
listMon = (from x in db.CheckProblem_Safety where x.CheckDate >= dateMon select x).ToList();
|
||||||
|
|
||||||
|
//权限查看范围
|
||||||
|
if (this.CurrUser.UnitId != null && this.CurrUser.UnitId != Const.UnitId_XJYJ && (this.CurrUser.UserId != Const.hfnbdId || this.CurrUser.UserId != Const.sysglyId))
|
||||||
|
{
|
||||||
|
list = list.Where(x => x.UnitId == this.CurrUser.UnitId).ToList();
|
||||||
|
listMon = listMon.Where(x => x.UnitId == this.CurrUser.UnitId).ToList();
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrWhiteSpace(this.ProjectId))
|
||||||
|
{
|
||||||
|
list = list.Where(x => x.ProjectId == this.ProjectId).ToList();
|
||||||
|
listMon = listMon.Where(x => x.ProjectId == this.ProjectId).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
classifys = BLL.SafetyProblemClassifyService.GetClassify();
|
||||||
|
BindGridByClassify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 按问题分类统计
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 按问题分类统计【表格】
|
||||||
|
/// </summary>
|
||||||
|
private void BindGridByClassify()
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.Append("<table id=\"myTable\" class=\"myTableClass\" > ");
|
||||||
|
sb.Append("<thead>");
|
||||||
|
sb.Append("<tr>");
|
||||||
|
sb.Append("<th class=\"tab-title\" colspan=\"7\">按问题分类统计</th>");
|
||||||
|
sb.Append("</tr>");
|
||||||
|
sb.Append("<tr>");
|
||||||
|
sb.Append("<th class=\"tab-header\" rowspan=\"2\">类别</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\" colspan=\"3\">本月</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\" colspan=\"3\">今年</th>");
|
||||||
|
sb.Append("</tr>");
|
||||||
|
sb.Append("<tr>");
|
||||||
|
sb.Append("<th class=\"tab-header\">承包商</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\">项目部</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\">合计</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\">承包商</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\">项目部</th>");
|
||||||
|
sb.Append("<th class=\"tab-header\">合计</th>");
|
||||||
|
sb.Append("</tr>");
|
||||||
|
sb.Append("</thead>");
|
||||||
|
sb.Append("<tbody>");
|
||||||
|
if (list.Any())
|
||||||
|
{
|
||||||
|
foreach (var obj in classifys)
|
||||||
|
{
|
||||||
|
int year = list.Where(x => x.ClassifyId == obj.ClassifyId).Count();
|
||||||
|
int yearC = list.Where(x => x.ClassifyId == obj.ClassifyId && x.UnitType == "承包商").Count();
|
||||||
|
int yearX = list.Where(x => x.ClassifyId == obj.ClassifyId && x.UnitType == "项目部").Count();
|
||||||
|
int mon = listMon.Where(x => x.ClassifyId == obj.ClassifyId).Count();
|
||||||
|
int monC = listMon.Where(x => x.ClassifyId == obj.ClassifyId && x.UnitType == "承包商").Count();
|
||||||
|
int monX = listMon.Where(x => x.ClassifyId == obj.ClassifyId && x.UnitType == "项目部").Count();
|
||||||
|
|
||||||
|
sb.Append("<tr>");
|
||||||
|
sb.Append($"<td >{obj.ClassifyName}</td>");
|
||||||
|
sb.Append($"<td>{monC}</td>");
|
||||||
|
sb.Append($"<td>{monX}</td>");
|
||||||
|
sb.Append($"<td>{mon}</td>");
|
||||||
|
sb.Append($"<td>{yearC}</td>");
|
||||||
|
sb.Append($"<td>{yearX}</td>");
|
||||||
|
sb.Append($"<td>{year}</td>");
|
||||||
|
sb.Append("</tr>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sb.Append("<tr>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("<td ></td>");
|
||||||
|
sb.Append("</tr>");
|
||||||
|
}
|
||||||
|
|
||||||
|
int yearAll = list.Count();
|
||||||
|
int yearCAll = list.Where(x => x.UnitType == "承包商").Count();
|
||||||
|
int yearXAll = list.Where(x => x.UnitType == "项目部").Count();
|
||||||
|
int monAll = listMon.Count();
|
||||||
|
int monCAll = listMon.Where(x => x.UnitType == "承包商").Count();
|
||||||
|
int monXAll = listMon.Where(x => x.UnitType == "项目部").Count();
|
||||||
|
|
||||||
|
sb.Append("<tr>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">合计</td>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">{monCAll}</td>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">{monXAll}</td>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">{monAll}</td>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">{yearCAll}</td>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">{yearXAll}</td>");
|
||||||
|
sb.Append($"<td class=\"tab-header\">{yearAll}</td>");
|
||||||
|
sb.Append("</tr>");
|
||||||
|
sb.Append("</tbody>");
|
||||||
|
sb.Append("</table>");
|
||||||
|
classifyTable.InnerHtml = sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 按问题分类【柱状图——本月】
|
||||||
|
/// </summary>
|
||||||
|
protected string ClassifyBar
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
|
||||||
|
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
|
||||||
|
List<string> listCategories = new List<string>();
|
||||||
|
businessColumn.title = "按问题分类统计";
|
||||||
|
businessColumn.xFontNum = 8;
|
||||||
|
Model.SingleSerie s = new Model.SingleSerie();
|
||||||
|
Model.SingleSerie s2 = new Model.SingleSerie();
|
||||||
|
List<double> listdata = new List<double>();
|
||||||
|
List<double> listdata2 = new List<double>();
|
||||||
|
int tCbs = 0;
|
||||||
|
int tXmb = 0;
|
||||||
|
foreach (var type in classifys)
|
||||||
|
{
|
||||||
|
//listCategories.Add(type.ClassifyCode);
|
||||||
|
listCategories.Add(type.ClassifyName);
|
||||||
|
var typeItems = listMon.Where(x => x.ClassifyId == type.ClassifyId);
|
||||||
|
tCbs = typeItems.Where(x => x.UnitType == "承包商").Count();
|
||||||
|
tXmb = typeItems.Where(x => x.UnitType == "项目部").Count();
|
||||||
|
listdata.Add(tXmb);
|
||||||
|
listdata2.Add(tCbs);
|
||||||
|
}
|
||||||
|
s.data = listdata;
|
||||||
|
s2.data = listdata2;
|
||||||
|
series.Add(s);
|
||||||
|
series.Add(s2);
|
||||||
|
businessColumn.categories = listCategories;
|
||||||
|
businessColumn.series = series;
|
||||||
|
return JsonConvert.SerializeObject(businessColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 按问题分类【柱状图——今年】
|
||||||
|
/// </summary>
|
||||||
|
protected string ClassifyBarYear
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
|
||||||
|
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
|
||||||
|
List<string> listCategories = new List<string>();
|
||||||
|
businessColumn.title = "按问题分类统计";
|
||||||
|
businessColumn.xFontNum = 8;
|
||||||
|
Model.SingleSerie s = new Model.SingleSerie();
|
||||||
|
Model.SingleSerie s2 = new Model.SingleSerie();
|
||||||
|
List<double> listdata = new List<double>();
|
||||||
|
List<double> listdata2 = new List<double>();
|
||||||
|
int tCbs = 0;
|
||||||
|
int tXmb = 0;
|
||||||
|
foreach (var type in classifys)
|
||||||
|
{
|
||||||
|
//listCategories.Add(type.ClassifyCode);
|
||||||
|
listCategories.Add(type.ClassifyName);
|
||||||
|
var typeItems = list.Where(x => x.ClassifyId == type.ClassifyId);
|
||||||
|
tCbs = typeItems.Where(x => x.UnitType == "承包商").Count();
|
||||||
|
tXmb = typeItems.Where(x => x.UnitType == "项目部").Count();
|
||||||
|
listdata.Add(tXmb);
|
||||||
|
listdata2.Add(tCbs);
|
||||||
|
}
|
||||||
|
s.data = listdata;
|
||||||
|
s2.data = listdata2;
|
||||||
|
series.Add(s);
|
||||||
|
series.Add(s2);
|
||||||
|
businessColumn.categories = listCategories;
|
||||||
|
businessColumn.series = series;
|
||||||
|
return JsonConvert.SerializeObject(businessColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 安全管理类统计
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全管理类统计(S1)【本月】
|
||||||
|
/// </summary>
|
||||||
|
protected string S1Pie
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
|
||||||
|
businessColumn.title = "安全管理类统计";
|
||||||
|
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
|
||||||
|
Model.SingleSerie s = new Model.SingleSerie();
|
||||||
|
//安全管理类
|
||||||
|
var classifyItems = BLL.SafetyProblemClassifyItemService.GetClassifyItemList(Const.SafetyClassifyIdS1);
|
||||||
|
List<Model.PieData> pies = new List<Model.PieData>();
|
||||||
|
List<string> dataString = new List<string>();
|
||||||
|
int dataNum = 0;
|
||||||
|
foreach (var obj in classifyItems)
|
||||||
|
{
|
||||||
|
var lst = listMon.Where(x => x.ClassifyItemId == obj.ClassifyItemId);
|
||||||
|
if (lst.Any())
|
||||||
|
{
|
||||||
|
int num = lst.Count();
|
||||||
|
dataNum += num;
|
||||||
|
pies.Add(new PieData { value = num, name = obj.ClassifyItemName });
|
||||||
|
dataString.Add(obj.ClassifyItemName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s.pieData = pies;
|
||||||
|
s.dataString = dataString;
|
||||||
|
s.stack = dataNum.ToString();
|
||||||
|
series.Add(s);
|
||||||
|
businessColumn.series = series;
|
||||||
|
var jsonStr = JsonConvert.SerializeObject(businessColumn);
|
||||||
|
return JsonConvert.SerializeObject(businessColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全管理类统计(S1)【今年】
|
||||||
|
/// </summary>
|
||||||
|
protected string S1PieYear
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
|
||||||
|
businessColumn.title = "安全管理类统计";
|
||||||
|
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
|
||||||
|
Model.SingleSerie s = new Model.SingleSerie();
|
||||||
|
//安全管理类
|
||||||
|
var classifyItems = BLL.SafetyProblemClassifyItemService.GetClassifyItemList(Const.SafetyClassifyIdS1);
|
||||||
|
|
||||||
|
List<Model.PieData> pies = new List<Model.PieData>();
|
||||||
|
List<string> dataString = new List<string>();
|
||||||
|
int dataNum = 0;
|
||||||
|
foreach (var obj in classifyItems)
|
||||||
|
{
|
||||||
|
var lst = list.Where(x => x.ClassifyItemId == obj.ClassifyItemId);
|
||||||
|
if (lst.Any())
|
||||||
|
{
|
||||||
|
int num = lst.Count();
|
||||||
|
dataNum += num;
|
||||||
|
pies.Add(new PieData { value = num, name = obj.ClassifyItemName });
|
||||||
|
dataString.Add(obj.ClassifyItemName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s.pieData = pies;
|
||||||
|
s.dataString = dataString;
|
||||||
|
s.stack = dataNum.ToString();
|
||||||
|
series.Add(s);
|
||||||
|
businessColumn.series = series;
|
||||||
|
var jsonStr = JsonConvert.SerializeObject(businessColumn);
|
||||||
|
return JsonConvert.SerializeObject(businessColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 施工作业类统计
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 施工作业类统计(S2)【本月】
|
||||||
|
/// </summary>
|
||||||
|
protected string S2Pie
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
|
||||||
|
businessColumn.title = "施工作业类统计";
|
||||||
|
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
|
||||||
|
Model.SingleSerie s = new Model.SingleSerie();
|
||||||
|
//施工作业类
|
||||||
|
var classifyItems = BLL.SafetyProblemClassifyItemService.GetClassifyItemList(Const.SafetyClassifyIdS2);
|
||||||
|
List<Model.PieData> pies = new List<Model.PieData>();
|
||||||
|
List<string> dataString = new List<string>();
|
||||||
|
int dataNum = 0;
|
||||||
|
foreach (var obj in classifyItems)
|
||||||
|
{
|
||||||
|
var lst = listMon.Where(x => x.ClassifyItemId == obj.ClassifyItemId);
|
||||||
|
if (lst.Any())
|
||||||
|
{
|
||||||
|
int num = lst.Count();
|
||||||
|
dataNum += num;
|
||||||
|
pies.Add(new PieData { value = num, name = obj.ClassifyItemName });
|
||||||
|
dataString.Add(obj.ClassifyItemName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s.pieData = pies;
|
||||||
|
s.dataString = dataString;
|
||||||
|
s.stack = dataNum.ToString();
|
||||||
|
series.Add(s);
|
||||||
|
businessColumn.series = series;
|
||||||
|
var jsonStr = JsonConvert.SerializeObject(businessColumn);
|
||||||
|
return JsonConvert.SerializeObject(businessColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 施工作业类统计(S2)【今年】
|
||||||
|
/// </summary>
|
||||||
|
protected string S2PieYear
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
|
||||||
|
businessColumn.title = "施工作业类统计";
|
||||||
|
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
|
||||||
|
Model.SingleSerie s = new Model.SingleSerie();
|
||||||
|
//施工作业类
|
||||||
|
var classifyItems = BLL.SafetyProblemClassifyItemService.GetClassifyItemList(Const.SafetyClassifyIdS2);
|
||||||
|
|
||||||
|
List<Model.PieData> pies = new List<Model.PieData>();
|
||||||
|
List<string> dataString = new List<string>();
|
||||||
|
int dataNum = 0;
|
||||||
|
foreach (var obj in classifyItems)
|
||||||
|
{
|
||||||
|
var lst = list.Where(x => x.ClassifyItemId == obj.ClassifyItemId);
|
||||||
|
if (lst.Any())
|
||||||
|
{
|
||||||
|
int num = lst.Count();
|
||||||
|
dataNum += num;
|
||||||
|
pies.Add(new PieData { value = num, name = obj.ClassifyItemName });
|
||||||
|
dataString.Add(obj.ClassifyItemName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s.pieData = pies;
|
||||||
|
s.dataString = dataString;
|
||||||
|
s.stack = dataNum.ToString();
|
||||||
|
series.Add(s);
|
||||||
|
businessColumn.series = series;
|
||||||
|
var jsonStr = JsonConvert.SerializeObject(businessColumn);
|
||||||
|
return JsonConvert.SerializeObject(businessColumn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <自动生成>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能导致不正确的行为,如果
|
||||||
|
// 重新生成代码,则所做更改将丢失。
|
||||||
|
// </自动生成>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace FineUIPro.Web
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public partial class mainMenu_HSECheck
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Head1 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.HtmlControls.HtmlHead Head1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// classifyTable 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.HtmlControls.HtmlGenericControl classifyTable;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user