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