Browse Source

Merge branch 'server-165' into usky-zyj

james 1 year ago
parent
commit
a381a2da7d
61 changed files with 4211 additions and 60 deletions
  1. 92 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportConfigController.java
  2. 44 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexConfigController.java
  3. 65 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexResultController.java
  4. 65 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportResultController.java
  5. 66 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportConfig.java
  6. 91 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportIndexConfig.java
  7. 87 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportIndexResult.java
  8. 82 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportResult.java
  9. 22 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportConfigMapper.java
  10. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportIndexConfigMapper.java
  11. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportIndexResultMapper.java
  12. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportResultMapper.java
  13. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/AlarmHydrantWaterService.java
  14. 1 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/AlarmSmokeControlService.java
  15. 7 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/BaseCompanyPersonService.java
  16. 53 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportConfigService.java
  17. 31 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexConfigService.java
  18. 39 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexResultService.java
  19. 37 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportResultService.java
  20. 3 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmFireServiceImpl.java
  21. 3 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmHydrantWaterServiceImpl.java
  22. 2 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmSmokeControlServiceImpl.java
  23. 1 6
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseBuildServiceImpl.java
  24. 8 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseCompanyPersonServiceImpl.java
  25. 7 4
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseDeviceStatusServiceImpl.java
  26. 26 17
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BscEnterpriseAutonomyServiceImpl.java
  27. 364 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java
  28. 40 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexConfigServiceImpl.java
  29. 1706 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java
  30. 74 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportResultServiceImpl.java
  31. 0 4
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/BaseGgpFacilityVO.java
  32. 26 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/DemReportDataVo.java
  33. 67 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult1Vo.java
  34. 68 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult2Vo.java
  35. 63 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult3Vo.java
  36. 53 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResultVo.java
  37. 37 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportConfigVO.java
  38. 62 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex1Vo.java
  39. 63 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex2Vo.java
  40. 58 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex3Vo.java
  41. 43 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndexVo.java
  42. 20 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportResultVO.java
  43. 2 2
      service-fire/service-fire-biz/src/main/resources/bootstrap.yml
  44. 45 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportConfigMapper.xml
  45. 22 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportIndexConfigMapper.xml
  46. 21 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportIndexResultMapper.xml
  47. 20 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportResultMapper.xml
  48. 19 1
      service-iot/service-iot-biz/pom.xml
  49. 11 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAlarmController.java
  50. 15 2
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseGgpFacilityController.java
  51. 3 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAlarmService.java
  52. 8 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseGgpFacilityService.java
  53. 50 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/mqtt/MqttBaseConfig.java
  54. 84 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/mqtt/MqttOutConfig.java
  55. 86 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/enums/TopListener.java
  56. 9 13
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java
  57. 108 2
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseGgpFacilityServiceImpl.java
  58. 25 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/mqtt/MqttStrategy.java
  59. 21 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/MqttBaseVO.java
  60. 35 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/MqttDataVO.java
  61. 2 2
      service-iot/service-iot-biz/src/main/resources/bootstrap.yml

+ 92 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportConfigController.java

