李春阳 1 år sedan
förälder
incheckning
f0515c117c

+ 2 - 0
api-common/src/main/java/api/common/pojo/po/system/DictPO.java

@@ -16,6 +16,8 @@ public class DictPO extends CommonPO {
     private String dictName;
     //编码
     private String dictCode;
+    // 字典描述
+    private String dictComment;
     //序号
     private int dictOrder;
 

+ 24 - 12
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/domain/service/TaskDomainService.java

@@ -31,6 +31,10 @@ import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFilePermission;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
@@ -471,14 +475,6 @@ public class TaskDomainService {
         if (!new File(evaluationDirectoryOfUser).exists()) {
             // 1 将场景评价规则脚本保存到 script 目录
             FileUtil.createDirectory(scriptsPath);
-            final ArrayList<String> scriptFilePath = CollectionUtil.createArrayList(
-                    "/data_preprocessing.py",
-                    "/elevation.py",
-                    "/scenario_evaluation_utils52.py"
-            );
-            for (String pyFilePath : scriptFilePath) {
-                MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationScript + pyFilePath, scriptsPath + pyFilePath);
-            }
         }
         // 下载场景评价脚本到脚本目录
         if (sceneEvaluationRulePO.getScriptPath() == null) {
@@ -487,6 +483,23 @@ public class TaskDomainService {
         String pyMainPath = scriptsPath + "/" + sceneEvaluationRulePO.getRuleId() + ".py";
         if (!new File(pyMainPath).exists()) {
             MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationRulePO.getScriptPath(), pyMainPath);
+            try {
+                Path path = Paths.get(pyMainPath);
+                Set<PosixFilePermission> permissions = new HashSet<>();
+                permissions.add(PosixFilePermission.OWNER_READ);
+                permissions.add(PosixFilePermission.OWNER_WRITE);
+                permissions.add(PosixFilePermission.OWNER_EXECUTE);
+                permissions.add(PosixFilePermission.GROUP_READ);
+                permissions.add(PosixFilePermission.GROUP_WRITE);
+                permissions.add(PosixFilePermission.GROUP_EXECUTE);
+                permissions.add(PosixFilePermission.OTHERS_READ);
+                permissions.add(PosixFilePermission.OTHERS_WRITE);
+                permissions.add(PosixFilePermission.OTHERS_EXECUTE);
+                Files.setPosixFilePermissions(path, permissions);
+            } catch (IOException e) {
+                log.error("更改执行文件权限失败: " + sceneEvaluationRulePO.getScriptPath(), e);
+                return false;
+            }
         }
         String scenePathFather = evaluationDirectoryOfUser + "scene/";
         for (SceneEvaluationComputeParam sceneEvaluationComputeParam : sceneEvaluationComputeParams) {
@@ -512,7 +525,7 @@ public class TaskDomainService {
                 } else if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.RISK)) {
                     // 计算危险度 从 minio path 下载 csv (ego 和 sensors)
                     MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationComputeParam.getEvaluationPath() + "/Ego.csv", scenePath + "/Ego.csv");
-                    MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationComputeParam.getEvaluationPath() + "/sensors.csv", scenePath + "/sensors.csv");
+                    MinioUtil.downloadToFile(minioClient, bucketName, sceneEvaluationComputeParam.getEvaluationPath() + "/evaluation.csv", scenePath + "/evaluation.csv");
                 } else {
                     return false;
                 }
@@ -521,12 +534,11 @@ public class TaskDomainService {
                 return false;
             }
         }
-        //        String sceneEvaluationCommand = "python3 " + pyMainPath + " " + (scenePath);
         String sceneEvaluationCommand;
         if (StringUtils.equals(sceneEvaluationComputeParams.get(0).getComputeType(), DictConstants.COMPLEXITY)) {
-            sceneEvaluationCommand = "python " + pyMainPath + " complexity";
+            sceneEvaluationCommand = pyMainPath + " " + scenePathFather + " complexity";
         } else {
-            sceneEvaluationCommand = "python " + pyMainPath + " criticality";
+            sceneEvaluationCommand = pyMainPath + " " + scenePathFather + " criticality";
         }
         String sceneEvaluationResult;
         log.info("开始执行场景评价命令:" + sceneEvaluationCommand);

+ 11 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/service/DictService.java

@@ -3,9 +3,11 @@ package com.css.simulation.resource.server.app.service;
 import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.param.RedisParameter;
 import api.common.pojo.param.system.DictParam;
