Parcourir la source

Merge branch 'master' of https://gitee.com/mlx__martin/simulation-cloud

wangzhiqiang il y a 2 ans
Parent
commit
103059984b
25 fichiers modifiés avec 371 ajouts et 243 suppressions
  1. 0 1
      api-common/src/main/java/api/common/pojo/common/CommonPO.java
  2. 1 0
      api-common/src/main/java/api/common/pojo/param/scene/SceneAccidentParam.java
  3. 20 20
      api-common/src/main/java/api/common/pojo/param/scene/SceneNaturalNewParam.java
  4. 12 11
      api-common/src/main/java/api/common/pojo/param/scene/StandardsRegulationsParam.java
  5. 1 0
      api-common/src/main/java/api/common/pojo/po/model/VehiclePO.java
  6. 13 21
      api-common/src/main/java/api/common/pojo/po/system/SceneImportPO.java
  7. 1 0
      api-common/src/main/java/api/common/pojo/vo/model/VehicleVO.java
  8. 34 33
      simulation-resource-server/src/main/java/com/css/simulation/resource/log/service/LogService.java
  9. 3 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/model/service/VehicleService.java
  10. 0 8
      simulation-resource-server/src/main/java/com/css/simulation/resource/project/ctrl/SimulationProjectCtrl.java
  11. 15 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java
  12. 1 1
      simulation-resource-server/src/main/java/com/css/simulation/resource/project/service/SimulationProjectService.java
  13. 13 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/SceneAccidentController.java
  14. 1 1
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/SceneGeneralTemplateController.java
  15. 12 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/SceneNaturalController.java
  16. 13 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/StandardsRegulationsController.java
  17. 5 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageMapper.java
  18. 14 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneAccidentService.java
  19. 108 113
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneGeneralTemplateService.java
  20. 12 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneNaturalService.java
  21. 14 4
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/StandardsRegulationsService.java
  22. 12 9
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/SceneImportCtrl.java
  23. 40 1
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/SceneImportMapper.java
  24. 21 2
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/SceneImportService.java
  25. 5 0
      simulation-resource-server/src/main/resources/mapper/model/VehicleMapper.xml

+ 0 - 1
api-common/src/main/java/api/common/pojo/common/CommonPO.java

@@ -31,5 +31,4 @@ public class CommonPO {
      * 是否已删除
      */
     public String isDeleted;
-
 }

+ 1 - 0
api-common/src/main/java/api/common/pojo/param/scene/SceneAccidentParam.java