@@ -0,0 +1,92 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.fire.service.ReportConfigService;
+import com.usky.fire.service.vo.ReportConfigVO;
+import com.usky.fire.service.vo.ReportIndexVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+import java.util.List;
+
+/**
+ * <p>
+ * 报告配置表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@RestController
+@RequestMapping("/reportConfig")
+public class ReportConfigController {
+
+    @Autowired
+    private ReportConfigService reportConfigService;
+
+    /**
+     * 报告模型查看查询
+     *
+     * @return
+     */
+    @PostMapping("/configInfo")
+    public ApiResult<List<ReportConfigVO>> configInfo() {
+        return ApiResult.success(reportConfigService.configInfo());
+    }
+
+    /**
+     * 报告指数-查询
+     *
+     * @param id   主键ID
+     * @return
+     */
+    @GetMapping("/reportIndexSelect")
+    public ApiResult<List<ReportIndexVo>> reportIndexSelect(@RequestParam(value = "id") Integer id) {
+        return ApiResult.success(reportConfigService.reportIndexSelect(id));
+    }
+
+    /**
+     * 报告模型-删除
+     *
+     * @param id 主键ID
+     * @return
+     */
+    @Log(title = "报告模型-删除", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delReportConfig")
+    public ApiResult<Void> delReportConfig(@RequestParam(value = "id") Integer id) {
+        reportConfigService.delReportConfig(id);
+        return ApiResult.success();
+    }
+
+    /**
+     * 报告模型-新增
+     *
+     * @param reportIndexVo
+     * @return
+     */
+    @Log(title = "报告模型-新增", businessType = BusinessType.INSERT)
+    @PostMapping("/addReportConfig")
+    public ApiResult<Void> addReportConfig(@RequestBody ReportIndexVo reportIndexVo) {
+        reportConfigService.addReportConfig(reportIndexVo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 报告模型-修改
+     *
+     * @param reportIndexVo
+     * @return
+     */
+    @Log(title = "报告模型-修改", businessType = BusinessType.UPDATE)
+    @PutMapping("/updateReportConfig")
+    public ApiResult<Void> updateReportConfig(@RequestBody ReportIndexVo reportIndexVo) {
+        reportConfigService.updateReportConfig(reportIndexVo);
+        return ApiResult.success();
+    }
+
+}
+

+ 44 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexConfigController.java

@@ -0,0 +1,44 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.fire.service.ReportConfigService;
+import com.usky.fire.service.ReportIndexConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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;
+
+/**
+ * <p>
+ * 指数配置表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@RestController
+@RequestMapping("/reportIndexConfig")
+public class ReportIndexConfigController {
+    @Autowired
+    private ReportIndexConfigService reportIndexConfigService;
+
+    /**
+     * 报告模型指数-删除
+     *
+     * @param id 主键ID
+     * @return
+     */
+    @Log(title = "报告模型指数-删除", businessType = BusinessType.DELETE)
+    @DeleteMapping("/delReportIndexConfig")
+    public ApiResult<Void> delReportIndexConfig(@RequestParam(value = "id") Integer id) {
+        reportIndexConfigService.delReportIndexConfig(id);
+        return ApiResult.success();
+    }
+}
+

+ 65 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexResultController.java

@@ -0,0 +1,65 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.fire.domain.BaseGgpFacility;
+import com.usky.fire.service.ReportIndexResultService;
+import com.usky.fire.service.vo.CompanyDataVo;
+import com.usky.fire.service.vo.IndexResultVo;
+import com.usky.fire.service.vo.ReportResultVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 指数结果表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@RestController
+@RequestMapping("/reportIndexResult")
+public class ReportIndexResultController {
+    @Autowired
+    private ReportIndexResultService reportIndexResultService;
+    /**
+     * 报告指数结果
+     *
+     * @return
+     */
+    @GetMapping("/countResult")
+    public ApiResult<Void> countResult() {
+        reportIndexResultService.reportIndexResult();
+        return ApiResult.success();
+    }
+
+    /**
+     * 报告指数结果-查询
+     *
+     * @param id   对象ID
+     * @param createDate   生成日期
+     * @return
+     */
+    @GetMapping("/indexResultSelect")
+    public ApiResult<List<IndexResultVo>> indexResultSelect(@RequestParam(value = "id", required = false) Integer id,
+                                                            @RequestParam(value = "createDate", required = false) String createDate) {
+        return ApiResult.success(reportIndexResultService.indexResultSelect(id,createDate));
+    }
+
+    /**
+     * 报告对比
+     *
+     * @param reportResultVO
+     * @return
+     */
+    @PostMapping("/reportContrast")
+    public ApiResult<List<Object>> reportContrast(@RequestBody ReportResultVO reportResultVO) {
+        return ApiResult.success(reportIndexResultService.reportContrast(reportResultVO));
+    }
+}
+

+ 65 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportResultController.java

@@ -0,0 +1,65 @@
+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.BaseGgpFacility;
+import com.usky.fire.domain.DemReportInfo;
+import com.usky.fire.domain.ReportResult;
+import com.usky.fire.service.DemReportInfoService;
+import com.usky.fire.service.ReportResultService;
+import com.usky.fire.service.vo.BaseGgpFacilityVO;
+import com.usky.fire.service.vo.ReportResultVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 报告结果表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-28
+ */
+@RestController
+@RequestMapping("/reportResult")
+public class ReportResultController {
+    @Autowired
+    private ReportResultService reportResultService;
+
+    /**
+     * 消防报告-历史报告列表查询
+     *
+     * @param companyId  单位ID
+     * @param sourceType  来源类型
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("reportResultList")
+    public ApiResult<CommonPage<ReportResult>> reportResultList(@RequestParam(value = "companyId", required = false) Integer companyId,
+                                                              @RequestParam(value = "sourceType", required = false) String sourceType,
+                                                              @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                              @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(reportResultService.reportResultList(companyId,sourceType,pageNum, pageSize));
+    }
+    /**
+     * 报告结果-查询
+     *
+     * @param reportObject  报告对象
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("newReportResultList")
+    public ApiResult<CommonPage<Object>> newReportResultList(@RequestParam(value = "reportObject", required = false) String reportObject,
+                                                     @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                     @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(reportResultService.newReportResultList(reportObject,pageNum, pageSize));
+    }
+}
+

+ 66 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportConfig.java

@@ -0,0 +1,66 @@
+package com.usky.fire.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 han
+ * @since 2023-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ReportConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 报告模版名称
+     */
+    private String reportName;
+
+    /**
+     * 删除标识
+     */
+    private Integer deleteFlag;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 91 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportIndexConfig.java

@@ -0,0 +1,91 @@
+package com.usky.fire.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 han
+ * @since 2023-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ReportIndexConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 报告模版ID
+     */
+    private Integer reportId;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数编号
+     */
+    private String indexCode;
+
+    /**
+     * 指数等级
+     */
+    private Integer indexGrade;
+
+    /**
+     * 上级指数ID;一级该值为0
+     */
+    private Integer seniorIndex;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 指数评分说明
+     */
+    private String indexDesc;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 87 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportIndexResult.java

@@ -0,0 +1,87 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 指数结果表
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ReportIndexResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数编号
+     */
+    private String indexCode;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 对象ID
+     */
+    private Integer objectId;
+
+    /**
+     * 得分
+     */
+    private Double indexScore;
+
+    /**
+     * 指数值
+     */
+    private String indexData;
+
+    /**
+     * 生成日期
+     */
+    private LocalDate createDate;
+
+    /**
+     * 评分类型
+     */
+    private Integer scoreType;
+
+    /**
+     * 评分说明
+     */
+    private String scoreDesc;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 82 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportResult.java

@@ -0,0 +1,82 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 报告结果表
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ReportResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 对象ID
+     */
+    private Integer objectId;
+
+    /**
+     * 生成日期
+     */
+    private LocalDate createDate;
+
+    /**
+     * 综合得分
+     */
+    private Double overallScore;
+
+    /**
+     * 报告地址
+     */
+    private String reportUrl;
+
+    /**
+     * 报告对象
+     */
+    private String reportObject;
+
+    /**
+     * 对象类型
+     */
+    private Integer objectType;
+
+    /**
+     * 报告配置ID
+     */
+    private Integer configId;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 22 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportConfigMapper.java

@@ -0,0 +1,22 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.ReportConfig;
+import com.usky.common.mybatis.core.CrudMapper;
+import com.usky.fire.service.vo.ReportConfigVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 报告配置表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportConfigMapper extends CrudMapper<ReportConfig> {
+    List<ReportConfigVO> configNumList1(@Param("tenantId") Integer tenantId);
+    List<ReportConfigVO> configNumList(@Param("tenantId") Integer tenantId,
+                                       @Param("indexGrade") Integer indexGrade);
+}

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

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.ReportIndexConfig;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 指数配置表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportIndexConfigMapper extends CrudMapper<ReportIndexConfig> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.ReportIndexResult;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 指数结果表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportIndexResultMapper extends CrudMapper<ReportIndexResult> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.ReportResult;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 报告结果表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-28
+ */
+public interface ReportResultMapper extends CrudMapper<ReportResult> {
+
+}

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/AlarmHydrantWaterService.java

@@ -68,7 +68,7 @@ public interface AlarmHydrantWaterService extends CrudService<AlarmHydrantWater>
      * @param companyId 单位ID
      * @return
      */
-    Integer hydrantWaterCount(String companyId, String startTime, String endTime);
+    Integer hydrantWaterCount(String companyId, Integer handlingStatus, String startTime, String endTime);
 
     /**
      * 消防给水及消火栓列表查询

+ 1 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/AlarmSmokeControlService.java

@@ -68,7 +68,7 @@ public interface AlarmSmokeControlService extends CrudService<AlarmSmokeControl>
      * @param companyId 单位ID
      * @return
      */
-    Integer smokeControlCount(String companyId, String startTime, String endTime);
+    Integer smokeControlCount(String companyId, Integer handlingStatus, String startTime, String endTime);
 
     /**
      * 防排烟列表查询

+ 7 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/BaseCompanyPersonService.java

@@ -37,4 +37,11 @@ public interface BaseCompanyPersonService extends CrudService<BaseCompanyPerson>
      * @return
      */
     Map<String, Object> postInspectStatistics();
+    /**
+     * 根据单位ID查询消防管理人(数据分析)
+     *
+     * @param companyId 单位编号
+     * @return
+     */
+    List<BaseCompanyPerson> baseCompanyPersonByCompanyId(String companyId);
 }

+ 53 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportConfigService.java

@@ -0,0 +1,53 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.ReportConfig;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.fire.service.vo.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 报告配置表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportConfigService extends CrudService<ReportConfig> {
+    /**
+     * 报告模型查看查询
+     *
+     * @return
+     */
+    List<ReportConfigVO> configInfo();
+
+    /**
+     * 报告指数-查询
+     *
+     * @param id   主键ID
+     * @return
+     */
+    List<ReportIndexVo> reportIndexSelect(Integer id);
+
+    /**
+     * 报告模型-删除
+     *
+     * @param id 主键ID
+     */
+    void delReportConfig(Integer id);
+
+    /**
+     * 报告模型-新增
+     *
+     * @param reportIndexVo 采集报告模型
+     */
+    void addReportConfig(ReportIndexVo reportIndexVo);
+
+    /**
+     * 报告模型-修改
+     *
+     * @param reportIndexVo
+     */
+    void updateReportConfig(ReportIndexVo reportIndexVo);
+}

+ 31 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexConfigService.java

@@ -0,0 +1,31 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.ReportIndexConfig;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.fire.service.vo.BaseBuildAddVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 指数配置表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportIndexConfigService extends CrudService<ReportIndexConfig> {
+    /**
+     * 指数配置-查询
+     *
+     * @param indexGrade 上级指数
+     */
+    List<ReportIndexConfig> indexConfigList(Integer reportId,Integer indexGrade);
+
+    /**
+     * 报告模型-删除
+     *
+     * @param id 主键ID
+     */
+    boolean delReportIndexConfig(Integer id);
+}

+ 39 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexResultService.java

@@ -0,0 +1,39 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.ReportIndexResult;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.fire.service.vo.CompanyDataVo;
+import com.usky.fire.service.vo.IndexResultVo;
+import com.usky.fire.service.vo.ReportResultVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 指数结果表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportIndexResultService extends CrudService<ReportIndexResult> {
+    /**
+     * 指数结果定时生成任务逻辑
+     */
+    void reportIndexResult();
+
+    /**
+     * 报告指数结果-查询
+     *
+     * @param id   对象ID
+     * @param createDate   生成日期
+     */
+    List<IndexResultVo> indexResultSelect(Integer id, String createDate);
+
+    /**
+     * 报告对比
+     *
+     * @param reportResultVO
+     */
+    List<Object> reportContrast(ReportResultVO reportResultVO);
+}

+ 37 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportResultService.java

@@ -0,0 +1,37 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DemReportInfo;
+import com.usky.fire.domain.ReportResult;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 报告结果表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-28
+ */
+public interface ReportResultService extends CrudService<ReportResult> {
+    /**
+     * 消防报告-历史报告列表查询
+     *
+     * @param companyId  单位名称
+     * @param sourceType  来源类型
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    CommonPage<ReportResult> reportResultList(Integer companyId, String sourceType, Integer pageNum, Integer pageSize);
+
+    /**
+     * 报告结果-查询
+     *
+     * @param reportObject  报告对象
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    CommonPage<Object> newReportResultList(String reportObject,Integer pageNum, Integer pageSize);
+}

+ 3 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmFireServiceImpl.java

@@ -381,7 +381,9 @@ public class AlarmFireServiceImpl extends AbstractCrudService<AlarmFireMapper, A
                 .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime), AlarmFire::getAlarmTime, startTime, endTime);
         if (alarmType.equals("100")) {
             queryWrapper.notIn(AlarmFire::getAlarmType, 2, 3);
-        } else {
+        }else if (alarmType.equals("101")){
+
+        }else {
             queryWrapper.eq(StringUtils.isNotBlank(alarmType), AlarmFire::getAlarmType, alarmType);
         }
         int count = this.count(queryWrapper);

+ 3 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmHydrantWaterServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.AlarmFire;
 import com.usky.fire.domain.AlarmHydrantWater;
 import com.usky.fire.domain.BaseUserCompany;
 import com.usky.fire.mapper.AlarmHydrantWaterMapper;
@@ -150,9 +151,10 @@ public class AlarmHydrantWaterServiceImpl extends AbstractCrudService<AlarmHydra
 
 
     @Override
-    public Integer hydrantWaterCount(String companyId, String startTime, String endTime) {
+    public Integer hydrantWaterCount(String companyId, Integer handlingStatus, String startTime, String endTime) {
         LambdaQueryWrapper<AlarmHydrantWater> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(AlarmHydrantWater::getCompanyId, companyId)
+                .eq(handlingStatus != null, AlarmHydrantWater::getHandlingStatus, handlingStatus)
                 .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime), AlarmHydrantWater::getAlarmTime, startTime, endTime);
         int count = this.count(queryWrapper);
         return count;

+ 2 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmSmokeControlServiceImpl.java

@@ -152,9 +152,10 @@ public class AlarmSmokeControlServiceImpl extends AbstractCrudService<AlarmSmoke
     }
 
     @Override
-    public Integer smokeControlCount(String companyId, String startTime, String endTime) {
+    public Integer smokeControlCount(String companyId, Integer handlingStatus, String startTime, String endTime) {
         LambdaQueryWrapper<AlarmSmokeControl> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(AlarmSmokeControl::getCompanyId, companyId)
+                .eq(handlingStatus != null, AlarmSmokeControl::getHandlingStatus, handlingStatus)
                 .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime), AlarmSmokeControl::getAlarmTime, startTime, endTime);
         int count = this.count(queryWrapper);
         return count;

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

@@ -161,12 +161,7 @@ public class BaseBuildServiceImpl extends AbstractCrudService<BaseBuildMapper, B
     public List<BaseBuildAddVO> baseBuildByIdList(String companyId, String buildName){
         List<BaseBuildAddVO> list = new ArrayList<>();
         LambdaQueryWrapper<BaseBuild> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.select(BaseBuild::getId, BaseBuild::getBuildNum, BaseBuild::getBuildName, BaseBuild::getAddress, BaseBuild::getBuildArea,
-                BaseBuild::getFireRating, BaseBuild::getUseCharacter, BaseBuild::getBuildStructure, BaseBuild::getBuildHigh,
-                BaseBuild::getCompleteYear, BaseBuild::getSafePerson, BaseBuild::getManagePerson,
-                BaseBuild::getFireRisk, BaseBuild::getBuildPlan, BaseBuild::getAboveFloor, BaseBuild::getUnderFloor,
-                BaseBuild::getFireFacilitySystem, BaseBuild::getOtherSystem, BaseBuild::getOtherFacilities)
-                .eq(BaseBuild::getDeleteFlag, 0)
+        queryWrapper.eq(BaseBuild::getDeleteFlag, 0)
                 .eq(BaseBuild::getCompanyId, companyId)
                 .orderByDesc(BaseBuild::getId);
         List<BaseBuild> list1 = this.list(queryWrapper);

+ 8 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseCompanyPersonServiceImpl.java

@@ -152,4 +152,12 @@ public class BaseCompanyPersonServiceImpl extends AbstractCrudService<BaseCompan
         map.put("notAnsweredCount", notAnsweredCount);
         return map;
     }
+    @Override
+    public List<BaseCompanyPerson> baseCompanyPersonByCompanyId(String companyId){
+        LambdaQueryWrapper<BaseCompanyPerson> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(BaseCompanyPerson::getFireManageName)
+                .eq(BaseCompanyPerson::getCompanyId, companyId);
+        List<BaseCompanyPerson> list = this.list(queryWrapper);
+        return list;
+    }
 }

+ 7 - 4
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseDeviceStatusServiceImpl.java

@@ -60,10 +60,13 @@ public class BaseDeviceStatusServiceImpl extends AbstractCrudService<BaseDeviceS
                 deviceCodeList.add(list2.get(j).getDeviceCode());
             }
         }
-        LambdaQueryWrapper<BaseDeviceStatus> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(deviceStatus != null, BaseDeviceStatus::getDeviceStatus, deviceStatus)
-                .in(BaseDeviceStatus::getDeviceCode, deviceCodeList);
-        int count = this.count(queryWrapper);
+        int count = 0;
+        if (CollectionUtils.isNotEmpty(deviceCodeList)){
+            LambdaQueryWrapper<BaseDeviceStatus> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(deviceStatus != null, BaseDeviceStatus::getDeviceStatus, deviceStatus)
+                    .in(BaseDeviceStatus::getDeviceCode, deviceCodeList);
+            count = this.count(queryWrapper);
+        }
         return count;
     }
 

+ 26 - 17
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BscEnterpriseAutonomyServiceImpl.java

@@ -96,6 +96,9 @@ public class BscEnterpriseAutonomyServiceImpl extends AbstractCrudService<BscEnt
     @Autowired
     private DemReformReviewService demReformReviewService;
 
+    @Autowired
+    private ReportIndexResultService reportIndexResultService;
+
 
     @Override
     public Object enterprise(String moduleType, String dataType, String streetTown){
@@ -863,21 +866,21 @@ public class BscEnterpriseAutonomyServiceImpl extends AbstractCrudService<BscEnt
                 BaseCompany::getCompanyId)
                 .eq(BaseCompany::getCompanyId, companyId);
         list2 = baseCompanyService.list(queryWrapper1);
-        List<DemReportGrade> list3 = new ArrayList<>();
-        LambdaQueryWrapper<DemReportGrade> queryWrapper2 = Wrappers.lambdaQuery();
-        queryWrapper2.select(DemReportGrade::getId, DemReportGrade::getCompanyId, DemReportGrade::getTotalGrade,
-                DemReportGrade::getBuildIntegrity,DemReportGrade::getFacilityStatus,
-                DemReportGrade::getSelfManage,DemReportGrade::getLawEnforce,DemReportGrade::getFireRisk)
-                .eq(DemReportGrade::getCompanyId, companyId)
-                .orderByDesc(DemReportGrade::getId).last(" limit 1");
-        list3 = demReportGradeService.list(queryWrapper2);
+        List<ReportIndexResult> list3 = new ArrayList<>();
+        LambdaQueryWrapper<ReportIndexResult> queryWrapper2 = Wrappers.lambdaQuery();
+        queryWrapper2.select(ReportIndexResult::getId, ReportIndexResult::getIndexCode, ReportIndexResult::getIndexName,
+                ReportIndexResult::getIndexScore,ReportIndexResult::getCreateDate,
+                ReportIndexResult::getIndexData,ReportIndexResult::getIndexData,ReportIndexResult::getScoreDesc)
+                .eq(ReportIndexResult::getObjectId, list2.get(0).getId())
+                .orderByDesc(ReportIndexResult::getId).last(" limit 74");
+        list3 = reportIndexResultService.list(queryWrapper2);
         List<DemFireReform> list4 = new ArrayList<>();
         LambdaQueryWrapper<DemFireReform> queryWrapper3 = Wrappers.lambdaQuery();
         queryWrapper3.select(DemFireReform::getId, DemFireReform::getCompanyId, DemFireReform::getReformPart,
                 DemFireReform::getSendTime,DemFireReform::getReformStatus,
                 DemFireReform::getLimitTime,DemFireReform::getReformCode)
                 .eq(DemFireReform::getCompanyId, companyId)
-                .orderByDesc(DemFireReform::getId).last(" limit 1");;
+                .orderByDesc(DemFireReform::getId).last(" limit 1");
         list4 = demFireReformService.list(queryWrapper3);
         List<DemReformReview> list5 = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list4)) {
@@ -885,7 +888,7 @@ public class BscEnterpriseAutonomyServiceImpl extends AbstractCrudService<BscEnt
             queryWrapper4.select(DemReformReview::getId, DemReformReview::getReformId, DemReformReview::getReformTime,
                     DemReformReview::getReviewTime)
                     .eq(DemReformReview::getReformId, list4.get(0).getId())
-                    .orderByDesc(DemReformReview::getId).last(" limit 1");;
+                    .orderByDesc(DemReformReview::getId).last(" limit 1");
             list5 = demReformReviewService.list(queryWrapper4);
         }
         Map<String, Object> map = new HashMap<>();
@@ -894,14 +897,20 @@ public class BscEnterpriseAutonomyServiceImpl extends AbstractCrudService<BscEnt
         map.put("linkPhone", list2.get(0).getLinkPhone());
         map.put("address", list2.get(0).getAddress());
         if (CollectionUtils.isNotEmpty(list3)) {
-            map.put("totalGrade", list3.get(0).getTotalGrade());
-            map.put("buildIntegrity", list3.get(0).getBuildIntegrity());
-            map.put("facilityStatus", list3.get(0).getFacilityStatus());
-            map.put("selfManage", list3.get(0).getSelfManage());
-            map.put("lawEnforce", list3.get(0).getLawEnforce());
-            map.put("fireRisk", list3.get(0).getFireRisk());
+            for (int i = 0; i < list3.size(); i++) {
+                if (list3.get(i).getIndexCode().equals("10001")){
+                    map.put("buildIntegrity", list3.get(i).getIndexScore());
+                }else if (list3.get(i).getIndexCode().equals("10003")){
+                    map.put("facilityStatus", list3.get(i).getIndexScore());
+                }else if (list3.get(i).getIndexCode().equals("10004")){
+                    map.put("selfManage", list3.get(i).getIndexScore());
+                }else if (list3.get(i).getIndexCode().equals("10005")){
+                    map.put("lawEnforce", list3.get(i).getIndexScore());
+                }else if (list3.get(i).getIndexCode().equals("10006")){
+                    map.put("fireRisk", list3.get(i).getIndexScore());
+                }
+            }
         }else {
-            map.put("totalGrade", 0);
             map.put("buildIntegrity", 0);
             map.put("facilityStatus", 0);
             map.put("selfManage", 0);

+ 364 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java

@@ -0,0 +1,364 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.*;
+import com.usky.fire.mapper.ReportConfigMapper;
+import com.usky.fire.service.ReportConfigService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.fire.service.ReportIndexConfigService;
+import com.usky.fire.service.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 报告配置表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Service
+public class ReportConfigServiceImpl extends AbstractCrudService<ReportConfigMapper, ReportConfig> implements ReportConfigService {
+    @Autowired
+    private ReportIndexConfigService reportIndexConfigService;
+
+    @Override
+    public List<ReportConfigVO> configInfo() {
+        List<ReportConfigVO> list = new ArrayList<>();
+        LambdaQueryWrapper<ReportConfig> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ReportConfig::getDeleteFlag, 0)
+                    .eq(ReportConfig::getTenantId, SecurityUtils.getTenantId());
+        List<ReportConfig> list1 = this.list(queryWrapper);
+        if (CollectionUtils.isNotEmpty(list1)) {
+            List<ReportConfigVO> list2 = new ArrayList<>();
+            List<ReportConfigVO> list3 = new ArrayList<>();
+            List<ReportConfigVO> list4 = new ArrayList<>();
+            List<ReportConfigVO> list5 = new ArrayList<>();
+            list2 = baseMapper.configNumList1(SecurityUtils.getTenantId());
+            list3 = baseMapper.configNumList(SecurityUtils.getTenantId(),1);
+            list4 = baseMapper.configNumList(SecurityUtils.getTenantId(),2);
+            list5 = baseMapper.configNumList(SecurityUtils.getTenantId(),3);
+            if (CollectionUtils.isNotEmpty(list2)) {
+                for (int i = 0; i < list2.size(); i++) {
+                    for (int j = 0; j < list3.size(); j++) {
+                        if (list2.get(i).getId().equals(list3.get(j).getId())){
+                            list2.get(i).setIndexNum1(list3.get(j).getIndexNum1());
+                        }
+                    }
+                    for (int k = 0; k < list4.size(); k++) {
+                        if (list2.get(i).getId().equals(list4.get(k).getId())){
+                            list2.get(i).setIndexNum2(list4.get(k).getIndexNum1());
+                        }
+                    }
+                    for (int g = 0; g < list5.size(); g++) {
+                        if (list2.get(i).getId().equals(list5.get(g).getId())){
+                            list2.get(i).setIndexNum3(list5.get(g).getIndexNum1());
+                        }
+                    }
+                    list.add(list2.get(i));
+                }
+            }
+        }
+        return list;
+    }
+    @Override
+    public List<ReportIndexVo> reportIndexSelect(Integer id) {
+        List<ReportIndexVo> list = new ArrayList<>();
+        List<ReportIndex1Vo> list2 = new ArrayList<>();
+        LambdaQueryWrapper<ReportConfig> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ReportConfig::getId,id);
+        List<ReportConfig> list1 = this.list(queryWrapper);
+        ReportIndexVo reportIndexVo = new ReportIndexVo();
+        if (CollectionUtils.isNotEmpty(list1)) {
+            reportIndexVo.setId(list1.get(0).getId());
+            reportIndexVo.setReportName(list1.get(0).getReportName());
+            LambdaQueryWrapper<ReportIndexConfig> queryWrapper1 = Wrappers.lambdaQuery();
+            queryWrapper1
+                    .eq(ReportIndexConfig::getReportId,list1.get(0).getId())
+                    .eq(ReportIndexConfig::getIndexGrade,1);
+            List<ReportIndexConfig> list3 = reportIndexConfigService.list(queryWrapper1);
+            if (CollectionUtils.isNotEmpty(list3)) {
+                List<Integer> indexIdList1 = new ArrayList<>();
+                for (int i = 0; i < list3.size(); i++) {
+                    indexIdList1.add(list3.get(i).getId());
+                }
+                LambdaQueryWrapper<ReportIndexConfig> queryWrapper2 = Wrappers.lambdaQuery();
+                queryWrapper2
+                        .in(ReportIndexConfig::getSeniorIndex,indexIdList1);
+                List<ReportIndexConfig> list4 = reportIndexConfigService.list(queryWrapper2);
+                if (CollectionUtils.isNotEmpty(list4)) {
+                    List<Integer> indexIdList2 = new ArrayList<>();
+                    for (int j = 0; j < list4.size(); j++) {
+                        indexIdList2.add(list4.get(j).getId());
+                    }
+                    LambdaQueryWrapper<ReportIndexConfig> queryWrapper3 = Wrappers.lambdaQuery();
+                    queryWrapper3
+                            .in(ReportIndexConfig::getSeniorIndex,indexIdList2);
+                    List<ReportIndexConfig> list5 = reportIndexConfigService.list(queryWrapper3);
+                    for (int k = 0; k < list3.size(); k++) {
+                        ReportIndex1Vo reportIndex1Vo = new ReportIndex1Vo();
+                        reportIndex1Vo.setId(list3.get(k).getId());
+                        reportIndex1Vo.setIndexCode(list3.get(k).getIndexCode());
+                        reportIndex1Vo.setIndexGrade(list3.get(k).getIndexGrade());
+                        reportIndex1Vo.setIndexName(list3.get(k).getIndexName());
+                        reportIndex1Vo.setIndexWeight(list3.get(k).getIndexWeight());
+                        reportIndex1Vo.setIndexDesc(list3.get(k).getIndexDesc());
+                        List<ReportIndex2Vo> list6 = new ArrayList<>();
+                        for (int l = 0; l < list4.size(); l++) {
+                            List<ReportIndex3Vo> list7 = new ArrayList<>();
+                            if (list4.get(l).getSeniorIndex().equals(list3.get(k).getId())){
+                                ReportIndex2Vo reportIndex2Vo = new ReportIndex2Vo();
+                                reportIndex2Vo.setId(list4.get(l).getId());
+                                reportIndex2Vo.setIndexCode(list4.get(l).getIndexCode());
+                                reportIndex2Vo.setIndexGrade(list4.get(l).getIndexGrade());
+                                reportIndex2Vo.setIndexName(list4.get(l).getIndexName());
+                                reportIndex2Vo.setIndexWeight(list4.get(l).getIndexWeight());
+                                reportIndex2Vo.setIndexDesc(list4.get(l).getIndexDesc());
+                                for (int m = 0; m < list5.size(); m++) {
+                                    if (list5.get(m).getSeniorIndex().equals(list4.get(l).getId())){
+                                        ReportIndex3Vo reportIndex3Vo = new ReportIndex3Vo();
+                                        reportIndex3Vo.setId(list5.get(m).getId());
+                                        reportIndex3Vo.setIndexCode(list5.get(m).getIndexCode());
+                                        reportIndex3Vo.setIndexGrade(list5.get(m).getIndexGrade());
+                                        reportIndex3Vo.setIndexName(list5.get(m).getIndexName());
+                                        reportIndex3Vo.setIndexWeight(list5.get(m).getIndexWeight());
+                                        reportIndex3Vo.setIndexDesc(list5.get(m).getIndexDesc());
+                                        list7.add(reportIndex3Vo);
+                                    }
+                                }
+                                reportIndex2Vo.setChildren(list7);
+                                list6.add(reportIndex2Vo);
+                            }
+                        }
+                        reportIndex1Vo.setChildren(list6);
+                        list2.add(reportIndex1Vo);
+                    }
+                    reportIndexVo.setReportIndex(list2);
+                    list.add(reportIndexVo);
+                }
+            }
+        }
+        return list;
+    }
+    @Override
+    public void delReportConfig(Integer id) {
+        ReportConfig reportConfig = new ReportConfig();
+        reportConfig.setId(id);
+        reportConfig.setDeleteFlag(1);
+        reportConfig.setUpdateTime(LocalDateTime.now());
+        reportConfig.setUpdateBy(SecurityUtils.getUsername());
+        this.updateById(reportConfig);
+    }
+
+    @Transactional
+    @Override
+    public void addReportConfig(ReportIndexVo reportIndexVo) {
+        ReportConfig reportConfig = new ReportConfig();
+        reportConfig.setReportName(reportIndexVo.getReportName());
+        reportConfig.setCreateBy(SecurityUtils.getUsername());
+        reportConfig.setCreateTime(LocalDateTime.now());
+        reportConfig.setTenantId(SecurityUtils.getTenantId());
+        this.save(reportConfig);
+        Integer configId = reportConfig.getId();
+        List<ReportIndex1Vo> list = reportIndexVo.getReportIndex();
+        if (CollectionUtils.isNotEmpty(list)){
+            for (int i = 0; i < list.size(); i++) {
+                ReportIndexConfig reportIndexConfig = new ReportIndexConfig();
+                reportIndexConfig.setIndexCode(list.get(i).getIndexCode());
+                reportIndexConfig.setCreateBy(SecurityUtils.getUsername());
+                reportIndexConfig.setCreateTime(LocalDateTime.now());
+                reportIndexConfig.setTenantId(SecurityUtils.getTenantId());
+                reportIndexConfig.setIndexDesc(list.get(i).getIndexDesc());
+                reportIndexConfig.setIndexGrade(list.get(i).getIndexGrade());
+                reportIndexConfig.setIndexName(list.get(i).getIndexName());
+                reportIndexConfig.setIndexWeight(list.get(i).getIndexWeight());
+                reportIndexConfig.setReportId(configId);
+                reportIndexConfig.setSeniorIndex(0);
+                reportIndexConfigService.save(reportIndexConfig);
+                Integer indexConfigId1 = reportIndexConfig.getId();
+                List<ReportIndex2Vo> list1 = list.get(i).getChildren();
+                if (CollectionUtils.isNotEmpty(list1)){
+                    for (int j = 0; j < list1.size(); j++) {
+                        ReportIndexConfig reportIndexConfig2 = new ReportIndexConfig();
+                        reportIndexConfig2.setIndexCode(list1.get(j).getIndexCode());
+                        reportIndexConfig2.setCreateBy(SecurityUtils.getUsername());
+                        reportIndexConfig2.setCreateTime(LocalDateTime.now());
+                        reportIndexConfig2.setTenantId(SecurityUtils.getTenantId());
+                        reportIndexConfig2.setIndexDesc(list1.get(j).getIndexDesc());
+                        reportIndexConfig2.setIndexGrade(list1.get(j).getIndexGrade());
+                        reportIndexConfig2.setIndexName(list1.get(j).getIndexName());
+                        reportIndexConfig2.setIndexWeight(list1.get(j).getIndexWeight());
+                        reportIndexConfig2.setReportId(configId);
+                        reportIndexConfig2.setSeniorIndex(indexConfigId1);
+                        reportIndexConfigService.save(reportIndexConfig2);
+                        Integer indexConfigId2 = reportIndexConfig2.getId();
+                        List<ReportIndex3Vo> list2 = list1.get(j).getChildren();
+                        if (CollectionUtils.isNotEmpty(list2)) {
+                            for (int k = 0; k < list2.size(); k++) {
+                                ReportIndexConfig reportIndexConfig3 = new ReportIndexConfig();
+                                reportIndexConfig3.setIndexCode(list2.get(k).getIndexCode());
+                                reportIndexConfig3.setCreateBy(SecurityUtils.getUsername());
+                                reportIndexConfig3.setCreateTime(LocalDateTime.now());
+                                reportIndexConfig3.setTenantId(SecurityUtils.getTenantId());
+                                reportIndexConfig3.setIndexDesc(list2.get(k).getIndexDesc());
+                                reportIndexConfig3.setIndexGrade(list2.get(k).getIndexGrade());
+                                reportIndexConfig3.setIndexName(list2.get(k).getIndexName());
+                                reportIndexConfig3.setIndexWeight(list2.get(k).getIndexWeight());
+                                reportIndexConfig3.setReportId(configId);
+                                reportIndexConfig3.setSeniorIndex(indexConfigId2);
+                                reportIndexConfigService.save(reportIndexConfig3);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Transactional
+    @Override
+    public void updateReportConfig(ReportIndexVo reportIndexVo) {
+        ReportConfig reportConfig = new ReportConfig();
+        reportConfig.setReportName(reportIndexVo.getReportName());
+        reportConfig.setId(reportIndexVo.getId());
+        reportConfig.setUpdateBy(SecurityUtils.getUsername());
+        reportConfig.setUpdateTime(LocalDateTime.now());
+        this.updateById(reportConfig);
+        List<ReportIndex1Vo> list = reportIndexVo.getReportIndex();
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                ReportIndexConfig reportIndexConfig = new ReportIndexConfig();
+                reportIndexConfig.setIndexCode(list.get(i).getIndexCode());
+                reportIndexConfig.setIndexDesc(list.get(i).getIndexDesc());
+                reportIndexConfig.setIndexGrade(list.get(i).getIndexGrade());
+                reportIndexConfig.setIndexName(list.get(i).getIndexName());
+                reportIndexConfig.setIndexWeight(list.get(i).getIndexWeight());
+                if (list.get(i).getId()==null){
+                    reportIndexConfig.setCreateBy(SecurityUtils.getUsername());
+                    reportIndexConfig.setCreateTime(LocalDateTime.now());
+                    reportIndexConfig.setTenantId(SecurityUtils.getTenantId());
+                    reportIndexConfig.setReportId(reportIndexVo.getId());
+                    reportIndexConfig.setSeniorIndex(0);
+                    reportIndexConfigService.save(reportIndexConfig);
+                    Integer indexConfigId1 = reportIndexConfig.getId();
+                    List<ReportIndex2Vo> list1 = list.get(i).getChildren();
+                    if (CollectionUtils.isNotEmpty(list1)) {
+                        for (int j = 0; j < list1.size(); j++) {
+                            ReportIndexConfig reportIndexConfig2 = new ReportIndexConfig();
+                            reportIndexConfig2.setIndexCode(list1.get(j).getIndexCode());
+                            reportIndexConfig2.setCreateBy(SecurityUtils.getUsername());
+                            reportIndexConfig2.setCreateTime(LocalDateTime.now());
+                            reportIndexConfig2.setTenantId(SecurityUtils.getTenantId());
+                            reportIndexConfig2.setIndexDesc(list1.get(j).getIndexDesc());
+                            reportIndexConfig2.setIndexGrade(list1.get(j).getIndexGrade());
+                            reportIndexConfig2.setIndexName(list1.get(j).getIndexName());
+                            reportIndexConfig2.setIndexWeight(list1.get(j).getIndexWeight());
+                            reportIndexConfig2.setReportId(reportIndexVo.getId());
+                            reportIndexConfig2.setSeniorIndex(indexConfigId1);
+                            reportIndexConfigService.save(reportIndexConfig2);
+                            Integer indexConfigId2 = reportIndexConfig2.getId();
+                            List<ReportIndex3Vo> list2 = list1.get(j).getChildren();
+                            if (CollectionUtils.isNotEmpty(list2)) {
+                                for (int k = 0; k < list2.size(); k++) {
+                                    ReportIndexConfig reportIndexConfig3 = new ReportIndexConfig();
+                                    reportIndexConfig3.setIndexCode(list2.get(k).getIndexCode());
+                                    reportIndexConfig3.setCreateBy(SecurityUtils.getUsername());
+                                    reportIndexConfig3.setCreateTime(LocalDateTime.now());
+                                    reportIndexConfig3.setTenantId(SecurityUtils.getTenantId());
+                                    reportIndexConfig3.setIndexDesc(list2.get(k).getIndexDesc());
+                                    reportIndexConfig3.setIndexGrade(list2.get(k).getIndexGrade());
+                                    reportIndexConfig3.setIndexName(list2.get(k).getIndexName());
+                                    reportIndexConfig3.setIndexWeight(list2.get(k).getIndexWeight());
+                                    reportIndexConfig3.setReportId(reportIndexVo.getId());
+                                    reportIndexConfig3.setSeniorIndex(indexConfigId2);
+                                    reportIndexConfigService.save(reportIndexConfig3);
+                                }
+                            }
+                        }
+                    }
+                }else {
+                    reportIndexConfig.setId(list.get(i).getId());
+                    reportIndexConfig.setUpdateBy(SecurityUtils.getUsername());
+                    reportIndexConfig.setUpdateTime(LocalDateTime.now());
+                    reportIndexConfigService.updateById(reportIndexConfig);
+                    List<ReportIndex2Vo> list1 = list.get(i).getChildren();
+                    if (CollectionUtils.isNotEmpty(list1)) {
+                        for (int j = 0; j < list1.size(); j++) {
+                            ReportIndexConfig reportIndexConfig2 = new ReportIndexConfig();
+                            reportIndexConfig2.setIndexCode(list1.get(j).getIndexCode());
+                            reportIndexConfig2.setIndexDesc(list1.get(j).getIndexDesc());
+                            reportIndexConfig2.setIndexGrade(list1.get(j).getIndexGrade());
+                            reportIndexConfig2.setIndexName(list1.get(j).getIndexName());
+                            reportIndexConfig2.setIndexWeight(list1.get(j).getIndexWeight());
+                            if (list1.get(j).getId()==null){
+                                reportIndexConfig2.setCreateBy(SecurityUtils.getUsername());
+                                reportIndexConfig2.setCreateTime(LocalDateTime.now());
+                                reportIndexConfig2.setTenantId(SecurityUtils.getTenantId());
+                                reportIndexConfig2.setReportId(reportIndexVo.getId());
+                                reportIndexConfig2.setSeniorIndex(list.get(i).getId());
+                                reportIndexConfigService.save(reportIndexConfig2);
+                                Integer indexConfigId2 = reportIndexConfig2.getId();
+                                List<ReportIndex3Vo> list2 = list1.get(j).getChildren();
+                                if (CollectionUtils.isNotEmpty(list2)) {
+                                    for (int k = 0; k < list2.size(); k++) {
+                                        ReportIndexConfig reportIndexConfig3 = new ReportIndexConfig();
+                                        reportIndexConfig3.setIndexCode(list2.get(k).getIndexCode());
+                                        reportIndexConfig3.setCreateBy(SecurityUtils.getUsername());
+                                        reportIndexConfig3.setCreateTime(LocalDateTime.now());
+                                        reportIndexConfig3.setTenantId(SecurityUtils.getTenantId());
+                                        reportIndexConfig3.setIndexDesc(list2.get(k).getIndexDesc());
+                                        reportIndexConfig3.setIndexGrade(list2.get(k).getIndexGrade());
+                                        reportIndexConfig3.setIndexName(list2.get(k).getIndexName());
+                                        reportIndexConfig3.setIndexWeight(list2.get(k).getIndexWeight());
+                                        reportIndexConfig3.setReportId(reportIndexVo.getId());
+                                        reportIndexConfig3.setSeniorIndex(indexConfigId2);
+                                        reportIndexConfigService.save(reportIndexConfig3);
+                                    }
+                                }
+                            }else {
+                                reportIndexConfig2.setId(list1.get(j).getId());
+                                reportIndexConfig2.setUpdateBy(SecurityUtils.getUsername());
+                                reportIndexConfig2.setUpdateTime(LocalDateTime.now());
+                                reportIndexConfigService.updateById(reportIndexConfig2);
+                                List<ReportIndex3Vo> list2 = list1.get(j).getChildren();
+                                if (CollectionUtils.isNotEmpty(list2)) {
+                                    for (int k = 0; k < list2.size(); k++) {
+                                        ReportIndexConfig reportIndexConfig3 = new ReportIndexConfig();
+                                        reportIndexConfig3.setIndexCode(list2.get(k).getIndexCode());
+                                        reportIndexConfig3.setIndexDesc(list2.get(k).getIndexDesc());
+                                        reportIndexConfig3.setIndexGrade(list2.get(k).getIndexGrade());
+                                        reportIndexConfig3.setIndexName(list2.get(k).getIndexName());
+                                        reportIndexConfig3.setIndexWeight(list2.get(k).getIndexWeight());
+                                        if (list2.get(k).getId()==null){
+                                            reportIndexConfig3.setCreateBy(SecurityUtils.getUsername());
+                                            reportIndexConfig3.setCreateTime(LocalDateTime.now());
+                                            reportIndexConfig3.setTenantId(SecurityUtils.getTenantId());
+                                            reportIndexConfig3.setReportId(reportIndexVo.getId());
+                                            reportIndexConfig3.setSeniorIndex(list1.get(j).getId());
+                                            reportIndexConfigService.save(reportIndexConfig3);
+                                        }else {
+                                            reportIndexConfig3.setId(list2.get(k).getId());
+                                            reportIndexConfig3.setUpdateBy(SecurityUtils.getUsername());
+                                            reportIndexConfig3.setUpdateTime(LocalDateTime.now());
+                                            reportIndexConfigService.updateById(reportIndexConfig3);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+            }
+        }
+    }
+}

+ 40 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexConfigServiceImpl.java

@@ -0,0 +1,40 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.BaseBuild;
+import com.usky.fire.domain.ReportConfig;
+import com.usky.fire.domain.ReportIndexConfig;
+import com.usky.fire.mapper.ReportIndexConfigMapper;
+import com.usky.fire.service.ReportIndexConfigService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.fire.service.vo.BaseBuildAddVO;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 指数配置表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Service
+public class ReportIndexConfigServiceImpl extends AbstractCrudService<ReportIndexConfigMapper, ReportIndexConfig> implements ReportIndexConfigService {
+    @Override
+    public List<ReportIndexConfig> indexConfigList(Integer reportId,Integer indexGrade){
+        LambdaQueryWrapper<ReportIndexConfig> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ReportIndexConfig::getIndexGrade,indexGrade)
+        .eq(ReportIndexConfig::getReportId,reportId);
+        List<ReportIndexConfig> list1 = this.list(queryWrapper);
+        return list1;
+    }
+    @Override
+    public boolean delReportIndexConfig(Integer id) {
+        return this.removeById(id);
+    }
+}

+ 1706 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java

@@ -0,0 +1,1706 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.itextpdf.text.*;
+import com.itextpdf.text.pdf.BaseFont;
+import com.itextpdf.text.pdf.PdfPCell;
+import com.itextpdf.text.pdf.PdfPTable;
+import com.itextpdf.text.pdf.PdfWriter;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.*;
+import com.usky.fire.mapper.ReportIndexResultMapper;
+import com.usky.fire.service.*;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.fire.service.config.pdf.MyHeaderFooter;
+import com.usky.fire.service.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.List;
+
+/**
+ * <p>
+ * 指数结果表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Service
+public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportIndexResultMapper, ReportIndexResult> implements ReportIndexResultService {
+    @Autowired
+    private BaseCompanyService baseCompanyService;
+    @Autowired
+    private BaseBuildService baseBuildService;
+    @Autowired
+    private ReportIndexConfigService reportIndexConfigService;
+    @Autowired
+    private BaseDeviceService baseDeviceService;
+    @Autowired
+    private BaseDeviceStatusService baseDeviceStatusService;
+    @Autowired
+    private AlarmFireService alarmFireService;
+    @Autowired
+    private AlarmSmokeControlService alarmSmokeControlService;
+    @Autowired
+    private AlarmHydrantWaterService alarmHydrantWaterService;
+    @Autowired
+    private AlarmSprayWaterService alarmSprayWaterService;
+    @Autowired
+    private BaseCompanyPersonService baseCompanyPersonService;
+    @Autowired
+    private DemEnforceInspectRecordService demEnforceInspectRecordService;
+    @Autowired
+    private DemLawSituationService demLawSituationService;
+    @Autowired
+    private DemEnforceReportComplaintService demEnforceReportComplaintService;
+    @Autowired
+    private DemFireStatisticsService demFireStatisticsService;
+    @Autowired
+    private ReportResultService reportResultService;
+
+    @Override
+    public void reportIndexResult() {
+        try {
+            List<BaseCompany> baseCompanies = baseCompanyService.companyIdByTypeList("4");
+            if (CollectionUtils.isNotEmpty(baseCompanies)) {
+                Calendar now = Calendar.getInstance();
+                LocalDate date=LocalDate.now();
+                LocalDateTime dateTime=LocalDateTime.now();
+                for (int i = 0; i < baseCompanies.size(); i++) {
+                    // 1.新建document对象
+                    Document document = new Document(PageSize.A4);// 建立一个Document对象
+
+// 2.建立一个书写器(Writer)与document对象关联
+//                    File file =
+//                            new File("/var/www/usky-file/"+now.get(Calendar.YEAR)+"0"+now.get(Calendar.MONTH+1)+"/"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
+                    File file = new File("D:\\"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
+                    file.createNewFile();
+                    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
+//                    writer.setPageEvent(new Watermark("hello word"));// 水印
+                    writer.setPageEvent(new MyHeaderFooter());// 页眉/页脚
+                    // 3.打开文档
+                    document.open();
+                    document.addTitle("fire report");// 标题
+                    document.addAuthor("mhzd");// 作者
+//                    document.addSubject("Subject@iText pdf sample");// 主题
+//                    document.addKeywords("Keywords@iTextpdf");// 关键字
+//                    document.addCreator("Creator@umiz`s");// 创建者
+                    DemReportDataVo demReportDataVo = new DemReportDataVo();
+                    demReportDataVo.setCompanyName(baseCompanies.get(i).getCompanyName());
+                    demReportDataVo.setLastMonthEndTime(date.toString());
+                    ReportResult reportResult = new ReportResult();
+                    reportResult.setObjectId(baseCompanies.get(i).getId());
+                    reportResult.setReportObject(baseCompanies.get(i).getCompanyName());
+                    reportResult.setObjectType(1);
+                    reportResult.setCreateDate(date);
+                    reportResult.setConfigId(1);
+                    reportResult.setCreateTime(dateTime);
+                    reportResult.setCreateBy(SecurityUtils.getUsername());
+                    List<BaseBuildAddVO> baseBuilds =
+                            baseBuildService.baseBuildByIdList(baseCompanies.get(i).getCompanyId(), "");
+                    List<ReportIndexConfig> indexConfig3 = reportIndexConfigService.indexConfigList(1, 3);
+                    List<ReportIndexConfig> indexConfig2 = reportIndexConfigService.indexConfigList(1, 2);
+                    List<ReportIndexConfig> indexConfig1 = reportIndexConfigService.indexConfigList(1, 1);
+                    int fireDeviceNum = baseDeviceService.deviceCount(baseCompanies.get(i).getCompanyId(), 1);
+                    int smokeDeviceNum = baseDeviceService.deviceCount(baseCompanies.get(i).getCompanyId(), 3);
+                    int fireDeviceOfflineNum =
+                            baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(), 0, 1);
+                    int smokeDeviceOfflineNum =
+                            baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(), 0, 3);
+                    int fireDeviceHitchNum =
+                            baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(), 2, 1);
+                    int smokeDeviceHitchNum =
+                            baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(), 2, 3);
+                    int fireAlarmOfflineNum = fireDeviceOfflineNum + smokeDeviceOfflineNum;
+                    int fireAlarmHitchNum = fireDeviceHitchNum + smokeDeviceHitchNum;
+                    int fireAlarmNum = fireDeviceNum + smokeDeviceNum;
+                    demReportDataVo.setFireDeviceNum(fireAlarmNum);
+                    double fireOnlineRate = 0;
+                    double fireFaultRate = 0;
+                    if (fireAlarmNum > 0) {
+                        fireOnlineRate = 1 - Math.round(fireAlarmOfflineNum / fireAlarmNum * 100) * 0.01;
+                        fireFaultRate = Math.round(fireAlarmHitchNum / fireAlarmNum * 100) * 0.01;
+                    }
+                    demReportDataVo.setFireOnlineRate(fireOnlineRate);
+                    demReportDataVo.setFireFaultRate(fireFaultRate);
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    Calendar lastMonthFirstDateCal = Calendar.getInstance();
+                    lastMonthFirstDateCal.add(Calendar.MONTH, -1);
+                    String lastMonthFirstTime = format.format(lastMonthFirstDateCal.getTime());
+                    Calendar lastYearFirstDateCal = Calendar.getInstance();
+                    lastYearFirstDateCal.add(Calendar.YEAR, -2);
+                    String lastYearFirstTime = format.format(lastYearFirstDateCal.getTime());
+                    Calendar lastYearFirstDateCal2 = Calendar.getInstance();
+                    lastYearFirstDateCal2.add(Calendar.YEAR, -1);
+                    String lastYearFirstTime2 = format.format(lastYearFirstDateCal2.getTime());
+                    Integer fireAlarmWcl = alarmFireService.fireAlarmCount(baseCompanies.get(i).getCompanyId(), 0,
+                            "101", lastYearFirstTime2, lastMonthFirstTime);
+                    demReportDataVo.setFireUnhandled(fireAlarmWcl);
+                    LambdaQueryWrapper<AlarmFire> queryWrapper6 = Wrappers.lambdaQuery();
+                    queryWrapper6.eq(AlarmFire::getCompanyId, baseCompanies.get(i).getCompanyId())
+                            .eq(AlarmFire::getHandlingStatus, 1)
+                            .last("limit 1");
+                    List<AlarmFire> list6 = alarmFireService.list(queryWrapper6);
+                    long clFireDays = 0;
+                    if (CollectionUtils.isNotEmpty(list6)) {
+                        clFireDays = ChronoUnit.DAYS.between(list6.get(0).getAlarmTime(),
+                                list6.get(0).getHandlingTime());
+                    }
+                    LambdaQueryWrapper<BaseDevice> queryWrapper2 = Wrappers.lambdaQuery();
+                    queryWrapper2.select(BaseDevice::getId, BaseDevice::getDeviceCode)
+                            .eq(BaseDevice::getCompanyId, baseCompanies.get(i).getCompanyId())
+                            .in(BaseDevice::getDeviceType, 2, 5, 6)
+                            .notLike(BaseDevice::getDeviceName, "风机");
+                    List<BaseDevice> list2 = baseDeviceService.list(queryWrapper2);
+                    demReportDataVo.setWaterDeviceNum(list2.size());
+                    double waterOnlineRate = 0;
+                    double waterFaultRate = 0;
+                    Integer waterAlarmWcl = 0;
+                    long clHydrantWaterDays = 0;
+                    if (CollectionUtils.isNotEmpty(list2)) {
+                        List<String> deviceCodeList = new ArrayList<>();
+                        for (int j = 0; j < list2.size(); j++) {
+                            deviceCodeList.add(list2.get(j).getDeviceCode());
+                        }
+                        List<BaseDeviceStatus> list3 = new ArrayList<>();
+                        List<BaseDeviceStatus> list3l = new ArrayList<>();
+                        if (CollectionUtils.isNotEmpty(deviceCodeList)) {
+                            LambdaQueryWrapper<BaseDeviceStatus> queryWrapper3 = Wrappers.lambdaQuery();
+                            queryWrapper3.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
+                                    .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
+                                    .ne(BaseDeviceStatus::getDeviceStatus, 0);
+                            list3 = baseDeviceStatusService.list(queryWrapper3);
+                            waterOnlineRate = Math.round(list3.size() / list2.size() * 100) * 0.01;
+                            LambdaQueryWrapper<BaseDeviceStatus> queryWrapper3l = Wrappers.lambdaQuery();
+                            queryWrapper3l.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
+                                    .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
+                                    .eq(BaseDeviceStatus::getDeviceStatus, 2);
+                            list3l = baseDeviceStatusService.list(queryWrapper3l);
+                            waterFaultRate = Math.round(list3l.size() / list2.size() * 100) * 0.01;
+                        }
+                        waterAlarmWcl = alarmHydrantWaterService.hydrantWaterCount(baseCompanies.get(i).getCompanyId(), 0,
+                                lastYearFirstTime2, lastMonthFirstTime);
+                        LambdaQueryWrapper<AlarmHydrantWater> queryWrapper7 = Wrappers.lambdaQuery();
+                        queryWrapper7.eq(AlarmHydrantWater::getCompanyId, baseCompanies.get(i).getCompanyId())
+                                .eq(AlarmHydrantWater::getHandlingStatus, 1)
+                                .last("limit 1");
+                        List<AlarmHydrantWater> list7 = alarmHydrantWaterService.list(queryWrapper7);
+                        if (CollectionUtils.isNotEmpty(list7)) {
+                            clHydrantWaterDays = ChronoUnit.DAYS.between(list7.get(0).getAlarmTime(),
+                                    list7.get(0).getHandlingTime());
+                        }
+                    }
+                    demReportDataVo.setWaterOnlineRate(waterOnlineRate);
+                    demReportDataVo.setWaterFaultRate(waterFaultRate);
+                    demReportDataVo.setWaterUnhandled(waterAlarmWcl);
+                    LambdaQueryWrapper<BaseDevice> queryWrapper4 = Wrappers.lambdaQuery();
+                    queryWrapper4.select(BaseDevice::getId, BaseDevice::getDeviceCode)
+                            .eq(BaseDevice::getCompanyId, baseCompanies.get(i).getCompanyId())
+                            .eq(BaseDevice::getDeviceType, 6)
+                            .like(BaseDevice::getDeviceName, "风机");
+                    List<BaseDevice> list4 = baseDeviceService.list(queryWrapper4);
+                    demReportDataVo.setSmokeDeviceNum(list4.size());
+                    double smokeOnlineRate = 0;
+                    double smokeFaultRate = 0;
+                    Integer smokeAlarmWcl = 0;
+                    long clSmokeDays = 0;
+                    if (CollectionUtils.isNotEmpty(list4)) {
+                        List<String> deviceCodeList = new ArrayList<>();
+                        for (int j = 0; j < list4.size(); j++) {
+                            deviceCodeList.add(list4.get(j).getDeviceCode());
+                        }
+                        List<BaseDeviceStatus> list5 = new ArrayList<>();
+                        List<BaseDeviceStatus> list5l = new ArrayList<>();
+                        if (CollectionUtils.isNotEmpty(deviceCodeList)) {
+                            LambdaQueryWrapper<BaseDeviceStatus> queryWrapper5 = Wrappers.lambdaQuery();
+                            queryWrapper5.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
+                                    .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
+                                    .ne(BaseDeviceStatus::getDeviceStatus, 0);
+                            list5 = baseDeviceStatusService.list(queryWrapper5);
+                            smokeOnlineRate = Math.round(list5.size() / list4.size()) * 0.01;
+                            LambdaQueryWrapper<BaseDeviceStatus> queryWrapper5l = Wrappers.lambdaQuery();
+                            queryWrapper5l.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
+                                    .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
+                                    .ne(BaseDeviceStatus::getDeviceStatus, 2);
+                            list5l = baseDeviceStatusService.list(queryWrapper5l);
+                            smokeFaultRate = Math.round(list5l.size() / list4.size()) * 0.01;
+                        }
+                        smokeAlarmWcl = alarmSmokeControlService.smokeControlCount(baseCompanies.get(i).getCompanyId(), 0,
+                                lastYearFirstTime2, lastMonthFirstTime);
+                        LambdaQueryWrapper<AlarmSmokeControl> queryWrapper8 = Wrappers.lambdaQuery();
+                        queryWrapper8.eq(AlarmSmokeControl::getCompanyId, baseCompanies.get(i).getCompanyId())
+                                .eq(AlarmSmokeControl::getHandlingStatus, 1)
+                                .last("limit 1");
+                        List<AlarmSmokeControl> list8 = alarmSmokeControlService.list(queryWrapper8);
+                        if (CollectionUtils.isNotEmpty(list8)) {
+                            clSmokeDays = ChronoUnit.DAYS.between(list8.get(0).getAlarmTime(),
+                                    list8.get(0).getHandlingTime());
+                        }
+                    }
+                    demReportDataVo.setSmokeOnlineRate(smokeOnlineRate);
+                    demReportDataVo.setSmokeFaultRate(smokeFaultRate);
+                    demReportDataVo.setSmokeUnhandled(smokeAlarmWcl);
+                    LambdaQueryWrapper<BaseCompanyPerson> queryWrapperPerson = Wrappers.lambdaQuery();
+                    queryWrapperPerson.select(BaseCompanyPerson::getFireManageName)
+                            .eq(BaseCompanyPerson::getCompanyId, baseCompanies.get(i).getCompanyId());
+                    List<BaseCompanyPerson> list9 =
+                            baseCompanyPersonService.list(queryWrapperPerson);
+                    LambdaQueryWrapper<DemEnforceInspectRecord> queryWrapper10 = Wrappers.lambdaQuery();
+                    queryWrapper10.select(DemEnforceInspectRecord::getId)
+                            .like(DemEnforceInspectRecord::getCompanyName, baseCompanies.get(i).getCompanyName())
+                            .eq(DemEnforceInspectRecord::getInspectQualified, 0)
+                            .between(DemEnforceInspectRecord::getInspectEndTime, lastYearFirstTime, date);
+                    List<DemEnforceInspectRecord> list10 = demEnforceInspectRecordService.list(queryWrapper10);
+                    demReportDataVo.setDoubleRandomNum(list10.size());
+                    Calendar lastYearFirstDateCal3 = Calendar.getInstance();
+                    lastYearFirstDateCal3.add(Calendar.YEAR, -3);
+                    String lastYearFirstTime3 = format.format(lastYearFirstDateCal3.getTime());
+                    demReportDataVo.setLastMonthFirstTime(lastYearFirstTime3);
+                    LambdaQueryWrapper<DemLawSituation> queryWrapper11 = Wrappers.lambdaQuery();
+                    queryWrapper11.select(DemLawSituation::getId)
+                            .like(DemLawSituation::getPunishedPerson, baseCompanies.get(i).getCompanyName())
+                            .eq(DemLawSituation::getEnable, 0)
+                            .between(DemLawSituation::getPunishmentDecisionTime, lastYearFirstTime3, date);
+                    List<DemLawSituation> list11 = demLawSituationService.list(queryWrapper11);
+                    demReportDataVo.setPunishNum(list11.size());
+                    LambdaQueryWrapper<DemEnforceReportComplaint> queryWrapper12 = Wrappers.lambdaQuery();
+                    queryWrapper12.select(DemEnforceReportComplaint::getId)
+                            .like(DemEnforceReportComplaint::getReportAddress, baseCompanies.get(i).getAddress())
+                            .eq(DemEnforceReportComplaint::getEnable, 0)
+                            .in(DemEnforceReportComplaint::getFactFind, 1, 2)
+                            .between(DemEnforceReportComplaint::getReportTime, lastYearFirstTime, date);
+                    List<DemEnforceReportComplaint> list12 = demEnforceReportComplaintService.list(queryWrapper12);
+                    demReportDataVo.setReportComplaintNum(list12.size());
+                    Calendar lastYearFirstDateCal1 = Calendar.getInstance();
+                    lastYearFirstDateCal1.add(Calendar.YEAR, -1);
+                    String lastYearFirstTime1 = format.format(lastYearFirstDateCal1.getTime());
+                    LambdaQueryWrapper<DemFireStatistics> queryWrapper13 = Wrappers.lambdaQuery();
+                    queryWrapper13.select(DemFireStatistics::getId,DemFireStatistics::getDeathToll,
+                            DemFireStatistics::getDirectPropertyLoss)
+                            .like(DemFireStatistics::getFireAddress, baseCompanies.get(i).getAddress())
+                            .between(DemFireStatistics::getFireTime, lastYearFirstTime1, date);
+                    List<DemFireStatistics> list13 = demFireStatisticsService.list(queryWrapper13);
+                    int deathToll=0;
+                    int directPropertyLoss=0;
+                    if (CollectionUtils.isNotEmpty(list13)){
+                        for (int h = 0; h < list13.size(); h++) {
+                            deathToll+=Integer.parseInt(list13.get(h).getDeathToll());
+                            directPropertyLoss+=Integer.parseInt(list13.get(h).getDirectPropertyLoss());
+                        }
+                    }
+                    demReportDataVo.setMajorFireNum(deathToll);
+                    demReportDataVo.setFireDisasterNum(directPropertyLoss);
+                    demReportDataVo.setGeneralFireNum(list13.size());
+                    demReportDataVo.setManagerStatus(0);
+                    if (CollectionUtils.isNotEmpty(indexConfig1)) {
+                        for (int l = 0; l < indexConfig1.size(); l++) {
+                            ReportIndexResult reportIndexResult1 = new ReportIndexResult();
+                            reportIndexResult1.setIndexCode(indexConfig1.get(l).getIndexCode());
+                            reportIndexResult1.setIndexName(indexConfig1.get(l).getIndexName());
+                            reportIndexResult1.setObjectId(baseCompanies.get(i).getId());
+                            reportIndexResult1.setCreateDate(date);
+                            reportIndexResult1.setScoreDesc(indexConfig1.get(l).getIndexDesc());
+                            if (CollectionUtils.isNotEmpty(indexConfig2)) {
+                                for (int k = 0; k < indexConfig2.size(); k++) {
+                                    if (indexConfig1.get(l).getId().equals(indexConfig2.get(k).getSeniorIndex())) {
+                                        ReportIndexResult reportIndexResult2 = new ReportIndexResult();
+                                        reportIndexResult2.setIndexCode(indexConfig2.get(k).getIndexCode());
+                                        reportIndexResult2.setIndexName(indexConfig2.get(k).getIndexName());
+                                        reportIndexResult2.setObjectId(baseCompanies.get(i).getId());
+                                        reportIndexResult2.setCreateDate(date);
+                                        reportIndexResult2.setScoreDesc(indexConfig2.get(k).getIndexDesc());
+                                        if (CollectionUtils.isNotEmpty(indexConfig3)) {
+                                            for (int j = 0; j < indexConfig3.size(); j++) {
+                                                if (indexConfig2.get(k).getId().equals(indexConfig3.get(j).getSeniorIndex())) {
+                                                    ReportIndexResult reportIndexResult = new ReportIndexResult();
+                                                    reportIndexResult.setIndexCode(indexConfig3.get(j).getIndexCode());
+                                                    reportIndexResult.setIndexName(indexConfig3.get(j).getIndexName());
+                                                    reportIndexResult.setObjectId(baseCompanies.get(i).getId());
+                                                    reportIndexResult.setCreateDate(date);
+                                                    reportIndexResult.setScoreDesc(indexConfig3.get(j).getIndexDesc());
+                                                    if (CollectionUtils.isNotEmpty(baseBuilds)) {
+                                                        reportIndexResult.setScoreType(1);
+                                                        if (indexConfig3.get(j).getSeniorIndex().equals(2)) {
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10024")) {
+                                                                if (baseBuilds.get(0).getBaseBuild().getFireRating()!=null){
+                                                                    reportIndexResult.setIndexData(baseBuilds.get(0).getBaseBuild().getFireRating().toString());
+                                                                    if (baseBuilds.get(0).getBaseBuild().getFireRating().equals(1)) {
+                                                                        reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight() * indexConfig2.get(k).getIndexWeight());
+                                                                    } else if (baseBuilds.get(0).getBaseBuild().getFireRating().equals(2)) {
+                                                                        reportIndexResult.setIndexScore(75 * indexConfig3.get(j).getIndexWeight());
+                                                                        reportIndexResult2.setIndexScore(75 * indexConfig3.get(j).getIndexWeight() * indexConfig2.get(k).getIndexWeight());
+                                                                    } else if (baseBuilds.get(0).getBaseBuild().getFireRating().equals(3)) {
+                                                                        reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                                        reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight() * indexConfig2.get(k).getIndexWeight());
+                                                                    } else {
+                                                                        reportIndexResult.setIndexScore(25 * indexConfig3.get(j).getIndexWeight());
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight() * indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }else {
+                                                                    reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight() * indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            }
+                                                            this.save(reportIndexResult);
+                                                        }else if (indexConfig3.get(j).getSeniorIndex().equals(7)){
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10025")) {
+                                                                reportIndexResult.setIndexData(baseBuilds.get(0).getBaseBuild().getAboveFloor().toString());
+                                                                if (baseBuilds.get(0).getBaseBuild().getAboveFloor() < 10) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (baseBuilds.get(0).getBaseBuild().getAboveFloor() > 10 && baseBuilds.get(0).getBaseBuild().getAboveFloor() < 40) {
+                                                                    reportIndexResult.setIndexScore(66.67 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(66.67 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else{
+                                                                        reportIndexResult2.setIndexScore(66.67 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(33.33 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(33.33 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                    reportIndexResult.setIndexScore(33.33 * indexConfig3.get(j).getIndexWeight());
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10026")) {
+                                                                reportIndexResult.setIndexData(baseBuilds.get(0).getBaseBuild().getUnderSpace().toString());
+                                                                if (baseBuilds.get(0).getBaseBuild().getUnderSpace() > 20000) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (baseBuilds.get(0).getBaseBuild().getUnderSpace() > 10000 && baseBuilds.get(0).getBaseBuild().getUnderSpace() < 20000) {
+                                                                    reportIndexResult.setIndexScore(-75 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-75 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-75 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (baseBuilds.get(0).getBaseBuild().getUnderSpace() > 5000 && baseBuilds.get(0).getBaseBuild().getUnderSpace() < 10000) {
+                                                                    reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(-25 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            }
+                                                            this.save(reportIndexResult);
+                                                        }else if (indexConfig3.get(j).getSeniorIndex().equals(8)){
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10027")) {
+                                                                reportIndexResult.setIndexData(baseBuilds.get(0).getBaseBuild().getUseCharacter().toString());
+                                                                if (baseBuilds.get(0).getBaseBuild().getUseCharacter().equals(16)) {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                } else if (baseBuilds.get(0).getBaseBuild().getUseCharacter().equals(14) || baseBuilds.get(0).getBaseBuild().getUseCharacter().equals(15)) {
+                                                                    reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                } else if (baseBuilds.get(0).getBaseBuild().getUseCharacter().equals(2)) {
+                                                                    reportIndexResult.setIndexScore(75 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(75 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10028")) {
+                                                                reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult.setScoreType(0);
+                                                            }
+                                                            this.save(reportIndexResult);
+                                                        }else if (indexConfig3.get(j).getSeniorIndex().equals(9)){
+                                                             if (indexConfig3.get(j).getIndexCode().equals("10029")) {
+                                                                reportIndexResult.setIndexData(baseBuilds.get(0).getBaseBuild().getCompleteYear().toString());
+                                                                long days = date.toEpochDay() - baseBuilds.get(0).getBaseBuild().getCompleteYear().toEpochDay();
+                                                                if (days < 7300) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            }
+                                                            this.save(reportIndexResult);
+                                                        }
+                                                    } else {
+                                                        if (indexConfig3.get(j).getSeniorIndex().equals(2) || indexConfig3.get(j).getSeniorIndex().equals(7) || indexConfig3.get(j).getSeniorIndex().equals(8) || indexConfig3.get(j).getSeniorIndex().equals(9)) {
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10026") || indexConfig3.get(j).getIndexCode().equals("10028")) {
+                                                                reportIndexResult.setIndexScore(0.00);
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                            }
+                                                            reportIndexResult.setScoreType(0);
+                                                            reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            this.save(reportIndexResult);
+                                                        }
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(10)) {
+                                                        if (fireAlarmNum == 0) {
+                                                            reportIndexResult.setScoreType(0);
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10030")) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10031")) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            }
+                                                        } else {
+                                                            reportIndexResult.setScoreType(1);
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10030")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(fireOnlineRate));
+                                                                if (fireOnlineRate < 0.95) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10031")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(fireFaultRate));
+                                                                if (fireFaultRate > 0.05) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10032")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(fireOnlineRate));
+                                                                if (fireOnlineRate > 0.9) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10033")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(fireFaultRate));
+                                                                if (fireFaultRate < 0.05) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10034")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(fireAlarmWcl));
+                                                                if (fireAlarmWcl > 0) {
+                                                                    reportIndexResult.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (clFireDays < 7) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (clFireDays < 30) {
+                                                                    reportIndexResult.setIndexScore(25 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(11)) {
+                                                        if (list2.size() == 0) {
+                                                            reportIndexResult.setScoreType(0);
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10035")) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10036")) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            }
+                                                        } else {
+                                                            reportIndexResult.setScoreType(1);
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10035")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(waterOnlineRate));
+                                                                if (waterOnlineRate < 0.95) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10036")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(waterFaultRate));
+                                                                if (waterFaultRate > 0.05) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10037")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(waterOnlineRate));
+                                                                if (waterOnlineRate > 0.9) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10038")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(waterFaultRate));
+                                                                if (waterFaultRate < 0.05) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10039")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(waterAlarmWcl));
+                                                                if (waterAlarmWcl > 0) {
+                                                                    reportIndexResult.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (clHydrantWaterDays < 7) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (clHydrantWaterDays < 30) {
+                                                                    reportIndexResult.setIndexScore(25 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(12)) {
+                                                        if (list4.size() == 0) {
+                                                            reportIndexResult.setScoreType(0);
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10040")) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10041")) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                            }
+                                                        } else {
+                                                            reportIndexResult.setScoreType(1);
+                                                            if (indexConfig3.get(j).getIndexCode().equals("10040")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(smokeOnlineRate));
+                                                                if (smokeOnlineRate < 0.95) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10041")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(smokeFaultRate));
+                                                                if (smokeFaultRate > 0.05) {
+                                                                    reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10042")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(smokeOnlineRate));
+                                                                if (smokeOnlineRate > 0.9) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10043")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(smokeFaultRate));
+                                                                if (smokeFaultRate < 0.05) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            } else if (indexConfig3.get(j).getIndexCode().equals("10044")) {
+                                                                reportIndexResult.setIndexData(String.valueOf(smokeAlarmWcl));
+                                                                if (smokeAlarmWcl > 0) {
+                                                                    reportIndexResult.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(-15 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (clSmokeDays < 7) {
+                                                                    reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else if (clSmokeDays < 30) {
+                                                                    reportIndexResult.setIndexScore(25 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(25 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                } else {
+                                                                    reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                    if (reportIndexResult2.getIndexScore()!=null){
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                    }else {
+                                                                        reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(13)) {
+                                                        reportIndexResult.setScoreType(0);
+                                                        if (indexConfig3.get(j).getIndexCode().equals("10046") || indexConfig3.get(j).getIndexCode().equals("10048")) {
+                                                            reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                            if (reportIndexResult2.getIndexScore()!=null){
+                                                                reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                            }else {
+                                                                reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            }
+                                                        } else {
+                                                            reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                            if (reportIndexResult2.getIndexScore()!=null){
+                                                                reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                            }else {
+                                                                reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            }
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(14) || indexConfig3.get(j).getSeniorIndex().equals(15) || indexConfig3.get(j).getSeniorIndex().equals(16) || indexConfig3.get(j).getSeniorIndex().equals(17)) {
+                                                        if (indexConfig3.get(j).getIndexCode().equals("10054")) {
+                                                            if (CollectionUtils.isNotEmpty(list9)) {
+                                                                reportIndexResult.setIndexData(list9.get(0).getFireManageName());
+                                                            }
+                                                            if (list9.size() == 0 || list9.get(0).getFireManageName() == null || list9.get(0).getFireManageName().equals("暂缺") || list9.get(0).getFireManageName().equals("")) {
+                                                                reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                                demReportDataVo.setManagerStatus(0);
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(100 * indexConfig3.get(j).getIndexWeight());
+                                                                if (reportIndexResult2.getIndexScore()!=null){
+                                                                    reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                                }else {
+                                                                    reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                                }
+                                                                demReportDataVo.setManagerStatus(1);
+                                                            }
+                                                            reportIndexResult.setScoreType(1);
+                                                        } else {
+                                                            reportIndexResult.setIndexScore(50 * indexConfig3.get(j).getIndexWeight());
+                                                            if (reportIndexResult2.getIndexScore()!=null){
+                                                                reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight()+reportIndexResult2.getIndexScore());
+                                                            }else {
+                                                                reportIndexResult2.setIndexScore(50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            }
+                                                            reportIndexResult.setScoreType(0);
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(18) || indexConfig3.get(j).getSeniorIndex().equals(19) || indexConfig3.get(j).getSeniorIndex().equals(20) || indexConfig3.get(j).getSeniorIndex().equals(21)) {
+                                                        if (indexConfig3.get(j).getIndexCode().equals("10067")) {
+                                                            reportIndexResult.setIndexData(String.valueOf(list10.size()));
+                                                            if (list10.size() == 0) {
+                                                                reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else if (list10.size() < 4) {
+                                                                reportIndexResult.setIndexScore(-20 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-20 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else if (list10.size() < 7) {
+                                                                reportIndexResult.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-50 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            }
+                                                            reportIndexResult.setScoreType(1);
+                                                        } else if (indexConfig3.get(j).getIndexCode().equals("10068")) {
+                                                            reportIndexResult.setIndexData(String.valueOf(list11.size()));
+                                                            if (list11.size() == 0) {
+                                                                reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else if (list11.size() == 1) {
+                                                                reportIndexResult.setIndexScore(-20 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-20 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else if (list11.size() == 2) {
+                                                                reportIndexResult.setIndexScore(-40 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-40 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else if (list11.size() == 3) {
+                                                                reportIndexResult.setIndexScore(-80 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-80 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            }
+                                                            reportIndexResult.setScoreType(1);
+                                                        } else if (indexConfig3.get(j).getIndexCode().equals("10069")) {
+                                                            reportIndexResult.setIndexData(String.valueOf(list12.size()));
+                                                            if (list12.size() < 5) {
+                                                                reportIndexResult.setIndexScore(-25 * list12.size() * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-25 * list12.size() * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            } else {
+                                                                reportIndexResult.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight());
+                                                                reportIndexResult2.setIndexScore(-100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            }
+                                                            reportIndexResult.setScoreType(1);
+                                                        } else if (indexConfig3.get(j).getIndexCode().equals("10070")) {
+                                                            reportIndexResult.setScoreType(0);
+                                                            reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                            reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                    if (indexConfig3.get(j).getSeniorIndex().equals(22) || indexConfig3.get(j).getSeniorIndex().equals(23)) {
+                                                        if (indexConfig3.get(j).getIndexCode().equals("10071")) {
+                                                            reportIndexResult.setIndexData(String.valueOf(list13.size()));
+                                                            reportIndexResult.setIndexScore(-100 * list13.size() * indexConfig3.get(j).getIndexWeight());
+                                                            reportIndexResult2.setIndexScore(-100 * list13.size() * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            reportIndexResult.setScoreType(1);
+                                                        } else {
+                                                            reportIndexResult.setIndexScore(0 * indexConfig3.get(j).getIndexWeight());
+                                                            reportIndexResult2.setIndexScore(0 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
+                                                            reportIndexResult.setScoreType(0);
+                                                        }
+                                                        this.save(reportIndexResult);
+                                                    }
+                                                }
+                                            }
+                                        }
+                                        this.save(reportIndexResult2);
+                                        if (indexConfig1.get(l).getId().equals(5)||indexConfig1.get(l).getId().equals(6)){
+                                            if (reportIndexResult1.getIndexScore()!=null){
+                                                reportIndexResult1.setIndexScore(reportIndexResult2.getIndexScore()* indexConfig1.get(l).getIndexWeight()+reportIndexResult1.getIndexScore());
+                                            }else {
+                                                reportIndexResult1.setIndexScore(100*indexConfig1.get(l).getIndexWeight()+reportIndexResult2.getIndexScore()* indexConfig1.get(l).getIndexWeight());
+                                            }
+                                        }else {
+                                            if (reportIndexResult1.getIndexScore()!=null){
+                                                reportIndexResult1.setIndexScore(reportIndexResult2.getIndexScore()* indexConfig1.get(l).getIndexWeight()+reportIndexResult1.getIndexScore());
+                                            }else {
+                                                reportIndexResult1.setIndexScore(reportIndexResult2.getIndexScore()* indexConfig1.get(l).getIndexWeight());
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                            this.save(reportIndexResult1);
+                            if (reportResult.getOverallScore()!=null){
+                                reportResult.setOverallScore(reportIndexResult1.getIndexScore()+reportResult.getOverallScore());
+                            }else {
+                                reportResult.setOverallScore(reportIndexResult1.getIndexScore());
+                            }
+                        }
+                    }
+                    if (reportResult.getOverallScore()!=null){
+                        if (reportResult.getOverallScore()>=90){
+                            demReportDataVo.setOverallRating("低风险");
+                        }else if (reportResult.getOverallScore()>=80){
+                            demReportDataVo.setOverallRating("一般风险");
+                        }else if (reportResult.getOverallScore()>=60){
+                            demReportDataVo.setOverallRating("较高风险");
+                        }else {
+                            demReportDataVo.setOverallRating("高风险");
+                        }
+                    }
+                    this.generatePDF(document,demReportDataVo);
+                    document.close();
+                    reportResultService.save(reportResult);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    // 定义全局的字体静态变量
+    private static Font titlefont;
+    private static Font headfont;
+    private static Font keyfont;
+    private static Font textfont;
+    // 最大宽度
+    private static int maxWidth = 520;
+    // 静态代码块
+    static {
+        try {
+// 不同字体(这里定义为同一种字体:包含不同字号、不同style)
+            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+            titlefont = new Font(bfChinese, 16, Font.BOLD);
+            headfont = new Font(bfChinese, 14, Font.BOLD);
+            keyfont = new Font(bfChinese, 10, Font.BOLD);
+            textfont = new Font(bfChinese, 10, Font.NORMAL);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    // 生成PDF文件
+    public void generatePDF(Document document,DemReportDataVo demReportDataVo) throws Exception {
+
+// 段落
+        Paragraph paragraph = new Paragraph(demReportDataVo.getCompanyName()+"消防安全数字化管理综合分析报告", titlefont);
+        paragraph.setAlignment(1); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph.setIndentationLeft(12); //设置左缩进
+        paragraph.setIndentationRight(12); //设置右缩进
+        paragraph.setFirstLineIndent(24); //设置首行缩进
+        paragraph.setLeading(20f); //行间距
+        paragraph.setSpacingBefore(5f); //设置段落上空白
+        paragraph.setSpacingAfter(20f); //设置段落下空白
+
+        Paragraph paragraph1 = new Paragraph(demReportDataVo.getCompanyName()+":", textfont);
+        paragraph1.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+
+        Paragraph paragraph2 =
+                new Paragraph("本次综合分析是通过贵单位在"+demReportDataVo.getLastMonthFirstTime()+"-"+demReportDataVo.getLastMonthEndTime()+
+                "日期间消防设施状况、消防自主管理状况、监督执法情况、火灾风险指数和建筑整体指数进行综合评估,现将综合分析报告如下:", textfont);
+        paragraph2.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph2.setFirstLineIndent(24); //设置首行缩进
+        paragraph2.setLeading(20f); //行间距
+        paragraph2.setSpacingBefore(5f); //设置段落上空白
+        paragraph2.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph3 = new Paragraph("一、整体评价", headfont);
+        paragraph3.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph3.setFirstLineIndent(24); //设置首行缩进
+
+        Paragraph paragraph4 = new Paragraph("贵单位在期间消防安全管理指数评价为:"+demReportDataVo.getOverallRating(), textfont);
+        paragraph4.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph4.setFirstLineIndent(24); //设置首行缩进
+        paragraph4.setLeading(20f); //行间距
+        paragraph4.setSpacingBefore(5f); //设置段落上空白
+        paragraph4.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph5 = new Paragraph("二、测评范围", headfont);
+        paragraph5.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph5.setFirstLineIndent(24); //设置首行缩进
+
+        Paragraph paragraph6 = new Paragraph("包含消防设施系统(火灾报警系统;消防水系统;防排烟系统;维保单位履职情况等  如实显示,没有的就不显示)、消防自主管理状况(组织制度落实情况;日常值班、巡检情况;预案、培训落实情况;微站实体化运行情况)、监督执法情况(双随机检查情况;处罚情况;投诉举报情况;重大隐患挂牌情况)和火灾风险指数(当年度火灾情况;上年度火灾情况)等项目进行综合测评。", textfont);
+        paragraph6.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph6.setFirstLineIndent(24); //设置首行缩进
+        paragraph6.setLeading(20f); //行间距
+        paragraph6.setSpacingBefore(5f); //设置段落上空白
+        paragraph6.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph7 = new Paragraph("三、主要风险及问题", headfont);
+        paragraph7.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph7.setFirstLineIndent(24); //设置首行缩进
+
+        Paragraph paragraph8 = new Paragraph("(一)消防设施问题", textfont);
+        paragraph8.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph8.setFirstLineIndent(24); //设置首行缩进
+        paragraph8.setLeading(20f); //行间距
+        paragraph8.setSpacingBefore(5f); //设置段落上空白
+        paragraph8.setSpacingAfter(10f); //设置段落下空白
+
+        String fireText = "暂无问题";
+        if (demReportDataVo.getFireDeviceNum().equals(0)){
+            fireText = "暂无数据";
+        }else {
+            if (demReportDataVo.getFireOnlineRate()<0.95 && demReportDataVo.getFireFaultRate()>0.05 && demReportDataVo.getFireUnhandled()>0){
+                fireText="在线率低于95%,故障率高于5%,存在未处理告警"+demReportDataVo.getFireUnhandled()+"条;";
+            }else if (demReportDataVo.getFireOnlineRate()<0.95 && demReportDataVo.getFireFaultRate()>0.05){
+                fireText="在线率低于95%,故障率高于5%;";
+            }else if (demReportDataVo.getFireOnlineRate()<0.95 && demReportDataVo.getFireUnhandled()>0){
+                fireText="在线率低于95%,存在未处理告警"+demReportDataVo.getFireUnhandled()+"条;";
+            }else if (demReportDataVo.getFireFaultRate()>0.05 && demReportDataVo.getFireUnhandled()>0){
+                fireText="故障率高于5%,存在未处理告警"+demReportDataVo.getFireUnhandled()+"条;";
+            }else if (demReportDataVo.getFireOnlineRate()<0.95){
+                fireText="在线率低于95%;";
+            }else if (demReportDataVo.getFireFaultRate()>0.05){
+                fireText="故障率高于5%;";
+            }else if (demReportDataVo.getFireUnhandled()>0){
+                fireText="存在未处理告警"+demReportDataVo.getFireUnhandled()+"条;";
+            }
+        }
+        Paragraph paragraph9 = new Paragraph("火灾报警系统:"+fireText, textfont);
+        paragraph9.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph9.setFirstLineIndent(24); //设置首行缩进
+        paragraph9.setLeading(20f); //行间距
+        paragraph9.setSpacingBefore(5f); //设置段落上空白
+        paragraph9.setSpacingAfter(10f); //设置段落下空白
+
+        String waterText = "暂无问题";
+        if (demReportDataVo.getWaterDeviceNum().equals(0)){
+            waterText = "暂无数据";
+        }else {
+            if (demReportDataVo.getWaterOnlineRate()<0.95 && demReportDataVo.getWaterFaultRate()>0.05 && demReportDataVo.getWaterUnhandled()>0){
+                waterText="在线率低于95%,故障率高于5%,存在未处理告警"+demReportDataVo.getWaterUnhandled()+"条;";
+            }else if (demReportDataVo.getWaterOnlineRate()<0.95 && demReportDataVo.getWaterFaultRate()>0.05){
+                waterText="在线率低于95%,故障率高于5%;";
+            }else if (demReportDataVo.getWaterOnlineRate()<0.95 && demReportDataVo.getWaterUnhandled()>0){
+                waterText="在线率低于95%,存在未处理告警"+demReportDataVo.getWaterUnhandled()+"条;";
+            }else if (demReportDataVo.getWaterFaultRate()>0.05 && demReportDataVo.getWaterUnhandled()>0){
+                waterText="故障率高于5%,存在未处理告警"+demReportDataVo.getWaterUnhandled()+"条;";
+            }else if (demReportDataVo.getWaterOnlineRate()<0.95){
+                waterText="在线率低于95%;";
+            }else if (demReportDataVo.getWaterFaultRate()>0.05){
+                waterText="故障率高于5%;";
+            }else if (demReportDataVo.getWaterUnhandled()>0){
+                waterText="存在未处理告警"+demReportDataVo.getWaterUnhandled()+"条;";
+            }
+        }
+
+        Paragraph paragraph26 = new Paragraph("消防水系统:"+waterText, textfont);
+        paragraph26.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph26.setFirstLineIndent(24); //设置首行缩进
+        paragraph26.setLeading(20f); //行间距
+        paragraph26.setSpacingBefore(5f); //设置段落上空白
+        paragraph26.setSpacingAfter(10f); //设置段落下空白
+
+        String smokeText = "暂无问题";
+        if (demReportDataVo.getSmokeDeviceNum().equals(0)){
+            smokeText="暂无数据";
+        }else {
+            if (demReportDataVo.getSmokeOnlineRate()<0.95 && demReportDataVo.getSmokeFaultRate()>0.05 && demReportDataVo.getSmokeUnhandled()>0){
+                smokeText="在线率低于95%,故障率高于5%,存在未处理告警"+demReportDataVo.getSmokeUnhandled()+"条;";
+            }else if (demReportDataVo.getSmokeOnlineRate()<0.95 && demReportDataVo.getSmokeFaultRate()>0.05){
+                smokeText="在线率低于95%,故障率高于5%;";
+            }else if (demReportDataVo.getSmokeOnlineRate()<0.95 && demReportDataVo.getSmokeUnhandled()>0){
+                smokeText="在线率低于95%,存在未处理告警"+demReportDataVo.getSmokeUnhandled()+"条;";
+            }else if (demReportDataVo.getSmokeFaultRate()>0.05 && demReportDataVo.getSmokeUnhandled()>0){
+                smokeText="故障率高于5%,存在未处理告警"+demReportDataVo.getSmokeUnhandled()+"条;";
+            }else if (demReportDataVo.getSmokeOnlineRate()<0.95){
+                smokeText="在线率低于95%;";
+            }else if (demReportDataVo.getSmokeFaultRate()>0.05){
+                smokeText="故障率高于5%;";
+            }else if (demReportDataVo.getSmokeUnhandled()>0){
+                smokeText="存在未处理告警"+demReportDataVo.getSmokeUnhandled()+"条;";
+            }
+        }
+
+        Paragraph paragraph10 = new Paragraph("防排烟系统:"+smokeText, textfont);
+        paragraph10.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph10.setFirstLineIndent(24); //设置首行缩进
+        paragraph10.setLeading(20f); //行间距
+        paragraph10.setSpacingBefore(5f); //设置段落上空白
+        paragraph10.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph11 = new Paragraph("维保单位履职情况:暂无数据。", textfont);
+        paragraph11.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph11.setFirstLineIndent(24); //设置首行缩进
+        paragraph11.setLeading(20f); //行间距
+        paragraph11.setSpacingBefore(5f); //设置段落上空白
+        paragraph11.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph12 = new Paragraph("(二)消防自主管理问题", textfont);
+        paragraph12.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph12.setFirstLineIndent(24); //设置首行缩进
+        paragraph12.setLeading(20f); //行间距
+        paragraph12.setSpacingBefore(5f); //设置段落上空白
+        paragraph12.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph13 = new Paragraph("组织制度落实情况:暂无数据;", textfont);
+        paragraph13.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph13.setFirstLineIndent(24); //设置首行缩进
+        paragraph13.setLeading(20f); //行间距
+        paragraph13.setSpacingBefore(5f); //设置段落上空白
+        paragraph13.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph14 = new Paragraph("消防档案:暂无数据;", textfont);
+        paragraph14.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph14.setFirstLineIndent(24); //设置首行缩进
+        paragraph14.setLeading(20f); //行间距
+        paragraph14.setSpacingBefore(5f); //设置段落上空白
+        paragraph14.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph15 = new Paragraph("消防重点部位:暂无数据。", textfont);
+        paragraph15.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph15.setFirstLineIndent(24); //设置首行缩进
+        paragraph15.setLeading(20f); //行间距
+        paragraph15.setSpacingBefore(5f); //设置段落上空白
+        paragraph15.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph16 = new Paragraph("(三)监督执法情况", textfont);
+        paragraph16.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph16.setFirstLineIndent(24); //设置首行缩进
+        paragraph16.setLeading(20f); //行间距
+        paragraph16.setSpacingBefore(5f); //设置段落上空白
+        paragraph16.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph17 =
+                new Paragraph("上述时间段内监督检查发现隐患"+demReportDataVo.getDoubleRandomNum()+"处,"+"发现处罚"+demReportDataVo.getPunishNum()+
+                        "起,"+"发现举报投诉"+demReportDataVo.getReportComplaintNum()+"起;",
+                textfont);
+        paragraph17.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph17.setFirstLineIndent(24); //设置首行缩进
+        paragraph17.setLeading(20f); //行间距
+        paragraph17.setSpacingBefore(5f); //设置段落上空白
+        paragraph17.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph18 = new Paragraph("(四)火灾情况", textfont);
+        paragraph18.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph18.setFirstLineIndent(24); //设置首行缩进
+        paragraph18.setLeading(20f); //行间距
+        paragraph18.setSpacingBefore(5f); //设置段落上空白
+        paragraph18.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph19 =
+                new Paragraph("上一年度发生"+demReportDataVo.getGeneralFireNum()+"起火灾,造成"+demReportDataVo.getMajorFireNum()+
+                "名人员伤亡,造成直接财产损失" +demReportDataVo.getFireDisasterNum()+
+                "万元。", textfont);
+        paragraph19.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph19.setFirstLineIndent(24); //设置首行缩进
+        paragraph19.setLeading(20f); //行间距
+        paragraph19.setSpacingBefore(5f); //设置段落上空白
+        paragraph19.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph20 = new Paragraph("四、防范对策及建议", headfont);
+        paragraph20.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph20.setFirstLineIndent(24); //设置首行缩进
+
+        Paragraph paragraph21 = new Paragraph("1、建议联系消防设施维保单位对本单位开展一次全面维护保养,对损坏、故障的设施要及时修复,确保消防设施完整好用;", textfont);
+        paragraph21.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph21.setFirstLineIndent(24); //设置首行缩进
+        paragraph21.setLeading(20f); //行间距
+        paragraph21.setSpacingBefore(5f); //设置段落上空白
+        paragraph21.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph22 = new Paragraph("2、建议对照重点单位消防档案管理办法,进一步完善员工安全培训记录、明确消防重点部位等内容;", textfont);
+        paragraph22.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph22.setFirstLineIndent(24); //设置首行缩进
+        paragraph22.setLeading(20f); //行间距
+        paragraph22.setSpacingBefore(5f); //设置段落上空白
+        paragraph22.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph23 = new Paragraph("3、建议对单位重点部位开展一轮全面自查,落实值班、巡查以及应急处置工作职责,确保“实名制”管理工作制度落实到位;", textfont);
+        paragraph23.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph23.setFirstLineIndent(24); //设置首行缩进
+        paragraph23.setLeading(20f); //行间距
+        paragraph23.setSpacingBefore(5f); //设置段落上空白
+        paragraph23.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph24 = new Paragraph("4、建议充分利用场所自身有利条件,在电子屏、明显位置循环播放宣传视频、张贴海报等形式加强消防安全提示。定期对单位员工开展消防安全教育和重点岗位专题培训,持续提高员工消防安全“一懂三会”基本能力。", textfont);
+        paragraph24.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph24.setFirstLineIndent(24); //设置首行缩进
+        paragraph24.setLeading(20f); //行间距
+        paragraph24.setSpacingBefore(5f); //设置段落上空白
+        paragraph24.setSpacingAfter(10f); //设置段落下空白
+
+        Paragraph paragraph25 = new Paragraph("五、具体问题清单", headfont);
+        paragraph25.setAlignment(0); //设置文字居中 0靠左 1,居中 2,靠右
+        paragraph25.setFirstLineIndent(24); //设置首行缩进
+
+// 直线
+//        Paragraph p1 = new Paragraph();
+//        p1.add(new Chunk(new LineSeparator()));
+
+// 点线
+//        Paragraph p2 = new Paragraph();
+//        p2.add(new Chunk(new DottedLineSeparator()));
+
+// 超链接
+//        Anchor anchor = new Anchor("baidu");
+//        anchor.setReference("www.baidu.com");
+
+// 定位
+//        Anchor gotoP = new Anchor("goto");
+//        gotoP.setReference("#top");
+
+// 添加图片
+        Image image = Image.getInstance("https://img-blog.csdn.net/20180801174617455?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzg0ODcxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70");
+        image.setAlignment(Image.ALIGN_CENTER);
+        image.scalePercent(40); //依照比例缩放
+
+// 表格
+        PdfPTable table = createTable(new float[] { 40, 120, 120, 120, 80, 80 });
+        table.addCell(createCell("美好的一天", headfont, Element.ALIGN_LEFT, 6, false));
+        table.addCell(createCell("早上9:00", keyfont, Element.ALIGN_CENTER));
+        table.addCell(createCell("中午11:00", keyfont, Element.ALIGN_CENTER));
+        table.addCell(createCell("中午13:00", keyfont, Element.ALIGN_CENTER));
+        table.addCell(createCell("下午15:00", keyfont, Element.ALIGN_CENTER));
+        table.addCell(createCell("下午17:00", keyfont, Element.ALIGN_CENTER));
+        table.addCell(createCell("晚上19:00", keyfont, Element.ALIGN_CENTER));
+        Integer totalQuantity = 0;
+        for (int i = 0; i < 5; i++) {
+            table.addCell(createCell("起床", textfont));
+            table.addCell(createCell("吃午饭", textfont));
+            table.addCell(createCell("午休", textfont));
+            table.addCell(createCell("下午茶", textfont));
+            table.addCell(createCell("回家", textfont));
+            table.addCell(createCell("吃晚饭", textfont));
+            totalQuantity ++;
+        }
+        table.addCell(createCell("总计", keyfont));
+        table.addCell(createCell("", textfont));
+        table.addCell(createCell("", textfont));
+        table.addCell(createCell("", textfont));
+        table.addCell(createCell(String.valueOf(totalQuantity) + "件事", textfont));
+        table.addCell(createCell("", textfont));
+
+        document.add(paragraph);
+        document.add(paragraph1);
+        document.add(paragraph2);
+        document.add(paragraph3);
+        document.add(paragraph4);
+        document.add(paragraph5);
+        document.add(paragraph6);
+        document.add(paragraph7);
+        document.add(paragraph8);
+        document.add(paragraph9);
+        document.add(paragraph26);
+        document.add(paragraph10);
+        document.add(paragraph11);
+        document.add(paragraph12);
+        document.add(paragraph13);
+        document.add(paragraph14);
+        document.add(paragraph15);
+        document.add(paragraph16);
+        document.add(paragraph17);
+        document.add(paragraph18);
+        document.add(paragraph19);
+        document.add(paragraph20);
+        document.add(paragraph21);
+        document.add(paragraph22);
+        document.add(paragraph23);
+        document.add(paragraph24);
+        document.add(paragraph25);
+//        document.add(anchor);
+//        document.add(p2);
+//        document.add(gotoP);
+//        document.add(p1);
+        document.add(table);
+//        document.add(image);
+    }
+
+
+/**------------------------创建表格单元格的方法start----------------------------*/
+    /**
+     * 创建单元格(指定字体)
+     * @param value
+     * @param font
+     * @return
+     */
+    public PdfPCell createCell(String value, Font font) {
+        PdfPCell cell = new PdfPCell();
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+        cell.setPhrase(new Phrase(value, font));
+        return cell;
+    }
+    /**
+     * 创建单元格(指定字体、水平..)
+     * @param value
+     * @param font
+     * @param align
+     * @return
+     */
+    public PdfPCell createCell(String value, Font font, int align) {
+        PdfPCell cell = new PdfPCell();
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(align);
+        cell.setPhrase(new Phrase(value, font));
+        return cell;
+    }
+    /**
+     * 创建单元格(指定字体、水平居..、单元格跨x列合并)
+     * @param value
+     * @param font
+     * @param align
+     * @param colspan
+     * @return
+     */
+    public PdfPCell createCell(String value, Font font, int align, int colspan) {
+        PdfPCell cell = new PdfPCell();
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(align);
+        cell.setColspan(colspan);
+        cell.setPhrase(new Phrase(value, font));
+        return cell;
+    }
+    /**
+     * 创建单元格(指定字体、水平居..、单元格跨x列合并、设置单元格内边距)
+     * @param value
+     * @param font
+     * @param align
+     * @param colspan
+     * @param boderFlag
+     * @return
+     */
+    public PdfPCell createCell(String value, Font font, int align, int colspan, boolean boderFlag) {
+        PdfPCell cell = new PdfPCell();
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(align);
+        cell.setColspan(colspan);
+        cell.setPhrase(new Phrase(value, font));
+        cell.setPadding(3.0f);
+        if (!boderFlag) {
+            cell.setBorder(0);
+            cell.setPaddingTop(15.0f);
+            cell.setPaddingBottom(8.0f);
+        } else if (boderFlag) {
+            cell.setBorder(0);
+            cell.setPaddingTop(0.0f);
+            cell.setPaddingBottom(15.0f);
+        }
+        return cell;
+    }
+    /**
+     * 创建单元格(指定字体、水平..、边框宽度:0表示无边框、内边距)
+     * @param value
+     * @param font
+     * @param align
+     * @param borderWidth
+     * @param paddingSize
+     * @param flag
+     * @return
+     */
+    public PdfPCell createCell(String value, Font font, int align, float[] borderWidth, float[] paddingSize, boolean flag) {
+        PdfPCell cell = new PdfPCell();
+        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+        cell.setHorizontalAlignment(align);
+        cell.setPhrase(new Phrase(value, font));
+        cell.setBorderWidthLeft(borderWidth[0]);
+        cell.setBorderWidthRight(borderWidth[1]);
+        cell.setBorderWidthTop(borderWidth[2]);
+        cell.setBorderWidthBottom(borderWidth[3]);
+        cell.setPaddingTop(paddingSize[0]);
+        cell.setPaddingBottom(paddingSize[1]);
+        if (flag) {
+            cell.setColspan(2);
+        }
+        return cell;
+    }
+/**------------------------创建表格单元格的方法end----------------------------*/
+
+
+/**--------------------------创建表格的方法start------------------- ---------*/
+    /**
+     * 创建默认列宽,指定列数、水平(居中、右、左)的表格
+     * @param colNumber
+     * @param align
+     * @return
+     */
+    public PdfPTable createTable(int colNumber, int align) {
+        PdfPTable table = new PdfPTable(colNumber);
+        try {
+            table.setTotalWidth(maxWidth);
+            table.setLockedWidth(true);
+            table.setHorizontalAlignment(align);
+            table.getDefaultCell().setBorder(1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return table;
+    }
+    /**
+     * 创建指定列宽、列数的表格
+     * @param widths
+     * @return
+     */
+    public PdfPTable createTable(float[] widths) {
+        PdfPTable table = new PdfPTable(widths);
+        try {
+            table.setTotalWidth(maxWidth);
+            table.setLockedWidth(true);
+            table.setHorizontalAlignment(Element.ALIGN_CENTER);
+            table.getDefaultCell().setBorder(1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return table;
+    }
+    /**
+     * 创建空白的表格
+     * @return
+     */
+    public PdfPTable createBlankTable() {
+        PdfPTable table = new PdfPTable(1);
+        table.getDefaultCell().setBorder(0);
+        table.addCell(createCell("", keyfont));
+        table.setSpacingAfter(20.0f);
+        table.setSpacingBefore(20.0f);
+        return table;
+    }
+
+    @Override
+    public List<IndexResultVo> indexResultSelect(Integer id, String createDate) {
+        List<IndexResultVo> list = new ArrayList<>();
+        List<IndexResult1Vo> list2 = new ArrayList<>();
+        LambdaQueryWrapper<ReportResult> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(ReportResult::getId,ReportResult::getObjectId,ReportResult::getCreateDate,
+                ReportResult::getOverallScore)
+                .eq(ReportResult::getId,id);
+        List<ReportResult> list1 = reportResultService.list(queryWrapper);
+        IndexResultVo indexResultVo = new IndexResultVo();
+        if (CollectionUtils.isNotEmpty(list1)) {
+            indexResultVo.setCreateDate(list1.get(0).getCreateDate());
+            indexResultVo.setId(list1.get(0).getId());
+            indexResultVo.setOverallScore(list1.get(0).getOverallScore());
+            LambdaQueryWrapper<ReportIndexResult> queryWrapper1 = Wrappers.lambdaQuery();
+            queryWrapper1
+                    .eq(ReportIndexResult::getObjectId,list1.get(0).getObjectId())
+                    .eq(ReportIndexResult::getCreateDate,list1.get(0).getCreateDate());
+            List<ReportIndexResult> list3 = this.list(queryWrapper1);
+            if (CollectionUtils.isNotEmpty(list3)) {
+                List<String> indexIdList = new ArrayList<>();
+                for (int i = 0; i < list3.size(); i++) {
+                    indexIdList.add(list3.get(i).getIndexCode());
+                }
+                LambdaQueryWrapper<ReportIndexConfig> queryWrapper2 = Wrappers.lambdaQuery();
+                queryWrapper2
+                        .in(ReportIndexConfig::getIndexCode,indexIdList);
+//                        .eq(ReportIndexConfig::getIndexGrade,1);
+                List<ReportIndexConfig> list4 = reportIndexConfigService.list(queryWrapper2);
+                for (int j = 0; j < list3.size(); j++) {
+                    IndexResult1Vo indexResult1Vo = new IndexResult1Vo();
+                    if (CollectionUtils.isNotEmpty(list4)){
+                        for (int k = 0; k < list4.size(); k++) {
+                            if (list3.get(j).getIndexCode().equals(list4.get(k).getIndexCode()) && list4.get(k).getIndexGrade().equals(1)){
+                                indexResult1Vo.setId(list3.get(j).getId());
+                                indexResult1Vo.setIndexData(list3.get(j).getIndexData());
+                                indexResult1Vo.setIndexName(list3.get(j).getIndexName());
+                                indexResult1Vo.setIndexScore(list3.get(j).getIndexScore());
+                                indexResult1Vo.setIndexWeight(list4.get(k).getIndexWeight());
+                                indexResult1Vo.setScoreDesc(list3.get(j).getScoreDesc());
+                                indexResult1Vo.setScoreType(list3.get(j).getScoreType());
+                                List<IndexResult2Vo> list5 = new ArrayList<>();
+                                for (int m = 0; m < list4.size(); m++) {
+                                    if (list4.get(m).getSeniorIndex().equals(list4.get(k).getId()) && list4.get(m).getIndexGrade().equals(2)) {
+                                        for (int l = 0; l < list3.size(); l++) {
+                                            if (list3.get(l).getIndexCode().equals(list4.get(m).getIndexCode())) {
+                                                IndexResult2Vo indexResult2Vo = new IndexResult2Vo();
+                                                indexResult2Vo.setId(list3.get(l).getId());
+                                                indexResult2Vo.setIndexData(list3.get(l).getIndexData());
+                                                indexResult2Vo.setIndexName(list3.get(l).getIndexName());
+                                                indexResult2Vo.setIndexScore(list3.get(l).getIndexScore());
+                                                indexResult2Vo.setIndexWeight(list4.get(m).getIndexWeight());
+                                                indexResult2Vo.setScoreDesc(list3.get(l).getScoreDesc());
+                                                indexResult2Vo.setScoreType(list3.get(l).getScoreType());
+                                                List<IndexResult3Vo> list6 = new ArrayList<>();
+                                                for (int o = 0; o < list4.size(); o++) {
+                                                    if (list4.get(o).getSeniorIndex().equals(list4.get(m).getId()) && list4.get(o).getIndexGrade().equals(3)) {
+                                                        for (int n = 0; n < list3.size(); n++) {
+                                                            if (list3.get(n).getIndexCode().equals(list4.get(o).getIndexCode())) {
+                                                                IndexResult3Vo indexResult3Vo = new IndexResult3Vo();
+                                                                indexResult3Vo.setId(list3.get(n).getId());
+                                                                indexResult3Vo.setIndexData(list3.get(n).getIndexData());
+                                                                indexResult3Vo.setIndexName(list3.get(n).getIndexName());
+                                                                indexResult3Vo.setIndexScore(list3.get(n).getIndexScore());
+                                                                indexResult3Vo.setIndexWeight(list4.get(o).getIndexWeight());
+                                                                indexResult3Vo.setScoreDesc(list3.get(n).getScoreDesc());
+                                                                indexResult3Vo.setScoreType(list3.get(n).getScoreType());
+                                                                list6.add(indexResult3Vo);
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                                indexResult2Vo.setIndexResult1List(list6);
+                                                list5.add(indexResult2Vo);
+                                            }
+                                        }
+                                    }
+                                }
+                                indexResult1Vo.setIndexResult1List(list5);
+                                list2.add(indexResult1Vo);
+                            }
+                        }
+                    }
+                }
+            }
+            indexResultVo.setIndexResult1List(list2);
+            list.add(indexResultVo);
+        }
+
+        return list;
+    }
+
+    @Override
+    public List<Object> reportContrast(ReportResultVO reportResultVO) {
+        List<Object> list = new ArrayList<>();
+        List<Object> list2 = new ArrayList<>();
+        List<Object> list3 = new ArrayList<>();
+        LambdaQueryWrapper<ReportResult> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(ReportResult::getId,ReportResult::getObjectType,ReportResult::getObjectId,
+                ReportResult::getReportObject,
+                ReportResult::getCreateDate, ReportResult::getOverallScore)
+                .in(ReportResult::getId,reportResultVO.getReportId());
+        List<ReportResult> list1 = reportResultService.list(queryWrapper);
+        Map<String, Object> map1 = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(list1)) {
+            for (int i = 0; i < list1.size(); i++) {
+                List<Object> list8 = new ArrayList<>();
+                LambdaQueryWrapper<ReportIndexResult> queryWrapper1 = Wrappers.lambdaQuery();
+                queryWrapper1
+                        .eq(ReportIndexResult::getObjectId,list1.get(i).getObjectId())
+                        .eq(ReportIndexResult::getCreateDate,list1.get(i).getCreateDate());
+                List<ReportIndexResult> list4 = this.list(queryWrapper1);
+                List<String> indexIdList = new ArrayList<>();
+                if (CollectionUtils.isNotEmpty(list4)) {
+                    for (int a = 0; a < list4.size(); a++) {
+                        indexIdList.add(list4.get(a).getIndexCode());
+                    }
+                    LambdaQueryWrapper<ReportIndexConfig> queryWrapper2 = Wrappers.lambdaQuery();
+                    queryWrapper2
+                            .in(ReportIndexConfig::getIndexCode, indexIdList);
+                    List<ReportIndexConfig> list5 = reportIndexConfigService.list(queryWrapper2);
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("objectType", list1.get(i).getObjectType().equals(1)?"重点单位":"其他");
+                    map.put("reportObject", list1.get(i).getReportObject());
+                    map.put("overallScore", list1.get(i).getOverallScore());
+                    map.put("createDate", list1.get(i).getCreateDate());
+                    map.put("associationField", "indexScore" + i);
+                    list2.add(map);
+                    for (int j = 0; j < list4.size(); j++) {
+                        if (CollectionUtils.isNotEmpty(list5)) {
+                            for (int k = 0; k < list5.size(); k++) {
+                                if (list4.get(j).getIndexCode().equals(list5.get(k).getIndexCode()) && list5.get(k).getIndexGrade().equals(1)) {
+                                    Map<String, Object> map2 = new HashMap<>();
+                                    map2.put("id", list5.get(k).getId());
+                                    map2.put("indexName", list4.get(j).getIndexName());
+                                    map2.put("indexWeight", list5.get(k).getIndexWeight());
+                                    map2.put("scoreDesc", list4.get(j).getScoreDesc());
+                                    map2.put("indexScore", list4.get(j).getIndexScore());
+                                    List<Object> list6 = new ArrayList<>();
+                                    for (int m = 0; m < list5.size(); m++) {
+                                        if (list5.get(m).getSeniorIndex().equals(list5.get(k).getId()) && list5.get(m).getIndexGrade().equals(2)) {
+                                            for (int l = 0; l < list4.size(); l++) {
+                                                if (list4.get(l).getIndexCode().equals(list5.get(m).getIndexCode())) {
+                                                    Map<String, Object> map3 = new HashMap<>();
+                                                    map3.put("id", list5.get(m).getId());
+                                                    map3.put("indexName", list4.get(l).getIndexName());
+                                                    map3.put("indexWeight", list5.get(m).getIndexWeight());
+                                                    map3.put("scoreDesc", list4.get(l).getScoreDesc());
+                                                    map3.put("indexScore", list4.get(l).getIndexScore());
+                                                    List<Object> list7 = new ArrayList<>();
+                                                    for (int o = 0; o < list5.size(); o++) {
+                                                        if (list5.get(o).getSeniorIndex().equals(list5.get(m).getId()) && list5.get(o).getIndexGrade().equals(3)) {
+                                                            for (int n = 0; n < list4.size(); n++) {
+                                                                if (list4.get(n).getIndexCode().equals(list5.get(o).getIndexCode())) {
+                                                                    Map<String, Object> map4 = new HashMap<>();
+                                                                    map4.put("id", list5.get(o).getId());
+                                                                    map4.put("indexName", list4.get(l).getIndexName());
+                                                                    map4.put("indexWeight", list5.get(m).getIndexWeight());
+                                                                    map4.put("scoreDesc", list4.get(l).getScoreDesc());
+                                                                    map4.put("indexScore", list4.get(l).getIndexScore());
+                                                                    list7.add(map4);
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                    map3.put("children",list7);
+                                                    list6.add(map3);
+                                                }
+                                            }
+                                        }
+                                    }
+                                    map2.put("children",list6);
+                                    list8.add(map2);
+                                }
+                            }
+                        }
+                    }
+
+                }
+                map1.put("indexScore"+i, list8);
+            }
+            map1.put("objectInfo", list2);
+        }
+        list.add(map1);
+        return list;
+    }
+}

+ 74 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportResultServiceImpl.java

@@ -0,0 +1,74 @@
+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.StringUtils;
+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.BaseCompanyPerson;
+import com.usky.fire.domain.ReportConfig;
+import com.usky.fire.domain.ReportResult;
+import com.usky.fire.mapper.ReportResultMapper;
+import com.usky.fire.service.ReportConfigService;
+import com.usky.fire.service.ReportResultService;
+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-06-28
+ */
+@Service
+public class ReportResultServiceImpl extends AbstractCrudService<ReportResultMapper, ReportResult> implements ReportResultService {
+    @Autowired
+    private ReportConfigService reportConfigService;
+
+    @Override
+    public CommonPage<ReportResult> reportResultList(Integer companyId, String sourceType, Integer pageNum,
+                                                     Integer pageSize) {
+        IPage<ReportResult> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<ReportResult> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ReportResult::getObjectId, companyId)
+                    .orderByDesc(ReportResult::getId);
+        page = this.page(page, queryWrapper);
+        return ToCommonPage(page);
+    }
+    @Override
+    public CommonPage<Object> newReportResultList(String reportObject, Integer pageNum, Integer pageSize) {
+        List<Object> list = new ArrayList<>();
+        IPage<ReportResult> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<ReportResult> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(reportObject),ReportResult::getReportObject, reportObject)
+                .orderByDesc(ReportResult::getId);
+        page = this.page(page, queryWrapper);
+        LambdaQueryWrapper<ReportConfig> queryWrapper1 = Wrappers.lambdaQuery();
+        List<ReportConfig> list1 = reportConfigService.list(queryWrapper1);
+        if (page.getTotal() > 0) {
+            for (int i = 0; i < page.getRecords().size(); i++) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("id", page.getRecords().get(i).getId());
+                map.put("reportObject", page.getRecords().get(i).getReportObject());
+                map.put("overallScore", page.getRecords().get(i).getOverallScore());
+                map.put("createDate", page.getRecords().get(i).getCreateDate());
+                for (int j = 0; j < list1.size(); j++){
+                    if (page.getRecords().get(i).getConfigId().equals(list1.get(j).getId())){
+                        map.put("reportName", list1.get(j).getReportName());
+                    }
+                }
+                list.add(map);
+            }
+        }
+        return new CommonPage<>(list, page.getTotal(), pageSize, pageNum);
+    }
+}

+ 0 - 4
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/BaseGgpFacilityVO.java

@@ -1,9 +1,5 @@
 package com.usky.fire.service.vo;
 
-import com.usky.fire.domain.BaseBuild;
-import com.usky.fire.domain.BaseCompany;
-import com.usky.fire.domain.BaseCompanyAttach1;
-import com.usky.fire.domain.BaseCompanyPerson;
 import lombok.Data;
 
 import java.util.List;

+ 26 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/DemReportDataVo.java

@@ -34,6 +34,11 @@ public class DemReportDataVo implements Serializable {
      */
     private String lastMonthFirstTime;
 
+    /**
+     * 整体评价
+     */
+    private String overallRating;
+
     /**
      * 统计结束时间
      */
@@ -54,6 +59,11 @@ public class DemReportDataVo implements Serializable {
      */
     private Integer fireUnhandled;
 
+    /**
+     * 火灾报警系统设备数量
+     */
+    private Integer fireDeviceNum;
+
     /**
      * 消防水系统在线率
      */
@@ -69,6 +79,11 @@ public class DemReportDataVo implements Serializable {
      */
     private Integer waterUnhandled;
 
+    /**
+     * 消防水系统设备数量
+     */
+    private Integer waterDeviceNum;
+
     /**
      * 电气火灾系统在线率
      */
@@ -84,6 +99,11 @@ public class DemReportDataVo implements Serializable {
      */
     private Integer efUnhandled;
 
+    /**
+     * 电气火灾系统设备数量
+     */
+    private Integer efDeviceNum;
+
     /**
      * 防排烟系统在线率
      */
@@ -99,6 +119,11 @@ public class DemReportDataVo implements Serializable {
      */
     private Integer smokeUnhandled;
 
+    /**
+     * 防排烟系统设备数量
+     */
+    private Integer smokeDeviceNum;
+
     /**
      * 组织制度落实状态
      */
@@ -202,7 +227,7 @@ public class DemReportDataVo implements Serializable {
     /**
      * 当年度火灾情况-较大及以上火灾
      */
-    private Integer majorFireNum;
+    private int majorFireNum;
 
     /**
      * 当年度火灾情况-影响很大且具有典型意义火灾

+ 67 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult1Vo.java

@@ -0,0 +1,67 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class IndexResult1Vo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 得分
+     */
+    private Double indexScore;
+
+    /**
+     * 指数值
+     */
+    private String indexData;
+
+    /**
+     * 评分说明
+     */
+    private String scoreDesc;
+
+    /**
+     * 评分类型
+     */
+    private Integer scoreType;
+
+    /**
+     * 二级指数结果清单
+     */
+    private List<IndexResult2Vo> indexResult1List;
+
+}

+ 68 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult2Vo.java

@@ -0,0 +1,68 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.usky.fire.domain.BaseBuild;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author JCB
+ * @since 2022-07-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class IndexResult2Vo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 得分
+     */
+    private Double indexScore;
+
+    /**
+     * 指数值
+     */
+    private String indexData;
+
+    /**
+     * 评分说明
+     */
+    private String scoreDesc;
+
+    /**
+     * 评分类型
+     */
+    private Integer scoreType;
+
+    /**
+     * 三级指数结果清单
+     */
+    private List<IndexResult3Vo> indexResult1List;
+
+}

+ 63 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult3Vo.java

@@ -0,0 +1,63 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.usky.fire.domain.BaseBuild;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author JCB
+ * @since 2022-07-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class IndexResult3Vo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 得分
+     */
+    private Double indexScore;
+
+    /**
+     * 指数值
+     */
+    private String indexData;
+
+    /**
+     * 评分说明
+     */
+    private String scoreDesc;
+
+    /**
+     * 评分类型
+     */
+    private Integer scoreType;
+
+}

+ 53 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResultVo.java

@@ -0,0 +1,53 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class IndexResultVo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 生成日期
+     */
+    private LocalDate createDate;
+
+    /**
+     * 对象ID
+     */
+    private Integer objectId;
+
+    /**
+     * 得分
+     */
+    private Double overallScore;
+
+    /**
+     * 一级指数结果清单
+     */
+    private List<IndexResult1Vo> indexResult1List;
+
+}

+ 37 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportConfigVO.java

@@ -0,0 +1,37 @@
+package com.usky.fire.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author han
+ * @date 2023/7/12 13:55
+ * 数据模型
+ */
+@Data
+public class ReportConfigVO {
+
+    /**
+     * 报告模版id
+     */
+    private Integer id;
+
+    /**
+     * 报告模版名称
+     */
+    private String reportName;
+
+    /**
+     * 一级指标数量
+     */
+    private Integer indexNum1;
+
+    /**
+     * 二级指标数量
+     */
+    private Integer indexNum2;
+
+    /**
+     * 三级指标数量
+     */
+    private Integer indexNum3;
+}

+ 62 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex1Vo.java

@@ -0,0 +1,62 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportIndex1Vo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 指数编号
+     */
+    private String indexCode;
+
+    /**
+     * 评分说明
+     */
+    private String indexDesc;
+
+    /**
+     * 指数等级
+     */
+    private Integer indexGrade;
+
+    /**
+     * 二级指数结果清单
+     */
+    private List<ReportIndex2Vo> children;
+
+}

+ 63 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex2Vo.java

@@ -0,0 +1,63 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.usky.fire.domain.BaseBuild;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author JCB
+ * @since 2022-07-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportIndex2Vo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 指数编号
+     */
+    private String indexCode;
+
+    /**
+     * 评分说明
+     */
+    private String indexDesc;
+
+    /**
+     * 指数等级
+     */
+    private Integer indexGrade;
+
+    /**
+     * 三级指数结果清单
+     */
+    private List<ReportIndex3Vo> children;
+
+}

+ 58 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex3Vo.java

@@ -0,0 +1,58 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.usky.fire.domain.BaseBuild;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author JCB
+ * @since 2022-07-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportIndex3Vo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 指数名称
+     */
+    private String indexName;
+
+    /**
+     * 指数权重分
+     */
+    private Double indexWeight;
+
+    /**
+     * 指数编号
+     */
+    private String indexCode;
+
+    /**
+     * 评分说明
+     */
+    private String indexDesc;
+
+    /**
+     * 指数等级
+     */
+    private Integer indexGrade;
+
+}

+ 43 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndexVo.java

@@ -0,0 +1,43 @@
+package com.usky.fire.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportIndexVo implements Serializable {
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 报告名称
+     */
+    private String reportName;
+
+    /**
+     * 一级指数结果清单
+     */
+    private List<ReportIndex1Vo> reportIndex;
+
+}

+ 20 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportResultVO.java

@@ -0,0 +1,20 @@
+package com.usky.fire.service.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author han
+ * @since 2023-07-17
+ */
+@Data
+public class ReportResultVO {
+
+        private List<Integer> reportId;
+
+}

+ 2 - 2
service-fire/service-fire-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
         # 共享配置

+ 45 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportConfigMapper.xml

@@ -0,0 +1,45 @@
+<?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.ReportConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.ReportConfig">
+        <id column="id" property="id" />
+        <result column="report_name" property="reportName" />
+        <result column="delete_flag" property="deleteFlag" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+    <select id="configNumList1" resultType="com.usky.fire.service.vo.ReportConfigVO">
+        SELECT d.id,d.report_name as reportName,IF(report_id IS NULL,0,COUNT(*)) AS
+        indexNum1
+        FROM report_config d
+        LEFT JOIN report_index_config e ON e.report_id = d.id
+        <where>
+            <if test="tenantId != null and tenantId != ''">
+                and d.tenant_id = #{tenantId}
+            </if>
+            and d.delete_flag = 0
+        </where>
+        GROUP BY d.id
+    </select>
+    <select id="configNumList" resultType="com.usky.fire.service.vo.ReportConfigVO">
+        SELECT d.id,IF(report_id IS NULL,0,COUNT(*)) AS
+        indexNum1
+        FROM report_config d
+        LEFT JOIN report_index_config e ON e.report_id = d.id
+        <where>
+            <if test="tenantId != null and tenantId != ''">
+                and d.tenant_id = #{tenantId}
+            </if>
+            <if test="indexGrade != null and indexGrade != ''">
+                and e.index_grade = #{indexGrade}
+            </if>
+            and d.delete_flag = 0
+        </where>
+        GROUP BY d.id
+    </select>
+</mapper>

+ 22 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportIndexConfigMapper.xml

@@ -0,0 +1,22 @@
+<?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.ReportIndexConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.ReportIndexConfig">
+        <id column="id" property="id" />
+        <result column="report_id" property="reportId" />
+        <result column="index_name" property="indexName" />
+        <result column="index_code" property="indexCode" />
+        <result column="index_grade" property="indexGrade" />
+        <result column="senior_index" property="seniorIndex" />
+        <result column="index_weight" property="indexWeight" />
+        <result column="index_desc" property="indexDesc" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 21 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportIndexResultMapper.xml

@@ -0,0 +1,21 @@
+<?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.ReportIndexResultMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.ReportIndexResult">
+        <id column="id" property="id" />
+        <result column="index_code" property="indexCode" />
+        <result column="index_name" property="indexName" />
+        <result column="object_id" property="objectId" />
+        <result column="index_score" property="indexScore" />
+        <result column="index_data" property="indexData" />
+        <result column="create_date" property="createDate" />
+        <result column="score_type" property="scoreType" />
+        <result column="score_desc" property="scoreDesc" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 20 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportResultMapper.xml

@@ -0,0 +1,20 @@
+<?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.ReportResultMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.ReportResult">
+        <id column="id" property="id" />
+        <result column="object_id" property="objectId" />
+        <result column="create_date" property="createDate" />
+        <result column="overall_score" property="overallScore" />
+        <result column="report_url" property="reportUrl" />
+        <result column="report_object" property="reportObject" />
+        <result column="object_type" property="objectType" />
+        <result column="config_id" property="configId" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 19 - 1
service-iot/service-iot-biz/pom.xml

@@ -37,7 +37,25 @@
             <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
             <version>1.1.0</version>
         </dependency>
-        
+
+        <!--MQTT依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-integration</artifactId>
+            <version>2.5.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-stream</artifactId>
+            <version>5.5.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-mqtt</artifactId>
+            <version>5.5.5</version>
+        </dependency>
 
     </dependencies>
 

+ 11 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseAlarmController.java

@@ -4,6 +4,7 @@ package com.usky.iot.controller.web;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.BaseAlarm;
+import com.usky.iot.domain.BaseGgpFacility;
 import com.usky.iot.service.BaseAlarmService;
 import com.usky.iot.service.vo.BaseAlarmListVO;
 import com.usky.iot.service.vo.BaseAlarmRequestVO;
@@ -58,5 +59,15 @@ public class BaseAlarmController {
         return ApiResult.success();
     }
 
+    /**
+     * 新增
+     * @param baseAlarm
+     * @return
+     */
+    @PostMapping("/alarmInfo")
+    public ApiResult<Void> add(@RequestBody BaseAlarm baseAlarm){
+        baseAlarmService.add(baseAlarm);
+        return ApiResult.success();
+    }
 }
 

+ 15 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/BaseGgpFacilityController.java

@@ -135,6 +135,7 @@ public class BaseGgpFacilityController {
     /**
      * 关联设备查看分页
      * @param deviceId  设备ID
+     * @param deviceType  设备类型
      * @param id  设施主键ID
      * @param current      当前页
      * @param size     每页条数
@@ -142,12 +143,13 @@ public class BaseGgpFacilityController {
      */
     @Log(title = "关联设备绑定分页", businessType = BusinessType.OTHER)
     @GetMapping("/deviceBindInfo")
-    public ApiResult<CommonPage<Object>> deviceBindInfo(@RequestParam(value = "deviceId", required = false) String deviceId,
+    public ApiResult<CommonPage<Object>> deviceBindInfo(@RequestParam(value = "deviceType", required = false) String deviceType,
+                                                        @RequestParam(value = "deviceId", required = false) String deviceId,
                                                            @RequestParam(value = "id") Integer id,
                                                            @RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
                                                            @RequestParam(value = "size", required = false, defaultValue = "10") Integer size)
     {
-        return ApiResult.success(baseGgpFacilityService.deviceBindInfo(deviceId, id, current, size));
+        return ApiResult.success(baseGgpFacilityService.deviceBindInfo(deviceType,deviceId, id, current, size));
     }
 
     /**
@@ -179,5 +181,16 @@ public class BaseGgpFacilityController {
         return ApiResult.success(baseGgpFacilityService.baseGgpFacilityList(baseGgpFacilityVO));
     }
 
+    /**
+     * 设施弹窗查询
+     *
+     * @param id  主键ID
+     * @return
+     */
+    @GetMapping("facilityPopInfo")
+    public ApiResult<List<Object>> facilityPopInfo(@RequestParam(value = "id") Integer id) {
+        return ApiResult.success(baseGgpFacilityService.facilityPopInfo(id));
+    }
+
 }
 

+ 3 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseAlarmService.java

@@ -3,6 +3,7 @@ package com.usky.iot.service;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.iot.domain.BaseAlarm;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.domain.BaseGgpFacility;
 import com.usky.iot.service.vo.BaseAlarmListVO;
 import com.usky.iot.service.vo.BaseAlarmRequestVO;
 import com.usky.iot.service.vo.BaseAlarmResponeVO;
@@ -23,4 +24,6 @@ public interface BaseAlarmService extends CrudService<BaseAlarm> {
     CommonPage<BaseAlarm> page(BaseAlarmListVO baseAlarmListVO);
 
     void update(BaseAlarm baseAlarm);
+
+    boolean add(BaseAlarm baseAlarm);
 }

+ 8 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/BaseGgpFacilityService.java

@@ -37,7 +37,7 @@ public interface BaseGgpFacilityService extends CrudService<BaseGgpFacility> {
 
     CommonPage<DmpDeviceInfo> deviceInfo(String deviceId,Integer id,Integer current,Integer size);
 
-    CommonPage<Object> deviceBindInfo(String deviceId,Integer id,Integer current,Integer size);
+    CommonPage<Object> deviceBindInfo(String deviceType,String deviceId,Integer id,Integer current,Integer size);
 
     CommonPage<BaseBuild> buildInfo(String buildNum, Integer id, Integer current, Integer size);
 
@@ -48,4 +48,11 @@ public interface BaseGgpFacilityService extends CrudService<BaseGgpFacility> {
      * @return
      */
     List<BaseGgpFacility> baseGgpFacilityList(BaseGgpFacilityVO baseGgpFacilityVO);
+
+    /**
+     * 设施弹窗查询
+     *
+     * @param id  主键ID
+     */
+    List<Object> facilityPopInfo(Integer id);
 }

+ 50 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/mqtt/MqttBaseConfig.java

@@ -0,0 +1,50 @@
+package com.usky.iot.service.config.mqtt;
+
+import lombok.Data;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory;
+import org.springframework.integration.mqtt.core.MqttPahoClientFactory;
+import org.springframework.stereotype.Component;
+
+@ConditionalOnProperty(prefix = "mqtt", value = {"enabled"}, havingValue = "true")
+@Data
+@Component
+@ConfigurationProperties(prefix = "mqtt")
+public class MqttBaseConfig {
+
+	@Value("${mqtt.username}")
+	private String username;
+
+	@Value("${mqtt.password}")
+	private String password;
+
+	@Value("${mqtt.url}")
+	private String hostUrl;
+
+	@Value("${mqtt.sub-topics}")
+	private String msgTopic;
+
+	@Value("${mqtt.keep-alive-interval}")
+	//心跳间隔
+	private int keepAliveInterval;
+	@Value("${mqtt.completionTimeout}")
+	//心跳间隔
+	private int completionTimeout;
+
+
+	@Bean
+	public MqttPahoClientFactory mqttClientFactory() {
+		DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
+		MqttConnectOptions options = new MqttConnectOptions();
+		options.setServerURIs(new String[]{this.getHostUrl()});
+		options.setUserName(this.getUsername());
+		options.setPassword(this.getPassword().toCharArray());
+		factory.setConnectionOptions(options);
+		return factory;
+	}
+
+}

+ 84 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/mqtt/MqttOutConfig.java

@@ -0,0 +1,84 @@
+package com.usky.iot.service.config.mqtt;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.integration.annotation.MessagingGateway;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.integration.channel.DirectChannel;
+import org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler;
+import org.springframework.integration.mqtt.support.MqttHeaders;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.messaging.MessageHandler;
+import org.springframework.messaging.handler.annotation.Header;
+
+@ConditionalOnProperty(prefix = "mqtt", value = {"enabled"}, havingValue = "true")
+@Configuration
+public class MqttOutConfig {
+
+    @Autowired
+    public MqttBaseConfig mqttBaseConfig;
+
+    public static final String CHANNEL_NAME_OUT = "mqttOutboundChannel";
+
+    public static final String MESSAGE_NAME = "messageOut";
+
+    public static final String DEFAULT_TOPIC = "testTopic";
+
+    /**
+     * 连接通道
+     *
+     * @return
+     */
+    @Bean(name = CHANNEL_NAME_OUT)
+    public MessageChannel mqttOutboundChannel() {
+        return new DirectChannel();
+    }
+
+    /**
+     * 发送消息和消费消息Channel可以使用相同MqttPahoClientFactory
+     *
+     * @return
+     */
+    @Bean(name = MESSAGE_NAME)
+    @ServiceActivator(inputChannel = CHANNEL_NAME_OUT)
+    public MessageHandler outbound() {
+        // 在这里进行mqttOutboundChannel的相关设置
+        String clientId = "h-backend-mqtt-out-" + System.currentTimeMillis();
+        MqttPahoMessageHandler messageHandler =
+                new MqttPahoMessageHandler(clientId, mqttBaseConfig.mqttClientFactory());
+        //如果设置成true,发送消息时将不会阻塞。
+        messageHandler.setAsync(true);
+        messageHandler.setDefaultTopic(DEFAULT_TOPIC);
+        return messageHandler;
+    }
+
+    @MessagingGateway(defaultRequestChannel = CHANNEL_NAME_OUT)
+    public interface MqttGateway {
+        /**
+         * 发送消息
+         *
+         * @param payload
+         */
+        void sendToMqtt(String payload);
+
+        /**
+         * 指定top发送消息
+         *
+         * @param topic
+         * @param payload
+         */
+        void sendToMqtt(@Header(MqttHeaders.TOPIC) String topic, String payload);
+
+        /**
+         * 指定队列和qos
+         *
+         * @param topic
+         * @param qos
+         * @param payload
+         */
+        void sendToMqtt(@Header(MqttHeaders.TOPIC) String topic, @Header(MqttHeaders.QOS) int qos, String payload);
+    }
+}

+ 86 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/enums/TopListener.java

@@ -0,0 +1,86 @@
+package com.usky.iot.service.enums;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author yq
+ * @date 2021/12/31 11:11
+ */
+public enum TopListener {
+
+    /**
+     * 城运对接
+     */
+    MH_WATER_INFO("fireInfo","mh/water/info",1),
+    MH_WATER_ALERT("fireInfo","mh/water/alert",1),
+    MH_WATER_STATISTICS("fireInfo","mh/water/statistics",1),
+    DEVICE_INFO("fireInfo","device/info",1),
+    DEVICE_ALERT("fireInfo","device/alert",1),
+    DEVICE_DETAIL("fireInfo","device/detail",1),
+    DEVICE_AJ("fireInfo","device/aj",1),
+
+    /**
+     * 全部设备对接
+     */
+    FIRE_INFO("fireInfo","/usky/ytDP0001/+/+/info",1),
+    FIRE_ALERT("fireAlarm","/usky/ytDP0001/+/+/alarm",1),
+    WATER_INFO("waterInfo","/usky/ytDP0002/+/+/info",1),
+    WATER_ALERT("waterAlert","/usky/ytDP0002/+/+/alarm",1),
+    SMOKE_INFO("smokeInfo","/usky/ytDP0003/+/+/info",1),
+    SMOKE_ALERT("smokeAlarm","/usky/ytDP0003/+/+/alarm",1),
+    LIQUID_INFO("waterInfo","/usky/ytDP0005/+/+/info",1),
+    LIQUID_ALERT("waterAlert","/usky/ytDP0005/+/+/alarm",1),
+    RTU_INFO("rtuinfo","/usky/ytDP0006/+/+/info",1),
+    RTU_ALERT("rtuAlert","/usky/ytDP0006/+/+/alarm",1),
+    ELECTRICAL_INFO("electricalInfo","/usky/ytDP0007/+/+/info",1),
+    ELECTRICAL_ALERT("electricalAlarm","/usky/ytDP0007/+/+/alarm",1),
+    MH_COVER_INFO("waterInfo","/usky/ytDP0008/+/+/info",1),
+    MH_COVER_ALERT("waterAlert","/usky/ytDP0008/+/+/alarm",1),
+    VIDEO_ALERT("videoAlert","/usky/ytCamCore/+/+/alarm",1),
+    LR_SMOKE_INFO("smokeInfo","/usky/ytDP00033/+/+/info",1),
+    LR_SMOKE_ALERT("smokeAlarm","/usky/ytDP00033/+/+/alarm",1);
+
+
+
+
+    private String name;
+    private String code;
+    //0发送队列,1监听队列2都是
+    private Integer type;
+
+    TopListener(String name, String code, Integer type){
+        this.name = name;
+        this.code = code;
+        this.type = type;
+    }
+
+    public static TopListener parse(String code){
+        TopListener topListener = null;
+        for (TopListener t:TopListener.values()) {
+            if (t.getCode().equals(code)){
+                topListener = t;
+                break;
+            }
+        }
+        return topListener;
+    }
+    public static List<TopListener> parse(Integer type){
+        List<TopListener> listeners = new ArrayList<>();
+        for (TopListener t:TopListener.values()) {
+            if (t.getType().equals(type)){
+                listeners.add(t);
+            }
+        }
+        return listeners;
+    }
+    public String getCode(){
+        return code;
+    }
+    public String getName(){
+        return name;
+    }
+    public Integer getType(){
+        return type;
+    }
+}

+ 9 - 13
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseAlarmServiceImpl.java

@@ -1,35 +1,27 @@
 package com.usky.iot.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 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.common.security.utils.SecurityUtils;
-import com.usky.iot.domain.BaseAlarm;
-import com.usky.iot.domain.BaseAlarmType;
-import com.usky.iot.domain.DmpDeviceInfo;
-import com.usky.iot.domain.DmpProductInfo;
+import com.usky.iot.domain.*;
 import com.usky.iot.mapper.BaseAlarmMapper;
 import com.usky.iot.service.BaseAlarmService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.iot.service.DmpDeviceInfoService;
 import com.usky.iot.service.DmpProductInfoService;
+import com.usky.iot.service.config.mqtt.MqttOutConfig;
 import com.usky.iot.service.vo.BaseAlarmListVO;
 import com.usky.iot.service.vo.BaseAlarmRequestVO;
 import com.usky.iot.service.vo.BaseAlarmResponeVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -214,7 +206,11 @@ public class BaseAlarmServiceImpl extends AbstractCrudService<BaseAlarmMapper, B
             this.updateById(baseAlarm);
         }
     }
-
+    @Override
+    public boolean add(BaseAlarm baseAlarm) {
+        baseAlarm.setTenantId(SecurityUtils.getTenantId());
+        return this.save(baseAlarm);
+    }
 }
 
 

+ 108 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/BaseGgpFacilityServiceImpl.java

@@ -1,6 +1,8 @@
 package com.usky.iot.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -18,6 +20,7 @@ import com.usky.iot.service.BaseFacilityDeviceService;
 import com.usky.iot.service.BaseGgpFacilityService;
 import com.usky.iot.service.vo.*;
 import com.usky.system.model.LoginUser;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -46,6 +49,10 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
     private BaseBuildService baseBuildService;
     @Autowired
     private BaseFacilityTypeMapper baseFacilityTypeMapper;
+    @Autowired
+    private DmpProductInfoService dmpProductInfoService;
+    @Autowired
+    private BaseAlarmService baseAlarmService;
 
     @Override
     public boolean add(BaseGgpFacility baseGgpFacility) {
@@ -197,7 +204,8 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
     }
 
     @Override
-    public CommonPage<Object> deviceBindInfo(String deviceId,Integer id,Integer current,Integer size) {
+    public CommonPage<Object> deviceBindInfo(String deviceType,String deviceId,Integer id,Integer current,
+                                             Integer size) {
         List<Object> list = new ArrayList<>();
         IPage<DmpDeviceInfo> page = new Page<>(current, size);
         LambdaQueryWrapper<BaseFacilityDevice> lambdaQuery = Wrappers.lambdaQuery();
@@ -205,8 +213,10 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
         List<BaseFacilityDevice> baseFacilityDeviceList = baseFacilityDeviceService.list(lambdaQuery);
         LambdaQueryWrapper<DmpDeviceInfo> queryWrapper1 = Wrappers.lambdaQuery();
         queryWrapper1.select(DmpDeviceInfo::getId, DmpDeviceInfo::getDeviceId,
-                DmpDeviceInfo::getDeviceName, DmpDeviceInfo::getInstallAddress)
+                DmpDeviceInfo::getDeviceName, DmpDeviceInfo::getInstallAddress,DmpDeviceInfo::getDeviceType)
                 .eq(StringUtils.isNotBlank(deviceId),DmpDeviceInfo::getDeviceId, deviceId)
+                .eq(StringUtils.isNotBlank(deviceType),DmpDeviceInfo::getDeviceType,Integer.parseInt(deviceType))
+                .eq(DmpDeviceInfo::getTenantId,SecurityUtils.getTenantId())
                 .eq(DmpDeviceInfo::getDeleteFlag,0);
         page = dmpDeviceInfoService.page(page,queryWrapper1);
         if (CollectionUtils.isNotEmpty(page.getRecords())) {
@@ -215,6 +225,7 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
                 map.put("id", page.getRecords().get(i).getId());
                 map.put("deviceId", page.getRecords().get(i).getDeviceId());
                 map.put("deviceName", page.getRecords().get(i).getDeviceName());
+                map.put("deviceType", page.getRecords().get(i).getDeviceType());
                 map.put("installAddress", page.getRecords().get(i).getInstallAddress());
                 map.put("bindStatus", 0);
                 map.put("bindId", 0);
@@ -275,4 +286,99 @@ public class BaseGgpFacilityServiceImpl extends AbstractCrudService<BaseGgpFacil
         List<BaseGgpFacility> list = this.list(query);
         return list;
     }
+
+    @Override
+    public List<Object> facilityPopInfo(Integer id) {
+        List<Object> list = new ArrayList<>();
+        List<Object> list5 = new ArrayList<>();
+        LambdaQueryWrapper<BaseGgpFacility> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(BaseGgpFacility::getId, id);
+        List<BaseGgpFacility> baseGgpFacilityList = this.list(queryWrapper);
+        LambdaQueryWrapper<BaseFacilityDevice> lambdaQuery = Wrappers.lambdaQuery();
+        lambdaQuery.eq(BaseFacilityDevice::getFacilityId,id);
+        List<BaseFacilityDevice> baseFacilityDeviceList = baseFacilityDeviceService.list(lambdaQuery);
+        Map<String, Object> map = new HashMap<>();
+        map.put("id", baseGgpFacilityList.get(0).getId());
+        map.put("facilityName", baseGgpFacilityList.get(0).getFacilityName());
+        map.put("facilityAddress", baseGgpFacilityList.get(0).getFacilityAddress());
+        map.put("contact", baseGgpFacilityList.get(0).getContact());
+        map.put("contactPhone", baseGgpFacilityList.get(0).getContactPhone());
+        if (CollectionUtils.isNotEmpty(baseFacilityDeviceList)) {
+            List<String> deviceIdList = new ArrayList<>();
+            for (int i = 0; i < baseFacilityDeviceList.size(); i++) {
+                deviceIdList.add(baseFacilityDeviceList.get(i).getDeviceId());
+            }
+            QueryWrapper<BaseAlarm> query1 = Wrappers.query();
+            query1.select("product_code as productCode","count(id) as count")
+                    .in("device_id",deviceIdList)
+                    .groupBy("product_code");
+            List<Map<String, Object>> baseAlarmList = baseAlarmService.listMaps(query1);
+            QueryWrapper<BaseAlarm> query2 = Wrappers.query();
+            query2.select("product_code as productCode","count(id) as count")
+                    .in("device_id",deviceIdList)
+                    .eq("handle_status",1)
+                    .groupBy("product_code");
+            List<Map<String, Object>> baseAlarmList1 = baseAlarmService.listMaps(query2);
+            List<Map<String, Object>> list1 = new ArrayList<>();
+            if (CollectionUtils.isNotEmpty(baseAlarmList)){
+                for (int k = 0; k < baseAlarmList.size(); k++){
+                    if (CollectionUtils.isNotEmpty(baseAlarmList1)){
+                        for (int l = 0; l < baseAlarmList1.size(); l++){
+                            if (baseAlarmList.get(k).get("productCode").equals(baseAlarmList1.get(l).get("productCode"))){
+                                int count1 = Integer.parseInt(String.valueOf(baseAlarmList1.get(l).get("count")));
+                                int count = Integer.parseInt(String.valueOf(baseAlarmList.get(k).get("count")));
+                                double disposalRate = 0;
+                                if (count>0){
+                                    disposalRate = Math.round(count1/count)*100;
+                                }
+                                Map<String, Object> map1 = new HashMap<>();
+                                map1.put("productCode",baseAlarmList.get(k).get("productCode"));
+                                map1.put("disposalRate",disposalRate);
+                                list1.add(map1);
+                            }
+                        }
+                    }
+                }
+            }
+            QueryWrapper<DmpDeviceInfo> query = Wrappers.query();
+            query.select("product_code as productCode","count(id) as count")
+                    .in("device_id",deviceIdList)
+                    .eq("delete_flag",0)
+                    .groupBy("product_code");
+            List<Map<String, Object>> dmpDeviceInfoList = dmpDeviceInfoService.listMaps(query);
+            if (CollectionUtils.isNotEmpty(dmpDeviceInfoList)){
+                List<String> productCodeList = new ArrayList<>();
+                for (int j = 0; j < dmpDeviceInfoList.size(); j++) {
+                    productCodeList.add(String.valueOf(dmpDeviceInfoList.get(j).get("productCode")));
+                }
+                LambdaQueryWrapper<DmpProductInfo> queryWrapper2 = Wrappers.lambdaQuery();
+                queryWrapper2.in(DmpProductInfo::getProductCode, productCodeList);
+                List<DmpProductInfo> dmpProductInfoList = dmpProductInfoService.list(queryWrapper2);
+                if (CollectionUtils.isNotEmpty(dmpProductInfoList)){
+                    for (int m = 0; m < dmpProductInfoList.size(); m++){
+                        Map<String, Object> map2 = new HashMap<>();
+                        map2.put("productName",dmpProductInfoList.get(m).getProductName());
+                        for (int n = 0; n < dmpDeviceInfoList.size(); n++){
+                            if (dmpProductInfoList.get(m).getProductCode().equals(dmpDeviceInfoList.get(n).get("productCode"))){
+                                map2.put("deviceCount",dmpDeviceInfoList.get(n).get("count"));
+                            }
+                        }
+                        if (CollectionUtils.isNotEmpty(list1)){
+                            for (int o = 0; o < list1.size(); o++){
+                                if (dmpProductInfoList.get(m).getProductCode().equals(list1.get(o).get("productCode"))){
+                                    map2.put("disposalRate",list1.get(o).get("disposalRate"));
+                                }
+                            }
+                        }else {
+                            map2.put("disposalRate",0);
+                        }
+                        list5.add(map2);
+                    }
+                }
+                map.put("productList",list5);
+            }
+        }
+        list.add(map);
+        return list;
+    }
 }

+ 25 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/mqtt/MqttStrategy.java

@@ -0,0 +1,25 @@
+package com.usky.iot.service.mqtt;
+
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.usky.iot.service.vo.MqttBaseVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 策略类
+ *
+ * @author yq
+ * @date 2021/11/3 8:27
+ */
+public interface MqttStrategy {
+    /**
+     * 处理消息(策略模式由子类实现)
+     *
+     * @param mqttBaseVO
+     * @return
+     */
+    String disposeMessage(MqttBaseVO mqttBaseVO);
+
+}

+ 21 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/MqttBaseVO.java

@@ -0,0 +1,21 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author yq
+ * @date 2021/11/3 8:32
+ */
+@Data
+public class MqttBaseVO {
+    /**
+     * 接口描述
+     */
+    private String describe;
+
+    private String topic;
+    /**
+     * 数据内容
+      */
+    private Object data;
+}

+ 35 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/MqttDataVO.java

@@ -0,0 +1,35 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author zyj
+ * @date 2023-01-11
+ */
+@Data
+public class MqttDataVO {
+    /**
+     * 设备编号
+     */
+    private String devId;
+
+    /**
+     * 设备类型
+     */
+    private Integer deviceType;
+
+    /**
+     * 单位编号
+     */
+    private String companyId;
+
+    /**
+     * 系统类型 (1.火灾自动报警系统 2.自动喷水灭火系统 3.消防给水及消火栓系统 4.防排烟系统 5.电气火灾系统 6.消防视频监控系统)
+     */
+    private Integer systemType;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+}

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

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