+import api.common.pojo.po.system.DictPO;
 import api.common.pojo.vo.system.DictVO;
 import api.common.util.JsonUtil;
 import api.common.util.ObjectUtil;
+import api.common.util.StringUtil;
 import com.css.simulation.resource.server.infra.feign.service.RedisService;
 import com.css.simulation.resource.server.infra.db.mysql.mapper.DictMapper;
 import lombok.SneakyThrows;
@@ -125,7 +127,7 @@ public class DictService {
         for (String key : keySet) {
             String val = map.get(key);
             //json转map
-            Map<String,String> hashMap = JsonUtil.jsonToMap(val);
+            Map<String, String> hashMap = JsonUtil.jsonToMap(val);
             dictMaps.put(key, hashMap);
         }
         return dictMaps;
@@ -162,4 +164,12 @@ public class DictService {
         return dictMap;
     }
 
+    public void deleteSystemDictByCodeAndType(DictPO dictPO) {
+        dictMapper.deleteSystemDictByCodeAndType(dictPO);
+    }
+
+    public void createSystemDict(DictPO dictPO) {
+        dictPO.setId(StringUtil.getRandomUUID());
+        dictMapper.createSystemDict(dictPO);
+    }
 }

+ 35 - 24
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/service/SceneEvaluationRuleService.java

@@ -31,10 +31,10 @@ import javax.annotation.Resource;
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFilePermission;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -239,31 +239,43 @@ public class SceneEvaluationRuleService {
         if (!new File(evaluationDirectoryOfUser).exists()) {
             // 1 将场景评价规则脚本保存到 script 目录
             FileUtil.createDirectory(scriptsPath);
-            final ArrayList<String> scriptFilePath = CollectionUtil.createArrayList(
-                    "/data_preprocessing.py",
-                    "/elevation.py",
-                    "/scenario_evaluation_utils52.py"
-            );
-            for (String pyFilePath : scriptFilePath) {
-                try {
-                    downloadDependFile(sceneEvaluationScript + pyFilePath, scriptsPath + pyFilePath);
-                } catch (IOException e) {
-                    log.error("下载 py 依赖文件失败: " + sceneEvaluationScript + pyFilePath, e);
-                    return false;
-                }
-            }
+//            final ArrayList<String> scriptFilePath = CollectionUtil.createArrayList(
+//                    "/data_preprocessing.py",
+//                    "/elevation.py",
+//                    "/scenario_evaluation_utils52.py"
+//            );
+//            for (String pyFilePath : scriptFilePath) {
+//                try {
+//                    downloadDependFile(sceneEvaluationScript + pyFilePath, scriptsPath + pyFilePath);
+//                } catch (IOException e) {
+//                    log.error("下载 py 依赖文件失败: " + sceneEvaluationScript + pyFilePath, e);
+//                    return false;
+//                }
+//            }
         }
 
         // 下载场景评价脚本到脚本目录
         if (sceneEvaluationRulePO.getScriptPath() == null) {
             return false;
         }
-        String pyMainPath = scriptsPath + "/" + sceneEvaluationRulePO.getRuleId() + ".py";
+        String pyMainPath = scriptsPath + "/" + sceneEvaluationRulePO.getRuleId();
         if (!new File(pyMainPath).exists()) {
             try {
                 downloadDependFile(sceneEvaluationRulePO.getScriptPath(), pyMainPath);
+                Path path = Paths.get(pyMainPath);
+                Set<PosixFilePermission> permissions = new HashSet<>();
+                permissions.add(PosixFilePermission.OWNER_READ);
+                permissions.add(PosixFilePermission.OWNER_WRITE);
+                permissions.add(PosixFilePermission.OWNER_EXECUTE);
+                permissions.add(PosixFilePermission.GROUP_READ);
+                permissions.add(PosixFilePermission.GROUP_WRITE);
+                permissions.add(PosixFilePermission.GROUP_EXECUTE);
+                permissions.add(PosixFilePermission.OTHERS_READ);
+                permissions.add(PosixFilePermission.OTHERS_WRITE);
+                permissions.add(PosixFilePermission.OTHERS_EXECUTE);
+                Files.setPosixFilePermissions(path, permissions);
             } catch (IOException e) {
-                log.error("下载 py 执行文件失败: " + sceneEvaluationRulePO.getScriptPath(), e);
+                log.error("下载执行文件失败: " + sceneEvaluationRulePO.getScriptPath(), e);
                 return false;
             }
         }
@@ -291,8 +303,8 @@ public class SceneEvaluationRuleService {
                     downloadDependFile(sceneEvaluationComputeParam.getSceneXODRPath(), scenePath + "/" + xodrName);
                 } else if (StringUtils.equals(sceneEvaluationComputeParam.getComputeType(), DictConstants.RISK)) {
                     // 计算危险度 从 minio path 下载 csv (ego 和 sensors)
-                    downloadDependFile(sceneEvaluationComputeParam.getEvaluationPath() + "/ego.csv", scenePath + "/ego.csv");
-                    downloadDependFile(sceneEvaluationComputeParam.getEvaluationPath() + "/sensor.csv", scenePath + "/sensor.csv");
+                    downloadDependFile(sceneEvaluationComputeParam.getEvaluationPath() + "/Ego.csv", scenePath + "/Ego.csv");
+                    downloadDependFile(sceneEvaluationComputeParam.getEvaluationPath() + "/evaluation.csv", scenePath + "/evaluation.csv");
                 } else {
                     return false;
                 }
@@ -301,12 +313,11 @@ public class SceneEvaluationRuleService {
                 return false;
             }
         }
