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