diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/PartyGuideServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/PartyGuideServiceImpl.java index 48167f4263..091b920adc 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/PartyGuideServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/PartyGuideServiceImpl.java @@ -182,14 +182,18 @@ public class PartyGuideServiceImpl implements PartyGuideService { */ public void disPoseParty(List agencyIdList, Boolean isGrid, String customerId, String monthId) { List result = new ArrayList<>(); + // 判断当前级别agency是否为空 if (!CollectionUtils.isEmpty(agencyIdList)){ + // 获取agencyIds List orgIds = agencyIdList.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); if (isGrid == true){ agencyIdList.forEach(agency -> { + // 计算社区级别的下级(实际就是网格) GridPartyGuideDTO gridPartyGuideDTO = communityLevelSubGrid(customerId, monthId, agency); orgIds.addAll(gridPartyGuideDTO.getOrgIds()); result.addAll(gridPartyGuideDTO.getResult()); }); + // 根据agencyId分组,计算各个社区的 Map> groupByAgency = result.stream().collect(Collectors.groupingBy(ScreenPartyLinkMassesDataFormDTO::getParentId)); groupByAgency.forEach((agencyId,gridList) -> { ScreenPartyLinkMassesDataFormDTO form = new ScreenPartyLinkMassesDataFormDTO(); @@ -225,6 +229,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { // 不为空 存在直属网格 if (!CollectionUtils.isEmpty(disGridIds)){ List gridResult = new ArrayList<>(); + // 查询党员创建组,组内成员数 List partyLinkMassesDataList = groupMainService.selectPartyCreateGroupInfo(customerId, monthId, disGridIds); List orgNameList = agencyService.selectOrgNameGrid(partyLinkMassesDataList.stream().map(m -> m.getOrgId()).collect(Collectors.toList())); if (!CollectionUtils.isEmpty(partyLinkMassesDataList)){ @@ -240,6 +245,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { } delAndInsertLink(gridResult,customerId,monthId,disGridIds); } + // 查询直属网格的信息 + 下级机关的信息 = agency的机关信息 List screenPartyLinkMassesDataGrid = groupMainService.selectPartyCreateGroupInfo(customerId, monthId, disGridIds); List screenPartyLinkMassesDataList = linkMassesDataService.selectPartyLinkMassesInfo(customerId, monthId, agencyId); screenPartyLinkMassesDataList.addAll(screenPartyLinkMassesDataGrid); @@ -263,6 +269,12 @@ public class PartyGuideServiceImpl implements PartyGuideService { /** * @Description 处理【参与人数,组织次数】 + * eg:假设 组织A:A1 组织的直属网格:A1-G1 + * 统计 A1的参与人数、组织次数应为 + * + * 组织次数:以A1的名义组织活动次数 + 以A1-G1的名义组织活动次数 = A1组织活动总次数 + * 参与人数:以A1的名义组织活动参与人数和 + 以A1-G1的名义组织活动参与人数和 = A1组织活动参与人数总数 + * * @Param agencyIdList * @Param isGrid * @Param customerId @@ -272,7 +284,9 @@ public class PartyGuideServiceImpl implements PartyGuideService { */ public void disPoseOrganize(List agencyIdList, Boolean isGrid, String customerId, String monthId){ if (!CollectionUtils.isEmpty(agencyIdList)){ + // 包括 gridId 和 agencyId List orgIds = new ArrayList<>(); + // orgIdsAgency 客户下某个级别的所有agencyId List orgIdsAgency = agencyIdList.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); orgIds.addAll(orgIdsAgency); orgIdsAgency.forEach(orgId -> { @@ -284,8 +298,11 @@ public class PartyGuideServiceImpl implements PartyGuideService { if (isGrid == false){ orgIds.addAll(directGridIds.stream().map(m -> m.getGridId()).collect(Collectors.toList())); } + // 查询客户下所有机关,网格下的参与人数 List joinUserCountList = actUserRelationService.selectJoinUserCount(customerId, monthId, null); + // 查询机关界别的组织次数 List screenPartyBranchDataByAgencyList = actInfoService.selectActInfo(customerId, monthId, ScreenConstant.AGENCY, orgIds); + // 查询客户下所有网格和所有机关 List screenPartyBranchData = agencyService.selectAllAgencyIdToOrganize(customerId, monthId); List screenPartyBranchDataListAgencyAll = gridService.selectAllGridIdToOrganize(customerId, monthId); screenPartyBranchDataListAgencyAll.addAll(screenPartyBranchData); @@ -297,10 +314,10 @@ public class PartyGuideServiceImpl implements PartyGuideService { } }); }); + // 查询所有机关、网格组织次数 List screenPartyBranchDataList = actInfoService.selectActInfo(customerId, monthId, null, orgIds); if (isGrid == true){ agencyIdList.forEach(agency -> { - finalResult.forEach(fl -> { screenPartyBranchDataList.forEach(sp -> { if (fl.getOrgId().equals(sp.getOrgId())){ @@ -325,6 +342,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { if (fl.getOrgId().equals(agencyId)){ fl.setOrganizeCount(actList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount))); fl.setJoinUserCount(actList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getJoinUserCount))); + // 如果存在本级名义的, 下级机关 + 本级 screenPartyBranchDataByAgencyList.forEach(organize -> { if (organize.getOrgId().equals(agencyId)){ fl.setOrganizeCount(calAdd(organize.getOrganizeCount(),actList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount)))); @@ -378,6 +396,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { if (form.getOrgId().equals(agencyId)) { form.setJoinUserCount(screenPartyBranchDataByParentList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getJoinUserCount))); form.setOrganizeCount(screenPartyBranchDataByParentList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount))); + // 如果存在本级名义的, 下级机关 + 本级 screenPartyBranchDataByParentList.forEach(organize -> { if (organize.getOrgId().equals(agencyId)) { form.setOrganizeCount(calAdd(organize.getOrganizeCount(), screenPartyBranchDataByParentList.stream().collect(Collectors.summingInt(ScreenPartyBranchDataFormDTO::getOrganizeCount)))); @@ -398,6 +417,13 @@ public class PartyGuideServiceImpl implements PartyGuideService { } } + /** + * @Description 加法运算 + * @Param a + * @Param b + * @author zxc + * @date 2020/9/28 3:17 下午 + */ public Integer calAdd(Integer a, Integer b){ if (null != a && null != b){ return a + b; @@ -474,7 +500,7 @@ public class PartyGuideServiceImpl implements PartyGuideService { } /** - * @Description + * @Description 【组织次数,参与人数】添加 * @Param result * @Param customerId * @Param monthId @@ -490,6 +516,14 @@ public class PartyGuideServiceImpl implements PartyGuideService { }); } + /** + * @Description 【组织次数,参与人数】旧纪录删除 + * @Param customerId + * @Param monthId + * @Param orgIds + * @author zxc + * @date 2020/9/28 3:18 下午 + */ @Transactional(rollbackFor = Exception.class) public void delOrganize(String customerId, String monthId, List orgIds){ Integer delNum;