Browse Source

优化设备统计页面

优化天气请求报错、设备功能请求报错返回
develop
zhaoxianglong 11 months ago
parent
commit
18a3ffde12
  1. 21
      zc-business/src/main/java/com/zc/business/controller/DcDeviceController.java
  2. 5
      zc-business/src/main/java/com/zc/business/controller/DeviceStatus.java
  3. 38
      zc-business/src/main/java/com/zc/business/controller/StatusController.java
  4. 4
      zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java
  5. 4
      zc-business/src/main/java/com/zc/business/domain/DcDevice.java
  6. 9
      zc-business/src/main/java/com/zc/business/domain/Status.java
  7. 3
      zc-business/src/main/java/com/zc/business/mapper/DcDeviceMapper.java
  8. 2
      zc-business/src/main/java/com/zc/business/service/IDcDeviceService.java
  9. 7
      zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java
  10. 2
      zc-business/src/main/java/com/zc/business/service/impl/DcWeatherMonitoringServiceImpl.java
  11. 6
      zc-business/src/main/resources/mapper/business/DcDeviceMapper.xml
  12. 6
      zc-business/src/main/resources/mapper/business/StatusMapper.xml

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

@ -349,17 +349,22 @@ public class DcDeviceController extends BaseController {
return AjaxResult.error("设备未接入");
}
OkHttp okHttp = new OkHttp();
try {
RequestParams requestParams = new RequestParams(props);
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams(props);
Response response // 请求响应
= okHttp
.url(iotAddress + "/api/iot/device/functions/" + deviceId + "/" + functionId) // 请求地址
.data(requestParams)
.post(); // 请求方法
return JSON.parseObject(response.body().string(), AjaxResult.class);
Response response // 请求响应
= okHttp
.url(iotAddress + "/api/iot/device/functions/" + deviceId + "/" + functionId) // 请求地址
.data(requestParams)
.post(); // 请求方法
return JSON.parseObject(response.body().string(), AjaxResult.class);
}catch (Exception e){
return AjaxResult.error("请求失败");
}
}

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

@ -1,5 +1,6 @@
package com.zc.business.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.util.StringUtil;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.zc.business.domain.DcDevice;
@ -47,7 +48,9 @@ public class DeviceStatus {
IDcDeviceService deviceService= SpringUtils.getBean(IDcDeviceService.class);
StatusService statusService= SpringUtils.getBean(StatusService.class);
ExecutorService executor = Executors.newFixedThreadPool(100);
List<DcDevice> deviceList = deviceService.list();
LambdaQueryWrapper<DcDevice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DcDevice::getUseState,1);
List<DcDevice> deviceList = deviceService.list(lambdaQueryWrapper);
List<Future<Void>> futures = new ArrayList<>();

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

@ -6,7 +6,9 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.DcDevice;
import com.zc.business.domain.Status;
import com.zc.business.service.impl.DcDeviceServiceImpl;
import com.zc.business.service.impl.StatusService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -22,7 +24,6 @@ import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
import static com.ruoyi.common.utils.PageUtils.startPage;
@Api(tags="设备状态")
@RestController
@ -31,6 +32,8 @@ public class StatusController extends BaseController {
@Autowired
private StatusService statusService;
@Autowired
private DcDeviceServiceImpl dcDeviceService;
//设备列表
@ApiOperation("设备状态列表按时间和类型")
@ -94,11 +97,39 @@ public class StatusController extends BaseController {
return AjaxResult.success(mapSort);
}
@ApiOperation("根据设备Id查询折线图数据")
@GetMapping("/deviceStatusList")
public AjaxResult getDeviceStatusList(Long deviceId) {
LocalDateTime thirtyDaysAgo = LocalDateTime.now().minusDays(30);
LocalDateTime currentTime = LocalDateTime.now();
Status status = new Status();
status.setStartTime(thirtyDaysAgo);
status.setTime(currentTime);
status.setDeviceId(deviceId);
List<Status> listStatus = statusService.list(status);
// Group by day and calculate average successRate
Map<Integer, Double> averageSuccessRateByDay = listStatus.stream()
.collect(Collectors.groupingBy(s -> s.getTime().getDayOfMonth(),
Collectors.averagingDouble(s -> Double.parseDouble(s.getSuccessRate().replace("%","")))));
if (averageSuccessRateByDay.isEmpty()) {
return AjaxResult.success("暂无数据");
}
return AjaxResult.success(averageSuccessRateByDay);
}
//按类型划分设备
@ApiOperation("设备状态列表按类型")
@GetMapping ("/type")
public AjaxResult getTypeList()
{
List<DcDevice> dcDeviceList = dcDeviceService.numberOfDevicesByType();
HashMap<String, String> itemTypeMap = new HashMap<>();
itemTypeMap.put("1-1", "高清网络枪型固定摄像机");
itemTypeMap.put("1-2", "高清网络球形摄像机");
@ -122,6 +153,7 @@ public class StatusController extends BaseController {
Status status = new Status();
status.setStartTime(todayStart);
status.setTime(currentTime);
status.setUseState(1);
List<Status> listStatus = statusService.list(status);
//根据时间分组
Map<Integer, List<Status>> map = listStatus.stream()
@ -151,8 +183,10 @@ public class StatusController extends BaseController {
maps.put("sucessRate",String.format("%.2f", sucessRate)+"%");
//离线率
maps.put("failRate",failRate);
//已使用数量
maps.put("sumUseState",String.valueOf(groupItems.size()));
//总数
maps.put("sum",String.valueOf(groupItems.size()));
maps.put("sum", String.valueOf(dcDeviceList.stream().filter(item -> Objects.equals(item.getDeviceType(), entrys.getKey())).map(DcDevice::getSumAll).collect(Collectors.toList()).get(0)));
if(itemTypeMap.get(entrys.getKey())!=null) {
subMap.put(itemTypeMap.get(entrys.getKey()), maps);
}

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

@ -103,7 +103,7 @@ public class WeatherForecastController extends BaseController {
}
}
} catch (Exception e) {
return AjaxResult.error(500, "连接异常,请检查网络");
//return AjaxResult.error(500, "连接异常,请检查网络");
}
}
}
@ -186,7 +186,7 @@ public class WeatherForecastController extends BaseController {
}
} catch (Exception e) {
return AjaxResult.error(500, "连接异常,请检查网络");
//return AjaxResult.error(500, "连接异常,请检查网络");
}
}

