From 464fe41610a39c3a06f070d5a01c930134ff0163 Mon Sep 17 00:00:00 2001
From: zf <1603559716@qq.com>
Date: 星期三, 30 八月 2023 09:05:05 +0800
Subject: [PATCH] 检查统计

---
 src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetyInspectionStatisticServiceImpl.java |  197 ++++++++++++++
 src/main/java/com/gk/hotwork/Domain/dto/resp/AreaInspectionCountRespDTO.java               |   63 ++++
 src/main/java/com/gk/hotwork/Mapper/CompanyInfoMapper.java                                 |    7 
 src/main/java/com/gk/hotwork/Mapper/mybatis/SafetySelfInspectionMapper.xml                 |   58 ++++
 src/main/java/com/gk/hotwork/Service/SafetySelfInspectionService.java                      |    6 
 src/main/java/com/gk/hotwork/Controller/SafetyInspectionStatisticCotroller.java            |   58 ++++
 src/main/java/com/gk/hotwork/Service/SafetyInspectionStatisticService.java                 |   18 +
 src/main/java/com/gk/hotwork/Mapper/SafetySelfInspectionMapper.java                        |    4 
 src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetySelfInspectionImpl.java             |   24 +
 src/main/java/com/gk/hotwork/Service/InspectionHiddenDangerService.java                    |    4 
 src/main/java/com/gk/hotwork/Mapper/mybatis/CompanyInfoMapper.xml                          |   58 ++++
 src/main/java/com/gk/hotwork/Domain/Do/StatisticCompanyCount.java                          |   20 +
 src/main/java/com/gk/hotwork/Domain/query/CountQuery.java                                  |   31 ++
 src/main/java/com/gk/hotwork/Mapper/InspectionHiddenDangerMapper.java                      |    4 
 src/main/java/com/gk/hotwork/Service/ServiceImpl/CompanyServiceImpl.java                   |   27 +
 src/main/java/com/gk/hotwork/Service/ServiceImpl/InspectionHiddenDangerServiceImpl.java    |   13 
 src/main/java/com/gk/hotwork/Domain/dto/resp/CompanyInspectionCountRespDTO.java            |   43 +++
 src/main/java/com/gk/hotwork/Domain/Do/CompanyInspectionCountDO.java                       |   33 ++
 src/main/java/com/gk/hotwork/Domain/Do/CompanyStatisticInspectionDO.java                   |   20 +
 src/main/java/com/gk/hotwork/Mapper/mybatis/InspectionHiddenDangerMapper.xml               |   51 +++
 src/main/java/com/gk/hotwork/Service/CompanyService.java                                   |   10 
 src/main/java/com/gk/hotwork/Domain/Do/SubordinateOrganizationInfoDO.java                  |   42 +++
 22 files changed, 790 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/gk/hotwork/Controller/SafetyInspectionStatisticCotroller.java b/src/main/java/com/gk/hotwork/Controller/SafetyInspectionStatisticCotroller.java
