From 736a85729a54bcce593914eedf52120465433f23 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 11 九月 2024 10:26:08 +0800
Subject: [PATCH] #

---
 zy-acs-flow/.env                                                                           |    4 
 zy-acs-flow/src/page/operationRecord/OperationDetail.jsx                                   |   14 ++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java              |    4 
 zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java          |    2 
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MockService.java              |    2 
 zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java |   43 +++++++++++++
 zy-acs-common/src/main/java/com/zy/acs/common/utils/GsonUtils.java                         |   37 ++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/ConfigType.java               |   29 +++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/ConfigController.java    |    1 
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java                   |    6 +-
 zy-acs-common/pom.xml                                                                      |    6 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java               |    2 
 12 files changed, 131 insertions(+), 19 deletions(-)

diff --git a/zy-acs-common/pom.xml b/zy-acs-common/pom.xml
index 6e8f775..5ab1a1d 100644
--- a/zy-acs-common/pom.xml
+++ b/zy-acs-common/pom.xml
@@ -17,11 +17,17 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <gson.version>2.11.0</gson.version>
         <fastjson.version>1.2.58</fastjson.version>
     </properties>
 
     <dependencies>
         <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${gson.version}</version>
+        </dependency>
+        <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>${fastjson.version}</version>
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/utils/GsonUtils.java b/zy-acs-common/src/main/java/com/zy/acs/common/utils/GsonUtils.java
new file mode 100644
index 0000000..53d5efd
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/utils/GsonUtils.java
@@ -0,0 +1,37 @@
+package com.zy.acs.common.utils;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
+import com.google.gson.reflect.TypeToken;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.Map;
+
+public class GsonUtils {
+
+    // include cache
+    private static final Gson gson = new Gson();
+
+    public static String toJson(Object object) {
+        return gson.toJson(object);
+    }
+
+    public static <T> T fromJson(String json, Class<T> clazz) throws JsonSyntaxException {
+        return gson.fromJson(json, clazz);
+    }
+
+    public static <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException {
+        return gson.fromJson(json, typeOfT);
+    }
+
+    public static <T> List<T> fromJsonToList(String json, Class<T> clazz) throws JsonSyntaxException {
+        Type type = TypeToken.getParameterized(List.class, clazz).getType();
+        return gson.fromJson(json, type);
+    }
+
+    public static <K, V> Map<K, V> fromJsonToMap(String json, Class<K> keyType, Class<V> valueType) throws JsonSyntaxException {
+        Type type = TypeToken.getParameterized(Map.class, keyType, valueType).getType();
+        return gson.fromJson(json, type);
+    }
+
+}
diff --git a/zy-acs-flow/.env b/zy-acs-flow/.env
index 5ad1587..f3ded7f 100644
--- a/zy-acs-flow/.env
+++ b/zy-acs-flow/.env
@@ -1,5 +1,5 @@
-COOL_BASE_IP = '10.242.136.69'
+# COOL_BASE_IP = '10.242.136.69'
 # COOL_BASE_IP = 'localhost'
-# COOL_BASE_IP = '192.168.4.36'
+COOL_BASE_IP = '192.168.4.36'
 
 COOL_BASE_PORT = 9090
