| | |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | //大屏配送分析 |
| | |
| | | @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){ |
| | |
| | | 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; |
| | | } |
| | | } |