Quellcode durchsuchen

设备数据实体添加

zhanghaijun vor 2 Jahren
Ursprung
Commit
7e2782c36f

+ 12 - 0
train-server/src/main/java/top/haijunit/train/device/domain/DeviceItem.java

@@ -0,0 +1,12 @@
+package top.haijunit.train.device.domain;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/19 16:27
+ * @description 设备接口
+ */
+public interface DeviceItem {
+
+
+
+}

+ 0 - 31
train-server/src/main/java/top/haijunit/train/device/entity/ElevatorEntity.java

@@ -1,31 +0,0 @@
-package top.haijunit.train.device.entity;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author zhanghaijun
- * @date 2023/12/8 18:44
- * @description [一句话描述该类的功能]
- */
-@Data
-@Entity(name = "device_elevator")
-public class ElevatorEntity implements Serializable {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    private Integer elevatorType;
-
-    private String name;
-
-    private Long stationId;
-
-    private Integer status;
-}

+ 77 - 5
train-server/src/main/java/top/haijunit/train/device/entity/PlatformDoorEntity.java

@@ -1,12 +1,14 @@
 package top.haijunit.train.device.entity;
 
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import jakarta.persistence.*;
 import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 
 import java.io.Serializable;
+import java.util.Objects;
+import java.util.Optional;
 
 /**
  * @author zhanghaijun
@@ -27,5 +29,75 @@ public class PlatformDoorEntity implements Serializable {
 
     private Long platformId;
 
-    private Integer status;
+    // 锁闭状态
+    private StatusLockEnum lockStatus;
+    // 控制状态
+    private StatusControlEnum controlStatus;
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum StatusLockEnum {
+        CLOSE(0, "关闭锁紧"), OPEN(1, "未关闭锁紧");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static StatusLockEnum getByCode(Integer code) {
+            for (StatusLockEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class StatusLockConvert implements AttributeConverter<StatusLockEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(StatusLockEnum status) {
+            return Optional.of(status).map(StatusLockEnum::getCode).orElse(0);
+        }
+
+        @Override
+        public StatusLockEnum convertToEntityAttribute(Integer code) {
+            return StatusLockEnum.getByCode(code);
+        }
+    }
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum StatusControlEnum {
+        AUTO(0, "自动"),
+        Manual_OPEN(1, "手动开"),
+        Manual_CLOSE(2, "手动关"),
+        isolate(3, "隔离");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static StatusControlEnum getByCode(Integer code) {
+            for (StatusControlEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class StatusControlConvert implements AttributeConverter<StatusControlEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(StatusControlEnum status) {
+            return Optional.of(status).map(StatusControlEnum::getCode).orElse(0);
+        }
+
+        @Override
+        public StatusControlEnum convertToEntityAttribute(Integer code) {
+            return StatusControlEnum.getByCode(code);
+        }
+    }
 }

+ 66 - 0
train-server/src/main/java/top/haijunit/train/device/entity/PlatformStopEntity.java

@@ -0,0 +1,66 @@
+package top.haijunit.train.device.entity;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import top.haijunit.train.domain.constant.DirectionEnum;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/19 16:15
+ * @description 站台紧急停车
+ */
+@Data
+@Entity(name = "device_platform_stop")
+public class PlatformStopEntity implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    // 站台编号
+    private String platformNo;
+    // 运行方向
+    private DirectionEnum direction;
+    // 按下/弹起指令
+    private PlatformStopStatus status;
+
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum PlatformStopStatus {
+        UP(0, "弹起/复位"), DOWN(1, "按下");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static PlatformStopStatus getByCode(Integer code) {
+            for (PlatformStopStatus genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class PlatformStopStatusConvert implements AttributeConverter<PlatformStopStatus, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(PlatformStopStatus status) {
+            return Optional.of(status).map(PlatformStopStatus::getCode).orElse(0);
+        }
+
+        @Override
+        public PlatformStopStatus convertToEntityAttribute(Integer code) {
+            return PlatformStopStatus.getByCode(code);
+        }
+    }
+}

+ 98 - 0
train-server/src/main/java/top/haijunit/train/device/entity/StationAfcGate.java

@@ -0,0 +1,98 @@
+package top.haijunit.train.device.entity;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import top.haijunit.train.domain.constant.DirectionEnum;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/19 16:36
+ * @description AFC闸机信息
+ */
+@Data
+@Entity(name = "device_afc_gate")
+public class StationAfcGate implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    // 闸机编号
+    private String gateMachineNo;
+    // 闸机状态
+    private GateStatusEnum state;
+    // 闸机方向状态
+    private DirectionEnum direction;
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum GateStatusEnum {
+        CLOSE(0, "关闭"), OPEN(1, "开启"), PAUSE(2, "暂停服务"), FAULT(3, "故障");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static GateStatusEnum getByCode(Integer code) {
+            for (GateStatusEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class GateStatusConvert implements AttributeConverter<GateStatusEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(GateStatusEnum status) {
+            return Optional.of(status).map(GateStatusEnum::getCode).orElse(0);
+        }
+
+        @Override
+        public GateStatusEnum convertToEntityAttribute(Integer code) {
+            return GateStatusEnum.getByCode(code);
+        }
+    }
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum GateDirectionEnum {
+        JOIN(0, "进站"), LEAVE(1, "出站");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static GateDirectionEnum getByCode(Integer code) {
+            for (GateDirectionEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class DirectionConvert implements AttributeConverter<GateDirectionEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(GateDirectionEnum status) {
+            return Optional.of(status).map(GateDirectionEnum::getCode).orElse(0);
+        }
+
+        @Override
+        public GateDirectionEnum convertToEntityAttribute(Integer code) {
+            return GateDirectionEnum.getByCode(code);
+        }
+    }
+
+}

+ 66 - 0
train-server/src/main/java/top/haijunit/train/device/entity/StationElevatorEntity.java

@@ -0,0 +1,66 @@
+package top.haijunit.train.device.entity;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/8 18:44
+ * @description 电扶梯运行
+ */
+@Data
+@Entity(name = "device_elevator")
+public class StationElevatorEntity implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+
+    private Long stationId;
+
+    private ElevatorStatusEnum status;
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum ElevatorStatusEnum {
+        // RUN(0, "运行"),
+        UP(0, "上行"),
+        DOWN(1, "下行"),
+        STOP(2, "停止"),
+        DISABLE(3, "禁用");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static ElevatorStatusEnum getByCode(Integer code) {
+            for (ElevatorStatusEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class ElevatorStatusConvert implements AttributeConverter<ElevatorStatusEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(ElevatorStatusEnum status) {
+            return Optional.of(status).map(ElevatorStatusEnum::getCode).orElse(0);
+        }
+
+        @Override
+        public ElevatorStatusEnum convertToEntityAttribute(Integer code) {
+            return ElevatorStatusEnum.getByCode(code);
+        }
+    }
+}

+ 62 - 0
train-server/src/main/java/top/haijunit/train/device/entity/StationElevatorVerticalEntity.java

@@ -0,0 +1,62 @@
+package top.haijunit.train.device.entity;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/8 18:44
+ * @description 电扶梯运行
+ */
+@Data
+@Entity(name = "device_elevator")
+public class StationElevatorVerticalEntity implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+    private String name;
+
+    private Long stationId;
+
+    private ElevatorVerticalStatusEnum status;
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum ElevatorVerticalStatusEnum {
+        RUN(0, "运行"), STOP(1, "停止"), DISABLE(2, "禁用");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static ElevatorVerticalStatusEnum getByCode(Integer code) {
+            for (ElevatorVerticalStatusEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class ElevatorStatusConvert implements AttributeConverter<ElevatorVerticalStatusEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(ElevatorVerticalStatusEnum status) {
+            return Optional.of(status).map(ElevatorVerticalStatusEnum::getCode).orElse(ElevatorVerticalStatusEnum.STOP.getCode());
+        }
+
+        @Override
+        public ElevatorVerticalStatusEnum convertToEntityAttribute(Integer code) {
+            return ElevatorVerticalStatusEnum.getByCode(code);
+        }
+    }
+}

+ 67 - 0
train-server/src/main/java/top/haijunit/train/device/entity/StationTicketEntity.java

@@ -0,0 +1,67 @@
+package top.haijunit.train.device.entity;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/8 18:44
+ * @description AFC自动售票机信息
+ */
+@Data
+@Entity(name = "device_ticketing")
+public class StationTicketEntity implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    private Integer ticketType;
+
+    private String tvmNo;
+
+    private Long stationId;
+
+    private TicketStatusEnum status;
+
+    @Getter
+    @RequiredArgsConstructor
+    public static enum TicketStatusEnum {
+        NORMAL(0, "正常服务"),
+        PAUSE(1, "暂停服务"),
+        FAULT(2, "故障");
+
+        private final Integer code;
+        private final String describe;
+
+        @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+        public static TicketStatusEnum getByCode(Integer code) {
+            for (TicketStatusEnum genderEnum : values()) {
+                if (Objects.equals(genderEnum.getCode(), code)) {
+                    return genderEnum;
+                }
+            }
+            return null;
+        }
+    }
+
+    @Converter(autoApply = true)
+    public static class TicketStatusConvert implements AttributeConverter<TicketStatusEnum, Integer> {
+        @Override
+        public Integer convertToDatabaseColumn(TicketStatusEnum status) {
+            return Optional.of(status).map(TicketStatusEnum::getCode).orElse(0);
+        }
+
+        @Override
+        public TicketStatusEnum convertToEntityAttribute(Integer code) {
+            return TicketStatusEnum.getByCode(code);
+        }
+    }
+}

+ 0 - 31
train-server/src/main/java/top/haijunit/train/device/entity/TicketingEntity.java

@@ -1,31 +0,0 @@
-package top.haijunit.train.device.entity;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author zhanghaijun
- * @date 2023/12/8 18:44
- * @description [一句话描述该类的功能]
- */
-@Data
-@Entity(name = "device_ticketing")
-public class TicketingEntity implements Serializable {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    private Integer ticketType;
-
-    private String name;
-
-    private Long stationId;
-
-    private Integer status;
-}

+ 20 - 0
train-server/src/main/java/top/haijunit/train/device/service/DeviceService.java

@@ -0,0 +1,20 @@
+package top.haijunit.train.device.service;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import top.haijunit.common.utils.SpringUtils;
+import top.haijunit.train.device.domain.DeviceItem;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/19 16:28
+ * @description 设备数据处理
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class DeviceService {
+
+
+}

+ 1 - 1
train-server/src/main/java/top/haijunit/train/listener/ReportTimeHandle.java

@@ -11,7 +11,7 @@ import top.haijunit.train.simulation.train.RouteComputerService;
 import top.haijunit.train.simulation.train.TrainComputerService;
 import top.haijunit.train.simulation.train.TrainSimulationHolder;
 import top.haijunit.train.socket.CommandEnum;
-import top.haijunit.train.socket.TrainWebSocketUtils;
+import top.haijunit.train.utils.TrainWebSocketUtils;
 
 import java.util.HashMap;
 import java.util.LinkedList;

+ 0 - 19
train-server/src/main/java/top/haijunit/train/socket/SocketBase.java

@@ -1,19 +0,0 @@
-package top.haijunit.train.socket;
-
-import cn.hutool.json.JSONObject;
-import top.haijunit.train.device.entity.DeviceEntity;
-
-/**
- * @author zhang
- * @date 2023/11/24 00:12
- * @description [一句话描述该类的功能]
- */
-public abstract class SocketBase {
-
-    public SocketBase(JSONObject jsonObject) {
-
-    }
-
-    public abstract DeviceEntity getDeviceEntity();
-
-}

+ 2 - 1
train-server/src/main/java/top/haijunit/train/socket/TrainWebSocketUtils.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.socket;
+package top.haijunit.train.utils;
 
 import cn.hutool.json.JSONUtil;
 import lombok.AllArgsConstructor;
@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.experimental.UtilityClass;
 import lombok.extern.slf4j.Slf4j;
 import top.haijunit.common.utils.JsonUtils;
+import top.haijunit.train.socket.CommandEnum;
 import top.haijunit.websocket.utils.WebSocketUtils;
 
 /**

+ 5 - 9
train-server/src/test/java/top/haijunit/train/test/ComputerRouteTest.java

@@ -2,21 +2,17 @@ package top.haijunit.train.test;
 
 import cn.hutool.core.collection.CollUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.annotation.Before;
-import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
-import org.junit.jupiter.params.provider.ValueSource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import top.haijunit.common.utils.StreamUtils;
 import top.haijunit.train.TrainServerMain;
-import top.haijunit.train.domain.constant.DirectionEnum;
 import top.haijunit.train.domain.entity.SignStopEntity;
-import top.haijunit.train.domain.entity.TrainEntity;
 import top.haijunit.train.service.SectionService;
 import top.haijunit.train.simulation.domain.SectionItem;
-import top.haijunit.train.simulation.domain.TrainItem;
 import top.haijunit.train.simulation.domain.TrainTravel;
 import top.haijunit.train.simulation.train.TrainComputerService;
 import top.haijunit.train.utils.NumberUtil;
@@ -48,8 +44,8 @@ public class ComputerRouteTest {
     @BeforeEach
     void localAllRoute() {
         this.sectionItems = sectionService.getAllSection();
-        // this.sectionItems.forEach(item -> log.info("id:{}, 进路:{}, 区段名称:{}, 区段Id:{}, 上一个:{}, 下一个:{}, 道岔:{}, 折返:{}", item.getId(), item.getRouteName(), item.getSectionName(), item.getSectionId(), item.getPreId(), item.getNextId(), item.isSwitch(), item.isTurnBack()));
-        // log.info("------ 进路区段集合 ------");
+        this.sectionItems.forEach(item -> log.info("id:{}, 进路:{}, 区段名称:{}, 区段Id:{}, 上一个:{}, 下一个:{}, 道岔:{}, 折返:{}", item.getId(), item.getRouteName(), item.getSectionName(), item.getSectionId(), item.getPreId(), item.getNextId(), item.isSwitch(), item.isTurnBack()));
+        log.info("------ 进路区段集合 ------");
     }
 
     @DisplayName("列车行驶-上行")

+ 29 - 0
train-server/src/test/java/top/haijunit/train/test/DeviceTest.java

@@ -0,0 +1,29 @@
+package top.haijunit.train.test;
+
+import cn.hutool.core.util.ArrayUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import top.haijunit.common.utils.SpringUtils;
+import top.haijunit.train.TrainServerMain;
+import top.haijunit.train.device.domain.DeviceItem;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/12/19 16:32
+ * @description [一句话描述该类的功能]
+ * @version 1.0
+ */
+@Slf4j
+@DisplayName("进路测试")
+@SpringBootTest(classes = TrainServerMain.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)
+public class DeviceTest {
+
+    @Test
+    void demoTest() {
+        String[] beanNamesForType = SpringUtils.getBeanNamesForType(DeviceItem.class);
+        log.info("beanNamesForType={}", ArrayUtil.join(beanNamesForType, ","));
+    }
+
+}