Explorar el Código

替换H2数据库、解析路由中得道岔信息

zhanghaijun hace 2 años
padre
commit
9c40334f0a

+ 24 - 0
train-server/src/main/java/top/haijunit/train/domain/constant/SwitchStateConverter.java

@@ -0,0 +1,24 @@
+package top.haijunit.train.domain.constant;
+
+import jakarta.persistence.AttributeConverter;
+import jakarta.persistence.Converter;
+
+import java.util.Optional;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/27 16:50
+ * @description [一句话描述该类的功能]
+ */
+@Converter(autoApply = true)
+public class SwitchStateConverter implements AttributeConverter<SwitchStateEnum, Integer> {
+    @Override
+    public Integer convertToDatabaseColumn(SwitchStateEnum state) {
+        return Optional.of(state).map(SwitchStateEnum::getCode).orElse(SwitchStateEnum.Forward.getCode());
+    }
+
+    @Override
+    public SwitchStateEnum convertToEntityAttribute(Integer code) {
+        return SwitchStateEnum.getByCode(code);
+    }
+}

+ 34 - 0
train-server/src/main/java/top/haijunit/train/domain/constant/SwitchStateEnum.java

@@ -0,0 +1,34 @@
+package top.haijunit.train.domain.constant;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/27 16:49
+ * @description [一句话描述该类的功能]
+ */
+@Getter
+@AllArgsConstructor
+public enum SwitchStateEnum {
+
+    Forward(1, "正向"), reverse(1, "侧向");
+
+    @JsonValue
+    private final Integer code;
+    private final String describe;
+
+    @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+    public static SwitchStateEnum getByCode(Integer code) {
+        for (SwitchStateEnum genderEnum : values()) {
+            if (Objects.equals(genderEnum.getCode(), code)) {
+                return genderEnum;
+            }
+        }
+        return null;
+    }
+}

+ 40 - 0
train-server/src/main/java/top/haijunit/train/domain/entity/RouteEntity.java

@@ -1,5 +1,8 @@
 package top.haijunit.train.domain.entity;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.StrUtil;
 import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
 import jakarta.persistence.GenerationType;
@@ -7,9 +10,15 @@ import jakarta.persistence.Id;
 import lombok.Data;
 import top.haijunit.train.domain.constant.DirectionEnum;
 import top.haijunit.train.domain.constant.SignalStateEnum;
+import top.haijunit.train.domain.constant.SwitchStateEnum;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * @author zhang
@@ -39,4 +48,35 @@ public class RouteEntity implements Serializable {
     private BigDecimal trigPosition;
     // 进路方向
     private DirectionEnum direction;
+
+    public ArrayList<Long> getSelectionList() {
+        if (StrUtil.isBlank(this.getSeleIds())) {
+            return new ArrayList<>();
+        }
+        return StrUtil.split(this.getSeleIds(), "-").stream().map(item -> Convert.toLong(item, 0L)).collect(Collectors.toCollection(ArrayList::new));
+    }
+
+    public ArrayList<Long> getSwitchList() {
+        if (StrUtil.isBlank(this.getSwitchId())) {
+            return new ArrayList<>();
+        }
+        return StrUtil.split(this.getSwitchId(), "-").stream().map(item -> Convert.toLong(item, 0L)).collect(Collectors.toCollection(ArrayList::new));
+    }
+
+    public ArrayList<SwitchStateEnum> getSwitchStateList() {
+        if (StrUtil.isBlank(this.getSwitchState())) {
+            return new ArrayList<>();
+        }
+        return StrUtil.split(this.getSwitchState(), "-").stream().map(item -> SwitchStateEnum.getByCode(Convert.toInt(item, SwitchStateEnum.Forward.getCode()))).collect(Collectors.toCollection(ArrayList::new));
+    }
+
+    public Map<Long, SwitchStateEnum> getSignalMap() {
+        ArrayList<Long> switchList = this.getSwitchList();
+        ArrayList<SwitchStateEnum> switchStateList = this.getSwitchStateList();
+        Map<Long, SwitchStateEnum> map = new HashMap<>();
+        for (int i = 0; i < switchList.size(); i++) {
+            map.put(switchList.get(i), Optional.of(CollUtil.get(switchStateList, i)).orElse(SwitchStateEnum.Forward));
+        }
+        return map;
+    }
 }

+ 9 - 2
train-server/src/main/resources/application-local.yml

@@ -1,6 +1,13 @@
 spring:
+  h2:
+    console:
+      enabled: true
+      path: /h2
+      settings:
+        trace: false
+        web-allow-others: true
   datasource:
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://localhost:3306/db_train?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
+    driver-class-name: org.h2.Driver
+    url: jdbc:h2:./store/db_train;IGNORECASE=TRUE;MODE=MySQL;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9090;USER=root;PASSWORD=123456
     username: root
     password: 123456

+ 6 - 0
train-server/src/main/resources/application-mysql.yml

@@ -0,0 +1,6 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    url: jdbc:mysql://localhost:3306/db_train?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
+    username: root
+    password: 123456