雷达设备状态

detached
王宇航 2024-01-10 15:31:33 +08:00
parent e053fa3e7a
commit 78870baf7d
7 changed files with 56 additions and 133 deletions

View File

@ -93,7 +93,7 @@ public class SysDiscernController extends BaseController {
}
).collect(Collectors.toList());
ExcelUtil<RadarTableVO> util = new ExcelUtil<RadarTableVO>(RadarTableVO.class);
return util.exportExcel(collect, "标识器数据");
return util.exportExcel(collect, "雷达识别报表");
}
@Log(title = "定时任务", businessType = BusinessType.DELETE)

View File

@ -72,17 +72,18 @@ public class RadarStatusController
// 异步连接硬件
CompletableFuture<List<ModbusResponse>> listCompletableFuture = CompletableFuture.supplyAsync(() -> {
List<ModbusResponse> responses = new ArrayList<>();
final ConnectionStatus connectionStatus = new ConnectionStatus();
Timer timer = new Timer();
boolean connected = false;
TimerTask task = new TimerTask() {
@Override
public void run() {
try {
for (SysRadar radar : radarList) {
// ModbusResponse modbusResponse = new ModbusResponse();
ModbusMaster master = ModbusUtils.getSlave(radar.getRadarIp(), 23);
System.out.println(radar.getRadarIp());
ModbusResponse modbusResponse = ModbusUtils.holdingRegister();
connectionStatus.connected= true;
System.out.println(modbusResponse);
String tag = modbusResponse.getTagId();
PrimaryRadarData primaryRadarData = new PrimaryRadarData();
@ -104,6 +105,7 @@ public class RadarStatusController
System.err.println("从串口读取失败:" + "连接超时");
}
e.printStackTrace();
connectionStatus.connected= false;
}
}
};
@ -129,5 +131,9 @@ public class RadarStatusController
return rspData;
}
class ConnectionStatus {
boolean connected = false;
}
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.web.core.config;
import com.ruoyi.common.core.domain.entity.PrimaryRadarData;
import org.springframework.stereotype.Component;
import javax.websocket.*;
@ -33,4 +34,14 @@ public class RadarStatusWebSocket {
}
}
}
public static void sendToAll(PrimaryRadarData primaryRadarData) {
for (Session session : sessions) {
try {
session.getBasicRemote().sendObject(primaryRadarData);
} catch (IOException | EncodeException e) {
e.printStackTrace();
}
}
}
}

View File

