zhanghaijun пре 2 година
родитељ
комит
0db2510711

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

@@ -94,10 +94,19 @@ public class RouteComputerService {
     public boolean isTrigger(Long sectionId, DirectionEnum direction, BigDecimal offset) {
         SectionItem section = sectionService.getSectionItem(sectionId, direction);
         RouteEntity route = routeRepository.findById(section.getRouteId()).orElseThrow(() -> new IllegalArgumentException(String.format("不存在该进路, routeId: %s", section.getRouteId())));
+        // 进入最后一个区段才触发下一个进路
         if (sectionId.equals(CollUtil.getLast(route.getSelectionList()))) {
-            // 进入最后一个区段才触发下一个进路
-            BigDecimal distance = NumberUtil.add(offset, TrainConstant.ROUTE_TRIGGER_OFFSET);
-            return NumberUtil.isLessOrEqual(section.getSectionLength(), distance);
+            switch (route.getDirection()) {
+                case UP -> {
+                    // 上行 偏移量 <= 触发偏移量
+                    return NumberUtil.isLessOrEqual(offset, TrainConstant.ROUTE_TRIGGER_OFFSET);
+                }
+                case DOWN -> {
+                    // 下行 (区段长度-偏移量) <= 触发偏移量
+                    BigDecimal distance = NumberUtil.sub(section.getSectionLength(), offset);
+                    return NumberUtil.isLessOrEqual(NumberUtil.min(distance, BigDecimal.ZERO), TrainConstant.ROUTE_TRIGGER_OFFSET);
+                }
+            }
         }
         return false;
     }

+ 9 - 9
train-web/src/pages/device/DeviceDoor.vue

@@ -208,17 +208,17 @@ interface StateItem {
   command?: DeviceType
 }
 const tableData1 = reactive<StateItem[]>([
-  { name: "所有门关闭并锁定", stateUp: 'state-invalid', stateDown: 'state-invalid' },
-  { name: "SIG自动开门命令", stateUp: 'state-invalid', stateDown: 'state-invalid' },
-  { name: "SIG自动关门命令", stateUp: 'state-invalid', stateDown: 'state-invalid' },
-  { name: "IBP操作允许", stateUp: 'state-invalid', stateDown: 'state-invalid' },
-  { name: "PSL操作允许", stateUp: 'state-invalid', stateDown: 'state-invalid' },
+  { name: "所有门关闭并锁定", stateUp: 'state-valid', stateDown: 'state-valid' },
+  { name: "SIG自动开门命令", stateUp: 'state-valid', stateDown: 'state-valid' },
+  { name: "SIG自动关门命令", stateUp: 'state-valid', stateDown: 'state-valid' },
+  { name: "IBP操作允许", stateUp: 'state-valid', stateDown: 'state-valid' },
+  { name: "PSL操作允许", stateUp: 'state-valid', stateDown: 'state-valid' },
 ]);
 const tableData2 = reactive<StateItem[]>([
-  { name: "IBP开门命令", stateUp: 'state-invalid', stateDown: 'state-invalid', command: IBP_DOOR_OPEN },
-  { name: "IBP关门命令", stateUp: 'state-invalid', stateDown: 'state-invalid', command: IBP_DOOR_CLOSE },
-  { name: "PSL开门命令", stateUp: 'state-invalid', stateDown: 'state-invalid', command: PSL_DOOR_OPEN },
-  { name: "PSL关闭命令", stateUp: 'state-invalid', stateDown: 'state-invalid', command: PSL_DOOR_CLOSE },
+  { name: "IBP开门命令", stateUp: 'state-valid', stateDown: 'state-valid', command: IBP_DOOR_OPEN },
+  { name: "IBP关门命令", stateUp: 'state-valid', stateDown: 'state-valid', command: IBP_DOOR_CLOSE },
+  { name: "PSL开门命令", stateUp: 'state-valid', stateDown: 'state-valid', command: PSL_DOOR_OPEN },
+  { name: "PSL关闭命令", stateUp: 'state-valid', stateDown: 'state-valid', command: PSL_DOOR_CLOSE },
 ]);
 const tableData3 = reactive<StateItem[]>([
   { name: "互锁接触报警", stateUp: 'state-valid', stateDown: 'state-valid' },

+ 11 - 5
train-web/src/pages/situation/index.vue

@@ -48,11 +48,11 @@
         <div>
           <div v-if="item.command == 20501">
             <span style="text-align: right;display: inline-block;min-width: 30px;margin-right: 6px;">{{ '大客流: ' }}</span>
-            <span>{{ item.value }}</span><span>{{ '人/m2' }}</span>
+            <span>{{ item.value.toFixed(4) }}</span><span>{{ '人/m2' }}</span>
           </div>
           <div v-if="item.command == 20601">
             <span style="text-align: right;display: inline-block;min-width: 30px;margin-right: 6px;">{{ '水位: ' }}</span>
-            <span>{{ item.value }}</span><span>{{ 'm' }}</span>
+            <span>{{ item.value.toFixed(2) }}</span><span>{{ 'm' }}</span>
           </div>
         </div>
       </el-popover>
@@ -93,11 +93,17 @@ const getDevice = function () {
         console.log("item: ", item);
         switch (item.postion.trim()) {
           case "站厅":
-            return {...item, command: device.command, postion: '站厅', top: '18vh', left: '110vh'}
+            return {...item, command: device.command, postion: item.postion.trim(), top: '18vh', left: '110vh'}
           case "站台":
-            return {...item, command: device.command, postion: '站台', top: '62vh', left: '110vh'}
+            return {...item, command: device.command, postion: item.postion.trim(), top: '62vh', left: '110vh'}
           case "站厅A端":
-            return {...item, command: device.command, postion: '站厅A端', top: '18vh', left: '10vh'}
+            return {...item, command: device.command, postion: item.postion.trim(), top: '8vh', left: '10vh'}
+          case "站厅B端":
+            return {...item, command: device.command, postion: item.postion.trim(), top: '18vh', left: '10vh'}
+          case "1出口":
+            return {...item, command: device.command, postion: item.postion.trim(), top: '28vh', left: '10vh'}
+          case "2出口":
+            return {...item, command: device.command, postion: item.postion.trim(), top: '38vh', left: '10vh'}
           default:
             return undefined;
         }