Bladeren bron

'开发所有室内房间设备(日平均、月平均、年平均)、单个室内房间设备(日平均、月平均、年平均)、室外设备(日平均、月平均、年平均)导出接口'

james 1 jaar geleden
bovenliggende
commit
44bc92c20b
16 gewijzigde bestanden met toevoegingen van 604 en 2 verwijderingen
  1. 33 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataQueryController.java
  2. 21 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataXfHistoryController.java
  3. 66 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/DataXfHistory.java
  4. 59 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataAverageExportVO.java
  5. 34 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataAverageRequestVO.java
  6. 48 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataAverageResponseVO.java
  7. 14 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataHistoryAvergerVO.java
  8. 18 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataRealTimeMapper.java
  9. 16 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataXfHistoryMapper.java
  10. 7 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataQueryService.java
  11. 16 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataXfHistoryService.java
  12. 193 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataQueryServiceImpl.java
  13. 20 0
      service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataXfHistoryServiceImpl.java
  14. 2 2
      service-backend/service-backend-biz/src/main/resources/bootstrap.yml
  15. 40 0
      service-backend/service-backend-biz/src/main/resources/mapper/backend/DataRealTimeMapper.xml
  16. 17 0
      service-backend/service-backend-biz/src/main/resources/mapper/backend/DataXfHistoryMapper.xml

+ 33 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataQueryController.java

@@ -5,13 +5,19 @@ import com.usky.backend.domain.request.HistoryQueryVo;
 import com.usky.backend.domain.request.LastQueryVo;
 import com.usky.backend.domain.response.HistoryResultVo;
 import com.usky.backend.domain.response.LastResultVo;
+import com.usky.backend.domain.vo.DataAverageExportVO;
+import com.usky.backend.domain.vo.DataAverageRequestVO;
+import com.usky.backend.domain.vo.DataAverageResponseVO;
 import com.usky.backend.service.DataQueryService;
 import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.utils.poi.ExcelUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -76,5 +82,32 @@ public class DataQueryController {
         return ApiResult.success(dataQueryService.status());
     }
 
+    /**
+     * 设备日平均值、月平均值、年平均值
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("deviceDataAverage")
+    @ApiOperation("获取设备日平均、月平均、年平均值")
+    public ApiResult<List<DataAverageResponseVO>> deviceDataAverage(@RequestBody DataAverageRequestVO requestVO){
+        return ApiResult.success(dataQueryService.deviceDataAverage(requestVO));
+    }
+
+    @PostMapping("export")
+    public void export(@RequestBody DataAverageRequestVO requestVO, HttpServletResponse response) throws IOException{
+        List<DataAverageExportVO> list = dataQueryService.DataAverageExport(requestVO);
+        ExcelUtil<DataAverageExportVO> util = new ExcelUtil<DataAverageExportVO>(DataAverageExportVO.class);
+        String rangeDate = "";
+        if(requestVO.getDataType().equals("Day")){
+            rangeDate = requestVO.getStartTime().substring(0,10)+"_"+requestVO.getEndTime().substring(0,10);
+        }else if(requestVO.getDataType().equals("Month")){
+            rangeDate = requestVO.getStartTime().substring(0,7)+"_"+requestVO.getEndTime().substring(0,7);
+        }else if(requestVO.getDataType().equals("Year")){
+            rangeDate = requestVO.getStartTime().substring(0,4)+"_"+requestVO.getEndTime().substring(0,4);
+        }
+        String excelName = requestVO.getGroupType()+"_"+requestVO.getDataType()+"_"+rangeDate;
+        util.exportExcel(response,list,excelName,excelName);
+    }
+
 }
 

+ 21 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/DataXfHistoryController.java

@@ -0,0 +1,21 @@
+package com.usky.backend.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 新风系统历史数据表 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2023-08-23
+ */
+@Controller
+@RequestMapping("/dataXfHistory")
+public class DataXfHistoryController {
+
+}
+

