|
@@ -3,25 +3,19 @@ package com.ozs.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ozs.common.utils.AppendUtils;
|
|
|
-import com.ozs.entity.BaseDeviceDynamicManagement;
|
|
|
-import com.ozs.entity.BaseRailwayManagement;
|
|
|
-import com.ozs.entity.CameraTree;
|
|
|
-import com.ozs.entity.VehicleTree;
|
|
|
+import com.ozs.entity.*;
|
|
|
import com.ozs.entity.vo.BaseCameraManagementDto;
|
|
|
import com.ozs.entity.vo.BaseVehicleTerminalDto;
|
|
|
import com.ozs.entity.vo.CameraTreeVo;
|
|
|
import com.ozs.entity.vo.VehicleTreeVo;
|
|
|
-import com.ozs.mapper.BaseDeviceDynamicManagementMapper;
|
|
|
-import com.ozs.mapper.BaseRailwayManagementMapper;
|
|
|
+import com.ozs.mapper.*;
|
|
|
import com.ozs.service.BaseDeviceDynamicManagementService;
|
|
|
+import com.ozs.service.VehiclePositionService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -39,6 +33,15 @@ public class BaseDeviceDynamicManagementServiceImpl extends ServiceImpl<BaseDevi
|
|
|
@Autowired
|
|
|
BaseRailwayManagementMapper railwayManagementMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ BaseTerminalMapper baseTerminalMapper;
|
|
|
+ @Autowired
|
|
|
+ VehiclePositionMapper vehiclePositionMapper;
|
|
|
+ @Autowired
|
|
|
+ BaseVehicleTerminalMapper baseVehicleTerminalMapper;
|
|
|
+ @Autowired
|
|
|
+ BaseVehicleMapper baseVehicleMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public CameraTree cameraTree(CameraTreeVo cameraTreeVo) {
|
|
|
|
|
@@ -109,9 +112,6 @@ public class BaseDeviceDynamicManagementServiceImpl extends ServiceImpl<BaseDevi
|
|
|
|
|
|
@Override
|
|
|
public VehicleTree vehicleTree(VehicleTreeVo vehicleTreeVo) {
|
|
|
- // 线路
|
|
|
- LambdaQueryWrapper<BaseRailwayManagement> rp = new LambdaQueryWrapper();
|
|
|
- List<BaseRailwayManagement> railwayList = railwayManagementMapper.selectList(rp);
|
|
|
//1 父
|
|
|
VehicleTree vehicleTree = VehicleTree.builder()
|
|
|
.name("机车树")
|
|
@@ -120,62 +120,60 @@ public class BaseDeviceDynamicManagementServiceImpl extends ServiceImpl<BaseDevi
|
|
|
.children(new ArrayList<>())
|
|
|
.build();
|
|
|
|
|
|
- Map<String, VehicleTree> map = new HashMap<>();
|
|
|
- List<BaseVehicleTerminalDto> list = baseDeviceDynamicManagementMapper.vehicleTreelist(vehicleTreeVo);
|
|
|
- if (list.size() > 0) {
|
|
|
- for (BaseVehicleTerminalDto o : list) {
|
|
|
+ // 符合条件的终端行驶记录信息
|
|
|
+ List<VehiclePosition> list = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ // 终端数据
|
|
|
+ List<BaseTerminal> baseTerminals = baseTerminalMapper.selectList(new LambdaQueryWrapper<>());
|
|
|
+ if (!ObjectUtils.isEmpty(baseTerminals)) {
|
|
|
+ for (BaseTerminal baseTerminal : baseTerminals) {
|
|
|
+ // 查询所有的终端在行驶记录表的最后一个数据
|
|
|
+ LambdaQueryWrapper<VehiclePosition> lambdaQueryWrapper = new LambdaQueryWrapper();
|
|
|
+ lambdaQueryWrapper.eq(VehiclePosition::getCreateTime, baseTerminal.getTerminalCode());
|
|
|
+ lambdaQueryWrapper.orderByDesc(VehiclePosition::getId);
|
|
|
+ List<VehiclePosition> vehiclePositions = vehiclePositionMapper.selectList(lambdaQueryWrapper);
|
|
|
+ if (!ObjectUtils.isEmpty(vehiclePositions) && vehiclePositions.size() > 0) {
|
|
|
+ list.add(vehiclePositions.get(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ // 线路
|
|
|
+ List<BaseRailwayManagement> railwayList = railwayManagementMapper.selectList(new LambdaQueryWrapper());
|
|
|
+ if (!ObjectUtils.isEmpty(railwayList)) {
|
|
|
+ for (BaseRailwayManagement baseRailwayManagement : railwayList) {
|
|
|
+
|
|
|
+ // 根据线路查询当前机车行驶
|
|
|
VehicleTree build = VehicleTree.builder()
|
|
|
- .code(o.getRailwayCode())
|
|
|
- .flay(true)
|
|
|
- .children(new ArrayList<>())
|
|
|
- .build();
|
|
|
- for (BaseRailwayManagement railway : railwayList) {
|
|
|
- if (railway.getRailwayCode().equals(build.getCode())) {
|
|
|
- build.setName(railway.getRailwayName());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!vehicleTree.getChildren().stream()
|
|
|
- .map(VehicleTree::getCode)
|
|
|
- .collect(Collectors.toList())
|
|
|
- .contains(build.getCode())) {
|
|
|
- vehicleTree.getChildren().add(build);
|
|
|
- map.put(o.getRailwayCode(), build);
|
|
|
- }
|
|
|
- // 里程
|
|
|
- String mils = AppendUtils.stringAppend(o.getTravelMile());
|
|
|
- VehicleTree build1 = VehicleTree.builder()
|
|
|
- .code(mils + "-" + (o.getLineDir().equals("1") ? "上行" : "下行"))
|
|
|
- .name(mils + "-" + (o.getLineDir().equals("1") ? "上行" : "下行"))
|
|
|
+ .code(baseRailwayManagement.getRailwayCode())
|
|
|
+ .name(baseRailwayManagement.getRailwayName())
|
|
|
.flay(true)
|
|
|
- .mileage(o.getTravelMile())
|
|
|
.children(new ArrayList<>())
|
|
|
.build();
|
|
|
-
|
|
|
-
|
|
|
- if (!ObjectUtils.isEmpty(map.get(o.getRailwayCode()))) {
|
|
|
- VehicleTree vehicleTree1 = map.get(o.getTravelMile() + "-" + (o.getLineDir().equals("1") ? "上行" : "下行"));
|
|
|
- if (ObjectUtils.isEmpty(vehicleTree1)) {
|
|
|
- map.put(o.getTravelMile() + "-" + (o.getLineDir().equals("1") ? "上行" : "下行"), build1);
|
|
|
- map.get(o.getRailwayCode()).getChildren().add(build1);
|
|
|
+ if (list.size() > 0) {
|
|
|
+ List<VehiclePosition> collect = list.stream().filter(vp -> vp.getRailwayCode().equals(baseRailwayManagement.getRailwayCode())).collect(Collectors.toList());
|
|
|
+ if (!ObjectUtils.isEmpty(collect)) {
|
|
|
+ collect.sort((o1, o2) -> o1.getTravelMile().compareTo(o2.getTravelMile()));
|
|
|
+ List<VehicleTree> childrens = collect.stream().map(vp -> {
|
|
|
+ LambdaQueryWrapper<BaseVehicle> lambdaQueryWrapper = new LambdaQueryWrapper();
|
|
|
+ lambdaQueryWrapper.eq(BaseVehicle::getVehicleCode, vp.getVehicleCode());
|
|
|
+ BaseVehicle baseVehicle = baseVehicleMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ return VehicleTree.builder()
|
|
|
+ .code(vp.getTerminalCode())
|
|
|
+ .name(AppendUtils.stringAppend(Integer.valueOf(vp.getTravelMile())) + "-" + (vp.getLineDir().equals("1") ? "上行" : "下行") + "-" + (ObjectUtils.isEmpty(baseVehicle) ? vp.getVehicleCode() : baseVehicle.getVehicleName()))
|
|
|
+ .flay(true)
|
|
|
+ .children(new ArrayList<>())
|
|
|
+ .build();
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ build.setChildren(childrens);
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 摄像头
|
|
|
- VehicleTree build2 = VehicleTree.builder()
|
|
|
- .code(o.getTerminalCode())
|
|
|
- .name(o.getTerminalCode())
|
|
|
- .flay(true)
|
|
|
- .children(new ArrayList<>())
|
|
|
- .build();
|
|
|
|
|
|
|
|
|
- if (!ObjectUtils.isEmpty(map.get(o.getTravelMile() + "-" + (o.getLineDir().equals("1") ? "上行" : "下行")))) {
|
|
|
- map.get(o.getTravelMile() + "-" + (o.getLineDir().equals("1") ? "上行" : "下行")).getChildren().add(build2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
return vehicleTree;
|
|
|
}
|