jinpengyong
2021-07-15 371a381267699280f45748c13ed42faba66b6577
screen-job/src/main/java/com/moral/api/service/impl/HistoryWeeklyServiceImpl.java
@@ -16,6 +16,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
@@ -48,10 +49,12 @@
    private HistoryDailyService historyDailyService;
    @Override
    @Transactional
    public void insertHistoryWeekly() {
        Date now = new Date();
        //开始时间,上周一
        Date start = DateUtils.geLastWeekMonday();
        Date start = DateUtils.getLastWeekMonday();
        //结束时间,本周一
        Date end = DateUtils.addDays(start, 7);
        //因子
        QueryWrapper<Sensor> sensorQueryWrapper = new QueryWrapper<>();
        sensorQueryWrapper.select("code").eq("is_delete", Constants.NOT_DELETE);
@@ -59,8 +62,11 @@
        //获取所有设备日数据
        QueryWrapper<HistoryDaily> historyDailyQueryWrapper = new QueryWrapper<>();
        historyDailyQueryWrapper.ge("time", DateUtils.dateToDateString(start)).lt("time", DateUtils.dateToDateString(now));
        historyDailyQueryWrapper.ge("time", DateUtils.dateToDateString(start)).lt("time", DateUtils.dateToDateString(end));
        List<Map<String, Object>> weeklyData = historyDailyService.listMaps(historyDailyQueryWrapper);
        if (weeklyData.size() == 0) {
            return;
        }
        //按mac分组
        Map<String, List<Map<String, Object>>> data = weeklyData.parallelStream().collect(Collectors.groupingBy(o -> (String) o.get("mac")));
@@ -81,13 +87,13 @@
            }
            //CO 95百分位计算并修约
            Object coAvg = AmendUtils.getCOAvgOfWeek(value);
            Object coAvg = AmendUtils.getCOAvgOfWeekOrMonth(value);
            if (coAvg != null) {
                jsonMap.put(Constants.SENSOR_CODE_CO, coAvg);
            }
            //CO 90百分位计算并修约
            Object o3Avg = AmendUtils.getO3AvgOfWeek(value);
            //O3 90百分位计算并修约
            Object o3Avg = AmendUtils.getO3AvgOfWeekOrMonth(value);
            if (o3Avg != null) {
                jsonMap.put(Constants.SENSOR_CODE_O3, o3Avg);
            }
@@ -127,21 +133,4 @@
        //存入数据库
        historyWeeklyMapper.insertHistoryWeekly(insertData);
    }
    public static void main(String[] args) {
        List<Double> data = new ArrayList<>();
        data.add(7d);
        data.add(15d);
        data.add(36d);
        data.add(39d);
        data.add(40d);
        data.add(41d);
        data.add(20d);
        data.add(18d);
        System.out.println(data);
        System.out.println(AmendUtils.percentile(data, 95));
    }
}