瀏覽代碼

Merge branch 'server-165' of uskycloud/usky-modules into master

gez 1 年之前
父節點
當前提交
1018ede838
共有 32 個文件被更改,包括 1558 次插入52 次删除
  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. 40 0
      service-backend/service-backend-biz/src/main/resources/mapper/backend/DataRealTimeMapper.xml
  15. 17 0
      service-backend/service-backend-biz/src/main/resources/mapper/backend/DataXfHistoryMapper.xml
  16. 21 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemFireHazardsCancellationController.java
  17. 58 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemFireHazardsNoticeController.java
  18. 106 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DemFireHazardsCancellation.java
  19. 407 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DemFireHazardsNotice.java
  20. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DemFireHazardsCancellationMapper.java
  21. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DemFireHazardsNoticeMapper.java
  22. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemFireHazardsCancellationService.java
  23. 28 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemFireHazardsNoticeService.java
  24. 20 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemFireHazardsCancellationServiceImpl.java
  25. 77 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemFireHazardsNoticeServiceImpl.java
  26. 25 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DemFireHazardsCancellationMapper.xml
  27. 82 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DemFireHazardsNoticeMapper.xml
  28. 4 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildFacilityMapper.java
  29. 42 20
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java
  30. 32 28
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildFacilityServiceImpl.java
  31. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildServiceImpl.java
  32. 5 2
      service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityMapper.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 {
+
+}

+ 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>

+ 21 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemFireHazardsCancellationController.java

@@ -0,0 +1,21 @@
+package com.usky.fire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 重大火灾隐患整改销案通知书 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+@Controller
+@RequestMapping("/demFireHazardsCancellation")
+public class DemFireHazardsCancellationController {
+
+}
+

+ 58 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DemFireHazardsNoticeController.java

@@ -0,0 +1,58 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DemFireHazardsNotice;
+import com.usky.fire.service.DemFireHazardsNoticeService;
+import com.usky.fire.service.ReportIndexResultService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 重大火灾隐患整改通知书 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+@RestController
+@RequestMapping("/demFireHazardsNotice")
+public class DemFireHazardsNoticeController {
+    @Autowired
+    private DemFireHazardsNoticeService demFireHazardsNoticeService;
+
+    /**
+     * 挂牌督改-信息查询
+     *
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("hazardsNoticeList")
+    public ApiResult<CommonPage<DemFireHazardsNotice>> hazardsNoticeList(@RequestParam(value = "pageNum", required = false,
+            defaultValue = "1") Integer pageNum,
+                                                                         @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(demFireHazardsNoticeService.hazardsNoticeList(pageNum, pageSize));
+    }
+
+    /**
+     * 挂牌督改-统计
+     *
+     * @return
+     */
+    @GetMapping("hazardsNoticeStatistic")
+    public ApiResult<List<Map<String, Object>>> hazardsNoticeStatistic() {
+        return ApiResult.success(demFireHazardsNoticeService.hazardsNoticeStatistic());
+    }
+}
+

+ 106 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DemFireHazardsCancellation.java

@@ -0,0 +1,106 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 重大火灾隐患整改销案通知书
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DemFireHazardsCancellation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    /**
+     * 文号1
+     */
+    private String bookNum1;
+
+    /**
+     * 文号2
+     */
+    private String bookNum2;
+
+    /**
+     * 文号3
+     */
+    private String bookNum3;
+
+    /**
+     * 文号4
+     */
+    private String bookNum4;
+
+    /**
+     * 文号
+     */
+    private String bookNum;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+
+    /**
+     * 检查时间
+     */
+    private LocalDateTime checkTime;
+
+    /**
+     * 通知书文号
+     */
+    private String noticeBookNum;
+
+    /**
+     * 整改情况
+     */
+    private String rectificationSituation;
+
+    /**
+     * 印章时间
+     */
+    private LocalDateTime stampTime;
+
+    /**
+     * 录入人ID
+     */
+    private String enterById;
+
+    /**
+     * 录入人编码
+     */
+    private String enterByCode;
+
+    /**
+     * 录入人姓名
+     */
+    private String enterBy;
+
+    /**
+     * 录入时间
+     */
+    private LocalDateTime enterTime;
+
+    /**
+     * user_design_id
+     */
+    @TableId(value = "user_design_id", type = IdType.AUTO)
+    private Integer userDesignId;
+
+
+}

