Browse Source

修改设备状态类型

新增激光疲劳设备批量操作接口
develop
zhaoxianglong 11 months ago
parent
commit
a36bbd3e08
  1. 78
      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

78
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.validation.Valid;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.*;
/**
@ -210,6 +211,7 @@ public class DcDeviceController extends BaseController {
/**
* 查询当天设备指定属性列表
*
* @param deviceId 设备id
* @param propertyId 属性id
* @return 属性列表
@ -217,7 +219,7 @@ public class DcDeviceController extends BaseController {
@ApiOperation("查询当天设备指定属性列表")
@GetMapping("/properties/history/day/{deviceId}/{propertyId}")
public AjaxResult queryDevicePropertiesOneDay(@PathVariable @Parameter(description = "设备ID") String deviceId,
@PathVariable @Parameter(description = "属性ID") String propertyId) throws HttpException, IOException {
@PathVariable @Parameter(description = "属性ID") String propertyId) throws HttpException, IOException {
HashMap<String, Object> props = new HashMap<>();
// 设置查询条件的键为“timestamp$BTW”,表示时间戳在一定范围内
@ -229,8 +231,8 @@ public class DcDeviceController extends BaseController {
// 将日期列表以逗号分隔并设置为查询条件的值
props.put("terms[0].value", String.join(",", dateList));
props.put("paging", false);
props.put("sorts[0].order","asc");
props.put("sorts[0].name","timestamp");
props.put("sorts[0].order", "asc");
props.put("sorts[0].name", "timestamp");
AjaxResult ajaxResult = queryDeviceProperties(deviceId, propertyId, props);
if (!ajaxResult.get("code").equals(200)) {
return ajaxResult;
@ -240,12 +242,12 @@ public class DcDeviceController extends BaseController {
JSONArray dataArray = JSON.parseArray(data.toString());
List<Object> list = new ArrayList<>();
dataArray.forEach(o -> {
Map<String,Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>();
JSONObject jsonObject = JSON.parseObject(o.toString());
JSONObject formatValue = JSON.parseObject(jsonObject.get("formatValue").toString());
map.put("1",formatValue.get("1"));
map.put("3",formatValue.get("3"));
map.put("timestamp",jsonObject.get("timestamp"));
map.put("1", formatValue.get("1"));
map.put("3", formatValue.get("3"));
map.put("timestamp", jsonObject.get("timestamp"));
list.add(map);
});
return AjaxResult.success(list);
@ -430,7 +432,7 @@ public class DcDeviceController extends BaseController {
.data(requestParams)
.post(); // 请求方法
return JSON.parseObject(response.body().string(), AjaxResult.class);
}catch (Exception e){
} catch (Exception e) {
return AjaxResult.error("请求失败");
}
@ -454,21 +456,61 @@ public class DcDeviceController extends BaseController {
JSONObject functionJSONObject = JSONObject.parseObject(String.valueOf(function));
String functionId = functionJSONObject.getString("functionId");
JSONObject jsonObject = functionJSONObject.getJSONObject("params");
HashMap<String, Object> params = jsonObject.toJavaObject(new TypeReference<HashMap<String, Object>>() {
});
JSONObject result = new JSONObject();
result.put("device", device.getId());
if (device.getDeviceType().equals(DeviceTypeConstants.ROAD_SECTION_VOICE_BROADCASTING)) {
result.put("result", broadcastController.nearCamListDistance(jsonObject));
} else {
result.put("result", invokedFunction(iotDeviceId, functionId, params));
}
resultArray.add(result);
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>>() {
});
JSONObject result = new JSONObject();
result.put("device", device.getId());
if (device.getDeviceType().equals(DeviceTypeConstants.ROAD_SECTION_VOICE_BROADCASTING)) {
result.put("result", broadcastController.nearCamListDistance(jsonObject));
} else {
result.put("result", invokedFunction(iotDeviceId, functionId, params));
}
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);
}
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
status.setLostRate(lostRate);
if (reachable) {
status.setDeviceStatus(1);
status.setDeviceStatus("1");
status.setSuccessRate("100.00%");
} else {
status.setDeviceStatus(0);
status.setDeviceStatus("0");
status.setSuccessRate("0.00%");
}
}else{
status.setDeviceStatus(0);
status.setDeviceStatus("0");
status.setSuccessRate("0.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);
status.setStartTime(todayStart);
status.setTime(currentTime);
List<Status> listStatus = statusService.list(status);
List<Status> listStatus = statusService.export(status);
ExcelUtil<Status> util = new ExcelUtil<>(Status.class);
util.exportExcel(response, listStatus, "【请填写功能名称】数据");
}
@ -86,7 +86,7 @@ public class StatusController extends BaseController {
Map<String,String> mapSort=new TreeMap<>();
for (Map.Entry<String, List<Status>> entry : mapTime.entrySet()) {
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);
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;
}
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.deviceNo = deviceNo;
this.deviceName = deviceName;
@ -77,7 +77,7 @@ public class Status {
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.deviceNo = deviceNo;
this.deviceName = deviceName;
@ -99,11 +99,11 @@ public class Status {
this.deviceName = deviceName;
}
public int getDeviceStatus() {
public String getDeviceStatus() {
return deviceStatus;
}
public void setDeviceStatus(int deviceStatus) {
public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus;
}
@ -116,8 +116,8 @@ public class Status {
private String deviceName;
@Excel(name = "状态")
private int deviceStatus;
@Excel(name = "使用状态")
private String deviceStatus;
//@Excel(name = "使用状态")
private Integer useState;
@ -220,13 +220,13 @@ public class Status {
this.type = type;
}
@Excel(name = "网段")
//@Excel(name = "网段")
private String network;
private String content;
@Excel(name = "类型")
//@Excel(name = "类型")
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);
List<Status> listStatus(@Param("status")Status status);
List<Status> export(@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));
for (Map.Entry<String, List<Status>> entrys : maps.entrySet()) {
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) {
int a = rowNum++;
Row row = sheet.getRow(a); // 获取指定索引的行
@ -153,7 +153,7 @@ public class ExcelExportService {
rowNum = 1;
for (Map.Entry<String, List<Status>> entry : categoryMap.entrySet()) {
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++);
HashMap<String, String> itemTypeMap = new HashMap<>();
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);
return list;
}
public List<Status> export(Status status) {
List<Status> list = statusMapper.export(status);
return list;
}
public List<Status> deviceStatusListById(Status 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
</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 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

Loading…
Cancel
Save