|  |  | @ -63,24 +63,30 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |     public Boolean statsPartyMemberBaseInfoToScreen(String customerId, String dateId) { | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerAgencyInfoResultDTO> agencyIdList = agencyService.selectAllAgencyId(customerId); | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(agencyIdList)){ | 
			
		
	
		
			
				
					|  |  |  |             // 根据组织级别分组
 | 
			
		
	
		
			
				
					|  |  |  |             Map<String, List<CustomerAgencyInfoResultDTO>> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); | 
			
		
	
		
			
				
					|  |  |  |             if (groupByLevel.containsKey(ScreenConstant.COMMUNITY)){ | 
			
		
	
		
			
				
					|  |  |  |                 // 社区级别
 | 
			
		
	
		
			
				
					|  |  |  |                 List<CustomerAgencyInfoResultDTO> customerGridInfoList = groupByLevel.get(ScreenConstant.COMMUNITY); | 
			
		
	
		
			
				
					|  |  |  |                 disPose(customerGridInfoList,true,customerId,dateId); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             if (groupByLevel.containsKey(ScreenConstant.STREET)){ | 
			
		
	
		
			
				
					|  |  |  |                 // 街道级别
 | 
			
		
	
		
			
				
					|  |  |  |                 List<CustomerAgencyInfoResultDTO> customerGridInfoList = groupByLevel.get(ScreenConstant.STREET); | 
			
		
	
		
			
				
					|  |  |  |                 disPose(customerGridInfoList,false,customerId,dateId); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             if (groupByLevel.containsKey(ScreenConstant.DISTRICT)){ | 
			
		
	
		
			
				
					|  |  |  |                 // 区级
 | 
			
		
	
		
			
				
					|  |  |  |                 List<CustomerAgencyInfoResultDTO> customerGridInfoList = groupByLevel.get(ScreenConstant.DISTRICT); | 
			
		
	
		
			
				
					|  |  |  |                 disPose(customerGridInfoList,false,customerId,dateId); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             if (groupByLevel.containsKey(ScreenConstant.CITY)){ | 
			
		
	
		
			
				
					|  |  |  |                 // 市级
 | 
			
		
	
		
			
				
					|  |  |  |                 List<CustomerAgencyInfoResultDTO> customerGridInfoList = groupByLevel.get(ScreenConstant.CITY); | 
			
		
	
		
			
				
					|  |  |  |                 disPose(customerGridInfoList,false,customerId,dateId); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             if (groupByLevel.containsKey(ScreenConstant.PROVINCE)){ | 
			
		
	
		
			
				
					|  |  |  |                 // 省级
 | 
			
		
	
		
			
				
					|  |  |  |                 List<CustomerAgencyInfoResultDTO> customerGridInfoList = groupByLevel.get(ScreenConstant.PROVINCE); | 
			
		
	
		
			
				
					|  |  |  |                 disPose(customerGridInfoList,false,customerId,dateId); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
	
		
			
				
					|  |  | @ -96,13 +102,16 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     public void disPose(List<CustomerAgencyInfoResultDTO> agencyIdList, Boolean isGrid, String customerId, String dateId){ | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(agencyIdList)){ | 
			
		
	
		
			
				
					|  |  |  |             // 网格ID或机关Id
 | 
			
		
	
		
			
				
					|  |  |  |             List<String> orgIds = agencyIdList.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |             List<PartyBaseInfoFormDTO> result = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |             if (isGrid == true){ | 
			
		
	
		
			
				
					|  |  |  |                 // 是 community 级别,子级为gridId
 | 
			
		
	
		
			
				
					|  |  |  |                 List<UserCountResultDTO> userCountList = userGridDailyService.selectUserCount(customerId, dateId); | 
			
		
	
		
			
				
					|  |  |  |                 agencyIdList.forEach(agency -> { | 
			
		
	
		
			
				
					|  |  |  |                     // 1. 处理社区下的所有网格中的党员信息
 | 
			
		
	
		
			
				
					|  |  |  |                     String agencyId = agency.getAgencyId(); | 
			
		
	
		
			
				
					|  |  |  |                     // 获取下级所有agencyId【根据agencyMap中的level判断下级orgId是否是gridId】(此处直接作为gridId)
 | 
			
		
	
		
			
				
					|  |  |  |                     Map<String, Object> agencyMap = agencyService.selectAllSubAgencyId(agencyId, customerId); | 
			
		
	
		
			
				
					|  |  |  |                     List<String> gridIds = (List<String>) agencyMap.get(agencyId); | 
			
		
	
		
			
				
					|  |  |  |                     orgIds.addAll(gridIds); | 
			
		
	
	
		
			
				
					|  |  | @ -140,7 +149,7 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |                         }); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 }); | 
			
		
	
		
			
				
					|  |  |  |                 // 2. 处理社区级别的党员信息
 | 
			
		
	
		
			
				
					|  |  |  |                 // 2. 处理社区级别的党员信息(因为网格级别的已算出,社区级别直接累加)
 | 
			
		
	
		
			
				
					|  |  |  |                 Map<String, List<PartyBaseInfoFormDTO>> groupByAgency = result.stream().collect(Collectors.groupingBy(PartyBaseInfoFormDTO::getParentId)); | 
			
		
	
		
			
				
					|  |  |  |                 groupByAgency.forEach((commAgencyId,party) -> { | 
			
		
	
		
			
				
					|  |  |  |                     PartyBaseInfoFormDTO form = new PartyBaseInfoFormDTO(); | 
			
		
	
	
		
			
				
					|  |  | @ -163,8 +172,10 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |                 }); | 
			
		
	
		
			
				
					|  |  |  |                 delAndInsert(result,customerId,dateId,orgIds); | 
			
		
	
		
			
				
					|  |  |  |             }else { | 
			
		
	
		
			
				
					|  |  |  |                 // 级别为 street,district,city,province
 | 
			
		
	
		
			
				
					|  |  |  |                 agencyIdList.forEach(agency -> { | 
			
		
	
		
			
				
					|  |  |  |                     String agencyId = agency.getAgencyId(); | 
			
		
	
		
			
				
					|  |  |  |                     // 查询下级机关的党员信息,直接累加
 | 
			
		
	
		
			
				
					|  |  |  |                     List<PartyInfoResultDTO> partyInfoList = cpcBaseDataService.selectPartyInfo(customerId, dateId, agencyId); | 
			
		
	
		
			
				
					|  |  |  |                     if (!CollectionUtils.isEmpty(partyInfoList)){ | 
			
		
	
		
			
				
					|  |  |  |                         PartyBaseInfoFormDTO form = new PartyBaseInfoFormDTO(); | 
			
		
	
	
		
			
				
					|  |  | @ -207,6 +218,7 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |         int birthDayMonth = birth.getMonthValue(); | 
			
		
	
		
			
				
					|  |  |  |         int birthDayOfMonth = birth.getDayOfMonth(); | 
			
		
	
		
			
				
					|  |  |  |         int age = nowYear - birthDayYear; | 
			
		
	
		
			
				
					|  |  |  |         // 当前月小于出生年的月份  或者  当前月等于出生年的月 并且 当前日小于出生年的日,就是不满一岁
 | 
			
		
	
		
			
				
					|  |  |  |         if (nowMonth < birthDayMonth || (nowMonth == birthDayMonth && nowDayOfMonth < birthDayOfMonth)) { | 
			
		
	
		
			
				
					|  |  |  |             age--; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  | @ -223,6 +235,7 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     public Integer disposeAgeArea(List<PartyMemberInfoResultDTO> partyMemberInfoList, Integer startAge,Integer endAge ){ | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(partyMemberInfoList)){ | 
			
		
	
		
			
				
					|  |  |  |             // 计算大于多少岁并小于多少岁的人
 | 
			
		
	
		
			
				
					|  |  |  |             List<PartyMemberInfoResultDTO> collect = partyMemberInfoList.stream().filter(p -> p.getAge() >= startAge).filter(p -> p.getAge() <= endAge).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |             return collect.size(); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  | @ -241,8 +254,10 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |         if (!CollectionUtils.isEmpty(partyMemberInfoList)){ | 
			
		
	
		
			
				
					|  |  |  |             List<PartyMemberInfoResultDTO> collect = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |             if (isGreater == true){ | 
			
		
	
		
			
				
					|  |  |  |                 // 大于
 | 
			
		
	
		
			
				
					|  |  |  |                 collect = partyMemberInfoList.stream().filter(p -> p.getAge() > age).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |             }else { | 
			
		
	
		
			
				
					|  |  |  |                 // 小于
 | 
			
		
	
		
			
				
					|  |  |  |                 collect = partyMemberInfoList.stream().filter(p -> p.getAge() < age).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             return collect.size(); | 
			
		
	
	
		
			
				
					|  |  | @ -260,10 +275,13 @@ public class PartyBaseInfoServiceImpl implements PartyBaseInfoService { | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |     public void delAndInsert(List<PartyBaseInfoFormDTO> result, String customerId, String dateId, List<String> orgIds){ | 
			
		
	
		
			
				
					|  |  |  |         // 查询客户下所有的agency
 | 
			
		
	
		
			
				
					|  |  |  |         List<PartyBaseInfoFormDTO> partyBaseInfoList = agencyService.selectAllAgencyIdToParty(customerId,dateId); | 
			
		
	
		
			
				
					|  |  |  |         // 查询客户下所有的grid
 | 
			
		
	
		
			
				
					|  |  |  |         List<PartyBaseInfoFormDTO> resultList = gridService.selectAllGridIdToParty(customerId, dateId); | 
			
		
	
		
			
				
					|  |  |  |         resultList.addAll(partyBaseInfoList); | 
			
		
	
		
			
				
					|  |  |  |         List<PartyBaseInfoFormDTO> finalResult = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         // 因为是根据级别来删除,插入,所以把需要操作的orgIds单独出来
 | 
			
		
	
		
			
				
					|  |  |  |         resultList.forEach(rl -> { | 
			
		
	
		
			
				
					|  |  |  |             orgIds.forEach(orgId -> { | 
			
		
	
		
			
				
					|  |  |  |                 if (rl.getOrgId().equals(orgId)){ | 
			
		
	
	
		
			
				
					|  |  | 
 |