Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

martin 3 tahun lalu
induk
melakukan
c5c7b2327c
15 mengubah file dengan 259 tambahan dan 34 penghapusan
  1. 2 0
      api-common/src/main/java/api/common/pojo/vo/project/AutomaticProjectVo.java
  2. 26 18
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/SceneImportCtrl.java
  3. 66 3
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/SceneImportService.java
  4. 11 2
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/common/config/FeignConfiguration.java
  5. 37 0
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/common/minio/MinioConfiguration.java
  6. 21 0
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/common/oauth/AuthorizationHolder.java
  7. 15 1
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/feign/SceneService.java
  8. 10 0
      simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/feign/SceneServiceFallback.java
  9. 11 2
      simulation-resource-server/src/main/java/com/css/simulation/resource/common/config/FeignConfiguration.java
  10. 21 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/common/oauth/AuthorizationHolder.java
  11. 4 1
      simulation-resource-server/src/main/java/com/css/simulation/resource/feign/SceneService.java
  12. 22 4
      simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java
  13. 7 2
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/SceneImportCtrl.java
  14. 2 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/UserService.java
  15. 4 1
      simulation-resource-server/src/main/resources/mapper/project/SimulationAutomaticProjectMapper.xml

+ 2 - 0
api-common/src/main/java/api/common/pojo/vo/project/AutomaticProjectVo.java

@@ -30,4 +30,6 @@ public class AutomaticProjectVo {
     private String parallelism;
     //是否选择GPU
     private String isChoiceGpu;
+    //最大仿真时间
+    private String maxSimulationTime;
 }

+ 26 - 18
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/SceneImportCtrl.java

@@ -4,15 +4,16 @@ import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.param.scene.SceneImportParam;
 import api.common.pojo.po.system.SceneImportPO;
+import com.css.simulation.resource.scene.common.oauth.AuthorizationHolder;
 import com.css.simulation.resource.scene.feign.SceneService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.context.request.RequestContextHolder;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 
 @Controller
 @RequestMapping("/sceneImport")
@@ -29,31 +30,22 @@ public class SceneImportCtrl {
      */
     @RequestMapping("/startImport")
     @ResponseBody
-    public ResponseBodyVO startImport(@RequestBody SceneImportPO po) {
+    public ResponseBodyVO startImport(@RequestBody SceneImportPO po, HttpServletRequest request) {
         try {
             //开始上传
             po.setStatus(DictConstants.SCENE_IMPORT_STATUS_1);
             sceneImportService.updateStatus(po);
             //上传
-            sceneImportService.startImport(po);
+            Boolean b = sceneImportService.startImport(po);
+            if(!b){
+                po.setStatus(DictConstants.SCENE_IMPORT_STATUS_0);
+                po.setErrorMessage("路径错误");
+                sceneImportService.updateStatus(po);
+                return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE);
+            }
             //上传成功
             po.setStatus(DictConstants.SCENE_IMPORT_STATUS_2);
             sceneImportService.updateStatus(po);
-            SceneImportParam param = new SceneImportParam();
-            param.setId(po.getId());
-            param.setMinioDirectory(po.getDataDirectory());
-            //异步-启动解析
-            RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(),true);
-            switch (po.getSceneType()){
-                case DictConstants.SCENE_NATURAL://自然驾驶
-                    sceneService.saveSceneAccidentBatch(param);
-                    break;
-                case DictConstants.SCENE_STANDARD:// 标准法规
-                    sceneService.saveSceneAccidentBatch(param);
-                    break;
-                case DictConstants.SCENE_ACCIDENT:// 交通事故
-                    sceneService.saveSceneAccidentBatch(param);
-            }
         }catch (Exception e){
             e.printStackTrace();
             po.setStatus(DictConstants.SCENE_IMPORT_STATUS_0);
@@ -61,6 +53,22 @@ public class SceneImportCtrl {
             sceneImportService.updateStatus(po);
             return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE);
         }
+        //异步-启动解析
+        SceneImportParam param = new SceneImportParam();
+        param.setId(po.getId());
+        param.setMinioDirectory(po.getDataDirectory());
+        String authorization = request.getHeader("Authorization");
+        AuthorizationHolder.setAuthorization(authorization);
+        switch (po.getSceneType()){
+            case DictConstants.SCENE_NATURAL://自然驾驶
+                sceneService.saveSceneNaturalBatch(param);
+                break;
+            case DictConstants.SCENE_STANDARD:// 标准法规
+                sceneService.saveStandardsRegulationsBatch(param);
+                break;
+            case DictConstants.SCENE_ACCIDENT:// 交通事故
+                sceneService.saveSceneAccidentBatch(param);
+        }
         return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
     }
 }