+ 66 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/DataXfHistory.java

@@ -0,0 +1,66 @@
+package com.usky.backend.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 新风系统历史数据表
+ * </p>
+ *
+ * @author ya
+ * @since 2023-08-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DataXfHistory implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 产品编码
+     */
+    private String productCode;
+
+    /**
+     * 设备类型
+     */
+    private Integer deviceType;
+
+    /**
+     * 属性名称
+     */
+    private String attributeName;
+
+    /**
+     * 属性值
+     */
+    private String attributeData;
+
+    /**
+     * 数据时间
+     */
+    private LocalDateTime dataTime;
+
+    /**
+     * 插入时间
+     */
+    private LocalDateTime insertTime;
+
+
+}

+ 59 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataAverageExportVO.java

@@ -0,0 +1,59 @@
+package com.usky.backend.domain.vo;
+
+import com.usky.common.core.annotation.Excel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DataAverageExportVO {
+    /**
+     * 数据统计方式时间
+     */
+    @Excel(name = "数据统计时间")
+    private String dataDate;
+
+    /**
+     * 设备Id
+     */
+    @Excel(name = "设备Id")
+    private String deviceId;
+
+    /**
+     * 温度平均值
+     */
+    @Excel(name = "温度平均值")
+    private String wd;
+
+    /**
+     * 湿度平均值
+     */
+    @Excel(name = "湿度平均值")
+    private String sd;
+
+    /**
+     * pm2_5平均值
+     */
+    @Excel(name = "pm2_5平均值")
+    private String pm2_5;
+
+    /**
+     * co2平均值
+     */
+    @Excel(name = "co2平均值")
+    private String co2;
+
+    /**
+     * voc平均值(优就是1,良是2,差是3)
+     */
+    @Excel(name = "voc等级值")
+    private String voc;
+
+    /**
+     * 空气质量平均值(1、优质 2、良好 3、轻度污染 4、中度污染 5、重度污染 6、严重污染)
+     */
+    @Excel(name = "空气质量等级值")
+    private String quality;
+}

+ 34 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataAverageRequestVO.java

@@ -0,0 +1,34 @@
+package com.usky.backend.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class DataAverageRequestVO implements Serializable {
+    /**
+     * 统计方式(”Day“,"Month","Year")
+     */
+    private String dataType;
+
+    /**
+     * 分组方式("Each","Total")
+     */
+    private String groupType;
+
+    //产品编码
+    private String productCode;
+    //设备类型编码
+    private String deviceType;
+    //设备Id
+    private List<String> deviceIds;
+    //设备属性集合
+    private List<String> attributeNames;
+    //开始时间
+    private String startTime;
+    //结束时间
+    private String endTime;
+
+
+}

+ 48 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataAverageResponseVO.java

@@ -0,0 +1,48 @@
+package com.usky.backend.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DataAverageResponseVO implements Serializable {
+    /**
+     * 数据统计方式时间
+     */
+    private String dataDate;
+
+    /**
+     * 设备Id
+     */
+    private String deviceId;
+
+    /**
+     * 温度平均值
+     */
+    private String wd;
+
+    /**
+     * 湿度平均值
+     */
+    private String sd;
+
+    /**
+     * pm2_5平均值
+     */
+    private String pm2_5;
+
+    /**
+     * co2平均值
+     */
+    private String co2;
+
+    /**
+     * voc平均值(优就是1,良是2,差是3)
+     */
+    private String voc;
+
+    /**
+     * 空气质量平均值(1、优质 2、良好 3、轻度污染 4、中度污染 5、重度污染 6、严重污染)
+     */
+    private String quality;
+}

+ 14 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/domain/vo/DataHistoryAvergerVO.java

@@ -0,0 +1,14 @@
+package com.usky.backend.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class DataHistoryAvergerVO {
+    private String dataDate;
+
+    private String deviceId;
+
+    private String attributeName;
+
+    private double avrg;
+}

+ 18 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataRealTimeMapper.java