diff --git a/zy-acs-flow/src/page/operationRecord/OperationDetail.jsx b/zy-acs-flow/src/page/operationRecord/OperationDetail.jsx
index f4739fc..ca45841 100644
--- a/zy-acs-flow/src/page/operationRecord/OperationDetail.jsx
+++ b/zy-acs-flow/src/page/operationRecord/OperationDetail.jsx
@@ -12,7 +12,7 @@
 
 const OperationDetail = (props) => {
     const { operation, ...rest } = props;
-
+    
     return (
         <>
             <Box width={{ xs: '100vW', sm: 400 }} mt={{ xs: 2, sm: 1 }}>
@@ -25,7 +25,7 @@
                                         variant="body2"
                                         flexWrap="nowrap"
                                     >
-                                        {operation.namespace}
+                                        {operation.namespace || ''}
                                     </Typography>
                                 </Labeled>
                             </Grid>
@@ -35,7 +35,7 @@
                                         variant="body2"
                                         flexWrap="nowrap"
                                     >
-                                        {operation.url}
+                                        {operation.url || ''}
                                     </Typography>
                                 </Labeled>
                             </Grid>
@@ -55,14 +55,14 @@
                                         variant="body2"
                                         flexWrap="nowrap"
                                     >
-                                        {operation.userId$}
+                                        {operation.userId$ || ''}
                                     </Typography>
                                 </Labeled>
                             </Grid>
                             <Grid item sm={12}>
                                 <TextField
                                     label="Request"
-                                    value={operation.request}
+                                    value={operation.request || ''}
                                     maxRows={15}
                                     multiline
                                 />
@@ -71,7 +71,7 @@
                             <Grid item sm={12}>
                                 <TextField
                                     label="Response"
-                                    value={operation.response}
+                                    value={operation.response || ''}
                                     maxRows={15}
                                     multiline
                                 />
@@ -82,7 +82,7 @@
                                         variant="body2"
                                         flexWrap="nowrap"
                                     >
-                                        {operation.clientIp}
+                                        {operation.clientIp || ''}
                                     </Typography>
                                 </Labeled>
                             </Grid>
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java
index 2a4a0ae..07b3c4e 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java
@@ -172,7 +172,7 @@
     @Scheduled(cron = "0/1 * * * * ? ")
     private void demo() throws InterruptedException {
         if (!this.autoDemo) { return; }
-        int busLimit = Integer.parseInt(configService.getVal("busLimit"));
+        int busLimit = configService.getVal("busLimit", Integer.class);
         if (autoSize != null) {
             busLimit = autoSize;
         }
@@ -246,7 +246,7 @@
     @Scheduled(cron = "0/3 * * * * ? ")
     private void demo1() throws InterruptedException {
         if (!this.autoDemo1) { return; }
-        int busLimit = Integer.parseInt(configService.getVal("busLimit"));
+        int busLimit = configService.getVal("busLimit", Integer.class);
         if (autoSize != null) {
             busLimit = autoSize;
         }
@@ -314,7 +314,7 @@
     @Scheduled(cron = "0/3 * * * * ? ")
     private void demo2() throws InterruptedException {
         if (!this.autoDemo2) { return; }
-        int busLimit = Integer.parseInt(configService.getVal("busLimit"));
+        int busLimit = configService.getVal("busLimit", Integer.class);
         if (autoSize != null) {
             busLimit = autoSize;
         }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index 6ac9ad2..371d75b 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -255,7 +255,7 @@
                 throw new CoolException("generate [task] action fail, cause can not acquire lock ...");
             }
             Date now = new Date();
-            final String sameGroupXy = configService.getVal( "sameGroupXy");
+            final String sameGroupXy = configService.getVal( "sameGroupXy", String.class);
 
             Agv agv = agvService.getById(agvId);
             if (!agvService.judgeEnable(agv.getId(), agvDetail -> agvDetail.getVol() > agv.getChargeLine())) {
@@ -590,7 +590,7 @@
         try {
             if (Cools.isEmpty(agvId, segmentList)) { return; }
             Date now = new Date();
-            JSONObject storeDirection = JSON.parseObject(configService.getVal("storeDirection"));
+            JSONObject storeDirection = configService.getVal("storeDirection", JSONObject.class);
             Agv agv = agvService.getById(agvId);
             if (!agvService.judgeEnable(agv.getId())) {
                 throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅彲鐢�...");
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
index bfecd47..f421485 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -133,7 +133,7 @@
         double deltaX = x1 - x0;
         double deltaY = y1 - y0;
         double angle = Math.atan2(deltaX, deltaY);
-        int offsetAngle = Integer.parseInt(configService.getVal("mapXoffset"));
+        int offsetAngle = configService.getVal("mapXoffset", Integer.class);
         angle = angle + offsetAngle;
         angle = Math.toDegrees(angle);
         angle = (angle + 360) % 360; // 灏嗚搴﹁浆鎹负姝e��
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MockService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MockService.java
index 8404b86..de2f583 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MockService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MockService.java
@@ -66,7 +66,7 @@
 
     @Transactional
     public List<MockVo> submit(List<MockAgvDto> agvList, List<MockDto> taskList) {
-        final String sameGroupXy = configService.getVal("sameGroupXy");
+        final String sameGroupXy = configService.getVal("sameGroupXy", String.class);
         List<MockVo> result = new ArrayList<>();
 
         if (Cools.isEmpty(taskList)) {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/ConfigController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/ConfigController.java
index 2e7fc99..b0eb20d 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/ConfigController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/ConfigController.java
@@ -1,5 +1,6 @@
 package com.zy.acs.manager.system.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.acs.framework.common.Cools;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/ConfigType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/ConfigType.java
new file mode 100644
index 0000000..c43c2da
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/enums/ConfigType.java
@@ -0,0 +1,29 @@
+package com.zy.acs.manager.system.enums;
+
+import com.zy.acs.framework.exception.CoolException;
+
+public enum ConfigType {
+
+    BOOLEAN(1),
+    NUMBER(2),
+    STRING(3),
+    JSON(4),
+    DATE(5),
+    ;
+
+    public int type;
+
+    ConfigType(int type) {
+        this.type = type;
+    }
+
+    public static ConfigType query(int type) {
+        for (ConfigType value : ConfigType.values()) {
+            if (type == value.type) {
+                return value;
+            }
+        }
+        throw new CoolException("ConfigType Error!");
+    }
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java
index c09b597..f8c45ba 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/ConfigService.java
@@ -5,6 +5,6 @@
 
 public interface ConfigService extends IService<Config> {
 
-    String getVal(String key);
+    <T> T getVal(String key, Class<T> clazz);
 
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java
index 69d58ba..29230e8 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/service/impl/ConfigServiceImpl.java
@@ -1,11 +1,18 @@
 package com.zy.acs.manager.system.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.acs.common.utils.GsonUtils;
+import com.zy.acs.framework.common.DateUtils;
 import com.zy.acs.manager.system.entity.Config;
+import com.zy.acs.manager.system.enums.ConfigType;
 import com.zy.acs.manager.system.mapper.ConfigMapper;
 import com.zy.acs.manager.system.service.ConfigService;
 import com.zy.acs.framework.exception.CoolException;
 import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
 
 /**
  * Created by vincent on 8/30/2024
@@ -14,8 +21,40 @@
 public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements ConfigService {
 
     @Override
-    public String getVal(String key) {
-        throw new CoolException("Config杩樻病鍋�");
+    @SuppressWarnings("unchecked")
+    public <T> T getVal(String key, Class<T> clazz) {
+        List<Config> list = this.list(new LambdaQueryWrapper<Config>().eq(Config::getFlag, key));
+        Config config = list.stream().findFirst().orElse(null);
+        if (null == config) {
+            return null;
+        }
+        String val = config.getVal();
+        switch (ConfigType.query(config.getType())) {
+            case BOOLEAN:
+                if (val.equals("1") || val.trim().toUpperCase().equals("TRUE")) {
+                    return (T) Boolean.TRUE;
+                }
+                return (T) Boolean.FALSE;
+            case NUMBER:
+                if (clazz == Integer.class) {
+                    return (T) Integer.valueOf(val);
+                } else if (clazz == Short.class) {
+                    return (T) Short.valueOf(val);
+                } else if (clazz == Long.class) {
+                    return (T) Long.valueOf(val);
+                } else if (clazz == Double.class) {
+                    return (T) Double.valueOf(val);
+                }
+                throw new UnsupportedOperationException("Unsupported type: " + clazz.getName());
+            case STRING:
+                return (T) val;
+            case JSON:
+                return GsonUtils.fromJson(val, clazz);
+            case DATE:
+                return (T) DateUtils.convert(val);
+            default:
+                return null;
+        }
     }
 
 }

--
Gitblit v1.9.1