Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/report/customReportView.jsp
2026-01-16 14:13:44 +08:00

607 lines
28 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@page import="com.sipai.entity.report.CustomReport" %>
<% request.setAttribute("Type_group", CustomReport.Type_group);%>
<% request.setAttribute("Type_sys", CustomReport.Type_sys);%>
<% request.setAttribute("Type_user", CustomReport.Type_user);%>
<% request.setAttribute("frequencyType_min", CustomReport.frequencyType_min);%>
<% request.setAttribute("frequencyType_hour", CustomReport.frequencyType_hour);%>
<% request.setAttribute("frequencyType_day", CustomReport.frequencyType_day);%>
<% request.setAttribute("frequencyType_month", CustomReport.frequencyType_month);%>
<style type="text/css">
.W120 .th-inner {
width: 150px !important;
}
.W80 .th-inner {
width: 80px !important;
}
</style>
<script type="text/javascript">
var beginTimeStore1 = '';
var endTimeStore1 = '';
var unitId = unitId;
var colors = ['#c12e34', '#e6b600', '#0098d9', '#2b821d', '#005eaa', '#339ca8', '#cda819', '#32a487', '#f3a43b', '#60c0dd', '#d7504b', '#c6e579', '#f4e001'];
function initDate1() {
//定义locale汉化插件
beginTimeStore1 = moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm');
endTimeStore1 = moment().subtract(0, 'days').format('YYYY-MM-DD HH:mm');
var locale = {
"format": 'YYYY-MM-DD HH:mm',
"separator": " ~ ",
"applyLabel": "确定",
"cancelLabel": "取消",
"fromLabel": "起始时间",
"toLabel": "结束时间'",
"customRangeLabel": "自定义",
"weekLabel": "W",
"daysOfWeek": ["日", "一", "二", "三", "四", "五", "六"],
"monthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
"firstDay": 1
};
$('#reservationtime1').daterangepicker({
"timePicker": true,
"timePicker24Hour": true,
"linkedCalendars": false,
"autoUpdateInput": false,
"timePickerIncrement": 10,
"locale": locale,
//汉化按钮部分
ranges: {
'今日': [moment(), moment().subtract(-1, 'days')],
'昨日': [moment().subtract(1, 'days'), moment()],
'最近7日': [moment().subtract(6, 'days'), moment().subtract(-1, 'days')],
'本月': [moment().startOf('month'), moment().endOf('month').subtract(-1, 'days')],
'上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month').subtract(-1, 'days')]
},
startDate: beginTimeStore1,
endDate: endTimeStore1
}, function (start, end, label) {
beginTimeStore1 = start.format(this.locale.format);
endTimeStore1 = end.format(this.locale.format);
if (!this.startDate) {
this.element.val('');
} else {
this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));
}
});
var oldreservationtime1 = "${param.oldreservationtime1}";
if (oldreservationtime1 != "" && oldreservationtime1.length > 0) {
beginTimeStore1 = oldreservationtime1.substring(0, 16);
endTimeStore1 = oldreservationtime1.substring(19, 35);
$('#reservationtime1').val(oldreservationtime1);
} else {
$('#reservationtime1').val(beginTimeStore1 + locale.separator + endTimeStore1);
}
};
var mpcodestr = "";
var mpnamestr = "";
var mpunitstr = "";
var unitIdstr = "";
var hmpids = "";
var numtailstr = "";
var chooseDataString = "";
var chooseDataNum = 0;
var cNum = 0;
var totalSize = 0;
$(function () {
hmpids = "${mpids}";
var hmpidss = hmpids.substring(0, hmpids.length - 1).split(",");
var newmpidss = "";
totalSize = hmpidss.length;
if (hmpidss.length > 0) {
for (var h = 0; h < hmpidss.length; h++) {
if ("${param.oldmpids}".indexOf(hmpidss[h]) > -1) {
// newmpidss+=hmpidss[h]+",";
} else {
newmpidss += hmpidss[h] + ",";
}
}
}
hmpids = newmpidss + "${param.oldmpids}";
$('#mpids').val(newmpidss + "${param.oldmpids}");
// sessionStorage.setItem("hmpids", hmpids);
// var viewHeight = jQuery(window).height();
initDate1();
getMpointJson();
getFormValue();
});
function getFormValue() {
// if (sessionStorage.getItem("reservationtime1")) {
// document.getElementById('reservationtime1').value = sessionStorage.getItem("reservationtime1");
// }
// if (sessionStorage.getItem("frequencyType2")) {
// document.getElementById('frequencyType2').value = sessionStorage.getItem("frequencyType2");
// }
// if (sessionStorage.getItem("frequency2")) {
// document.getElementById('frequency2').value = sessionStorage.getItem("frequency2");
// }
// if (sessionStorage.getItem("calculation2")) {
// document.getElementById('calculation2').value = sessionStorage.getItem("calculation2");
// }
// if (sessionStorage.getItem("chooseDataContent")) {
// $("#chooseDataContent").html(sessionStorage.getItem("chooseDataContent"));
// }
// if (sessionStorage.getItem("chooseDataNum") != null) {
// sessionStorage.setItem("chooseDataNum", parseInt(sessionStorage.getItem("chooseDataNum")) + chooseDataNum);
// chooseDataNum += parseInt(sessionStorage.getItem("chooseDataNum"));
// }
doChooseDataSearch();
}
function addJsPoint() {
// let hmpids = sessionStorage.getItem("hmpids");
if (hmpids) {
let selectJsPointAndBizid = hmpids.substring(0, hmpids.length - 1).split(",");
for (var i = 0; i < chooseDataNum; i++) {
var m = i + 1;
var id = "jsPoint" + m;
var x = document.getElementById(id);
if (x) {
document.getElementById(id).options.length = 0;
for (let s = 0; s < selectJsPointAndBizid.length; s++) {
let selectJsPoint = selectJsPointAndBizid[s].split(":");
document.getElementById("jsPoint" + m).options.add(new Option(selectJsPoint[2], selectJsPoint[0]));
// $("#" + id).append("<option value='" + selectJsPoint[0] + "'>" + selectJsPoint[0] + "</option>");
}
}
}
}
}
function getMpointJson() {
var mPionts = hmpids.substring(0, hmpids.length - 1).split(",");
// console.log(mPionts)
for (var i = 0; i < mPionts.length; i++) {
let m = mPionts[i].substring(0, hmpids.length - 1).split(":");
mpcodestr += m[0] + ",";
mpunitstr += m[1] + ",";
mpnamestr += m[2] + ",";
unitIdstr += m[3] + ",";
numtailstr += m[4] + ",";
}
if ($("#frequency2").val()) {
getHistoryList();
}
// console.log(hmpids);
// $.post(ext.contextPath + "/report/customReport/getMPointJson.do", {checkedIds: hmpids}, function (data) {
// var ArrayDatas = eval("(" + data + ")");
// // console.log(ArrayDatas);
// for (var i = 0; i < ArrayDatas.length; i++) {
// mpcodestr += ArrayDatas[i].mpointcode + ",";//测量点code
// mpnamestr += ArrayDatas[i].parmname + ",";//测量点名称
// mpunitstr += ArrayDatas[i].unit + ",";//测量点单位
// unitIdstr += ArrayDatas[i].bizid + ",";//厂
// }
// if ($("#frequency2").val()) {
// getHistoryList();
// }
// });
}
function getHistoryList() {
var namearr = mpnamestr.substring(0, mpnamestr.length - 1);
namearr = namearr.split(",");
var unitstr = mpunitstr.substring(0, mpunitstr.length - 1);
unitstr = unitstr.split(",");
var numtails = numtailstr.substring(0, numtailstr.length - 1);
numtails = numtails.split(",");
var length = namearr.length;
var mpoint = [];
var checkobx = {};
checkobx.checkbox = true;
//mpoint.push(checkobx);
var measuredt = {};
measuredt.class = 'W120';
measuredt.field = 'measuredt';
measuredt.title = '时间';
measuredt.align = 'center';
measuredt.valign = 'middle';
measuredt.width = '145px';
measuredt.sortable = true;
measuredt.footerFormatter = function (value) {
return "最小值<br>最大值<br>平均值<br>合计值";
}
mpoint.push(measuredt);
// var type = {};
// type.class = 'W80';
// type.field = 'type';
// type.title = '类型';
// type.align = 'center';
// type.valign = 'middle';
// type.width = '80px';
// type.sortable = true;
// mpoint.push(type);
for (var i = 0; i < namearr.length; i++) {
// var color = colors[i % namearr.length];
var parmvalue = {};
parmvalue.field = 'paramvalue' + i;
parmvalue.title = namearr[i] + "<br>" + unitstr[i];
parmvalue.align = 'center';
parmvalue.valign = 'middle';
parmvalue.sortable = true;
// parmvalue.width=80;
// var css1 = {};
// css1.color = color;
// var cellstyle = {};
// cellstyle.css = css1;
// parmvalue.cellStyle = cellstyle;
// parmvalue.formatter = function (value, row, index) {
// console.log(index)
// return Number(value).toFixed(Number(numtails[index]));
// }
parmvalue.footerFormatter = function (value) {
// console.log(cNum)
if ((totalSize - 1) < cNum) {
cNum = 0;
}
let sum = 0;
let max = "-";
let min = "-";
let avg = 0;
let dataNum = 0;
for (var k in value) {
let content = value[k];
for (var key in content) {
if (key == "paramvalue" + cNum) {
sum = Number(sum) + Number(content[key]);
dataNum++;
if (max == '-') {
max = content[key];
} else {
if (Number(max) < Number(content[key])) {
max = content[key];
}
}
if (min == '-') {
min = content[key];
} else {
if (Number(min) > Number(content[key])) {
min = content[key];
}
}
}
}
}
cNum++;
// return sum + "<br>" + "1";
avg = (Number(sum) / dataNum).toFixed(Number(numtails[cNum - 1]))
return Number(min).toFixed(Number(numtails[cNum - 1])) + "<br>" + Number(max).toFixed(Number(numtails[cNum - 1])) + "<br>" + avg + "<br>" + sum.toFixed(Number(numtails[cNum - 1]));
}
mpoint.push(parmvalue);
}
// console.log(mpoint)
// var jsonStr1 = JSON.stringify(mpoint)
$("#viewtable").bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/report/customReport/getTabListFromSP.do', // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
pageList: [10, 20, 50], // 设置页面可以显示的数据条数
pageSize: 10, // 页面数据条数
pageNumber: 1, // 首页页码
sidePagination: 'client', // 设置为服务器端分页
showFooter: true,
rowStyle: function (row, index) {
var classes = ['active', 'success', 'info', 'warning', 'danger'];
return {
classes: classes[row / 5]
};
return {};
},
queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
return {
ids: hmpids,
sdt: beginTimeStore1,
edt: endTimeStore1,
bizId: hiddenUnitId,
frequencytype: $('#frequencyType2').val(),
frequency: $('#frequency2').val(),
calculation: $('#calculation2').val(),
// forwardingFrequency: $('#forwardingFrequency').val(),
chooseDataString: chooseDataString
}
},
sortName: 'measuredt', // 要排序的字段
sortOrder: 'asc', // 排序规则
onClickRow: function (row) {//单击行事件,执行查看功能
//viewFun(row.id);
},
columns: mpoint,
onLoadSuccess: function () { //加载成功时执行
adjustBootstrapTableView("table");
},
onLoadError: function () { //加载失败时执行
console.info("加载数据失败");
}
})
// $(".th-inner").css('background-color','#659be0');
}
function dosearch() {
cNum = 0;
// sessionStorage.setItem("frequencyType2", $("#frequencyType2").val());
// sessionStorage.setItem("reservationtime1", $("#reservationtime1").val());
// sessionStorage.setItem("frequency2", $("#frequency2").val());
// sessionStorage.setItem("calculation2", $("#calculation2").val());
var frequency = $('#frequency2').val();
var frequencyType = $('#frequencyType2').val();
// var forwardingFrequencyNum = $('#forwardingFrequency').val();
if ($.isNumeric(frequency) && $('#mpids').val() != "") {
mpcodestr = "";
mpnamestr = "";
mpunitstr = "";
unitIdstr = "";
numtailstr = "";
getMpointJson();
$("#viewtable").bootstrapTable('refresh');
} else {
if ($('#mpids').val() == "") {
alert("请重新选择测量点或方案进行查询");
} else if (frequency == "") {
alert("请填写数值进行查询");
}
}
}
function deleteData() {
hmpids = "";
chooseDataString = "";
chooseDataNum = 0;
$('#mpids').val("");
// sessionStorage.setItem("hmpids", "")
// sessionStorage.setItem("calculation2", "")
// sessionStorage.setItem("frequency2", "")
// sessionStorage.setItem("frequencyType2", "0")
// sessionStorage.setItem("chooseDataContent", "")
// sessionStorage.setItem("chooseDataNum", "0")
$("#viewtable").bootstrapTable("removeAll");
$("#frequency2").val("");
$("#viewtable").html('');
$('.info').removeClass('info');//移除蓝色背景
elementArr.splice(0, elementArr.length);//清空数组
document.getElementById('chooseDatadrop').innerHTML = '';
// getEcharts();
doChooseDataSearchDetel();
}
function doOutExcel() {
let idsUrl = encodeURIComponent(hmpids);
let url = ext.contextPath + "/report/customReport/getTabListFromSPExcel.do?sdt=" + beginTimeStore1
+ "&edt=" + endTimeStore1 + "&ids=" + idsUrl + "&frequencytype=" + $('#frequencyType2').val() + "&frequency=" + $('#frequency2').val()
+ "&calculation=" + $('#calculation2').val() + "&forwardingFrequency=" + $('#forwardingFrequency').val() + "&chooseDataString=" + chooseDataString + "&bizId=" + hiddenUnitId
+ "&pid=" + '${pid}';
window.open(url);
}
$(document).click(function (e) {
var divTree = $('#chooseDatadrop'); // 设置目标区域
if (!divTree.is(e.target) && divTree.has(e.target).length === 0) {
divTree.hide()
}
});
function showChooseData() {
// addJsPoint();
document.getElementById('chooseDatadrop').style.display = 'block';
}
function addChooseData() {
chooseDataNum++;
// sessionStorage.setItem("chooseDataNum", chooseDataNum);
let html = "";
html += "<div style='float:left;width: 100%;height: 45px;'>";
html += "<label class='col-sm-1 control-label' style='line-height: 34px;'>测点</label>";
html += "<div class='col-sm-3'>";
html += "<select class='form-control select2' id='jsPoint" + chooseDataNum + "' name='jsPoint" + chooseDataNum + "'>";
let selectJsPointAndBizid = hmpids.substring(0, hmpids.length - 1).split(",");
for (let i = 0; i < selectJsPointAndBizid.length; i++) {
let selectJsPoint = selectJsPointAndBizid[i].split(":");
html += "<option value='" + selectJsPoint[0] + "'>" + selectJsPoint[2] + "</option>";
}
html += "</select>";
html += "</div>";
html += "<label class='col-sm-1 control-label' style='line-height: 34px;'>类型</label>";
html += "<div class='col-sm-3'>";
html += "<select class='form-control select2' id='jstype" + chooseDataNum + "' name='jstype" + chooseDataNum + "'>";
html += "<option value='>' selected='selected'>></option>";
html += "<option value='>='>>=</option>";
html += "<option value='='>=</option>";
html += "<option value='<'><</option>";
html += "<option value='<='><=</option>";
html += "</select>";
html += "</div>";
html += "<label class='col-sm-1 control-label' style='line-height: 34px;'>数值</label>";
html += "<div class='col-sm-3'>";
html += "<input class='form-control' type='text' id='jsvalue" + chooseDataNum + "' name='jsvalue" + chooseDataNum + "' value='0'>";
html += "</div>";
html += "</div>";
// console.log(html)
$("#chooseDataContent").append(html);
// if (sessionStorage.getItem("chooseDataContent")) {
// sessionStorage.setItem("chooseDataContent", sessionStorage.getItem("chooseDataContent") + html);
// } else {
// sessionStorage.setItem("chooseDataContent", html);
// }
}
// 确认
function doChooseDataSearch() {
chooseDataString = "";
if (chooseDataNum > 0) {
for (let i = 0; i < chooseDataNum; i++) {
let jstype = $("#jstype" + (i + 1)).val();
let jsvalue = $("#jsvalue" + (i + 1)).val();
let jsPoint = $("#jsPoint" + (i + 1)).val();
chooseDataString += jstype + ":" + jsvalue + ":" + jsPoint + ",";
}
// console.log("is html ", $("#chooseDataContent").html())
// // $("#chooseDataContent").append(html)
// sessionStorage.setItem("chooseDataContent", $("#chooseDataContent").html());
$("#viewtable").bootstrapTable('refresh');
// console.log(chooseDataString)
} else {
// alert("请添加筛选条件");
}
}
function doChooseDataSearchDetel() {
chooseDataNum = 0;
chooseDataString = "";
$("#chooseDataContent").html("");
$("#viewtable").bootstrapTable('refresh');
}
</script>
<input id="mpids" name="mpids" type="hidden" style="width: 500px;" value=""/>
<div class="box box-solid" id="box-echart">
<div class="box-header with-border">
<h3 class="box-title">报表展示</h3>
<div class="box-tools pull-right">
</div>
</div>
<!-- <div class="box-body " style="height: 30px;">
<div id="tipdiv"></div>
</div> -->
<div class="box-body " style="height: 40px;">
<div class="input-group pull-left input-group-sm">
<input type="text" class="form-control pull-left" id="reservationtime1" style="width:230px">
<div class="input-group pull-left input-group-sm" style="margin-left: 5px;width: 150px;">
<label class="col-sm-6 control-label"
style="line-height: 30px;padding:0px;text-align: center;">频率类别</label>
<div class="control-label col-sm-6" style="padding:0px;">
<select id="frequencyType2" name="frequencyType2" class="form-control select2"
style="height: 30px;padding: 0px 10px;">
<option value="${frequencyType_min}"
<c:if test="${param.frequencytype==frequencyType_min }">selected</c:if>>分钟
</option>
<option value="${frequencyType_hour}"
<c:if test="${param.frequencytype==frequencyType_hour }">selected</c:if>>小时
</option>
<option value="${frequencyType_day}"
<c:if test="${param.frequencytype==frequencyType_day }">selected</c:if>>天
</option>
<option value="${frequencyType_month}"
<c:if test="${param.frequencytype==frequencyType_month }">selected</c:if>>月
</option>
</select>
</div>
</div>
<div class="input-group pull-left input-group-sm" style="width: 100px;">
<label class="col-sm-6 control-label"
style="line-height: 30px;padding:0px;text-align: center;">数值</label>
<div class="control-label col-sm-6" style="padding:0px;">
<input type="text" class="form-control pull-left" id="frequency2" style="height: 30px;"
value="${param.frequency}">
</div>
</div>
<div class="input-group pull-left input-group-sm" style="margin-left: 5px;width: 180px;">
<label class="col-sm-6 control-label"
style="line-height: 30px;padding:0px;text-align: center;">计算方式</label>
<div class="control-label col-sm-6" style="padding:0px;">
<select id="calculation2" name="calculation2" class="form-control select2"
style="height: 30px;padding: 0px 10px;">
<option value="first" <c:if test="${param.calculation=='first' }">selected</c:if>>首值</option>
<option value="avg" <c:if test="${param.calculation=='avg' }">selected</c:if>>均值</option>
<option value="max" <c:if test="${param.calculation=='max' }">selected</c:if>>最大值</option>
<option value="min" <c:if test="${param.calculation=='min' }">selected</c:if>>最小值</option>
</select>
</div>
</div>
<%-- <div class="input-group pull-left input-group-sm" style="width: 130px;">--%>
<%-- <label class="col-sm-8 control-label"--%>
<%-- style="line-height: 30px;padding:0px;text-align: center;">转发频率</label>--%>
<%-- <div class="control-label col-sm-4" style="padding:0px;">--%>
<%-- <input type="text" class="form-control pull-left" id="forwardingFrequency" style="height: 30px;"--%>
<%-- value="5">--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="input-group-btn pull-left" style="margin-left:5px;">
<button type="button" class="btn btn-default" onclick="dosearch();"><i class="fa fa-search"></i> 查询
</button>
</div>
</div>
</div>
<div class="box-body " style="height: 40px;">
<div class="input-group pull-right input-group-sm" style="margin-left: 5px;">
<!-- <li class="dropdown" > -->
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="showChooseData();">
<div style="background-color: #1890FF;width:20pt;height:20pt;border-radius: 2pt;cursor: pointer;"
title="数据筛选">
<img src="<%=request.getContextPath()%>/IMG/curve/dataFiltering.png"
style="width:100%;height:100%;"/>
</div>
</a>
<ul id="chooseDatadrop" class="dropdown-menu" data-stopPropagation="true"
style="width:700px;height:340px;overflow: hidden;box-shadow:#d2cdcd 0px 3px 5px 0px;">
<div style="float: left;width: 100%;height: 30px;">
<button type="button" class="btn btn-box-tool" onclick="addChooseData();"><i class="fa fa-plus"></i>
</button>
</div>
<div id="chooseDataContent" style="float: left;width: 100%;height: 260px;overflow: auto;">
</div>
<div style="float: left;width: 100%;height: 40px;padding-top: 10px;">
<div class="pull-right"
style="width:50px;height:25px;border-radius: 4px;background: #3c8dbc;margin-right: 10px;">
<div style="text-align:center;line-height:25px;font-size:12px;color:#ffffff;font-weight:700;font-family: MicrosoftYaHei, MicrosoftYaHei-Bold;cursor: pointer;"
onclick="doChooseDataSearch();">确认
</div>
</div>
<div class="pull-right"
style="width:50px;height:25px;border-radius: 4px;background: #3c8dbc;margin-right: 10px;">
<div style="text-align:center;line-height:25px;font-size:12px;color:#ffffff;font-weight:700;font-family: MicrosoftYaHei, MicrosoftYaHei-Bold;cursor: pointer;"
onclick="doChooseDataSearchDetel();">清除
</div>
</div>
</div>
</ul>
</div>
<div class="input-group pull-right input-group-sm" style="margin-left: 5px;">
<div style="background-color: #1890FF;width:20pt;height:20pt;border-radius: 2pt;cursor: pointer;"
title="数据导出" onclick="doOutExcel();">
<img src="<%=request.getContextPath()%>/IMG/curve/tableDownload.png"
style="width:100%;height:100%;"/>
</div>
</div>
<div class="input-group pull-right input-group-sm" style="margin-left:10px;">
<div style="background-color: #1890FF;width:20pt;height:20pt;border-radius: 2pt;cursor: pointer;"
title="清除数据" onclick="deleteData();">
<img src="<%=request.getContextPath()%>/IMG/curve/delete.png"
style="width:100%;height:100%;"/>
</div>
</div>
</div>
<div class="box-body ">
<div class="box-body no-padding">
<table id="viewtable" style="overflow: auto;"></table>
</div>
</div>
</div>