Просмотр исходного кода

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

gez 1 год назад
Родитель
Сommit
7841b63dbd
70 измененных файлов с 3768 добавлено и 60 удалено
  1. 21 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportConfigController.java
  2. 21 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexConfigController.java
  3. 52 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportIndexResultController.java
  4. 49 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/ReportResultController.java
  5. 61 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. 16 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. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportConfigService.java
  17. 24 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexConfigService.java
  18. 31 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/ReportIndexResultService.java
  19. 27 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. 20 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportConfigServiceImpl.java
  28. 33 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexConfigServiceImpl.java
  29. 1034 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportIndexResultServiceImpl.java
  30. 36 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/ReportResultServiceImpl.java
  31. 67 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult1Vo.java
  32. 68 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult2Vo.java
  33. 63 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResult3Vo.java
  34. 53 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/IndexResultVo.java
  35. 16 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportConfigMapper.xml
  36. 22 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportIndexConfigMapper.xml
  37. 21 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportIndexResultMapper.xml
  38. 20 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/ReportResultMapper.xml
  39. 12 0
      service-iot/service-iot-biz/pom.xml
  40. 89 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomInfoController.java
  41. 52 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomRemindController.java
  42. 82 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmInvoiceInfoController.java
  43. 10 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/TaskController.java
  44. 131 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomInfo.java
  45. 102 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomRemind.java
  46. 116 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmInvoiceInfo.java
  47. 5 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java
  48. 4 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpProductInfo.java
  49. 16 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmCustomInfoMapper.java
  50. 16 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmCustomRemindMapper.java
  51. 25 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmInvoiceInfoMapper.java
  52. 4 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpDeviceInfoMapper.java
  53. 34 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmCustomInfoService.java
  54. 21 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmCustomRemindService.java
  55. 29 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmInvoiceInfoService.java
  56. 1 1
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/DmpDeviceInfoService.java
  57. 163 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomInfoServiceImpl.java
  58. 118 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomRemindServiceImpl.java
  59. 92 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmInvoiceInfoServiceImpl.java
  60. 25 22
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java
  61. 4 4
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductInfoServiceImpl.java
  62. 99 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmCustomInfoExportVO.java
  63. 40 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmCustomInfoRequestVO.java
  64. 96 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoExportVO.java
  65. 41 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoRequest.java
  66. 69 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoVO.java
  67. 29 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmCustomInfoMapper.xml
  68. 22 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmCustomRemindMapper.xml
  69. 71 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmInvoiceInfoMapper.xml
  70. 12 0
      service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

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

@@ -0,0 +1,21 @@
+package com.usky.fire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 报告配置表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Controller
+@RequestMapping("/reportConfig")
+public class ReportConfigController {
+
+}
+

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

@@ -0,0 +1,21 @@
+package com.usky.fire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 指数配置表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Controller
+@RequestMapping("/reportIndexConfig")
+public class ReportIndexConfigController {
+
+}
+

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

@@ -0,0 +1,52 @@
+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.ReportIndexResultService;
+import com.usky.fire.service.vo.CompanyDataVo;
+import com.usky.fire.service.vo.IndexResultVo;
+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));
+    }
+}
+

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

@@ -0,0 +1,49 @@
+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.DemReportInfo;
+import com.usky.fire.domain.ReportResult;
+import com.usky.fire.service.DemReportInfoService;
+import com.usky.fire.service.ReportResultService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <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));
+    }
+}
+

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

@@ -0,0 +1,61 @@
+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 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;
+
+
+}

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

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

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

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

@@ -0,0 +1,16 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.ReportConfig;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 报告配置表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface ReportConfigService extends CrudService<ReportConfig> {
+
+}

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

@@ -0,0 +1,24 @@
+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);
+}

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

@@ -0,0 +1,31 @@
+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 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);
+}

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

@@ -0,0 +1,27 @@
+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);
+}

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

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

@@ -0,0 +1,20 @@
+package com.usky.fire.service.impl;
+
+import com.usky.fire.domain.ReportConfig;
+import com.usky.fire.mapper.ReportConfigMapper;
+import com.usky.fire.service.ReportConfigService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 报告配置表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Service
+public class ReportConfigServiceImpl extends AbstractCrudService<ReportConfigMapper, ReportConfig> implements ReportConfigService {
+
+}

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

@@ -0,0 +1,33 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.fire.domain.BaseBuild;
+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.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;
+    }
+}

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

@@ -0,0 +1,1034 @@
+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.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.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.Calendar;
+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("1");
+            if (CollectionUtils.isNotEmpty(baseCompanies)) {
+                Calendar now = Calendar.getInstance();
+                LocalDate date=LocalDate.now();
+                LocalDateTime dateTime=LocalDateTime.now();
+                for (int i = 0; i < baseCompanies.size(); i++) {
+                    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;
+                    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;
+                    }
+                    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);
+                    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);
+                    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());
+                        }
+                    }
+                    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);
+                    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());
+                        }
+                    }
+                    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);
+                    Calendar lastYearFirstDateCal3 = Calendar.getInstance();
+                    lastYearFirstDateCal3.add(Calendar.YEAR, -3);
+                    String lastYearFirstTime3 = format.format(lastYearFirstDateCal3.getTime());
+                    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);
+                    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);
+                    Calendar lastYearFirstDateCal1 = Calendar.getInstance();
+                    lastYearFirstDateCal1.add(Calendar.YEAR, -1);
+                    String lastYearFirstTime1 = format.format(lastYearFirstDateCal1.getTime());
+                    LambdaQueryWrapper<DemFireStatistics> queryWrapper13 = Wrappers.lambdaQuery();
+                    queryWrapper13.select(DemFireStatistics::getId)
+                            .like(DemFireStatistics::getFireAddress, baseCompanies.get(i).getAddress())
+                            .between(DemFireStatistics::getFireTime, lastYearFirstTime1, date);
+                    List<DemFireStatistics> list13 = demFireStatisticsService.list(queryWrapper13);
+                    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")) {
+                                                                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());
+                                                                }
+                                                            }
+                                                            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());
+                                                                }
+                                                            } 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());
+                                                                }
+                                                            }
+                                                            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());
+                            }
+                        }
+                    }
+                    reportResultService.save(reportResult);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @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;
+    }
+}

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

