jinpengyong
2021-07-02 f5765e4ff4ea188e8a6ba4d66f3c4e7fc2268fdd
定时任务update
6 files modified
103 ■■■■ changed files
screen-common/src/main/java/com/moral/util/AmendUtils.java 6 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/DateUtils.java 2 ●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java 10 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java 45 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/HistoryMonthlyServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/HistoryWeeklyServiceImpl.java 28 ●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/util/AmendUtils.java
@@ -132,7 +132,8 @@
        return sciCal(data.get((int) v), 4);
    }
    public static Object getCOAvgOfWeek(List<Map<String, Object>> list) {
    //一氧化碳周月均值计算
    public static Object getCOAvgOfWeekOrMonth(List<Map<String, Object>> list) {
        List<Double> data = new ArrayList<>();
        for (Map<String, Object> dataMap : list) {
            Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
@@ -149,7 +150,8 @@
        return percentile(data, 95);
    }
    public static Object getO3AvgOfWeek(List<Map<String, Object>> list) {
    //臭氧周月均值计算
    public static Object getO3AvgOfWeekOrMonth(List<Map<String, Object>> list) {
        List<Double> data = new ArrayList<>();
        for (Map<String, Object> dataMap : list) {
            Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -1312,7 +1312,7 @@
    }
    //获取上周一
    public static Date geLastWeekMonday() {
    public static Date getLastWeekMonday() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getDate(getMondayOfThisWeek(), yyyy_MM_dd_EN));
        cal.add(Calendar.DATE, -7);
screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -42,12 +42,12 @@
        //获取所有在线设备
        List<Device> devices = deviceMapper.selectList(queryWrapper);
        for (Device device : devices) {
            Map<String, Object> data = getDataFromRedis(device.getMac());
            Map<String, Object> data = (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE_DATA + device.getMac());;
            device.setState(Constants.DEVICE_STATE_OFFLINE);
            if (data != null && data.containsKey("DataTime")) {
                long time = Long.parseLong(data.get("DataTime").toString());
                Date time = DateUtils.getDate((String) data.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
                //超过两分钟无数据就离线
                if (DateUtils.getDateOfMin(new Date(time), 2).getTime() < new Date().getTime()) {
                if (DateUtils.getDateOfMin(time, 2).getTime() < new Date().getTime()) {
                    updateDeviceState(device);
                }
            } else {
@@ -61,9 +61,5 @@
        UpdateWrapper<Device> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id", device.getId()).set("state", device.getState());
        deviceMapper.update(null, updateWrapper);
    }
    private Map<String, Object> getDataFromRedis(String mac) {
        return (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE_DATA + mac);
    }
}
screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
@@ -51,9 +51,9 @@
    public void insertHistoryDaily() {
        String format = DateUtils.yyyy_MM_dd_EN;
        Date now = new Date();
        //开始时间
        //开始时间,昨日
        Date start = DateUtils.dataToTimeStampTime(DateUtils.getDateOfDay(now, -1), format);
        //结束时间
        //结束时间,今日
        Date end = DateUtils.dataToTimeStampTime(now, format);
        //因子
        QueryWrapper<Sensor> sensorQueryWrapper = new QueryWrapper<>();
@@ -123,46 +123,5 @@
        //存入数据库
        historyDailyMapper.insertHistoryDaily(insertData);
    }
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(8);//1点
        list.add(12);//2
        list.add(10);//3
        list.add(18);//4
        list.add(16);//5
        list.add(22);//6
        list.add(4);//7
        list.add(12);
        list.add(28);
        list.add(26);
        list.add(25);
        list.add(21);
        list.add(6);
        list.add(18);
        list.add(28);
        list.add(18);
        list.add(16);
        list.add(15);
        list.add(12);
        list.add(14);
        list.add(12);
        list.add(10);
        list.add(5);
        list.add(88);//24
        Integer max = 0;
        for (int i = 7; i < list.size(); i++) {
            Integer sum = 0;
            for (int j = i - 7; j <= i; j++) {
                Integer b = list.get(j);
                sum = sum + b;
            }
            if (sum > max) {
                max = sum;
            }
        }
        System.out.println((max / 8F));
    }
}
screen-job/src/main/java/com/moral/api/service/impl/HistoryMonthlyServiceImpl.java
@@ -49,10 +49,10 @@
    @Override
    public void insertHistoryMonthly() {
        Date now = new Date();
        //开始时间,上月1号
        Date start = DateUtils.getFirstDayOfLastMonth();
        //结束时间,本月1号
        Date end = DateUtils.addMonths(start, 1);
        //因子
        QueryWrapper<Sensor> sensorQueryWrapper = new QueryWrapper<>();
        sensorQueryWrapper.select("code").eq("is_delete", Constants.NOT_DELETE);
@@ -60,7 +60,7 @@
        //获取所有设备日数据
        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;
@@ -84,13 +84,13 @@
            }
            //CO 95百分位计算并修约
            Object coAvg = AmendUtils.getCOAvgOfWeek(value);
            Object coAvg = AmendUtils.getCOAvgOfWeekOrMonth(value);
            if (coAvg != null) {
                jsonMap.put(Constants.SENSOR_CODE_CO, coAvg);
            }
            //O3 90百分位计算并修约
            Object o3Avg = AmendUtils.getO3AvgOfWeek(value);
            Object o3Avg = AmendUtils.getO3AvgOfWeekOrMonth(value);
            if (o3Avg != null) {
                jsonMap.put(Constants.SENSOR_CODE_O3, o3Avg);
            }
@@ -129,7 +129,5 @@
        //存入数据库
        historyMonthlyMapper.insertHistoryMonthly(insertData);
    }
}
screen-job/src/main/java/com/moral/api/service/impl/HistoryWeeklyServiceImpl.java
@@ -49,9 +49,10 @@
    @Override
    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,7 +60,7 @@
        //获取所有设备日数据
        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;
@@ -84,13 +85,13 @@
            }
            //CO 95百分位计算并修约
            Object coAvg = AmendUtils.getCOAvgOfWeek(value);
            Object coAvg = AmendUtils.getCOAvgOfWeekOrMonth(value);
            if (coAvg != null) {
                jsonMap.put(Constants.SENSOR_CODE_CO, coAvg);
            }
            //O3 90百分位计算并修约
            Object o3Avg = AmendUtils.getO3AvgOfWeek(value);
            Object o3Avg = AmendUtils.getO3AvgOfWeekOrMonth(value);
            if (o3Avg != null) {
                jsonMap.put(Constants.SENSOR_CODE_O3, o3Avg);
            }
@@ -130,21 +131,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));
    }
}