Files
SIPAIIS_WMS_JSSW/WebRoot/jsp/report/customReportView.jsp

607 lines
28 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" %>
<%@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>