change - 振动实时曲线、振动数据多曲线、振动数据单曲线

master
yinq 4 days ago
parent 192ad94a65
commit 1998c69773

@ -49,6 +49,26 @@ public class TemAndHumReportController extends BaseController {
return prefix + "/TemAndHumLQXHS";
}
/**
* 线
* @return
*/
@GetMapping("/VibrationThreeRealTimeCurve")
public String VibrationThreeRealTimeCurveHtml()
{
return prefix + "/VibrationThreeRealTimeCurve";
}
/**
* 线
* @return
*/
@GetMapping("/SingleVibrationDataCurve")
public String SingleVibrationDataCurveHtml()
{
return prefix + "/SingleVibrationDataCurve";
}
/**
* 线
* @return

@ -139,7 +139,8 @@ public class TVibrationsensorDataController extends BaseController {
}
/**
* 线
* 线
*
* @param tVibrationsensorData
* @return
*/
@ -150,4 +151,16 @@ public class TVibrationsensorDataController extends BaseController {
return AjaxResult.success(list);
}
/**
* 线
* @param tVibrationsensorData
* @return
*/
@PostMapping("/realTimeCurveList")
@ResponseBody
public AjaxResult realTimeCurveList(TVibrationsensorData tVibrationsensorData) {
List<TVibrationsensorData> list = tVibrationsensorDataService.selectTVibrationsensorRealTimeCurveList(tVibrationsensorData);
return AjaxResult.success(list);
}
}

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="zh" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('振动数据曲线')"/>
<th:block th:include="include :: header('振动数据曲线')"/>
<th:block th:include="include :: layout-latest-css"/>
<th:block th:include="include :: ztree-css"/>
<th:block th:include="include :: datetimepicker-css"/>

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="zh" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('振动数据曲线')"/>
<th:block th:include="include :: header('振动数据曲线')"/>
<th:block th:include="include :: layout-latest-css"/>
<th:block th:include="include :: ztree-css"/>
<th:block th:include="include :: datetimepicker-css"/>

