解决sql优化

master
wujingtao 3 years ago
parent 6eb6a3459a
commit a82846ebd1

@ -3,8 +3,6 @@ package com.baiyee.adcallback.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baiyee.adcallback.api.constants.SqlConstant;
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
import com.baiyee.adcallback.api.dto.DmpMonitorNumDto;
@ -39,13 +37,22 @@ public class DmpMonitorNumServiceImpl implements DmpMonitorNumService {
public Map<String, Object> queryNumByTags(DmpMonitorNumDto dmpMonitorNumDto) {
HashMap<String, Object> map = new HashMap<>();
List<DmpMonitorJpaDto> mapData = getMapData(dmpMonitorNumDto, 1);
HashMap<String, DmpMonitorJpaDto> numMapGroupByTag = new HashMap<>(8);
HashMap<String, List<DmpMonitorJpaDto>> numMapGroupByTag = new HashMap<>(8);
for (DmpMonitorJpaDto info : mapData) {
numMapGroupByTag.put(info.getTag(), info);
List<DmpMonitorJpaDto> list = new ArrayList<>();
if (numMapGroupByTag.containsKey(info.getTag())) {
List<DmpMonitorJpaDto> list1 = numMapGroupByTag.get(info.getTag());
list1.add(info);
numMapGroupByTag.put(info.getTag(), list1);
} else {
List<DmpMonitorJpaDto> list1 = new ArrayList<>();
list1.add(info);
numMapGroupByTag.put(info.getTag(), list1);
}
}
for (String key : dmpMonitorNumDto.getTags()) {
if (!numMapGroupByTag.containsKey(key)) {
numMapGroupByTag.put(key, new DmpMonitorJpaDto());
numMapGroupByTag.put(key, new ArrayList<>());
}
}
for (String key : numMapGroupByTag.keySet()) {
@ -121,25 +128,28 @@ public class DmpMonitorNumServiceImpl implements DmpMonitorNumService {
}
//按时间分组
private List<HashMap<String, Object>> getGroupByTime(Date beginTime, Date endTime, DmpMonitorJpaDto dto) {
private List<HashMap<String, Object>> getGroupByTime(Date beginTime, Date endTime, List<DmpMonitorJpaDto> dto) {
List<HashMap<String, Object>> list = new ArrayList<>();
int betweenDay = (int) DateUtil.between(beginTime, endTime, DateUnit.DAY);
for (int i = 0; i <= betweenDay; i++) {
HashMap<String, Object> map = new HashMap<>(16);
HashMap<String, Object> map = new HashMap<>();
Date dateTime = DateUtil.offsetDay(beginTime, i);
if (ObjectUtil.isNull(dto) || StrUtil.isBlank(dto.getTag())) {
map.put("date", dateTime);
map.put("num", 0);
} else {
if (betweenByDay(dateTime, DateUtil.parseDate(dto.getGmtCreate()))) {
map.put("num", dto.getNum());
if (dto.size() > 0) {
List<DmpMonitorJpaDto> collect = dto.stream().filter(c -> betweenByDay(dateTime, DateUtil.parseDate(c.getGmtCreate()))).collect(Collectors.toList());
if (collect.size() > 0) {
DmpMonitorJpaDto dmpMonitorJpaDto = collect.get(0);
map.put("date", dateTime);
map.put("num", dmpMonitorJpaDto.getNum());
} else {
map.put("num", 0);
map.put("date", dateTime);
map.put("num", 0);
}
list.add(map);
} else {
map.put("date", dateTime);
map.put("num", 0);
list.add(map);
}
list.add(map);
}
return list;
}

Loading…
Cancel
Save