Browse Source

修改设备状态类型

新增激光疲劳设备批量操作接口
develop
zhaoxianglong 11 months ago
parent
commit
a36bbd3e08
  1. 58
      zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java
  2. 6
      zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java
  3. 4
      zc-business/src/main/java/com/zc/business/controller/StatusController.java
  4. 16
      zc-business/src/main/java/com/zc/business/domain/Status.java
  5. 1
      zc-business/src/main/java/com/zc/business/mapper/StatusMapper.java
  6. 4
      zc-business/src/main/java/com/zc/business/service/impl/ExcelExportService.java
  7. 4
      zc-business/src/main/java/com/zc/business/service/impl/StatusService.java
  8. 38
      zc-business/src/main/resources/mapper/business/StatusMapper.xml

58
zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java

@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field;
import java.util.*; import java.util.*;
/** /**
@ -210,6 +211,7 @@ public class DcDeviceController extends BaseController {
/** /**
* 查询当天设备指定属性列表 * 查询当天设备指定属性列表
*
* @param deviceId 设备id * @param deviceId 设备id
* @param propertyId 属性id * @param propertyId 属性id
* @return 属性列表 * @return 属性列表
@ -229,8 +231,8 @@ public class DcDeviceController extends BaseController {
// 将日期列表以逗号分隔并设置为查询条件的值 // 将日期列表以逗号分隔并设置为查询条件的值
props.put("terms[0].value", String.join(",", dateList)); props.put("terms[0].value", String.join(",", dateList));
props.put("paging", false); props.put("paging", false);
props.put("sorts[0].order","asc"); props.put("sorts[0].order", "asc");
props.put("sorts[0].name","timestamp"); props.put("sorts[0].name", "timestamp");
AjaxResult ajaxResult = queryDeviceProperties(deviceId, propertyId, props); AjaxResult ajaxResult = queryDeviceProperties(deviceId, propertyId, props);
if (!ajaxResult.get("code").equals(200)) { if (!ajaxResult.get("code").equals(200)) {
return ajaxResult; return ajaxResult;
@ -240,12 +242,12 @@ public class DcDeviceController extends BaseController {
JSONArray dataArray = JSON.parseArray(data.toString()); JSONArray dataArray = JSON.parseArray(data.toString());
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
dataArray.forEach(o -> { dataArray.forEach(o -> {
Map<String,Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
JSONObject jsonObject = JSON.parseObject(o.toString()); JSONObject jsonObject = JSON.parseObject(o.toString());
JSONObject formatValue = JSON.parseObject(jsonObject.get("formatValue").toString()); JSONObject formatValue = JSON.parseObject(jsonObject.get("formatValue").toString());
map.put("1",formatValue.get("1")); map.put("1", formatValue.get("1"));
map.put("3",formatValue.get("3")); map.put("3", formatValue.get("3"));
map.put("timestamp",jsonObject.get("timestamp")); map.put("timestamp", jsonObject.get("timestamp"));
list.add(map); list.add(map);
}); });
return AjaxResult.success(list); return AjaxResult.success(list);
@ -430,7 +432,7 @@ public class DcDeviceController extends BaseController {
.data(requestParams) .data(requestParams)
.post(); // 请求方法 .post(); // 请求方法
return JSON.parseObject(response.body().string(), AjaxResult.class); return JSON.parseObject(response.body().string(), AjaxResult.class);
}catch (Exception e){ } catch (Exception e) {
return AjaxResult.error("请求失败"); return AjaxResult.error("请求失败");
} }
@ -454,6 +456,13 @@ public class DcDeviceController extends BaseController {
JSONObject functionJSONObject = JSONObject.parseObject(String.valueOf(function)); JSONObject functionJSONObject = JSONObject.parseObject(String.valueOf(function));
String functionId = functionJSONObject.getString("functionId"); String functionId = functionJSONObject.getString("functionId");
JSONObject jsonObject = functionJSONObject.getJSONObject("params"); JSONObject jsonObject = functionJSONObject.getJSONObject("params");
resultArray.add(getResult(device, iotDeviceId, functionId, jsonObject));
}
}
return AjaxResult.success(resultArray);
}
private JSONObject getResult(DcDevice device, String iotDeviceId, String functionId, JSONObject jsonObject) throws HttpException, IOException {
HashMap<String, Object> params = jsonObject.toJavaObject(new TypeReference<HashMap<String, Object>>() { HashMap<String, Object> params = jsonObject.toJavaObject(new TypeReference<HashMap<String, Object>>() {
}); });
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
@ -463,12 +472,45 @@ public class DcDeviceController extends BaseController {
} else { } else {
result.put("result", invokedFunction(iotDeviceId, functionId, params)); result.put("result", invokedFunction(iotDeviceId, functionId, params));
} }
resultArray.add(result); return result;
} }
/**
* 批量设备功能调用
*
* @param props 调用参数列表
* @return 调用结果
*/
@ApiOperation("批量激光疲劳设备功能调用")
@PostMapping("/batchLaserFatigueInvokedFunction")
public AjaxResult batchLaserFatigueInvokedFunction(@RequestBody Map<String, Object> props) throws HttpException, IOException, InterruptedException {
String deviceId = (String) props.get("deviceId");
String functionId = (String) props.get("functionId");
ArrayList params = (ArrayList) props.get("params");
JSONArray resultArray = new JSONArray();
for (Object param : params) {
resultArray.add(invokedFunction(deviceId, functionId, (HashMap<String, Object>) param));
} }
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("SET", "7");
invokedFunction(deviceId, "SETMD", hashMap);
return AjaxResult.success(resultArray); return AjaxResult.success(resultArray);
} }
public HashMap<String, Object> objectToMap(Object obj) {
Map<String, Object> map = new HashMap<>();
for (Field field : obj.getClass().getDeclaredFields()) {
try {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return (HashMap<String, Object>) map;
}
/** /**
* 查询物联设备事件数据 * 查询物联设备事件数据
* *

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

@ -69,14 +69,14 @@ public class DeviceStatus {
boolean reachable = address.isReachable(5000); // Timeout: 5 seconds 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%");
} else { } else {
status.setDeviceStatus(0); status.setDeviceStatus("0");
status.setSuccessRate("0.00%"); status.setSuccessRate("0.00%");
} }
}else{ }else{
status.setDeviceStatus(0); status.setDeviceStatus("0");
status.setSuccessRate("0.00%"); status.setSuccessRate("0.00%");
status.setLostRate("100.00%"); status.setLostRate("100.00%");
} }

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

@ -59,7 +59,7 @@ public class StatusController extends BaseController {
LocalDateTime currentTime = status.getTime().truncatedTo(ChronoUnit.DAYS).plusDays(1); LocalDateTime currentTime = status.getTime().truncatedTo(ChronoUnit.DAYS).plusDays(1);
status.setStartTime(todayStart); status.setStartTime(todayStart);
status.setTime(currentTime); status.setTime(currentTime);
List<Status> listStatus = statusService.list(status); List<Status> listStatus = statusService.export(status);
ExcelUtil<Status> util = new ExcelUtil<>(Status.class); ExcelUtil<Status> util = new ExcelUtil<>(Status.class);
util.exportExcel(response, listStatus, "【请填写功能名称】数据"); util.exportExcel(response, listStatus, "【请填写功能名称】数据");
} }
@ -86,7 +86,7 @@ public class StatusController extends BaseController {
Map<String,String> mapSort=new TreeMap<>(); Map<String,String> mapSort=new TreeMap<>();
for (Map.Entry<String, List<Status>> entry : mapTime.entrySet()) { for (Map.Entry<String, List<Status>> entry : mapTime.entrySet()) {
List<Status> groupItems = entry.getValue(); List<Status> groupItems = entry.getValue();
long count = groupItems.stream().filter(iteam -> iteam.getDeviceStatus() == 1).count(); long count = groupItems.stream().filter(iteam -> iteam.getDeviceStatus() == "1").count();
String onlineRate=String.format("%.2f%%", (double) count / groupItems.size() * 100); String onlineRate=String.format("%.2f%%", (double) count / groupItems.size() * 100);
mapSort.put(entry.getKey(),onlineRate); mapSort.put(entry.getKey(),onlineRate);
} }

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

@ -22,7 +22,7 @@ public class Status {
return startTime; return startTime;
} }
public Status(long id, String deviceNo, String deviceName, int deviceStatus, LocalDateTime time, LocalDateTime startTime, String deviceIp, String successRate, String lostRate, String direction, String production, String model, String network, String content, String type) { public Status(long id, String deviceNo, String deviceName, String deviceStatus, LocalDateTime time, LocalDateTime startTime, String deviceIp, String successRate, String lostRate, String direction, String production, String model, String network, String content, String type) {
this.id = id; this.id = id;
this.deviceNo = deviceNo; this.deviceNo = deviceNo;
this.deviceName = deviceName; this.deviceName = deviceName;
@ -77,7 +77,7 @@ public class Status {
return deviceNo; return deviceNo;
} }
public Status(long id, String deviceNo, String deviceName, int deviceStatus) { public Status(long id, String deviceNo, String deviceName, String deviceStatus) {
this.id = id; this.id = id;
this.deviceNo = deviceNo; this.deviceNo = deviceNo;
this.deviceName = deviceName; this.deviceName = deviceName;
@ -99,11 +99,11 @@ public class Status {
this.deviceName = deviceName; this.deviceName = deviceName;
} }
public int getDeviceStatus() { public String getDeviceStatus() {
return deviceStatus; return deviceStatus;
} }
public void setDeviceStatus(int deviceStatus) { public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus; this.deviceStatus = deviceStatus;
} }
@ -116,8 +116,8 @@ public class Status {
private String deviceName; private String deviceName;
@Excel(name = "状态") @Excel(name = "状态")
private int deviceStatus; private String deviceStatus;
@Excel(name = "使用状态") //@Excel(name = "使用状态")
private Integer useState; private Integer useState;
@ -220,13 +220,13 @@ public class Status {
this.type = type; this.type = type;
} }
@Excel(name = "网段") //@Excel(name = "网段")
private String network; private String network;
private String content; private String content;
@Excel(name = "类型") //@Excel(name = "类型")
private String type; private String type;

1
zc-business/src/main/java/com/zc/business/mapper/StatusMapper.java

@ -17,6 +17,7 @@ public interface StatusMapper {
int Add(@Param("status")Status status); int Add(@Param("status")Status status);
List<Status> listStatus(@Param("status")Status status); List<Status> listStatus(@Param("status")Status status);
List<Status> export(@Param("status")Status status);
List<Status> deviceStatusListById(@Param("status")Status status); List<Status> deviceStatusListById(@Param("status")Status status);
} }

4
zc-business/src/main/java/com/zc/business/service/impl/ExcelExportService.java

@ -102,7 +102,7 @@ public class ExcelExportService {
Map<String, List<Status>> maps = groupItem.stream().filter(iteam -> iteam.getType() != null).collect(Collectors.groupingBy(Status::getType)); Map<String, List<Status>> maps = groupItem.stream().filter(iteam -> iteam.getType() != null).collect(Collectors.groupingBy(Status::getType));
for (Map.Entry<String, List<Status>> entrys : maps.entrySet()) { for (Map.Entry<String, List<Status>> entrys : maps.entrySet()) {
List<Status> groupItems = entrys.getValue(); List<Status> groupItems = entrys.getValue();
long b = groupItems.stream().filter(iteam -> iteam.getDeviceStatus() == 1).count(); long b = groupItems.stream().filter(iteam -> iteam.getDeviceStatus() == "1").count();
// for (Status ignored : groupItems) { // for (Status ignored : groupItems) {
int a = rowNum++; int a = rowNum++;
Row row = sheet.getRow(a); // 获取指定索引的行 Row row = sheet.getRow(a); // 获取指定索引的行
@ -153,7 +153,7 @@ public class ExcelExportService {
rowNum = 1; rowNum = 1;
for (Map.Entry<String, List<Status>> entry : categoryMap.entrySet()) { for (Map.Entry<String, List<Status>> entry : categoryMap.entrySet()) {
List<Status> groupItems = entry.getValue(); List<Status> groupItems = entry.getValue();
long a=groupItems.stream().filter(iteam->iteam.getDeviceStatus()==1).count(); long a=groupItems.stream().filter(iteam->iteam.getDeviceStatus()=="1").count();
row = sheet.createRow(rowNum++); row = sheet.createRow(rowNum++);
HashMap<String, String> itemTypeMap = new HashMap<>(); HashMap<String, String> itemTypeMap = new HashMap<>();
itemTypeMap.put("1", "高清网络枪型固定摄像机"); itemTypeMap.put("1", "高清网络枪型固定摄像机");

4
zc-business/src/main/java/com/zc/business/service/impl/StatusService.java

@ -29,6 +29,10 @@ public class StatusService {
List<Status> list = statusMapper.listStatus(status); List<Status> list = statusMapper.listStatus(status);
return list; return list;
} }
public List<Status> export(Status status) {
List<Status> list = statusMapper.export(status);
return list;
}
public List<Status> deviceStatusListById(Status status) { public List<Status> deviceStatusListById(Status status) {
return statusMapper.deviceStatusListById(status); return statusMapper.deviceStatusListById(status);

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

@ -85,6 +85,44 @@
select id, device_no, device_name, device_status, time from status select id, device_no, device_name, device_status, time from status
</sql> </sql>
<select id="export" parameterType="com.zc.business.domain.Status" resultMap="BaseResultMap">
select s.id, s.device_no, s.device_name,s.time,
d.device_ip,s.success_rate,s.lost_rate,e.manufacturer,e.model,d.facilities_type,d.remark,COALESCE(d.child_type,
d.device_type) AS type,
CASE
WHEN d.direction = 1 THEN '菏泽方向'
WHEN d.direction = 3 THEN '济南方向'
ELSE '双向'
END AS direction,
CASE
WHEN s.device_status = 1 THEN '正常'
WHEN s.device_status = 0 THEN '异常'
ELSE '双向'
END AS device_status
from dc_device d
LEFT JOIN status s on (s.device_id = d.id)
LEFT JOIN dc_product e on e.id = d.product_id
<where>
<if test="status.time != null">
AND s.time BETWEEN #{status.startTime,jdbcType=DATE} AND #{status.time,jdbcType=DATE}
</if>
<if test="status.deviceNo != null">
AND s.device_no = #{status.deviceNo}
</if>
<if test="status.type != null">
AND (d.device_type = #{status.type} or d.child_type=#{status.type})
</if>
<if test="status.deviceId != null">
AND s.device_id = #{status.deviceId}
</if>
<if test="status.useState != null and status.useState != 0">
AND d.use_state = #{status.useState}
</if>
</where>
</select>
<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,e.manufacturer,e.model,d.facilities_type,d.remark,COALESCE(d.child_type, d.device_type) AS 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.manufacturer,e.model,d.facilities_type,d.remark,COALESCE(d.child_type, d.device_type) AS type
from dc_device d from dc_device d

Loading…
Cancel
Save