Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/visual/cg_process_simulation.jsp

1874 lines
74 KiB
Plaintext
Raw Permalink Normal View History

2026-01-16 14:13:44 +08:00
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ page import="com.sipai.entity.base.ServerObject"%>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security"%>
<%@ page import="com.sipai.tools.Mqtt" %>
<%@ page import="org.springframework.context.ApplicationContext" %>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>
<% ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
Mqtt mqtt = (Mqtt) ctx.getBean("mqtt");
request.setAttribute("mqttStatus", mqtt.getStatus());
request.setAttribute("hostWeb", mqtt.getHostWeb()); %>
<!DOCTYPE html>
<!-- <html lang="zh-CN"> -->
<!-- BEGIN HEAD -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />
<title>
<%= ServerObject.atttable.get("TOPTITLE")%>
</title>
<!-- 引用页头及CSS页-->
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js"
charset="utf-8"></script>
<%-- mqtt依赖--%>
<script src="<%=request.getContextPath()%>/JS/mqtt/mqtt.min.js" type="text/javascript"></script>
<style type="text/css">
.whole-body{
width: 1920px;
height: 1080px;
padding: 15px 20px;
background-image: url(<%=request.getContextPath()%>/IMG/changGang/processSimulationBg.png);
background-size: 100% 100%;
background-repeat:no-repeat;
background-position:center center;
}
.content-wrapper-bg{
}
.content-wrapper-bg-darkblue{
}
.box-title{
background-image: url(<%=request.getContextPath()%>/IMG/changGang/title.png);
padding-left: 50px;
width: 305px;
height: 38px;
}
.box-header {
padding: 0px;
}
.whole-element-bg{
width: 100%;
min-height: 30.6vh;
background: rgba(0,0,0,0.5);
border: 1px solid #707070;
}
.whole-element-bg+.whole-element-bg{
margin-top: 9px;
}
.whole-element,.left-equ-number{
position: absolute;
}
.box.box-transparent {
background: transparent;
border-top: 0;
margin-bottom: 0;
padding: 0 10px;
}
.box.box-transparent .box-header {
color: #FFFFFF;
}
.box-body {
padding: 5px 0px;
}
.whole-left{
top: 200px;
left: 30px;
}
.opacity-4{
opacity: 0.4;
}
.opacity-7{
opacity: 0.7;
}
.p1-data{
width: 300px;
height: 300px;
top: 497px;
left: 375px;
}
.p1-data-element{
width: 120px;
height: 40px;
}
.now-people-number-element{
top: 50px;
left: 25px;
}
.max-bear-capacity-element{
top: 50px;
left: 155px;
}
.p1-temperature{
top: 210px;
left: 20px;
}
.p1-humidity{
top: 210px;
left: 160px;
}
.p-data{
width: 500px;
height: 315px;
}
.p2-data{
top: 125px;
left: 275px;
}
.p3-data{
top: 125px;
left: 795px;
}
.p4-data{
top: 125px;
left: 1318px;
}
.p-data-title{
width: 500px;
height: 60px;
}
.p-data-pie{
width: 500px;
height: 105px;
position: relative;
}
.p-data-pie-number{
width: 80px;
height: 28px;
text-align: center;
}
.p-data-pie-number-top{
top: 28px;
}
.p2-temperature,.p3-temperature,.p4-temperature{
left: 22px;
}
.p2-humidity,.p3-humidity,.p4-humidity{
left: 115px;
}
.p2-co2,.p3-co2,.p4-co2{
left: 210px;
}
.p2-windSpeed,.p3-windSpeed,.p4-windSpeed{
left: 304px;
}
.p2-illuminance,.p3-illuminance,.p4-illuminance{
left: 397px;
}
.p-data-line{
width: 500px;
height: 150px;
}
.p-url{
width: 155px;
height: 40px;
}
.p2-url{
top: 557px;
left: 788px;
}
.p3-url{
top: 515px;
left: 1180px;
}
.p4-url{
top: 724px;
left: 1510px;
}
.content-left, .content-right{
float: left;
padding:0;
}
.content-left{
width: 810px;
}
.content-right{
width: 2380px;
}
.content-right-subject{
min-height: 215px;
}
.content-bg-darkblue{
background: rgba(12,12,12,0.60);
}
.homePage-btn{
cursor:pointer;
background: rgba(54,167,204,0.70);
border-radius: 10px;
}
.col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9,
.col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9,
.col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9,
.col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9,
.col-xs-1-5 {
padding-right: 5px;
padding-left: 5px
}
.col-xs-1-5 {
width: 12%;
}
.col-xs-1-5{
float: left;
}
.col-xs-1-5 {
position: relative;
min-height: 1px;
}
.title-height{
height:70px;
}
.row-10{
height:10%;
}
.row-15{
height:15%;
}
.row-25{
height:25%;
}
.row-30{
height:30%;
}
.row-35{
height:35%;
}
.row-40{
height:40%;
}
.row-50{
height:50%;
}
.row-70{
height:70%;
}
.row-75{
height:75%;
}
.row-100{
height:100%;
}
.content-wrapper-bg-grey{
background: #eeeeee;
}
.content-wrapper-bg-white,.bgcolor-white,.bgcolor-white-light{
background: #ffffff;
border-radius: 5px;
}
.content-wrapper-bg-white,.content-wrapper-bg-transparent{
margin:0 5px;
border-radius: 5px;
}
.bgcolor-blue{
background: #052941;
}
.margin-bottom-15{
margin-bottom: 15px;
}
.margin-bottom-22{
margin-bottom: 22px;
}
.margin-bottom-25{
margin-bottom: 25px;
}
.margin-bottom-36{
margin-bottom: 22px;
}
.margin-bottom-55{
margin-bottom: 55px;
}
.margin-bottom-75{
margin-bottom: 75px;
}
.margin-right-10{
margin-right: 10px;
}
.padding-topbottom-35{
padding-top: 35px;
padding-bottom: 35px;
}
.pad-topbottom-60{
padding-top: 60px;
padding-bottom: 60px;
}
.padding-topbottom-15{
padding-top: 15px;
padding-bottom: 15px;
}
.padding-topbottom-10{
padding-top: 10px;
padding-bottom: 10px;
}
.padding-leftright-15{
padding-left: 15px;
padding-right: 15px;
}
.padding-left-15{
padding-left: 15px;
}
.padding-left-20{
padding-left: 20px;
}
.pad-leftright-72{
padding-left: 72px;
padding-right: 72px;
}
.pad-bottom-10{
padding-bottom: 10px;
}
.padding-top-5{
padding-top:5px;
}
.padding-top-10{
padding-top: 10px;
}
.padding-top-15{
padding-top: 15px;
}
.padding-top-27{
padding-top: 27px;
}
.padding-top-90{
padding-top: 90px;
}
.line-height-08{
line-height: 0.8;
}
.line-height-1{
line-height: 1;
}
.line-height-15{
line-height: 1.5;
}
.line-height-2{
line-height: 2;
}
.line-height-2-3{
line-height: 2.3;
}
.line-height-3{
line-height: 3;
}
.line-height-5{
line-height: 5;
}
.line-height-6{
line-height: 6;
}
.line-height-36{
line-height: 36px;
}
.font-size-12{
font-size: 12px;
font-weight: 400;
line-height: 24px;
}
.font-size-14{
font-size: 14px;
}
.font-size-16{
font-size: 16px;
}
.font-size-18{
font-size: 18px;
}
.font-size-20{
font-size: 20px;
}
.font-size-21{
font-size: 21px;
font-weight: 400;
letter-spacing: 0.52px;
}
.font-size-22{
font-size: 22px;
}
.font-size-25{
font-size: 25px;
}
.font-size-28{
font-size: 28px;
}
.font-size-33{
font-size: 33px;
}
.font-size-30{
font-size: 30px;
}
.font-size-35{
font-size: 35px;
}
.font-size-36{
font-size: 36px;
}
.font-size-40{
font-size: 40px;
}
.font-size-50{
font-size: 50px;
}
.font-size-60{
font-size: 60px;
}
.font-size-65{
font-size: 65px;
}
.font-size-70{
font-size: 70px;
}
.font-color-white,.font-color-dark-white{
color: #d9f6fb;
font-family: Source Han Sans CN, Source Han Sans CN-Regular;
}
.font-color-black{
color: #0d2336;
font-weight: 600;
}
.font-color-gray{
color: #A8A8A8;
}
.font-color-red{
color: #FF0000;
}
.font-color-yellow{
color: #FFCC00;
}
.font-color-redlight{
color: #CE00FF
}
.font-color-blue,.font-color-dark-blue{
color: #00C2FF;
}
.font-color-lightBlue,.font-color-light-blue{
color: #00D2FF;
}
.font-color-green{
color: #00EC1F;
}
.font-weight-700{
font-weight: 700;
}
.border-left{
border-left: 1px solid #c1c1c1;
}
.border-right{
border-right: 2px solid #ffffff;
}
.border-bottom{
border-bottom: 1px solid #c1c1c1;
}
.border-leftAndRight{
border-left: 1px solid #c1c1c1;border-right: 1px solid #c1c1c1;
}
.bgcolor-blue-light{
background: #192B73;
}
.bgcolor-transparent{
background: transparent;
border-radius: 5px;
}
.img-icon{
width: 70px;
height: 70px;
}
.img-pump{
width: 60px;
height: 97px;
}
.progress_bar{
min-width: 630px;
height: 25px;
}
.polarBarLegend{
width: 360px;
height: 200px;
position: fixed;
}
.polarBar{
min-width: 630px;
height: 450px;
}
.cursor-pointer{
cursor: pointer;
}
.pressure-line{
width: 1180px;
height: 560px;
}
.rawwater-line{
width: 2360px;
height: 560px;
}
.instructions-line{
width: 2360px;
height: 355px;
}
.line_inlet,.line_effluent{
width: 100%;
height: 235px;
}
.bar_pollutant{
width: 100%;
height: 220px;
}
.line_simulator{
width: 100%;
height: 276px;
}
.statistics_barline{
width: 100%;
height: 327px;
}
.model_pie{
float: left;
width: 50%;
height: 167px;
padding: 5px;
}
.model_legend{
float: left;
width: 50%;
height: 60px;
padding: 5px 0;
text-align: left;
font-size: 12px;
}
.nav>li>a {
padding: 0 10px;
}
.nav-pills>li>a {
border-radius: 6px;
border-top: 0;
color: #fff;
}
.nav-pills>li.active>a, .nav-pills>li.active>a:focus, .nav-pills>li.active>a:hover {
color: #fff;
background-color: #06aebb;
}
.nav-pills>li.active>a {
font-weight: 400;
}
.nav-tabs {
border-bottom: 0;
}
.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover {
color: #fff;
cursor: default;
background-color: transparent;
border: 0;
border-bottom: 4px solid #1599de;
}
.nav-tabs>li>a {
padding: 1px;
color: #fff;
margin-right: 10px;
border-bottom: 4px solid transparent;
}
.form-control {
height: auto;
color: #fff;
background-color: transparent;
border: 0;
padding: 0 12px;
text-align: center;
}
.select-style-2 {
background: #032056;
border: 1px solid #8ac6dc;
border-radius: 2px;
color: #fff;
padding: 1px 3px;
text-align: center;
width: 60px;
height: 22px;
font-size: 12px;
line-height: 20px;
}
.data-cont{
width: 100%;
height: 80px;
background: linear-gradient(180deg,#133853, #040b11);
border: 1px solid #184546;
padding: 10px 15px;
}
.data-cont-title{
height: 40%;
}
.data-cont-number{
height: 60%;
}
.data-cont-2{
width: 100%;
height: 90px;
background: linear-gradient(180deg,#133853, #040b11);
border: 1px solid #184546;
padding: 10px 15px;
}
.data-cont-2-title{
height: 60%;
}
.data-cont-2-number{
height: 40%;
}
.data-cont-3-title{
height: 50%;
}
.data-cont-3-number{
height: 50%;
}
.width-20{
float: left;
width: 20%;
height: 100%;
}
.width-50{
float: left;
width: 50%;
}
.height-265{
height: 265px;
}
.table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td {
border-top: 0;
}
</style>
<script type="text/javascript">
var fontcolor_grey = '#aeaeae';
var fontcolor_black = '#0d2336';
var color_blue = '#36FFF9';
var color_blue_other = '#1D4F6D';
var img_name = '';
var color = ['#13F7FF','#F713FF','#FFCC00','#00FF00','#00C2FF','#FF8000','#FF0000'];
$(function () {
updateNowTime();
/* 定时器 */
setInterval(updateNowTime, 1000); //<!--每隔1秒钟刷新一次-->
/*$("#top-url").attr("src",ext.contextPath + '/expo/top.do' );*/
$('.top-menu-list').hide();
$(".top-menu").on("click", function (e) {
$(".top-menu-list").toggle();
});
var data2 = [['2024-04-10 00:00',200],['2024-04-10 01:00',193],['2024-04-10 2:00',194],['2024-04-10 3:00',194],['2024-04-10 4:00',196],['2024-04-10 5:00',197],['2024-04-10 6:00',198],];
var data1 = [['2024-04-10 00:00',30],['2024-04-10 1:00',28],['2024-04-10 2:00',33],['2024-04-10 3:00',34],['2024-04-10 4:00',35],['2024-04-10 5:00',29],['2024-04-10 6:00',27],
['2024-04-10 7:00',27],['2024-04-10 8:00',28],['2024-04-10 9:00',30],['2024-04-10 10:00',30],['2024-04-10 11:00',31],['2024-04-10 12:00',32]];
var data4 = [['2024-04-10 00:00',21],['2024-04-10 1:00',22],['2024-04-10 2:00',23],['2024-04-10 3:00',24],['2024-04-10 4:00',25],['2024-04-10 5:00',26],['2024-04-10 6:00',29],
['2024-04-10 7:00',28],['2024-04-10 8:00',28],['2024-04-10 9:00',22],['2024-04-10 10:00',23],['2024-04-10 11:00',21],['2024-04-10 12:00',22]];
var data3 = [['2024-04-10 00:00',200],['2024-04-10 01:00',153],['2024-04-10 2:00',104],['2024-04-10 3:00',54],['2024-04-10 4:00',46],['2024-04-10 5:00',37],['2024-04-10 6:00',38],];
var legenddata = ['COD'];
var seriesdata = [
{
name: legenddata[0],
type: 'line',
symbol: 'none',
data: data2
}
]
echarts_line('inlet_line_cod',legenddata,seriesdata,color);
seriesdata = [
{
name: legenddata[0],
type: 'line',
symbol: 'none',
data: []
}
]
echarts_line_2('simulator_line_cod',legenddata,seriesdata);
seriesdata = [
{
name: legenddata[0],
type: 'bar',
symbol: 'none',
barWidth: '30%',
data: data3
}
]
echarts_line_2('pollutant_bar_cod',legenddata,seriesdata);
legenddata = ['实际值','预测值'];
seriesdata = [
{
name: legenddata[0],
type: 'line',
symbol: 'none',
data: data4
},
{
name: legenddata[1],
type: 'line',
symbol: 'none',
data: data1
}
]
echarts_line('effluent_line_cod',legenddata,seriesdata,color);
legenddata = ['用电量','电单耗'];
seriesdata = [
{
name: legenddata[0],
type: 'bar',
symbol: 'none',
data: data2
},
{
name: legenddata[1],
type: 'line',
symbol: 'none',
data: data1
}
]
echarts_line('statistics_barline_electric',legenddata,seriesdata,[color[2],color[5]]);
var data= [
{ value: 8, name: '优80~100%' },
{ value: 5, name: '良60~80%' },
{ value: 5, name: '中40~60%' },
{ value: 2, name: '差0~40%' }
]
doPie('model_pie_cod',data,'center','50%','COD','优');
doPie('model_pie_nh4',data,'center','50%','NH4','良');
doPie('model_pie_tn',data,'center','50%','TN','中');
doPie('model_pie_tp',data,'center','50%','TP','差');
//getData();
//getWeather();
/*setInterval(getData, 60000);*/ //<!--每隔1分钟钟刷新一次-->
});
function updateNowTime(){
var nowTime = moment().format('YYYY-MM-DD HH:mm:ss');
$('.top-date').html(nowTime.substring(0,10));
$('.top-time').html(nowTime.substring(11,19));
var hour = Number(nowTime.substring(11,13));
if(hour<7 || hour>17){
var src = "<%=request.getContextPath()%>/IMG/expo/night.png";
$('.dayOrNight').attr('src', src);
}else{
var src = "<%=request.getContextPath()%>/IMG/expo/day.png";
$('.dayOrNight').attr('src', src);
}
//getData();
}
function addAndRemove4Class(one,two){
$('.'+one).addClass(two);
$('.'+one).removeClass(one);
}
var pageCode = [];
var pageCodeType = [];
var p2_temperature_sw_seriesdata = [];
var p2_temperature_cg_seriesdata = [];
var p3_temperature_sw_seriesdata = [];
var p3_temperature_cg_seriesdata = [];
var p4_temperature_sw_seriesdata = [];
var p4_temperature_cg_seriesdata = [];
function getData(){
var bizid = "021SHSB";
var jsp_id = $('#jsp_id').val();
var time_input = $('#time_input').val();
//var time_input = '2024-03-06 13:00';
$.post(ext.contextPath + '/changGang/getCgData.do', {bizid:bizid,time:time_input,jsp_id:jsp_id} , function(data) {
var arr= JSON.parse(data);
//console.log(arr);
var windDirection = '0';
var transition = '0';
if(arr.rows!=null && arr.rows!=undefined && arr.rows!=''){
for(var i=0;i<arr.rows.length;i++){
var value =0;
var numtail=0;
var dataMax=0;
var rate = 1;
if(arr.rows[i].visualCacheConfig!=null
&& arr.rows[i].visualCacheConfig!=undefined
&& arr.rows[i].visualCacheConfig!=''){
var visualCacheConfig = arr.rows[i].visualCacheConfig;
if(visualCacheConfig.numtail!=null && visualCacheConfig.numtail!=undefined && (visualCacheConfig.numtail!='' || visualCacheConfig.numtail===0)){
numtail = visualCacheConfig.numtail;
}
}
if(arr.rows[i].visualCacheData!=null
&& arr.rows[i].visualCacheData!=undefined
&& arr.rows[i].visualCacheData!=''){
var visualCacheData = arr.rows[i].visualCacheData;
if(visualCacheData.inivalue!=null && visualCacheData.inivalue!=undefined && (visualCacheData.inivalue!='' || visualCacheData.inivalue===0)){
value = visualCacheData.inivalue;
}else if(visualCacheData.value!=null && visualCacheData.value!=undefined && (visualCacheData.value!='' || visualCacheData.value===0)){
value = visualCacheData.value;
}else {
if(arr.rows[i].mPoint!=null && arr.rows[i].mPoint!=undefined && arr.rows[i].mPoint!=''){
var mPoint = arr.rows[i].mPoint;
if(mPoint.parmvalue!=null && mPoint.parmvalue!=undefined && (mPoint.parmvalue!='' || mPoint.parmvalue===0)){
value = mPoint.parmvalue;
}
if(mPoint.alarmmax!=null && mPoint.alarmmax!=undefined && (mPoint.alarmmax!='' || mPoint.alarmmax===0)){
dataMax = mPoint.alarmmax;
}
if(mPoint.numtail!=null && mPoint.numtail!=undefined && (mPoint.numtail!='' || mPoint.numtail===0)){
numtail = mPoint.numtail;
}
}
}
if(visualCacheData.numtail!=null && visualCacheData.numtail!=undefined && (visualCacheData.numtail!='' || visualCacheData.numtail===0)){
numtail = visualCacheData.numtail;
}
if(visualCacheData.rate!=null && visualCacheData.rate!=undefined && (visualCacheData.rate!='' || visualCacheData.rate===0)){
rate = visualCacheData.rate;
}
}
value = parseFloat(value)*rate;
value = value.toFixed(numtail);
if(arr.rows[i].visualCacheData!=null
&& arr.rows[i].visualCacheData!=undefined
&& arr.rows[i].visualCacheData!='') {
var visualCacheData = arr.rows[i].visualCacheData;
//只显示固定数据
/*if ((visualCacheData.mpcode==null || visualCacheData.mpcode=='') && $("." + arr.rows[i].elementCode).length > 0) {
$("." + arr.rows[i].elementCode).html(toThousands(value));
}*/
if ($("." + arr.rows[i].elementCode).length > 0) {
$("." + arr.rows[i].elementCode).html(toThousands(value));
}
if (visualCacheData.mpcode!=null && visualCacheData.mpcode!='') {
if(pageCode.indexOf(visualCacheData.mpcode)!=-1){
var pageCodedata = pageCodeType[pageCode.indexOf(visualCacheData.mpcode)];
pageCodedata.push(arr.rows[i]);
}else{
pageCode.push(visualCacheData.mpcode);
var pageCodedata = [];
pageCodedata.push(arr.rows[i]);
pageCodeType.push(pageCodedata);
}
}
}
if(arr.rows[i].elementCode=='windDirection'){
windDirection = value;
}
if(arr.rows[i].elementCode=='transition'){
transition = value;
}
if(arr.rows[i].elementCode=='p2_temperature_sw'){
p2_temperature_sw_seriesdata = getdataseries(arr.rows[i].mPointHistory,arr.rows[i].visualCacheDataList,numtail);
}
if(arr.rows[i].elementCode=='p2_temperature_cg'){
p2_temperature_cg_seriesdata = getdataseries(arr.rows[i].mPointHistory,arr.rows[i].visualCacheDataList,numtail);
}
if(arr.rows[i].elementCode=='p3_temperature_sw'){
p3_temperature_sw_seriesdata = getdataseries(arr.rows[i].mPointHistory,arr.rows[i].visualCacheDataList,numtail);
}
if(arr.rows[i].elementCode=='p3_temperature_cg'){
p3_temperature_cg_seriesdata = getdataseries(arr.rows[i].mPointHistory,arr.rows[i].visualCacheDataList,numtail);
}
if(arr.rows[i].elementCode=='p4_temperature_sw'){
p4_temperature_sw_seriesdata = getdataseries(arr.rows[i].mPointHistory,arr.rows[i].visualCacheDataList,numtail);
}
if(arr.rows[i].elementCode=='p4_temperature_cg'){
p4_temperature_cg_seriesdata = getdataseries(arr.rows[i].mPointHistory,arr.rows[i].visualCacheDataList,numtail);
}
}
}
try {
//初始化mqtt
if ('${mqttStatus}' == '0') {
initialMqtt('processSimulation_'+'${cu.id}');
} else {
console.log('mq已关闭')
}
} catch (err) {
//处理错误
}
});
}
function getdataseries(mPointHistory,visualCacheDataList,numtail){
var dataseries =[];
if(mPointHistory!=null
&& mPointHistory!=undefined
&& mPointHistory!=''){
var mPointHistory = mPointHistory;
for(var m=0;m<mPointHistory.length;m++){
var dataserie =[];
dataserie.push(mPointHistory[m].measuredt.substr(0,19));
dataserie.push(mPointHistory[m].parmvalue.toFixed(numtail));
dataseries.push(dataserie);
}
}else{
if(visualCacheDataList!=null
&& visualCacheDataList!=undefined
&& visualCacheDataList!=''){
var visualCacheDataList = visualCacheDataList;
for(var m=0;m<visualCacheDataList.length;m++){
var dataserie =[];
dataserie.push(visualCacheDataList[m].insdt.substr(0,16));
dataserie.push(visualCacheDataList[m].value.toFixed(numtail));
dataseries.push(dataserie);
}
}
}
return dataseries;
}
function doPie(id,data,legend,center,text,subtext){
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行销毁。
lifeChart.dispose();
}
var option = {
color:[color[3],color[4],color[5],color[6]],
title: [
{
text: text,
left: '47%',
top: '25%',
textAlign: 'center',
textStyle: {
fontSize: '16',
fontWeight: '400',
color: '#fff',
textAlign: 'center',
},
subtext: subtext,
subtextStyle: {
fontSize: '35',
fontWeight: '400',
color: '#fff',
textAlign: 'center',
},
},
],
tooltip: {
trigger: 'item'
},
series: [
{
name: '模型精度',
type: 'pie',
radius: ['70%', '80%'],
data: data,
label: {
show: false,
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
}
]
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option,true);
}
function echarts_line(id,legenddata,seriesdata,colors){
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行销毁。
lifeChart.dispose();
}
var option = {
color:colors,
tooltip: {
trigger: 'axis'
},
legend: {
data: legenddata,
x:'right',
y: 'bottom',
textStyle: {
color: fontcolor_grey ,
fontSize: 12 ,
},
icon:'roundRect'
},
grid: {
left: '3%',
right: '4%',
bottom: '15%',
top: '3%',
containLabel: true
},
xAxis: {
type: 'time',
axisLabel: {
formatter: '{hh}'
},
},
yAxis: {
type: 'value',
axisLine: {
show: true,
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed' ,
}
}
},
series: seriesdata,
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option,true);
}
function echarts_line_2(id,legenddata,seriesdata){
var lifeChart = echarts.getInstanceByDom(document.getElementById(id));
//有的话就获取已有echarts实例的DOM节点。
if (lifeChart != null) { // 如果存在,就进行销毁。
lifeChart.dispose();
}
var option = {
color:color,
tooltip: {
trigger: 'axis'
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '5%',
containLabel: true
},
xAxis: {
type: 'time',
},
yAxis: {
type: 'value',
axisLine: {
show: true,
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed' ,
}
}
},
series: seriesdata,
};
lifeChart = echarts.init(document.getElementById(id));
lifeChart.setOption(option,true);
}
function homePage() {
$('.jump-area').hide();
$('.sub-region').hide();
$('.homePage').show();
}
function jumpArea(el) {
$('.homePage').hide();
$('.sub-region').hide();
$('.jump-area').show();
$('.'+el).show();
}
//添加千分位符合
function toThousands(num) {
var nums =num;
var re=/\d{1,3}(?=(\d{3})+$)/g;
var n1=0;
if(nums!=null && nums!='' && nums!=undefined){
n1=nums.toString().replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;});
}
return n1;
}
var locationhref = function (url) {
window.location.href = ext.contextPath + url;
}
var getWeather = function () {
$.post(ext.contextPath + "/work/weather/getList.do", {page: 1,rows:1,bizid:unitId,type:0}, function(data) {
if (data.total >0){
let temp = data.rows[0].temp;
let weather = data.rows[0].weather;
let precip = data.rows[0].precip;
let windSpeed = data.rows[0].windspeed;
var reg = new RegExp("/h","g");// 加'g',删除字符串里所有的/h
windSpeed=windSpeed.replace(reg,"");
let humidity = data.rows[0].humidity;
let vis = data.rows[0].vis;
$("#temperature").html(temp);
$("#weather").html(weather);
$("#precip").html(precip);
$("#windSpeed").html(windSpeed);
$("#humidity").html(humidity);
$("#vis").html(vis);
}else{
$.post(ext.contextPath + "/work/weather/getList.do", {page: 1,rows:1,bizid:unitId,type:1}, function(data) {
if (data.total >0){
let temp = data.rows[0].temp;
let weather = data.rows[0].weather;
let precip = data.rows[0].precip;
let windSpeed = data.rows[0].windspeed;
var reg = new RegExp("/h","g");// 加'g',删除字符串里所有的/h
windSpeed=windSpeed.replace(reg,"");
let humidity = data.rows[0].humidity;
let vis = data.rows[0].vis;
$("#temperature").html(temp);
$("#weather").html(weather);
$("#precip").html(precip);
$("#windSpeed").html(windSpeed);
$("#humidity").html(humidity);
$("#vis").html(vis);
}
},'json');
}
},'json');
}
function openExpoHomepage() {
if('${param.link}'==''){
window.open(ext.contextPath + "/expo/homepage.do?link=expo");
}
}
var client = null;
var dataType = 0;
function initialMqtt(mqttId) {
const options = {
clean: true,
connectTimeout: 10000,
clientId: mqttId,
username: "admin",
password: 'public'
}
const connectUrl = '${hostWeb}';
//console.log(connectUrl);
client = mqtt.connect(connectUrl, options);
//当重新连接启动触发回调
client.on('reconnect', function () {
// console.log('正在重连.....');
});
//连接断开后触发的回调
client.on("close", function () {
console.log('客户端已断开连接.....');
});
//从broker接收到断开连接的数据包后发出。MQTT 5.0特性
client.on("disconnect", function (packet) {
console.log('从broker接收到断开连接的数据包.....' + packet);
});
//客户端脱机下线触发回调
client.on("offline", function () {
console.log('客户端脱机下线.....');
});
//当客户端无法连接或出现错误时触发回调
client.on("error", (error) => {
console.log('客户端出现错误.....' + error);
});
//当客户端发送任何数据包时发出。这包括published()包以及MQTT用于管理订阅和连接的包
client.on("packetsend", (packet) => {
// console.log('客户端已发出数据包:' + packet);
});
//当客户端接收到任何数据包时发出。这包括来自订阅主题的信息包以及MQTT用于管理订阅和连接的信息包
client.on("packetreceive", (packet) => {
// console.log('收到:' + packet);
});
//成功连接后触发的回调
client.on("connect", function (connack) {
// layer.msg('成功连接上mq服务器');
console.log('成功连接上mqtt服务器');
//订阅某主题
/**
* client.subscribe(topic/topic array/topic object, [options], [callback])
* topic:一个string类型的topic或者一个topic数组,也可以是一个对象
* options
*/
client.subscribe('021SHSB_UP_VUE', {qos: 2});
//每隔2秒发布一次数据
// setInterval(publish, 2000)
});
function publish() {
//发布数据
/**
* client.publish(topic,message,[options], [callback])
*
* message: Buffer or String
* options:{
* qos:0, //默认0
* retain:false, //默认false
* dup:false, //默认false
* properties:{}
* }
* callback:function (err){}
*/
const message = "h5 message " + Math.random() + new Date();
client.publish("testtopic/123", message, {qos: 2});
}
//当客户端接收到发布消息时触发回调
/**
* topic:收到的数据包的topic
* message:收到的数据包的负载playload
* packet:收到的数据包
*/
client.on('message', (topic, message, packet) => {
//console.log(topic);
if (topic == '021SHSB_UP_VUE' && dataType == 0) {
dataType = 1;
var dataNumber = 86400;
var topic_json = JSON.parse(message.toString());
//console.log(topic_json);
if(topic_json!=null && topic_json!=undefined && topic_json!=''){
var windDirection = '0';
var transition = '0';
var p2_temperature_sw = 0;
var p2_temperature_cg = 0;
var p2_temperature_date = '';
var p3_temperature_sw = 0;
var p3_temperature_cg = 0;
var p3_temperature_date = '';
var p4_temperature_sw = 0;
var p4_temperature_cg = 0;
var p4_temperature_date = '';
for(var i=0;i<topic_json.length;i++){
var mpdata = topic_json[i];
var value = mpdata.parmvalue;
var measuredt = mpdata.measuredt.substr(0,19);
var numtail=0;
var dataMax=0;
var rate = 1;
if(pageCode.indexOf(mpdata.id)!=-1){
var arrs = pageCodeType[pageCode.indexOf(mpdata.id)];
//console.log(pageCode);
//console.log(arrs);
for(var a=0;a<arrs.length;a++){
arr = arrs[a];
//console.log(arr);
if(arr.visualCacheData!=null
&& arr.visualCacheData!=undefined
&& arr.visualCacheData!=''){
var visualCacheData = arr.visualCacheData;
if(arr.mPoint!=null && arr.mPoint!=undefined && arr.mPoint!=''){
var mPoint = arr.mPoint;
if(mPoint.alarmmax!=null && mPoint.alarmmax!=undefined && (mPoint.alarmmax!='' || mPoint.alarmmax===0)){
dataMax = mPoint.alarmmax;
}
if(mPoint.numtail!=null && mPoint.numtail!=undefined && (mPoint.numtail!='' || mPoint.numtail===0)){
numtail = mPoint.numtail;
}
}
if(visualCacheData.numtail!=null && visualCacheData.numtail!=undefined && (visualCacheData.numtail!='' || visualCacheData.numtail===0)){
numtail = visualCacheData.numtail;
}
if(visualCacheData.rate!=null && visualCacheData.rate!=undefined && (visualCacheData.rate!='' || visualCacheData.rate===0)){
rate = visualCacheData.rate;
}
}else{
var mPoint = arr.mPoint;
if(mPoint!=null && mPoint!=undefined && mPoint!=''){
if(mPoint.alarmmax!=null && mPoint.alarmmax!=undefined && (mPoint.alarmmax!='' || mPoint.alarmmax===0)){
dataMax = mPoint.alarmmax;
}
if(mPoint.numtail!=null && mPoint.numtail!=undefined && (mPoint.numtail!='' || mPoint.numtail===0)){
numtail = mPoint.numtail;
}
}
}
value = parseFloat(value)*rate;
value = value.toFixed(numtail);
if ($("." + arr.elementCode).length > 0) {
$("." + arr.elementCode).html(toThousands(value));
}
if($("."+arr.elementCode).parent().find('.nowdate').length > 0){
$("."+arr.elementCode).parent().find('.nowdate').html(nowdate.substring(11,16));
}
if(arr.elementCode=='p2_temperature_sw'){
p2_temperature_sw = value;
p2_temperature_date = measuredt;
if(p2_temperature_sw_seriesdata.length>4000){
p2_temperature_sw_seriesdata.shift();
}
p2_temperature_sw_seriesdata.push([p2_temperature_date,p2_temperature_sw]);
}
if(arr.elementCode=='p2_temperature_cg'){
p2_temperature_cg = value;
p2_temperature_date = measuredt;
if(p2_temperature_cg_seriesdata.length>dataNumber){
p2_temperature_cg_seriesdata.shift();
}
p2_temperature_cg_seriesdata.push([p2_temperature_date,p2_temperature_cg]);
}
if(arr.elementCode=='p3_temperature_sw'){
p3_temperature_sw = value;
p3_temperature_date = measuredt;
if(p3_temperature_sw_seriesdata.length>dataNumber){
p3_temperature_sw_seriesdata.shift();
}
p3_temperature_sw_seriesdata.push([p3_temperature_date,p3_temperature_sw]);
}
if(arr.elementCode=='p3_temperature_cg'){
p3_temperature_cg = value;
p3_temperature_date = measuredt;
if(p3_temperature_cg_seriesdata.length>dataNumber){
p3_temperature_cg_seriesdata.shift();
}
p3_temperature_cg_seriesdata.push([p3_temperature_date,p3_temperature_cg]);
}
if(arr.elementCode=='p4_temperature_sw'){
p4_temperature_sw = value;
p4_temperature_date = measuredt;
if(p4_temperature_sw_seriesdata.length>dataNumber){
p4_temperature_sw_seriesdata.shift();
}
p4_temperature_sw_seriesdata.push([p4_temperature_date,p4_temperature_sw]);
}
if(arr.elementCode=='p4_temperature_cg'){
p4_temperature_cg = value;
p4_temperature_date = measuredt;
if(p4_temperature_cg_seriesdata.length>dataNumber){
p4_temperature_cg_seriesdata.shift();
}
p4_temperature_cg_seriesdata.push([p4_temperature_date,p4_temperature_cg]);
}
}
}
}
if(p2_temperature_sw_seriesdata!=null && p2_temperature_cg_seriesdata.length>0){
echarts_line('p2_temperature',p2_temperature_sw_seriesdata,p2_temperature_cg_seriesdata);
}
if(p3_temperature_sw_seriesdata!=null && p3_temperature_cg_seriesdata.length>0){
echarts_line('p3_temperature',p3_temperature_sw_seriesdata,p3_temperature_cg_seriesdata);
}
if(p4_temperature_sw_seriesdata!=null && p4_temperature_cg_seriesdata.length>0){
echarts_line('p4_temperature',p4_temperature_sw_seriesdata,p4_temperature_cg_seriesdata);
}
}
dataType = 0;
}
});
//页面离开自动断开连接
$(window).bind("beforeunload", () => {
// console.log("客户端窗口关闭,断开连接");
client.disconnect();
})
}
</script>
</head>
<body style="overflow-x: auto;">
<div class="content-wrapper-bg content-wrapper-bg-darkblue">
<!-- BEGIN CONTAINER -->
<input type="hidden" name="jsp_id" id="jsp_id" value="process_simulation">
<div class="whole-body text-left font-size-21 font-color-white line-height-36">
<div class="row">
<div class="col-md-3">
<div class="whole-element-bg">
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">进水水质</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="row padding-topbottom-10">
<div class="col-sm-4">
<select id ="typeSelect" class="form-control select2 pull-left" onchange="changeEchartsbars(this.value)" >
<option value="inlet_line_a" selected>A线进水水质</option>
<option value="inlet_line_b">B线进水水质</option>
</select>
</div>
<div class="col-sm-8">
<ul class="nav nav-pills pull-right">
<li role="presentation" class="active">
<a href="#inlet_line_consume_1" data-toggle="tab" class="font-color-blue COD_Data">COD</a>
</li>
<li role="presentation">
<a href="#inlet_line_consume_2" data-toggle="tab" class="font-color-blue NH4_Data">NH4</a>
</li>
<li role="presentation">
<a href="#inlet_line_consume_3" data-toggle="tab" class="font-color-blue TP_Data">TP</a>
</li>
<li role="presentation">
<a href="#inlet_line_consume_4" data-toggle="tab" class="font-color-blue TN_Data">TN</a>
</li>
<li role="presentation">
<a href="#inlet_line_consume_5" data-toggle="tab" class="font-color-blue inflow_Data">进水量</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane active" id="inlet_line_consume_1">
<div class="col-xs-12 line_inlet" id="inlet_line_cod"></div>
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="inlet_line_consume_2">
<div class="col-xs-12 line_inlet" id="inlet_line_nh4"></div>
</div>
<div class="tab-pane" id="inlet_line_consume_3">
<div class="col-xs-12 line_inlet" id="inlet_line_tp"></div>
</div>
<div class="tab-pane" id="inlet_line_consume_4">
<div class="col-xs-12 line_inlet" id="inlet_line_tn"></div>
</div>
<div class="tab-pane" id="inlet_line_consume_5">
<div class="col-xs-12 line_inlet" id="inlet_line_inflow"></div>
</div>
</div>
</div>
</div>
</div>
<div class="whole-element-bg">
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">出水水质</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="row padding-topbottom-10">
<div class="col-sm-4">
<select id ="typeSelect" class="form-control select2 pull-left" onchange="changeEchartsbars(this.value)" >
<option value="effluent_line_a" selected>A线出水水质</option>
<option value="effluent_line_b">B线出水水质</option>
</select>
</div>
<div class="col-sm-8">
<ul class="nav nav-pills pull-right">
<li role="presentation" class="active">
<a href="#effluent_line_consume_1" data-toggle="tab" class="font-color-blue COD_Data">COD</a>
</li>
<li role="presentation">
<a href="#effluent_line_consume_2" data-toggle="tab" class="font-color-blue NH4_Data">NH4</a>
</li>
<li role="presentation">
<a href="#effluent_line_consume_3" data-toggle="tab" class="font-color-blue TP_Data">TP</a>
</li>
<li role="presentation">
<a href="#effluent_line_consume_4" data-toggle="tab" class="font-color-blue TN_Data">TN</a>
</li>
<li role="presentation">
<a href="#effluent_line_consume_5" data-toggle="tab" class="font-color-blue inflow_Data">出水量</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane active" id="effluent_line_consume_1">
<div class="col-xs-12 line_effluent" id="effluent_line_cod"></div>
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="effluent_line_consume_2">
<div class="col-xs-12 line_effluent" id="effluent_line_nh4"></div>
</div>
<div class="tab-pane" id="effluent_line_consume_3">
<div class="col-xs-12 line_effluent" id="effluent_line_tp"></div>
</div>
<div class="tab-pane" id="effluent_line_consume_4">
<div class="col-xs-12 line_effluent" id="effluent_line_tn"></div>
</div>
<div class="tab-pane" id="effluent_line_consume_5">
<div class="col-xs-12 line_effluent" id="effluent_line_inflow"></div>
</div>
</div>
</div>
</div>
</div>
<div class="whole-element-bg">
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">预警情况</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="row padding-topbottom-10">
<div class="col-sm-12">
<ul class="nav nav-pills pull-left">
<li role="presentation" class="active">
<a href="#inlet_earlyWarning_1" data-toggle="tab" class="font-color-blue inlet_earlyWarning_Data">进水水质</a>
</li>
<li role="presentation">
<a href="#effluent_earlyWarning_2" data-toggle="tab" class="font-color-blue effluent_earlyWarning_Data">模拟出水</a>
</li>
<li role="presentation">
<a href="#model_earlyWarning_3" data-toggle="tab" class="font-color-blue model_earlyWarning_Data">模型精度</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane height-265 active" id="inlet_earlyWarning_1">
<table class="table text-cente">
<thead>
<tr>
<th>指标</th>
<th>时间</th>
<th>浓度</th>
<th>预警</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="4">当前没有数据</td>
</tr>
<%--<tr>
<td><i class="fa fa-exclamation-triangle font-color-yellow margin-right-10"></i>COD</td>
<td>2023/12/26 12:32</td>
<td><span class="font-color-yellow pull-left">56</span><span class="font-color-gray pull-right">(mg/L)</span></td>
<td><span class="font-color-yellow">超出阈值</span></td>
</tr>
<tr>
<td><i class="fa fa-exclamation-triangle font-color-yellow margin-right-10"></i>COD</td>
<td>2023/12/26 12:32</td>
<td><span class="font-color-yellow pull-left">56</span><span class="font-color-gray pull-right">(mg/L)</span></td>
<td><span class="font-color-yellow">超出阈值</span></td>
</tr>
<tr>
<td><i class="fa fa-exclamation-triangle font-color-yellow margin-right-10"></i>COD</td>
<td>2023/12/26 12:32</td>
<td><span class="font-color-yellow pull-left">56</span><span class="font-color-gray pull-right">(mg/L)</span></td>
<td><span class="font-color-yellow">超出阈值</span></td>
</tr>
<tr>
<td><i class="fa fa-exclamation-triangle font-color-yellow margin-right-10"></i>COD</td>
<td>2023/12/26 12:32</td>
<td><span class="font-color-yellow pull-left">56</span><span class="font-color-gray pull-right">(mg/L)</span></td>
<td><span class="font-color-yellow">超出阈值</span></td>
</tr>
<tr>
<td><i class="fa fa-exclamation-triangle font-color-yellow margin-right-10"></i>COD</td>
<td>2023/12/26 12:32</td>
<td><span class="font-color-yellow pull-left">56</span><span class="font-color-gray pull-right">(mg/L)</span></td>
<td><span class="font-color-yellow">超出阈值</span></td>
</tr>--%>
</tbody>
</table>
</div>
<!-- /.tab-pane -->
<div class="tab-pane height-265" id="effluent_earlyWarning_2">
</div>
<div class="tab-pane height-265" id="model_earlyWarning_3">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="whole-element-bg">
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">污染物全流程浓度梯度</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="row padding-topbottom-10 padding-leftright-15">
<div class="col-sm-12">
<ul class="nav nav-pills pull-right">
<li role="presentation" class="active">
<a href="#pollutant_bar_consume_1" data-toggle="tab" class="font-color-blue COD_Data">COD</a>
</li>
<li role="presentation">
<a href="#pollutant_bar_consume_2" data-toggle="tab" class="font-color-blue NH4_Data">NH4</a>
</li>
<li role="presentation">
<a href="#pollutant_bar_consume_3" data-toggle="tab" class="font-color-blue TP_Data">TP</a>
</li>
<li role="presentation">
<a href="#pollutant_bar_consume_4" data-toggle="tab" class="font-color-blue TN_Data">TN</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane active" id="pollutant_bar_consume_1">
<div class="col-xs-12 bar_pollutant" id="pollutant_bar_cod"></div>
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="pollutant_bar_consume_2">
<div class="col-xs-12 bar_pollutant" id="pollutant_bar_nh4"></div>
</div>
<div class="tab-pane" id="pollutant_bar_consume_3">
<div class="col-xs-12 bar_pollutant" id="pollutant_bar_tp"></div>
</div>
<div class="tab-pane" id="pollutant_bar_consume_4">
<div class="col-xs-12 bar_pollutant" id="pollutant_bar_tn"></div>
</div>
</div>
</div>
</div>
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">数据看板</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="row">
<div class="col-sm-12 padding-topbottom-15 padding-leftright-15">
<ul class="nav nav-pills pull-left">
<li role="presentation">
<a href="#data_consume_1" data-toggle="tab" class="font-color-blue COD_Data">COD</a>
</li>
<li role="presentation">
<a href="#data_consume_2" data-toggle="tab" class="font-color-blue NH4_Data">NH4</a>
</li>
<li role="presentation">
<a href="#data_consume_3" data-toggle="tab" class="font-color-blue TP_Data">TP</a>
</li>
<li role="presentation">
<a href="#data_consume_4" data-toggle="tab" class="font-color-blue TN_Data">TN</a>
</li>
<li role="presentation" class="active">
<a href="#data_consume_5" data-toggle="tab" class="font-color-blue inflow_Data">水量</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane padding-topbottom-10 padding-leftright-15" id="data_consume_1">
</div>
<!-- /.tab-pane -->
<div class="tab-pane padding-topbottom-10 padding-leftright-15" id="data_consume_2">
</div>
<div class="tab-pane padding-topbottom-10 padding-leftright-15" id="data_consume_3">
</div>
<div class="tab-pane padding-topbottom-10 padding-leftright-15" id="data_consume_4">
</div>
<div class="tab-pane padding-topbottom-10 padding-leftright-15 active" id="data_consume_5">
<div class="row">
<div class="col-sm-3">
<div class="data-cont text-left">
<div class="data-cont-title"><span class="pull-left">当前出水瞬时</span><span class="pull-right">m³/h</span></div>
<div class="data-cont-number font-color-blue font-size-25">0</div>
</div>
</div>
<div class="col-sm-3">
<div class="data-cont text-left">
<div class="data-cont-title"><span class="pull-left">当前进水瞬时</span><span class="pull-right">m³/h</span></div>
<div class="data-cont-number font-color-blue font-size-25">0</div>
</div>
</div>
<div class="col-sm-3">
<div class="data-cont text-left">
<div class="data-cont-title"><span class="pull-left">今日累计进水</span><span class="pull-right">m³</span></div>
<div class="data-cont-number font-color-blue font-size-25">0</div>
</div>
</div>
<div class="col-sm-3">
<div class="data-cont text-left">
<div class="data-cont-title"><span class="pull-left">今日累计出水</span><span class="pull-right">m³</span></div>
<div class="data-cont-number font-color-blue font-size-25">0</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">离线模拟</h4>
<div class="box-tools pull-right font-weight-700 font-size-14">当前时间 <span class="">2023/12/26 13:23</span></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="font-weight-700 text-left padding-topbottom-15 padding-leftright-15">模拟设置</div>
<div class="data-cont-2">
<div class="width-20">
<div class="data-cont-2-title"><div>进水COD</div><div>(mg/L)</div></div>
<div class="data-cont-2-number font-color-redlight font-size-20">0</div>
</div>
<div class="width-20">
<div class="data-cont-2-title"><div>进水NH4</div><div>(mg/L)</div></div>
<div class="data-cont-2-number font-color-redlight font-size-20">0</div>
</div>
<div class="width-20">
<div class="data-cont-2-title"><div>进水TN</div><div>(mg/L)</div></div>
<div class="data-cont-2-number font-color-redlight font-size-20">0</div>
</div>
<div class="width-20">
<div class="data-cont-2-title"><div>进水TP</div><div>(mg/L)</div></div>
<div class="data-cont-2-number font-color-redlight font-size-20">0</div>
</div>
<div class="width-20">
<div class="data-cont-2-title"><div>进水流量</div><div>(m³/h)</div></div>
<div class="data-cont-2-number font-color-redlight font-size-20">0</div>
</div>
</div>
<div class="row padding-topbottom-15 padding-leftright-15">
<div class="col-sm-12">
<ul class="nav nav-pills pull-right">
<li role="presentation" class="active">
<a href="#simulator_line_consume_1" data-toggle="tab" class="font-color-blue COD_Data">COD</a>
</li>
<li role="presentation">
<a href="#simulator_line_consume_2" data-toggle="tab" class="font-color-blue NH4_Data">NH4</a>
</li>
<li role="presentation">
<a href="#simulator_line_consume_3" data-toggle="tab" class="font-color-blue TP_Data">TP</a>
</li>
<li role="presentation">
<a href="#simulator_line_consume_4" data-toggle="tab" class="font-color-blue TN_Data">TN</a>
</li>
<li role="presentation">
<a href="#simulator_line_consume_5" data-toggle="tab" class="font-color-blue TN_Data">能耗</a>
</li>
<li role="presentation">
<a href="#simulator_line_consume_6" data-toggle="tab" class="font-color-blue TN_Data">水量</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane active" id="simulator_line_consume_1">
<div class="col-xs-12 line_simulator" id="simulator_line_cod"></div>
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="simulator_line_consume_2">
<div class="col-xs-12 line_simulator" id="simulator_line_nh4"></div>
</div>
<div class="tab-pane" id="simulator_line_consume_3">
<div class="col-xs-12 line_simulator" id="simulator_line_tp"></div>
</div>
<div class="tab-pane" id="simulator_line_consume_4">
<div class="col-xs-12 line_simulator" id="simulator_line_tn"></div>
</div>
<div class="tab-pane" id="simulator_line_consume_5">
<div class="col-xs-12 line_simulator" id="simulator_line_energy"></div>
</div>
<div class="tab-pane" id="simulator_line_consume_6">
<div class="col-xs-12 line_simulator" id="simulator_line_water"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="whole-element-bg">
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">经济指标</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-left padding-topbottom-10 padding-leftright-15">
<div class="row">
<div class="col-sm-4">
<div class="data-cont-2">
<div class="data-cont-3-title">
<span class="margin-right-10"><img src="<%=request.getContextPath()%>/IMG/changGang/electric.png"></span>
<span>今日电量</span></div>
<div class="data-cont-3-number">
<span class="font-color-yellow font-size-28 margin-right-10">0</span><span>万kwh</span>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="data-cont-2">
<div class="data-cont-3-title">
<span class="margin-right-10"><img src="<%=request.getContextPath()%>/IMG/changGang/electric.png"></span>
<span>电单耗</span></div>
<div class="data-cont-3-number">
<span class="font-color-yellow font-size-28 margin-right-10">0</span><span>kwh</span>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="data-cont-2">
<div class="data-cont-3-title">
<span class="margin-right-10"><img src="<%=request.getContextPath()%>/IMG/changGang/medicament.png"></span>
<span>药单耗</span></div>
<div class="data-cont-3-number">
<span class="font-color-redlight font-size-28 margin-right-10">0</span><span>ppm</span>
</div>
</div>
</div>
</div>
<div class="row padding-topbottom-15">
<div class="col-sm-6">
<ul class="nav nav-tabs pull-left">
<li role="presentation" class="active">
<a href="#statistics_barline_consume_1" data-toggle="tab" class="electric_statistics">电耗统计</a>
</li>
<li role="presentation">
<a href="#statistics_barline_consume_2" data-toggle="tab" class="drug_statistics">药耗统计</a>
</li>
</ul>
</div>
<div class="col-sm-6">
<select id ="yearSelect" class="form-control select-style-2 select2 pull-right" onchange="changeEchartsbars(this.value)" >
<option value="2023" selected>2023</option>
<option value="2022">2022</option>
</select>
</div>
</div>
<div class="tab-content">
<div class="tab-pane active" id="statistics_barline_consume_1">
<div class="col-xs-12 statistics_barline" id="statistics_barline_electric"></div>
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="statistics_barline_consume_2">
<div class="col-xs-12 statistics_barline" id="statistics_barline_drug"></div>
</div>
</div>
</div>
</div>
<div class="box box-transparent ">
<div class="box-header">
<h4 class="box-title font-color-white">模型精度</h4>
<div class="box-tools pull-right"></div>
</div>
<!-- /.box-header -->
<div class="box-body font-size-14 line-height-15 text-center">
<div class="model_pie" id="model_pie_cod"></div>
<div class="model_pie" id="model_pie_nh4"></div>
<div class="model_legend">
<span class="width-50"><i class="fa fa-circle font-color-green"></i>优(80~100%)</span>
<span class="width-50"><i class="fa fa-circle font-color-blue"></i>良(60~80%)</span>
<span class="width-50"><i class="fa fa-circle font-color-yellow"></i>中(40~60%)</span>
<span class="width-50"><i class="fa fa-circle font-color-red"></i>差(0~40%)</span>
</div>
<div class="model_legend">
<span class="width-50"><i class="fa fa-circle font-color-green"></i>优(0~0.5mg/L)</span>
<span class="width-50"><i class="fa fa-circle font-color-blue"></i>良(0.5~1mg/L)</span>
<span class="width-50"><i class="fa fa-circle font-color-yellow"></i>中(1~1.5mg/L)</span>
<span class="width-50"><i class="fa fa-circle font-color-red"></i>差(>1.5mg/L)</span>
</div>
<div class="model_pie" id="model_pie_tn"></div>
<div class="model_pie" id="model_pie_tp"></div>
<div class="model_legend">
<span class="width-50"><i class="fa fa-circle font-color-green"></i>优(80~100%)</span>
<span class="width-50"><i class="fa fa-circle font-color-blue"></i>良(60~80%)</span>
<span class="width-50"><i class="fa fa-circle font-color-yellow"></i>中(40~60%)</span>
<span class="width-50"><i class="fa fa-circle font-color-red"></i>差(0~40%)</span>
</div>
<div class="model_legend">
<span class="width-50"><i class="fa fa-circle font-color-green"></i>优(0~0.5mg/L)</span>
<span class="width-50"><i class="fa fa-circle font-color-blue"></i>良(0.5~1mg/L)</span>
<span class="width-50"><i class="fa fa-circle font-color-yellow"></i>中(1~1.5mg/L)</span>
<span class="width-50"><i class="fa fa-circle font-color-red"></i>差(>1.5mg/L)</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>