@@ -3,6 +3,7 @@ package com.usky.backend.mapper;
 import com.usky.backend.domain.DataRealTime;
 //import com.usky.backend.domain.request.DeviceDataInfoVO;
 import com.usky.backend.domain.MetricItemVo;
+import com.usky.backend.domain.vo.DataHistoryAvergerVO;
 import com.usky.common.mybatis.core.CrudMapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
@@ -23,4 +24,21 @@ public interface DataRealTimeMapper extends CrudMapper<DataRealTime> {
 //    int insertHistoryTable(@Param("dataInfo") DeviceDataInfoVO dataInfo, @Param("tableName") String tableName, @Param("curTime") LocalDateTime curTime);
     List<MetricItemVo> QueryHistoryData(@Param("deviceId") String deviceId,@Param("metric") String metric,@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("tableName") String tableName);
 
+    String QueryDeviceTypeAbbrevia(@Param("deviceType") String deviceType);
+
+    List<DataHistoryAvergerVO> QueryEachHistoryAvrgData(@Param("leftLen") Integer leftLen,
+                                                        @Param("tableName") String tableName,
+                                                        @Param("startTime") String startTime,
+                                                        @Param("endTime") String endTime,
+                                                        @Param("productCode") String productCode,
+                                                        @Param("deviceIdList") List<String> deviceIdList,
+                                                        @Param("attributeNameList") List<String> attributeNameList);
+
+    List<DataHistoryAvergerVO> QueryTotalHistoryAvrgData(@Param("leftLen") Integer leftLen,
+                                                        @Param("tableName") String tableName,
+                                                        @Param("startTime") String startTime,
+                                                        @Param("endTime") String endTime,
+                                                        @Param("productCode") String productCode,
+                                                        @Param("attributeNameList") List<String> attributeNameList);
+
 }

+ 16 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataXfHistoryMapper.java

@@ -0,0 +1,16 @@
+package com.usky.backend.mapper;
+
+import com.usky.backend.domain.DataXfHistory;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 新风系统历史数据表 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2023-08-23
+ */
+public interface DataXfHistoryMapper extends CrudMapper<DataXfHistory> {
+
+}

+ 7 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataQueryService.java

@@ -6,6 +6,9 @@ import com.usky.backend.domain.request.HistoryQueryVo;
 import com.usky.backend.domain.request.LastQueryVo;
 import com.usky.backend.domain.response.HistoryResultVo;
 import com.usky.backend.domain.response.LastResultVo;
+import com.usky.backend.domain.vo.DataAverageExportVO;
+import com.usky.backend.domain.vo.DataAverageRequestVO;
+import com.usky.backend.domain.vo.DataAverageResponseVO;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
@@ -18,4 +21,8 @@ public interface DataQueryService {
     List<LastResultVo> last(LastQueryVo lastQueryVo);
 
     List<StatusVO> status();
+
+    List<DataAverageResponseVO> deviceDataAverage(DataAverageRequestVO requestVO);
+
+    List<DataAverageExportVO> DataAverageExport(DataAverageRequestVO requestVO);
 }

+ 16 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataXfHistoryService.java

@@ -0,0 +1,16 @@
+package com.usky.backend.service;
+
+import com.usky.backend.domain.DataXfHistory;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 新风系统历史数据表 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2023-08-23
+ */
+public interface DataXfHistoryService extends CrudService<DataXfHistory> {
+
+}

+ 193 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataQueryServiceImpl.java

@@ -13,6 +13,10 @@ import com.usky.backend.domain.request.HistoryQueryVo;
 import com.usky.backend.domain.request.LastQueryVo;
 import com.usky.backend.domain.response.HistoryResultVo;
 import com.usky.backend.domain.response.LastResultVo;
+import com.usky.backend.domain.vo.DataAverageExportVO;
+import com.usky.backend.domain.vo.DataAverageRequestVO;
+import com.usky.backend.domain.vo.DataAverageResponseVO;
+import com.usky.backend.domain.vo.DataHistoryAvergerVO;
 import com.usky.backend.mapper.DataRealTimeMapper;
 import com.usky.backend.service.*;
 import net.sf.ehcache.search.expression.IsNull;
