|  |  | @ -1934,10 +1934,15 @@ public class DataStatsServiceImpl implements DataStatsService { | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public List<CustomerDataManageResultDTO> operateExport(CustomerDataManageFormDTO formDTO) throws ParseException { | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> resultList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         //1.必要参数校验及处理
 | 
			
		
	
		
			
				
					|  |  |  |         if (!"Interval".equals(formDTO.getType()) && StringUtils.isEmpty(formDTO.getStartTime())) { | 
			
		
	
		
			
				
					|  |  |  |         if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(formDTO.getStartTime())) { | 
			
		
	
		
			
				
					|  |  |  |             throw new RenException("请选择开始时间或查询累计值"); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         if (formDTO.getIsPage()) { | 
			
		
	
		
			
				
					|  |  |  |             int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize(); | 
			
		
	
		
			
				
					|  |  |  |             formDTO.setPageNo(pageIndex); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         //入参有开始时间的则需要减去一天
 | 
			
		
	
		
			
				
					|  |  |  |         if (StringUtils.isNotBlank(formDTO.getStartTime())) { | 
			
		
	
		
			
				
					|  |  |  |             SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_PATTERN_YYYYMMDD); | 
			
		
	
	
		
			
				
					|  |  | @ -1946,22 +1951,154 @@ public class DataStatsServiceImpl implements DataStatsService { | 
			
		
	
		
			
				
					|  |  |  |             formDTO.setStartTime(format.format(yesterday)); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //2.查询组织现在,判断查询下级组织还是网格数据
 | 
			
		
	
		
			
				
					|  |  |  |         //2.查询组织信息,判断查询下级组织还是网格数据
 | 
			
		
	
		
			
				
					|  |  |  |         ScreenAgencyOrGridListDTO agencyGrid = indexService.getSubAgencyOrGridList(formDTO.getAgencyId()); | 
			
		
	
		
			
				
					|  |  |  |         if (null == agencyGrid) { | 
			
		
	
		
			
				
					|  |  |  |             return new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         List<String> idList; | 
			
		
	
		
			
				
					|  |  |  |         if (!"community".equals(agencyGrid.getLevel())) { | 
			
		
	
		
			
				
					|  |  |  |             //组织层级用户、群组、话题、议题、项目、巡查数据查询
 | 
			
		
	
		
			
				
					|  |  |  |             idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getAgencyId).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |             //网格层级用户、群组、话题、议题、项目、巡查数据查询
 | 
			
		
	
		
			
				
					|  |  |  |             idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getGridId).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |         //组织或网格Id集合
 | 
			
		
	
		
			
				
					|  |  |  |         List<String> idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getOrgId).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |         formDTO.setDataType(!"community".equals(agencyGrid.getLevel()) ? "agency" : "grid"); | 
			
		
	
		
			
				
					|  |  |  |         formDTO.setIdList(idList); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         //3.查询截止日期用户、群组、话题、议题、项目、巡查数据
 | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> userEnd = dataStatsDao.regUserList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> groupEnd = dataStatsDao.groupList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> topicEnd = dataStatsDao.topicList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> issueEnd = dataStatsDao.issueList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> projectEnd = dataStatsDao.projectList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> patrolEnd = statsStaffPatrolRecordDailyService.patrolList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         //4.判断是否需要查询起始日期用户、群组、话题、议题、项目、巡查数据
 | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> userStart = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> groupStart = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> topicStart = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> issueStart = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> projectStart = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |         if ("Interval".equals(formDTO.getType())) { | 
			
		
	
		
			
				
					|  |  |  |             userStart = dataStatsDao.regUserList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             groupStart = dataStatsDao.groupList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             topicStart = dataStatsDao.topicList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             issueStart = dataStatsDao.issueList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |             projectStart = dataStatsDao.projectList(formDTO); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         //5.封装数据并返回
 | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> finalUserStart = userStart; | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> finalGroupStart = groupStart; | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> finalTopicStart = topicStart; | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> finalIssueStart = issueStart; | 
			
		
	
		
			
				
					|  |  |  |         List<CustomerDataManageResultDTO> finalProjectStart = projectStart; | 
			
		
	
		
			
				
					|  |  |  |         agencyGrid.getAgencyGridList().forEach(org -> { | 
			
		
	
		
			
				
					|  |  |  |             CustomerDataManageResultDTO dto = new CustomerDataManageResultDTO(); | 
			
		
	
		
			
				
					|  |  |  |             dto.setOrgId(org.getOrgId()); | 
			
		
	
		
			
				
					|  |  |  |             dto.setOrgName(org.getOrgName()); | 
			
		
	
		
			
				
					|  |  |  |             int user = 0; | 
			
		
	
		
			
				
					|  |  |  |             int resi = 0; | 
			
		
	
		
			
				
					|  |  |  |             int part = 0; | 
			
		
	
		
			
				
					|  |  |  |             for (CustomerDataManageResultDTO u : userEnd) { | 
			
		
	
		
			
				
					|  |  |  |                 if (org.getOrgId().equals(u.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                     user = u.getUserCount(); | 
			
		
	
		
			
				
					|  |  |  |                     resi = u.getResidentCount(); | 
			
		
	
		
			
				
					|  |  |  |                     part = u.getPartyMemberCount(); | 
			
		
	
		
			
				
					|  |  |  |                     if ("Interval".equals(formDTO.getType())) { | 
			
		
	
		
			
				
					|  |  |  |                         for (CustomerDataManageResultDTO s : finalUserStart) { | 
			
		
	
		
			
				
					|  |  |  |                             if (u.getOrgId().equals(s.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                                 user = user - s.getUserCount(); | 
			
		
	
		
			
				
					|  |  |  |                                 resi = resi - s.getResidentCount(); | 
			
		
	
		
			
				
					|  |  |  |                                 part = part - s.getPartyMemberCount(); | 
			
		
	
		
			
				
					|  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             int group = 0; | 
			
		
	
		
			
				
					|  |  |  |             for (CustomerDataManageResultDTO u : groupEnd) { | 
			
		
	
		
			
				
					|  |  |  |                 if (org.getOrgId().equals(u.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                     group = u.getGroupCount(); | 
			
		
	
		
			
				
					|  |  |  |                     if ("Interval".equals(formDTO.getType())) { | 
			
		
	
		
			
				
					|  |  |  |                         for (CustomerDataManageResultDTO s : finalGroupStart) { | 
			
		
	
		
			
				
					|  |  |  |                             if (u.getOrgId().equals(s.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                                 group = group - s.getGroupCount(); | 
			
		
	
		
			
				
					|  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             int topic = 0; | 
			
		
	
		
			
				
					|  |  |  |             for (CustomerDataManageResultDTO u : topicEnd) { | 
			
		
	
		
			
				
					|  |  |  |                 if (org.getOrgId().equals(u.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                     topic = u.getTopicCount(); | 
			
		
	
		
			
				
					|  |  |  |                     if ("Interval".equals(formDTO.getType())) { | 
			
		
	
		
			
				
					|  |  |  |                         for (CustomerDataManageResultDTO s : finalTopicStart) { | 
			
		
	
		
			
				
					|  |  |  |                             if (u.getOrgId().equals(s.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                                 topic = topic - s.getTopicCount(); | 
			
		
	
		
			
				
					|  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             int issue = 0; | 
			
		
	
		
			
				
					|  |  |  |             for (CustomerDataManageResultDTO u : issueEnd) { | 
			
		
	
		
			
				
					|  |  |  |                 if (org.getOrgId().equals(u.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                     issue = u.getIssueCount(); | 
			
		
	
		
			
				
					|  |  |  |                     if ("Interval".equals(formDTO.getType())) { | 
			
		
	
		
			
				
					|  |  |  |                         for (CustomerDataManageResultDTO s : finalIssueStart) { | 
			
		
	
		
			
				
					|  |  |  |                             if (u.getOrgId().equals(s.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                                 issue = issue - s.getIssueCount(); | 
			
		
	
		
			
				
					|  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             int project = 0; | 
			
		
	
		
			
				
					|  |  |  |             int closed = 0; | 
			
		
	
		
			
				
					|  |  |  |             for (CustomerDataManageResultDTO u : projectEnd) { | 
			
		
	
		
			
				
					|  |  |  |                 if (org.getOrgId().equals(u.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                     project = u.getProjectCount(); | 
			
		
	
		
			
				
					|  |  |  |                     closed = u.getClosedProjectCount(); | 
			
		
	
		
			
				
					|  |  |  |                     if ("Interval".equals(formDTO.getType())) { | 
			
		
	
		
			
				
					|  |  |  |                         for (CustomerDataManageResultDTO s : finalProjectStart) { | 
			
		
	
		
			
				
					|  |  |  |                             if (u.getOrgId().equals(s.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                                 project = project - s.getProjectCount(); | 
			
		
	
		
			
				
					|  |  |  |                                 closed = closed - s.getClosedProjectCount(); | 
			
		
	
		
			
				
					|  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             int patro = 0; | 
			
		
	
		
			
				
					|  |  |  |             int patroCount = 0; | 
			
		
	
		
			
				
					|  |  |  |             String patrolDuration = ""; | 
			
		
	
		
			
				
					|  |  |  |             int patrolDurationInteger = 0; | 
			
		
	
		
			
				
					|  |  |  |             List<String> list = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |             for (CustomerDataManageResultDTO u : patrolEnd) { | 
			
		
	
		
			
				
					|  |  |  |                 if (org.getOrgId().equals(u.getOrgId())) { | 
			
		
	
		
			
				
					|  |  |  |                     patroCount += u.getPatrolCount(); | 
			
		
	
		
			
				
					|  |  |  |                     patrolDurationInteger += u.getPatrolDurationInteger(); | 
			
		
	
		
			
				
					|  |  |  |                     list.add(u.getStaffId()); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             HashSet set = new HashSet(list); | 
			
		
	
		
			
				
					|  |  |  |             patro = set.size(); | 
			
		
	
		
			
				
					|  |  |  |             Integer minutes = patrolDurationInteger / 60; | 
			
		
	
		
			
				
					|  |  |  |             patrolDuration = (minutes / 60 > 0 ? minutes / 60 + "小时" : "") + (minutes % 60 > 0 ? minutes % 60 + "分钟" : "0分钟"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             dto.setUserCount(user); | 
			
		
	
		
			
				
					|  |  |  |             dto.setResidentCount(resi); | 
			
		
	
		
			
				
					|  |  |  |             dto.setPartyMemberCount(part); | 
			
		
	
		
			
				
					|  |  |  |             dto.setGroupCount(group); | 
			
		
	
		
			
				
					|  |  |  |             dto.setTopicCount(topic); | 
			
		
	
		
			
				
					|  |  |  |             dto.setIssueCount(issue); | 
			
		
	
		
			
				
					|  |  |  |             dto.setProjectCount(project); | 
			
		
	
		
			
				
					|  |  |  |             dto.setClosedProjectCount(closed); | 
			
		
	
		
			
				
					|  |  |  |             dto.setPatrolPeopleCount(patro); | 
			
		
	
		
			
				
					|  |  |  |             dto.setPatrolCount(patroCount); | 
			
		
	
		
			
				
					|  |  |  |             dto.setPatrolDuration(patrolDuration); | 
			
		
	
		
			
				
					|  |  |  |             dto.setPatrolDurationInteger(patrolDurationInteger); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         //3.封装数据并返回
 | 
			
		
	
		
			
				
					|  |  |  |         return null; | 
			
		
	
		
			
				
					|  |  |  |             resultList.add(dto); | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         return resultList; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
	
		
			
				
					|  |  | 
 |