@ -15,6 +15,7 @@
</li>
<li>
识别类型:<select type="select" name="type">
<option value="" selected>所有</option>
<option value="铁">铁包</option>
<option value="车">车架</option>
</select>
@ -39,21 +40,7 @@
</div>
</form>
</div>
<!-- <div class="btn-group-sm" id="toolbar" role="group">-->
<!-- <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">-->
<!-- <i class="fa fa-plus"></i> 新增-->
<!-- </a>-->
<!-- <a class="btn btn-primary single disabled" onclick="$.operate.edit()" >-->
<!-- <i class="fa fa-edit"></i> 修改-->
<!-- </a>-->
<!-- <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()">-->
<!-- <i class="fa fa-remove"></i> 删除-->
<!-- </a>-->
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export">-->
<!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>-->
<!-- </div>-->
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
@ -83,10 +70,6 @@
columns: [{
checkbox: true
},
// {
// field: 'id',
// title: '序号'
// },
{
field: 'radarLocation',
title: '雷达位置',
@ -120,104 +103,20 @@
},
{
field: 'createTime',
title: '记录时间',
title: '记录开始时间',
sortable: true,
// formatter: function(value, row, index) {
// // Assuming value is a timestamp in milliseconds
// var startTime = row.updateTime;
//
// // Get the value of the end time field
// var endTime = row.updateTime;
// var endTimeString = '';
//
// // Check if the endTime field exists and is not null
// if (endTime !== undefined && endTime !== null) {
// // Assuming endTime is also a timestamp in milliseconds
// endTime = '';
//
// // Format the end time as desired
// endTimeString = endTime.toLocaleTimeString();
// }
//
// // Format the start time as desired
// var startTimeString = startTime.toLocaleTimeString();
//
// // Return the formatted time range
// return startTimeString + ' - ' + endTimeString;
// }
}
// {
// title: '操作',
// align: 'center',
// formatter: function(value, row, index) {
// var actions = [];
// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:;" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
// actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:;" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a> ');
// var more = [];
// more.push("<a class='btn btn-default btn-xs " + statusFlag + "' href='javascript:void(0)' onclick='run(" + row.jobId + ")'><i class='fa fa-play-circle-o'></i> 执行一次</a> ");
// more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='$.operate.detail(" + row.jobId + ")'><i class='fa fa-search'></i>任务详细</a> ");
// more.push("<a class='btn btn-default btn-xs " + detailFlag + "' href='javascript:void(0)' onclick='jobLog(" + row.jobId + ")'><i class='fa fa-list'></i>调度日志</a>");
// actions.push('<a class="btn btn-info btn-xs" role="button" data-container="body" data-placement="left" data-toggle="popover" data-html="true" data-trigger="hover" data-content="' + more.join('') + '"><i class="fa fa-chevron-circle-right"></i>更多操作</a>');
// return actions.join('');
// }
// }
},
{
field: 'updateTime',
title: '记录结束时间',
}
]
};
$.table.init(options);
});
/* 调度任务状态显示 */
function statusTools(row) {
if (row.status == 1) {
return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="start(\'' + row.jobId + '\', \'' + row.jobGroup + '\')"></i> ';
} else {
return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="stop(\'' + row.jobId + '\', \'' + row.jobGroup + '\')"></i> ';
}
}
/* 立即执行一次 */
function run(jobId) {
$.modal.confirm("确认要立即执行一次任务吗?", function() {
$.operate.post(prefix + "/run", { "jobId": jobId});
})
}
/* 调度任务-停用 */
function stop(jobId, jobGroup) {
$.modal.confirm("确认要停用任务吗?", function() {
$.operate.post(prefix + "/changeStatus", { "jobId": jobId, "jobGroup": jobGroup, "status": 1 });
})
}
/* 调度任务-启用 */
function start(jobId, jobGroup) {
$.modal.confirm("确认要启用任务吗?", function() {
$.operate.post(prefix + "/changeStatus", { "jobId": jobId, "jobGroup": jobGroup, "status": 0 });
})
}
/* 调度日志查询 */
function jobLog(jobId) {
var url = ctx + 'monitor/jobLog';
if ($.common.isNotEmpty(jobId)) {
url += '?jobId=' + jobId;
}
$.modal.openTab("调度日志", url);
}
/* cron表达式生成 */
function cron() {
var url = prefix + '/cron';
var height = $(window).height() - 50;
top.layer.open({
maxmin: true,
title: "Cron表达式生成器",
type: 2,
area: ['800px', height + "px" ], //宽高
shadeClose: true,
content: url
});
}
</script>
</body>
</html>

View File

@ -48,34 +48,16 @@
showToggle: false,
showColumns: false,
showExport: true,
columns: [{
checkbox: true
},
{
field : 'userId',
title : '用户ID'
},
{
field : 'userCode',
title : '用户编号'
},
columns: [
{
field : 'radarIp',
title : '雷达ip'
},
{
field : 'userPhone',
field : 'radarLocation',
title : '用户手机'
},
{
field : 'userEmail',
title : '用户邮箱'
},
{
field : 'userBalance',
title : '用户余额'
},
{
field: 'status',
title: '用户状态',
align: 'center',
@ -128,7 +110,7 @@
if (radarIp === '192.168.0.7') {
return "https://xjl559.oss-cn-shanghai.aliyuncs.com/2023/12/11/%E6%88%AA%E5%B1%8F2024-01-08%2013.57.36.png";
} else if (radarIp === '192.168.0.8') {
return "https://xjl559.oss-cn-shanghai.aliyuncs.com/2023/12/11/%E6%88%AA%E5%B1%8F2024-01-09%2016.59.50.png";
return "https://xjl559.oss-cn-shanghai.aliyuncs.com/2023/12/11/%E6%88%AA%E5%B1%8F2024-01-08%2013.57.36.png";
}
}
</script>

View File

@ -0,0 +1,22 @@
package com.ruoyi.common.core.domain.entity;
import lombok.Data;
@Data
public class DataResponse {
/**
* ip
*/
private String radarIp;
/**
*
*/
private String radarLocation;
/**
*
*/
private String status;
}

View File

@ -54,8 +54,11 @@ public class RadarTableVO extends BaseEntity
@Excel(name = "读取次数")
private String totalCount;
@Excel(name = "记录开始时间" ,dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@Excel(name = "记录结束时间" , dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;