new file mode 100644
index 0000000..50d2760
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Controller/SafetyInspectionStatisticCotroller.java
@@ -0,0 +1,58 @@
+package com.gk.hotwork.Controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.gk.hotwork.Controller.Base.BaseController;
+import com.gk.hotwork.Domain.Utils.Msg;
+import com.gk.hotwork.Domain.dto.resp.SafetySelfInspectionRespDTO;
+import com.gk.hotwork.Domain.query.CountQuery;
+import com.gk.hotwork.Service.SafetyInspectionStatisticService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/22
+ * @time: 15:28
+ */
+@Api(tags = "自查清单_统计")
+@RestController
+@RequestMapping("/statistic")
+public class SafetyInspectionStatisticCotroller extends BaseController {
+    @Autowired
+    private SafetyInspectionStatisticService statisticService;
+
+    @ApiOperation("/统计")
+    @PostMapping("/getCountByArea")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "province",value = "省"),
+            @ApiImplicitParam(name = "city",value = "市"),
+            @ApiImplicitParam(name = "area",value = "县"),
+            @ApiImplicitParam(name = "startTime",value = "开始时间"),
+            @ApiImplicitParam(name = "endTime",value = "结束时间")
+    })
+    public Msg getCountByArea(@RequestBody CountQuery query) {
+        Msg msg = statisticService.getCountByArea(query,getUser());
+        return msg;
+    }
+    @ApiOperation("/未检查公司")
+    @PostMapping("/getUnCheckCompany")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "province",value = "省"),
+            @ApiImplicitParam(name = "city",value = "市"),
+            @ApiImplicitParam(name = "area",value = "县"),
+            @ApiImplicitParam(name = "startTime",value = "开始时间"),
+            @ApiImplicitParam(name = "endTime",value = "结束时间")
+    })
+    public Msg getUnCheckCompany(@RequestBody CountQuery query) {
+        Msg msg = statisticService.getUnCheckCompany(query);
+        return msg;
+    }
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/Do/CompanyInspectionCountDO.java b/src/main/java/com/gk/hotwork/Domain/Do/CompanyInspectionCountDO.java
new file mode 100644
index 0000000..dd54b7c
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/Do/CompanyInspectionCountDO.java
@@ -0,0 +1,33 @@
+package com.gk.hotwork.Domain.Do;
+
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/24
+ * @time: 14:27
+ */
+@Data
+public class CompanyInspectionCountDO {
+    private Long companyId;
+
+    //检查总数
+    private int checkTotal;
+    //未整改总数
+    private int sUnReTotal;
+    //整改总数
+    private int sReTotal;
+    //隐患总数
+    private int sHdTotal;
+    //一般总数
+    private int sSaTotal;
+    //重大总数
+    private int sMaTotal;
+    //一般整改总数
+    private int sSaReTotal;
+    //重大整改总数
+    private int sMaReTotal;
+
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/Do/CompanyStatisticInspectionDO.java b/src/main/java/com/gk/hotwork/Domain/Do/CompanyStatisticInspectionDO.java
new file mode 100644
index 0000000..6a9435c
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/Do/CompanyStatisticInspectionDO.java
@@ -0,0 +1,20 @@
+package com.gk.hotwork.Domain.Do;
+
+import lombok.Data;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/25
+ * @time: 15:11
+ */
+@Data
+public class CompanyStatisticInspectionDO {
+    private int checkCompanyCount;
+    private int endTotal;
+    private int toDoTotal;
+    private int checkTotal;
+    private int hdTotal;
+    private int unRectifyTotal;
+    private int rectifyTotal;
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/Do/StatisticCompanyCount.java b/src/main/java/com/gk/hotwork/Domain/Do/StatisticCompanyCount.java
new file mode 100644
index 0000000..037ebf8
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/Do/StatisticCompanyCount.java
@@ -0,0 +1,20 @@
+package com.gk.hotwork.Domain.Do;
+
+import lombok.Data;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/25
+ * @time: 11:01
+ */
+@Data
+public class StatisticCompanyCount {
+    private String province;
+
+    private String city;
+
+    private String area;
+
+    private Integer count;
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/Do/SubordinateOrganizationInfoDO.java b/src/main/java/com/gk/hotwork/Domain/Do/SubordinateOrganizationInfoDO.java
new file mode 100644
index 0000000..051b46e
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/Do/SubordinateOrganizationInfoDO.java
@@ -0,0 +1,42 @@
+package com.gk.hotwork.Domain.Do;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/24
+ * @time: 16:36
+ */
+public class SubordinateOrganizationInfoDO {
+    //省
+    private String Province;
+
+    //市
+    private String city;
+
+    //区县
+    private String area;
+
+    public String getProvince() {
+        return Province;
+    }
+
+    public void setProvince(String province) {
+        Province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/dto/resp/AreaInspectionCountRespDTO.java b/src/main/java/com/gk/hotwork/Domain/dto/resp/AreaInspectionCountRespDTO.java
new file mode 100644
index 0000000..1f7d52d
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/dto/resp/AreaInspectionCountRespDTO.java
@@ -0,0 +1,63 @@
+package com.gk.hotwork.Domain.dto.resp;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/22
+ * @time: 15:59
+ */
+@Data
+public class AreaInspectionCountRespDTO {
+    /**
+     * 地区名称
+     */
+    private String province;
+
+    private String city;
+
+    private String area;
+    /**
+     * 企业总数
+     */
+    private int companyTotal;
+    /**
+     * 创建自查清单企业数
+     */
+    private int checkCompanyCount;
+    /**
+     * 自查清单总数
+     */
+    private int checkTotal;
+    /**
+     * 未结单
+     */
+    private int toDoTotal;
+    /**
+     * 结单数据
+     */
+    private int endTotal;
+    /**
+     * 未自查企业
+     */
+    private int unCheckCompanyCount;
+    /**
+     * 隐患总数
+     */
+    private int hdTotal;
+    /**
+     * 未整改数量
+     */
+    private int unRectifyTotal;
+    /**
+     * 已整改数量
+     */
+    private int rectifyTotal;
+    /**
+     * 整改率
+     */
+    private BigDecimal rectifyRate;
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/dto/resp/CompanyInspectionCountRespDTO.java b/src/main/java/com/gk/hotwork/Domain/dto/resp/CompanyInspectionCountRespDTO.java
new file mode 100644
index 0000000..899e9c6
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/dto/resp/CompanyInspectionCountRespDTO.java
@@ -0,0 +1,43 @@
+package com.gk.hotwork.Domain.dto.resp;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/24
+ * @time: 10:14
+ */
+@Data
+public class CompanyInspectionCountRespDTO {
+
+    private Long companyId;
+
+    private String companyName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm" , timezone = "GMT+8")
+    private Date lastTime;
+
+    //检查总数
+    private int checkTotal;
+    //未整改总数
+    private int sUnReTotal;
+    //整改总数
+    private int sReTotal;
+    //隐患总数
+    private int sHdTotal;
+    //一般总数
+    private int sSaTotal;
+    //重大总数
+    private int sMaTotal;
+    //一般整改总数
+    private int sSaReTotal;
+    //重大整改总数
+    private int sMaReTotal;
+    //整改率
+    private BigDecimal rectifyRate;
+}
diff --git a/src/main/java/com/gk/hotwork/Domain/query/CountQuery.java b/src/main/java/com/gk/hotwork/Domain/query/CountQuery.java
new file mode 100644
index 0000000..ca67079
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Domain/query/CountQuery.java
@@ -0,0 +1,31 @@
+package com.gk.hotwork.Domain.query;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/22
+ * @time: 15:42
+ */
+@Data
+public class CountQuery {
+
+    private String province;
+
+    private String city;
+
+    private String area;
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date startTime;
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date endTime;
+
+    private Integer pageIndex;
+
+    private Integer pageSize;
+}
diff --git a/src/main/java/com/gk/hotwork/Mapper/CompanyInfoMapper.java b/src/main/java/com/gk/hotwork/Mapper/CompanyInfoMapper.java
index 6bd117f..0ae6fd3 100644
--- a/src/main/java/com/gk/hotwork/Mapper/CompanyInfoMapper.java
+++ b/src/main/java/com/gk/hotwork/Mapper/CompanyInfoMapper.java
@@ -3,7 +3,9 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gk.hotwork.Domain.CompanyInfo;
+import com.gk.hotwork.Domain.Do.StatisticCompanyCount;
 import com.gk.hotwork.Domain.query.CompanyQuery;
+import com.gk.hotwork.Domain.query.CountQuery;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -23,4 +25,9 @@
 
 
     List<CompanyInfo> selectCompanyList(@Param("query") CompanyQuery query);
+    List<CompanyInfo> selectCompanyList(Page<CompanyInfo> page,@Param("query") CompanyQuery query);
+
+    Integer getCountByArea(@Param("params")Map<String,Object> params);
+
+    List<CompanyInfo> getUncheckCompanyByArea(Page<CompanyInfo> page,@Param("query") CountQuery query);
 }
diff --git a/src/main/java/com/gk/hotwork/Mapper/InspectionHiddenDangerMapper.java b/src/main/java/com/gk/hotwork/Mapper/InspectionHiddenDangerMapper.java
index 47ebbaa..5298af2 100644
--- a/src/main/java/com/gk/hotwork/Mapper/InspectionHiddenDangerMapper.java
+++ b/src/main/java/com/gk/hotwork/Mapper/InspectionHiddenDangerMapper.java
@@ -3,9 +3,11 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gk.hotwork.Domain.Do.CompanyInspectionCountDO;
 import com.gk.hotwork.Domain.InspectionHiddenDanger;
 import com.gk.hotwork.Domain.SafetySelfInspection;
 import com.gk.hotwork.Domain.SafetySelfInspectionDO;
+import com.gk.hotwork.Domain.query.CountQuery;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -27,4 +29,6 @@
     IPage<SafetySelfInspectionDO> selectPages(Page<SafetySelfInspection> page, @Param("params") Map<String, Object> params);
 
     List<InspectionHiddenDanger> inspectionHdangerlist(Long selfInspectionId);
+
+    List<CompanyInspectionCountDO> getStatisticHiddenDanger(@Param("query") CountQuery query);
 }
diff --git a/src/main/java/com/gk/hotwork/Mapper/SafetySelfInspectionMapper.java b/src/main/java/com/gk/hotwork/Mapper/SafetySelfInspectionMapper.java
index f6c7a17..0d6cbc7 100644
--- a/src/main/java/com/gk/hotwork/Mapper/SafetySelfInspectionMapper.java
+++ b/src/main/java/com/gk/hotwork/Mapper/SafetySelfInspectionMapper.java
@@ -3,9 +3,12 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gk.hotwork.Domain.Do.CompanyStatisticInspectionDO;
 import com.gk.hotwork.Domain.SafetySelfInspection;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
 import java.util.Map;
 
 @Repository
@@ -14,4 +17,5 @@
     IPage<SafetySelfInspection> selectPages(@Param("page") Page<SafetySelfInspection> page,@Param("params") Map<String, Object> params);
 
 
+    CompanyStatisticInspectionDO companyStatisticInspection(@Param("params") Map<String, Object> params);
 }
diff --git a/src/main/java/com/gk/hotwork/Mapper/mybatis/CompanyInfoMapper.xml b/src/main/java/com/gk/hotwork/Mapper/mybatis/CompanyInfoMapper.xml
index bb1cc7b..9587e36 100644
--- a/src/main/java/com/gk/hotwork/Mapper/mybatis/CompanyInfoMapper.xml
+++ b/src/main/java/com/gk/hotwork/Mapper/mybatis/CompanyInfoMapper.xml
@@ -150,4 +150,62 @@
       </if>
     </where>
   </select>
+  <select id="getCountByArea" resultType="java.lang.Integer">
+    SELECT count(*) FROM company
+    where isdel = 0
+    <if test="params.province != null and params.province !=''">
+      and province = #{params.province}
+    </if>
+    <if test="params.city != null and params.city !=''">
+      and city = #{params.city}
+    </if>
+    <if test="params.area != null and params.area !=''">
+      and area = #{params.area}
+    </if>
+  </select>
+
+  <select id="getUncheckCompanyByArea"  resultType="com.gk.hotwork.Domain.CompanyInfo">
+    SELECT
+      c1.*
+    FROM
+      company c1
+    WHERE
+      c1.isdel = 0
+      <if test="query.province != null and query.province !=''">
+        and c1.province = #{query.province}
+      </if>
+      <if test="query.city != null and query.city !=''">
+        and c1.city = #{query.city}
+      </if>
+      <if test="query.area != null and query.area !=''">
+        and c1.area = #{query.area}
+      </if>
+      AND c1.id NOT IN (
+      SELECT
+        s.checked_company_id
+      FROM
+        safety_self_inspection s
+          INNER JOIN company c ON c.id = s.checked_company_id
+      WHERE
+        s.valid_flag = 1
+        AND s.flag = 2
+        <if test="query.province != null and query.province !=''">
+          and c.province = #{query.province}
+        </if>
+        <if test="query.city != null and query.city !=''">
+          and c.city = #{query.city}
+        </if>
+        <if test="query.area != null and query.area !=''">
+          and c.area = #{query.area}
+        </if>
+        <if test="query.startTime != null" >
+          and s.inspection_time <![CDATA[ >= ]]> #{query.startTime}
+        </if>
+        <if test="query.endTime != null" >
+          and s.inspection_time <![CDATA[ <= ]]> #{query.endTime}
+        </if>
+      GROUP BY
+        s.checked_company_id
+    )
+  </select>
 </mapper>
diff --git a/src/main/java/com/gk/hotwork/Mapper/mybatis/InspectionHiddenDangerMapper.xml b/src/main/java/com/gk/hotwork/Mapper/mybatis/InspectionHiddenDangerMapper.xml
index 4c53600..8292ab2 100644
--- a/src/main/java/com/gk/hotwork/Mapper/mybatis/InspectionHiddenDangerMapper.xml
+++ b/src/main/java/com/gk/hotwork/Mapper/mybatis/InspectionHiddenDangerMapper.xml
@@ -104,5 +104,56 @@
         and h.self_inspection_id = #{selfInspectionId}
     </select>
 
+    <select id="getStatisticHiddenDanger" resultType="com.gk.hotwork.Domain.Do.CompanyInspectionCountDO">
+        select
+            l.checked_company_id as companyId,
+            count(l.id) as checkTotal,
+            sum(l.unRectifyTotal) as sUnReTotal,
+            sum(l.reTotal) as sReTotal,
+            sum(l.hdTocal) as sHdTotal,
+            sum(l.saTotal) as sSaTotal,
+            sum(l.maTotal) as sMaTotal,
+            sum(l.saReTotal) as sSaReTotal,
+            sum(l.maReTotal) as sMaReTotal
+        from (
+                 SELECT
+                     s.id,
+                     s.checked_company_id,
+                     t.*
+                 FROM
+                     safety_self_inspection s
+                         INner JOIN company c on s.checked_company_id = c.id
+                         LEFT JOIN (
+                         SELECT
+                             h.self_Inspection_id,
+                             count( h.`status` = - 1 OR NULL ) unRectifyTotal,
+                             count( h.`status` = 1 OR NULL ) reTotal,
+                             count( h.`status` ) hdTocal,
+                             count( h.LEVEL = 1 OR NULL ) saTotal,
+                             count( h.LEVEL = 2 OR NULL ) maTotal,
+                             count( h.LEVEL = 1 AND h.`status` = 1 OR NULL ) saReTotal,
+                             count( h.LEVEL = 2 AND h.`status` = 1 OR NULL ) maReTotal
+                         FROM
+                             inspection_hidden_danger h
+                         WHERE
+                             h.valid_flag = 1
+                         GROUP BY
+                             h.self_Inspection_id
+                     ) t ON t.self_Inspection_id = s.id
+                 WHERE
+                        s.valid_flag = 1
+                        and s.flag = 2
+                    <if test="query.startTime != null" >
+                        and s.inspection_time <![CDATA[ >= ]]> #{query.startTime}
+                    </if>
+                    <if test="query.endTime != null" >
+                        and s.inspection_time <![CDATA[ <= ]]> #{query.endTime}
+                    </if>
+                    <if test="query.area != null and query.area != ''" >
+                        and c.area = #{query.area}
+                    </if>
+             ) l
+        GROUP BY l.checked_company_id
+    </select>
 
 </mapper>
diff --git a/src/main/java/com/gk/hotwork/Mapper/mybatis/SafetySelfInspectionMapper.xml b/src/main/java/com/gk/hotwork/Mapper/mybatis/SafetySelfInspectionMapper.xml
index ec4215d..5122a01 100644
--- a/src/main/java/com/gk/hotwork/Mapper/mybatis/SafetySelfInspectionMapper.xml
+++ b/src/main/java/com/gk/hotwork/Mapper/mybatis/SafetySelfInspectionMapper.xml
@@ -62,5 +62,61 @@
     </if>
     order by a.create_time desc
   </select>
-
+  <select id="companyStatisticInspection" resultType="com.gk.hotwork.Domain.Do.CompanyStatisticInspectionDO">
+    SELECT
+      count( 1 ) checkCompanyCount,
+      sum( l.endCount ) endTotal,
+      sum( l.toDoCount ) toDoTotal,
+      sum( l.checkCount ) checkTotal,
+      sum( l.unRectifyCount ) unRectifyTotal,
+      sum( l.rectifyCount ) rectifyTotal,
+      sum( l.hdCount ) AS hdTotal
+    FROM
+      (
+        SELECT
+          s.checked_company_id,
+          count( s.`status` = 2 OR NULL ) endCount,
+          count( s.`status` = 1 OR NULL ) toDoCount,
+          count( 1 ) AS checkCount,
+          sum( t.unRectify ) AS unRectifyCount,
+          sum( t.rectify ) AS rectifyCount,
+          sum( t.hd ) AS hdCount
+        FROM
+          safety_self_inspection s
+            INNER JOIN company c ON c.id = s.checked_company_id
+            LEFT JOIN (
+            SELECT
+              h.self_Inspection_id,
+              count( h.`status` = - 1 OR NULL ) unRectify,
+              count( h.`status` = 1 OR NULL ) rectify,
+              count( 1 ) hd
+            FROM
+              inspection_hidden_danger h
+            WHERE
+              h.valid_flag = 1
+            GROUP BY
+              h.self_Inspection_id
+          ) t ON t.self_Inspection_id = s.id
+        WHERE
+          s.valid_flag = 1
+          AND s.flag = 2
+          <if test="params.startTime != null" >
+            and s.inspection_time <![CDATA[ >= ]]> #{params.startTime}
+          </if>
+          <if test="params.endTime != null " >
+            and s.inspection_time <![CDATA[ <= ]]> #{params.endTime}
+          </if>
+          <if test="params.province != null and params.province != ''" >
+            and c.province = #{params.province}
+          </if>
+          <if test="params.city != null and params.city != ''" >
+            and c.city = #{params.city}
+          </if>
+          <if test="params.area != null and params.area != ''" >
+            and c.area = #{params.area}
+          </if>
+        GROUP BY
+          s.checked_company_id
+      ) l
+  </select>
 </mapper>
diff --git a/src/main/java/com/gk/hotwork/Service/CompanyService.java b/src/main/java/com/gk/hotwork/Service/CompanyService.java
index e532450..9d3fd59 100644
--- a/src/main/java/com/gk/hotwork/Service/CompanyService.java
+++ b/src/main/java/com/gk/hotwork/Service/CompanyService.java
@@ -1,11 +1,16 @@
 package com.gk.hotwork.Service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gk.hotwork.Domain.CompanyInfo;
+import com.gk.hotwork.Domain.Do.StatisticCompanyCount;
 import com.gk.hotwork.Domain.UserInfo;
 import com.gk.hotwork.Domain.Utils.PageInfo;
+import com.gk.hotwork.Domain.query.CountQuery;
+import io.swagger.models.auth.In;
 
 import java.util.List;
+import java.util.Map;
 
 public interface CompanyService extends IService<CompanyInfo> {
 
@@ -22,4 +27,9 @@
     boolean isMain(String company);
 
     List<CompanyInfo> selectCompanyList(String companyName, UserInfo user);
+
+    Integer getCountByArea(Map<String,Object> params);
+
+    Page<CompanyInfo> getUncheckCompanyByArea(CountQuery query);
+    Page<CompanyInfo> getByArea(CountQuery query);
 }
diff --git a/src/main/java/com/gk/hotwork/Service/InspectionHiddenDangerService.java b/src/main/java/com/gk/hotwork/Service/InspectionHiddenDangerService.java
index 769ac7a..28f8769 100644
--- a/src/main/java/com/gk/hotwork/Service/InspectionHiddenDangerService.java
+++ b/src/main/java/com/gk/hotwork/Service/InspectionHiddenDangerService.java
@@ -3,10 +3,12 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gk.hotwork.Domain.Do.CompanyInspectionCountDO;
 import com.gk.hotwork.Domain.InspectionHiddenDanger;
 import com.gk.hotwork.Domain.SafetySelfInspection;
 import com.gk.hotwork.Domain.UserInfo;
 import com.gk.hotwork.Domain.Utils.PageInfo;
+import com.gk.hotwork.Domain.query.CountQuery;
 
 import java.util.List;
 import java.util.Map;
@@ -30,4 +32,6 @@
     IPage selectPage(Page<SafetySelfInspection> page, Map<String, Object> filter, UserInfo user);
 
     List<InspectionHiddenDanger> inspectionHdangerlist(Long selfInspectionId);
+
+    List<CompanyInspectionCountDO> getStatisticHiddenDanger(CountQuery query);
 }
diff --git a/src/main/java/com/gk/hotwork/Service/SafetyInspectionStatisticService.java b/src/main/java/com/gk/hotwork/Service/SafetyInspectionStatisticService.java
new file mode 100644
index 0000000..dcde0e5
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Service/SafetyInspectionStatisticService.java
@@ -0,0 +1,18 @@
+package com.gk.hotwork.Service;
+
+import com.gk.hotwork.Domain.UserInfo;
+import com.gk.hotwork.Domain.Utils.Msg;
+import com.gk.hotwork.Domain.dto.resp.SafetySelfInspectionRespDTO;
+import com.gk.hotwork.Domain.query.CountQuery;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/22
+ * @time: 15:41
+ */
+public interface SafetyInspectionStatisticService {
+    Msg getCountByArea(CountQuery query, UserInfo user);
+
+    Msg getUnCheckCompany(CountQuery query);
+}
diff --git a/src/main/java/com/gk/hotwork/Service/SafetySelfInspectionService.java b/src/main/java/com/gk/hotwork/Service/SafetySelfInspectionService.java
index 17d251f..de3f23d 100644
--- a/src/main/java/com/gk/hotwork/Service/SafetySelfInspectionService.java
+++ b/src/main/java/com/gk/hotwork/Service/SafetySelfInspectionService.java
@@ -4,11 +4,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gk.hotwork.Domain.AttachmentInfo;
+import com.gk.hotwork.Domain.Do.CompanyStatisticInspectionDO;
 import com.gk.hotwork.Domain.SafetySelfInspection;
 import com.gk.hotwork.Domain.SafetySelfInspectionItem;
 import com.gk.hotwork.Domain.UserInfo;
 import com.gk.hotwork.Domain.dto.resp.SafetySelfInspectionRespDTO;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -54,4 +56,8 @@
     void addItemExpert(List<SafetySelfInspectionItem> itemList, UserInfo user);
 
     void addCheckAttachment(List<AttachmentInfo> attachmentList, UserInfo user);
+
+    Date selectLastTimeByCompanyId(Long id,Date startTime,Date endTime);
+
+    CompanyStatisticInspectionDO companyStatisticInspection(Map<String,Object> params);
 }
diff --git a/src/main/java/com/gk/hotwork/Service/ServiceImpl/CompanyServiceImpl.java b/src/main/java/com/gk/hotwork/Service/ServiceImpl/CompanyServiceImpl.java
index d424e76..7260444 100644
--- a/src/main/java/com/gk/hotwork/Service/ServiceImpl/CompanyServiceImpl.java
+++ b/src/main/java/com/gk/hotwork/Service/ServiceImpl/CompanyServiceImpl.java
@@ -5,12 +5,15 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gk.hotwork.Domain.CompanyInfo;
+import com.gk.hotwork.Domain.Do.StatisticCompanyCount;
 import com.gk.hotwork.Domain.UserInfo;
 import com.gk.hotwork.Domain.Utils.PageInfo;
 import com.gk.hotwork.Domain.Utils.StringUtils;
 import com.gk.hotwork.Domain.query.CompanyQuery;
+import com.gk.hotwork.Domain.query.CountQuery;
 import com.gk.hotwork.Mapper.CompanyInfoMapper;
 import com.gk.hotwork.Service.CompanyService;
+import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -98,5 +101,29 @@
         return companyInfos;
     }
 
