|
|
@ -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()); |
|
|
|
} |
|
|
|
//3.封装数据并返回
|
|
|
|
return null; |
|
|
|
} |
|
|
|
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); |
|
|
|
|
|
|
|
resultList.add(dto); |
|
|
|
}); |
|
|
|
|
|
|
|
return resultList; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|