List<OdsStatsData> odsStatsData = igniteService.statisticOd(min, addMin);
List<FlowOdStats> flowOdStats = new ArrayList<>(odsStatsData.size());
List<OdsStatsData> repeatList = new ArrayList<>();
//odsStatsData源数据中同o、d、otype、dtype的数据进行清洗集成一条完整的flowOdStats数据
for (int i = 0; i < odsStatsData.size() - 1; i++) {
for (int j = odsStatsData.size() - 1; j > i; j--) {
if ((odsStatsData.get(j).getDeviceO() == odsStatsData.get(i).getDeviceO()) && (odsStatsData.get(j).getDeviceD() == odsStatsData.get(i).getDeviceD())
&& (odsStatsData.get(j).getDeviceOType() == odsStatsData.get(i).getDeviceOType()) && odsStatsData.get(j).getDeviceDType() == odsStatsData.get(i).getDeviceDType()) {
repeatList.add(odsStatsData.get(j));//把相同元素加入list(找出相同的)
repeatList.add(odsStatsData.get(i));//把相同元素加入list(找出相同的)
//车型一共两种:2货车 3客车
if (odsStatsData.get(j).getVehType() == 2) {
FlowOdStats build = FlowOdStats.builder()
.deviceO(odsStatsData.get(j).getDeviceO())
.deviceD(odsStatsData.get(j).getDeviceD())
.countTruck(odsStatsData.get(j).getCou())
.countPassenger(odsStatsData.get(i).getCou())
.countAll(odsStatsData.get(j).getCou() + odsStatsData.get(i).getCou())
.deviceTypeO(odsStatsData.get(j).getDeviceOType())
.deviceTypeD(odsStatsData.get(j).getDeviceDType())
.timeDiffTruck(odsStatsData.get(j).getTDiff())
.timeDiffPassenger(odsStatsData.get(i).getTDiff())
.timeDiffAll(odsStatsData.get(j).getTDiff() + odsStatsData.get(i).getTDiff())
.insertTime(LocalDateTime.parse(min))
.build();
flowOdStats.add(build);
} else {
FlowOdStats build = FlowOdStats.builder()
.deviceO(odsStatsData.get(j).getDeviceO())
.deviceD(odsStatsData.get(j).getDeviceD())
.countTruck(odsStatsData.get(i).getCou())
.countPassenger(odsStatsData.get(j).getCou())
.countAll(odsStatsData.get(j).getCou() + odsStatsData.get(i).getCou())
.deviceTypeO(odsStatsData.get(j).getDeviceOType())
.deviceTypeD(odsStatsData.get(j).getDeviceDType())
.timeDiffTruck(odsStatsData.get(i).getTDiff())
.timeDiffPassenger(odsStatsData.get(j).getTDiff())
.timeDiffAll(odsStatsData.get(j).getTDiff() + odsStatsData.get(i).getTDiff())
.insertTime(LocalDateTime.parse(min))
.build();
flowOdStats.add(build);
}
odsStatsData.remove(j);//删除重复元素
}
}
}
for (OdsStatsData s : repeatList) {
System.out.println("相同O、D、OType、DType的数据:" + s);
}
//odsStatsData源数据中不同o、d、otype、dtype的数据进行清洗集成一条完整的flowOdStats数据
List<OdsStatsData> collect = odsStatsData.stream().filter(item -> !repeatList.contains(item)).collect(Collectors.toList());
collect.stream().forEach(item -> {
if (2 == item.getVehType()) {
FlowOdStats build = FlowOdStats.builder()
.deviceO(item.getDeviceO())
.deviceD(item.getDeviceD())
.countTruck(item.getCou())
.countAll(item.getCou())
.deviceTypeO(item.getDeviceOType())
.deviceTypeD(item.getDeviceDType())
.timeDiffTruck(item.getTDiff())
.timeDiffAll(item.getTDiff())
.insertTime(LocalDateTime.parse(min))
.build();
flowOdStats.add(build);
} else {
FlowOdStats build = FlowOdStats.builder()
.deviceO(item.getDeviceO())
.deviceD(item.getDeviceD())
.countPassenger(item.getCou())
.countAll(item.getCou())
.deviceTypeO(item.getDeviceOType())
.deviceTypeD(item.getDeviceDType())
.timeDiffPassenger(item.getTDiff())
.timeDiffAll(item.getTDiff())
.insertTime(LocalDateTime.parse(min))
.build();
flowOdStats.add(build);
}
});