refactor(cqms): 整理检查模块并迁移 WBS 服务

清理旧检查页面、服务和接口,补充 WBS 检查服务及数据库脚本,同步工程引用与菜单配置,收敛 CQMS 检查功能的代码组织。
This commit is contained in:
2026-09-20 15:49:27 +08:00
parent 8efe030f47
commit dc19b6d6b6
204 changed files with 319 additions and 59884 deletions
+1 -22
View File
@@ -14,27 +14,6 @@
</TreeNode>
<TreeNode id="0A8195B1-4136-4CF1-A0A2-C29A1620B018" Text="无损检测工管理" NavigateUrl="CQMS/PersonManage/CheckerManage.aspx"></TreeNode>
</TreeNode>
<TreeNode id="31B86B12-632D-4DDD-B937-E21CA6A88537" Text="检试验设备管理" NavigateUrl=""><TreeNode id="BB8EB284-A014-442E-A1D7-956AA11272AE" Text="检试验设备" NavigateUrl="CQMS/Check/CheckEquipment.aspx"></TreeNode>
</TreeNode>
<TreeNode id="1011063B-FEAC-4B89-A9D9-0F9F6BB3328E" Text="施工技术交底管理" NavigateUrl=""><TreeNode id="F0D0B2C6-51ED-4C47-95EB-C3DCB639BA5F" Text="施工技术交底" NavigateUrl="CQMS/Technical/TechnicalDisclose.aspx"></TreeNode>
</TreeNode>
<TreeNode id="B8500D87-407E-458C-9915-FD54F0E81F36" Text="质量验收" NavigateUrl=""><TreeNode id="CC43E208-335D-4AE3-A1CE-B2D8510AE854" Text="实体验收" NavigateUrl="CQMS/Check/SpotCheck.aspx"></TreeNode>
<TreeNode id="8317C0F7-3A69-48AB-87E5-03E96C543B1C" Text="资料验收" NavigateUrl="CQMS/Check/SpotDataCheck.aspx"></TreeNode>
<TreeNode id="1433BE70-13C0-4AC7-BC3D-34C9471CE2A8" Text="质量验收统计" NavigateUrl="CQMS/Check/SpotCheckStatistics.aspx"></TreeNode>
</TreeNode>
<TreeNode id="A54EC449-5F77-4068-83B9-AA305B721A0B" Text="质量检查" NavigateUrl=""><TreeNode id="B3E99BD9-FDC7-4F15-8C3C-A7821AC9E306" Text="质量巡检" NavigateUrl="CQMS/Check/CheckList.aspx"></TreeNode>
<TreeNode id="E6703F32-4E42-4D03-84B3-5EC0E8E48E0F" Text="质量共检" NavigateUrl="CQMS/Check/JointCheck.aspx"></TreeNode>
<TreeNode id="D3B1433E-00DE-432B-A30A-0EFB513480A8" Text="问题统计" NavigateUrl="CQMS/Check/JointCheckStatistics.aspx"></TreeNode>
</TreeNode>
<TreeNode id="C91C8319-0BFC-4585-BE14-ED41D45A160D" Text="质量月报" NavigateUrl=""><TreeNode id="786864C0-2875-49CD-B55E-0B5C8253295D" Text="质量月报" NavigateUrl="CQMS/Check/CheckMonth.aspx"></TreeNode>
<TreeNode id="B2086D3A-2384-487E-AFFB-6FACDD09B621" Text="质量数据" NavigateUrl="ZHGL/DataSync/ProjectDataSync/Project_CQMSData_CQMS.aspx"></TreeNode>
</TreeNode>
<TreeNode id="390A78F0-43B2-4AF1-81B9-7C216FA7E0A4" Text="文件柜" NavigateUrl=""><TreeNode id="CF33572A-E875-4492-92BF-6EA265909A6C" Text="质量共检通知单" NavigateUrl="CQMS/Check/SpotCheckFile.aspx"></TreeNode>
<TreeNode id="8D5A7D48-21C0-4668-9E70-813AE9C523FA" Text="施工质量问题整改单" NavigateUrl="CQMS/Check/CheckListFile.aspx"></TreeNode>
<TreeNode id="0E6E6022-356E-42A1-9D16-C75BF69EBFB5" Text="施工质量检查记录" NavigateUrl="CQMS/Check/JointCheckFile.aspx"></TreeNode>
<TreeNode id="3354E9AA-8D71-401B-9CFC-03D69DA86B05" Text="工程联络单" NavigateUrl="CQMS/Check/TechnicalContactListFile.aspx"></TreeNode>
<TreeNode id="A68445D0-78BB-4E67-93FC-606DECA0B585" Text="设计变更统计表" NavigateUrl="CQMS/Check/DesignFile.aspx"></TreeNode>
<TreeNode id="0A54D274-547C-4555-9D00-D8D5034E8849" Text="质量月报" NavigateUrl="CQMS/Check/CheckMonthFile.aspx"></TreeNode>
<TreeNode id="03CEB246-0CE5-48CB-9D6B-1B84AC2E27B3" Text="重要文件" NavigateUrl="CQMS/Check/FileCabinet.aspx"></TreeNode>
<TreeNode id="C91C8319-0BFC-4585-BE14-ED41D45A160D" Text="质量月报" NavigateUrl=""><TreeNode id="B2086D3A-2384-487E-AFFB-6FACDD09B621" Text="质量数据" NavigateUrl="ZHGL/DataSync/ProjectDataSync/Project_CQMSData_CQMS.aspx"></TreeNode>
</TreeNode>
</Tree>
@@ -8,8 +8,5 @@
</TreeNode>
<TreeNode id="B87413D8-4EFB-42F3-A4F6-9D21C0CD3DFE" Text="数据分析室" NavigateUrl="">
<TreeNode id="CFEF47C0-8EFA-46FF-8648-5B1922519DCC" Text="WBS数据分析" NavigateUrl="DigData/WBSAnalysis.aspx"></TreeNode>
<TreeNode id="B146FC96-B199-426B-8504-4BE093C0DCB1" Text="项目数据汇总分析" NavigateUrl="">
<TreeNode id="DD960B76-1F33-468B-9FEF-76328235C079" Text="项目质量数据汇总" NavigateUrl="DigData/CQMSDataCollect.aspx"></TreeNode>
</TreeNode>
</TreeNode>
</Tree>
+2 -5
View File
@@ -104,18 +104,15 @@ namespace FineUIPro.Web.common
CRectificationRate = 0;
///合格率
CQualifiedRate = 0;
var getJointCheckDetail = from x in Funs.DB.Check_JointCheckDetail
select x;
var getCheckControl = from x in Funs.DB.Check_CheckControl select x;
///问题总数
int AllCount = getJointCheckDetail.Count() + getCheckControl.Count();
int AllCount = getCheckControl.Count();
this.divCQMSAllNum.InnerHtml = AllCount.ToString();
if (AllCount > 0)
{
///问题完成数
var getJOk = getJointCheckDetail.Where(x => x.State == "6").Count();
var getCOk = getCheckControl.Where(x => x.State == "7").Count();
int CCount = getJOk + getCOk;
int CCount = getCOk;
if (CCount > 0)
{
CRectificationRate = Math.Round(CCount * 1.0 / AllCount * 100, 1);
@@ -1,743 +0,0 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="mainMenu_CQMS.aspx.cs" Inherits="FineUIPro.Web.mainMenu_CQMS" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>首页</title>
<link href="../res/indexv1/assets/css/sub_index.css" rel="stylesheet" />
<style type="text/css">
.q-rate-name {
letter-spacing:2px;
}
.sub-section-02 .q-rate-list .q-rate-box{
width: 1.25417rem !important;
height: 1.15417rem !important;
}
</style>
</head>
<body>
<div class="sd-sub-body sd-sub-body--quality dis-flex">
<div class="sub-sections flex-1">
<div class="sub-section sub-section-01">
<div class="sub-section-header">
<span class="sub-section-title">合格率统计</span>
</div>
<div class="sub-section-inner">
<div class="q-rate-list">
<div class="q-rate-item q-rate-item--green">
<div class="q-rate-box">
<canvas class="q-rate-inner" id="qRate01" width="118" height="118" data-value="<%=One1 %>"></canvas>
</div>
<div class="q-rate-name">质量验收<br>
一次合格率</div>
</div>
<div class="q-rate-item q-rate-item--yellow">
<div class="q-rate-box">
<canvas class="q-rate-inner" id="qRate02" width="118" height="118" data-value="<%=One2 %>"></canvas>
</div>
<div class="q-rate-name">施工资料<br>
同步率</div>
</div>
<div class="q-rate-item q-rate-item--blue">
<div class="q-rate-box">
<canvas class="q-rate-inner" id="qRate03" width="118" height="118" data-value="<%=One3 %>"></canvas>
</div>
<div class="q-rate-name">质量问题<br>
整改完成率</div>
</div>
</div>
</div>
</div>
<div class="sub-section sub-section-02">
<div class="sub-section-header">
<span class="sub-section-title">质量控制点统计</span>
</div>
<div class="sub-section-inner">
<div class="q-rate-list" style='padding-top:0;'>
<div class="q-rate-item">
<div class="q-rate-box">
<div class="q-rate-inner" id="echarts02_1"></div>
</div>
<div class="q-rate-name">A类</div>
</div>
<div class="q-rate-item">
<div class="q-rate-box">
<div class="q-rate-inner" id="echarts02_2"></div>
</div>
<div class="q-rate-name">B类</div>
</div>
<div class="q-rate-item">
<div class="q-rate-box">
<div class="q-rate-inner" id="echarts02_3"></div>
</div>
<div class="q-rate-name">C类</div>
</div>
</div>
</div>
</div>
<div class="sub-section sub-section-03">
<div class="sub-section-header">
<span class="sub-section-title">施工单位质量统计</span>
<ul class="sub-sections-tabs">
<li class="sub-section-item active" data-type="sgfbs">施工分包商</li>
<li class="sub-section-item" data-type="zy">专业</li>
</ul>
</div>
<div class="sub-section-inner">
<div id="echarts03" class="echarts-box"></div>
</div>
</div>
</div>
<div class="sub-sections flex-1">
<div class="sub-section sub-section-04">
<div class="sub-section-header">
<span class="sub-section-title">质量问题统计</span>
<ul class="sub-sections-tabs">
<li class="sub-section-item active" data-type="sgfbs">施工分包商</li>
<li class="sub-section-item" data-type="azdwgc">安装单位工程</li>
<li class="sub-section-item" data-type="jzdwgz">建筑单位工程</li>
<li class="sub-section-item" data-type="zy">专业</li>
</ul>
</div>
<div class="sub-section-inner">
<div id="echarts04" class="echarts-box"></div>
</div>
</div>
<div class="sub-section sub-section-05">
<div class="sub-section-header">
<span class="sub-section-title">产品质量统计</span>
<ul class="sub-sections-tabs">
<li class="sub-section-item active" data-type="azdwgc">安装单位工程</li>
<li class="sub-section-item" data-type="jzdwgz">建筑单位工程</li>
</ul>
</div>
<div class="sub-section-inner">
<div id="echarts05" class="echarts-box"></div>
</div>
</div>
</div>
</div>
<script src="../res/indexv1/assets/js/jquery-2.1.1.min.js" type="text/javascript"></script>
<script src="../res/indexv1/assets/js/echarts-5.2.0.min.js" type="text/javascript"></script>
<script src="../res/indexv1/assets/js/draw-circle.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('.sub-section-03 ul li').click(function () {
var type = $(this).attr('data-type')
$(this).addClass('active').siblings().removeClass('active')
// 重新绘制图
if (type == 'sgfbs') {
// 施工分包商
initEchart03(three.categories, three.series[0].data, three.series[1].data)
} else if (type == 'zy') {
// 专业
initEchart03(three2.categories, three2.series[0].data, three2.series[1].data)
}
})
$('.sub-section-04 ul li').click(function () {
var type = $(this).attr('data-type')
$(this).addClass('active').siblings().removeClass('active')
// 重新绘制图
if (type == 'sgfbs') {
// 施工分包商
initEchart04(two.categories, two.series[0].data, two.series[1].data)
} else if (type == 'azdwgc') {
// 安装单位工程
initEchart04(two2.categories, two2.series[0].data, two2.series[1].data)
} else if (type == 'jzdwgz') {
// 建筑单位工程
initEchart04(two4.categories, two4.series[0].data, two4.series[1].data)
} else if (type == 'zy') {
// 专业
initEchart04(two3.categories, two3.series[0].data, two3.series[1].data)
}
})
$('.sub-section-05 ul li').click(function () {
var type = $(this).attr('data-type')
$(this).addClass('active').siblings().removeClass('active')
if (type == 'azdwgc') {
// 安装单位工程
initEchart05(four.categories, four.series[0].data, four.series[1].data)
} else if (type == 'jzdwgz') {
// 建筑单位工程
initEchart05(four2.categories, four2.series[0].data, four2.series[1].data)
}
})
function initEchart01() {
drawCircle({
drawing_elem: 'qRate01',
percentfontsize: 24,
unitfontsize: 20,
lineWidth: 18,
addLeft: 4,
percentfontcolor: "#15edbb",
forecolor: [{ step: 0, color: "#15edbb" }, { step: 0.2, color: "#15edbb" }, { step: 1, color: "rgba(21,237,187,0.05)" }],
unitfontcolor: '#15edbb',
unitadd: 1,
});
drawCircle({
drawing_elem: 'qRate02',
percentfontsize: 24,
unitfontsize: 20,
lineWidth: 18,
addLeft: 4,
percentfontcolor: "#ffa600",
forecolor: [{ step: 0, color: "#ffa600" }, { step: 0.2, color: "#ffa600" }, { step: 1, color: "rgba(255,166,0,0.05)" }],
unitfontcolor: '#ffa600',
unitadd: 1,
});
drawCircle({
drawing_elem: 'qRate03',
percentfontsize: 24,
unitfontsize: 20,
lineWidth: 18,
addLeft: 4,
percentfontcolor: "#00ffff",
forecolor: [{ step: 0, color: "#00ffff" }, { step: 0.2, color: "#00ffff" }, { step: 1, color: "rgba(0,255,255,0.05)" }],
unitfontcolor: '#00ffff',
unitadd: 1,
});
}
function initEchart02(options) {
var chartDom = document.getElementById(options.canvasId);
var myChart = echarts.init(chartDom);
var option;
var data = [
{
name: '未完成', value: options.n, label: {
rich: {
name: {
fontSize: 10,
color: '#f24166',
align: 'center',
},
percent: {
fontSize: 10,
color: '#f24166',
align: 'center',
}
}
}
},
{
name: '已完成', value: options.y, label: {
rich: {
name: {
fontSize: 10,
color: '#15edbb',
align: 'center',
},
percent: {
fontSize: 10,
color: '#15edbb',
align: 'center',
}
}
}
},
];
option = {
color: ['#f24166', '#15edbb'],
tooltip: {
trigger: 'item',
formatter: '{b} : {c}'
//formatter: '{b} : {d}%'
},
series: [{
name: '质量控制点统计',
type: 'pie',
radius: ['40%', '65%'],
top: '5%',
left: 'center',
width: '100%',
height: '100%',
label: {
alignTo: 'edge',
//formatter: '{name|{b}}\n{percent|{d}%}',
formatter: '{name|{b}} {percent|{c}}',
minMargin: 5,
edgeDistance: 10,
lineHeight: 15,
},
labelLine: {
length: 10,
length2: 0,
maxSurfaceAngle: 80
},
data: data
}]
};
myChart.clear();//清空
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}
function initEchart03(dataType, data1, data2) {
var chartDom = document.getElementById('echarts03');
var myChart = echarts.init(chartDom);
var option;
var xAxisData =dataType
option = {
color: ['#15edbb', '#ffa600'],
grid: {
top: '15%',
left: '3%',
right: '3%',
bottom: '5%',
containLabel: true
},
tooltip: {
trigger: 'axis',
},
legend: {
top: '4%',
left: 'center',
textStyle: {
fontSize: 12,
},
data: [
{
name: '质量验收一次合格率', icon: 'roundRect', textStyle: {
color: '#15edbb'
}
}, {
name: '施工资料同步率', icon: 'roundRect', textStyle: {
color: '#ffa600'
}
}],
itemWidth: 16,//图例的宽度
itemHeight: 8,//图例的高度
},
xAxis: [
{
type: 'category',
boundaryGap: true,
data: xAxisData,
axisLabel: {
color: '#1ab1ff',
interval: 0,
},
axisTick: {
show: false,
},
axisLine: {
onZero: false,
lineStyle: {
color: '#1ab1ff',
width: 1,
}
},
}
],
yAxis: [
{
type: 'value',
axisLabel: {
show: true,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
onZero: false,
lineStyle: {
color: '#1ab1ff',
width: 1,
}
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#0D3C65',
},
},
}
],
series: [
{
name: '质量验收一次合格率',
type: 'line',
stack: 'Total',
smooth: true,
lineStyle: {
width: 0
},
showSymbol: false,
areaStyle: {
opacity: 0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0,
color: 'rgba(21,237,187,0.3)',
},
{
offset: 1,
color: '#15edbb'
}
])
},
emphasis: {
focus: 'series'
},
data: data1
},
{
name: '施工资料同步率',
type: 'line',
stack: 'Total',
smooth: true,
lineStyle: {
width: 0
},
showSymbol: false,
areaStyle: {
opacity: 0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0,
color: 'rgba(255,166,0,0.3)',
},
{
offset: 1,
color: '#ffa600'
}
])
},
emphasis: {
focus: 'series'
},
data: data2
},
]
};
myChart.clear();//清空
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}
function initEchart04(dataType, data1, data2) {
var chartDom = document.getElementById('echarts04');
var myChart = echarts.init(chartDom);
var option;
let xAxisData = dataType;
option = {
color: ['#f24166', '#15edbb'],
grid: {
top: '15%',
left: '3%',
right: '3%',
bottom: '5%',
containLabel: true
},
tooltip: {
trigger: 'axis',
showDelay: 0,
axisPointer: {
type: 'shadow'
}
},
legend: {
top: '4%',
left: 'center',
textStyle: {
fontSize: 12,//字体大小
},
data: [{
name: '未整改', icon: 'roundRect', textStyle: {
color: '#f24166'
}
}, {
name: '已整改', icon: 'roundRect', textStyle: {
color: '#15edbb'
}
}],
itemWidth: 16,//图例的宽度
itemHeight: 8,//图例的高度
},
xAxis: {
data: xAxisData,
boundaryGap: true,
axisLabel: {
color: '#1ab1ff',
interval: 0,
},
axisTick: {
show: false,
},
axisLine: {
onZero: true,
lineStyle: {
color: '#1ab1ff',
width: 1,
}
},
},
yAxis: {
type: 'value',
axisLabel: {
show: true,
color: '#1ab1ff',
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#0D3C65',
},
},
splitNumber: 5,
},
series: [
{
name: '未整改',
type: 'bar',
barWidth: 20,
data: data1,
barGap: '0%',/*多个并排柱子设置柱子之间的间距*/
barCategoryGap: '0%',/*多个并排柱子设置柱子之间的间距*/
itemStyle: {
color: '#1ab1ff',
emphasis: {
barBorderRadius: [10, 10, 0, 0],
},
normal: {
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(
1, 1, 1, 0,
[
{ offset: 0, color: 'rgba(242,65,102,.2)' },
{ offset: 1, color: '#f24166' }
]
)
}
}
},
{
name: '已整改',
type: 'bar',
barWidth: 20,
data: data2,
barGap: '0%',/*多个并排柱子设置柱子之间的间距*/
barCategoryGap: '0%',/*多个并排柱子设置柱子之间的间距*/
itemStyle: {
color: '#f24166',
emphasis: {
barBorderRadius: [10, 10, 0, 0],
},
normal: {
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(
1, 1, 1, 0,
[
{ offset: 0, color: 'rgba(21,237,187,0.2)' },
{ offset: 1, color: '#15edbb' }
]
)
}
}
},
]
};
myChart.clear();//清空
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}
function initEchart05(dataType, data1, data2) {
var chartDom = document.getElementById('echarts05');
var myChart = echarts.init(chartDom);
var option;
var xAxisData = dataType;
option = {
color: ['#101a3b', '#4f3b36'],
tooltip: {
trigger: 'axis',
},
grid: {
top: '15%',
left: '3%',
right: '3%',
bottom: '5%',
containLabel: true
},
legend: {
top: '4%',
left: 'center',
textStyle: {
fontSize: 12,//字体大小
},
data: [{
name: '质量验收一次合格率', icon: 'roundRect', itemStyle: {
color: '#25c99f'
}, textStyle: {
color: '#25c99f'
}
}, {
name: '施工资料同步率', icon: 'roundRect', itemStyle: {
color: '#f79c2f'
}, textStyle: {
color: '#f79c2f'
}
}],
itemWidth: 16,//图例的宽度
itemHeight: 8,//图例的高度
},
xAxis: {
type: 'category',
boundaryGap: true,
data: xAxisData,
axisLabel: {
color: '#1ab1ff',
interval: 0,
},
axisTick: {
show: false,
},
axisLine: {
onZero: false,
lineStyle: {
color: '#1ab1ff',
width: 1,
}
},
},
yAxis: {
type: 'value',
axisLabel: {
show: true,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
onZero: false,
lineStyle: {
color: '#1ab1ff',
width: 1,
}
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#0D3C65',
},
},
splitNumber: 5,
},
series: [
{
type: 'line',
stack: 'Total',
name: '质量验收一次合格率',
color: '#17b1e5', //线条颜色
data: data1,
symbol: "none", // 去除小圆点
areaStyle: {
color: {
type: 'linear',
x: 0,
y: 1,
x2: 0,
y2: 0,
colorStops: [{
offset: 0, color: '#101a3b' // 100% 处的颜色
}, {
offset: 1, color: '#517257' // 0% 处的颜色
}],
global: false
}
},
lineStyle: { width: 1, color: '#25c99f' }, //隐藏线
abel: { show: false }, // 隐藏文字
itemStyle: {
color: '#25c99f',
normal: {
label: { show: false, color: '#1ac9ff' }, //顶部显示数值
}
}
},
{
type: 'line',
stack: 'Total',
name: '施工资料同步率',
color: '#17b1e5', //线条颜色
// smooth: true, //线条平滑
data: data2,
symbol: "none", // 去除小圆点
areaStyle: {
color: {
type: 'linear',
x: 0,
y: 1,
x2: 0,
y2: 0,
colorStops: [{
offset: 0, color: '#4f3b36' // 100% 处的颜色
}, {
offset: 1, color: '#785234' // 0% 处的颜色
}],
global: false
}
},
lineStyle: { width: 1, color: '#f79c2f' }, //隐藏线
abel: { show: false }, // 隐藏文字
itemStyle: {
color: '#f79c2f',
normal: {
label: { show: false, color: '#1ac9ff' }, //顶部显示数值
}
}
},
],
}
myChart.clear();//清空
option && myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}
initEchart01()
var one4 =<%=One4 %>;
console.log(one4)
initEchart02({ canvasId: 'echarts02_1', y: one4.num2, n: one4.num1 })
initEchart02({ canvasId: 'echarts02_2', y: one4.num5, n: one4.num4 })
initEchart02({ canvasId: 'echarts02_3', y: one4.num8, n: one4.num7 })
var three =<%=Three %>;
var three2 =<%=Three2 %>;
initEchart03(three.categories, three.series[0].data, three.series[1].data)
var two =<%=Two %>;
var two2 =<%=Two2 %>;
var two3 =<%=Two3 %>;
var two4 =<%=Two4 %>;
initEchart04(two.categories, two.series[0].data, two.series[1].data)
var four =<%=Four %>;
var four2 =<%=Four2 %>;
initEchart05(four.categories, four.series[0].data, four.series[1].data)
})
</script>
</body>
</html>
@@ -1,498 +0,0 @@
using BLL;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web
{
public partial class mainMenu_CQMS : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
getProjectUnits2 = BLL.ProjectUnitService.GetProjectUnitListByProjectIdUnitType(CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_2);
// ClientScript.RegisterClientScriptBlock(typeof(Page), "", " category_One('one1', '项目质量验收一次合格率', " + new mainMenu_CQMS().One1 + ")", true);
}
}
private static List<Model.Project_ProjectUnit> getProjectUnits2;
#region 项目质量验收一次合格率
protected string One1
{
get
{
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailOKLists = SpotCheckDetailService.GetTotalOKSpotCheckDetailListByTime1(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailLists = SpotCheckDetailService.GetTotalAllSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
double result = 0;
if (TotalCheckDetailOKLists.Count > 0 && TotalCheckDetailLists.Count > 0)
{
var a = Convert.ToDouble(TotalCheckDetailOKLists.Count);
var b = Convert.ToDouble(TotalCheckDetailLists.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
return JsonConvert.SerializeObject(result);
}
}
#endregion
#region 项目施工资料同步率
protected string One2
{
get
{
List<Model.View_Check_SoptCheckDetail> totalCheckDetailDataOKLists = SpotCheckDetailService.GetAllDataOkSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> totalCheckDetailOKLists = SpotCheckDetailService.GetTotalOKSpotCheckDetailListByTime1(CurrUser.LoginProjectId, DateTime.Now);
totalCheckDetailOKLists = totalCheckDetailOKLists.Where(x => x.IsShow == true).ToList(); //需要上传资料的IsShow为true
double result = 0;
if (totalCheckDetailDataOKLists.Count > 0 && totalCheckDetailOKLists.Count > 0)
{
var a = Convert.ToDouble(totalCheckDetailDataOKLists.Count);
var b = Convert.ToDouble(totalCheckDetailOKLists.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
return JsonConvert.SerializeObject(result);
}
}
#endregion
#region 项目质量问题整改完成率
protected string One3
{
get
{
List<Model.View_Check_JointCheckDetail> totalCheckLists = JointCheckDetailService.GetTotalJointCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
int a = totalCheckLists.Where(x => x.OK == 1).Count();
double result = 0;
if (a > 0 && totalCheckLists.Count > 0)
{
var b = Convert.ToDouble(totalCheckLists.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
return JsonConvert.SerializeObject(result);
}
}
#endregion
#region 质量控制点通知
protected string One4
{
get
{
var db = new Model.SGGLDB(Funs.ConnString);
Model.Num num = new Model.Num();
var controlItemAndCycles = from x in db.WBS_ControlItemAndCycle
where x.ProjectId == CurrUser.LoginProjectId && x.IsApprove == true
orderby x.ControlItemAndCycleCode
select x;
var oKSpotCheckDetails = from x in db.Check_SpotCheckDetail
join y in db.Check_SpotCheck
on x.SpotCheckCode equals y.SpotCheckCode
where x.IsOK == true && y.ProjectId == CurrUser.LoginProjectId
select x;
//A类
var Alist = controlItemAndCycles.Where(x => x.ControlPoint.Contains("A"));
int a = 0;
foreach (var item in Alist)
{
if (item.CheckNum != 0) //检查次数为0表示一直检查
{
List<Model.Check_SpotCheckDetail> details = oKSpotCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId).ToList();
if (details.Count == item.CheckNum) //检查次数已达到最大值
{
a++;
}
}
}
num.num2 = a;
num.num3 = Alist.Count();
num.num1 = num.num3 - num.num2;
//B类
var Blist = controlItemAndCycles.Where(x => x.ControlPoint.Contains("B"));
int b = 0;
foreach (var item in Blist)
{
if (item.CheckNum != 0) //检查次数为0表示一直检查
{
List<Model.Check_SpotCheckDetail> details = oKSpotCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId).ToList();
if (details.Count == item.CheckNum) //检查次数已达到最大值
{
b++;
}
}
}
num.num5 = b;
num.num6 = Blist.Count();
num.num4 = num.num6 - num.num5;
//C类
var Clist = controlItemAndCycles.Where(x => x.ControlPoint.Contains("C"));
int c = 0;
foreach (var item in Clist)
{
if (item.CheckNum != 0) //检查次数为0表示一直检查
{
List<Model.Check_SpotCheckDetail> details = oKSpotCheckDetails.Where(x => x.ControlItemAndCycleId == item.ControlItemAndCycleId).ToList();
if (details.Count == item.CheckNum) //检查次数已达到最大值
{
c++;
}
}
}
num.num8 = c;
num.num9 = Clist.Count();
num.num7 = num.num9 - num.num8;
return JsonConvert.SerializeObject(num);
}
}
#endregion
#region 质量问题统计
protected string Two
{
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;
var checks = JointCheckDetailService.GetTotalJointCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
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 okNum = 0;
foreach (var unit in getProjectUnits2)
{
listCategories.Add(BLL.UnitService.GetShortUnitNameByUnitId(unit.UnitId));
var unitChecks = checks.Where(x => x.UnitId == unit.UnitId);
okNum = unitChecks.Where(x => x.OK == 1).Count();
listdata.Add(unitChecks.Count() - okNum);
listdata2.Add(okNum);
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Two2
{
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 = 5;
var unitWorks = BLL.UnitWorkService.GetUnitWorkLists(CurrUser.LoginProjectId);
unitWorks = unitWorks.Where(x => x.ProjectType == "2").ToList();
var checks = JointCheckDetailService.GetTotalJointCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
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 okNum = 0;
foreach (var unitWork in unitWorks)
{
listCategories.Add(unitWork.UnitWorkName);
var unitChecks = checks.Where(x => x.UnitWorkId == unitWork.UnitWorkId);
okNum = unitChecks.Where(x => x.OK == 1).Count();
listdata.Add(unitChecks.Count() - okNum);
listdata2.Add(okNum);
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Two3
{
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 = 5;
var cns = BLL.CNProfessionalService.GetList();
var checks = JointCheckDetailService.GetTotalJointCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
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 okNum = 0;
foreach (var cn in cns)
{
listCategories.Add(cn.ProfessionalName);
var unitChecks = checks.Where(x => x.CNProfessionalCode == cn.CNProfessionalId);
okNum = unitChecks.Where(x => x.OK == 1).Count();
listdata.Add(unitChecks.Count() - okNum);
listdata2.Add(okNum);
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Two4
{
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 = 5;
var unitWorks = BLL.UnitWorkService.GetUnitWorkLists(CurrUser.LoginProjectId);
unitWorks = unitWorks.Where(x => x.ProjectType == "1").ToList();
var checks = JointCheckDetailService.GetTotalJointCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
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 okNum = 0;
foreach (var unitWork in unitWorks)
{
listCategories.Add(unitWork.UnitWorkName);
var unitChecks = checks.Where(x => x.UnitWorkId == unitWork.UnitWorkId);
okNum = unitChecks.Where(x => x.OK == 1).Count();
listdata.Add(unitChecks.Count() - okNum);
listdata2.Add(okNum);
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
#endregion
#region 质量一次合格率/资料同步率
protected string Three
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "质量一次合格率";
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailOKLists = SpotCheckDetailService.GetTotalOKSpotCheckDetailListByTime1(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailLists = SpotCheckDetailService.GetTotalAllSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> totalCheckDetailDataOKLists = SpotCheckDetailService.GetAllDataOkSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
double result = 0, result2 = 0;
foreach (var unit in getProjectUnits2)
{
listCategories.Add(BLL.UnitService.GetShortUnitNameByUnitId(unit.UnitId));
var okChecks = TotalCheckDetailOKLists.Where(x => x.UnitId == unit.UnitId).ToList();
var totalChecks = TotalCheckDetailLists.Where(x => x.UnitId == unit.UnitId).ToList();
if (okChecks.Count > 0 && totalChecks.Count > 0)
{
var a = Convert.ToDouble(okChecks.Count);
var b = Convert.ToDouble(totalChecks.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
var dataOkChecks = totalCheckDetailDataOKLists.Where(x => x.UnitId == unit.UnitId).ToList();
okChecks = okChecks.Where(x => x.IsShow == true).ToList(); //需要上传资料的IsShow为true
if (dataOkChecks.Count > 0 && okChecks.Count > 0)
{
var a = Convert.ToDouble(dataOkChecks.Count);
var b = Convert.ToDouble(okChecks.Count);
result2 = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
listdata.Add(result);
listdata2.Add(result2);
result = 0;
result2 = 0;
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Three2
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "质量一次合格率";
var cns = BLL.CNProfessionalService.GetList();
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailOKLists = SpotCheckDetailService.GetTotalOKSpotCheckDetailListByTime1(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailLists = SpotCheckDetailService.GetTotalAllSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> totalCheckDetailDataOKLists = SpotCheckDetailService.GetAllDataOkSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
double result = 0, result2 = 0;
foreach (var cn in cns)
{
listCategories.Add(cn.ProfessionalName);
var okChecks = TotalCheckDetailOKLists.Where(x => x.CNProfessionalCode == cn.CNProfessionalId).ToList();
var totalChecks = TotalCheckDetailLists.Where(x => x.CNProfessionalCode == cn.CNProfessionalId).ToList();
if (okChecks.Count > 0 && totalChecks.Count > 0)
{
var a = Convert.ToDouble(okChecks.Count);
var b = Convert.ToDouble(totalChecks.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
var dataOkChecks = totalCheckDetailDataOKLists.Where(x => x.CNProfessionalCode == cn.CNProfessionalId).ToList();
okChecks = okChecks.Where(x => x.IsShow == true).ToList(); //需要上传资料的IsShow为true
if (dataOkChecks.Count > 0 && okChecks.Count > 0)
{
var a = Convert.ToDouble(dataOkChecks.Count);
var b = Convert.ToDouble(okChecks.Count);
result2 = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
listdata.Add(result);
listdata2.Add(result2);
result = 0;
result2 = 0;
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Four
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "质量一次合格率";
var unitWorks = BLL.UnitWorkService.GetUnitWorkLists(CurrUser.LoginProjectId);
unitWorks = unitWorks.Where(x => x.ProjectType == "2").ToList();
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailOKLists = SpotCheckDetailService.GetTotalOKSpotCheckDetailListByTime1(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailLists = SpotCheckDetailService.GetTotalAllSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> totalCheckDetailDataOKLists = SpotCheckDetailService.GetAllDataOkSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
double result = 0, result2 = 0;
foreach (var unitWork in unitWorks)
{
listCategories.Add(unitWork.UnitWorkName);
var okChecks = TotalCheckDetailOKLists.Where(x => x.UnitWorkId == unitWork.UnitWorkId).ToList();
var totalChecks = TotalCheckDetailLists.Where(x => x.UnitWorkId == unitWork.UnitWorkId).ToList();
if (okChecks.Count > 0 && totalChecks.Count > 0)
{
var a = Convert.ToDouble(okChecks.Count);
var b = Convert.ToDouble(totalChecks.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
var dataOkChecks = totalCheckDetailDataOKLists.Where(x => x.UnitWorkId == unitWork.UnitWorkId).ToList();
okChecks = okChecks.Where(x => x.IsShow == true).ToList(); //需要上传资料的IsShow为true
if (dataOkChecks.Count > 0 && okChecks.Count > 0)
{
var a = Convert.ToDouble(dataOkChecks.Count);
var b = Convert.ToDouble(okChecks.Count);
result2 = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
listdata.Add(result);
listdata2.Add(result2);
result = 0;
result2 = 0;
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
protected string Four2
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "质量一次合格率";
var unitWorks = BLL.UnitWorkService.GetUnitWorkLists(CurrUser.LoginProjectId);
unitWorks = unitWorks.Where(x => x.ProjectType == "1").ToList();
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailOKLists = SpotCheckDetailService.GetTotalOKSpotCheckDetailListByTime1(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> TotalCheckDetailLists = SpotCheckDetailService.GetTotalAllSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
List<Model.View_Check_SoptCheckDetail> totalCheckDetailDataOKLists = SpotCheckDetailService.GetAllDataOkSpotCheckDetailListByTime(CurrUser.LoginProjectId, DateTime.Now);
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
double result = 0, result2 = 0;
foreach (var unitWork in unitWorks)
{
listCategories.Add(unitWork.UnitWorkName);
var okChecks = TotalCheckDetailOKLists.Where(x => x.UnitWorkId == unitWork.UnitWorkId).ToList();
var totalChecks = TotalCheckDetailLists.Where(x => x.UnitWorkId == unitWork.UnitWorkId).ToList();
if (okChecks.Count > 0 && totalChecks.Count > 0)
{
var a = Convert.ToDouble(okChecks.Count);
var b = Convert.ToDouble(totalChecks.Count);
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
var dataOkChecks = totalCheckDetailDataOKLists.Where(x => x.UnitWorkId == unitWork.UnitWorkId).ToList();
okChecks = okChecks.Where(x => x.IsShow == true).ToList(); //需要上传资料的IsShow为true
if (dataOkChecks.Count > 0 && okChecks.Count > 0)
{
var a = Convert.ToDouble(dataOkChecks.Count);
var b = Convert.ToDouble(okChecks.Count);
result2 = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 1));
}
listdata.Add(result);
listdata2.Add(result2);
result = 0;
result2 = 0;
}
s.data = listdata;
s2.data = listdata2;
series.Add(s);
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
#endregion
}
}
-24
View File
@@ -1,24 +0,0 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web {
public partial class mainMenu_CQMS {
/// <summary>
/// Head1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlHead Head1;
}
}
@@ -231,22 +231,17 @@ namespace FineUIPro.Web.common
CRectificationRate = 0;
CQualifiedRate = 0;
FirstPassRate = 0;
var getJointCheckDetail = from x in Funs.DB.Check_JointCheckDetail
join y in Funs.DB.Check_JointCheck on x.JointCheckId equals y.JointCheckId
where y.ProjectId == this.ProjectId
select x;
var getCheckControl = from x in Funs.DB.Check_CheckControl
where x.ProjectId == this.ProjectId
select x;
///问题总数
int AllCount = getJointCheckDetail.Count() + getCheckControl.Count();
int AllCount = getCheckControl.Count();
this.divCQMSAllNum.InnerHtml = AllCount.ToString();
if (AllCount > 0)
{
///问题完成数
var getJOk = getJointCheckDetail.Where(x => x.State == "6").Count();
var getCOk = getCheckControl.Where(x => x.State == "7").Count();
int CCount = getJOk + getCOk;
int CCount = getCOk;
this.divCQMSCAllNum.InnerHtml = CCount.ToString();
this.divCQMSUCAllNum.InnerHtml = (AllCount - CCount).ToString();
if (CCount > 0)