From b59ca2cc8067ef7016bc4c3b3e2bd976829e97b0 Mon Sep 17 00:00:00 2001 From: gudae01 Date: Thu, 12 Jun 2025 10:44:46 +0900 Subject: [PATCH] register_config --- .../model/register/RegisterDTO.java | 122 ++++++++++++++++++ .../register/enums/AnalogInputLevel.java | 19 +++ .../model/register/enums/AnalogPort.java | 38 ++++++ .../model/register/enums/CanInput.java | 16 +++ .../model/register/enums/DR.java | 17 +++ .../model/register/enums/DeviceType.java | 17 +++ .../model/register/enums/Equipment.java | 22 ++++ .../model/register/enums/FourByte.java | 18 +++ .../model/register/enums/InputDataType.java | 20 +++ .../model/register/enums/OutputDataType.java | 18 +++ .../model/register/enums/Protocol.java | 17 +++ .../model/register/enums/SpeedDataSource.java | 16 +++ .../model/register/enums/TwoByte.java | 16 +++ .../model/register/sebDTO/BoolToString.java | 19 +++ .../model/register/sebDTO/CanField.java | 29 +++++ .../model/register/sebDTO/ModbusField.java | 32 +++++ .../model/register/sebDTO/OpcUaField.java | 32 +++++ .../service/SettingService.java | 60 ++++++++- 18 files changed, 526 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DeviceType.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Equipment.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FourByte.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/InputDataType.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/OutputDataType.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Protocol.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/SpeedDataSource.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/enums/TwoByte.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/BoolToString.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java index 805a325..37d8192 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/RegisterDTO.java @@ -1,4 +1,126 @@ package org.mobidgim.mobidigimproject.model.register; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +import org.mobidgim.mobidigimproject.model.register.enums.*; +import org.mobidgim.mobidigimproject.model.register.sebDTO.BoolToString; +import org.mobidgim.mobidigimproject.model.register.sebDTO.CanField; +import org.mobidgim.mobidigimproject.model.register.sebDTO.ModbusField; +import org.mobidgim.mobidigimproject.model.register.sebDTO.OpcUaField; + +@Getter +@Setter +@JsonInclude(JsonInclude.Include.NON_NULL) public class RegisterDTO { + + private AnalogInputLevel AnalogInputLevel; + + private boolean ai0; + + private boolean ai1; + + private boolean ai2; + + private boolean ai3; + + private boolean di0; + + private boolean di1; + + private boolean di2; + + private boolean di3; + + private CanInput canInput; + + private DeviceType deviceType; + + private DR dr; + + private Equipment equipment; + + private TwoByte twoByte; + + private FourByte fourByte; + + private InputDataType inputDataType; + + private OutputDataType outputDataType; + + private Protocol protocol; + + private SpeedDataSource speedDataSource; + + private String version; + + private String equipmentId; + + private String meid; + + private ModbusField modbusField; + + private OpcUaField opcUaField; + + private CanField canField; + +// private String field; +// +// private String ns; +// +// private String addr; +// +// private String dv; +// +// private int shift; +// +// private int mask; +// +// private String expr; + + @JsonProperty("ai0") + public String getAi0AsString(){ + return BoolToString.convertToAnalogPortValue(ai0); + } + + @JsonProperty("ai1") + public String getAi1AsString(){ + return BoolToString.convertToAnalogPortValue(ai1); + } + + @JsonProperty("ai2") + public String getAi2AsString(){ + return BoolToString.convertToAnalogPortValue(ai2); + } + + @JsonProperty("ai3") + public String getAi3AsString(){ + return BoolToString.convertToAnalogPortValue(ai3); + } + + @JsonProperty("di0") + public String getDi0AsString(){ + return BoolToString.convertToAnalogPortValue(di0); + } + + @JsonProperty("di1") + public String getDi1AsString(){ + return BoolToString.convertToAnalogPortValue(di1); + } + + @JsonProperty("di2") + public String getDi2AsString(){ + return BoolToString.convertToAnalogPortValue(di2); + } + + @JsonProperty("di3") + public String getDi3AsString(){ + return BoolToString.convertToAnalogPortValue(di3); + } + + } + + diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java new file mode 100644 index 0000000..97bed9d --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogInputLevel.java @@ -0,0 +1,19 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum AnalogInputLevel { + two("2"), + four("4"), + six("6"), + ; + + private final String analogInput; + + @JsonValue + public String getAnalogInput() { + return analogInput; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java new file mode 100644 index 0000000..db91059 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/AnalogPort.java @@ -0,0 +1,38 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum AnalogPort { + + NOT_UseD("0", false), + USED("1", true); + + private final String portValue; + private final boolean boolValue; + + @JsonCreator + public static AnalogPort fromPortValue(String portValue) { + for(AnalogPort analogPort : AnalogPort.values()) { + if(analogPort.portValue.equals(portValue)) { + return analogPort; + } + } + throw new IllegalArgumentException("Invalid port value: " + portValue); + } + + + @JsonValue + public String getPortValue() { + return portValue; + } + + public boolean toBoolValue() { + return boolValue; + } + + + +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java new file mode 100644 index 0000000..b149948 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/CanInput.java @@ -0,0 +1,16 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum CanInput { + On("on"), + Off("off"); + private final String canInput; + + @JsonValue + public String getCanInput() { + return canInput; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java new file mode 100644 index 0000000..3500468 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DR.java @@ -0,0 +1,17 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum DR { + On("on"), + Off("off"); + + private final String DR; + + @JsonValue + public String getDR() { + return DR; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DeviceType.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DeviceType.java new file mode 100644 index 0000000..f12eb56 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/DeviceType.java @@ -0,0 +1,17 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum DeviceType { + TIOT("TIOT"), + RTLS("RTLS"); + private final String Device; + + @JsonValue + public String getType() { + return Device; + } + +} \ No newline at end of file diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Equipment.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Equipment.java new file mode 100644 index 0000000..f9b7a04 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Equipment.java @@ -0,0 +1,22 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum Equipment { + ITV("ITV"), + RS("RS"), + ECH("ECH"), + RTG("RTG"), + RMG("RMG"), + MHC("MHC"), + STS("STS"); + private final String equipment; + + @JsonValue + public String getEquipment() { + return equipment; + } + +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FourByte.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FourByte.java new file mode 100644 index 0000000..f504b55 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/FourByte.java @@ -0,0 +1,18 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum FourByte { + little("little"), + littleSwap("littleSwap"), + bigSwap("bigSwap"), + big("big"); + private final String fourByte; + + @JsonValue + public String getFourByte() { + return fourByte; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/InputDataType.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/InputDataType.java new file mode 100644 index 0000000..64ffa95 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/InputDataType.java @@ -0,0 +1,20 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum InputDataType { + integer("integer"), + flo("float"), + bool("boolean"), + unsignedInteger("unsignedInteger"), + shor("short"), + unsignedShort("unsignedShort"); + private final String idt; + + @JsonValue + public String getIdt() { + return idt; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/OutputDataType.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/OutputDataType.java new file mode 100644 index 0000000..2ac6e8d --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/OutputDataType.java @@ -0,0 +1,18 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum OutputDataType { + integer("integer"), + float64("float64"), + bool("boolean"), + String("string"); + private final String odt; + + @JsonValue + public String getOdt() { + return odt; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Protocol.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Protocol.java new file mode 100644 index 0000000..0de5dfb --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/Protocol.java @@ -0,0 +1,17 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum Protocol { + MODBUS("MODBUS"), + OPC_UA("OPC_UA"), + CAN("CAN"); + private final String protocol; + + @JsonValue + public String getProtocol() { + return protocol; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/SpeedDataSource.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/SpeedDataSource.java new file mode 100644 index 0000000..4a6a08c --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/SpeedDataSource.java @@ -0,0 +1,16 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum SpeedDataSource { + CAN("CAN"), + GPS("GPS"); + private final String dataSource; + + @JsonValue + public String getDataSource() { + return dataSource; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/TwoByte.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/TwoByte.java new file mode 100644 index 0000000..8c27ad7 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/enums/TwoByte.java @@ -0,0 +1,16 @@ +package org.mobidgim.mobidigimproject.model.register.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum TwoByte { + little("little"), + big("big"); + private final String twoByte; + + @JsonValue + public String getTwoByte() { + return twoByte; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/BoolToString.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/BoolToString.java new file mode 100644 index 0000000..2c8eb52 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/BoolToString.java @@ -0,0 +1,19 @@ +package org.mobidgim.mobidigimproject.model.register.sebDTO; + +import org.mobidgim.mobidigimproject.model.register.enums.AnalogPort; + +public class BoolToString { + + public static String convert(boolean value){ + return String.valueOf(value); + } + + public static String convertToAnalogPortValue(boolean value){ + if(value){ + return AnalogPort.USED.getPortValue(); + } + else { + return AnalogPort.NOT_UseD.getPortValue(); + } + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java new file mode 100644 index 0000000..b61ebb2 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/CanField.java @@ -0,0 +1,29 @@ +package org.mobidgim.mobidigimproject.model.register.sebDTO; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CanField { + + private String field; + + private String id; + + @JsonProperty("odt") // output data type + private String outputDataType; + + @JsonProperty("dv") // default value + private String defaultValue; + + private int shift; + + private String mask; + + private String expr; // expression + +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java new file mode 100644 index 0000000..73db015 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/ModbusField.java @@ -0,0 +1,32 @@ +package org.mobidgim.mobidigimproject.model.register.sebDTO; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ModbusField { + + private String field; + + @JsonProperty("idt") // input data type + private String inputDataType; + + private String addr; // address + + @JsonProperty("odt") // output data type + private String outputDataType; + + @JsonProperty("dv") // default value + private String defaultValue; + + private int shift; + + private String mask; + + private String expr; // expression + +} \ No newline at end of file diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java new file mode 100644 index 0000000..ffa961b --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/register/sebDTO/OpcUaField.java @@ -0,0 +1,32 @@ +package org.mobidgim.mobidigimproject.model.register.sebDTO; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonInclude(JsonInclude.Include.NON_NULL) // null 값 필드는 JSON에 포함하지 않음 +public class OpcUaField { + + private String field; + + private String ns; // name space + + private String addr; // address + + @JsonProperty("odt") // output data type + private String outputDataType; + + @JsonProperty("dv") // default value + private String defaultValue; + + private int shift; + + private String mask; + + private String expr; // expression + + +} \ No newline at end of file diff --git a/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java b/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java index eba15f7..8a926f7 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java +++ b/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java @@ -4,12 +4,19 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import org.mobidgim.mobidigimproject.model.device.DeviceDTO; import org.mobidgim.mobidigimproject.model.register.RegisterDTO; -import org.springframework.boot.context.config.ConfigData; +import org.mobidgim.mobidigimproject.model.register.enums.CanInput; +import org.mobidgim.mobidigimproject.model.register.enums.Protocol; +import org.mobidgim.mobidigimproject.model.register.sebDTO.CanField; +import org.mobidgim.mobidigimproject.model.register.sebDTO.ModbusField; +import org.mobidgim.mobidigimproject.model.register.sebDTO.OpcUaField; import org.springframework.stereotype.Service; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Map; @Service public class SettingService { @@ -18,6 +25,15 @@ public class SettingService { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(request); + + String directoryPath = "./temp"; + Path dirPath = Paths.get(directoryPath); + + if(!Files.exists(dirPath)){ + Files.createDirectory(dirPath); + } + + String filename = "./temp/deviceConfig.json"; Files.writeString(Paths.get(filename), json); @@ -27,8 +43,48 @@ public class SettingService { public RegisterDTO saveFileWithRegister(RegisterDTO request) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); - String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(request); + + Map finalJsonMap = mapper.convertValue(request, Map.class); + + finalJsonMap.remove("opc_ua_field"); + finalJsonMap.remove("modbus_field"); + finalJsonMap.remove("can_field"); + + if (request.getProtocol() != null) { + Protocol protocol = request.getProtocol(); + + if (protocol == Protocol.OPC_UA){ + OpcUaField opcUaField = request.getOpcUaField(); + if(opcUaField != null){ + finalJsonMap.put("OPC_UA", Arrays.asList(opcUaField)); + } + } + else if(protocol == Protocol.MODBUS){ + ModbusField modbusField = request.getModbusField(); + if(modbusField != null){ + finalJsonMap.put("MODBUS", Arrays.asList(modbusField)); + } + } + } + + if(request.getCanInput() == CanInput.On){ + CanField canField = request.getCanField(); + if(canField != null){ + finalJsonMap.put("CAN", Arrays.asList(canField)); + } + } + + String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(finalJsonMap); + + String directoryPath = "./temp"; + Path dirPath = Paths.get(directoryPath); + + if(!Files.exists(dirPath)){ + Files.createDirectory(dirPath); + } + String filename = "./temp/registerConfig.json"; + Files.writeString(Paths.get(filename), json); return request; }