diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java index 30e9d7eed..4487a3877 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysDictItemService.java @@ -4,6 +4,7 @@ import com.jero.modules.system.entity.SysDictItem; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -46,4 +47,12 @@ public interface ISysDictItemService extends IService { * @return */ String disposeShowDictItemText(List sysDictItems,String fieldTexts,String cut,String dicCode); + + /** + * 根据字典code获取一级数据字典 + * @param dictCode + * @param sysDictItems + * @return + */ + Map> getFirstLevelSysDictItemByDictCode(String dictCode,List sysDictItems); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java index dc1122fe6..f0a7f27b6 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysDictItemServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.constant.CommonConstant; import com.jero.common.constant.enums.CutEnum; +import com.jero.modules.enums.DictCodeEnum; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.mapper.SysDictItemMapper; import com.jero.modules.system.service.ISysDictItemService; @@ -13,7 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -231,4 +234,27 @@ public class SysDictItemServiceImpl extends ServiceImpl> getFirstLevelSysDictItemByDictCode(String dictCode,List sysDictItems) { + List sysDictItemByDictCode = sysDictItems.stream().filter(sysDict -> { + boolean flag = false; + if (StringUtils.equals(sysDict.getDictCode(), dictCode)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + Map> result = null; + if(CollectionUtils.isNotEmpty(sysDictItemByDictCode)){ + result = sysDictItems.stream().filter(sysDict -> { + boolean flag = false; + if (StringUtils.isNotEmpty(sysDict.getStatNode())) { + flag = true; + } + return flag; + }).collect(Collectors.groupingBy(SysDictItem::getStatNode)); + } + return result; + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/OperatorTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/OperatorTypeEnum.java index c440e0b3c..548ac6a32 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/OperatorTypeEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/OperatorTypeEnum.java @@ -38,6 +38,8 @@ public enum OperatorTypeEnum { QUERY_PREHOMO_STATISTICS("查询prehomo统计","queryPrehomoStatistics"), QUERY_VERIFY_STATISTICS("查询验证符合性统计","queryVerifyStatistics"), QUERY_CERTIFICATION_PROGRESS_STATISTICS("查询认证进度统计","queryCertificationProgressStatistics"), + QUERY_FG_TASK_TO_CONFIRM_STATISTICS("查询法规任务确认统计","queryFGTaskToConfirmStatistics"), + QUERY_RZ_TASK_TO_CONFIRM_STATISTICS("查询认证任务确认统计","queryRZTaskToConfirmStatistics"), ADD_LAWS_OPINION_GATHER("添加法规意见收集数据","addLawsOpinionGather"), UPDATE_LAWS_OPINION_GATHER_GATHER_RESULT("更新法规意见收集数据收集结果","updateLawsOpinionGatherGatherResult"), diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryStatisticsService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryStatisticsService.java new file mode 100644 index 000000000..66059e1bd --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLibraryStatisticsService.java @@ -0,0 +1,35 @@ +package com.jero.modules.project.service; + +import com.jero.modules.project.entity.ProjectLawsInventoryEO; + +import java.util.List; +import java.util.Map; + +/** + * 项目库统计service + */ +public interface IProjectLibraryStatisticsService { + + /** + * 获取法规清单-任务确认统计信息-根据责任领域分组 + * @param datas + * @return + */ + Map getFGTaskToConfirmStatisticsGroupByTerritory(List datas, Map params); + + /** + * 获取设计符合性确认流程统计信息-根据责任领域分组 + * @param datas + * @param params + * @return + */ + Map getDesignComplianceStatisticeGroupByTerritory(List datas, Map params); + + /** + * 获取验证符合性确认流程统计信息-根据责任领域分组 + * @param datas + * @param params + * @return + */ + Map getVerifyComplianceStatisticeGroupByTerritory(List datas, Map params); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index b37caf6b3..a0dfbaf18 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -165,6 +165,9 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl lawsInventoryEOQueryWrapper = new QueryWrapper<>(); lawsInventoryEOQueryWrapper.lambda().eq(ProjectLawsInventoryEO::getProjectLibraryId,projectLibraryId); - lawsInventoryEOQueryWrapper.lambda().eq(ProjectLawsInventoryEO::getInventoryAffirmStatus, InventoryAffirmStatusEnum.ACCEPTED.getValue()); - lawsInventoryEOQueryWrapper.lambda().eq(ProjectLawsInventoryEO::getTaskAffirmStatus, TaskAffirmStatusEnum.ACCEPTED.getValue()); List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(lawsInventoryEOQueryWrapper); - List projectLawsInventoryIdList = projectLawsInventoryEOList.stream().distinct().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList()); - if(StringUtils.equals(OperatorTypeEnum.QUERY_CURRENT_PROJECT_STATUS_STATISTICS.getValue(),operatorType)){ - params.put("projectLawsInventoryIdList",projectLawsInventoryIdList); - List> conditionAssessmentMapList = this.conditionAssessmentEOService.getProjectStatusAssessStatisticsGroupByTerritory(params); - disposeData(conditionAssessmentMapList,cut); - result.put("dataList",conditionAssessmentMapList); - }else if(StringUtils.equals(OperatorTypeEnum.QUERY_LISTING_TO_CONFIRM_STATISTICS.getValue(),operatorType)){ - //清单确认 状态 - String inventoryAffirmStatus = (String) params.get("inventoryAffirmStatus"); - List> listingToConfirmList = this.projectLawsInventoryEOMapper.getListingToConfirmStatisticsGroupByTerritory(projectLibraryId,inventoryAffirmStatus); - disposeData(listingToConfirmList,cut); - result.put("dataList",listingToConfirmList); - }else if(StringUtils.equals(OperatorTypeEnum.QUERY_TASK_TO_CONFIRM_STATISTICS.getValue(),operatorType)){ - //任务确认 状态 - String taskAffirmStatus = (String) params.get("taskAffirmStatus"); - List> taskToConfirmList = this.projectLawsInventoryEOMapper.getTaskToConfirmStatisticsGroupByTerritory(projectLibraryId,taskAffirmStatus); - disposeData(taskToConfirmList,cut); - result.put("dataList",taskToConfirmList); - }else if(StringUtils.equals(OperatorTypeEnum.QUERY_DESIGN_STATISTICS.getValue(),operatorType)){ - //设计符合性 流程任务状态 - String designFlowTaskStatus = (String) params.get("designFlowTaskStatus"); - if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ - List> designComplianceList = this.projectTaskInventoryEOMapper.getDesignComplianceStatisticeGroupByTerritory(projectLawsInventoryIdList,designFlowTaskStatus); - disposeData(designComplianceList,cut); - result.put("dataList",designComplianceList); - } - }else if(StringUtils.equals(OperatorTypeEnum.QUERY_PREHOMO_STATISTICS.getValue(),operatorType)){ - //prehomo确认 流程任务状态 - String prehomoFlowTaskStatus = (String) params.get("prehomoFlowTaskStatus"); - if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ - List> prehomoList = this.projectTaskInventoryEOMapper.getPrehomoStatisticeGroupByTerritory(projectLawsInventoryIdList,prehomoFlowTaskStatus); - disposeData(prehomoList,cut); - result.put("dataList",prehomoList); - } - }else if(StringUtils.equals(OperatorTypeEnum.QUERY_VERIFY_STATISTICS.getValue(),operatorType)){ - //验证符合性 流程任务状态 - String verifyFlowTaskStatus = (String) params.get("verifyFlowTaskStatus"); + List sysDictItems = new ArrayList<>(); + // 法规清单所有的责任领域 + String pliDutyTerritoryStr = projectLawsInventoryEOList.stream().map(ProjectLawsInventoryEO::getDutyTerritory).collect(Collectors.joining(",")); + if (StringUtils.isNotEmpty(pliDutyTerritoryStr)) { + List pliDutyTerritoryList = Arrays.asList(pliDutyTerritoryStr.split(",")).stream().distinct().collect(Collectors.toList()); + sysDictItems = this.sysDictItemServiceImpl.selectItemsAll().stream().filter(sysDictItem -> { + boolean flag = false; + for (String pliDutyTerritory : pliDutyTerritoryList) { + if(StringUtils.equals(sysDictItem.getItemValue(),pliDutyTerritory)){ + flag = true; + break; + } + } + return flag; + }).collect(Collectors.toList()); + } - if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ - List> verifyComplianceList = this.projectTaskInventoryEOMapper.getVerifyComplianceStatisticeGroupByTerritory(projectLawsInventoryIdList,verifyFlowTaskStatus); - disposeData(verifyComplianceList,cut); - result.put("dataList",verifyComplianceList); - } - }else if(StringUtils.equals(OperatorTypeEnum.QUERY_CERTIFICATION_PROGRESS_STATISTICS.getValue(),operatorType)){ - //认证进度 流程任务状态 - String certificationProgress = (String) params.get("certificationProgress"); + Map pliEoMap = new HashMap<>(); - if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ - List> certificationProgressList = this.projectTaskInventoryEOMapper.getCertificationProgressStatisticsGroupByTerritory(projectLawsInventoryIdList,certificationProgress); - disposeData(certificationProgressList,cut); - result.put("dataList",certificationProgressList); + Map> firstLevelDutyTerritoryMap = this.sysDictItemServiceImpl.getFirstLevelSysDictItemByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue(),sysDictItems); + if(ObjectUtils.isNotEmpty(firstLevelDutyTerritoryMap)){ + // 根据责任领域组装法规清单数据,后续计算使用 + for (Map.Entry> firstLevelMap : firstLevelDutyTerritoryMap.entrySet()) { + String key = firstLevelMap.getKey(); + List dutyTerritoryList = firstLevelMap.getValue(); + if(StringUtils.isEmpty(key) || CollectionUtils.isEmpty(dutyTerritoryList)){ + continue; + } + List pliEoList = projectLawsInventoryEOList.stream().filter(pliEo -> { + boolean flag = false; + for (SysDictItem dutyTerritory : dutyTerritoryList) { + if (StringUtils.contains(pliEo.getDutyTerritory(), dutyTerritory.getItemValue())) { + flag = true; + break; + } + } + return flag; + }).collect(Collectors.toList()); + + JSONObject json = new JSONObject(); + json.put("dutyTerritoryList",dutyTerritoryList); + json.put("pliEoList",pliEoList); + pliEoMap.put(key,json); + } + } + String status = (String) params.get("status"); + if (CollectionUtils.isNotEmpty(projectLawsInventoryEOList)) { + List projectLawsInventoryIdList = projectLawsInventoryEOList.stream().distinct().map(ProjectLawsInventoryEO::getId).collect(Collectors.toList()); + if(StringUtils.equals(OperatorTypeEnum.QUERY_FG_TASK_TO_CONFIRM_STATISTICS.getValue(),operatorType)){ + if(ObjectUtils.isNotEmpty(pliEoMap)){ + + List> dataList = new ArrayList<>(); + for (Map.Entry pliMap : pliEoMap.entrySet()) { + String key = pliMap.getKey(); + JSONObject json = (JSONObject) pliMap.getValue(); + List pliEoList = (List) json.get("pliEoList"); + Map dataMaps = this.projectLibraryStatisticsService.getFGTaskToConfirmStatisticsGroupByTerritory(pliEoList,params); + Map dataMap = (Map) dataMaps.get(status); + double amount = (double) dataMap.get("amount"); + if(amount != 0){ + dataMap.put("dutyTerritoryName",key); + dataList.add(dataMap); + } + } + result.put("dataList",dataList); + } + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_CURRENT_PROJECT_STATUS_STATISTICS.getValue(),operatorType)){ + params.put("projectLawsInventoryIdList",projectLawsInventoryIdList); + List> conditionAssessmentMapList = this.conditionAssessmentEOService.getProjectStatusAssessStatisticsGroupByTerritory(params); + disposeData(conditionAssessmentMapList,cut); + result.put("dataList",conditionAssessmentMapList); + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_LISTING_TO_CONFIRM_STATISTICS.getValue(),operatorType)){ + //清单确认 状态 + String inventoryAffirmStatus = (String) params.get("inventoryAffirmStatus"); + List> listingToConfirmList = this.projectLawsInventoryEOMapper.getListingToConfirmStatisticsGroupByTerritory(projectLibraryId,inventoryAffirmStatus); + disposeData(listingToConfirmList,cut); + result.put("dataList",listingToConfirmList); + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_TASK_TO_CONFIRM_STATISTICS.getValue(),operatorType)){ + //任务确认 状态 + String taskAffirmStatus = (String) params.get("taskAffirmStatus"); + List> taskToConfirmList = this.projectLawsInventoryEOMapper.getTaskToConfirmStatisticsGroupByTerritory(projectLibraryId,taskAffirmStatus); + disposeData(taskToConfirmList,cut); + result.put("dataList",taskToConfirmList); + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_DESIGN_STATISTICS.getValue(),operatorType)){ + //设计符合性 + List> dataList = new ArrayList<>(); + for (Map.Entry pliMap : pliEoMap.entrySet()) { + String key = pliMap.getKey(); + JSONObject json = (JSONObject) pliMap.getValue(); + List pliEoList = (List) json.get("pliEoList"); + Map dataMaps = this.projectLibraryStatisticsService.getDesignComplianceStatisticeGroupByTerritory(pliEoList,params); + Map dataMap = (Map) dataMaps.get(status); + double amount = (double) dataMap.get("amount"); + if(amount != 0){ + dataMap.put("dutyTerritoryName",key); + dataList.add(dataMap); + } + } + result.put("dataList",dataList); + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_PREHOMO_STATISTICS.getValue(),operatorType)){ + //prehomo确认 流程任务状态 + String prehomoFlowTaskStatus = (String) params.get("prehomoFlowTaskStatus"); + if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ + List> prehomoList = this.projectTaskInventoryEOMapper.getPrehomoStatisticeGroupByTerritory(projectLawsInventoryIdList,prehomoFlowTaskStatus); + disposeData(prehomoList,cut); + result.put("dataList",prehomoList); + } + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_VERIFY_STATISTICS.getValue(),operatorType)){ + //验证符合性 流程任务状态 + List> dataList = new ArrayList<>(); + for (Map.Entry pliMap : pliEoMap.entrySet()) { + String key = pliMap.getKey(); + JSONObject json = (JSONObject) pliMap.getValue(); + List pliEoList = (List) json.get("pliEoList"); + Map dataMaps = this.projectLibraryStatisticsService.getVerifyComplianceStatisticeGroupByTerritory(pliEoList,params); + Map dataMap = (Map) dataMaps.get(status); + double amount = (double) dataMap.get("amount"); + if(amount != 0){ + dataMap.put("dutyTerritoryName",key); + dataList.add(dataMap); + } + } + result.put("dataList",dataList); + }else if(StringUtils.equals(OperatorTypeEnum.QUERY_CERTIFICATION_PROGRESS_STATISTICS.getValue(),operatorType)){ + //认证进度 流程任务状态 + String certificationProgress = (String) params.get("certificationProgress"); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ + List> certificationProgressList = this.projectTaskInventoryEOMapper.getCertificationProgressStatisticsGroupByTerritory(projectLawsInventoryIdList,certificationProgress); + disposeData(certificationProgressList,cut); + result.put("dataList",certificationProgressList); + } } } return result; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryStatisticsServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryStatisticsServiceImpl.java new file mode 100644 index 000000000..d263a4e5c --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryStatisticsServiceImpl.java @@ -0,0 +1,290 @@ +package com.jero.modules.project.service.impl; + +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +import com.jero.modules.project.enums.ComplianceFlowStatusEnum; +import com.jero.modules.project.enums.TaskAffirmStatusEnum; +import com.jero.modules.project.service.IProjectCertificationInventoryEOService; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.project.service.IProjectLibraryStatisticsService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class ProjectLibraryStatisticsServiceImpl implements IProjectLibraryStatisticsService { + + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + @Autowired + private IProjectCertificationInventoryEOService projectCertificationInventoryEOService; + + @Override + public Map getFGTaskToConfirmStatisticsGroupByTerritory(List datas, Map params) { + Map result = new HashMap<>(); + if(CollectionUtils.isNotEmpty(datas)){ + DecimalFormat df = new DecimalFormat("#.00"); + String status = (String) params.get("status"); + + Map notStartedMap = new HashMap<>(); + Map toConfirmMap = new HashMap<>(); + Map acceptedMap = new HashMap<>(); + Map rejectedMap = new HashMap<>(); + + // 未发起 + List notStartedDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.REGULATORY_ENGINEER_RETURNS.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_CHECKED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + List notStartedVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.REGULATORY_ENGINEER_RETURNS.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_CHECKED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double notStartedComplianceFlowCount = (double) notStartedDesignPliEoList.size() + notStartedVerifyPliEoList.size(); + double notStartedPercentage = (notStartedComplianceFlowCount / (datas.size() * 2)) * 100; + String notStartedPercentageStr = notStartedPercentage != 0 ? df.format(notStartedPercentage) : "0"; + notStartedMap.put("amount",notStartedComplianceFlowCount); + notStartedMap.put("percentage",notStartedPercentageStr + "%"); + + // 待确认 + List toConfirmDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + List toConfirmVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double toConfirmComplianceFlowCount = (double) toConfirmDesignPliEoList.size() + toConfirmVerifyPliEoList.size(); + double toConfirmPercentage = (toConfirmComplianceFlowCount / (datas.size() * 2)) * 100; + String toConfirmPercentageStr = toConfirmPercentage != 0 ? df.format(toConfirmPercentage) : "0"; + toConfirmMap.put("amount",toConfirmComplianceFlowCount); + toConfirmMap.put("percentage",toConfirmPercentageStr + "%"); + + // 接受 + List acceptedDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.CONFORMITY.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.INCONFORMITY.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.TO_TRACK.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.UNINVOLVED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + List acceptedVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.CONFORMITY.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.INCONFORMITY.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.TO_TRACK.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.UNINVOLVED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double acceptedComplianceFlowCount = (double) acceptedDesignPliEoList.size() + acceptedVerifyPliEoList.size(); + double acceptedPercentage = (acceptedComplianceFlowCount / (datas.size() * 2)) * 100; + String acceptedPercentageStr = acceptedPercentage != 0 ? df.format(acceptedPercentage) : "0"; + acceptedMap.put("amount",acceptedComplianceFlowCount); + acceptedMap.put("percentage",acceptedPercentageStr + "%"); + + // 拒绝 + List rejectedDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.DUTY_PERSON_REJECTED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + List rejectedVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.DUTY_PERSON_REJECTED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double rejectedComplianceFlowCount = (double) rejectedDesignPliEoList.size() + rejectedVerifyPliEoList.size(); + double rejectedPercentage = (rejectedComplianceFlowCount / (datas.size() * 2)) * 100; + String rejectedPercentageStr = rejectedPercentage != 0 ? df.format(rejectedPercentage) : "0"; + rejectedMap.put("amount",rejectedComplianceFlowCount); + rejectedMap.put("percentage",rejectedPercentageStr + "%"); + + result.put(TaskAffirmStatusEnum.NOT_STARTED.getValue(),notStartedMap); + result.put(TaskAffirmStatusEnum.LIST_TO_CONFIRM.getValue(),toConfirmMap); + result.put(TaskAffirmStatusEnum.ACCEPTED.getValue(),acceptedMap); + result.put(TaskAffirmStatusEnum.REJECTED.getValue(),rejectedMap); + } + return result; + } + + @Override + public Map getDesignComplianceStatisticeGroupByTerritory(List datas, Map params) { + Map result = new HashMap<>(); + if(CollectionUtils.isNotEmpty(datas)){ + Map notStartedMap = new HashMap<>(); + Map toConfirmMap = new HashMap<>(); + Map complianceMap = new HashMap<>(); + Map nonComplianceMap = new HashMap<>(); + + DecimalFormat df = new DecimalFormat("#.00"); + // 未发起 + List notStartedDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_CHECKED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.REGULATORY_ENGINEER_RETURNS.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.DUTY_PERSON_REJECTED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double notStartedComplianceFlowCount = (double) notStartedDesignPliEoList.size(); + double notStartedPercentage = (notStartedComplianceFlowCount / (datas.size())) * 100; + String notStartedPercentageStr = notStartedPercentage != 0 ? df.format(notStartedPercentage) : "0"; + notStartedMap.put("amount",notStartedComplianceFlowCount); + notStartedMap.put("percentage",notStartedPercentageStr + "%"); + + // 待确认 + List toConfirmDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue()) + || StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.TO_TRACK.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double toConfirmComplianceFlowCount = (double) toConfirmDesignPliEoList.size(); + double toConfirmPercentage = (toConfirmComplianceFlowCount / (datas.size())) * 100; + String toConfirmPercentageStr = toConfirmPercentage != 0 ? df.format(toConfirmPercentage) : "0"; + toConfirmMap.put("amount",toConfirmComplianceFlowCount); + toConfirmMap.put("percentage",toConfirmPercentageStr + "%"); + + // 符合 + List complianceDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.CONFORMITY.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double complianceFlowCount = (double) complianceDesignPliEoList.size(); + double compliancePercentage = (complianceFlowCount / (datas.size())) * 100; + String compliancePercentageStr = compliancePercentage != 0 ? df.format(compliancePercentage) : "0"; + complianceMap.put("amount",complianceFlowCount); + complianceMap.put("percentage",compliancePercentageStr + "%"); + + // 不符合 + List nonComplianceDesignPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getDesignFlowStatus(),ComplianceFlowStatusEnum.INCONFORMITY.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double nonComplianceComplianceFlowCount = (double) nonComplianceDesignPliEoList.size(); + double nonCompliancePercentage = (nonComplianceComplianceFlowCount / (datas.size())) * 100; + String nonCompliancePercentageStr = nonCompliancePercentage != 0 ? df.format(nonCompliancePercentage) : "0"; + nonComplianceMap.put("amount",nonComplianceComplianceFlowCount); + nonComplianceMap.put("percentage",nonCompliancePercentageStr + "%"); + + result.put(TaskAffirmStatusEnum.NOT_STARTED.getValue(),notStartedMap); + result.put(TaskAffirmStatusEnum.LIST_TO_CONFIRM.getValue(),toConfirmMap); + result.put(ComplianceFlowStatusEnum.CONFORMITY.getValue(),complianceMap); + result.put(ComplianceFlowStatusEnum.INCONFORMITY.getValue(),nonComplianceMap); + } + return result; + } + + @Override + public Map getVerifyComplianceStatisticeGroupByTerritory(List datas, Map params) { + Map result = new HashMap<>(); + if(CollectionUtils.isNotEmpty(datas)){ + Map notStartedMap = new HashMap<>(); + Map toConfirmMap = new HashMap<>(); + Map complianceMap = new HashMap<>(); + Map nonComplianceMap = new HashMap<>(); + + DecimalFormat df = new DecimalFormat("#.00"); + // 未发起 + List notStartedVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_RELEASED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.LIST_TO_BE_CHECKED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.REGULATORY_ENGINEER_RETURNS.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.DUTY_PERSON_REJECTED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double notStartedComplianceFlowCount = (double) notStartedVerifyPliEoList.size(); + double notStartedPercentage = (notStartedComplianceFlowCount / (datas.size())) * 100; + String notStartedPercentageStr = notStartedPercentage != 0 ? df.format(notStartedPercentage) : "0"; + notStartedMap.put("amount",notStartedComplianceFlowCount); + notStartedMap.put("percentage",notStartedPercentageStr + "%"); + + // 待确认 + List toConfirmVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue()) + || StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.TO_TRACK.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double toConfirmComplianceFlowCount = (double) toConfirmVerifyPliEoList.size(); + double toConfirmPercentage = (toConfirmComplianceFlowCount / (datas.size())) * 100; + String toConfirmPercentageStr = toConfirmPercentage != 0 ? df.format(toConfirmPercentage) : "0"; + toConfirmMap.put("amount",toConfirmComplianceFlowCount); + toConfirmMap.put("percentage",toConfirmPercentageStr + "%"); + + // 符合 + List complianceVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.CONFORMITY.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double complianceFlowCount = (double) complianceVerifyPliEoList.size(); + double compliancePercentage = (complianceFlowCount / (datas.size())) * 100; + String compliancePercentageStr = compliancePercentage != 0 ? df.format(compliancePercentage) : "0"; + complianceMap.put("amount",complianceFlowCount); + complianceMap.put("percentage",compliancePercentageStr + "%"); + + // 不符合 + List nonComplianceVerifyPliEoList = datas.stream().filter(data -> { + boolean flag = ( + StringUtils.equals(data.getVerifyFlowStatus(),ComplianceFlowStatusEnum.INCONFORMITY.getValue()) + ); + return flag; + }).collect(Collectors.toList()); + double nonComplianceComplianceFlowCount = (double) nonComplianceVerifyPliEoList.size(); + double nonCompliancePercentage = (nonComplianceComplianceFlowCount / (datas.size())) * 100; + String nonCompliancePercentageStr = nonCompliancePercentage != 0 ? df.format(nonCompliancePercentage) : "0"; + nonComplianceMap.put("amount",nonComplianceComplianceFlowCount); + nonComplianceMap.put("percentage",nonCompliancePercentageStr + "%"); + + result.put(TaskAffirmStatusEnum.NOT_STARTED.getValue(),notStartedMap); + result.put(TaskAffirmStatusEnum.LIST_TO_CONFIRM.getValue(),toConfirmMap); + result.put(ComplianceFlowStatusEnum.CONFORMITY.getValue(),complianceMap); + result.put(ComplianceFlowStatusEnum.INCONFORMITY.getValue(),nonComplianceMap); + } + return result; + } +}