@@ -16,6 +16,7 @@ import java.util.List;
 @AllArgsConstructor
 public class SceneAccidentParam extends PageVO implements Serializable {
 
+    private List<String> sceneNameList;   // 用于批量删除的名称列表
     private String accidentId;              // (唯一)
     private String sceneName;  //场景名称
     private List<String> selfDriving;  //自车驾驶行为

+ 20 - 20
api-common/src/main/java/api/common/pojo/param/scene/SceneNaturalNewParam.java

@@ -9,32 +9,32 @@ import java.util.List;
 /**
  * 自然驾驶场景
  */
-@EqualsAndHashCode()
+@EqualsAndHashCode(callSuper = false)
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class SceneNaturalNewParam extends PageVO implements Serializable {
 
-    private String naturalName;              // 场景编号
-    private String[][] naturalEnvironment ; //自然环境
-    private String[][] road ; //道路
-    private String[][] infrastructure ; //基础设施
-    private String[][] temporaryOperation ; //临时性操作
-    private String[][] trafficCondition ; //交通状况
-    private String[][] selfBehavior  ;//自车行为
-    private String[][] targetBehavior ; //目标行为
-    private String[] ids ; //回显数组
+    private List<String> naturalNameList;        // 用于批量删除的名称列表
+    private String naturalName;             // 场景编号
+    private String[][] naturalEnvironment;  // 自然环境
+    private String[][] road;                // 道路
+    private String[][] infrastructure;      // 基础设施
+    private String[][] temporaryOperation;  // 临时性操作
+    private String[][] trafficCondition;    // 交通状况
+    private String[][] selfBehavior;        // 自车行为
+    private String[][] targetBehavior;      // 目标行为
+    private String[] ids;                   // 回显数组
+    private String[][] highSpeed;           // 高速
+    private String[][] ramp;                // 匝道
+    private String[][] tunnel;              // 隧道
+    private String[][] cutIn;               //切入
+    private String[][] cutOut;              //切出
+    private String[][] laneChange;          //变道
+    private String[][] turnAround;          //掉头
 
-    private String[][] highSpeed ;//高速
-    private String[][] ramp;//匝道
-    private String[][] tunnel;//隧道
-    private String[][] cutIn;//切入
-    private String[][] cutOut;//切出
-    private String[][] laneChange;//变道
-    private String[][] turnAround;//掉头
-
-    private String[] allSceneNames ; //场景名集合
-    private String userId;//用户id
+    private String[] allSceneNames;         //场景名集合
+    private String userId;                  //用户id
     private String share;
 }

+ 12 - 11
api-common/src/main/java/api/common/pojo/param/scene/StandardsRegulationsParam.java

@@ -16,26 +16,27 @@ import java.util.List;
 @AllArgsConstructor
 public class StandardsRegulationsParam extends PageVO implements Serializable {
 
+    private List<String> sceneNameList;   // 用于批量删除的名称列表
     private String regulationsId;              // (唯一)
     private String sceneName;  //场景名称
     private List<String> regulationType;  //法规类型
     private String standardType;  //标准类型
-    private String share ; //是否分析  1为分享
+    private String share; //是否分析  1为分享
 
-    private String videoAddress ; //视频地址
-    private String osgbAddress  ;//
-    private String xmlAddress ; //
-    private String xodrAddress ; //
-    private String jsonAddress ; //
+    private String videoAddress; //视频地址
+    private String osgbAddress;//
+    private String xmlAddress; //
+    private String xodrAddress; //
+    private String jsonAddress; //
     private String videoPreview;//视频预览地址
-    private String[] ids ; //回显数组
+    private String[] ids; //回显数组
     private List<String> label;  //法规类型
-    private List<String> AllIds ; //权限集合
+    private List<String> AllIds; //权限集合
 
-    private String  xlk="0";//判断下拉框是否为空 0为空  1为有值
-    private String  bq="0";//判断标签是否为空 0为空  1为有值
+    private String xlk = "0";//判断下拉框是否为空 0为空  1为有值
+    private String bq = "0";//判断标签是否为空 0为空  1为有值
 
     private String userId;
 
-    private String[] allSceneNames ; //场景名集合
+    private String[] allSceneNames; //场景名集合
 }

+ 1 - 0
api-common/src/main/java/api/common/pojo/po/model/VehiclePO.java

@@ -43,6 +43,7 @@ public class VehiclePO extends CommonPO {
     private String centroidToGround;//质心到地面
     //    private String wheelbase;//轴距
     private String sprungMass;//簧上质量
+    private String vehicleLength;//车辆长度 LEN_SM
     private String vehicleWidth;//车辆宽度
     private String rotationalInertiaX;//整车绕x轴转动惯量
     private String rotationalInertiaY;//整车绕y轴转动惯量

+ 13 - 21
api-common/src/main/java/api/common/pojo/po/system/SceneImportPO.java

@@ -1,30 +1,22 @@
 package api.common.pojo.po.system;
 
 import api.common.pojo.common.CommonPO;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.*;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class SceneImportPO extends CommonPO {
-    
-    //任务id
-    private String id;
-    //任务名称
-    private String name;
-    //场景包路径
-    private String dataDirectory;
-    //场景类型
-    private String sceneType;
-    //任务执行状态
-    private String status;
-    //成功数量
-    private int successNum;
-    //失败数量
-    private int falseNum;
-    //错误信息
-    private String errorMessage;
-    //总用时长
-    private String totalTime;
+
+    private String id;  //任务id
+    private String name;    //任务名称
+    private String dataDirectory;   //场景包路径
+    private String sceneType;   //场景类型
+    private String status;  //任务执行状态
+    private int successNum; //成功数量
+    private int falseNum;   //失败数量
+    private String errorMessage;    //错误信息
+    private String totalTime;   //总用时长
     private String sceneNames;
 }

+ 1 - 0
api-common/src/main/java/api/common/pojo/vo/model/VehicleVO.java

@@ -49,6 +49,7 @@ public class VehicleVO {
     private String centroidToGround;//质心到地面 H_CG_SU
     //    private String wheelbase;//轴距 LX_AXLE X_LENGTH
     private String sprungMass;//簧上质量 M_SU
+    private String vehicleLength;//车辆长度 LEN_SM
     private String vehicleWidth;//车辆宽度 WID_SM Y_LENGTH
     private String rotationalInertiaX;//整车绕x轴转动惯量 IXX_SU
     private String rotationalInertiaY;//整车绕y轴转动惯量 IYY_SU

+ 34 - 33
simulation-resource-server/src/main/java/com/css/simulation/resource/log/service/LogService.java

@@ -76,16 +76,16 @@ public class LogService {
         PageUtil.setPageInfo(pageParam);
         List<LogOperationPO> list = new ArrayList<>();
         String roleCode = AuthUtil.getCurrentUserRoleCode();
-        if(DictConstants.ROLE_CODE_UESR.equals(roleCode)){//普通用户
+        if (DictConstants.ROLE_CODE_UESR.equals(roleCode)) {//普通用户
             String currentUserId = AuthUtil.getCurrentUserId();
             pageParam.setContent(currentUserId);//借用该字段传递当前用户id
             list = logMapper.getUserOperationLogPageList(pageParam);
-        }else{//管理员
+        } else {//管理员
             list = logMapper.getOperationLogPageList(pageParam);
         }
         //字典翻译
         Map<String, Map<String, String>> dictMaps = dictService.getDictMapsByTypes(LogConstants.MODULE_TYPE + "," + LogConstants.OPERATION_TYPE);
-        list.forEach(po ->{
+        list.forEach(po -> {
             po.setModule(dictMaps.get(LogConstants.MODULE_TYPE).get(po.getModule()));
             po.setOperationType(dictMaps.get(LogConstants.OPERATION_TYPE).get(po.getOperationType()));
         });
@@ -100,7 +100,7 @@ public class LogService {
         List<LogSystemPO> list = logMapper.getSystemLogPageList(pageParam);
         //字典翻译
         Map<String, Map<String, String>> dictMaps = dictService.getDictMapsByTypes(LogConstants.SYS_LOG_TYPE + "," + DictConstants.ROLE_CODE);
-        list.forEach(po ->{
+        list.forEach(po -> {
             po.setModule(dictMaps.get(LogConstants.SYS_LOG_TYPE).get(po.getModule()));
             po.setOperationType(dictMaps.get(LogConstants.SYS_LOG_TYPE).get(po.getOperationType()));
             po.setRoleCode(dictMaps.get(DictConstants.ROLE_CODE).get(po.getRoleCode()));
@@ -116,14 +116,14 @@ public class LogService {
             LogSystemPO po = getLogSystemPO(LogConstants.SYS_LOG_USER, operationType);
             String userId = userPO.getId();
             String username = userPO.getUsername();
-            if(ObjectUtil.isNull(username)){
+            if (ObjectUtil.isNull(username)) {
                 UserVO userVO = userMapper.getUserInfo(userId);
                 username = userVO.getUsername();
             }
             String content = username + " ( ID: " + userId + " )";
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -136,7 +136,7 @@ public class LogService {
             LogSystemPO po = getLogSystemPO(LogConstants.SYS_LOG_VEHICLE, operationType);
             String vehicleTempId = vehicleTempPO.getId();
             String modelLabel = vehicleTempPO.getModelLabel();
-            if(ObjectUtil.isNull(modelLabel)){
+            if (ObjectUtil.isNull(modelLabel)) {
                 VehiclePageParam param = new VehiclePageParam();
                 param.setId(vehicleTempId);
                 VehicleTempVO vehicleTempInfo = vehicleTempMapper.getVehicleTempInfo(param);
@@ -145,7 +145,7 @@ public class LogService {
             String content = modelLabel + " ( ID: " + vehicleTempId + " )";
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -159,10 +159,10 @@ public class LogService {
             String paramId = parameterPO.getId();
             String userId = parameterPO.getUserId();
             String userName = parameterPO.getUserName();
-            String content = "账户:" + userName +  " ( ID: " + userId + " ); 参数配置" +  " ( ID: " + paramId + " )";
+            String content = "账户:" + userName + " ( ID: " + userId + " ); 参数配置" + " ( ID: " + paramId + " )";
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -176,10 +176,10 @@ public class LogService {
             String clusterId = clusterPO.getId();
             String userId = clusterPO.getUserId();
             String userName = clusterPO.getUserName();
-            String content = "账户:" + userName +  " ( ID: " + userId + " ); 节点配置" +  " ( ID: " + clusterId + " )";
+            String content = "账户:" + userName + " ( ID: " + userId + " ); 节点配置" + " ( ID: " + clusterId + " )";
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -202,50 +202,51 @@ public class LogService {
     /**
      * 记录场景包模块日志
      */
-    public void logScenePackage(String operationType, SystemScenePackagePO packagePO,SystemUserSceneParam params) {
+    public void logScenePackage(String operationType, SystemScenePackagePO packagePO, SystemUserSceneParam params) {
         try {
             LogSystemPO po = getLogSystemPO(LogConstants.SYS_LOG_PACKAGE, operationType);
             //获取当前登录人姓名
-            String content=null;
-            if(operationType.equals(LogConstants.SYS_LOG_PACKAGE_DELETE)){
-                content = "删除场景包:"+packagePO.getPackageName()+"(ID:"+packagePO.getId()+")";
-            }else if(operationType.equals(LogConstants.SYS_LOG_PACKAGE_UPDATE)){
-                content = "编辑场景包:"+packagePO.getPackageName()+"(ID:"+packagePO.getId()+")";
-            }else if(operationType.equals(LogConstants.SYS_LOG_PACKAGE_INSERT)){
-                content = "创建场景包:"+packagePO.getPackageName()+"(ID:"+packagePO.getId()+")";
-            }else if(operationType.equals(LogConstants.SYS_LOG_PACKAGE_DISTRIBUTION)){
+            String content = null;
+            if (operationType.equals(LogConstants.SYS_LOG_PACKAGE_DELETE)) {
+                content = "删除场景包:" + packagePO.getPackageName() + "(ID:" + packagePO.getId() + ")";
+            } else if (operationType.equals(LogConstants.SYS_LOG_PACKAGE_UPDATE)) {
+                content = "编辑场景包:" + packagePO.getPackageName() + "(ID:" + packagePO.getId() + ")";
+            } else if (operationType.equals(LogConstants.SYS_LOG_PACKAGE_INSERT)) {
+                content = "创建场景包:" + packagePO.getPackageName() + "(ID:" + packagePO.getId() + ")";
+            } else if (operationType.equals(LogConstants.SYS_LOG_PACKAGE_DISTRIBUTION)) {
                 List<UserSceneVO> users = params.getUserIds();
                 StringBuffer sb = new StringBuffer();
                 for (UserSceneVO vo : users) {
                     sb.append("、").append(vo.getUserName()).append("((ID:").append(vo.getUserId()).append(")");
                 }
                 sb.deleteCharAt(0);
-                content = "分配场景包:"+params.getPackageName()+"(ID:"+params.getPackageId()+")给用户:"+sb.toString();
-            }else if(operationType.equals(LogConstants.SYS_LOG_PACKAGE_DISTRIBUTION_DELETE)){
-                List<UserSceneVO> users= params.getUserIds();
+                content = "分配场景包:" + params.getPackageName() + "(ID:" + params.getPackageId() + ")给用户:" + sb.toString();
+            } else if (operationType.equals(LogConstants.SYS_LOG_PACKAGE_DISTRIBUTION_DELETE)) {
+                List<UserSceneVO> users = params.getUserIds();
                 StringBuffer sb = new StringBuffer();
                 for (UserSceneVO vo : users) {
                     sb.append("、").append(vo.getUserName()).append("((ID:").append(vo.getUserId()).append(")");
                 }
                 sb.deleteCharAt(0);
-                content = "分配场景包:"+params.getPackageName()+"(ID:"+params.getPackageId()+")时移除用户:"+sb.toString();
+                content = "分配场景包:" + params.getPackageName() + "(ID:" + params.getPackageId() + ")时移除用户:" + sb.toString();
             }
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
+
     /**
      * 记录场景包分配模块日志
      */
-    public void logSystemUserSceneByPackageId(String operationType, SystemUserSceneParam param,String packageCount) {
+    public void logSystemUserSceneByPackageId(String operationType, SystemUserSceneParam param, String packageCount) {
         try {
             LogSystemPO po = getLogSystemPO(LogConstants.SYS_LOG_PACKAGE_GRANT, operationType);
-            String content = param.getUserName()+"(ID"+param.getUserId()+")"+"分配场景包:"+packageCount;
+            String content = param.getUserName() + "(ID" + param.getUserId() + ")" + "分配场景包:" + packageCount;
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -256,11 +257,11 @@ public class LogService {
     public void logSceneDelete(String operationType, Map map) {
         try {
             LogSystemPO po = getLogSystemPO(LogConstants.SYS_LOG_SCENE, operationType);
-            Map<String,String>  mapType= dictService.getDictMapByType(DictConstants.SCENE_TYPE);
-            String content = "删除"+mapType.get(map.get("type"))+":"+map.get("sceneName")+"(ID:"+map.get("sceneId")+")" ;
+            Map<String, String> mapType = dictService.getDictMapByType(DictConstants.SCENE_TYPE);
+            String content = "删除" + mapType.get(map.get("type")) + ":" + map.get("sceneName");
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
@@ -274,7 +275,7 @@ public class LogService {
             //获取当前登录人姓名
             po.setContent(content);
             logMapper.insertSystemLog(po);
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }

+ 3 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/model/service/VehicleService.java

@@ -152,6 +152,7 @@ public class VehicleService {
                             .replaceAll("centroidToGround", vehiclePO.getCentroidToGround())
                             .replaceAll("wheelbase", vehiclePO.getWheelbase().toString())
                             .replaceAll("sprungMass", vehiclePO.getSprungMass())
+                            .replaceAll("vehicleLength", vehiclePO.getVehicleLength())
                             .replaceAll("vehicleWidth", vehiclePO.getVehicleWidth())
                             .replaceAll("rotationalInertiaX", vehiclePO.getRotationalInertiaX())
                             .replaceAll("rotationalInertiaY", vehiclePO.getRotationalInertiaY())
@@ -269,6 +270,7 @@ public class VehicleService {
             String centroidToGround = par.substring(par.indexOf("H_CG_SU")).split("\\s")[1];
             String wheelbase = par.substring(par.indexOf("LX_AXLE")).split("\\s")[1];
             String sprungMass = par.substring(par.indexOf("M_SU")).split("\\s")[1];
+            String vehicleLength = par.substring(par.indexOf("LEN_SM")).split("\\s")[1];
             String vehicleWidth = par.substring(par.indexOf("WID_SM")).split("\\s")[1];
             String rotationalInertiaX = par.substring(par.indexOf("IXX_SU")).split("\\s")[1];
             String rotationalInertiaY = par.substring(par.indexOf("IYY_SU")).split("\\s")[1];
@@ -408,6 +410,7 @@ public class VehicleService {
                     .centroidToGround(centroidToGround)
                     .wheelbase(new BigDecimal(wheelbase))
                     .sprungMass(sprungMass)
+                    .vehicleLength(vehicleLength)
                     .vehicleWidth(vehicleWidth)
                     .rotationalInertiaX(rotationalInertiaX)
                     .rotationalInertiaY(rotationalInertiaY)

+ 0 - 8
simulation-resource-server/src/main/java/com/css/simulation/resource/project/ctrl/SimulationProjectCtrl.java

@@ -44,9 +44,6 @@ public class SimulationProjectCtrl {
 
     /**
      * 查询项目列表
-     *
-     * @param param
-     * @return
      */
     @RequestMapping("selectProject")
     @ResponseBody
@@ -67,8 +64,6 @@ public class SimulationProjectCtrl {
 
     /**
      * 删除工作(支持批量删除)
-     *
-     * @return
      */
     @RequestMapping("deleteProjectByids")
     @ResponseBody
@@ -78,9 +73,6 @@ public class SimulationProjectCtrl {
 
     /**
      * 修改工作运行状态
-     *
-     * @param param
-     * @return
      */
     @RequestMapping("updateProjectNowRunState")
     @ResponseBody

+ 15 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -32,6 +32,7 @@ import com.css.simulation.resource.project.enums.ProjectRunStateEnum;
 import com.css.simulation.resource.project.enums.SceneTypeEnum;
 import com.css.simulation.resource.project.mapper.*;
 import com.css.simulation.resource.project.service.SimulationProjectService;
+import com.css.simulation.resource.scene.mapper.ScenePackageMapper;
 import com.css.simulation.resource.system.service.DictService;
 import com.css.simulation.resource.util.ApacheKafkaUtil;
 import com.css.simulation.resource.util.ProjectUtil;
@@ -107,9 +108,10 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
     private MonitorService monitorService;
     @Resource
     private ProjectUtil projectUtil;
-
     @Resource
     private VehicleMapper vehicleMapper;
+    @Resource
+    private ScenePackageMapper scenePackageMapper;
 
     //* -------------------------------- Comment --------------------------------
 
@@ -270,6 +272,11 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
         // 已经完成的项目再次运行
         if (DictConstants.PROJECT_COMPLETED.equals(po.getNowRunState())) {
+            //1 查询场景测试包是否被禁用
+            String isUnavailable = scenePackageMapper.selectIsUnavailableByPackageId(po.getScene());
+            if("1".equals(isUnavailable)){
+                return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "包已经动过了,不能运行,编辑测试包后可重新运行。");
+            }
             po.createPo(AuthUtil.getCurrentUserId());
             // 生成id
             createProjectId(po);
@@ -294,12 +301,17 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
             simulationProjectMapper.updateDetailsById(projectId, infoJson);
             // Kafka推送消息
             projectRunToKafka(po);
-        } else if (DictConstants.PROJECT_TERMINATED.equals(param.getNowRunState())) {   //项目终止,推送到kafka
+        } else if (DictConstants.PROJECT_TERMINATED.equals(param.getNowRunState())) {   // 项目终止,推送到kafka
             String projectId = param.getId();
             ApacheKafkaUtil.deleteTopic(kafkaAdminClient, projectId);
             projectStopToKafka(po);
             simulationProjectMapper.updateProjectNowRunState(param);
-        } else {    // 创建新的项目
+        } else {    // 创建新的项目或者重新运行被终止的项目
+            //1 查询场景测试包是否被禁用
+            String isUnavailable = scenePackageMapper.selectIsUnavailableByPackageId(po.getScene());
+            if("1".equals(isUnavailable)){
+                return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "包已经动过了,不能运行,编辑测试包后可重新运行。");
+            }
             // 查询项目详情信息并保存
             String projectId = param.getId();
             ProjectDetailsVo info = selectProjectDetailsByIdBackUp(

+ 1 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/project/service/SimulationProjectService.java

@@ -16,7 +16,7 @@ public interface SimulationProjectService {
 
     ResponseBodyVO selectProjectById(SimulationManualProjectParam param);
 
-    ResponseBodyVO deleteProjectByids(SimulationManualProjectParam param);
+    ResponseBodyVO<String> deleteProjectByids(SimulationManualProjectParam param);
 
     ResponseBodyVO<String> updateProjectNowRunState(SimulationManualProjectParam param);
 

+ 13 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/SceneAccidentController.java

@@ -13,7 +13,10 @@ import com.css.simulation.resource.scene.service.SceneAccidentService;
 import com.css.simulation.resource.system.service.SceneImportService;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.BeanUtils;
-import org.springframework.web.bind.annotation.*;
+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 javax.annotation.Resource;
 import java.util.ArrayList;
@@ -25,10 +28,17 @@ import java.util.List;
 public class SceneAccidentController {
 
     @Resource
-   private  SceneAccidentService sceneAccidentService;
+    private SceneAccidentService sceneAccidentService;
     @Resource
     private SceneImportService sceneImportService;
 
+    @PostMapping("/batchDeleteSceneAccident")
+    public ResponseBodyVO<String> batchDeleteSceneAccident(@RequestBody SceneAccidentParam params) {
+        List<String> sceneNameList = params.getSceneNameList();
+        sceneAccidentService.batchDeleteSceneAccident(sceneNameList);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
+
     //查询列表
     @PostMapping("/querySceneAccidentList")
     public ResponseBodyVO<PageInfo<SceneAccidentVO>> querySceneAccidentList(@RequestBody SceneAccidentParam params) {
@@ -86,7 +96,7 @@ public class SceneAccidentController {
      */
     @PostMapping("/instShareSceneAccident")
     public ResponseBodyVO<String> instShareSceneAccident(@RequestBody SceneAccidentPO params) {
-         sceneAccidentService.instShareSceneAccident(params);
+        sceneAccidentService.instShareSceneAccident(params);
 
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
 

+ 1 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/SceneGeneralTemplateController.java

@@ -109,7 +109,7 @@ public class SceneGeneralTemplateController {
     @PostMapping("/saveSceneGeneralTemplate")
     @ResponseBody
     public ResponseBodyVO<String> saveSceneGeneralTemplate(@RequestParam("file") MultipartFile multipartFile) {
-        File file = null;
+        File file;
         String originalFilename = multipartFile.getOriginalFilename();
         if (originalFilename.indexOf(".xls") == -1 && originalFilename.indexOf(".xlsx") == -1) {
             return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "文件格式错误,请检查模板.");

+ 12 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/SceneNaturalController.java

@@ -29,11 +29,20 @@ import java.util.List;
 public class SceneNaturalController {
 
     @Resource
-    SceneNaturalService sceneNaturalService;
+    private SceneNaturalService sceneNaturalService;
     @Resource
-    SceneImportService sceneImportService;
+    private SceneImportService sceneImportService;
 
-    //查询列表
+    @PostMapping("/batchDeleteSceneNatural")
+    public ResponseBodyVO<String> batchDeleteSceneNatural(@RequestBody SceneNaturalNewParam params) {
+        List<String> naturalNameList = params.getNaturalNameList();
+        sceneNaturalService.batchDeleteSceneNatural(naturalNameList);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
+
+    /**
+     * 查询自然驾驶数据
+     */
     @PostMapping("/querySceneNaturalList")
     public ResponseBodyVO<PageInfo<SceneNaturalVO>> querySceneNaturalList(@RequestBody SceneNaturalNewParam params) {
         PageUtil.setPageInfo(params);

+ 13 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/StandardsRegulationsController.java

@@ -13,7 +13,10 @@ import com.css.simulation.resource.scene.service.StandardsRegulationsService;
 import com.css.simulation.resource.system.service.SceneImportService;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.BeanUtils;
-import org.springframework.web.bind.annotation.*;
+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 javax.annotation.Resource;
 import java.util.ArrayList;
@@ -25,9 +28,16 @@ import java.util.List;
 public class StandardsRegulationsController {
 
     @Resource
-    StandardsRegulationsService standardsRegulationsService;
+    private StandardsRegulationsService standardsRegulationsService;
     @Resource
-    SceneImportService sceneImportService;
+    private SceneImportService sceneImportService;
+
+    @PostMapping("/batchDeleteSceneStandards")
+    public ResponseBodyVO<String> batchDeleteSceneStandards(@RequestBody StandardsRegulationsParam params) {
+       List<String> sceneNameList = params.getSceneNameList();
+        standardsRegulationsService.batchDeleteSceneStandards(sceneNameList);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
 
     //查询列表
     @PostMapping("/queryStandardsRegulationsList")

+ 5 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageMapper.java

@@ -5,6 +5,7 @@ import api.common.pojo.po.scene.ScenePackagePO;
 import api.common.pojo.vo.scene.ScenePackageNewVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Repository;
 
@@ -52,4 +53,8 @@ public interface ScenePackageMapper {
             "where package_id in (select root_id from scene_package_sublist where scene_traffic_ids like concat('%', #{sceneId}, '%'))")
     void  updateIsUnavailableByAccidentId(@Param("isUnavailable")String isUnavailable,@Param("sceneId")String sceneId);
 
+
+    @Select("select is_unavailable from scene_package where package_id = #{packageId}")
+    String  selectIsUnavailableByPackageId(@Param("packageId")String packageId);
+
 }

+ 14 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneAccidentService.java

@@ -371,20 +371,29 @@ public class SceneAccidentService {
         return list;
     }
 
+    public void batchDeleteSceneAccident(List<String> sceneNameList) {
+
+        for (String sceneName : sceneNameList) {
+            SceneAccidentPO sceneAccidentPO = new SceneAccidentPO();
+            sceneAccidentPO.setSceneName(sceneName);
+            deleteSceneAccidentList(sceneAccidentPO);
+        }
+    }
+
     public void deleteSceneAccidentList(SceneAccidentPO params) {
         //1 获取参数
         String sceneName = params.getSceneName(); // 场景名称
         //2 根据场景名称查询出同名的所有场景id,包括公有和私有
         List<String> sceneIdList = sceneAccidentMapper.selectIdByName(sceneName);
         for (String sceneId : sceneIdList) {
-            //3 将所有场景测试包指标中的该场景删除
+            //3 将所有包含该场景的场景测试包状态为已禁用
+            scenePackageMapper.updateIsUnavailableByAccidentId("1", sceneId);
+            //4 将所有场景测试包指标中的该场景删除
             SceneDeleteParam param = new SceneDeleteParam();
             param.setModifyTime(TimeUtil.getNowForMysql());
             param.setSceneJtId(sceneId);
             param.setModifyUserId(AuthUtil.getCurrentUserId());
             scenePackageSublistMapper.updateScenePackageSublistById(param);
-            //4 将所有包含该场景的场景测试包状态为已禁用
-            scenePackageMapper.updateIsUnavailableByAccidentId("1", sceneId);
         }
         //5 将所有场景包中的该场景删除
         systemScenePackageSublistMapper.deleteBySceneName(sceneName);
@@ -815,4 +824,6 @@ public class SceneAccidentService {
         }
 
     }
+
+
 }

+ 108 - 113
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneGeneralTemplateService.java

@@ -6,6 +6,7 @@ import api.common.pojo.constants.DictConstants;
 import api.common.pojo.constants.LogConstants;
 import api.common.pojo.param.scene.SceneDeleteParam;
 import api.common.pojo.param.scene.SceneGeneralTemplateParam;
+import api.common.pojo.po.scene.SceneGeneralTemplatePO;
 import api.common.pojo.po.scene.ScenePackagePO;
 import api.common.pojo.po.scene.SystemScenePackageSublistPO;
 import api.common.pojo.po.system.SceneImportPO;
@@ -18,7 +19,6 @@ import api.common.util.TimeUtil;
 import com.css.simulation.resource.common.utils.AuthUtil;
 import com.css.simulation.resource.log.service.LogService;
 import com.css.simulation.resource.scene.mapper.SceneGeneralTemplateMapper;
-import api.common.pojo.po.scene.SceneGeneralTemplatePO;
 import com.css.simulation.resource.scene.mapper.ScenePackageMapper;
 import com.css.simulation.resource.scene.mapper.ScenePackageSublistMapper;
 import com.css.simulation.resource.scene.mapper.SystemScenePackageSublistMapper;
@@ -28,7 +28,6 @@ import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.*;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -50,18 +49,19 @@ public class SceneGeneralTemplateService {
     ScenePackageSublistMapper scenePackageSublistMapper;
     @Resource
     ScenePackageMapper scenePackageMapper;
-    @Autowired
+    @Resource
     DictService dictService;
-    @Autowired
+    @Resource
     LogService logService;
+
     /**
      * 泛化模板导入:
      */
     public void saveSceneGeneralTemplate(File excelFile, String version) {
         try {
-            FileInputStream is = new FileInputStream(excelFile); //文件流
-            Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的
-            int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量
+            FileInputStream is = new FileInputStream(excelFile);    //文件流
+            Workbook workbook = WorkbookFactory.create(is);         //这种方式 Excel 2003/2007/2010 都是可以处理的
+            int sheetCount = workbook.getNumberOfSheets();          //Sheet的数量
             List<SceneGeneralTemplatePO> list = new ArrayList<>();
             List<String> fileNameAll = new ArrayList<>();
             //遍历每个Sheet
@@ -73,9 +73,8 @@ public class SceneGeneralTemplateService {
             String fileName = map.get(sheetName);
             if (ObjectUtil.isNotNull(fileName)) {*/
                 int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数
-                //效验sheet页是否符合标准
+                // 效验sheet页是否符合标准
                 Cell ce00 = sheet.getRow(0).getCell(0);
-                //ce00.setCellType(CellType.STRING);
                 String c00Value = ce00.getStringCellValue();
                 if (c00Value != null && c00Value.equals("场景编号")) {
                     //遍历每一行
@@ -92,7 +91,7 @@ public class SceneGeneralTemplateService {
                             if (r > 0 && c == 3) {
                                 Date aaa = cell.getDateCellValue();
                                 cellValue = TimeUtil.getToStringDate(aaa, 4);
-                            } else if(cell!=null){
+                            } else if (cell != null) {
                                 //在读取单元格内容前,设置所有单元格中内容都是字符串类型
                                 cell.setCellType(CellType.STRING);
                                 //按照字符串类型读取单元格内数据
@@ -111,14 +110,12 @@ public class SceneGeneralTemplateService {
                                 Method getOrSet = po.getClass().getDeclaredMethod("set" + name, parameterTypes);
                                 getOrSet.invoke(po, cellValue);
 
-                                if("BSD".equals(sheetName) &&"BSD_3-3".equals(cellValue)){
+                                if ("BSD".equals(sheetName) && "BSD_3-3".equals(cellValue)) {
                                     System.out.println(
                                             "111"
                                     );
-
                                 }
-                                System.out.println(name+"---测试--"+sheetName+"---"+cellValue);
-
+                                System.out.println(name + "---测试--" + sheetName + "---" + cellValue);
                             }
                         }
                         System.out.println("--------999-----------");
@@ -138,7 +135,7 @@ public class SceneGeneralTemplateService {
                 }
                 //}
             }
-            System.out.println("--------888-----------");
+            System.out.println("--------888---------");
             if (ObjectUtil.isNotNull(list)) {
                 SceneGeneralTemplatePO po = list.get(0);
                 po.setFileNameAll(fileNameAll);
@@ -146,7 +143,7 @@ public class SceneGeneralTemplateService {
                 mapper.saveSceneGeneralTemplateAll(list);
 
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
 
@@ -155,11 +152,11 @@ public class SceneGeneralTemplateService {
     /**
      * 泛化模板导入:
      */
-    public SceneImportPO saveSceneGeneralTemplateNew(File excelFile, String version,SceneImportPO sceneImportPO) {
+    public SceneImportPO saveSceneGeneralTemplateNew(File excelFile, String version, SceneImportPO sceneImportPO) {
         try {
-            FileInputStream is = new FileInputStream(excelFile); //文件流
-            Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的
-            int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量
+            FileInputStream is = new FileInputStream(excelFile);    //文件流
+            Workbook workbook = WorkbookFactory.create(is);         //这种方式 Excel 2003/2007/2010 都是可以处理的
+            int sheetCount = workbook.getNumberOfSheets();          //Sheet的数量
             List<SceneGeneralTemplatePO> list = new ArrayList<>();
             List<String> fileNameAll = new ArrayList<>();
             //遍历每个Sheet
@@ -187,10 +184,10 @@ public class SceneGeneralTemplateService {
                             int a = c + 1;
                             Cell cell = row.getCell(c);
                             String cellValue = null;
-                            if (r > 0 && c == 3) {
+                            if (c == 3) {
                                 Date aaa = cell.getDateCellValue();
                                 cellValue = TimeUtil.getToStringDate(aaa, 4);
-                            } else  if(cell!=null){
+                            } else if (cell != null) {
                                 //在读取单元格内容前,设置所有单元格中内容都是字符串类型
                                 cell.setCellType(CellType.STRING);
                                 //按照字符串类型读取单元格内数据
@@ -198,32 +195,28 @@ public class SceneGeneralTemplateService {
                             }
                             /*在这里可以对每个单元格中的值进行二次操作转化*/
                             //    System.out.print(cellValue + "    ");
-                            if (r > 0) {
-                                //获取属性的名字
-                                String name = field[a].getName();
-                                //将属性名的第一位字母大写
-                                name = name.substring(0, 1).toUpperCase() + name.substring(1);
-                                //调用setter方法设属性值
-                                Class[] parameterTypes = new Class[1];
-                                parameterTypes[0] = field[a].getType();
-                                Method getOrSet = po.getClass().getDeclaredMethod("set" + name, parameterTypes);
-                                getOrSet.invoke(po, cellValue);
-                            }
+                            //获取属性的名字
+                            String name = field[a].getName();
+                            //将属性名的第一位字母大写
+                            name = name.substring(0, 1).toUpperCase() + name.substring(1);
+                            //调用setter方法设属性值
+                            Class<?>[] parameterTypes = new Class[1];
+                            parameterTypes[0] = field[a].getType();
+                            Method getOrSet = po.getClass().getDeclaredMethod("set" + name, parameterTypes);
+                            getOrSet.invoke(po, cellValue);
                         }
                         System.out.println();
-                        if (r > 0) {
-                            po.setCreateTime(TimeUtil.getNowForMysql());
-                            po.setCreateUserId(AuthUtil.getCurrentUserId());
-                            po.setModifyUserId(AuthUtil.getCurrentUserId());
-                            po.setModifyTime(TimeUtil.getNowForMysql());
-                            po.setIsDeleted("0");
-                            po.setShare("0");
-                            po.setId(StringUtil.getRandomUUID());
-                            po.setFileName(sheetName);
-                            po.setVersion(version);
-                            fileNameAll.add(sheetName);
-                            list.add(po);
-                        }
+                        po.setCreateTime(TimeUtil.getNowForMysql());
+                        po.setCreateUserId(AuthUtil.getCurrentUserId());
+                        po.setModifyUserId(AuthUtil.getCurrentUserId());
+                        po.setModifyTime(TimeUtil.getNowForMysql());
+                        po.setIsDeleted("0");
+                        po.setShare("0");
+                        po.setId(StringUtil.getRandomUUID());
+                        po.setFileName(sheetName);
+                        po.setVersion(version);
+                        fileNameAll.add(sheetName);
+                        list.add(po);
                     }
                 }
                 //}
@@ -240,63 +233,65 @@ public class SceneGeneralTemplateService {
             }
             sceneImportPO.setStatus(DictConstants.SCENE_IMPORT_STATUS_2);
             return sceneImportPO;
-        }catch (Exception e){
+        } catch (Exception e) {
             sceneImportPO.setErrorMessage("该文件解析失败,请检查");
             sceneImportPO.setStatus(DictConstants.SCENE_IMPORT_STATUS_2);
-            return  sceneImportPO;
+            return sceneImportPO;
         }
     }
 
 
     public List<SceneGeneralTemplatePO> querySceneGeneralTemplateList(SceneGeneralTemplateParam po) {
-        List<SceneGeneralTemplatePO> list=new ArrayList<>();
+        List<SceneGeneralTemplatePO> list = new ArrayList<>();
         //添加权限
         String roleCode = AuthUtil.getCurrentUserRoleCode();
-        log.info("泛华------" +roleCode);
+        log.info("泛华------" + roleCode);
         String userId = AuthUtil.getCurrentUserId();
-        if(DictConstants.ROLE_CODE_ADMIN.equals(roleCode) || DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)){ //管理员账户
-             list=mapper.querySceneGeneralTemplateList(po);
-            log.info("泛华----list--" +list.size()+"----------"+po);
-        }else if(DictConstants.ROLE_CODE_SUBUESR.equals(roleCode)){
+        if (DictConstants.ROLE_CODE_ADMIN.equals(roleCode) || DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)) { //管理员账户
+            list = mapper.querySceneGeneralTemplateList(po);
+            log.info("泛华----list--" + list.size() + "----------" + po);
+        } else if (DictConstants.ROLE_CODE_SUBUESR.equals(roleCode)) {
             //查询父账户
             userId = AuthUtil.getCreateUserId();
             po.setUserId(userId);
-            if(po.getShare().equals("0")){
-                list=mapper.querySceneGeneralTemplateList(po);
-            }else {
+            if (po.getShare().equals("0")) {
+                list = mapper.querySceneGeneralTemplateList(po);
+            } else {
                 list = mapper.querySceneGeneralTemplateListByQx(po);
             }
-        }else if(DictConstants.ROLE_CODE_UESR.equals(roleCode)){
+        } else if (DictConstants.ROLE_CODE_UESR.equals(roleCode)) {
             //查询普通账户
             po.setUserId(userId);
-            if(po.getShare().equals("0")){
-                list=mapper.querySceneGeneralTemplateList(po);
-            }else {
+            if (po.getShare().equals("0")) {
+                list = mapper.querySceneGeneralTemplateList(po);
+            } else {
                 list = mapper.querySceneGeneralTemplateListByQx(po);
-            }        }
-        Map<String,String>  scenarioRoadTypeMap= dictService.getDictMapByType("scenarioRoadType");
-        Map<String,String>  scenarioWeatherMap= dictService.getDictMapByType("scenarioWeather");
+            }
+        }
+        Map<String, String> scenarioRoadTypeMap = dictService.getDictMapByType("scenarioRoadType");
+        Map<String, String> scenarioWeatherMap = dictService.getDictMapByType("scenarioWeather");
         for (SceneGeneralTemplatePO vo : list) {
             vo.setScenarioRoadType(scenarioRoadTypeMap.get(vo.getScenarioRoadType()));
             vo.setScenarioWeather(scenarioWeatherMap.get(vo.getScenarioWeather()));
         }
-        return   list;
+        return list;
     }
+
     @SneakyThrows
-    public SceneGeneralTemplateVO querySceneGeneralTemplateById(String id){
-        SceneGeneralTemplatePO po=mapper.querySceneGeneralTemplateById(id);
-       String generalizationType =JsonUtil.stringToJson(po.getGeneralizationType());
-       po.setGeneralizationType(generalizationType);
-        SceneGeneralTemplateVO vo=new SceneGeneralTemplateVO();
-       //转换为vo
+    public SceneGeneralTemplateVO querySceneGeneralTemplateById(String id) {
+        SceneGeneralTemplatePO po = mapper.querySceneGeneralTemplateById(id);
+        String generalizationType = JsonUtil.stringToJson(po.getGeneralizationType());
+        po.setGeneralizationType(generalizationType);
+        SceneGeneralTemplateVO vo = new SceneGeneralTemplateVO();
+        //转换为vo
         BeanUtils.copyProperties(po, vo);
-        List<SceneGeneralTemplateMbVO>  listMb=new ArrayList<>();
-        if(po.getObsStartX().indexOf(";")!=-1){
-            listMb= spliceVo(po);
-        }else{
-            SceneGeneralTemplateMbVO  mbVO=new SceneGeneralTemplateMbVO();
+        List<SceneGeneralTemplateMbVO> listMb = new ArrayList<>();
+        if (po.getObsStartX().contains(";")) {
+            listMb = spliceVo(po);
+        } else {
+            SceneGeneralTemplateMbVO mbVO = new SceneGeneralTemplateMbVO();
             BeanUtils.copyProperties(po, mbVO);
-            if(ObjectUtil.isNotNull(mbVO.getObsStartX())||ObjectUtil.isNotNull(mbVO.getObsStartY())||ObjectUtil.isNotNull(mbVO.getObsLateralAcceleration())||ObjectUtil.isNotNull(mbVO.getObsStartVelocity())){
+            if (ObjectUtil.isNotNull(mbVO.getObsStartX()) || ObjectUtil.isNotNull(mbVO.getObsStartY()) || ObjectUtil.isNotNull(mbVO.getObsLateralAcceleration()) || ObjectUtil.isNotNull(mbVO.getObsStartVelocity())) {
                 mbVO.setGeneralizationType(po.getGeneralizationType());
                 listMb.add(mbVO);
             }
@@ -306,25 +301,25 @@ public class SceneGeneralTemplateService {
         return vo;
     }
 
-    public   List<SceneGeneralTemplateMbVO> spliceVo(SceneGeneralTemplatePO po) throws JsonProcessingException {
-        List<SceneGeneralTemplateMbVO>  listMb=new ArrayList<>();
-        String[]  obsStartX= po.getObsStartX().split(";");
-        String[]  obsStartY= po.getObsStartY().split(";");
-        String[]  obsStartVelocity= po.getObsStartVelocity().split(";");
-        String[]  obsLateralAcceleration= po.getObsLateralAcceleration().split(";");
-        String[]  obsLongitudinalAcceleration= po.getObsLongitudinalAcceleration().split(";");
-        String[]  obsHeadingAngleRel= po.getObsHeadingAngleRel().split(";");
-        String[]  obsVelocityStatus= po.getObsVelocityStatus().split(";");
-        String[]  obsTrajectory= po.getObsTrajectory().split(";");
-        String[]  obsDurationTime= po.getObsDurationTime().split(";");
-        String[]  obsVelocityTime= po.getObsVelocityTime().split(";");
-        String[]  obsTrailTime= po.getObsTrailTime().split(";");
-        String[]  obsType= po.getObsType().split(";");
+    public List<SceneGeneralTemplateMbVO> spliceVo(SceneGeneralTemplatePO po) throws JsonProcessingException {
+        List<SceneGeneralTemplateMbVO> listMb = new ArrayList<>();
+        String[] obsStartX = po.getObsStartX().split(";");
+        String[] obsStartY = po.getObsStartY().split(";");
+        String[] obsStartVelocity = po.getObsStartVelocity().split(";");
+        String[] obsLateralAcceleration = po.getObsLateralAcceleration().split(";");
+        String[] obsLongitudinalAcceleration = po.getObsLongitudinalAcceleration().split(";");
+        String[] obsHeadingAngleRel = po.getObsHeadingAngleRel().split(";");
+        String[] obsVelocityStatus = po.getObsVelocityStatus().split(";");
+        String[] obsTrajectory = po.getObsTrajectory().split(";");
+        String[] obsDurationTime = po.getObsDurationTime().split(";");
+        String[] obsVelocityTime = po.getObsVelocityTime().split(";");
+        String[] obsTrailTime = po.getObsTrailTime().split(";");
+        String[] obsType = po.getObsType().split(";");
 
-        String generalizationType=po.getGeneralizationType();
-        List<String> list= Arrays.asList(obsStartX);
-        for (int i=0;i<list.size();i++){
-            SceneGeneralTemplateMbVO  mbVO=new SceneGeneralTemplateMbVO();
+        String generalizationType = po.getGeneralizationType();
+        List<String> list = Arrays.asList(obsStartX);
+        for (int i = 0; i < list.size(); i++) {
+            SceneGeneralTemplateMbVO mbVO = new SceneGeneralTemplateMbVO();
             mbVO.setObsStartX(list.get(i));
             mbVO.setObsStartY(obsStartY[i]);
             mbVO.setObsStartVelocity(obsStartVelocity[i]);
@@ -337,12 +332,12 @@ public class SceneGeneralTemplateService {
             mbVO.setObsVelocityTime(obsVelocityTime[i]);
             mbVO.setObsTrailTime(obsTrailTime[i]);
             mbVO.setObsType(obsType[i]);
-            Map<String,Integer> map=JsonUtil.jsonToMap(generalizationType);
-            for(Map.Entry<String,Integer> entry:map.entrySet()){
-                String value= entry.getValue().toString();
-                if(value.length()>1){
-              Integer values=Integer.parseInt(value.substring(i,i+1));
-                    map.put(entry.getKey(),values);
+            Map<String, Integer> map = JsonUtil.jsonToMap(generalizationType);
+            for (Map.Entry<String, Integer> entry : map.entrySet()) {
+                String value = entry.getValue().toString();
+                if (value.length() > 1) {
+                    Integer values = Integer.parseInt(value.substring(i, i + 1));
+                    map.put(entry.getKey(), values);
                 }
             }
             mbVO.setGeneralizationType(JsonUtil.beanToJson(map));
@@ -352,34 +347,34 @@ public class SceneGeneralTemplateService {
     }
 
 
-    public  ResponseBodyVO<String> deleteSceneGeneralTemplateById(SceneGeneralTemplatePO po) {
+    public ResponseBodyVO<String> deleteSceneGeneralTemplateById(SceneGeneralTemplatePO po) {
         po.setModifyUserId(AuthUtil.getCurrentUserId());
         po.setModifyTime(TimeUtil.getNowForMysql());
 
         //根据名称查询所有共有及私有场景
-        List<String>  idS=mapper.queryIdBySceneId(po.getSceneId());
+        List<String> idS = mapper.queryIdBySceneId(po.getSceneId());
         mapper.deleteSceneGeneralTemplateByScendId(po);
         //删除场景包
-        SystemScenePackageSublistPO systemScenePackageSublistPO=new SystemScenePackageSublistPO();
+        SystemScenePackageSublistPO systemScenePackageSublistPO = new SystemScenePackageSublistPO();
         systemScenePackageSublistPO.setModifyUserId(AuthUtil.getCurrentUserId());
         systemScenePackageSublistPO.setModifyTime(TimeUtil.getNowForMysql());
         systemScenePackageSublistPO.setSceneName(po.getSceneId());
         systemScenePackageSublistMapper.deleteSystemScenePackageSublist(systemScenePackageSublistPO);
         //删除测试包中场景
-        SceneDeleteParam parm=new SceneDeleteParam();
+        SceneDeleteParam parm = new SceneDeleteParam();
         parm.setModifyUserId(AuthUtil.getCurrentUserId());
         Set<String> set = new HashSet<>();
-        for (String id: idS) {
+        for (String id : idS) {
             parm.setModifyTime(TimeUtil.getNowForMysql());
             parm.setSceneFhId(id);
-            List<String> packageIdS=scenePackageSublistMapper.selectPackageIdById(parm);
+            List<String> packageIdS = scenePackageSublistMapper.selectPackageIdById(parm);
             set.addAll(packageIdS);
             //删除场景测试包
             scenePackageSublistMapper.updateScenePackageSublistById(parm);
         }
         //改变测试包状态
         List<String> listIds = new ArrayList<>(set);
-        ScenePackagePO scenePackagePO=new ScenePackagePO();
+        ScenePackagePO scenePackagePO = new ScenePackagePO();
         scenePackagePO.setModifyUserId(AuthUtil.getCurrentUserId());
         scenePackagePO.setModifyTime(TimeUtil.getNowForMysql());
         scenePackagePO.setIsUnavailable("1");
@@ -387,10 +382,10 @@ public class SceneGeneralTemplateService {
         scenePackageMapper.updateIsUnavailable(scenePackagePO);
 
 
-        Map map=new HashMap();
-        map.put("sceneId",po.getId());
-        map.put("sceneName",po.getSceneId());
-        map.put("type",DictConstants.SCENE_GENERAL);
+        Map map = new HashMap();
+        map.put("sceneId", po.getId());
+        map.put("sceneName", po.getSceneId());
+        map.put("type", DictConstants.SCENE_GENERAL);
         logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
         return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
     }
@@ -401,7 +396,7 @@ public class SceneGeneralTemplateService {
     public void instShareSceneGeneralTemplate(SceneGeneralTemplatePO po) {
         SceneGeneralTemplatePO syPO = mapper.querySceneGeneralTemplateById(po.getId());
         syPO.setShare("1");
-        SceneGeneralTemplatePO sceneGeneralTemplatePOByName =mapper.querySceneGeneralTemplateByName(syPO);
+        SceneGeneralTemplatePO sceneGeneralTemplatePOByName = mapper.querySceneGeneralTemplateByName(syPO);
         if (ObjectUtil.isNull(sceneGeneralTemplatePOByName)) {
             // -------------------------------- 保存数据到 mysql --------------------------------
             syPO.setCreateTime(TimeUtil.getNowForMysql());

+ 12 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneNaturalService.java

@@ -351,6 +351,15 @@ public class SceneNaturalService {
         return list;
     }
 
+
+    public void batchDeleteSceneNatural(List<String> naturalNameList) {
+        for (String naturalName : naturalNameList) {
+            SceneNaturalPO sceneNaturalPO = new SceneNaturalPO();
+            sceneNaturalPO.setNaturalName(naturalName);
+            deleteSceneNatural(sceneNaturalPO);
+        }
+    }
+
     @SneakyThrows
     public void deleteSceneNatural(SceneNaturalPO params) {
         //1 获取参数
@@ -358,14 +367,14 @@ public class SceneNaturalService {
         //2 根据场景名称查询出同名的所有场景id,包括公有和私有
         List<String> sceneIdList = sceneNaturalMapper.selectIdByName(sceneName);
         for (String sceneId : sceneIdList) {
+            //4 将所有包含该场景的场景测试包状态为已禁用
+            scenePackageMapper.updateIsUnavailableByNaturalId("1", sceneId);
             //3 将所有场景测试包指标中的该场景删除
             SceneDeleteParam param = new SceneDeleteParam();
             param.setModifyTime(TimeUtil.getNowForMysql());
             param.setSceneZrId(sceneId);
             param.setModifyUserId(AuthUtil.getCurrentUserId());
             scenePackageSublistMapper.updateScenePackageSublistById(param);
-            //4 将所有包含该场景的场景测试包状态为已禁用
-            scenePackageMapper.updateIsUnavailableByNaturalId("1", sceneId);
         }
         //5 将所有场景包中的该场景删除
         systemScenePackageSublistMapper.deleteBySceneName(sceneName);
@@ -373,7 +382,6 @@ public class SceneNaturalService {
         sceneNaturalMapper.deleteByName(sceneName, AuthUtil.getCreateUserId());
         //7 记录日志
         Map<String, String> map = new HashMap<>();
-        map.put("sceneId", params.getNaturalId());
         map.put("sceneName", params.getNaturalName());
         map.put("type", DictConstants.SCENE_NATURAL);
         logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
@@ -632,4 +640,5 @@ public class SceneNaturalService {
 
     }
 
+
 }

+ 14 - 4
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/StandardsRegulationsService.java

@@ -169,27 +169,35 @@ public class StandardsRegulationsService {
         return list;
     }
 
+    public void batchDeleteSceneStandards(List<String> sceneNameList) {
+        for (String sceneName : sceneNameList) {
+            StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
+            standardsRegulationsPO.setSceneName(sceneName);
+            deleteStandardsRegulations(standardsRegulationsPO);
+        }
+    }
+
     public void deleteStandardsRegulations(StandardsRegulationsPO params) {
         //1 获取参数
         String sceneName = params.getSceneName(); // 场景名称
         //2 根据场景名称查询出同名的所有场景id,包括公有和私有
         List<String> sceneIdList = standardsRegulationsMapper.selectIdByName(sceneName);
         for (String sceneId : sceneIdList) {
+            //4 将所有包含该场景的场景测试包状态为已禁用
+            scenePackageMapper.updateIsUnavailableByStandardsId("1", sceneId);
             //3 将所有场景测试包指标中的该场景删除
             SceneDeleteParam param = new SceneDeleteParam();
             param.setModifyTime(TimeUtil.getNowForMysql());
             param.setSceneBzId(sceneId);
             param.setModifyUserId(AuthUtil.getCurrentUserId());
             scenePackageSublistMapper.updateScenePackageSublistById(param);
-            //4 将所有包含该场景的场景测试包状态为已禁用
-            scenePackageMapper.updateIsUnavailableByStandardsId("1", sceneId);
         }
         //5 将所有场景包中的该场景删除
         systemScenePackageSublistMapper.deleteBySceneName(sceneName);
         //6 删除所有同名场景(包括公有和私有)
         standardsRegulationsMapper.deleteByName(sceneName, AuthUtil.getCreateUserId());
         //7 记录日志
-        Map<String,String> map = new HashMap<>();
+        Map<String, String> map = new HashMap<>();
         map.put("sceneId", params.getRegulationsId());
         map.put("sceneName", params.getSceneName());
         map.put("type", DictConstants.SCENE_STANDARD);
@@ -257,7 +265,7 @@ public class StandardsRegulationsService {
                                     ObjectMapper objMap = new ObjectMapper();
                                     JsonNode root = objMap.readTree(json);
                                     //判断场景名称唯一
-                                   sceneName = root.path("场景名称").asText();
+                                    sceneName = root.path("场景名称").asText();
                                     String regulationType = root.path("法规类型").asText();
                                     String standardType = root.path("标准类型").asText();
                                     String osgb = root.path("osgb").asText();
@@ -366,4 +374,6 @@ public class StandardsRegulationsService {
         }
 
     }
+
+
 }

+ 12 - 9
simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/SceneImportCtrl.java

@@ -9,32 +9,36 @@ 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;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-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.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
-@Controller
+@RestController
 @RequestMapping("/sceneImport")
 @PreAuthorize("@AuthorityCheck.admin()")
 public class SceneImportCtrl {
 
-    @Autowired
-    SceneImportService sceneImportService;
+    @Resource
+    private SceneImportService sceneImportService;
 
     @Resource
-    SceneService sceneService;
+    private SceneService sceneService;
+
+    @RequestMapping("/deleteTask")
+    public ResponseBodyVO<String> deleteTask(@RequestBody SceneImportPO sceneImportPO) {
+        String taskId = sceneImportPO.getId();
+        sceneImportService.deleteTask(taskId);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
 
     /**
      * 保存上传任务
      */
     @RequestMapping("/saveTask")
-    @ResponseBody
     public ResponseBodyVO<SceneImportPO> saveTask(@RequestBody SceneImportPO po, HttpServletRequest request) {
         if (ObjectUtil.isNull(po)) {
             return new ResponseBodyVO<>(false, 500, "参数错误!", null);
@@ -62,7 +66,6 @@ public class SceneImportCtrl {
 
     //查询列表
     @RequestMapping("/getSceneImporPagetList")
-    @ResponseBody
     public ResponseBodyVO<PageInfo<SceneImportPO>> getSceneImporPagetList(@RequestBody SceneImportPageParam param) {
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, sceneImportService.getSceneImporPagetList(param));
     }

+ 40 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/SceneImportMapper.java

@@ -2,7 +2,7 @@ package com.css.simulation.resource.system.mapper;
 
 import api.common.pojo.param.system.SceneImportPageParam;
 import api.common.pojo.po.system.SceneImportPO;
-import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -22,4 +22,43 @@ public interface SceneImportMapper {
     void updateStatus(SceneImportPO po);
 
     void updateInfo(SceneImportPO po);
+
+    @Delete("")
+    void deleteSceneByTaskId(String taskId);
+
+    @Select("select scene_type\n" +
+            "from scene_import_task\n" +
+            "where id = #{taskId}")
+    String selectSceneTypeByTaskId(@Param("taskId") String taskId);
+
+    @Update("update scene_natural\n" +
+            "set is_deleted = '1',\n" +
+            "    modify_user_id = '#{po.modifyUseId}',\n" +
+            "    modify_time = '#{po.modifyTime}'\n" +
+            "where natural_name in (select scene_names\n" +
+            "                       from scene_import_task\n" +
+            "                       where id = '#{po.taskId}'\n" +
+            ")")
+    void deleteNaturalByTaskId(@Param("po")SceneImportPO sceneImportPO);
+
+    @Update("update scene_standards_regulations\n" +
+            "set is_deleted = '1',\n" +
+            "    modify_user_id = '#{po.modifyUseId}',\n" +
+            "    modify_time = '#{po.modifyTime}'\n" +
+            "where scene_name in (select scene_names\n" +
+            "                       from scene_import_task\n" +
+            "                       where id = '#{po.taskId}'\n" +
+            ")")
+    void deleteStandardsByTaskId(@Param("po")SceneImportPO sceneImportPO);
+
+    @Update("update scene_accident\n" +
+            "set is_deleted = '1',\n" +
+            "    modify_user_id = '#{po.modifyUseId}',\n" +
+            "    modify_time = '#{po.modifyTime}'\n" +
+            "where scene_name in (select scene_names\n" +
+            "                       from scene_import_task\n" +
+            "                       where id = '#{po.taskId}'\n" +
+            ")")
+    void deleteAccidentByTaskId(@Param("po")SceneImportPO sceneImportPO);
+
 }

+ 21 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/SceneImportService.java

@@ -26,10 +26,8 @@ public class SceneImportService {
 
     @Resource
     DictService dictService;
-
     @Resource
     LogService logService;
-
     @Resource
     SceneImportMapper sceneImportMapper;
 
@@ -90,4 +88,25 @@ public class SceneImportService {
         return new PageInfo<>(list);
     }
 
+    public void deleteTask(String taskId) {
+        //1 根据任务 id 查询场景类型
+        String sceneType = sceneImportMapper.selectSceneTypeByTaskId(taskId);
+        SceneImportPO sceneImportPO = new SceneImportPO();
+        sceneImportPO.setId(taskId);
+        sceneImportPO.setModifyTime(TimeUtil.getNowForMysql());
+        sceneImportPO.setModifyUserId(AuthUtil.getCreateUserId());
+
+        //2 根据任务id删除相关联的所有同名任务
+        if (DictConstants.SCENE_NATURAL.equals(sceneType)) {
+            sceneImportMapper.deleteNaturalByTaskId(sceneImportPO);
+        } else if (DictConstants.SCENE_STANDARD.equals(sceneType)) {
+            sceneImportMapper.deleteStandardsByTaskId(sceneImportPO);
+        } else if (DictConstants.SCENE_ACCIDENT.equals(sceneType)) {
+            sceneImportMapper.deleteAccidentByTaskId(sceneImportPO);
+        } else if (DictConstants.SCENE_GENERAL.equals(sceneType)) {
+//            sceneImportMapper.deleteNaturalByTaskId(sceneImportPO);
+        } else {
+            throw new RuntimeException("场景类型错误:" + sceneType);
+        }
+    }
 }

+ 5 - 0
simulation-resource-server/src/main/resources/mapper/model/VehicleMapper.xml

@@ -33,6 +33,7 @@
         <result column="centroidToGround" property="centroidToGround" jdbcType="VARCHAR"/>
         <result column="sprungMass" property="sprungMass" jdbcType="VARCHAR"/>
         <result column="vehicleWidth" property="vehicleWidth" jdbcType="VARCHAR"/>
+        <result column="vehicleLength" property="vehicleLength" jdbcType="VARCHAR"/>
         <result column="rotationalInertiaX" property="rotationalInertiaX" jdbcType="VARCHAR"/>
         <result column="rotationalInertiaY" property="rotationalInertiaY" jdbcType="VARCHAR"/>
         <result column="rotationalInertiaZ" property="rotationalInertiaZ" jdbcType="VARCHAR"/>
@@ -185,6 +186,7 @@
                centroidToGround,
                sprungMass,
                vehicleWidth,
+               vehicleLength,
                rotationalInertiaX,
                rotationalInertiaY,
                rotationalInertiaZ,
@@ -311,6 +313,7 @@
                                   par_file_path,
                                   wheelCenterToGround, centroidToFrontWheelCenter, centroidToGround, sprungMass,
                                   vehicleWidth,
+                                  vehicleLength,
                                   rotationalInertiaX, rotationalInertiaY, rotationalInertiaZ,
                                   frontLeftWheelEffectiveRollingRadius, frontLeftWheelRollingResistanceCoefficient,
                                   frontLeftWheelFreeRadius, frontLeftWheelRelationCurvePositiveMomentAndSideslipAngle,
@@ -384,6 +387,7 @@
                 #{centroidToGround},
                 #{sprungMass},
                 #{vehicleWidth},
+                #{vehicleLength},
                 #{rotationalInertiaX},
                 #{rotationalInertiaY},
                 #{rotationalInertiaZ},
@@ -492,6 +496,7 @@
             centroidToGround                                              = #{centroidToGround},
             sprungMass                                                    = #{sprungMass},
             vehicleWidth                                                  = #{vehicleWidth},
+            vehicleLength                                                 = #{vehicleLength},
             rotationalInertiaX                                            = #{rotationalInertiaX},
             rotationalInertiaY                                            = #{rotationalInertiaY},
             rotationalInertiaZ                                            = #{rotationalInertiaZ},