@@ -0,0 +1,36 @@
+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.DemReportInfo;
+import com.usky.fire.domain.ReportResult;
+import com.usky.fire.mapper.ReportResultMapper;
+import com.usky.fire.service.ReportResultService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 报告结果表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-28
+ */
+@Service
+public class ReportResultServiceImpl extends AbstractCrudService<ReportResultMapper, ReportResult> implements ReportResultService {
+    @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);
+    }
+}

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

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

@@ -0,0 +1,16 @@
+<?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="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>

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

+ 12 - 0
service-iot/service-iot-biz/pom.xml

@@ -25,6 +25,18 @@
             <artifactId>easypoi-spring-boot-starter</artifactId>
             <version>4.1.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.5.16</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
         
 
     </dependencies>

+ 89 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomInfoController.java

@@ -0,0 +1,89 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.utils.poi.ExcelUtil;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.iot.service.CrmCustomInfoService;
+import com.usky.iot.service.vo.CrmCustomInfoExportVO;
+import com.usky.iot.service.vo.CrmCustomInfoRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import javax.rmi.CORBA.Util;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * <p>
+ * 客户管理信息表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+@RestController
+@RequestMapping("/crmCustomInfo")
+public class CrmCustomInfoController {
+
+    @Autowired
+    private CrmCustomInfoService crmCustomInfoService;
+
+    /**
+     * 新增
+     * @param crmCustomInfo
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody CrmCustomInfo crmCustomInfo){
+        crmCustomInfoService.add(crmCustomInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param crmCustomInfo
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> edit(@RequestBody CrmCustomInfo crmCustomInfo){
+        crmCustomInfoService.edit(crmCustomInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @DeleteMapping("/{id}")
+    public ApiResult<Void> remove(@PathVariable("id") Integer id){
+        crmCustomInfoService.remove(id);
+        return ApiResult.success();
+    }
+
+    /**
+     * 分页
+     * @param crmCustomInfoRequestVO
+     * @return
+     */
+    @PostMapping("/page")
+    public ApiResult<CommonPage<CrmCustomInfo>> page(@RequestBody CrmCustomInfoRequestVO crmCustomInfoRequestVO){
+        return ApiResult.success(crmCustomInfoService.page(crmCustomInfoRequestVO));
+    }
+
+
+    @PostMapping("export")
+    public void export(@RequestBody CrmCustomInfoRequestVO crmCustomInfoRequestVO, HttpServletResponse response)throws IOException {
+        List<CrmCustomInfoExportVO> list = crmCustomInfoService.recordListExport(crmCustomInfoRequestVO);
+        ExcelUtil<CrmCustomInfoExportVO> util = new ExcelUtil<CrmCustomInfoExportVO>(CrmCustomInfoExportVO.class);
+        util.exportExcel(response,list,"客户管理信息","客户管理信息");
+
+    }
+
+}
+

+ 52 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmCustomRemindController.java

@@ -0,0 +1,52 @@
+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.CrmCustomRemind;
+import com.usky.iot.service.CrmCustomRemindService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 客户提醒信息表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@RestController
+@RequestMapping("/crmCustomRemind")
+public class CrmCustomRemindController {
+
+    @Autowired
+    private CrmCustomRemindService crmCustomRemindService;
+
+    /**
+     * 发送
+     * @param crmCustomRemind
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody CrmCustomRemind crmCustomRemind){
+        crmCustomRemindService.add(crmCustomRemind);
+        return ApiResult.success();
+    }
+
+    /**
+     * 分页
+     * @param current
+     * @param size
+     * @return
+     */
+    @GetMapping("/page")
+    public ApiResult<CommonPage<CrmCustomRemind>> page(@RequestParam(value = "current", required = false, defaultValue = "1") Integer current,
+                                                       @RequestParam(value = "size", required = false, defaultValue = "10") Integer size){
+        return ApiResult.success(crmCustomRemindService.page(current,size));
+    }
+
+}
+

+ 82 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/CrmInvoiceInfoController.java

@@ -0,0 +1,82 @@
+package com.usky.iot.controller.web;
+
+
+import com.usky.common.core.utils.poi.ExcelUtil;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.iot.service.CrmInvoiceInfoService;
+import com.usky.iot.service.vo.CrmCustomInfoExportVO;
+import com.usky.iot.service.vo.CrmInvoiceInfoExportVO;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * <p>
+ * 客户发票信息表 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+@RestController
+@RequestMapping("/crmInvoiceInfo")
+public class CrmInvoiceInfoController {
+
+    @Autowired
+    private CrmInvoiceInfoService crmInvoiceInfoService;
+
+    /**
+     * 新增
+     * @param invoiceInfo
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody CrmInvoiceInfo invoiceInfo){
+        crmInvoiceInfoService.add(invoiceInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 开票状态变更
+     * @param invoiceInfo
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> update(@RequestBody CrmInvoiceInfo invoiceInfo){
+        crmInvoiceInfoService.update(invoiceInfo);
+        return ApiResult.success();
+    }
+
+    /**
+     * 分页
+     * @param crmInvoiceInfoRequest
+     * @return
+     */
+    @PostMapping("/page")
+    public ApiResult<CommonPage<CrmInvoiceInfo>> page(@RequestBody CrmInvoiceInfoRequest crmInvoiceInfoRequest){
+        return ApiResult.success(crmInvoiceInfoService.page(crmInvoiceInfoRequest));
+    }
+
+    /**
+     * 导出
+     * @param crmInvoiceInfoRequest
+     * @param response
+     * @throws IOException
+     */
+    @PostMapping("export")
+    public void export(@RequestBody CrmInvoiceInfoRequest crmInvoiceInfoRequest, HttpServletResponse response) throws IOException{
+        List<CrmInvoiceInfoExportVO> list = crmInvoiceInfoService.export(crmInvoiceInfoRequest);
+        ExcelUtil<CrmInvoiceInfoExportVO> util = new ExcelUtil<CrmInvoiceInfoExportVO>(CrmInvoiceInfoExportVO.class);
+        util.exportExcel(response,list,"开票信息","开票信息");
+    }
+
+}
+

+ 10 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/TaskController.java

@@ -1,5 +1,6 @@
 package com.usky.iot.controller.web;
 