+ 407 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DemFireHazardsNotice.java

@@ -0,0 +1,407 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 重大火灾隐患整改通知书
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DemFireHazardsNotice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 部署ID
+     */
+    private String deployId;
+
+    /**
+     * 录入运行ID
+     */
+    private String enterOperationId;
+
+    /**
+     * 录入登录ID
+     */
+    private String enterLoginId;
+
+    /**
+     * 录入人ID
+     */
+    private String enterById;
+
+    /**
+     * 录入人编码
+     */
+    private String enterByCode;
+
+    /**
+     * 录入人姓名
+     */
+    private String enterBy;
+
+    /**
+     * 录入时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime enterTime;
+
+    /**
+     * 修改运行ID
+     */
+    private String updateOperationId;
+
+    /**
+     * 修改登录ID
+     */
+    private String updateLoginId;
+
+    /**
+     * 修改人ID
+     */
+    private String updateById;
+
+    /**
+     * 修改人编码
+     */
+    private String updateByCode;
+
+    /**
+     * 修改人姓名
+     */
+    private String updateBy;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 项目编号
+     */
+    private String projectNum;
+
+    /**
+     * 主管单位名称
+     */
+    private String sponsorName;
+
+    /**
+     * 状态
+     */
+    private String state;
+
+    /**
+     * 最后同步时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime lastSyncTime;
+
+    /**
+     * 主管单位文书抬头
+     */
+    private String sponsorBookTitle;
+
+    /**
+     * 任务ID
+     */
+    private String taskId;
+
+    /**
+     * 文书索引ID
+     */
+    private String bookIndexId;
+
+    /**
+     * 任务文书设置ID
+     */
+    private String taskBookId;
+
+    /**
+     * 文号
+     */
+    private String bookNum;
+
+    /**
+     * 制定级别
+     */
+    private String customLevel;
+
+    /**
+     * 制定单位
+     */
+    private String customCompany;
+
+    /**
+     * 是否删除
+     */
+    private String deleteFlag;
+
+    /**
+     * 版本号
+     */
+    private String versionNum;
+
+    /**
+     * 录入IP
+     */
+    private String enterIp;
+
+    /**
+     * 修改IP
+     */
+    private String updateIp;
+
+    /**
+     * 制定单位名称
+     */
+    private String customCompanyName;
+
+    /**
+     * 制定级别名称
+     */
+    private String customLevelName;
+
+    /**
+     * 状态名称
+     */
+    private String stateName;
+
+    /**
+     * 主键/ID
+     */
+    private String id;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+
+    /**
+     * 单位ID
+     */
+    private String companyId;
+
+    /**
+     * 主管单位级别
+     */
+    private String sponsorLevel;
+
+    /**
+     * 所属总队
+     */
+    private String affiliatedCorps;
+
+    /**
+     * 所属支队
+     */
+    private String affiliatedBranch;
+
+    /**
+     * 所属大队
+     */
+    private String affiliatedBrigade;
+
+    /**
+     * OUTER_ID
+     */
+    private String outerId;
+
+    /**
+     * 所属大队名称
+     */
+    private String affiliatedBrigadeName;
+
+    /**
+     * 所属总队名称
+     */
+    private String affiliatedCorpsName;
+
+    /**
+     * 所属支队名称
+     */
+    private String affiliatedBranchName;
+
+    /**
+     * 主管单位级别名称
+     */
+    private String sponsorLevelName;
+
+    /**
+     * 排序号
+     */
+    private String sequence;
+
+    /**
+     * 签收时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime signTime;
+
+    /**
+     * 检查时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime checkTime;
+
+    /**
+     * 印章时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime stampTime;
+
+    /**
+     * SPAREFILED5
+     */
+    private String spareFiled5;
+
+    /**
+     * SPAREFILED4
+     */
+    private String spareFiled4;
+
+    /**
+     * SPAREFILED3
+     */
+    private String spareFiled3;
+
+    /**
+     * SPAREFILED2
+     */
+    private String spareFiled2;
+
+    /**
+     * SPAREFILED1
+     */
+    private String spareFiled1;
+
+    /**
+     * 主管单位ID(执法单位)
+     */
+    private String sponsorId;
+
+    /**
+     * 文号1
+     */
+    private String bookNum1;
+
+    /**
+     * 文号2
+     */
+    private String bookNum2;
+
+    /**
+     * 文号3
+     */
+    private String bookNum3;
+
+    /**
+     * 文号4
+     */
+    private String bookNum4;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 被检查单位负责人(签名)
+     */
+    private String companyHead;
+
+    /**
+     * 单位级别
+     */
+    private String companyLevel;
+
+    /**
+     * 责令改正时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime orderCorrectTime;
+
+    /**
+     * 被检查单位签收
+     */
+    private String companySign;
+
+    /**
+     * 回填ID
+     */
+    private String backfillId;
+
+    /**
+     * GAJ
+     */
+    private String gaj;
+
+    /**
+     * XCOTHER
+     */
+    private String xcother;
+
+    /**
+     * TXRQ
+     */
+    private String txrq;
+
+    /**
+     * STATE
+     */
+    private String state2;
+
+    /**
+     * SIGN
+     */
+    private String sign;
+
+    /**
+     * JGJC
+     */
+    private String jgjc;
+
+    /**
+     * SPBID
+     */
+    private String spbid;
+
+    /**
+     * unionKey
+     */
+    private String unionKey;
+
+    /**
+     * user_design_id
+     */
+    @TableId(value = "user_design_id", type = IdType.AUTO)
+    private Integer userDesignId;
+
+    /**
+     * 销案状态
+     */
+    @TableField(exist = false)
+    private Integer noticeState;
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DemFireHazardsCancellationMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DemFireHazardsCancellation;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 重大火灾隐患整改销案通知书 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+public interface DemFireHazardsCancellationMapper extends CrudMapper<DemFireHazardsCancellation> {
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DemFireHazardsNoticeMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DemFireHazardsNotice;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 重大火灾隐患整改通知书 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+public interface DemFireHazardsNoticeMapper extends CrudMapper<DemFireHazardsNotice> {
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemFireHazardsCancellationService.java

@@ -0,0 +1,16 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.DemFireHazardsCancellation;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 重大火灾隐患整改销案通知书 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+public interface DemFireHazardsCancellationService extends CrudService<DemFireHazardsCancellation> {
+
+}

+ 28 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DemFireHazardsNoticeService.java

@@ -0,0 +1,28 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DemFireHazardsNotice;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 重大火灾隐患整改通知书 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+public interface DemFireHazardsNoticeService extends CrudService<DemFireHazardsNotice> {
+    /**
+     * 挂牌督改-信息查询
+     *
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     */
+    CommonPage<DemFireHazardsNotice> hazardsNoticeList(Integer pageNum, Integer pageSize);
+
+    List<Map<String, Object>> hazardsNoticeStatistic();
+}

+ 20 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemFireHazardsCancellationServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.fire.service.impl;
+
+import com.usky.fire.domain.DemFireHazardsCancellation;
+import com.usky.fire.mapper.DemFireHazardsCancellationMapper;
+import com.usky.fire.service.DemFireHazardsCancellationService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 重大火灾隐患整改销案通知书 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+@Service
+public class DemFireHazardsCancellationServiceImpl extends AbstractCrudService<DemFireHazardsCancellationMapper, DemFireHazardsCancellation> implements DemFireHazardsCancellationService {
+
+}

+ 77 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DemFireHazardsNoticeServiceImpl.java

@@ -0,0 +1,77 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.BaseCompany;
+import com.usky.fire.domain.DemFireHazardsCancellation;
+import com.usky.fire.domain.DemFireHazardsNotice;
+import com.usky.fire.mapper.DemFireHazardsNoticeMapper;
+import com.usky.fire.service.BaseCompanyAttach1Service;
+import com.usky.fire.service.DemFireHazardsCancellationService;
+import com.usky.fire.service.DemFireHazardsNoticeService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 重大火灾隐患整改通知书 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-08-25
+ */
+@Service
+public class DemFireHazardsNoticeServiceImpl extends AbstractCrudService<DemFireHazardsNoticeMapper, DemFireHazardsNotice> implements DemFireHazardsNoticeService {
+    @Autowired
+    private DemFireHazardsCancellationService demFireHazardsCancellationService;
+
+    @Override
+    public CommonPage<DemFireHazardsNotice> hazardsNoticeList(Integer pageNum, Integer pageSize) {
+        IPage<DemFireHazardsNotice> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<DemFireHazardsNotice> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(DemFireHazardsNotice::getUserDesignId,DemFireHazardsNotice::getCompanyName,
+                DemFireHazardsNotice::getCheckTime,DemFireHazardsNotice::getOrderCorrectTime,
+                DemFireHazardsNotice::getContent,DemFireHazardsNotice::getBookNum);
+        page = this.page(page, queryWrapper);
+        if (page.getTotal() > 0) {
+            LambdaQueryWrapper<DemFireHazardsCancellation> queryWrapper1 = Wrappers.lambdaQuery();
+            queryWrapper1.select(DemFireHazardsCancellation::getNoticeBookNum);
+            List<DemFireHazardsCancellation> cancellationList = demFireHazardsCancellationService.list(queryWrapper1);
+            if (CollectionUtils.isNotEmpty(cancellationList)){
+                for (int j = 0; j < page.getRecords().size(); j++) {
+                    page.getRecords().get(j).setNoticeState(0);
+                    for (int k = 0; k < cancellationList.size(); k++) {
+                        if (page.getRecords().get(j).getBookNum().equals(cancellationList.get(k).getNoticeBookNum())){
+                            page.getRecords().get(j).setNoticeState(1);
+                        }
+                    }
+                }
+            }
+        }
+        return new CommonPage<>(page.getRecords(), page.getTotal(), pageSize, pageNum);
+    }
+
+    @Override
+    public List<Map<String, Object>> hazardsNoticeStatistic() {
+        List<Map<String, Object>> list = new ArrayList<>();
+        LambdaQueryWrapper<DemFireHazardsNotice> queryWrapper = Wrappers.lambdaQuery();
+        int noticeNum = this.count(queryWrapper);
+        LambdaQueryWrapper<DemFireHazardsCancellation> queryWrapper1 = Wrappers.lambdaQuery();
+        int cancellationNum = demFireHazardsCancellationService.count(queryWrapper1);
+        Map<String, Object> map = new HashMap<>();
+        map.put("noticeNum", noticeNum);
+        map.put("cancellationNum", cancellationNum);
+        list.add(map);
+        return list;
+    }
+}

+ 25 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DemFireHazardsCancellationMapper.xml

@@ -0,0 +1,25 @@
+<?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.fire.mapper.DemFireHazardsCancellationMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DemFireHazardsCancellation">
+        <id column="user_design_id" property="userDesignId" />
+        <result column="id" property="id" />
+        <result column="book_num1" property="bookNum1" />
+        <result column="book_num2" property="bookNum2" />
+        <result column="book_num3" property="bookNum3" />
+        <result column="book_num4" property="bookNum4" />
+        <result column="book_num" property="bookNum" />
+        <result column="company_name" property="companyName" />
+        <result column="check_time" property="checkTime" />
+        <result column="notice_book_num" property="noticeBookNum" />
+        <result column="rectification_situation" property="rectificationSituation" />
+        <result column="stamp_time" property="stampTime" />
+        <result column="enter_by_id" property="enterById" />
+        <result column="enter_by_code" property="enterByCode" />
+        <result column="enter_by" property="enterBy" />
+        <result column="enter_time" property="enterTime" />
+    </resultMap>
+
+</mapper>

+ 82 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DemFireHazardsNoticeMapper.xml

@@ -0,0 +1,82 @@
+<?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.fire.mapper.DemFireHazardsNoticeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DemFireHazardsNotice">
+        <id column="user_design_id" property="userDesignId" />
+        <result column="remark" property="remark" />
+        <result column="deploy_id" property="deployId" />
+        <result column="enter_operation_id" property="enterOperationId" />
+        <result column="enter_login_id" property="enterLoginId" />
+        <result column="enter_by_id" property="enterById" />
+        <result column="enter_by_code" property="enterByCode" />
+        <result column="enter_by" property="enterBy" />
+        <result column="enter_time" property="enterTime" />
+        <result column="update_operation_id" property="updateOperationId" />
+        <result column="update_login_id" property="updateLoginId" />
+        <result column="update_by_id" property="updateById" />
+        <result column="update_by_code" property="updateByCode" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="project_num" property="projectNum" />
+        <result column="sponsor_name" property="sponsorName" />
+        <result column="state" property="state" />
+        <result column="last_sync_time" property="lastSyncTime" />
+        <result column="sponsor_book_title" property="sponsorBookTitle" />
+        <result column="task_id" property="taskId" />
+        <result column="book_index_id" property="bookIndexId" />
+        <result column="task_book_id" property="taskBookId" />
+        <result column="book_num" property="bookNum" />
+        <result column="custom_level" property="customLevel" />
+        <result column="custom_company" property="customCompany" />
+        <result column="delete_flag" property="deleteFlag" />
+        <result column="version_num" property="versionNum" />
+        <result column="enter_ip" property="enterIp" />
+        <result column="update_ip" property="updateIp" />
+        <result column="custom_company_name" property="customCompanyName" />
+        <result column="custom_level_name" property="customLevelName" />
+        <result column="state_name" property="stateName" />
+        <result column="id" property="id" />
+        <result column="company_name" property="companyName" />
+        <result column="company_id" property="companyId" />
+        <result column="sponsor_level" property="sponsorLevel" />
+        <result column="affiliated_corps" property="affiliatedCorps" />
+        <result column="affiliated_branch" property="affiliatedBranch" />
+        <result column="affiliated_brigade" property="affiliatedBrigade" />
+        <result column="outer_id" property="outerId" />
+        <result column="affiliated_brigade_name" property="affiliatedBrigadeName" />
+        <result column="affiliated_corps_name" property="affiliatedCorpsName" />
+        <result column="affiliated_branch_name" property="affiliatedBranchName" />
+        <result column="sponsor_level_name" property="sponsorLevelName" />
+        <result column="sequence" property="sequence" />
+        <result column="sign_time" property="signTime" />
+        <result column="check_time" property="checkTime" />
+        <result column="stamp_time" property="stampTime" />
+        <result column="spare_filed5" property="spareFiled5" />
+        <result column="spare_filed4" property="spareFiled4" />
+        <result column="spare_filed3" property="spareFiled3" />
+        <result column="spare_filed2" property="spareFiled2" />
+        <result column="spare_filed1" property="spareFiled1" />
+        <result column="sponsor_id" property="sponsorId" />
+        <result column="book_num1" property="bookNum1" />
+        <result column="book_num2" property="bookNum2" />
+        <result column="book_num3" property="bookNum3" />
+        <result column="book_num4" property="bookNum4" />
+        <result column="content" property="content" />
+        <result column="company_head" property="companyHead" />
+        <result column="company_level" property="companyLevel" />
+        <result column="order_correct_time" property="orderCorrectTime" />
+        <result column="company_sign" property="companySign" />
+        <result column="backfill_id" property="backfillId" />
+        <result column="gaj" property="gaj" />
+        <result column="xcother" property="xcother" />
+        <result column="txrq" property="txrq" />
+        <result column="state2" property="state2" />
+        <result column="sign" property="sign" />
+        <result column="jgjc" property="jgjc" />
+        <result column="spbid" property="spbid" />
+        <result column="union_key" property="unionKey" />
+    </resultMap>
+
+</mapper>

+ 4 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/BaseBuildFacilityMapper.java

@@ -4,6 +4,9 @@ import com.usky.iot.domain.BaseBuild;
 import com.usky.iot.domain.BaseBuildFacility;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.BaseBuildFacilityType;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,6 +17,6 @@ import com.usky.iot.domain.BaseBuildFacilityType;
  * @since 2023-07-26
  */
 public interface BaseBuildFacilityMapper extends CrudMapper<BaseBuildFacility> {
-    BaseBuildFacilityType baseBuildFacilityTypeList(String facilityType);
+    List<BaseBuildFacilityType> baseBuildFacilityTypeList(@Param("facilityTypes") List<String> facilityTypes);
     BaseBuild getBuildName(Integer buildId);
 }

+ 42 - 20
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -67,13 +67,21 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                 .eq(DmpProductInfo::getTenantId,SecurityUtils.getTenantId());
         List<DmpProductInfo> list1 = dmpProductInfoService.list(queryWrapper);
         if(CollectionUtils.isNotEmpty(list1)){
-            QueryWrapper<DmpDeviceInfo> queryWrapper1 = Wrappers.query();
-            queryWrapper1.select("product_code as productCode","count(*) as count")
-                    .in("service_status",1,2)
-                    .eq("delete_flag",0)
+//            QueryWrapper<DmpDeviceInfo> queryWrapper1 = Wrappers.query();
+//            queryWrapper1.select("product_code as productCode","count(*) as count")
+//                    .in("service_status",1,2)
+//                    .eq("delete_flag",0)
+//                    .eq("tenant_id",SecurityUtils.getTenantId())
+//                    .groupBy("product_code");
+//            List<Map<String,Object>> mapList= dmpDeviceInfoService.listMaps(queryWrapper1);
+
+            List<String> productCodeList = list1.stream().map(s -> s.getProductCode()).collect(Collectors.toList());
+            QueryWrapper<BaseAlarm> queryWrapper2 = Wrappers.query();
+            queryWrapper2.select("product_code as productCode","handle_status as handleStatus","count(*) as count")
+                    .in("product_code",productCodeList)
                     .eq("tenant_id",SecurityUtils.getTenantId())
-                    .groupBy("product_code");
-            List<Map<String,Object>> mapList= dmpDeviceInfoService.listMaps(queryWrapper1);
+                    .groupBy("product_code","handle_status");
+            List<Map<String,Object>> handleStatusList = this.listMaps(queryWrapper2);
 
             for(int i=0;i<list1.size();i++){
                 BaseAlarmResponeVO responeVO = new BaseAlarmResponeVO();
@@ -83,10 +91,24 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
 
                 //未处理
                 int untreated = 0;
-                untreated = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,0).eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+                if(CollectionUtils.isNotEmpty(handleStatusList)){
+                    for(int j=0;j<handleStatusList.size();j++){
+                        if(list1.get(i).getProductCode().equals(handleStatusList.get(j).get("productCode")) && (0 == Integer.parseInt(handleStatusList.get(j).get("handleStatus").toString()))){
+                            untreated = Integer.parseInt(String.valueOf(handleStatusList.get(j).get("count")));
+                            break;
+                        }
+                    }
+                }
                 //已处理
                 int processed = 0;
-                processed = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,1).eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+                if(CollectionUtils.isNotEmpty(handleStatusList)){
+                    for(int j=0;j<handleStatusList.size();j++){
+                        if(list1.get(i).getProductCode().equals(handleStatusList.get(j).get("productCode")) && (1 == Integer.parseInt(handleStatusList.get(j).get("handleStatus").toString()))){
+                            processed = Integer.parseInt(String.valueOf(handleStatusList.get(j).get("count")));
+                            break;
+                        }
+                    }
+                }
                 //总数
                 int count = untreated+processed;
                 //处置率
@@ -100,24 +122,24 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
                 responeVO.setProcessed(processed);
                 responeVO.setProcessRate(processRate);
 
-                //设备总数
-                responeVO.setDeviceCount(0);
-                if(CollectionUtils.isNotEmpty(mapList)){
-                    for(int j=0;j<mapList.size();j++){
-                        if(list1.get(i).getProductCode().equals(mapList.get(j).get("productCode"))){
-                            responeVO.setDeviceCount(Integer.parseInt(String.valueOf(mapList.get(j).get("count"))));
-                            break;
-                        }
-                    }
-                }
+//                //设备总数
+//                responeVO.setDeviceCount(0);
+//                if(CollectionUtils.isNotEmpty(mapList)){
+//                    for(int j=0;j<mapList.size();j++){
+//                        if(list1.get(i).getProductCode().equals(mapList.get(j).get("productCode"))){
+//                            responeVO.setDeviceCount(Integer.parseInt(String.valueOf(mapList.get(j).get("count"))));
+//                            break;
+//                        }
+//                    }
+//                }
 
                 //离线告警统计
                 //离线告警未处理
                 int offLineUntreated = 0;
-                offLineUntreated = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,0).eq(BaseAlarm::getAlarmType,"lx-20230700000000000").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+//                offLineUntreated = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,0).eq(BaseAlarm::getAlarmType,"001").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
                 //离线告警已处理
                 int offLineProcessed = 0;
-                offLineProcessed = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,1).eq(BaseAlarm::getAlarmType,"lx-20230700000000000").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
+//                offLineProcessed = this.count(Wrappers.<BaseAlarm>query().lambda().eq(BaseAlarm::getHandleStatus,1).eq(BaseAlarm::getAlarmType,"001").eq(BaseAlarm::getProductCode,list1.get(i).getProductCode()).eq(BaseAlarm::getTenantId,SecurityUtils.getTenantId()));
                 //离线告警总数
                 int offLineCount = offLineUntreated+offLineProcessed;
                 //离线告警处置率

