Browse Source

--检测设备状态切换dc_device表

--切换device_id为主键查询
--更改表相对应字段
develop
mengff 12 months ago
parent
commit
3142890ba3
  1. 17
      zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java
  2. 38
      zc-business/src/main/java/com/zc/business/controller/StatusController.java
  3. 12
      zc-business/src/main/java/com/zc/business/domain/Status.java
  4. 24
      zc-business/src/main/resources/mapper/business/StatusMapper.xml

17
zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java

@ -1,5 +1,6 @@
package com.zc.business.controller; package com.zc.business.controller;
import com.github.pagehelper.util.StringUtil;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.zc.business.domain.DcDevice; import com.zc.business.domain.DcDevice;
import com.zc.business.service.IDcDeviceService; import com.zc.business.service.IDcDeviceService;
@ -54,17 +55,17 @@ public class DeviceStatus {
Callable<Void> task = () -> { Callable<Void> task = () -> {
try { try {
Status status = new Status(); Status status = new Status();
InetAddress address = InetAddress.getByName(device.getDeviceIp());
String lostRate = getPingPacketLossRate(device.getDeviceIp());
boolean reachable = address.isReachable(5000); // Timeout: 5 seconds
status.setDeviceNo(device.getStakeMark()); status.setDeviceNo(device.getStakeMark());
status.setDeviceName(device.getDeviceName()); status.setDeviceName(device.getDeviceName());
status.setDeviceIp(device.getDeviceIp()); status.setDeviceIp(device.getDeviceIp());
status.setDeviceId(device.getId());
LocalDateTime localDateTime = LocalDateTime.now(); LocalDateTime localDateTime = LocalDateTime.now();
status.setTime(localDateTime); status.setTime(localDateTime);
if(StringUtil.isNotEmpty(device.getDeviceIp())) {
InetAddress address = InetAddress.getByName(device.getDeviceIp());
String lostRate = getPingPacketLossRate(device.getDeviceIp());
boolean reachable = address.isReachable(5000); // Timeout: 5 seconds
status.setLostRate(lostRate); status.setLostRate(lostRate);
if (reachable) { if (reachable) {
status.setDeviceStatus(1); status.setDeviceStatus(1);
status.setSuccessRate("100.00%"); status.setSuccessRate("100.00%");
@ -72,7 +73,11 @@ public class DeviceStatus {
status.setDeviceStatus(0); status.setDeviceStatus(0);
status.setSuccessRate("0.00%"); status.setSuccessRate("0.00%");
} }
}else{
status.setDeviceStatus(0);
status.setSuccessRate("0.00%");
status.setLostRate("100.00%");
}
statusService.Add(status); statusService.Add(status);
} catch (IOException e) { } catch (IOException e) {
System.out.println("Error pinging " + device.getDeviceIp() + ": " + e.getMessage()); System.out.println("Error pinging " + device.getDeviceIp() + ": " + e.getMessage());

38
zc-business/src/main/java/com/zc/business/controller/StatusController.java

@ -100,23 +100,23 @@ public class StatusController extends BaseController {
public AjaxResult getTypeList() public AjaxResult getTypeList()
{ {
HashMap<String, String> itemTypeMap = new HashMap<>(); HashMap<String, String> itemTypeMap = new HashMap<>();
itemTypeMap.put("1", "高清网络枪型固定摄像机"); itemTypeMap.put("1-1", "高清网络枪型固定摄像机");
itemTypeMap.put("2", "高清网络球形摄像机"); itemTypeMap.put("1-2", "高清网络球形摄像机");
itemTypeMap.put("3", "桥下高清网络球形摄像机"); itemTypeMap.put("1-3", "桥下高清网络球形摄像机");
itemTypeMap.put("4", "360°全景摄像机"); itemTypeMap.put("1-4", "360°全景摄像机");
itemTypeMap.put("5", "180°全景摄像机"); itemTypeMap.put("1-5", "180°全景摄像机");
itemTypeMap.put("6", "门架式可变信息标志"); itemTypeMap.put("2-1", "门架式可变信息标志");
itemTypeMap.put("7", "雨棚可变信息标志"); itemTypeMap.put("2-3", "雨棚可变信息标志");
itemTypeMap.put("8", "站前悬臂式可变信息标志"); itemTypeMap.put("2-4", "站前悬臂式可变信息标志");
itemTypeMap.put("9", "气象检测器"); itemTypeMap.put("3", "气象检测器");
itemTypeMap.put("10", "路段语音广播系统"); itemTypeMap.put("5", "路段语音广播系统");
itemTypeMap.put("11", "护栏碰撞预警系统"); itemTypeMap.put("6", "护栏碰撞预警系统");
itemTypeMap.put("12", "毫米波雷达"); itemTypeMap.put("7", "毫米波雷达");
itemTypeMap.put("13", "合流区预警系统"); itemTypeMap.put("8", "合流区预警系统");
itemTypeMap.put("14", "激光疲劳唤醒"); itemTypeMap.put("10", "激光疲劳唤醒");
itemTypeMap.put("15", "一类交通量调查站"); itemTypeMap.put("11", "一类交通量调查站");
itemTypeMap.put("16", "智能行车诱导系统"); itemTypeMap.put("12", "智能行车诱导系统");
itemTypeMap.put("17", "智能设备箱"); itemTypeMap.put("13", "智能设备箱");
LocalDateTime todayStart = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS); LocalDateTime todayStart = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS);
LocalDateTime currentTime = LocalDateTime.now(); LocalDateTime currentTime = LocalDateTime.now();
Status status = new Status(); Status status = new Status();
@ -153,7 +153,9 @@ public class StatusController extends BaseController {
maps.put("failRate",failRate); maps.put("failRate",failRate);
//总数 //总数
maps.put("sum",String.valueOf(groupItems.size())); maps.put("sum",String.valueOf(groupItems.size()));
subMap.put(itemTypeMap.get(entrys.getKey()),maps); if(itemTypeMap.get(entrys.getKey())!=null) {
subMap.put(itemTypeMap.get(entrys.getKey()), maps);
}
} }
Map<String, String> maps=new HashMap<>(); Map<String, String> maps=new HashMap<>();
double lostRate = lastEntry.stream() double lostRate = lastEntry.stream()

12
zc-business/src/main/java/com/zc/business/domain/Status.java

@ -117,6 +117,10 @@ public class Status {
@Excel(name = "状态") @Excel(name = "状态")
private int deviceStatus; private int deviceStatus;
private Long deviceId;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss")
@Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd")
@ -194,6 +198,14 @@ public class Status {
this.content = content; this.content = content;
} }
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}
@Excel(name = "型号") @Excel(name = "型号")
private String model; private String model;

24
zc-business/src/main/resources/mapper/business/StatusMapper.xml

@ -7,15 +7,16 @@
<result column="device_no" jdbcType="VARCHAR" property="deviceNo"/> <result column="device_no" jdbcType="VARCHAR" property="deviceNo"/>
<result column="device_name" jdbcType="VARCHAR" property="deviceName"/> <result column="device_name" jdbcType="VARCHAR" property="deviceName"/>
<result column="device_status" jdbcType="INTEGER" property="deviceStatus"/> <result column="device_status" jdbcType="INTEGER" property="deviceStatus"/>
<result column="device_id" jdbcType="INTEGER" property="deviceId"/>
<result column="device_ip" jdbcType="VARCHAR" property="deviceIp"/> <result column="device_ip" jdbcType="VARCHAR" property="deviceIp"/>
<result column="success_rate" jdbcType="VARCHAR" property="successRate"/> <result column="success_rate" jdbcType="VARCHAR" property="successRate"/>
<result column="lost_rate" jdbcType="VARCHAR" property="lostRate"/> <result column="lost_rate" jdbcType="VARCHAR" property="lostRate"/>
<result column="direction" jdbcType="VARCHAR" property="direction"/> <result column="direction" jdbcType="VARCHAR" property="direction"/>
<result column="production" jdbcType="VARCHAR" property="production"/> <result column="product_name" jdbcType="VARCHAR" property="production"/>
<result column="model" jdbcType="VARCHAR" property="model"/> <result column="model" jdbcType="VARCHAR" property="model"/>
<result column="network" jdbcType="VARCHAR" property="network"/> <result column="facilities_type" jdbcType="VARCHAR" property="network"/>
<result column="content" jdbcType="VARCHAR" property="content"/> <result column="remark" jdbcType="VARCHAR" property="content"/>
<result column="type" jdbcType="VARCHAR" property="type"/> <result column="type" jdbcType="VARCHAR" property="type"/>
</resultMap> </resultMap>
@ -33,6 +34,9 @@
<if test="status.deviceStatus != null"> <if test="status.deviceStatus != null">
device_status, device_status,
</if> </if>
<if test="status.deviceId != null">
device_id,
</if>
<if test="status.time != null"> <if test="status.time != null">
time, time,
</if> </if>
@ -57,6 +61,9 @@
<if test="status.deviceStatus != null"> <if test="status.deviceStatus != null">
#{status.deviceStatus,jdbcType=INTEGER}, #{status.deviceStatus,jdbcType=INTEGER},
</if> </if>
<if test="status.deviceId != null">
#{status.deviceId,jdbcType=BIGINT},
</if>
<if test="status.time != null"> <if test="status.time != null">
#{status.time,jdbcType=DATE}, #{status.time,jdbcType=DATE},
</if> </if>
@ -68,7 +75,7 @@
</if> </if>
<if test="status.deviceIp != null"> <if test="status.deviceIp != null">
#{status.deviceIp,jdbcType=VARCHAR}, #{status.deviceIp,jdbcType=VARCHAR}
</if> </if>
</trim> </trim>
</insert> </insert>
@ -78,9 +85,10 @@
</sql> </sql>
<select id="listStatus" parameterType="com.zc.business.domain.Status" resultMap="BaseResultMap"> <select id="listStatus" parameterType="com.zc.business.domain.Status" resultMap="BaseResultMap">
select s.id, s.device_no, s.device_name, s.device_status,s.time, d.device_ip,s.success_rate,s.lost_rate,d.direction,d.production,d.model,d.network,d.content,d.type select s.id, s.device_no, s.device_name, s.device_status,s.time, d.device_ip,s.success_rate,s.lost_rate,d.direction,e.product_name,e.model,d.facilities_type,d.remark,COALESCE(d.child_type, d.device_type) AS type
from status s from dc_device d
LEFT JOIN device d on s.device_ip = d.device_ip LEFT JOIN status s on (s.device_id=d.id)
LEFT JOIN dc_product e on e.id=d.product_id
<where> <where>
<if test="status.time != null"> <if test="status.time != null">
AND s.time BETWEEN #{status.startTime,jdbcType=DATE} AND #{status.time,jdbcType=DATE} AND s.time BETWEEN #{status.startTime,jdbcType=DATE} AND #{status.time,jdbcType=DATE}
@ -89,7 +97,7 @@
AND s.device_no = #{status.deviceNo} AND s.device_no = #{status.deviceNo}
</if> </if>
<if test="status.type != null"> <if test="status.type != null">
AND d.type = #{status.type} AND (d.device_type = #{status.type} or d.child_type=#{status.type})
</if> </if>
</where> </where>
</select> </select>

Loading…
Cancel
Save