+import com.usky.iot.service.CrmCustomInfoService;
 import com.usky.iot.service.DmpDeviceStatusService;
 import com.usky.iot.service.job.DmpDataOverviewJob;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,9 @@ public class TaskController {
     @Autowired
     private DmpDeviceStatusService dmpDeviceStatusService;
 
+    @Autowired
+    private CrmCustomInfoService crmCustomInfoService;
+
     @Scheduled(cron = "0 0 1 * * ? ") //每天凌晨1点执行
     public void task() {
         System.out.println(Thread.currentThread().getName() + "定时任务执行中");
@@ -31,4 +35,10 @@ public class TaskController {
 //        dmpDeviceStatusService.status();
 //    }
 
+    @Scheduled(cron = "0 30 * * * ? ") //每天凌晨0点30分执行
+    public void task2() {
+        System.out.println(Thread.currentThread().getName() + "定时任务执行中");
+        crmCustomInfoService.updateStatus();
+    }
+
 }

+ 131 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomInfo.java

@@ -0,0 +1,131 @@
+package com.usky.iot.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-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CrmCustomInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目编号
+     */
+    private String projectId;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+
+    /**
+     * 客户负责人
+     */
+    private String customPerson;
+
+    /**
+     * 客户电话
+     */
+    private String phone;
+
+    /**
+     * 备用电话
+     */
+    private String phone1;
+
+    /**
+     * 维保费
+     */
+    private Double maintainAmount;
+
+    /**
+     * 客户邮箱
+     */
+    private String email;
+
+    /**
+     * 销售负责人
+     */
+    private String salePerson;
+
+    /**
+     * 状态;1:使用中,2:已到期
+     */
+    private Integer maintainStatus;
+
+    /**
+     * 到期时间
+     */
+    private LocalDateTime expireTime;
+
+    /**
+     * 客户地址
+     */
+    private String customAddress;
+
+    /**
+     * 备注
+     */
+    private String context;
+
+    /**
+     * 删除标识
+     */
+    private Integer deleteFlag;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 102 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmCustomRemind.java

@@ -0,0 +1,102 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+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 CrmCustomRemind implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户管理id
+     */
+    private Integer customId;
+
+    /**
+     * 客户名称
+     */
+    private String customName;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 邮箱地址
+     */
+    private String email;
+
+    /**
+     * 提醒方式;1:短信,2:邮箱
+     */
+    private String remindMethod;
+
+    /**
+     * 发送状态;1:短信成功,2:短信失败,3:邮箱成功,4:邮箱失败
+     */
+    private String sendStatus;
+
+    /**
+     * 发送内容
+     */
+    private String sendContext;
+
+    /**
+     * 发送时间
+     */
+    private LocalDateTime sendTime;
+
+    /**
+     * 创建用户
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 单位名称
+     */
+    @TableField(exist = false)
+    private String companyName;
+
+    /**
+     * 到期日期
+     */
+    @TableField(exist = false)
+    private String expireDate;
+}

+ 116 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/CrmInvoiceInfo.java

@@ -0,0 +1,116 @@
+package com.usky.iot.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+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-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CrmInvoiceInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 客户管理id
+     */
+    private Integer customId;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+
+    /**
+     * 税号
+     */
+    private String dutyId;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 申请人
+     */
+    private String applicant;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 金额
+     */
+    private Double amount;
+
+    /**
+     * 发票类型;1:普票,2:专票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 发票性质;1:电子发票,2:纸质发票
+     */
+    private Integer invoiceAttribute;
+
+    /**
+     * 邮寄地址
+     */
+    private String sendAddress;
+
+    /**
+     * 付款回执
+     */
+    private String paymentReceipt;
+
+    /**
+     * 创建用户
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 开票状态;1:未开票,2:已开票
+     */
+    private Integer invoiceStatus;
+
+    /**
+     * 项目编号
+     */
+    @TableField(exist = false)
+    private Integer projectId;
+}

+ 5 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java