+    @Override
+    public Integer getCountByArea(Map<String,Object> params) {
+        return companyInfoMapper.getCountByArea(params);
+    }
+
+    @Override
+    public Page<CompanyInfo> getUncheckCompanyByArea(CountQuery query){
+        Page<CompanyInfo> page = new Page<>(query.getPageIndex(),query.getPageSize());
+
+        List<CompanyInfo> companyInfos = companyInfoMapper.getUncheckCompanyByArea(page,query);
+        page.setRecords(companyInfos);
+        return page;
+    }
+
+
+    @Override
+    public Page<CompanyInfo> getByArea(CountQuery query){
+       Page<CompanyInfo> page = new Page<>(query.getPageIndex(),query.getPageSize());
+       CompanyQuery companyQuery = new CompanyQuery();
+       companyQuery.setArea(query.getArea());
+       List<CompanyInfo> companyInfos = companyInfoMapper.selectCompanyList(page,companyQuery);
+       page.setRecords(companyInfos);
+       return page;
+    }
 
 }
diff --git a/src/main/java/com/gk/hotwork/Service/ServiceImpl/InspectionHiddenDangerServiceImpl.java b/src/main/java/com/gk/hotwork/Service/ServiceImpl/InspectionHiddenDangerServiceImpl.java
index 854ebd0..95386fa 100644
--- a/src/main/java/com/gk/hotwork/Service/ServiceImpl/InspectionHiddenDangerServiceImpl.java
+++ b/src/main/java/com/gk/hotwork/Service/ServiceImpl/InspectionHiddenDangerServiceImpl.java
@@ -5,11 +5,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gk.hotwork.Domain.*;
+import com.gk.hotwork.Domain.Do.CompanyInspectionCountDO;
 import com.gk.hotwork.Domain.Do.SafetySelfInspectionItemQualifiedCountDO;
 import com.gk.hotwork.Domain.Exception.BusinessException;
 import com.gk.hotwork.Domain.Utils.PageInfo;
 import com.gk.hotwork.Domain.Utils.StringUtils;
 import com.gk.hotwork.Domain.dto.resp.InspectionHiddenDangerRespDTO;