+ 32 - 28
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildFacilityServiceImpl.java

@@ -93,40 +93,44 @@ public class BaseBuildFacilityServiceImpl extends AbstractCrudService<BaseBuildF
     @Override
     public CommonPage<BaseBuildFacility> page(BaseBuildFacilityRequestVO requestVO){
         List<BaseBuildFacility> list = new ArrayList<>();
-        LambdaQueryWrapper<BaseBuildFacility> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(requestVO.getId() != null,BaseBuildFacility::getId,requestVO.getId())
-                .like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseBuildFacility::getFacilityNum,requestVO.getFacilityNum())
-                .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseBuildFacility::getFacilityName,requestVO.getFacilityName())
-                .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseBuildFacility::getFacilityType,requestVO.getFacilityType())
-                .eq(BaseBuildFacility::getDeleteFlag,0)
-                .eq(BaseBuildFacility::getTenantId,SecurityUtils.getTenantId())
-                .orderByDesc(BaseBuildFacility::getId);
-        List<BaseBuildFacility> list1 = this.list(queryWrapper);
-        if(CollectionUtils.isNotEmpty(list1)){
-            for(int i=0;i<list1.size();i++){
-                LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper1 = Wrappers.lambdaQuery();
-                queryWrapper1.eq(BaseBuildFacilityRelate::getFacilityId,list1.get(i).getId());
-                BaseBuildFacilityRelate one = baseBuildFacilityRelateService.getOne(queryWrapper1);
-                if(one != null){
-                    BaseBuild one1 = baseMapper.getBuildName(one.getBuildId());
-                    if(one1 != null){
-                        list1.get(i).setBuildId(one1.getId());
-                        list1.get(i).setBuildName(one1.getBuildName());
+        BaseBuild one1 = baseMapper.getBuildName(requestVO.getBuildId());
+
+        LambdaQueryWrapper<BaseBuildFacilityRelate> queryWrapper1 = Wrappers.lambdaQuery();
+        queryWrapper1.eq(BaseBuildFacilityRelate::getBuildId,requestVO.getBuildId());
+        List<BaseBuildFacilityRelate> facilityList = baseBuildFacilityRelateService.list(queryWrapper1);
+
+        List<BaseBuildFacility> list1 = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(facilityList)){
+            List<Integer> facilityIdList = facilityList.stream().map(m ->m.getFacilityId()).collect(Collectors.toList());
+            LambdaQueryWrapper<BaseBuildFacility> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(requestVO.getId() != null,BaseBuildFacility::getId,requestVO.getId())
+                    .in(BaseBuildFacility::getId,facilityIdList)
+                    .like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseBuildFacility::getFacilityNum,requestVO.getFacilityNum())
+                    .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseBuildFacility::getFacilityName,requestVO.getFacilityName())
+                    .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseBuildFacility::getFacilityType,requestVO.getFacilityType())
+                    .eq(BaseBuildFacility::getDeleteFlag,0)
+                    .eq(BaseBuildFacility::getTenantId,SecurityUtils.getTenantId())
+                    .orderByDesc(BaseBuildFacility::getId);
+            list1 = this.list(queryWrapper);
+            if(CollectionUtils.isNotEmpty(list1)){
+                List<String> facilityTypeList = list1.stream().map(m ->m.getFacilityType()).collect(Collectors.toList());
+                List<BaseBuildFacilityType> typeList = baseMapper.baseBuildFacilityTypeList(facilityTypeList);
+                for(int i=0;i<list1.size();i++){
+
+                    if(CollectionUtils.isNotEmpty(typeList)){
+                        for(int j=0;j<typeList.size();j++){
+                            if(list1.get(i).getFacilityType().equals(typeList.get(j).getTypeCode())){
+                                list1.get(i).setTypeName(typeList.get(j).getTypeName());
+                            }
+                        }
                     }
-
+                    list1.get(i).setBuildId(one1.getId());
+                    list1.get(i).setBuildName(one1.getBuildName());
                 }
-                BaseBuildFacilityType typeOne = baseMapper.baseBuildFacilityTypeList(list1.get(i).getFacilityType());
-                list1.get(i).setTypeName(typeOne.getTypeName());
             }
-        }
 
 
-        if(StringUtils.isNotBlank(requestVO.getBuildName())){
-            list1 = list1.stream().filter(m-> m.getBuildName().contains(requestVO.getBuildName())).collect(Collectors.toList());
-        }
 