@@ -122,6 +122,11 @@ public class DmpDeviceInfo implements Serializable {
      */
     private Integer serviceStatus;
 
+    /**
+     * 产品编码
+     */
+    private String productCode;
+
     /**
      * 设备状态;1:在线,2:离线
      */

+ 4 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpProductInfo.java

@@ -136,6 +136,10 @@ public class DmpProductInfo implements Serializable {
      */
     private Integer tenantId;
 
+    /**
+     * 产品编码
+     */
+    private String productCode;
 
     /**
      * 设备总数

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmCustomInfoMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 客户管理信息表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+public interface CrmCustomInfoMapper extends CrudMapper<CrmCustomInfo> {
+
+}

+ 16 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmCustomRemindMapper.java

@@ -0,0 +1,16 @@
+package com.usky.iot.mapper;
+
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 客户提醒信息表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface CrmCustomRemindMapper extends CrudMapper<CrmCustomRemind> {
+
+}

+ 25 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/CrmInvoiceInfoMapper.java

@@ -0,0 +1,25 @@
+package com.usky.iot.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.common.mybatis.core.CrudMapper;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import com.usky.iot.service.vo.CrmInvoiceInfoVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 客户发票信息表 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+public interface CrmInvoiceInfoMapper extends CrudMapper<CrmInvoiceInfo> {
+    Page<CrmInvoiceInfo> page(IPage<CrmInvoiceInfo> page, @Param("gr")CrmInvoiceInfoRequest crmInvoiceInfoRequest);
+
+    List<CrmInvoiceInfo> export(@Param("gr")CrmInvoiceInfoRequest crmInvoiceInfoRequest);
+}

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

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpDeviceInfo;
+import com.usky.iot.domain.DmpProductInfo;
 import com.usky.iot.service.vo.DmpDeviceInfoRequest;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,7 +21,7 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface DmpDeviceInfoMapper extends CrudMapper<DmpDeviceInfo> {
 
-
+    List<DmpProductInfo> getProductInfo(String productCode);
 
     Page<DmpDeviceInfo> page(IPage<DmpDeviceInfo> page, @Param("ar")DmpDeviceInfoRequest dmpDeviceInfoRequest);
 }

+ 34 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmCustomInfoService.java

@@ -0,0 +1,34 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.CrmCustomInfoExportVO;
+import com.usky.iot.service.vo.CrmCustomInfoRequestVO;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * 客户管理信息表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+public interface CrmCustomInfoService extends CrudService<CrmCustomInfo> {
+    void add(CrmCustomInfo crmCustomInfo);
+
+    void edit(CrmCustomInfo crmCustomInfo);
+
+    void remove(Integer id);
+
+    CommonPage<CrmCustomInfo> page(CrmCustomInfoRequestVO crmCustomInfoRequestVO);
+
+    boolean checkNameUnique(CrmCustomInfo crmCustomInfo);
+
+    List<CrmCustomInfoExportVO> recordListExport(CrmCustomInfoRequestVO crmCustomInfoRequestVO);
+
+    void updateStatus();
+}

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

@@ -0,0 +1,21 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 客户提醒信息表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+public interface CrmCustomRemindService extends CrudService<CrmCustomRemind> {
+
+    void add(CrmCustomRemind crmCustomRemind);
+
+    CommonPage<CrmCustomRemind> page(Integer current, Integer size);
+
+}

+ 29 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/CrmInvoiceInfoService.java

@@ -0,0 +1,29 @@
+package com.usky.iot.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.iot.service.vo.CrmInvoiceInfoExportVO;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 客户发票信息表 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+public interface CrmInvoiceInfoService extends CrudService<CrmInvoiceInfo> {
+
+    void add(CrmInvoiceInfo invoiceInfo);
+
+    void update(CrmInvoiceInfo invoiceInfo);
+
+    CommonPage<CrmInvoiceInfo> page(CrmInvoiceInfoRequest crmInvoiceInfoRequest);
+
+    List<CrmInvoiceInfoExportVO> export(CrmInvoiceInfoRequest crmInvoiceInfoRequest);
+}

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

@@ -22,7 +22,7 @@ import java.util.Map;
  */
 public interface DmpDeviceInfoService extends CrudService<DmpDeviceInfo> {
 
-    boolean add(DmpDeviceInfo dmpDeviceInfo);
+    void add(DmpDeviceInfo dmpDeviceInfo);
 
     void update(DmpDeviceInfo dmpDeviceInfo);
 

+ 163 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomInfoServiceImpl.java

@@ -0,0 +1,163 @@
+package com.usky.iot.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.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.core.exception.BusinessException;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.CrmCustomInfo;
+import com.usky.iot.mapper.CrmCustomInfoMapper;
+import com.usky.iot.service.CrmCustomInfoService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.vo.CrmCustomInfoExportVO;
+import com.usky.iot.service.vo.CrmCustomInfoRequestVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * <p>
+ * 客户管理信息表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+@Service
+public class CrmCustomInfoServiceImpl extends AbstractCrudService<CrmCustomInfoMapper, CrmCustomInfo> implements CrmCustomInfoService {
+
+    @Override
+    public void add(CrmCustomInfo crmCustomInfo){
+        if(checkNameUnique(crmCustomInfo)){
+            throw new BusinessException("新增客户管理失败,项目名称"+crmCustomInfo.getProjectName()+"已经存在");
+        }
+
+        if(crmCustomInfo.getExpireTime().compareTo(LocalDateTime.now())<0){
+            crmCustomInfo.setMaintainStatus(2);
+        }else{
+            crmCustomInfo.setMaintainStatus(1);
+        }
+        crmCustomInfo.setCreateBy(SecurityUtils.getUsername());
+        crmCustomInfo.setCreateTime(LocalDateTime.now());
+        crmCustomInfo.setTenantId(SecurityUtils.getTenantId());
+        this.save(crmCustomInfo);
+
+    }
+
+    @Override
+    public void edit(CrmCustomInfo crmCustomInfo){
+        if(checkNameUnique(crmCustomInfo)){
+            throw new BusinessException("修改客户管理信息失败,项目名称"+crmCustomInfo.getProjectName()+"已经存在");
+        }
+        if(crmCustomInfo.getExpireTime().compareTo(LocalDateTime.now())<0){
+            crmCustomInfo.setMaintainStatus(2);
+        }else{
+            crmCustomInfo.setMaintainStatus(1);
+        }
+        crmCustomInfo.setUpdateBy(SecurityUtils.getUsername());
+        crmCustomInfo.setUpdateTime(LocalDateTime.now());
+        this.updateById(crmCustomInfo);
+    }
+
+    @Override
+    public void remove(Integer id){
+        CrmCustomInfo crmCustomInfo = this.getById(id);
+        Optional.ofNullable(crmCustomInfo).orElseThrow(()->new BusinessException("客户管理信息不存在"));
+        crmCustomInfo.setDeleteFlag(1);
+        this.updateById(crmCustomInfo);
+    }
+
+    @Override
+    public CommonPage<CrmCustomInfo> page(CrmCustomInfoRequestVO cus){
+        IPage<CrmCustomInfo> page = new Page<>(cus.getCurrent(),cus.getSize());
+        LambdaQueryWrapper<CrmCustomInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(cus.getProjectName()),CrmCustomInfo::getProjectName,cus.getProjectName())
+                .like(StringUtils.isNotBlank(cus.getCompanyName()),CrmCustomInfo::getCompanyName,cus.getCompanyName())
+                .eq(cus.getMaintainStatus() != null,CrmCustomInfo::getMaintainStatus,cus.getMaintainStatus())
+                .between(StringUtils.isNotBlank(cus.getStartTime())&&StringUtils.isNotBlank(cus.getEndTime()),CrmCustomInfo::getExpireTime,cus.getStartTime(),cus.getEndTime())
+                .eq(CrmCustomInfo::getDeleteFlag,0)
+                .orderByDesc(CrmCustomInfo::getId);
+        page = this.page(page,queryWrapper);
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),cus.getSize(),cus.getCurrent());
+
+    }
+
+    @Override
+    public List<CrmCustomInfoExportVO> recordListExport(CrmCustomInfoRequestVO cus){
+        List<CrmCustomInfoExportVO> list = new ArrayList<>();
+        LambdaQueryWrapper<CrmCustomInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(cus.getProjectName()),CrmCustomInfo::getProjectName,cus.getProjectName())
+                .like(StringUtils.isNotBlank(cus.getCompanyName()),CrmCustomInfo::getCompanyName,cus.getCompanyName())
+                .eq(cus.getMaintainStatus() != null,CrmCustomInfo::getMaintainStatus,cus.getMaintainStatus())
+                .between(StringUtils.isNotBlank(cus.getStartTime())&&StringUtils.isNotBlank(cus.getEndTime()),CrmCustomInfo::getExpireTime,cus.getStartTime(),cus.getEndTime())
+                .eq(CrmCustomInfo::getDeleteFlag,0)
+                .orderByDesc(CrmCustomInfo::getId);
+        List<CrmCustomInfo> list1 = this.list(queryWrapper);
+        if(CollectionUtils.isNotEmpty(list1)){
+            for(int i=0;i<list1.size();i++){
+                CrmCustomInfoExportVO exportVO = new CrmCustomInfoExportVO();
+                exportVO.setProjectId(list1.get(i).getProjectId());
+                exportVO.setProjectName(list1.get(i).getProjectName());
+                exportVO.setCompanyName(list1.get(i).getCompanyName());
+                exportVO.setCustomPerson(list1.get(i).getCustomPerson());
+                exportVO.setPhone(list1.get(i).getPhone());
+                exportVO.setMaintainAmount(list1.get(i).getMaintainAmount());
+                exportVO.setEmail(list1.get(i).getEmail());
+                exportVO.setSalePerson(list1.get(i).getSalePerson());
+                exportVO.setMaintainStatus(list1.get(i).getMaintainStatus());
+                exportVO.setExpireTime(list1.get(i).getExpireTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                exportVO.setCustomAddress(list1.get(i).getCustomAddress());
+
+                list.add(exportVO);
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public boolean checkNameUnique(CrmCustomInfo crmCustomInfo){
+        Integer id = null == crmCustomInfo.getId()?-1:crmCustomInfo.getId();
+        LambdaQueryWrapper<CrmCustomInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(CrmCustomInfo::getProjectName,crmCustomInfo.getProjectName())
+                    .eq(CrmCustomInfo::getDeleteFlag,0);
+        CrmCustomInfo one = this.getOne(queryWrapper);
+        return null != one && !Objects.equals(one.getId(),id);
+
+    }
+
+    @Override
+    public void updateStatus(){
+        LambdaQueryWrapper<CrmCustomInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(CrmCustomInfo::getDeleteFlag,0);
+        List<CrmCustomInfo> list = this.list(queryWrapper);
+        if(CollectionUtils.isNotEmpty(list)){
+            for(int i=0;i<list.size();i++){
+                CrmCustomInfo info = list.get(i);
+                if(list.get(i).getExpireTime().compareTo(LocalDateTime.now())<0){
+                    if(info.getMaintainStatus()!=2){
+                        info.setMaintainStatus(2);
+                        this.updateById(info);
+                    }
+                }else{
+                    if(info.getMaintainStatus()!=1){
+                        info.setMaintainStatus(1);
+                        this.updateById(info);
+                    }
+                }
+            }
+        }
+
+    }
+
+}

+ 118 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmCustomRemindServiceImpl.java

@@ -0,0 +1,118 @@
+package com.usky.iot.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.core.util.DateUtils;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.iot.domain.CrmCustomRemind;
+import com.usky.iot.mapper.CrmCustomRemindMapper;
+import com.usky.iot.service.CrmCustomRemindService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.google.gson.Gson;
+import sun.applet.Main;
+
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * <p>
+ * 客户提醒信息表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-27
+ */
+@Service
+public class CrmCustomRemindServiceImpl extends AbstractCrudService<CrmCustomRemindMapper, CrmCustomRemind> implements CrmCustomRemindService {
+
+    @Override
+    public void add(CrmCustomRemind crmCustomRemind){
+        String method = crmCustomRemind.getRemindMethod();
+        StringBuffer sendStatus = new StringBuffer();
+        StringBuffer sendContext = new StringBuffer();
+        //发送短信
+        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
+        IAcsClient client = new DefaultAcsClient(profile);
+        SendSmsRequest request = new SendSmsRequest();
+        request.setPhoneNumbers(crmCustomRemind.getPhone());//接收短信的手机号码
+        request.setSignName("上海永天科技股份有限公司");//短信签名名称
+        request.setTemplateCode("SMS_461850226");//短信模板CODE
+        Date date = DateUtils.parseDate(crmCustomRemind.getExpireDate());
+        long days = (date.getTime() - new Date().getTime())/(24*60*60*1000);
+
+        String custom = "#/pages/common/invoicing/index?customId="+crmCustomRemind.getCustomId();
+        request.setTemplateParam("{\"date\":\""+crmCustomRemind.getExpireDate()+"\","+"\"custom\":\""+custom+"\"}");//短信模板变量对应的实际值
+
+        try {
+            SendSmsResponse response = client.getAcsResponse(request);
+            if(response.getCode() != null){
+                if(response.getCode().equals("OK")){
+                    sendStatus.append("1");
+                    //查询发送短信内容
+
+                    try {
+                        Thread.sleep(3000);
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                    }
+
+                    QuerySendDetailsRequest request1 = new QuerySendDetailsRequest();
+                    request1.setPhoneNumber(crmCustomRemind.getPhone());
+                    request1.setSendDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+                    request1.setPageSize((long)10);
+                    request1.setCurrentPage((long)1);
+                    QuerySendDetailsResponse response1 = client.getAcsResponse(request1);
+                    if(response1.getCode() != null){
+                        if(response1.getCode().equals("OK")){
+                            sendContext.append(response1.getSmsSendDetailDTOs().get(0).getContent());
+                        }
+
+                    }
+
+                }else{
+                    sendStatus.append("2");
+                }
+            }
+            System.out.println(new Gson().toJson(response));
+        } catch (ClientException e) {
+            System.out.println("ErrCode:" + e.getErrCode());
+            System.out.println("ErrMsg:" + e.getErrMsg());
+            System.out.println("RequestId:" + e.getRequestId());
+        }
+
+        crmCustomRemind.setSendStatus(sendStatus.toString());  //发送状态需要根据发送返回结果确认
+        crmCustomRemind.setSendContext(sendContext.toString()); //发送内容
+        crmCustomRemind.setSendTime(LocalDateTime.now());
+        crmCustomRemind.setCreateBy(SecurityUtils.getUsername());
+        crmCustomRemind.setCreateTime(LocalDateTime.now());
+        crmCustomRemind.setTenantId(SecurityUtils.getTenantId());
+        this.save(crmCustomRemind);
+    }
+
+    @Override
+    public CommonPage<CrmCustomRemind> page(Integer current, Integer size){
+        IPage<CrmCustomRemind> page = new Page<>(current,size);
+        LambdaQueryWrapper<CrmCustomRemind> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.orderByDesc(CrmCustomRemind::getId);
+        page = this.page(page,queryWrapper);
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
+}

+ 92 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/CrmInvoiceInfoServiceImpl.java

@@ -0,0 +1,92 @@
+package com.usky.iot.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.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.CrmCustomInfo;
+import com.usky.iot.domain.CrmInvoiceInfo;
+import com.usky.iot.mapper.CrmInvoiceInfoMapper;
+import com.usky.iot.service.CrmCustomInfoService;
+import com.usky.iot.service.CrmInvoiceInfoService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.vo.CrmInvoiceInfoExportVO;
+import com.usky.iot.service.vo.CrmInvoiceInfoRequest;
+import com.usky.iot.service.vo.CrmInvoiceInfoVO;
+import org.apache.commons.lang.time.DateFormatUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 客户发票信息表 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-29
+ */
+@Service
+public class CrmInvoiceInfoServiceImpl extends AbstractCrudService<CrmInvoiceInfoMapper, CrmInvoiceInfo> implements CrmInvoiceInfoService {
+    @Autowired
+    private CrmCustomInfoService crmCustomInfoService;
+
+    @Override
+    public void add(CrmInvoiceInfo crmInvoiceInfo){
+
+        crmInvoiceInfo.setCreateBy(SecurityUtils.getUsername());
+        crmInvoiceInfo.setCreateTime(LocalDateTime.now());
+        crmInvoiceInfo.setTenantId(SecurityUtils.getTenantId());
+        crmInvoiceInfo.setInvoiceStatus(1);
+        this.save(crmInvoiceInfo);
+    }
+
+    @Override
+    public void update(CrmInvoiceInfo invoiceInfo){
+        this.updateById(invoiceInfo);
+    }
+
+    @Override
+    public CommonPage<CrmInvoiceInfo> page(CrmInvoiceInfoRequest crmInvoiceInfoRequest){
+        IPage<CrmInvoiceInfo> page = new Page<>(crmInvoiceInfoRequest.getCurrent(),crmInvoiceInfoRequest.getSize());
+        page = baseMapper.page(page,crmInvoiceInfoRequest);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getSize(),page.getCurrent());
+    }
+
+    @Override
+    public List<CrmInvoiceInfoExportVO> export(CrmInvoiceInfoRequest crmInvoiceInfoRequest){
+        List<CrmInvoiceInfoExportVO> list = new ArrayList<>();
+
+        List<CrmInvoiceInfo> list1 = baseMapper.export(crmInvoiceInfoRequest);
+        if(CollectionUtils.isNotEmpty(list1)){
+            for(int i=0;i<list1.size();i++){
+                CrmInvoiceInfoExportVO exportVO = new CrmInvoiceInfoExportVO();
+                exportVO.setProjectId(list1.get(i).getProjectId());
+                exportVO.setInvoiceTitle(list1.get(i).getInvoiceTitle());
+                exportVO.setDutyId(list1.get(i).getDutyId());
+                exportVO.setInvoiceAttribute(list1.get(i).getInvoiceAttribute());  //发票性质;1:电子发票,2:纸质发票
+                exportVO.setInvoiceType(list1.get(i).getInvoiceType()); //发票类型;1:普票,2:专票
+                exportVO.setAmount(list1.get(i).getAmount().toString());
+                exportVO.setApplicant(list1.get(i).getApplicant());
+                exportVO.setPhone(list1.get(i).getPhone());
+                exportVO.setEmail(list1.get(i).getEmail());
+                exportVO.setSendAddress(list1.get(i).getSendAddress());
+                exportVO.setPaymentReceipt(list1.get(i).getPaymentReceipt());
+                exportVO.setCreateTime(list1.get(i).getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                exportVO.setInvoiceStatus(list1.get(i).getInvoiceStatus());  //开票状态;1:未开票,2:已开票
+
+                list.add(exportVO);
+            }
+        }
+        return list;
+    }
+
+}

+ 25 - 22
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -20,11 +20,8 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.util.BeanMapperUtils;
 import com.usky.common.core.util.UUIDUtils;
 import com.usky.common.mybatis.core.AbstractCrudService;
-import com.usky.iot.domain.BaseGgpFacility;
+import com.usky.iot.domain.*;
 import com.usky.common.security.utils.SecurityUtils;
-import com.usky.iot.domain.BaseFacilityDevice;
-import com.usky.iot.domain.DmpDeviceInfo;
-import com.usky.iot.domain.DmpDeviceStatus;
 import com.usky.iot.mapper.DmpDeviceInfoMapper;
 import com.usky.iot.service.DmpDeviceInfoService;
 import com.usky.iot.service.DmpDeviceStatusService;
@@ -58,30 +55,36 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     private DmpDeviceStatusService dmpDeviceStatusService;
 
     @Override
-    public boolean add(DmpDeviceInfo dmpDeviceInfo) {
-        dmpDeviceInfo.setDeviceId(UUIDUtils.uuid());
-        dmpDeviceInfo.setCreatedBy(SecurityUtils.getUsername());
-        dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+    public void add(DmpDeviceInfo dmpDeviceInfo) {
         if (checkNameUnique(dmpDeviceInfo)){
-            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
+            throw new BusinessException("新增设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,设备信息已存在");
+        }
+        List<DmpProductInfo> list = baseMapper.getProductInfo(dmpDeviceInfo.getProductCode());
+        if(CollectionUtils.isNotEmpty(list)){
+            dmpDeviceInfo.setDeviceType(list.get(0).getDeviceType());
+            dmpDeviceInfo.setProductId(list.get(0).getId());
+            dmpDeviceInfo.setCreatedBy(SecurityUtils.getUsername());
+            dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
+            dmpDeviceInfo.setTenantId(SecurityUtils.getTenantId());
+            dmpDeviceInfo.setServiceStatus(1);
+            this.save(dmpDeviceInfo);
+
+            DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
+            dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
+            dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
+            dmpDeviceStatus.setDeviceStatus(2);
+            dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
+            dmpDeviceStatusService.save(dmpDeviceStatus);
         }
-        DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
-        dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
-        dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
-        dmpDeviceStatus.setDeviceStatus(2);
-        dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
-        dmpDeviceStatusService.save(dmpDeviceStatus);
-
-        return this.save(dmpDeviceInfo);
     }
 
     @Override
     public void update(DmpDeviceInfo dmpDeviceInfo) {
         dmpDeviceInfo.setUpdatedBy(SecurityUtils.getUsername());
         dmpDeviceInfo.setUpdatedTime(LocalDateTime.now());
-//        if (checkNameUnique(dmpDeviceInfo)){
-//            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceName() + "'失败,设备信息已存在");
-//        }
+        if (checkNameUnique(dmpDeviceInfo)){
+            throw new BusinessException("修改设备信息'" + dmpDeviceInfo.getDeviceId() + "'失败,设备信息已存在");
+        }
         this.updateById(dmpDeviceInfo);
 
     }
@@ -91,8 +94,8 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         Integer id = null == dmpDeviceInfo.getId() ? -1 : dmpDeviceInfo.getId();
         LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper
-                .eq(DmpDeviceInfo::getDeviceName,dmpDeviceInfo.getDeviceName())
-                .eq(DmpDeviceInfo::getProductId,dmpDeviceInfo.getProductId())
+                .eq(DmpDeviceInfo::getDeviceId,dmpDeviceInfo.getDeviceId())
+                .eq(DmpDeviceInfo::getProductCode,dmpDeviceInfo.getProductCode())
                 .eq(DmpDeviceInfo::getDeleteFlag,0);
         DmpDeviceInfo one = this.getOne(queryWrapper);
         return null != one && !Objects.equals(one.getId(), id);

+ 4 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductInfoServiceImpl.java

@@ -54,7 +54,7 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
     @Override
     public void add(DmpProductInfo dmpProductInfo) {
         if (checkNameUnique(dmpProductInfo)){
-            throw new BusinessException("新增产品信息'" + dmpProductInfo.getProductName() + "'失败,产品信息已存在");
+            throw new BusinessException("新增产品信息'" + dmpProductInfo.getProductCode() + "'失败,产品信息已存在");
         }
         dmpProductInfo.setCreatedBy(SecurityUtils.getUsername());
         dmpProductInfo.setCreatedTime(new Date());
@@ -107,16 +107,16 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
     public void update(DmpProductInfo dmpProductInfo) {
         dmpProductInfo.setUpdatedTime(new Date());
         if (checkNameUnique(dmpProductInfo)){
-            throw new BusinessException("修改产品信息'" + dmpProductInfo.getProductName() + "'失败,产品信息已存在");
+            throw new BusinessException("修改产品信息'" + dmpProductInfo.getProductCode() + "'失败,产品信息已存在");
         }
         this.updateById(dmpProductInfo);
     }
 
     @Override
-    public boolean checkNameUnique(DmpProductInfo dmpProductInfo) {
+    public boolean checkNameUnique(DmpProductInfo dmpProductInfo) { //根据产品编码判断唯一
         Integer id = null == dmpProductInfo.getId() ? -1 : dmpProductInfo.getId();
         LambdaQueryWrapper<DmpProductInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(DmpProductInfo::getProductName,dmpProductInfo.getProductName())
+        queryWrapper.eq(DmpProductInfo::getProductCode,dmpProductInfo.getProductCode())
                 .eq(DmpProductInfo::getDeleteFlag,0);
         DmpProductInfo one = this.getOne(queryWrapper);
         return null != one && !Objects.equals(one.getId(), id);

+ 99 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmCustomInfoExportVO.java

@@ -0,0 +1,99 @@
+package com.usky.iot.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.usky.common.core.annotation.Excel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 客户管理信息表-导出
+ * </p>
+ *
+ * @author han
+ * @since 2023-06-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CrmCustomInfoExportVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号")
+    private String projectId;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称")
+    private String projectName;
+
+    /**
+     * 单位名称
+     */
+    @Excel(name = "单位名称")
+    private String companyName;
+
+    /**
+     * 客户负责人
+     */
+    @Excel(name = "客户负责人")
+    private String customPerson;
+
+    /**
+     * 客户电话
+     */
+    @Excel(name = "客户电话")
+    private String phone;
+
+    /**
+     * 维保费
+     */
+    @Excel(name = "维保费")
+    private Double maintainAmount;
+
+    /**
+     * 客户邮箱
+     */
+    @Excel(name = "客户邮箱")
+    private String email;
+
+    /**
+     * 销售负责人
+     */
+    @Excel(name = "销售负责人")
+    private String salePerson;
+
+    /**
+     * 状态;1:使用中,2:已到期
+     */
+    @Excel(name = "状态", readConverterExp = "1=使用中,2=已到期")
+    private Integer maintainStatus;
+
+    /**
+     * 到期时间
+     */
+    @Excel(name = "到期时间")
+    private String expireTime;
+
+    /**
+     * 客户地址
+     */
+    @Excel(name = "客户地址")
+    private String customAddress;
+}

+ 40 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmCustomInfoRequestVO.java

@@ -0,0 +1,40 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class CrmCustomInfoRequestVO {
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 单位名称
+     */
+    private String companyName;
+
+    /**
+     * 状态;1:使用中,2:已到期
+     */
+    private Integer maintainStatus;
+
+    /**
+     * 开始时间
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+}

+ 96 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoExportVO.java

@@ -0,0 +1,96 @@
+package com.usky.iot.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.usky.common.core.annotation.Excel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class CrmInvoiceInfoExportVO  implements Serializable {
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号")
+    private Integer projectId;
+
+    /**
+     * 发票抬头
+     */
+    @Excel(name = "发票抬头")
+    private String invoiceTitle;
+
+    /**
+     * 税号
+     */
+    @Excel(name = "税号")
+    private String dutyId;
+
+    /**
+     * 发票性质;1:电子发票,2:纸质发票
+     */
+    @Excel(name = "发票性质", readConverterExp = "1=电子发票,2=纸质发票")
+    private Integer invoiceAttribute;
+
+    /**
+     * 发票类型;1:普票,2:专票
+     */
+    @Excel(name = "发票类型", readConverterExp = "1=普票,2=专票")
+    private Integer invoiceType;
+
+    /**
+     * 金额
+     */
+    @Excel(name = "金额")
+    private String amount;
+
+    /**
+     * 开票状态;1:未开票,2:已开票
+     */
+    @Excel(name = "开票状态", readConverterExp = "1=未开票,2=已开票")
+    private Integer invoiceStatus;
+
+    /**
+     * 申请人
+     */
+    @Excel(name = "申请人")
+    private String applicant;
+
+    /**
+     * 联系方式
+     */
+    @Excel(name = "联系方式")
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    @Excel(name = "邮箱")
+    private String email;
+
+    /**
+     * 邮寄地址
+     */
+    @Excel(name = "邮寄地址")
+    private String sendAddress;
+
+    /**
+     * 付款回执
+     */
+    @Excel(name = "付款回执")
+    private String paymentReceipt;
+
+    /**
+     * 提交时间
+     */
+    @Excel(name = "提交时间")
+    private String createTime;
+
+}

+ 41 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoRequest.java

@@ -0,0 +1,41 @@
+package com.usky.iot.service.vo;
+
+import lombok.Data;
+
+@Data
+public class CrmInvoiceInfoRequest {
+
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 项目编号
+     */
+    private String projectId;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+
+    /**
+     * 开票状态;1:未开票,2:已开票
+     */
+    private Integer invoiceStatus;
+
+    /**
+     * 开始时间
+     */
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    private String endTime;
+}

+ 69 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/CrmInvoiceInfoVO.java

@@ -0,0 +1,69 @@
+package com.usky.iot.service.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class CrmInvoiceInfoVO {
+
+    /**
+     * 项目编号
+     */
+    private String projectId;
+
+    /**
+     * 发票抬头
+     */
+    private String invoiceTitle;
+
+    /**
+     * 税号
+     */
+    private String dutyId;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 申请人
+     */
+    private String applicant;
+
+    /**
+     * 手机号码
+     */
+    private String phone;
+
+    /**
+     * 金额
+     */
+    private Double amount;
+
+    /**
+     * 发票类型;1:普票,2:专票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 发票性质;1:电子发票,2:纸质发票
+     */
+    private Integer invoiceAttribute;
+
+    /**
+     * 邮寄地址
+     */
+    private String sendAddress;
+
+    /**
+     * 付款回执
+     */
+    private String paymentReceipt;
+
+    /**
+     * 提交时间
+     */
+    private String createTime;
+}

+ 29 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmCustomInfoMapper.xml

@@ -0,0 +1,29 @@
+<?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.iot.mapper.CrmCustomInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmCustomInfo">
+        <id column="id" property="id" />
+        <result column="project_id" property="projectId" />
+        <result column="project_name" property="projectName" />
+        <result column="company_name" property="companyName" />
+        <result column="custom_person" property="customPerson" />
+        <result column="phone" property="phone" />
+        <result column="phone1" property="phone1" />
+        <result column="maintain_amount" property="maintainAmount" />
+        <result column="email" property="email" />
+        <result column="sale_person" property="salePerson" />
+        <result column="maintain_status" property="maintainStatus" />
+        <result column="expire_time" property="expireTime" />
+        <result column="custom_address" property="customAddress" />
+        <result column="context" property="context" />
+        <result column="delete_flag" property="deleteFlag" />
+        <result column="created_by" property="createdBy" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_by" property="updatedBy" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 22 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmCustomRemindMapper.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.iot.mapper.CrmCustomRemindMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmCustomRemind">
+        <id column="id" property="id" />
+        <result column="custom_id" property="customId" />
+        <result column="custom_name" property="customName" />
+        <result column="phone" property="phone" />
+        <result column="email" property="email" />
+        <result column="remind_method" property="remindMethod" />
+        <result column="send_status" property="sendStatus" />
+        <result column="send_context" property="sendContext" />
+        <result column="send_time" property="sendTime" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 71 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/CrmInvoiceInfoMapper.xml

@@ -0,0 +1,71 @@
+<?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.iot.mapper.CrmInvoiceInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.iot.domain.CrmInvoiceInfo">
+        <id column="id" property="id" />
+        <result column="custom_id" property="customId" />
+        <result column="invoice_title" property="invoiceTitle" />
+        <result column="duty_id" property="dutyId" />
+        <result column="email" property="email" />
+        <result column="applicant" property="applicant" />
+        <result column="phone" property="phone" />
+        <result column="amount" property="amount" />
+        <result column="invoice_type" property="invoiceType" />
+        <result column="invoice_attribute" property="invoiceAttribute" />
+        <result column="send_address" property="sendAddress" />
+        <result column="payment_receipt" property="paymentReceipt" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+    <select id="page" resultType="com.usky.iot.domain.CrmInvoiceInfo">
+        select
+        ci.*,
+        cc.project_id as projectId
+        from crm_invoice_info ci
+        left join crm_custom_info cc
+        on ci.custom_id = cc.id
+        <where>
+            <if test="gr.projectId != null">
+                and cc.project_id like CONCAT('%',#{gr.projectId},'%')
+            </if>
+            <if test="gr.invoiceTitle != null">
+                and ci.invoice_title like CONCAT('%',#{gr.invoiceTitle},'%')
+            </if>
+            <if test="gr.invoiceStatus != null">
+                and ci.invoice_status = #{gr.invoiceStatus}
+            </if>
+            <if test="gr.startTime != null and gr.startTime != '' and gr.endTime != null and gr.endTime != ''">
+                and  ci.create_time BETWEEN  #{gr.startTime} AND  #{gr.endTime}
+            </if>
+        </where>
+        order by ci.id desc
+    </select>
+    <select id="export" resultType="com.usky.iot.domain.CrmInvoiceInfo">
+        select
+        ci.*,
+        cc.project_id as projectId
+        from crm_invoice_info ci
+        left join crm_custom_info cc
+        on ci.custom_id = cc.id
+        <where>
+            <if test="gr.projectId != null">
+                and cc.project_id like CONCAT('%',#{gr.projectId},'%')
+            </if>
+            <if test="gr.invoiceTitle != null">
+                and ci.invoice_title like CONCAT('%',#{gr.invoiceTitle},'%')
+            </if>
+            <if test="gr.invoiceStatus != null">
+                and ci.invoice_status = #{gr.invoiceStatus}
+            </if>
+            <if test="gr.startTime != null and gr.startTime != '' and gr.endTime != null and gr.endTime != ''">
+                and  ci.create_time BETWEEN  #{gr.startTime} AND  #{gr.endTime}
+            </if>
+        </where>
+        order by ci.id desc
+    </select>
+</mapper>

+ 12 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

@@ -44,5 +44,17 @@
         </where>
         order by ddi.id desc
     </select>
+    <select id="getProductInfo" resultType="com.usky.iot.domain.DmpProductInfo">
+        select dpi.*
+        from dmp_product dpi
+        <where>
+            <if test="productCode != null">
+                and dpi.product_code = #{productCode}
+            </if>
+            <if test="1 == 1">
+                and dpi.delete_flag = 0
+            </if>
+        </where>
+    </select>
 
 </mapper>