package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.whyc.dto.BattInfAndEnduranceDTO;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.BattEnduranceMapper;
|
import com.whyc.pojo.BattEndurance;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
@Service
|
public class BattEnduranceService {
|
@Resource
|
private BattEnduranceMapper mapper;
|
|
public Response getEndurance(int uId){
|
List<BattEndurance> enduranceList = mapper.endurance(uId);
|
List<Integer> times = Arrays.asList(1,2,3,5,8);
|
Map resultMap = enduranceAnalysis(enduranceList,times);
|
return new Response().set(1,resultMap,"查询成功");
|
}
|
|
public Response enableEndurance(){
|
mapper.enableEndurance();
|
return new Response().set(1,true,"启动续航线程成功");
|
}
|
|
/**按时间阶段统计续航*/
|
private static Map enduranceAnalysis(List<BattEndurance> enduranceList, List<Integer> times) {
|
Map<String,Integer> map = new LinkedHashMap<>();
|
|
//初始化续航分类
|
for (int i = 0; i < times.size(); i++) {
|
if(i ==0 ){
|
map.put("续航"+times.get(0)+"小时内",0);
|
}
|
else if(i == times.size()-1){
|
map.put("续航"+times.get(i-1)+"小时到"+times.get(i)+"小时",0);
|
map.put("续航"+times.get(times.size()-1)+"小时以上",0);
|
}else {
|
map.put("续航" + times.get(i-1) + "小时到" + times.get(i) + "小时", 0);
|
}
|
}
|
|
for (int i = 0; i < enduranceList.size(); i++) {
|
//每一个具体的续航进行分组
|
if(enduranceList.get(i).getEnduranceActualTimelong()<times.get(0)*60){
|
map.put("续航"+times.get(0)+"小时内", Optional.ofNullable(map.get("续航"+times.get(0)+"小时内")).orElse(0)+1);
|
}
|
else if(enduranceList.get(i).getEnduranceActualTimelong()>times.get(times.size()-1)*60){
|
map.put("续航"+times.get(times.size()-1)+"小时以上",Optional.ofNullable(map.get("续航"+times.get(times.size()-1)+"小时以上")).orElse(0)+1);
|
}else {
|
for (int j = 0; j < times.size(); j++) {
|
if (enduranceList.get(i).getEnduranceActualTimelong() <= times.get(j)*60) {
|
map.put("续航" + times.get(j - 1) + "小时到" + times.get(j) + "小时", Optional.ofNullable(map.get("续航" + times.get(j - 1) + "小时到" + times.get(j) + "小时")).orElse(0) + 1);
|
break;
|
}
|
}
|
}
|
}
|
//排序
|
TreeMap<String, Integer> maps = new TreeMap<>(new Comparator<String>() {
|
@Override
|
public int compare(String o1, String o2) {
|
return o1.compareTo(o2);
|
}
|
});
|
|
maps.putAll(map);
|
map.clear();
|
return maps;
|
}
|
|
public Response getBattInfEnduranceByTimeCode(int uId,int timeCode){
|
List<BattInfAndEnduranceDTO> list = mapper.getBattInfEnduranceByTimeCode(uId,timeCode);
|
return new Response().set(1,list,"查询成功");
|
}
|
|
|
public Response getEnduranceTimeByDeviceId(int deviceId){
|
QueryWrapper<BattEndurance> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("deviceid",deviceId);
|
BattEndurance battEndurance = mapper.selectOne(queryWrapper);
|
float timeLong = 0.0f;
|
if (battEndurance==null){
|
timeLong = -1f;
|
}else {
|
timeLong = battEndurance.getEnduranceActualTimelong();
|
}
|
return new Response().set(1,timeLong,"查询成功");
|
}
|
|
|
|
}
|