4
zc-business/src/main/java/com/zc/business/domain/DcDevice.java

@ -39,7 +39,7 @@ public class DcDevice {
@ApiModelProperty("设备编号")
private String deviceCode;
@ApiModelProperty("设备类型")
private Integer deviceType;
private String deviceType;
@ApiModelProperty("设备图片")
private String deviceImg;
@ApiModelProperty("安装日期")
@ -73,6 +73,8 @@ public class DcDevice {
@TableField(exist = false)
private String longitude;
@TableField(exist = false)
private String sumAll;
@TableField(exist = false)
private String latitude;
//设备厂商
@TableField(exist = false)

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

@ -117,6 +117,8 @@ public class Status {
@Excel(name = "状态")
private int deviceStatus;
@Excel(name = "使用状态")
private int useState;
@ -228,4 +230,11 @@ public class Status {
private String type;
public int getUseState() {
return useState;
}
public void setUseState(int useState) {
this.useState = useState;
}
}

3
zc-business/src/main/java/com/zc/business/mapper/DcDeviceMapper.java

@ -15,4 +15,7 @@ import java.util.List;
public interface DcDeviceMapper extends BaseMapper<DcDevice> {
List<DcDevice> selectDcDeviceList(DcDevice dcDevice);
List<DcDevice> numberOfDevicesByType();
}

2
zc-business/src/main/java/com/zc/business/service/IDcDeviceService.java

@ -77,4 +77,6 @@ public interface IDcDeviceService extends IService<DcDevice> {
Long statisticalAnomalyDevice();
List<DcDevice> devicePileNumberQueryDevice(Map<String,Object> parameter);
List<DcDevice> numberOfDevicesByType();
}

7
zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java

@ -401,7 +401,7 @@ public class DcDeviceServiceImpl extends ServiceImpl<DcDeviceMapper, DcDevice> i
device.setChildType(childType);
}
if (!Objects.equals(deviceType, "null")) {
device.setDeviceType(Integer.valueOf(deviceType));
device.setDeviceType(deviceType);
}
if (!Objects.equals(deviceState, "null")) {
device.setDeviceState(deviceState);
@ -446,6 +446,11 @@ public class DcDeviceServiceImpl extends ServiceImpl<DcDeviceMapper, DcDevice> i
return dcDevices;
}
@Override
public List<DcDevice> numberOfDevicesByType() {
return dcDeviceMapper.numberOfDevicesByType();
}
public static <T> List<T> castList(Object obj, Class<T> clazz) {
List<T> result = new ArrayList<T>();
if (obj instanceof List<?>) {

2
zc-business/src/main/java/com/zc/business/service/impl/DcWeatherMonitoringServiceImpl.java

@ -45,7 +45,7 @@ public class DcWeatherMonitoringServiceImpl implements IDcWeatherMonitoringServi
DcDevice dcDevice = new DcDevice();
dcDevice.setDeviceType(3);
dcDevice.setDeviceType("3");
List<DcDevice> deviceList = dcDeviceService.listDevice(dcDevice);
//正常路段里程

6
zc-business/src/main/resources/mapper/business/DcDeviceMapper.xml

@ -105,4 +105,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="numberOfDevicesByType" parameterType="dcDevice" resultMap="DcDevice">
SELECT COALESCE(child_type, device_type) AS device_type, COUNT(*) AS sumAll
FROM dc_device
GROUP BY device_type, child_type;
</select>
</mapper>

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

@ -99,6 +99,12 @@
<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 d.use_state = #{status.useState}
</if>
</where>
</select>

Loading…
Cancel
Save