-        if(requestVO.getBuildId() != null){
-            list1 = list1.stream().filter(m-> m.getBuildId().equals(requestVO.getBuildId())).collect(Collectors.toList());
         }
 
         if(list1.size() > 0){

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseBuildServiceImpl.java

@@ -130,7 +130,7 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
         LambdaQueryWrapper<BaseGgpFacility> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.like(StringUtils.isNotBlank(requestVO.getFacilityNum()),BaseGgpFacility::getFacilityNum,requestVO.getFacilityNum())
                 .eq(StringUtils.isNotBlank(requestVO.getFacilityType()),BaseGgpFacility::getFacilityType,requestVO.getFacilityType())
-                .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseGgpFacility::getFacilityType,
+                .like(StringUtils.isNotBlank(requestVO.getFacilityName()),BaseGgpFacility::getFacilityName,
                         requestVO.getFacilityName())
                 .eq(BaseGgpFacility::getTenantId,SecurityUtils.getTenantId());
         page = baseGgpFacilityService.page(page,queryWrapper);

+ 5 - 2
service-iot/service-iot-biz/src/main/resources/mapper/iot/BaseBuildFacilityMapper.xml

@@ -32,8 +32,11 @@
             bbft.*
         from base_build_facility_type bbft
         <where>
-            <if test="1 == 1">
-                bbft.type_code = #{facilityType}
+            <if test="facilityTypes != null and facilityTypes.size() > 0">
+                AND bbft.type_code in
+                <foreach item="item" collection="facilityTypes" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
         </where>
     </select>