Parcourir la source

#MOD 设备详情图表

谭斌 il y a 2 ans
Parent
commit
8efbf8183f

+ 83 - 4
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.text.StrBuilder;
 import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -18,10 +19,7 @@ import com.xy.collections.list.JList;
 import com.xy.config.DeviceThreadPoolConfig;
 import com.xy.consts.DictConsts;
 import com.xy.dto.*;
-import com.xy.entity.DeviceErrorsRecord;
-import com.xy.entity.DeviceInfo;
-import com.xy.entity.DeviceStatus;
-import com.xy.entity.SysDictRedis;
+import com.xy.entity.*;
 import com.xy.error.CommRuntimeException;
 import com.xy.mapper.DeviceInfoMapper;
 import com.xy.mapper.entity.DeviceInfoQueryPage;
@@ -43,6 +41,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -68,8 +68,13 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
     private final DeviceRegisterServiceImpl deviceRegisterService;
 
     private final DeviceErrorsRecordServiceImpl deviceErrorsRecordService;
+
     private final DeviceDataServiceImpl deviceDataService;
 
+    private final DeviceTempRecordsServiceImpl deviceTempRecordsService;
+
+    private final DeviceNetRecordServiceImpl deviceNetRecordService;
+
     private final GoodsDeviceService goodsDeviceService;
 
     private final RedisService<String> redisService;
@@ -732,6 +737,43 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
      */
     private DeviceInfoDto.DeviceDataCountVO dataCount3(DeviceInfoDto.DeviceDataCountDTO dto) {
         DeviceInfoDto.DeviceDataCountVO vo = new DeviceInfoDto.DeviceDataCountVO();
+        Long deviceId = dto.getDeviceId();
+        String choosDate = dto.getChoosDate();
+        if (StrUtil.isEmpty(choosDate)) {
+            choosDate = DateUtil.formatDate(new Date());
+        }
+        String startTime = choosDate + " 00:00:00";
+        String endTime = choosDate + " 23:59:59";
+        //查询选定日期的温度数据
+        List<DeviceTempRecords> deviceTempRecords = deviceTempRecordsService.list(Wrappers.<DeviceTempRecords>lambdaQuery()
+                .eq(DeviceTempRecords::getDeviceId, deviceId).between(DeviceTempRecords::getCreateTime, startTime, endTime)
+                .orderBy(true, true, DeviceTempRecords::getCreateTime));
+        if (CollUtil.isEmpty(deviceTempRecords)) {
+            return vo;
+        }
+
+        DeviceInfoDto.TemperatureChart temperatureChart = new DeviceInfoDto.TemperatureChart();
+        List<String> categories = new ArrayList<>();
+
+
+        String name = "温度";
+        List<DeviceInfoDto.MyChartSeries2> series = new ArrayList<>();
+        List<BigDecimal> data = new ArrayList<>();
+        deviceTempRecords.forEach(d -> {
+            String tempValue = d.getTempValue();
+            LocalDateTime createTime = d.getCreateTime();
+            String time = DateUtil.format(createTime, "HH:mm:ss");
+            categories.add(time);
+            data.add(NumberUtil.toBigDecimal(tempValue));
+
+        });
+        DeviceInfoDto.MyChartSeries2 myChartSeries = new DeviceInfoDto.MyChartSeries2();
+        myChartSeries.setName(name);
+        myChartSeries.setData(data);
+        series.add(myChartSeries);
+        temperatureChart.setSeries(series);
+        temperatureChart.setCategories(categories);
+        vo.setTemperatureChart(temperatureChart);
         return vo;
     }
 
@@ -743,6 +785,43 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
      */
     private DeviceInfoDto.DeviceDataCountVO dataCount4(DeviceInfoDto.DeviceDataCountDTO dto) {
         DeviceInfoDto.DeviceDataCountVO vo = new DeviceInfoDto.DeviceDataCountVO();
+        Long deviceId = dto.getDeviceId();
+        String choosDate = dto.getChoosDate();
+        if (StrUtil.isEmpty(choosDate)) {
+            choosDate = DateUtil.formatDate(new Date());
+        }
+        String startTime = choosDate + " 00:00:00";
+        String endTime = choosDate + " 23:59:59";
+        //查询选定日期的温度数据
+        List<DeviceNetRecord> deviceNetRecords = deviceNetRecordService.list(Wrappers.<DeviceNetRecord>lambdaQuery()
+                .eq(DeviceNetRecord::getDeviceId, deviceId).between(DeviceNetRecord::getCreateTime, startTime, endTime)
+                .orderBy(true, true, DeviceNetRecord::getCreateTime));
+        if (CollUtil.isEmpty(deviceNetRecords)) {
+            return vo;
+        }
+
+        DeviceInfoDto.SignalChart signalChart = new DeviceInfoDto.SignalChart();
+        List<String> categories = new ArrayList<>();
+
+
+        String name = "信号";
+        List<DeviceInfoDto.MyChartSeries> series = new ArrayList<>();
+        List<Integer> data = new ArrayList<>();
+        deviceNetRecords.forEach(d -> {
+            Integer value = d.getSimDbm();
+            LocalDateTime createTime = d.getCreateTime();
+            String time = DateUtil.format(createTime, "HH:mm:ss");
+            categories.add(time);
+            data.add(value);
+
+        });
+        DeviceInfoDto.MyChartSeries myChartSeries = new DeviceInfoDto.MyChartSeries();
+        myChartSeries.setName(name);
+        myChartSeries.setData(data);
+        series.add(myChartSeries);
+        signalChart.setSeries(series);
+        signalChart.setCategories(categories);
+        vo.setSignalChart(signalChart);
         return vo;
     }
 

+ 50 - 1
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -13,6 +13,7 @@ import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -641,8 +642,11 @@ public class DeviceInfoDto {
         /**
          * 统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)
          */
-        @ApiModelProperty(value = "统计类型", notes = "统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)")
+        @ApiModelProperty(value = "统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)", notes = "统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)")
         private Integer type;
+
+        @ApiModelProperty("温度、信号图表选择日期yyyy-MM-dd")
+        private String choosDate;
     }
 
     @Data
@@ -660,6 +664,40 @@ public class DeviceInfoDto {
         @ApiModelProperty("经营图表")
         private BusinessChart businessChart;
 
+        @ApiModelProperty("温度图表")
+        private TemperatureChart temperatureChart;
+
+        @ApiModelProperty("信号图表")
+        private SignalChart signalChart;
+
+    }
+
+    /**
+     * 信号图表数据
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class SignalChart {
+        @ApiModelProperty("横坐标:当天到秒的数据")
+        private List<String> categories;
+
+        @ApiModelProperty("名称、数据")
+        private List<MyChartSeries> series;
+
+    }
+
+    /**
+     * 温度图表数据
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class TemperatureChart {
+        @ApiModelProperty("横坐标:当天到秒的数据")
+        private List<String> categories;
+
+        @ApiModelProperty("名称、数据")
+        private List<MyChartSeries2> series;
+
     }
 
     /**
@@ -687,6 +725,17 @@ public class DeviceInfoDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class MyChartSeries2 {
+        @ApiModelProperty("数据")
+        private List<BigDecimal> data;
+
+        @ApiModelProperty("名称")
+        private String name;
+
+    }
+
 
     @Data
     @Accessors(chain = true)