解决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.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool; 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.constants.SqlConstant;
import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto; import com.baiyee.adcallback.api.dto.DmpMonitorJpaDto;
import com.baiyee.adcallback.api.dto.DmpMonitorNumDto; import com.baiyee.adcallback.api.dto.DmpMonitorNumDto;
@ -39,13 +37,22 @@ public class DmpMonitorNumServiceImpl implements DmpMonitorNumService {
public Map<String, Object> queryNumByTags(DmpMonitorNumDto dmpMonitorNumDto) { public Map<String, Object> queryNumByTags(DmpMonitorNumDto dmpMonitorNumDto) {
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
List<DmpMonitorJpaDto> mapData = getMapData(dmpMonitorNumDto, 1); 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) { 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()) { for (String key : dmpMonitorNumDto.getTags()) {
if (!numMapGroupByTag.containsKey(key)) { if (!numMapGroupByTag.containsKey(key)) {
numMapGroupByTag.put(key, new DmpMonitorJpaDto()); numMapGroupByTag.put(key, new ArrayList<>());
} }
} }
for (String key : numMapGroupByTag.keySet()) { 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<>(); List<HashMap<String, Object>> list = new ArrayList<>();
int betweenDay = (int) DateUtil.between(beginTime, endTime, DateUnit.DAY); int betweenDay = (int) DateUtil.between(beginTime, endTime, DateUnit.DAY);
for (int i = 0; i <= betweenDay; i++) { 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); Date dateTime = DateUtil.offsetDay(beginTime, i);
if (ObjectUtil.isNull(dto) || StrUtil.isBlank(dto.getTag())) { 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("date", dateTime);
map.put("num", 0); map.put("num", dmpMonitorJpaDto.getNum());
} else { } else {
if (betweenByDay(dateTime, DateUtil.parseDate(dto.getGmtCreate()))) {
map.put("num", dto.getNum());
map.put("date", dateTime); map.put("date", dateTime);
} else {
map.put("num", 0); map.put("num", 0);
map.put("date", dateTime);
}
} }
list.add(map); list.add(map);
} else {
map.put("date", dateTime);
map.put("num", 0);
list.add(map);
}
} }
return list; return list;
} }

Loading…
Cancel
Save