-//        String sceneEvaluationCommand = "python3 " + pyMainPath + " " + (scenePath);
         String sceneEvaluationCommand;
         if (StringUtils.equals(sceneEvaluationComputeParams.get(0).getComputeType(), DictConstants.COMPLEXITY)) {
-            sceneEvaluationCommand = "python " + pyMainPath + " complexity";
+            sceneEvaluationCommand = pyMainPath + " " + scenePathFather + " complexity";
         } else {
-            sceneEvaluationCommand = "python " + pyMainPath + " criticality";
+            sceneEvaluationCommand = pyMainPath + " " + scenePathFather + " criticality";
         }
         String sceneEvaluationResult;
         log.info("开始执行场景评价命令:" + sceneEvaluationCommand);

+ 2 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/server/infra/db/mysql/mapper/DictMapper.java

@@ -14,8 +14,10 @@ public interface DictMapper {
 
     List<DictVO> getDicts(List dictTypeList);
     void saveSystemDict(DictPO po);
+    void createSystemDict(DictPO po);
     void updateSystemDict(DictPO po);
     int deleteSystemDict(DictPO po);
+    int deleteSystemDictByCodeAndType(DictPO po);
 
     String getDictByDictCode(DictPO po);
 }

+ 38 - 0
simulation-resource-server/src/main/resources/mysql/mapper/DictMapper.xml

@@ -53,6 +53,35 @@
         )
     </insert>
 
+    <insert id="createSystemDict" parameterType="api.common.pojo.po.system.DictPO">
+        INSERT INTO system_dict(
+            id,
+            dict_comment,
+            dict_type,
+            dict_name,
+            dict_code,
+            dict_order,
+            create_time,
+            modify_time,
+            create_user_id,
+            modify_user_id,
+            is_deleted
+        )
+        VALUES(
+                  #{id,jdbcType=VARCHAR},
+                  #{dictComment,jdbcType=VARCHAR},
+                  #{dictType,jdbcType=VARCHAR},
+                  #{dictName,jdbcType=VARCHAR},
+                  #{dictCode,jdbcType=VARCHAR},
+                  #{dictOrder,jdbcType=VARCHAR},
+                  #{createTime,jdbcType=TIMESTAMP},
+                  #{modifyTime,jdbcType=TIMESTAMP},
+                  #{createUserId,jdbcType=VARCHAR},
+                  #{modifyUserId,jdbcType=VARCHAR},
+                  #{isDeleted,jdbcType=VARCHAR}
+              )
+    </insert>
+
     <update id="updateSystemDict" parameterType="api.common.pojo.po.system.DictPO">
         update system_dict set
         dict_name = #{dictName,jdbcType=VARCHAR},
@@ -72,6 +101,15 @@
         and is_deleted='0'
     </update>
 
+    <update id="deleteSystemDictByCodeAndType" parameterType="api.common.pojo.po.system.DictPO">
+        update system_dict set
+                               is_deleted ='1',
+                               modify_time = #{modifyTime,jdbcType=TIMESTAMP},
+                               modify_user_id = #{modifyUserId,jdbcType=VARCHAR}
+        where dict_code = #{dictCode,jdbcType=VARCHAR}
+          and dict_type = #{dictType,jdbcType=VARCHAR}
+          and is_deleted='0'
+    </update>
 
     <select id="getDictByDictCode"  resultType="java.lang.String" parameterType="api.common.pojo.po.system.DictPO" >
         select