From 9ca0dc6e7833715b875cc9b6b91d5c497b2bae8b Mon Sep 17 00:00:00 2001
From: zf <1603559716@qq.com>
Date: 星期三, 30 八月 2023 09:05:45 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/hazardInvestigationSystem into zf

---
 src/main/java/com/gk/hotwork/Service/ServiceImpl/SafetyInspectionStatisticServiceImpl.java |  197 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 197 insertions(+), 0 deletions(-)

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

--
Gitblit v1.9.2