@ -0,0 +1,350 @@
<!DOCTYPE html>
<html lang="zh" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('振动实时曲线')"/>
<th:block th:include="include :: layout-latest-css"/>
<th:block th:include="include :: ztree-css"/>
<th:block th:include="include :: datetimepicker-css"/>
</head>
<style>
.echarts {
width: 49%;
display: inline-block;
}
</style>
<body class="gray-bg">
<div class="ui-layout-west">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa icon-grid"></i> 测控点信息
</div>
<div class="box-tools pull-right">
<a class="btn btn-box-tool" href="#" onclick="dept()" title="测控点信息" type="button"><i
class="fa fa-edit"></i></a>
<button class="btn btn-box-tool" id="btnExpand" style="display:none;" title="展开" type="button"><i
class="fa fa-chevron-up"></i></button>
<button class="btn btn-box-tool" id="btnCollapse" title="折叠" type="button"><i
class="fa fa-chevron-down"></i>
</button>
<button class="btn btn-box-tool" id="btnRefresh" title="刷新" type="button"><i
class="fa fa-refresh"></i></button>
</div>
</div>
<div class="ui-layout-content">
<div class="ztree" id="tree"></div>
</div>
</div>
</div>
<div class="ui-layout-center">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="formId">
<input id="monitorId" name="monitorId" type="hidden">
</form>
</div>
<div class="ibox-content" style="margin-top: 0px;margin-right: 0px;">
<div class="echarts" id="echarts-line-chart" style="height: 80vh;width: 100%"></div>
<div class="echarts" id="echarts-line-chart1" style="height: 40vh"></div>
<div class="echarts" id="echarts-line-chart2" style="height: 40vh"></div>
<div class="echarts" id="echarts-line-chart3" style="height: 40vh"></div>
</div>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: layout-latest-js"/>
<th:block th:include="include :: ztree-js"/>
<th:block th:include="include :: echarts-js"/>
<th:block th:include="include :: datetimepicker-js"/>
<script src="../../../js/common/echarts.min.js"></script>
<script th:inline="javascript">
var prefix = ctx + "report/temandhumreport"
var timedata = [];
var tempreturedata = [];
var humdata = [];
var timer = null; // 定时器变量
layui.use('laydate', function () {
var laydate = layui.laydate;
laydate.render({
elem: '#laydate-demo-3',
type: 'datetime',
trigger: 'click'
});
laydate.render({
elem: '#laydate-demo-4',
type: 'datetime',
trigger: 'click'
});
});
$(function () {
var panehHidden = false;
// var time=getNowFormatDate();
// console.log(time);
getdata(null);
if ($(this).width() < 769) {
panehHidden = true;
}
$('body').layout({initClosed: panehHidden, west__size: 185});
// initTable();
queryUserList();
queryDeptTree();
// 启动定时器每10秒调用一次getdata
startTimer();
// 页面卸载时清除定时器
$(window).on('beforeunload', function() {
clearTimer();
});
});
function queryUserList() {
var options = {
url: prefix + "/list",
modalName: "压缩空气数据曲线",
columns: [{
checkbox: true
},
{
field: 'objid',
title: '自增标识',
visible: false
},
{
field: 'monitorId',
title: '测控点编号'
},
{
field: 'between',
title: '采集时间'
},
{
field: 'temmaxNumber',
title: '温度最大值'
},
{
field: 'temminNumber',
title: '温度最小值'
},
{
field: 'temavgNumber',
title: '温度平均值'
},
{
field: 'hummaxNumber',
title: '湿度最大值'
},
{
field: 'humminNumber',
title: '湿度最小值'
},
{
field: 'humavgNumber',
title: '湿度平均值'
},
]
};
$.table.init(options);
}
function queryDeptTree() {
var url = ctx + "system/Monitor/treeData?monitorType=20";
var options = {
url: url,
expandLevel: 1,
onClick: zOnClick,
};
$.tree.init(options);
function zOnClick(event, treeId, treeNode) {
$("#monitorId").val(treeNode.id);
/*alert(treeNode.id)*/
$.table.search();
getdata(treeNode.id);
// 重新启动定时器
clearTimer();
startTimer();
}
}
$('#btnExpand').click(function () {
$._tree.expandAll(true);
$(this).hide();
$('#btnCollapse').show();
});
$('#btnCollapse').click(function () {
$._tree.expandAll(false);
$(this).hide();
$('#btnExpand').show();
});
$('#btnRefresh').click(function () {
queryDeptTree();
});
/* 社区信息 */
function dept() {
var url = ctx + "system/Monitor";
$.modal.openTab("社区信息", url);
}
function getdata(monitorId) {
// 如果monitorId为空尝试从表单获取
if (!monitorId) {
monitorId = $("#monitorId").val();
}
var formData = new FormData();
formData.append("sensorId", monitorId);
// formData.append("params[beginCollectTime]", $("#laydate-demo-3").val());
// formData.append("params[endCollectTime]", $("#laydate-demo-4").val());
$.ajax({
url: ctx + "system/TVibrationsensorData/realTimeCurveList",
type: 'post',
cache: false,
data: formData,
processData: false,
contentType: false,
dataType: "json",
success: function (result) {
design(result.data);
}
});
}
// 启动定时器
function startTimer() {
// 清除已存在的定时器
clearTimer();
// 每10秒调用一次getdata
timer = setInterval(function() {
var monitorId = $("#monitorId").val();
getdata(monitorId);
}, 10000); // 10000毫秒 = 10秒
}
// 清除定时器
function clearTimer() {
if (timer) {
clearInterval(timer);
timer = null;
}
}
function design(e) {
console.log(e)
let lineChart = echarts.init(document.getElementById("echarts-line-chart"));
lineChart.setOption({
title: {
text: '温度、速度、位移数据曲线',
left: 'center',
top: 20
},
tooltip: {
trigger: 'axis',
axisPointer: {
animation: false
}
},
grid: {
right: 100,
left: 80
},
legend: {
x: 'center'
},
dataZoom: [
{
show: false,
realtime: true,
start: 0,
end: 100,
xAxisIndex: 0
},
{
type: 'inside',
realtime: true,
start: 30,
end: 70,
xAxisIndex: 0
}
],
xAxis: {
type: 'category',
data: e.map(v => v.collectTime)
},
yAxis: [
{
type: 'value',
name: '℃',
axisLine: {
show: true
}
},
{
name: 'mm/s',
type: 'value',
axisLine: {
show: true
},
offset: 25,
position: 'left'
},
{
name: 'um',
type: 'value',
axisLine: {
show: true
},
offset: 50
},
],
series: [
{
name: '温度',
data: e.map(v => v.temperature),
type: 'line',
yAxisIndex: 0
},
{
name: '速度',
data: e.map(v => v.speed),
type: 'line',
yAxisIndex: 1
},
{
name: '位移',
data: e.map(v => v.displacement),
type: 'line',
yAxisIndex: 2
},
// {
// name: '加速度',
// data: e.map(v => v.acceleration),
// type: 'line',
// yAxisIndex: 3
// },
]
});
$(window).resize(lineChart.resize);
}
</script>
</body>
</html>

@ -73,4 +73,11 @@ public interface ITVibrationsensorDataService
*/
List<TVibrationsensorData> selectTVibrationsensorDataListCurve(TVibrationsensorData tVibrationsensorData);
/**
* 线
* @param tVibrationsensorData
* @return
*/
List<TVibrationsensorData> selectTVibrationsensorRealTimeCurveList(TVibrationsensorData tVibrationsensorData);
}

@ -1,7 +1,10 @@
package com.ruoyi.system.service.impl;
import java.util.List;
import java.util.*;
import java.text.SimpleDateFormat;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.TVibrationsensorDataMapper;
@ -93,6 +96,7 @@ public class TVibrationsensorDataServiceImpl implements ITVibrationsensorDataSer
/**
*
*
* @param tVibrationsensorData
* @return
*/
@ -100,4 +104,27 @@ public class TVibrationsensorDataServiceImpl implements ITVibrationsensorDataSer
public List<TVibrationsensorData> selectTVibrationsensorDataListCurve(TVibrationsensorData tVibrationsensorData) {
return tVibrationsensorDataMapper.selectTVibrationsensorDataListCurve(tVibrationsensorData);
}
/**
* 线
* 30
*
* @param tVibrationsensorData
* @return
*/
@Override
public List<TVibrationsensorData> selectTVibrationsensorRealTimeCurveList(TVibrationsensorData tVibrationsensorData) {
if (StringUtils.isEmpty(tVibrationsensorData.getSensorId())) {
return new ArrayList<>();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.MINUTE, -30);
Date oldTime = calendar.getTime();
Map<String, Object> timeMap = new HashMap<>();
timeMap.put("beginCollectTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, oldTime));
timeMap.put("endCollectTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date()));
tVibrationsensorData.setParams(timeMap);
return tVibrationsensorDataMapper.selectTVibrationsensorDataListCurve(tVibrationsensorData);
}
}

Loading…
Cancel
Save