From 44ee5fa332bc4475a460f1dc2853910cf8ad5fd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9B=90=ED=98=95?= <147372294+blissyou@users.noreply.github.com> Date: Thu, 12 Jun 2025 13:23:14 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=A1=9C=EB=93=9C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobidigimproject/common/api/Api.java | 6 +++ .../mobidigimproject/common/api/Result.java | 6 +++ .../controller/Controller.java | 23 +++++++---- .../model/device/enums/CanSpeed.java | 19 +++++++++ .../model/device/enums/Rs485Baudrate.java | 17 ++++++++ .../model/device/enums/Rs485Parity.java | 17 ++++++++ .../model/device/subDTO/CanBus.java | 3 +- .../model/device/subDTO/Rs485.java | 11 ++++- .../service/SettingService.java | 9 ++++ src/main/resources/static/index.html | 41 +++++++++++++------ 10 files changed, 128 insertions(+), 24 deletions(-) create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/device/enums/CanSpeed.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Baudrate.java create mode 100644 src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Parity.java diff --git a/src/main/java/org/mobidgim/mobidigimproject/common/api/Api.java b/src/main/java/org/mobidgim/mobidigimproject/common/api/Api.java index 215b7fa..f9f46e0 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/common/api/Api.java +++ b/src/main/java/org/mobidgim/mobidigimproject/common/api/Api.java @@ -21,6 +21,12 @@ public class Api { api.body = Data; return api; } + + public static Api ERROR(String description){ + var api = new Api(); + api.result = Result.ERROR(description); + return api; + } public static Api ERROR(Result result){ var api = new Api(); api.result = result; diff --git a/src/main/java/org/mobidgim/mobidigimproject/common/api/Result.java b/src/main/java/org/mobidgim/mobidigimproject/common/api/Result.java index b5755aa..3eb2b12 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/common/api/Result.java +++ b/src/main/java/org/mobidgim/mobidigimproject/common/api/Result.java @@ -23,6 +23,12 @@ public class Result { .resultDescription("성공") .build(); } + public static Result ERROR(String description){ + return Result.builder() + .resultDescription(description) + .build(); + } + public static Result ERROR(ErrorCodeIfs errorCodeIfs){ return Result.builder() .resultCode(errorCodeIfs.getErrorCode()) diff --git a/src/main/java/org/mobidgim/mobidigimproject/controller/Controller.java b/src/main/java/org/mobidgim/mobidigimproject/controller/Controller.java index ae89b7e..73e7646 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/controller/Controller.java +++ b/src/main/java/org/mobidgim/mobidigimproject/controller/Controller.java @@ -1,14 +1,11 @@ package org.mobidgim.mobidigimproject.controller; -import jakarta.servlet.ServletResponse; import lombok.AllArgsConstructor; import org.mobidgim.mobidigimproject.common.api.Api; import org.mobidgim.mobidigimproject.model.device.DeviceDTO; import org.mobidgim.mobidigimproject.service.SettingService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; import java.io.IOException; @@ -20,11 +17,21 @@ public class Controller { private SettingService settingService; @PostMapping("/device") - public Api settingDevice(@RequestBody DeviceDTO request) throws IOException { - settingService.saveFileWithDevice(request); + public ResponseEntity> settingDevice(@RequestBody DeviceDTO request) throws IOException { + try{ + settingService.saveFileWithDevice(request); + return ResponseEntity.ok().body(Api.OK("저장성공")); + }catch(IOException e){ + return ResponseEntity.internalServerError().body(Api.ERROR("저장실패")); + } + } - return Api.OK(request); + @GetMapping("/get-device") + public ResponseEntity> getDevice() throws IOException { + var entity = settingService.readFileWithDevice(); + return ResponseEntity.ok().body(Api.OK(entity)); } + // @PostMapping("/register") // public Api settingRegister(@RequestBody RegisterDTO request)throws IOException{ // settingService.saveFileWithRegister(request); diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/CanSpeed.java b/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/CanSpeed.java new file mode 100644 index 0000000..2aa5621 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/CanSpeed.java @@ -0,0 +1,19 @@ +package org.mobidgim.mobidigimproject.model.device.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum CanSpeed { + CAN_SPEED_1000(1000), + CAN_SPEED_2500(2500), + CAN_SPEED_5000(5000), + CAN_SPEED_10000(10000); + + private final int value; + + @JsonValue + public int getValue() { + return value; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Baudrate.java b/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Baudrate.java new file mode 100644 index 0000000..b0ac889 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Baudrate.java @@ -0,0 +1,17 @@ +package org.mobidgim.mobidigimproject.model.device.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum Rs485Baudrate { + MODBUS_SPEED_9600(9600), + MODBUS_SPEED_115200(115200); + + private final int value; + + @JsonValue + public int getValue() { + return value; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Parity.java b/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Parity.java new file mode 100644 index 0000000..0d5c876 --- /dev/null +++ b/src/main/java/org/mobidgim/mobidigimproject/model/device/enums/Rs485Parity.java @@ -0,0 +1,17 @@ +package org.mobidgim.mobidigimproject.model.device.enums; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum Rs485Parity { + NONE("no"), + EVEN("even"), + ODD("odd"); + private final String value; + + @JsonValue + public String getValue() { + return value; + } +} diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/CanBus.java b/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/CanBus.java index 857a9da..2208384 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/CanBus.java +++ b/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/CanBus.java @@ -4,10 +4,11 @@ package org.mobidgim.mobidigimproject.model.device.subDTO; import lombok.Getter; import lombok.Setter; import org.mobidgim.mobidigimproject.model.device.enums.CanBusType; +import org.mobidgim.mobidigimproject.model.device.enums.CanSpeed; @Getter @Setter public class CanBus { private CanBusType canBusType; - private int canBudrate; + private CanSpeed canBaudrate; } diff --git a/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/Rs485.java b/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/Rs485.java index aa0e0db..e356dda 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/Rs485.java +++ b/src/main/java/org/mobidgim/mobidigimproject/model/device/subDTO/Rs485.java @@ -2,14 +2,21 @@ package org.mobidgim.mobidigimproject.model.device.subDTO; import lombok.Getter; import lombok.Setter; +import org.mobidgim.mobidigimproject.model.device.enums.Rs485Parity; +import org.mobidgim.mobidigimproject.model.device.enums.Rs485Baudrate; import org.mobidgim.mobidigimproject.model.device.enums.Rs485Mode; @Getter @Setter public class Rs485 { + private Rs485Mode rs485Mode; - private int rs485Baudrate; + + private Rs485Baudrate rs485Baudrate; + private int rs485DataBits; - private String rs485Parity; + + private Rs485Parity rs485Parity; + private int rs485StopBits; } diff --git a/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java b/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java index 962b7c0..170eb3b 100644 --- a/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java +++ b/src/main/java/org/mobidgim/mobidigimproject/service/SettingService.java @@ -1,11 +1,14 @@ package org.mobidgim.mobidigimproject.service; +import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import org.mobidgim.mobidigimproject.model.device.DeviceDTO; import org.springframework.stereotype.Service; +import javax.swing.text.html.parser.Parser; +import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; @@ -21,6 +24,12 @@ public class SettingService { Files.writeString(Paths.get(filename), json); } + public DeviceDTO readFileWithDevice() throws IOException { + ObjectMapper mapper = new ObjectMapper(); + mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); + return mapper.readValue(new File("./temp/deviceConfig.json"), DeviceDTO.class); + } + // public RegisterDTO saveFileWithRegister(RegisterDTO request) throws IOException { // ObjectMapper mapper = new ObjectMapper(); // mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 4bd7916..db7c8c2 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -47,12 +47,13 @@ /* I/O */ .io-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:40px;margin-bottom:32px} - .io-bot{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:40px} + .io-bot{display:flex; gap: 40px ;flex-wrap:wrap;} + .io-group{flex:1 1 0;min-width:320px;} .io-group h4{font-size:20px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;gap:8px} .io-group h4::before{content:"";width:8px;height:8px;background:#aaa;display:inline-block} .io-fieldset{border:1px solid #bbb;padding:24px 32px;border-radius:4px;display:flex;flex-direction:column;gap:16px;width:100%} .io-row{display:grid;grid-template-columns:120px 12px 1fr;align-items:center;gap:8px} - .io-row input,.io-row select{padding:4px 6px;border:1px solid #aaa;border-radius:4px;font-size:14px;width:100%} + .io-row input,.io-row select{padding:4px 6px;border:1px solid #aaa;border-radius:4px;font-size:14px;width:50%} /* 비활성 input 시각화 */ .disabled{background:#f5f5f5;cursor:not-allowed} @@ -173,8 +174,15 @@ -
Speed:
-
Parity:
+
Speed:
+
Parity:
@@ -186,7 +194,15 @@ -
Speed:
+ +
Speed: + +
@@ -220,6 +236,7 @@ + @@ -230,8 +247,7 @@
- - +
@@ -239,7 +255,7 @@