zhanghaijun лет назад: 2
Родитель
Сommit
fe4a52f838

+ 4 - 4
train-server/src/main/java/top/haijunit/train/listener/TrainApplication.java

@@ -33,10 +33,10 @@ public class TrainApplication implements ApplicationRunner {
 
     @Override
     public void run(ApplicationArguments args) {
-        List<TrainEntity> list = trainRepository.findAll();
-        // List<TrainEntity> list = trainRepository.findAllById(new ArrayList<>() {{
-        //     add(110004L);
-        // }});
+        // List<TrainEntity> list = trainRepository.findAll();
+        List<TrainEntity> list = trainRepository.findAllById(new ArrayList<>() {{
+            add(110001L);
+        }});
         for (TrainEntity train : list) {
             try {
                 SectionItem sectionItem = sectionService.getSection(train.getSectionId());

+ 3 - 3
train-server/src/main/java/top/haijunit/train/simulation/train/RouteComputerService.java

@@ -41,9 +41,9 @@ public class RouteComputerService {
     public void run(TrainItem train) {
         try {
             LinkedList<SectionItem> list = routeCompute(train);
-            log.info("---进路数据,列车:{},进路:{}", train.getTrainNo(), list.stream().map(item -> {
-                return item.getSectionName() + "-" + item.getSectionStatus().getDescribe();
-            }).collect(Collectors.joining(",")));
+            // log.info("---进路数据,列车:{},进路:{}", train.getTrainNo(), list.stream().map(item -> {
+            //     return item.getSectionName() + "-" + item.getSectionStatus().getDescribe();
+            // }).collect(Collectors.joining(",")));
             if (CollUtil.isNotEmpty(list)) {
                 // 更新进路共享数据
                 TrainSimulationHolder.addRouteList(train.getTrainId(), list);

+ 5 - 5
train-server/src/main/java/top/haijunit/train/simulation/train/TrainComputerService.java

@@ -66,13 +66,13 @@ public class TrainComputerService {
             // 停车标数据
             HashMap<Long, SignStopEntity> stopSignalMap = selectionService.getStopSignalMap(list.stream().map(SectionItem::getSectionId).collect(Collectors.toList()));
             SectionItem currentSection = sectionOptional.get();
-            BigDecimal currentAllOffset = NumberUtil.add(train.getOffset(), NumberUtil.mul(train.getDirection().getFactor(), distance.abs()));
+            BigDecimal currentOffset = NumberUtil.add(train.getOffset(), NumberUtil.mul(train.getDirection().getFactor(), distance.abs())).abs();
             for (int i = 0; i < list.size(); i++) {
                 SectionItem sectionItem = list.get(i);
                 SignStopEntity stopSign = stopSignalMap.get(sectionItem.getSectionId());
-                if (null != stopSign) {
+                if (null != stopSign && train.getBlockId().equals(sectionItem.getSectionId())) {
                     // 存在停车标
-                    if (NumberUtil.isGreater(stopSign.getSelectionOff(), train.getOffset()) && NumberUtil.isLessOrEqual(stopSign.getSelectionOff(), currentAllOffset)) {
+                    if (NumberUtil.isGreater(stopSign.getSelectionOff(), train.getOffset()) && NumberUtil.isLessOrEqual(stopSign.getSelectionOff(), currentOffset)) {
                         train.setSpeed(BigDecimal.ZERO);
                         train.setAcceleration(BigDecimal.ZERO);
                         train.setBlockId(sectionItem.getSectionId());
@@ -84,12 +84,12 @@ public class TrainComputerService {
                     }
                 }
                 if (i != list.size() - 1) {
-                    currentAllOffset = NumberUtil.sub(currentAllOffset, sectionItem.getSectionLength());
+                    currentOffset = NumberUtil.sub(currentOffset, sectionItem.getSectionLength()).abs();
                 }
                 currentSection = sectionItem;
             }
             train.setSpeed(CalculatorUtil.velocity(train.getSpeed(), train.getAcceleration(), train.getUpdateTimeMillis(), nowMillis).abs());
-            train.setOffset(currentAllOffset.abs());
+            train.setOffset(currentOffset);
             train.setBlockId(currentSection.getSectionId());
             train.setBlockNo(currentSection.getSectionName());
             train.setDirection(currentSection.getDirection());