+ 66 - 3
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/SceneImportService.java

@@ -1,22 +1,85 @@
 package com.css.simulation.resource.scene;
 
+import api.common.pojo.constants.DictConstants;
 import api.common.pojo.po.system.SceneImportPO;
+import api.common.util.FileUtil;
+import api.common.util.ObjectUtil;
+import api.common.util.StringUtil;
+import api.common.util.TimeUtil;
 import com.css.simulation.resource.scene.common.utils.PoUtil;
+import io.minio.MinioClient;
+import io.minio.UploadObjectArgs;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
 @Service
 public class SceneImportService {
 
+    //场景目录中必须包含的子文件夹
+    @Value("${scene.sub-directory}")
+    String subDirectory = "Scenarios";
+
+    //minio仓库名
+    @Value("${minio.bucket-name}")
+    String bucketName;
+
     @Autowired
     SceneImportMapper sceneImportMapper;
 
-    public Boolean startImport(SceneImportPO po) {
-        //TODO
-        System.out.println(123);
+    @Resource(name = "minioClientPrivate")
+    MinioClient minioClient;
+
+    public Boolean startImport(SceneImportPO po) throws Exception {
+        //目录校验
+        if(!checkDirectory(po)){
+            return false;
+        }
+        //minio路径生成
+        String sceneType = po.getSceneType();
+        Integer nowTime = TimeUtil.getRq(new Date(), 0);
+        String randomCode = StringUtil.getRandomCode();
+        String sceneName = "";
+        if (DictConstants.SCENE_NATURAL.equals(sceneType)) {
+            sceneName = "自然驾驶场景";
+        } else if (DictConstants.SCENE_STANDARD.equals(sceneType)) {
+            sceneName = "标准法规场景";
+        } else if (DictConstants.SCENE_ACCIDENT.equals(sceneType)) {
+            sceneName = "交通事故场景";
+        }
+        String objectPath = sceneName + "/" + nowTime + "/" + randomCode + "/";
+        //数据上传
+        String dataDirectory = po.getDataDirectory();
+        List<String> list = FileUtil.list(dataDirectory);
+        for (String fileName: list) {
+            //minio路径完善
+            String objectName = fileName.replace(dataDirectory, objectPath).replaceAll("\\\\", "/");
+            minioClient.uploadObject(UploadObjectArgs.builder()
+                    .filename(fileName)
+                    .bucket(bucketName)
+                    .object(objectName)
+                    .build());
+        }
+        po.setDataDirectory(objectPath);
         return true;
     }
 
+    private Boolean checkDirectory(SceneImportPO po) {
+        try {
+            String dataDirectory = po.getDataDirectory() + File.separator + subDirectory;
+            List<String> ls = FileUtil.ls(dataDirectory);
+            return ObjectUtil.isNotNull(ls);
+        }catch (Exception e){
+            e.printStackTrace();
+            return false;
+        }
+    }
+
     public void updateStatus(SceneImportPO po) {
         PoUtil.initUpdatePo(po);
         sceneImportMapper.updateStatus(po);

+ 11 - 2
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/common/config/FeignConfiguration.java

@@ -1,5 +1,7 @@
 package com.css.simulation.resource.scene.common.config;
 
+import api.common.util.ObjectUtil;
+import com.css.simulation.resource.scene.common.oauth.AuthorizationHolder;
 import feign.Logger;
 import feign.RequestInterceptor;
 import feign.RequestTemplate;
@@ -24,7 +26,14 @@ public class FeignConfiguration implements RequestInterceptor {
     @Override
     public void apply(RequestTemplate requestTemplate) {
         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = attributes.getRequest();
-        requestTemplate.header("Authorization", request.getHeader("Authorization"));
+        String authorization = "";
+        if(ObjectUtil.isNull(attributes)){
+            authorization = AuthorizationHolder.getAuthorization();
+            AuthorizationHolder.remove();
+        }else{
+            HttpServletRequest request = attributes.getRequest();
+            authorization = request.getHeader("Authorization");
+        }
+        requestTemplate.header("Authorization", authorization);
     }
 }

+ 37 - 0
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/common/minio/MinioConfiguration.java

@@ -0,0 +1,37 @@
+package com.css.simulation.resource.scene.common.minio;
+
+import io.minio.MinioClient;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "minio")
+public class MinioConfiguration {
+
+    private String endpointPrivate;
+    private String endpointPublic;
+    private String accessKey;
+    private String secretKey;
+
+    @Bean
+    public MinioClient minioClientPrivate() {
+        MinioClient minioClient = MinioClient.builder()
+                .endpoint(endpointPrivate)
+                .credentials(accessKey, secretKey)
+                .build();
+        return minioClient;
+    }
+
+    @Bean
+    public MinioClient minioClientPublic() {
+        MinioClient minioClient = MinioClient.builder()
+                .endpoint(endpointPublic)
+                .credentials(accessKey, secretKey)
+                .build();
+        return minioClient;
+    }
+
+}

+ 21 - 0
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/common/oauth/AuthorizationHolder.java

@@ -0,0 +1,21 @@
+package com.css.simulation.resource.scene.common.oauth;
+
+import org.springframework.core.NamedInheritableThreadLocal;
+
+public class AuthorizationHolder {
+
+    private static final ThreadLocal<String> inheritableRequestAttributesHolder = new NamedInheritableThreadLocal("Authorization");
+
+    public static void setAuthorization(String authorization){
+        inheritableRequestAttributesHolder.set(authorization);
+    }
+
+    public static String getAuthorization(){
+        return inheritableRequestAttributesHolder.get();
+    }
+
+    public static void remove(){
+        inheritableRequestAttributesHolder.remove();
+    }
+
+}

+ 15 - 1
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/feign/SceneService.java

@@ -4,15 +4,29 @@ import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.param.scene.SceneImportParam;
 import com.css.simulation.resource.scene.common.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.web.bind.annotation.PostMapping;
 
-@FeignClient(value = "simulation-resource-server",
+@FeignClient(
+        //name = "SceneService",
+        //url = "http://127.0.0.1:7003",
         contextId = "SceneService",
+        value = "simulation-resource-server",
         path = "/simulation/resource/server",
         fallback = SceneServiceFallback.class,
         configuration = FeignConfiguration.class)
 public interface SceneService {
 
+    //交通事故
+    @Async
     @PostMapping("/SceneAccident/saveSceneAccidentBatch")
     ResponseBodyVO saveSceneAccidentBatch(SceneImportParam sceneImportParam);
+    //自然场景
+    @Async
+    @PostMapping("/SceneNatural/saveSceneNaturalBatch")
+    ResponseBodyVO saveSceneNaturalBatch(SceneImportParam sceneImportParam);
+    //标准法规
+    @Async
+    @PostMapping("/StandardsRegulations/saveStandardsRegulationsBatch")
+    ResponseBodyVO saveStandardsRegulationsBatch(SceneImportParam sceneImportParam);
 }

+ 10 - 0
simulation-resource-scene/src/main/java/com/css/simulation/resource/scene/feign/SceneServiceFallback.java

@@ -9,4 +9,14 @@ public class SceneServiceFallback implements SceneService {
     public ResponseBodyVO saveSceneAccidentBatch(SceneImportParam sceneImportParam) {
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
     }
+
+    @Override
+    public ResponseBodyVO saveSceneNaturalBatch(SceneImportParam sceneImportParam) {
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
+    }
+
+    @Override
+    public ResponseBodyVO saveStandardsRegulationsBatch(SceneImportParam sceneImportParam) {
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
+    }
 }

+ 11 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/common/config/FeignConfiguration.java

@@ -1,5 +1,7 @@
 package com.css.simulation.resource.common.config;
 
+import api.common.util.ObjectUtil;
+import com.css.simulation.resource.common.oauth.AuthorizationHolder;
 import feign.Logger;
 import feign.RequestInterceptor;
 import feign.RequestTemplate;
@@ -24,7 +26,14 @@ public class FeignConfiguration implements RequestInterceptor {
     @Override
     public void apply(RequestTemplate requestTemplate) {
         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
-        HttpServletRequest request = attributes.getRequest();
-        requestTemplate.header("Authorization", request.getHeader("Authorization"));
+        String authorization = "";
+        if(ObjectUtil.isNull(attributes)){
+            authorization = AuthorizationHolder.getAuthorization();
+            AuthorizationHolder.remove();
+        }else{
+            HttpServletRequest request = attributes.getRequest();
+            authorization = request.getHeader("Authorization");
+        }
+        requestTemplate.header("Authorization", authorization);
     }
 }

+ 21 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/oauth/AuthorizationHolder.java

@@ -0,0 +1,21 @@
+package com.css.simulation.resource.common.oauth;
+
+import org.springframework.core.NamedInheritableThreadLocal;
+
+public class AuthorizationHolder {
+
+    private static final ThreadLocal<String> inheritableRequestAttributesHolder = new NamedInheritableThreadLocal("Authorization");
+
+    public static void setAuthorization(String authorization){
+        inheritableRequestAttributesHolder.set(authorization);
+    }
+
+    public static String getAuthorization(){
+        return inheritableRequestAttributesHolder.get();
+    }
+
+    public static void remove(){
+        inheritableRequestAttributesHolder.remove();
+    }
+
+}

+ 4 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/feign/SceneService.java

@@ -10,8 +10,11 @@ import org.springframework.web.bind.annotation.PostMapping;
 
 
 
-@FeignClient(value = "simulation-resource-scene",
+@FeignClient(
+        //name = "scene",
+        //url = "http://127.0.0.1:7005",
         contextId = "scene",
+        value = "simulation-resource-scene",
         path = "/simulation/resource/scene",
         fallback = SceneServiceFallback.class,
         configuration = FeignConfiguration.class)

+ 22 - 4
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -487,6 +487,12 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
             taskResultState(projectRunResultRatioNumVos, size);
 
             resultScoreList = simulationProjectTaskMapper.selectScoreCount(poParam.getId());
+
+            //未完成得分为”“的改为0
+            if(!isEmpty(resultScoreList) && resultScoreList.size() == 1 && isEmpty(resultScoreList.get(0).getResultName())){
+                ProjectRunResultRatioNumVo projectRunResultRatioNumVo = resultScoreList.get(0);
+                projectRunResultRatioNumVo.setResultName("0");
+            }
             taskScore(resultScoreList,size);
 
         }
@@ -1803,8 +1809,16 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
             /*sublistName += ProjectConstants.SEPARATOR+sp.getReturnSceneId()+ProjectConstants.SEPARATOR+sp.getSceneType()+ProjectConstants.SEPARATOR+
                     sp.getSceneScore()+ProjectConstants.SEPARATOR+sp.getTargetEvaluate()+ProjectConstants.SEPARATOR+sp.getScoreExplain();*/
 
-            sublistName += ProjectConstants.SEPARATOR+sp.getReturnSceneId()+ProjectConstants.SEPARATOR+sp.getSceneType()+ProjectConstants.SEPARATOR+
-                    sceneScore+ProjectConstants.SEPARATOR+targetEvaluate+ProjectConstants.SEPARATOR+sp.getScoreExplain();
+            //测试得分,指标评价,得分说明 --处理
+            if(isEmpty(targetEvaluate) || isEmpty(sp.getScoreExplain())){
+                sublistName += ProjectConstants.SEPARATOR+sp.getReturnSceneId()+ProjectConstants.SEPARATOR+sp.getSceneType()+ProjectConstants.SEPARATOR+
+                        "--"+ProjectConstants.SEPARATOR+"--"+ProjectConstants.SEPARATOR+"--";
+            }else{
+                sublistName += ProjectConstants.SEPARATOR+sp.getReturnSceneId()+ProjectConstants.SEPARATOR+sp.getSceneType()+ProjectConstants.SEPARATOR+
+                        sceneScore+ProjectConstants.SEPARATOR+targetEvaluate+ProjectConstants.SEPARATOR+sp.getScoreExplain();
+            }
+
+
 
             String[] split = sublistName.split(ProjectConstants.SEPARATOR);
 
@@ -3283,6 +3297,9 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
                 simulationMptFirstTargetScorePo.setPId(param.getId()); //直接(子)任务表id
                 simulationMptFirstTargetScorePo.setTarget(v.getSublistId());
                 SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo1 = simulationMptFirstTargetScoreMapper.selectFirstTargetScore(simulationMptFirstTargetScorePo);
+                if(simulationMptFirstTargetScorePo1 == null){
+                    continue;
+                }
                 Double score = simulationMptFirstTargetScorePo1.getScore();
 
                 totalScore += score*(weightDouble/100);
@@ -4047,7 +4064,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
     public ResponseBodyVO selectSubProjectInfo(SimulationManualProjectParam param) {
 
         /*
-        项目名称、项目描述、算法名称、车辆、传感器、场景、运行周期、并行度、是否选择GPU、
+        项目名称、项目描述、算法名称、车辆、传感器、场景、运行周期、并行度、是否选择GPU、最大运行时间
          */
         String id = param.getId();
 
@@ -4165,6 +4182,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         vo.setParallelism(po.getParallelism());
         vo.setRuleView(po.getRuleView());
         vo.setIsChoiceGpu(po.getIsChoiceGpu());
+        vo.setMaxSimulationTime(po.getMaxSimulationTime());
     }
 
     private SimulationAutomaticProjectPo convertToSimulationAutomaticProjectPo(SimulationManualProjectParam param){
@@ -4176,7 +4194,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         po.setVehicle(param.getVehicle());
         po.setScene(param.getScene());
         po.setOperationCycle(param.getOperationCycle());
-//        po.setMaxSimulationTime(param.getMaxSimulationTime());
+        po.setMaxSimulationTime(param.getMaxSimulationTime());
         po.setParallelism(param.getParallelism());
         po.setRuleView(param.getRuleView());
         po.setIsChoiceGpu(param.getIsChoiceGpu());

+ 7 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/SceneImportCtrl.java

@@ -5,6 +5,7 @@ import api.common.pojo.constants.DictConstants;
 import api.common.pojo.param.system.SceneImportPageParam;
 import api.common.pojo.po.system.SceneImportPO;
 import api.common.util.ObjectUtil;
+import com.css.simulation.resource.common.oauth.AuthorizationHolder;
 import com.css.simulation.resource.feign.SceneService;
 import com.css.simulation.resource.system.service.SceneImportService;
 import com.github.pagehelper.PageInfo;
@@ -13,9 +14,12 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 
 @Controller
 @RequestMapping("/sceneImport")
@@ -32,7 +36,7 @@ public class SceneImportCtrl {
      */
     @RequestMapping("/saveTask")
     @ResponseBody
-    public ResponseBodyVO saveTask(@RequestBody SceneImportPO po) {
+    public ResponseBodyVO saveTask(@RequestBody SceneImportPO po, HttpServletRequest request) {
         if(ObjectUtil.isNull(po)){
             return new ResponseBodyVO(false, 500, "参数错误!",null);
         }
@@ -47,7 +51,8 @@ public class SceneImportCtrl {
         ResponseBodyVO<SceneImportPO> response = new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
         response.setInfo(po);
         //异步-启动上传
-        RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(),true);
+        String authorization = request.getHeader("Authorization");
+        AuthorizationHolder.setAuthorization(authorization);
         sceneService.startImport(po);
         return response;
     }

+ 2 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/UserService.java

@@ -80,6 +80,8 @@ public class UserService {
             userPO.setRoleCode(DictConstants.ROLE_CODE_UESR);
         }else if(DictConstants.ROLE_CODE_UESR.equals(currentUserRoleCode)){//普通用户
             userPO.setRoleCode(DictConstants.ROLE_CODE_SUBUESR);
+            //普通用户创建子账户时,占用类型继承
+            userPO.setUseType(AuthUtil.getCurrentUseType());
         }else{
             return null;
         }

+ 4 - 1
simulation-resource-server/src/main/resources/mapper/project/SimulationAutomaticProjectMapper.xml

@@ -69,6 +69,7 @@
         operation_cycle,
         parallelism,
         rule_view,
+        max_simulation_time,
         is_choice_gpu,
         automatic_run_times,
         last_run_time,
@@ -94,6 +95,7 @@
         #{operationCycle,jdbcType=VARCHAR},
         #{parallelism,jdbcType=VARCHAR},
         #{ruleView,jdbcType=VARCHAR},
+        #{maxSimulationTime},
         #{isChoiceGpu,jdbcType=VARCHAR},
         #{automaticRunTimes,jdbcType=BIGINT},
         #{lastRunTime,jdbcType=TIMESTAMP},
@@ -119,6 +121,7 @@
         operation_cycle = #{operationCycle,jdbcType=VARCHAR},
         parallelism = #{parallelism,jdbcType=VARCHAR},
         rule_view = #{ruleView,jdbcType=VARCHAR},
+        max_simulation_time = #{maxSimulationTime},
         is_choice_gpu = #{isChoiceGpu,jdbcType=VARCHAR},
         modify_time = #{modifyTime,jdbcType=TIMESTAMP},
         modify_user_id = #{modifyUserId,jdbcType=VARCHAR}
@@ -165,7 +168,7 @@
 
     <!--自动运行项目详细页面信息-->
     <select id="selectAutomaticProjectInfoById" parameterType="string" resultType="api.common.pojo.vo.project.AutomaticProjectVo">
-        select p.id, p.project_name, p.project_describe, p.operation_cycle, p.parallelism, p.is_choice_gpu, p.vehicle, a.algorithm_name, s.package_name as sceneName
+        select p.id, p.project_name, p.project_describe, p.operation_cycle, p.parallelism, p.is_choice_gpu, p.vehicle, a.algorithm_name, s.package_name as sceneName, p.max_simulation_time
         from simulation_automatic_project p
         left join algorithm a on p.algorithm = a.id
         left join scene_package s on p.scene = s.package_id