Procházet zdrojové kódy

报告配置接口

hanzhengyi před 1 rokem
rodič
revize
63e94823e6
17 změnil soubory, kde provedl 1397 přidání a 12 odebrání
  1. 74 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportConfigController.java
  2. 24 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexConfigController.java
  3. 5 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/ReportConfig.java
  4. 7 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportConfigMapper.java
  5. 37 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportConfigService.java
  6. 7 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexConfigService.java
  7. 342 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java
  8. 7 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexConfigServiceImpl.java
  9. 575 2
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java
  10. 26 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/DemReportDataVo.java
  11. 37 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportConfigVO.java
  12. 62 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex1Vo.java
  13. 63 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex2Vo.java
  14. 58 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndex3Vo.java
  15. 43 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/ReportIndexVo.java
  16. 2 2
      service-fire/service-fire-biz/src/main/resources/bootstrap.yml
  17. 28 1
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportConfigMapper.xml

+ 74 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportConfigController.java

@@ -1,9 +1,17 @@
 package com.usky.fire.controller.web;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+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 org.springframework.stereotype.Controller;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,9 +21,72 @@ import org.springframework.stereotype.Controller;
  * @author han
  * @since 2023-06-27
  */
-@Controller
+@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();
+    }
+
 }
 

+ 24 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexConfigController.java

@@ -1,9 +1,18 @@
 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>
@@ -13,9 +22,23 @@ import org.springframework.stereotype.Controller;
  * @author han
  * @since 2023-06-27
  */
-@Controller
+@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();
+    }
 }
 

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

@@ -32,6 +32,11 @@ public class ReportConfig implements Serializable {
      */
     private String reportName;
 
+    /**
+     * 删除标识
+     */
+    private Integer deleteFlag;
+
     /**
      * 创建人
      */

+ 7 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/ReportConfigMapper.java

@@ -2,6 +2,10 @@ 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>
@@ -12,5 +16,7 @@ import com.usky.common.mybatis.core.CrudMapper;
  * @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);
 }

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

@@ -2,6 +2,9 @@ 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>
@@ -12,5 +15,39 @@ import com.usky.common.mybatis.core.CrudService;
  * @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);
 }

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

@@ -21,4 +21,11 @@ public interface ReportIndexConfigService extends CrudService<ReportIndexConfig>
      * @param indexGrade 上级指数
      */
     List<ReportIndexConfig> indexConfigList(Integer reportId,Integer indexGrade);
+
+    /**
+     * 报告模型-删除
+     *
+     * @param id 主键ID
+     */
+    boolean delReportIndexConfig(Integer id);
 }

+ 342 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java

@@ -1,10 +1,22 @@
 package com.usky.fire.service.impl;
 
-import com.usky.fire.domain.ReportConfig;
+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>
@@ -16,5 +28,334 @@ import org.springframework.stereotype.Service;
  */
 @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, 1);
+        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(1);
+            list3 = baseMapper.configNumList(1,1);
+            list4 = baseMapper.configNumList(1,2);
+            list5 = baseMapper.configNumList(1,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.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.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.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);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
 
+            }
+        }
+    }
 }

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

@@ -2,7 +2,9 @@ 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;
@@ -10,6 +12,7 @@ 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;
 
 /**
@@ -30,4 +33,8 @@ public class ReportIndexConfigServiceImpl extends AbstractCrudService<ReportInde
         List<ReportIndexConfig> list1 = this.list(queryWrapper);
         return list1;
     }
+    @Override
+    public boolean delReportIndexConfig(Integer id) {
+        return this.removeById(id);
+    }
 }

+ 575 - 2
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java

@@ -4,15 +4,23 @@ 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;
@@ -65,12 +73,33 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
     @Override
     public void reportIndexResult() {
         try {
-            List<BaseCompany> baseCompanies = baseCompanyService.companyIdByTypeList("1");
+            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());
@@ -97,12 +126,15 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                     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);
@@ -115,6 +147,7 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                     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)
@@ -131,6 +164,7 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                             .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;
@@ -168,12 +202,16 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                                     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;
@@ -211,6 +249,9 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                                     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());
@@ -222,15 +263,18 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                             .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())
@@ -238,14 +282,28 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                             .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)
+                    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();
@@ -823,6 +881,7 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                                                                 }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){
@@ -830,6 +889,7 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                                                                 }else {
                                                                     reportIndexResult2.setIndexScore(100 * indexConfig3.get(j).getIndexWeight()* indexConfig2.get(k).getIndexWeight());
                                                                 }
+                                                                demReportDataVo.setManagerStatus(1);
                                                             }
                                                             reportIndexResult.setScoreType(1);
                                                         } else {
@@ -937,6 +997,19 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
                             }
                         }
                     }
+                    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);
                 }
             }
@@ -945,6 +1018,506 @@ public class ReportIndexResultServiceImpl extends AbstractCrudService<ReportInde
         }
     }
 
+    // 定义全局的字体静态变量
+    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<>();

+ 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;
 
     /**
      * 当年度火灾情况-影响很大且具有典型意义火灾

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

+ 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
         # 共享配置

+ 28 - 1
service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportConfigMapper.xml

@@ -6,11 +6,38 @@
     <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 e.tenant_id = #{tenantId}
+            </if>
+        </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 e.tenant_id = #{tenantId}
+            </if>
+            <if test="indexGrade != null and indexGrade != ''">
+                and e.index_grade = #{indexGrade}
+            </if>
+        </where>
+        GROUP BY d.id
+    </select>
 </mapper>