diff --git a/zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java b/zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java index 113d1b76..452e8407 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java +++ b/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 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 list = new ArrayList<>(); dataArray.forEach(o -> { - Map map = new HashMap<>(); + Map 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 params = jsonObject.toJavaObject(new TypeReference>() { - }); - 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 params = jsonObject.toJavaObject(new TypeReference>() { + }); + 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 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) param)); + } + HashMap hashMap = new HashMap<>(); + hashMap.put("SET", "7"); + invokedFunction(deviceId, "SETMD", hashMap); + return AjaxResult.success(resultArray); + } + + public HashMap objectToMap(Object obj) { + Map 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) map; + } + /** * 查询物联设备事件数据 * diff --git a/zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java b/zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java index 2c2b54c2..013dbdbe 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java +++ b/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%"); } diff --git a/zc-business/src/main/java/com/zc/business/controller/StatusController.java b/zc-business/src/main/java/com/zc/business/controller/StatusController.java index f0a402cb..52b65fbd 100644 --- a/zc-business/src/main/java/com/zc/business/controller/StatusController.java +++ b/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 listStatus = statusService.list(status); + List listStatus = statusService.export(status); ExcelUtil util = new ExcelUtil<>(Status.class); util.exportExcel(response, listStatus, "【请填写功能名称】数据"); } @@ -86,7 +86,7 @@ public class StatusController extends BaseController { Map mapSort=new TreeMap<>(); for (Map.Entry> entry : mapTime.entrySet()) { List 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); } diff --git a/zc-business/src/main/java/com/zc/business/domain/Status.java b/zc-business/src/main/java/com/zc/business/domain/Status.java index bf61b15c..0ab2a5a6 100644 --- a/zc-business/src/main/java/com/zc/business/domain/Status.java +++ b/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; diff --git a/zc-business/src/main/java/com/zc/business/mapper/StatusMapper.java b/zc-business/src/main/java/com/zc/business/mapper/StatusMapper.java index 9626befa..3f2a0d56 100644 --- a/zc-business/src/main/java/com/zc/business/mapper/StatusMapper.java +++ b/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 listStatus(@Param("status")Status status); + List export(@Param("status")Status status); List deviceStatusListById(@Param("status")Status status); } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/ExcelExportService.java b/zc-business/src/main/java/com/zc/business/service/impl/ExcelExportService.java index 012ae181..98e1441c 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/ExcelExportService.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/ExcelExportService.java @@ -102,7 +102,7 @@ public class ExcelExportService { Map> maps = groupItem.stream().filter(iteam -> iteam.getType() != null).collect(Collectors.groupingBy(Status::getType)); for (Map.Entry> entrys : maps.entrySet()) { List 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> entry : categoryMap.entrySet()) { List 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 itemTypeMap = new HashMap<>(); itemTypeMap.put("1", "高清网络枪型固定摄像机"); diff --git a/zc-business/src/main/java/com/zc/business/service/impl/StatusService.java b/zc-business/src/main/java/com/zc/business/service/impl/StatusService.java index 93c42b31..d490ba8f 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/StatusService.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/StatusService.java @@ -29,6 +29,10 @@ public class StatusService { List list = statusMapper.listStatus(status); return list; } + public List export(Status status) { + List list = statusMapper.export(status); + return list; + } public List deviceStatusListById(Status status) { return statusMapper.deviceStatusListById(status); diff --git a/zc-business/src/main/resources/mapper/business/StatusMapper.xml b/zc-business/src/main/resources/mapper/business/StatusMapper.xml index cc5d9b16..9cf01288 100644 --- a/zc-business/src/main/resources/mapper/business/StatusMapper.xml +++ b/zc-business/src/main/resources/mapper/business/StatusMapper.xml @@ -85,6 +85,44 @@ select id, device_no, device_name, device_status, time from status + + + +