@@ -286,4 +290,193 @@ public class DataQueryServiceImpl implements DataQueryService {
         return list;
     }
 
+    @Override
+    public List<DataAverageResponseVO> deviceDataAverage(DataAverageRequestVO requestVO){
+        List<DataAverageResponseVO> list = new ArrayList<>();
+
+        //设备类型简称
+        String typeAbbrevia = dataRealTimeMapper.QueryDeviceTypeAbbrevia(requestVO.getDeviceType());
+        String tableName = "data_"+typeAbbrevia+"_history";
+
+        int leftLen = 0;
+        if(requestVO.getDataType().equals("Day")){
+            leftLen = 10;
+        }else if(requestVO.getDataType().equals("Month")){
+            leftLen = 7;
+        }else if(requestVO.getDataType().equals("Year")){
+            leftLen = 4;
+        }
+
+        List<DataHistoryAvergerVO> list1 = new ArrayList<>();
+        if(requestVO.getGroupType().equals("Each")){
+            list1 = dataRealTimeMapper.QueryEachHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getDeviceIds(),requestVO.getAttributeNames());
+        }else if(requestVO.getGroupType().equals("Total")){
+            list1 = dataRealTimeMapper.QueryTotalHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getAttributeNames());
+        }
+        if(CollectionUtils.isNotEmpty(list1)){
+            List<String> dateList = new ArrayList<>();
+            List<String> deviceIdList = new ArrayList<>();
+            for(int i=0;i<list1.size();i++){
+                if(!dateList.contains(list1.get(i).getDataDate())){
+                    dateList.add(list1.get(i).getDataDate());
+                }
+                if(!deviceIdList.contains(list1.get(i).getDeviceId())){
+                    deviceIdList.add(list1.get(i).getDeviceId());
+                }
+            }
+            if(CollectionUtils.isNotEmpty(dateList) && CollectionUtils.isNotEmpty(deviceIdList)){
+                for(int i=0;i<dateList.size();i++){
+                    for(int j=0;j<deviceIdList.size();j++){
+                        DataAverageResponseVO responseVO = new DataAverageResponseVO();
+                        responseVO.setDataDate(dateList.get(i));
+                        responseVO.setDeviceId(deviceIdList.get(j));
+                        for(int k=0;k<list1.size();k++){
+                            if(dateList.get(i).equals(list1.get(k).getDataDate()) && deviceIdList.get(j).equals(list1.get(k).getDeviceId())){
+                                if(list1.get(k).getAttributeName().equals("wd")){
+                                    responseVO.setWd(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("sd")){
+                                    responseVO.setSd(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("pm2_5")){
+                                    responseVO.setPm2_5(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("co2")){
+                                    responseVO.setCo2(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("voc")){ //voc平均值(优就是1,良是2,差是3)
+                                    String name = "";
+                                    double value = list1.get(k).getAvrg();
+                                    if(value>=1 && value<=1.5){
+                                        name = "优";
+                                    }else if(value>1.5 && value<=2.5){
+                                        name = "良";
+                                    }else if(value>2.5 && value<=3){
+                                        name = "差";
+                                    }
+                                    responseVO.setVoc(name);
+                                }
+                                if(list1.get(k).getAttributeName().equals("quality")){ //空气质量平均值(1、优质 2、良好 3、轻度污染 4、中度污染 5、重度污染 6、严重污染)
+                                    String name = "";
+                                    double value = list1.get(k).getAvrg();
+                                    if(value>=1 && value<=1.5){
+                                        name = "优质";
+                                    }else if(value>1.5 && value<=2.5){
+                                        name = "良好";
+                                    }else if(value>2.5 && value<=3.5){
+                                        name = "轻度污染";
+                                    }else if(value>3.5 && value<=4.5){
+                                        name = "中度污染";
+                                    }else if(value>4.5 && value<=5.5){
+                                        name = "重度污染";
+                                    }else if(value>5.5 && value<=6){
+                                        name = "严重污染";
+                                    }
+                                    responseVO.setQuality(name);
+                                }
+                            }
+                        }
+                        list.add(responseVO);
+                    }
+                }
+            }
+        }
+
+        return list;
+    }
+
+    @Override
+    public List<DataAverageExportVO> DataAverageExport(DataAverageRequestVO requestVO){
+        List<DataAverageExportVO> list = new ArrayList<>();
+        //设备类型简称
+        String typeAbbrevia = dataRealTimeMapper.QueryDeviceTypeAbbrevia(requestVO.getDeviceType());
+        String tableName = "data_"+typeAbbrevia+"_history";
+
+        int leftLen = 0;
+        if(requestVO.getDataType().equals("Day")){
+            leftLen = 10;
+        }else if(requestVO.getDataType().equals("Month")){
+            leftLen = 7;
+        }else if(requestVO.getDataType().equals("Year")){
+            leftLen = 4;
+        }
+
+        List<DataHistoryAvergerVO> list1 = new ArrayList<>();
+        if(requestVO.getGroupType().equals("Each")){
+            list1 = dataRealTimeMapper.QueryEachHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getDeviceIds(),requestVO.getAttributeNames());
+        }else if(requestVO.getGroupType().equals("Total")){
+            list1 = dataRealTimeMapper.QueryTotalHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getAttributeNames());
+        }
+        if(CollectionUtils.isNotEmpty(list1)){
+            List<String> dateList = new ArrayList<>();
+            List<String> deviceIdList = new ArrayList<>();
+            for(int i=0;i<list1.size();i++){
+                if(!dateList.contains(list1.get(i).getDataDate())){
+                    dateList.add(list1.get(i).getDataDate());
+                }
+                if(!deviceIdList.contains(list1.get(i).getDeviceId())){
+                    deviceIdList.add(list1.get(i).getDeviceId());
+                }
+            }
+            if(CollectionUtils.isNotEmpty(dateList) && CollectionUtils.isNotEmpty(deviceIdList)){
+                for(int i=0;i<dateList.size();i++){
+                    for(int j=0;j<deviceIdList.size();j++){
+                        DataAverageExportVO responseVO = new DataAverageExportVO();
+                        responseVO.setDataDate(dateList.get(i));
+                        responseVO.setDeviceId(deviceIdList.get(j));
+                        for(int k=0;k<list1.size();k++){
+                            if(dateList.get(i).equals(list1.get(k).getDataDate()) && deviceIdList.get(j).equals(list1.get(k).getDeviceId())){
+                                if(list1.get(k).getAttributeName().equals("wd")){
+                                    responseVO.setWd(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("sd")){
+                                    responseVO.setSd(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("pm2_5")){
+                                    responseVO.setPm2_5(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("co2")){
+                                    responseVO.setCo2(Double.toString(list1.get(k).getAvrg()));
+                                }
+                                if(list1.get(k).getAttributeName().equals("voc")){ //voc平均值(优就是1,良是2,差是3)
+                                    String name = "";
+                                    double value = list1.get(k).getAvrg();
+                                    if(value>=1 && value<=1.5){
+                                        name = "优";
+                                    }else if(value>1.5 && value<=2.5){
+                                        name = "良";
+                                    }else if(value>2.5 && value<=3){
+                                        name = "差";
+                                    }
+                                    responseVO.setVoc(name);
+                                }
+                                if(list1.get(k).getAttributeName().equals("quality")){ //空气质量平均值(1、优质 2、良好 3、轻度污染 4、中度污染 5、重度污染 6、严重污染)
+                                    String name = "";
+                                    double value = list1.get(k).getAvrg();
+                                    if(value>=1 && value<=1.5){
+                                        name = "优质";
+                                    }else if(value>1.5 && value<=2.5){
+                                        name = "良好";
+                                    }else if(value>2.5 && value<=3.5){
+                                        name = "轻度污染";
+                                    }else if(value>3.5 && value<=4.5){
+                                        name = "中度污染";
+                                    }else if(value>4.5 && value<=5.5){
+                                        name = "重度污染";
+                                    }else if(value>5.5 && value<=6){
+                                        name = "严重污染";
+                                    }
+                                    responseVO.setQuality(name);
+                                }
+                            }
+                        }
+                        list.add(responseVO);
+                    }
+                }
+            }
+        }
+
+        return list;
+    }
+
 }

+ 20 - 0
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataXfHistoryServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.backend.service.impl;
+
+import com.usky.backend.domain.DataXfHistory;
+import com.usky.backend.mapper.DataXfHistoryMapper;
+import com.usky.backend.service.DataXfHistoryService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 新风系统历史数据表 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2023-08-23
+ */
+@Service
+public class DataXfHistoryServiceImpl extends AbstractCrudService<DataXfHistoryMapper, DataXfHistory> implements DataXfHistoryService {
+
+}

+ 2 - 2
service-backend/service-backend-biz/src/main/resources/bootstrap.yml

@@ -14,10 +14,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
       config:
         # 配置中心地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

+ 40 - 0
service-backend/service-backend-biz/src/main/resources/mapper/backend/DataRealTimeMapper.xml

@@ -35,5 +35,45 @@
         </where>
     </select>
 
+    <select id="QueryDeviceTypeAbbrevia" resultType="java.lang.String">
+        select
+            type_abbrevia
+        from data_config
+        <where>
+            <if test="1 == 1">
+                and type_code = #{deviceType}
+            </if>
+        </where>
+    </select>
+    <select id="QueryEachHistoryAvrgData" resultType="com.usky.backend.domain.vo.DataHistoryAvergerVO">
+        SELECT a.data_date as dataDate,a.device_id as deviceId, a.attribute_name as attributeName ,avg(a.attribute_data) as avrg
+        from (select product_code,device_id,attribute_name,attribute_data,left(data_time,#{leftLen}) as data_date FROM ${tableName} WHERE data_time  BETWEEN  #{startTime} AND  #{endTime} AND product_code = #{productCode}
+        <if test="deviceIdList != null and deviceIdList.size() > 0">
+            AND device_id in
+            <foreach item="item" collection="deviceIdList" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="attributeNameList != null and attributeNameList.size() > 0">
+            AND attribute_name in
+            <foreach item="item" collection="attributeNameList" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>) a
+        GROUP BY a.data_date,a.device_id,a.attribute_name;
+    </select>
+    <select id="QueryTotalHistoryAvrgData" resultType="com.usky.backend.domain.vo.DataHistoryAvergerVO">
+        SELECT a.data_date as dataDate,'all_in_room' as deviceId,a.attribute_name as attributeName ,avg(a.attribute_data) as avrg
+        FROM (SELECT product_code,attribute_name,attribute_data,LEFT(data_time,#{leftLen}) AS data_date FROM ${tableName} WHERE data_time  BETWEEN  #{startTime} AND  #{endTime} AND product_code = #{productCode}
+        AND device_id != 'aliweather0001'
+        <if test="attributeNameList != null and attributeNameList.size() > 0">
+            AND attribute_name in
+            <foreach item="item" collection="attributeNameList" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        and attribute_data != 0) a
+        GROUP BY a.data_date,a.attribute_name;
+    </select>
 
 </mapper>

+ 17 - 0
service-backend/service-backend-biz/src/main/resources/mapper/backend/DataXfHistoryMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.backend.mapper.DataXfHistoryMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.backend.domain.DataXfHistory">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="product_code" property="productCode" />
+        <result column="device_type" property="deviceType" />
+        <result column="attribute_name" property="attributeName" />
+        <result column="attribute_data" property="attributeData" />
+        <result column="data_time" property="dataTime" />
+        <result column="insert_time" property="insertTime" />
+    </resultMap>
+
+</mapper>