+import com.gk.hotwork.Domain.query.CountQuery;
 import com.gk.hotwork.Mapper.InspectionExpertMapper;
 import com.gk.hotwork.Mapper.InspectionHiddenDangerMapper;
 import com.gk.hotwork.Service.AttachmentInfoService;
@@ -157,6 +159,17 @@
 
     }
 
+    /**
+     * 统计
+     * @param query
+     * @return
+     */
+    @Override
+    public List<CompanyInspectionCountDO> getStatisticHiddenDanger(CountQuery query) {
+
+        return inspectionHiddenDangerMapper.getStatisticHiddenDanger(query);
+    }
+
     private void modrequiredVerification(InspectionHiddenDanger inspectionHiddenDanger){
         if(inspectionHiddenDanger.getId() == null){
             throw new BusinessException("隐患主键不可为空");
diff --git a/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetyInspectionStatisticServiceImpl.java b/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetyInspectionStatisticServiceImpl.java
new file mode 100644
index 0000000..b3a8b92
--- /dev/null
+++ b/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetyInspectionStatisticServiceImpl.java
@@ -0,0 +1,197 @@
+package com.gk.hotwork.Service.ServiceImpl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gk.hotwork.Domain.*;
+import com.gk.hotwork.Domain.Do.CompanyInspectionCountDO;
+import com.gk.hotwork.Domain.Do.CompanyStatisticInspectionDO;
+import com.gk.hotwork.Domain.Do.SubordinateOrganizationInfoDO;
+import com.gk.hotwork.Domain.Utils.BeanUtils;
+import com.gk.hotwork.Domain.Utils.Msg;
+import com.gk.hotwork.Domain.Utils.StringUtils;
+import com.gk.hotwork.Domain.dto.resp.AreaInspectionCountRespDTO;
+import com.gk.hotwork.Domain.dto.resp.CompanyInspectionCountRespDTO;
+import com.gk.hotwork.Domain.query.CountQuery;
+import com.gk.hotwork.Service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2023/8/22
+ * @time: 15:41
+ */
+@Service
+public class SafetyInspectionStatisticServiceImpl implements SafetyInspectionStatisticService {
+
+    private final static String province = "新疆维吾尔自治区";
+    @Autowired
+    private DistrictService districtService;
+    @Autowired
+    private CompanyService companyService;
+    @Autowired
+    private InspectionHiddenDangerService hiddenDangerService;
+    @Autowired
+    private SafetySelfInspectionService selfInspectionService;
+    @Override
+    public Msg getCountByArea(CountQuery query, UserInfo user) {
+        List<SubordinateOrganizationInfoDO> organizationInfos = null;
+
+        Integer type = user.getType();
+        //如果传来的区县级不为空,则表明是到县级
+        if(StringUtils.isNotBlank(query.getArea())){
+            return getAreaDataCount(query);
+        }
+        //如果传来市级不为空
+        if(StringUtils.isNotBlank(query.getCity())){
+            List<DistrictInfo>  districtInfos = districtService.selectDistrictByName("3", query.getCity(), "2");
+            organizationInfos = districtInfos.stream().map((districtInfo)->{
+                SubordinateOrganizationInfoDO organizationInfoDO = new SubordinateOrganizationInfoDO();
+                organizationInfoDO.setProvince(province);
+                organizationInfoDO.setCity(query.getCity());
+                organizationInfoDO.setArea(districtInfo.getName());
+                return organizationInfoDO;
+            }).collect(Collectors.toList());
+        }else {
+            //管理员
+            if(type.equals(1)){
+                List<DistrictInfo> districtInfos = districtService.selectDistrictByName("2", province, "1");
+                organizationInfos = districtInfos.stream().map((districtInfo)->{
+                    SubordinateOrganizationInfoDO organizationInfoDO = new SubordinateOrganizationInfoDO();
+                    organizationInfoDO.setProvince(province);
+                    organizationInfoDO.setCity(districtInfo.getName());
+                    return organizationInfoDO;
+                }).collect(Collectors.toList());
+            }
+            //监护人员
+            if(type.equals(2)){
+                //属于县级
+                if(StringUtils.isNotBlank(user.getCounty())){
+                    query.setArea(user.getCounty());
+                    return getAreaDataCount(query);
+                }
+                //属于市级
+                if(StringUtils.isNotBlank(user.getCity())){
+                    List<DistrictInfo> districtInfos = districtService.selectDistrictByName("3", user.getCity(), "2");
+                    organizationInfos = districtInfos.stream().map((districtInfo)->{
+                        SubordinateOrganizationInfoDO organizationInfoDO = new SubordinateOrganizationInfoDO();
+                        organizationInfoDO.setProvince(user.getProvince());
+                        organizationInfoDO.setCity(user.getCity());
+                        organizationInfoDO.setArea(districtInfo.getName());
+                        return organizationInfoDO;
+                    }).collect(Collectors.toList());
+                }
+                //属于省级
+                if(StringUtils.isNotBlank(user.getProvince())){
+                    List<DistrictInfo> districtInfos = districtService.selectDistrictByName("2", user.getProvince(), "1");
+                    organizationInfos = districtInfos.stream().map((districtInfo)->{
+                        SubordinateOrganizationInfoDO organizationInfoDO = new SubordinateOrganizationInfoDO();
+                        organizationInfoDO.setProvince(user.getProvince());
+                        organizationInfoDO.setCity(districtInfo.getName());
+                        return organizationInfoDO;
+                    }).collect(Collectors.toList());
+                }
+            }
+        }
+        List<AreaInspectionCountRespDTO> list = getDataCountSelfCheckInfo(query,organizationInfos);
+        Msg msg = new Msg();
+        msg.setCode("200");
+        msg.setResult("查询成功");
+        msg.setResult(list);
+        return msg;
+    }
+
+    @Override
+    public Msg getUnCheckCompany(CountQuery query) {
+        Page<CompanyInfo> uncheckCompanyByArea = companyService.getUncheckCompanyByArea(query);
+        Msg msg = new Msg();
+        msg.setCode("200");
+        msg.setResult("查询成功");
+        msg.setResult(uncheckCompanyByArea);
+        return msg;
+    }
+
+    private List<AreaInspectionCountRespDTO> getDataCountSelfCheckInfo(CountQuery query, List<SubordinateOrganizationInfoDO> organizationInfos) {
+
+        List<AreaInspectionCountRespDTO> respDTOList = new ArrayList<>();
+        for (SubordinateOrganizationInfoDO organizationInfo : organizationInfos) {
+            AreaInspectionCountRespDTO areaInspectionCountRespDTO = new AreaInspectionCountRespDTO();
+            //统计检查企业数量以及清单数量等
+            Map<String,Object> map = new HashMap<>();
+            map.put("startTime",query.getStartTime());
+            map.put("endTime",query.getEndTime());
+            map.put("province",organizationInfo.getProvince());
+            map.put("city",organizationInfo.getCity());
+            map.put("area",organizationInfo.getArea());
+            CompanyStatisticInspectionDO companyStatisticInspection = selfInspectionService.companyStatisticInspection(map);
+            BeanUtils.copyProperties(companyStatisticInspection,areaInspectionCountRespDTO);
+            areaInspectionCountRespDTO.setProvince(organizationInfo.getProvince());
+            areaInspectionCountRespDTO.setCity(organizationInfo.getCity());
+            areaInspectionCountRespDTO.setArea(organizationInfo.getArea());
+            areaInspectionCountRespDTO.setRectifyRate(areaInspectionCountRespDTO.getHdTotal() == 0 ? new BigDecimal(0).setScale(2,BigDecimal.ROUND_HALF_UP) : new BigDecimal(areaInspectionCountRespDTO.getRectifyTotal()).divide(new BigDecimal(areaInspectionCountRespDTO.getHdTotal()), 2, BigDecimal.ROUND_HALF_UP));
+            //统计公司总数量
+            int companyCount = companyService.getCountByArea(map);
+            areaInspectionCountRespDTO.setCompanyTotal(companyService.getCountByArea(map));
+            areaInspectionCountRespDTO.setUnCheckCompanyCount(companyCount-areaInspectionCountRespDTO.getCheckCompanyCount());
+            respDTOList.add(areaInspectionCountRespDTO);
+        }
+        return respDTOList;
+    }
+
+    private Msg getAreaDataCount(CountQuery query) {
+        if(query.getPageIndex() == null){
+            query.setPageIndex(1);
+        }
+        if(query.getPageSize() == null){
+            query.setPageSize(10);
+        }
+        //获取该地区所有企业隐患统计
+        List<CompanyInspectionCountDO> statisticHiddenDangerList = hiddenDangerService.getStatisticHiddenDanger(query);
+        //获取相关企业
+        Page<CompanyInfo> companyInfoPage = companyService.getByArea(query);
+        List<CompanyInspectionCountRespDTO> list = new ArrayList<>();
+        for (CompanyInfo companyInfo : companyInfoPage.getRecords()) {
+            CompanyInspectionCountRespDTO inspectionCountRespDTO = new CompanyInspectionCountRespDTO();
+            List<CompanyInspectionCountDO> collect = statisticHiddenDangerList
+                    .stream()
+                    .filter(statistic -> statistic.getCompanyId().equals(companyInfo.getId()))
+                    .collect(Collectors.toList());
+            if(collect.size() > 0){
+                CompanyInspectionCountDO companyInspectionCountDO = collect.get(0);
+                BeanUtils.copyProperties(companyInspectionCountDO,inspectionCountRespDTO);
+                inspectionCountRespDTO.setRectifyRate(companyInspectionCountDO.getSHdTotal() == 0 ? new BigDecimal(0).setScale(2,BigDecimal.ROUND_HALF_UP) : new BigDecimal(companyInspectionCountDO.getSReTotal()).divide(new BigDecimal(companyInspectionCountDO.getSHdTotal()), 2, BigDecimal.ROUND_HALF_UP));
+            }else {
+
+                inspectionCountRespDTO.setCheckTotal(0);
+                inspectionCountRespDTO.setSHdTotal(0);
+                inspectionCountRespDTO.setSMaTotal(0);
+                inspectionCountRespDTO.setSMaReTotal(0);
+                inspectionCountRespDTO.setSReTotal(0);
+                inspectionCountRespDTO.setSUnReTotal(0);
+                inspectionCountRespDTO.setSSaTotal(0);
+                inspectionCountRespDTO.setSSaReTotal(0);
+                inspectionCountRespDTO.setRectifyRate(new BigDecimal(0).setScale(2,BigDecimal.ROUND_HALF_UP));
+                inspectionCountRespDTO.setCompanyId(companyInfo.getId());
+            }
+            inspectionCountRespDTO.setCompanyName(companyInfo.getCompany());
+            inspectionCountRespDTO.setLastTime(selfInspectionService.selectLastTimeByCompanyId(companyInfo.getId(),query.getStartTime(),query.getEndTime()));
+            list.add(inspectionCountRespDTO);
+        }
+        Page<CompanyInspectionCountRespDTO> page = new Page<>();
+        BeanUtils.copyProperties(companyInfoPage,page);
+        page.setRecords(list);
+
+        Msg msg = new Msg();
+        msg.setCode("200");
+        msg.setMessage("查询成功");
+        msg.setResult(page);
+        return msg;
+    }
+}
diff --git a/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetySelfInspectionImpl.java b/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetySelfInspectionImpl.java
index d37efdd..1a8b085 100644
--- a/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetySelfInspectionImpl.java
+++ b/src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetySelfInspectionImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gk.hotwork.Domain.*;
+import com.gk.hotwork.Domain.Do.CompanyStatisticInspectionDO;
 import com.gk.hotwork.Domain.Do.SafetySelfInspectionItemQualifiedCountDO;
 import com.gk.hotwork.Domain.Exception.BusinessException;
 import com.gk.hotwork.Domain.Utils.BeanUtils;
@@ -754,6 +755,29 @@
         attachmentInfoService.updateBusinessIdBatch(attachmentList);
     }
 
+    @Override
+    public Date selectLastTimeByCompanyId(Long companyId,Date startTime,Date endTime) {
+        SafetySelfInspection inspection = safetySelfInspectionMapper.selectOne(new LambdaQueryWrapper<SafetySelfInspection>()
+                 .eq(SafetySelfInspection::getValidFlag,1)
+                .eq(SafetySelfInspection::getFlag, 2)
+                .eq(SafetySelfInspection::getCheckedCompanyId, companyId)
+                .ge(startTime != null,SafetySelfInspection::getInspectionTime,startTime)
+                .le(endTime != null,SafetySelfInspection::getInspectionTime,endTime)
+                .orderByDesc(SafetySelfInspection::getInspectionTime)
+                .last("limit 1"));
+        if(inspection != null){
+            return inspection.getInspectionTime();
+        }
+       return null;
+
+    }
+
+    @Override
+    public CompanyStatisticInspectionDO companyStatisticInspection(Map<String, Object> params) {
+
+        return safetySelfInspectionMapper.companyStatisticInspection(params);
+    }
+
     private void requiredAttachmentVerification(List<AttachmentInfo> attachmentList) {
         if(CollectionUtils.isEmpty(attachmentList)){
             throw new BusinessException("附件信息为空");

--
Gitblit v1.9.2