wang-hao-jie
2022-03-17 6dfd2599d2e52507e018fd4c6b35d38873e48cfb
xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/schedulings/StatisticPc2ScheduleImpl.java
@@ -14,6 +14,8 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
//大屏配送分析
@@ -32,7 +34,7 @@
    @Autowired
    private IOrderTaskService iOrderTaskService;
    @Scheduled(cron="0 0 * * * ?")//每小时执行一次
    @Scheduled(cron="0 0 20 * * ?")//每晚8点执行
    public void execute(){
        List<Area> list = iAreaService.list();
        for(Area area:list){
@@ -59,12 +61,50 @@
                listTime.add(orderTask.getTime());
            }
            Collections.sort(listTime);
            double v = (sum * 1.0) / (1000 * 60 * 60) / listTime.size();
            areaSection.setAvgTime((double) Math.round(v * 10) / 10);
            if(listTime.size()>0){
                double v1 = (listTime.get(0) * 1.0) / (1000 * 60 * 60);
                areaSection.setMinTime((double) Math.round(v1 * 10) / 10);
                double v2 = (listTime.get(listTime.size()-1) * 1.0) / (1000 * 60 * 60);
                areaSection.setMaxTime((double) Math.round(v2 * 10) / 10);
            }
            double variance = Variance(listTime);
            areaSection.setStability(variance);
            iAreaSectionService.saveOrUpdate(areaSection);
        }
    }
    public double Variance(List<Integer> x) {
        List<Double> y = new ArrayList<>();
        for(Integer s:x){
            y.add(trans((s*1.0)/(3600*1000)));
        }
        int m = x.size();
        double sum = 0;
        for (int i = 0; i < m; i++) {
            sum += y.get(i);
        }
        double dAve = sum / m;
        double dVar = 0;
        for (int i = 0; i < m; i++) {
            dVar += (y.get(i) - dAve) * (y.get(i) - dAve);
        }
        double v = dVar / m;
        return trans2(v);
    }
    public double trans(double v2){
        return (double) Math.round(v2 * 10) / 10;
    }
    public double trans2(double v2){
        return (double) Math.round(v2 * 100) / 100;
    }
}