Explorar o código

删除场景上传任务

LingxinMeng %!s(int64=2) %!d(string=hai) anos
pai
achega
771cb43473
Modificáronse 32 ficheiros con 568 adicións e 517 borrados
  1. 8 12
      api-common/src/main/java/api/common/pojo/param/scene/SceneDeleteParam.java
  2. 3 1
      api-common/src/main/java/api/common/pojo/param/scene/ScenePackageParam.java
  3. 3 2
      api-common/src/main/java/api/common/pojo/param/scene/ScenePackageSublistParam.java
  4. 10 33
      api-common/src/main/java/api/common/pojo/param/scene/SystemScenePackageParam.java
  5. 8 21
      api-common/src/main/java/api/common/pojo/po/scene/SceneAccidentPO.java
  6. 2 1
      api-common/src/main/java/api/common/pojo/po/scene/SceneGeneralTemplatePO.java
  7. 52 77
      api-common/src/main/java/api/common/pojo/po/scene/SceneNaturalPO.java
  8. 2 1
      api-common/src/main/java/api/common/pojo/po/scene/ScenePackageSublistPO.java
  9. 8 22
      api-common/src/main/java/api/common/pojo/po/scene/StandardsRegulationsPO.java
  10. 5 0
      api-common/src/main/java/api/common/util/CollectionUtil.java
  11. 5 5
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/controller/scene/SceneAccidentController.java
  12. 3 7
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/controller/scene/SceneNaturalController.java
  13. 2 4
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/controller/scene/SceneStandardsController.java
  14. 4 21
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SceneAccidentMapper.java
  15. 3 30
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SceneNaturalMapper.java
  16. 4 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageMapper.java
  17. 6 13
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageSublistMapper.java
  18. 4 26
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SceneStandardsRegulationsMapper.java
  19. 5 5
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/ScenePackageService.java
  20. 79 47
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/scene/SceneAccidentService.java
  21. 80 43
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/scene/SceneNaturalService.java
  22. 96 62
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/scene/SceneStandardsService.java
  23. 5 7
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/SystemScenePackageSublistMapper.java
  24. 8 26
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/SceneImportService.java
  25. 9 9
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/SystemScenePackageService.java
  26. 19 0
      simulation-resource-server/src/main/resources/mapper/scene/SceneAccidentMapper.xml
  27. 19 0
      simulation-resource-server/src/main/resources/mapper/scene/SceneNaturalMapper.xml
  28. 20 0
      simulation-resource-server/src/main/resources/mapper/scene/ScenePackageMapper.xml
  29. 59 34
      simulation-resource-server/src/main/resources/mapper/scene/ScenePackageSublistMapper.xml
  30. 21 2
      simulation-resource-server/src/main/resources/mapper/scene/SceneStandardsRegulationsMapper.xml
  31. 5 5
      simulation-resource-server/src/main/resources/mapper/system/SceneImportMapper.xml
  32. 11 1
      simulation-resource-server/src/main/resources/mapper/system/SystemScenePackageSublistMapper.xml

+ 8 - 12
api-common/src/main/java/api/common/pojo/param/scene/SceneDeleteParam.java

@@ -1,7 +1,9 @@
 package api.common.pojo.param.scene;
 
-import api.common.pojo.common.PageVO;
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.sql.Timestamp;
@@ -10,23 +12,17 @@ import java.util.List;
 /**
  * 删除场景测试包中场景
  */
-@EqualsAndHashCode()
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class SceneDeleteParam  implements Serializable {
-
+public class SceneDeleteParam implements Serializable {
     private String sceneZrId;   // (自然场景)
-
     private String sceneJtId;   // (交通场景)
     private String sceneBzId;   // (标准场景)
     private String sceneFhId;   // (泛华场景)
-
+    private List<String> sceneNames; // 场景名称列表
     public Timestamp modifyTime;
-    /**
-     * 记录最后更新人(包括删除)(用户id)
-     */
-    public String modifyUserId;
+    public String modifyUserId; //记录最后更新人(包括删除)(用户id)
 
-}
+}

+ 3 - 1
api-common/src/main/java/api/common/pojo/param/scene/ScenePackageParam.java

@@ -4,6 +4,7 @@ import api.common.pojo.common.PageVO;
 import lombok.*;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 测试场景包
@@ -21,5 +22,6 @@ public class ScenePackageParam extends PageVO implements Serializable {
     private String share ; //是否分析  1为分享
     private String yearMax;//结束时间
     private String yearMin;//开始时间
+    private List<String> indexIds; //场景测试包指标ID列表
     private String createUserId;//创建人Id
-}
+}

+ 3 - 2
api-common/src/main/java/api/common/pojo/param/scene/ScenePackageSublistParam.java

@@ -3,7 +3,6 @@ package api.common.pojo.param.scene;
 import lombok.*;
 
 import java.io.Serializable;
-import java.sql.Timestamp;
 import java.util.List;
 
 /**
@@ -35,6 +34,8 @@ public class ScenePackageSublistParam implements Serializable {
     private String templateId;//泛化模板id
     private String exampleId;//泛化实例id
     private List<ScenePackageSublistParam> list;
+    private List<String> sceneIds; // 场景ID,供场景上传任务删除使用
+    private String sceneType; // 场景类型,供场景上传任务删除使用
 
 
-}
+}

+ 10 - 33
api-common/src/main/java/api/common/pojo/param/scene/SystemScenePackageParam.java

@@ -1,21 +1,18 @@
 package api.common.pojo.param.scene;
 
-import api.common.pojo.common.CommonPO;
 import api.common.pojo.common.PageVO;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
 import java.io.Serializable;
 import java.sql.Timestamp;
+import java.util.List;
 
 /**
  * 人员场景包表。
  */
 @EqualsAndHashCode(callSuper = true)
 @Data
+@Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class SystemScenePackageParam extends  PageVO implements Serializable {
@@ -24,33 +21,13 @@ public class SystemScenePackageParam extends  PageVO implements Serializable {
     private String sceneDescribe;          // 场景包描述
     private String userName;          // 账号名称
     private String userId;          // 账号id
-
     private String[] packageNames ; //回显数组
-
-
     public String yearMax;//结束时间
-
     public String yearMin;//开始时间
-
-
-    /**
-     * 记录创建时间
-     */
-    public Timestamp createTime;
-    /**
-     * 记录最后更新时间(包括删除)
-     */
-    public Timestamp modifyTime;
-    /**
-     * 记录创建人(用户id)
-     */
-    public String createUserId;
-    /**
-     * 记录最后更新人(包括删除)(用户id)
-     */
-    public String modifyUserId;
-    /**
-     * 是否已删除
-     */
-    public String isDeleted;
-}
+    public List<String> sceneNames;
+    public Timestamp createTime; //记录创建时间
+    public Timestamp modifyTime; //记录最后更新时间(包括删除)
+    public String createUserId; //记录创建人(用户id)
+    public String modifyUserId; //记录最后更新人(包括删除)(用户id)
+    public String isDeleted; //是否已删除
+}

+ 8 - 21
api-common/src/main/java/api/common/pojo/po/scene/SceneAccidentPO.java

@@ -4,6 +4,7 @@ import lombok.*;
 
 import java.io.Serializable;
 import java.sql.Timestamp;
+import java.util.List;
 
 /**
  * 交通事故场景
@@ -34,26 +35,12 @@ public class SceneAccidentPO implements Serializable {
     private String videoPreview;//视频预览地址
     private String label;//标签
     private String maxTime ; //该场景仿真最大时长
-    /**
-     * 记录创建时间
-     */
-    public Timestamp createTime;
-    /**
-     * 记录最后更新时间(包括删除)
-     */
-    public Timestamp modifyTime;
-    /**
-     * 记录创建人(用户id)
-     */
-    public String createUserId;
-    /**
-     * 记录最后更新人(包括删除)(用户id)
-     */
-    public String modifyUserId;
-    /**
-     * 是否已删除
-     */
-    public String isDeleted;
+    private List<String> sceneNames; // 供场景上传任务删除使用
+    public Timestamp createTime;    //记录创建时间
+    public Timestamp modifyTime;    //记录最后更新时间(包括删除)
+    public String createUserId; //记录创建人(用户id)
+    public String modifyUserId; //记录最后更新人(包括删除)(用户id)
+    public String isDeleted; //是否已删除
 
 
 
@@ -66,4 +53,4 @@ public class SceneAccidentPO implements Serializable {
 
 
 
-}
+}

+ 2 - 1
api-common/src/main/java/api/common/pojo/po/scene/SceneGeneralTemplatePO.java

@@ -56,6 +56,7 @@ public class SceneGeneralTemplatePO implements Serializable {
 
 
     private List<String> fileNameAll;//sheet页集合
+    private List<String> sceneNames; // 供场景上传任务删除使用
 
 
     /**
@@ -90,4 +91,4 @@ public class SceneGeneralTemplatePO implements Serializable {
 
 
 
-}
+}

+ 52 - 77
api-common/src/main/java/api/common/pojo/po/scene/SceneNaturalPO.java

@@ -1,99 +1,74 @@
 package api.common.pojo.po.scene;
 
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.sql.Timestamp;
+import java.util.List;
 
 /**
  * 自然驾驶场景
  */
-@EqualsAndHashCode()
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class SceneNaturalPO  implements Serializable {
-
-    private String naturalId;              // (唯一)
+public class SceneNaturalPO implements Serializable {
+    private String naturalId;   // (唯一)
     private String naturalName;  //场景编号
     private String weather;  //天气
     private String backlight;  //逆光
     private String lightChange;  //隧道光纤变化
-    private String roadType ; //道路类型
-    private String roadMatrrial ; //路面材质
-    private String drivewayNum ; //车道数量
-    private String drivewayType ; //车道类型
-    private String roadFlatness  ;//道路平坦程度
-    private String roadCurvature ; //道路弯曲程度
-    private String ramp ; //匝道
+    private String roadType; //道路类型
+    private String roadMatrrial; //路面材质
+    private String drivewayNum; //车道数量
+    private String drivewayType; //车道类型
+    private String roadFlatness;//道路平坦程度
+    private String roadCurvature; //道路弯曲程度
+    private String ramp; //匝道
     private String intersectionType; //路口类型
-    private String planeIntersection ; //道路与铁路平面交叉
-    private String bridge  ;//桥梁
-    private String tunnel  ;//隧道
-    private String speedLimit ; //速度标志
-    private String minSpeedLimit ; //最低速度标志
-    private String noEntry  ;//禁止通行
-    private String noStopping ; //禁止停车
-    private String leftLaneLine ; //左侧车道线
-    private String rightLaneLine ; //右侧车道线
-    private String conductorMarking ; //导线标线及标志
-    private String pedestrianCrossing ; //人行横道
-    private String trafficLight ; //交通信号灯
-    private String decelerationMarking ; //减速标线
-    private String pavementCondition ; //路面状况
-    private String naturalDisaster ; //自然灾害
-    private String roadSafetySigns  ;//道路施工安全标识
-    private String safetyWarningBoard  ;//三角安全警示牌
-    private String trafficAccident ; //交通事故
-    private String patency ; //通畅情况
-    private String specialVehicleYield  ;//特种车辆让行
-    private String violation ; //违规
-    private String doubleFlashingCar ; //双闪车辆
-    private String selfBehavior  ;//自车行为
-    private String targetBehavior ; //目标行为
-
-    private String share ; //是否分析  1为分享
-    private String videoAddress ; //视频地址
-    private String osgbAddress  ;//
-    private String xodrAddress ; //
-    private String xoscAddress ; //
-    private String jsonAddress ; //
+    private String planeIntersection; //道路与铁路平面交叉
+    private String bridge;//桥梁
+    private String tunnel;//隧道
+    private String speedLimit; //速度标志
+    private String minSpeedLimit; //最低速度标志
+    private String noEntry;//禁止通行
+    private String noStopping; //禁止停车
+    private String leftLaneLine; //左侧车道线
+    private String rightLaneLine; //右侧车道线
+    private String conductorMarking; //导线标线及标志
+    private String pedestrianCrossing; //人行横道
+    private String trafficLight; //交通信号灯
+    private String decelerationMarking; //减速标线
+    private String pavementCondition; //路面状况
+    private String naturalDisaster; //自然灾害
+    private String roadSafetySigns;//道路施工安全标识
+    private String safetyWarningBoard;//三角安全警示牌
+    private String trafficAccident; //交通事故
+    private String patency; //通畅情况
+    private String specialVehicleYield;//特种车辆让行
+    private String violation; //违规
+    private String doubleFlashingCar; //双闪车辆
+    private String selfBehavior;//自车行为
+    private String targetBehavior; //目标行为
+    private String share; //是否分析  1为分享
+    private String videoAddress; //视频地址
+    private String osgbAddress;//
+    private String xodrAddress; //
+    private String xoscAddress; //
+    private String jsonAddress; //
     private String videoPreview;//视频预览地址
-
     private String label;//标签
-
-    private String maxTime ; //该场景仿真最大时长
-    /**
-     * 记录创建时间
-     */
-    public Timestamp createTime;
-    /**
-     * 记录最后更新时间(包括删除)
-     */
-    public Timestamp modifyTime;
-    /**
-     * 记录创建人(用户id)
-     */
-    public String createUserId;
-    /**
-     * 记录最后更新人(包括删除)(用户id)
-     */
-    public String modifyUserId;
-    /**
-     * 是否已删除
-     */
-    public String isDeleted;
-
-
-
-
-
-
-
-
-
-
+    private String maxTime; //该场景仿真最大时长
+    private List<String> sceneNames; // 供场景上传任务删除使用
+    public Timestamp createTime;    //记录创建时间
+    public Timestamp modifyTime;    //记录最后更新时间(包括删除)
+    public String createUserId; //记录创建人(用户id)
+    public String modifyUserId; //记录最后更新人(包括删除)(用户id)
+    public String isDeleted;    //是否已删除
 
 
-}
+}

+ 2 - 1
api-common/src/main/java/api/common/pojo/po/scene/ScenePackageSublistPO.java

@@ -16,6 +16,7 @@ import java.sql.Timestamp;
 public class ScenePackageSublistPO implements Serializable {
 
     private String id  ;//主键Id
+    private String sublistId  ;//主键Id
     private String sublistName ; //指标名称
     private String weight;//权重
     private String ruleName ; //规则名称
@@ -71,4 +72,4 @@ public class ScenePackageSublistPO implements Serializable {
 
 
 
-}
+}

+ 8 - 22
api-common/src/main/java/api/common/pojo/po/scene/StandardsRegulationsPO.java

@@ -4,6 +4,7 @@ import lombok.*;
 
 import java.io.Serializable;
 import java.sql.Timestamp;
+import java.util.List;
 
 /**
  * 标准法规场景
@@ -27,28 +28,13 @@ public class StandardsRegulationsPO implements Serializable {
     private String jsonAddress ; //
     private String videoPreview;//视频预览地址
     private String label;//标签
-
     private String maxTime ; //该场景仿真最大时长
-    /**
-     * 记录创建时间
-     */
-    public Timestamp createTime;
-    /**
-     * 记录最后更新时间(包括删除)
-     */
-    public Timestamp modifyTime;
-    /**
-     * 记录创建人(用户id)
-     */
-    public String createUserId;
-    /**
-     * 记录最后更新人(包括删除)(用户id)
-     */
-    public String modifyUserId;
-    /**
-     * 是否已删除
-     */
-    public String isDeleted;
+    private List<String> sceneNames; // 供场景上传任务删除使用
+    public Timestamp createTime;    //记录创建时间
+    public Timestamp modifyTime;    //记录最后更新时间(包括删除)
+    public String createUserId; //记录创建人(用户id)
+    public String modifyUserId; //记录最后更新人(包括删除)(用户id)
+    public String isDeleted;    //是否已删除
 
 
 
@@ -61,4 +47,4 @@ public class StandardsRegulationsPO implements Serializable {
 
 
 
-}
+}

+ 5 - 0
api-common/src/main/java/api/common/util/CollectionUtil.java

@@ -37,6 +37,11 @@ public class CollectionUtil {
         return stringBuilder.toString();
     }
 
+    public static List<String> sequenceStringToList(String sequenceString, String regex) {
+        return Arrays.asList(sequenceString.split(regex));
+    }
+
+
     public static <T> List<T> setToList(Set<T> set) {
         return new ArrayList<>(set);
     }

+ 5 - 5
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/controller/scene/SceneAccidentController.java

@@ -7,7 +7,7 @@ import api.common.pojo.param.scene.SceneImportParam;
 import api.common.pojo.po.scene.SceneAccidentPO;
 import api.common.pojo.po.system.SceneImportPO;
 import api.common.pojo.vo.scene.SceneAccidentVO;
-import api.common.util.ObjectUtil;
+import api.common.util.CollectionUtil;
 import com.css.simulation.resource.common.utils.PageUtil;
 import com.css.simulation.resource.scene.service.scene.SceneAccidentService;
 import com.css.simulation.resource.system.service.SceneImportService;
@@ -85,10 +85,10 @@ public class SceneAccidentController {
     //删除交通事故
     @PostMapping("/deleteSceneAccident")
     public ResponseBodyVO<String> deleteSceneAccident(@RequestBody SceneAccidentPO params) {
-        if (ObjectUtil.isNull(params.getAccidentId())) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "参数场景 id 不能为空,请检查。", null);
-        }
-        sceneAccidentService.deleteSceneAccidentList(params);
+//        if (ObjectUtil.isNull(params.getAccidentId())) {
+//            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "参数场景 id 不能为空,请检查。", null);
+//        }
+        sceneAccidentService.deleteSceneAccidentList(CollectionUtil.createArrayList(params.getSceneName()));
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }
 

+ 3 - 7
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/controller/scene/SceneNaturalController.java

@@ -8,6 +8,7 @@ import api.common.pojo.param.scene.SceneNaturalParam;
 import api.common.pojo.po.scene.SceneNaturalPO;
 import api.common.pojo.po.system.SceneImportPO;
 import api.common.pojo.vo.scene.SceneNaturalVO;
+import api.common.util.CollectionUtil;
 import com.css.simulation.resource.common.utils.PageUtil;
 import com.css.simulation.resource.scene.service.scene.SceneNaturalService;
 import com.css.simulation.resource.system.service.SceneImportService;
@@ -49,7 +50,7 @@ public class SceneNaturalController {
     //* -------------------------------- 删除自然驾驶 --------------------------------
     @PostMapping("/deleteSceneNatural")
     public ResponseBodyVO<String> deleteSceneNatural(@RequestBody SceneNaturalPO params) {
-        sceneNaturalService.deleteSceneNatural(params);
+        sceneNaturalService.deleteSceneNatural(CollectionUtil.createArrayList(params.getNaturalName()));
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }
     //* -------------------------------- Comment --------------------------------
@@ -82,16 +83,11 @@ public class SceneNaturalController {
 
     @PostMapping("/batchDeleteSceneNatural")
     public ResponseBodyVO<String> batchDeleteSceneNatural(@RequestBody SceneNaturalNewParam params) {
-        List<String> naturalNameList = params.getNaturalNameList();
-        sceneNaturalService.batchDeleteSceneNatural(naturalNameList);
+        sceneNaturalService.batchDeleteSceneNatural(params.getNaturalNameList());
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }
 
 
-
-
-
-
     //分享
     @PostMapping("/instShareSceneNatural")
     public ResponseBodyVO<String> instShareSceneNatural(@RequestBody SceneNaturalPO po) {

+ 2 - 4
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/controller/scene/SceneStandardsController.java

@@ -7,6 +7,7 @@ import api.common.pojo.param.scene.StandardsRegulationsParam;
 import api.common.pojo.po.scene.StandardsRegulationsPO;
 import api.common.pojo.po.system.SceneImportPO;
 import api.common.pojo.vo.scene.StandardsRegulationsVO;
+import api.common.util.CollectionUtil;
 import api.common.util.ObjectUtil;
 import com.css.simulation.resource.common.utils.PageUtil;
 import com.css.simulation.resource.scene.service.scene.SceneStandardsService;
@@ -89,10 +90,7 @@ public class SceneStandardsController {
      */
     @PostMapping("/deleteStandardsRegulations")
     public ResponseBodyVO<String> deleteStandardsRegulations(@RequestBody StandardsRegulationsPO params) {
-        if (ObjectUtil.isNull(params.getRegulationsId())) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "参数场景Id不能为空,请检查");
-        }
-        sceneStandardsService.deleteStandardsRegulations(params);
+        sceneStandardsService.deleteStandardsRegulations(CollectionUtil.createArrayList(params.getSceneName()));
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }
 

+ 4 - 21
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SceneAccidentMapper.java

@@ -1,45 +1,28 @@
 package com.css.simulation.resource.scene.mapper;
 
 import api.common.pojo.param.scene.SceneAccidentParam;
+import api.common.pojo.param.scene.SceneDeleteParam;
 import api.common.pojo.po.scene.SceneAccidentPO;
-import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.springframework.stereotype.Repository;
+
 import java.util.List;
 
 @Mapper
-@Repository
 public interface SceneAccidentMapper {
-
     void saveSceneAccident(SceneAccidentPO params);
-
     void saveSceneAccidentList(List<SceneAccidentPO> list);
-
     List<SceneAccidentPO> querySceneAccidentList(SceneAccidentParam params);
     List<SceneAccidentPO> querySceneAccidentListByQx(SceneAccidentParam params);
     List<SceneAccidentPO> querySceneAccidentListByXlk(SceneAccidentParam params);
     List<SceneAccidentPO> querySceneAccidentListByBq(SceneAccidentParam params);
     List<SceneAccidentPO> querySceneAccidentListByBqAndQx(SceneAccidentParam params);
-
     void deleteSceneAccidentList(SceneAccidentPO params);
-
     SceneAccidentPO querySceneAccidentByNmae(SceneAccidentPO sceneAccidentPO);
     List<SceneAccidentPO> selectAllByName(SceneAccidentPO sceneAccidentPO);
     void updateSceneAccident(SceneAccidentPO params);
     void updateSceneAccidentList(List<SceneAccidentPO> list);
     SceneAccidentPO querySceneAccidentById(String id);
-
-    @Select("select accident_id\n" +
-            "from scene_accident\n" +
-            "where scene_name = #{sceneName}")
-    List<String> selectIdByName(@Param("sceneName") String sceneName);
-
-    @Delete("update scene_accident\n" +
-            "set is_deleted  = '1',\n" +
-            "    modify_time = now(),\n" +
-            "    modify_user_id = #{modifyUserId} \n" +
-            "where scene_name = #{sceneName}")
-    void deleteByName(@Param("sceneName") String sceneName, @Param("modifyUserId") String modifyUserId);
+    List<String> selectIdsByNames(@Param("list")List<String> list);
+    void deleteBySceneNames(SceneDeleteParam sceneDeleteParam);
 }

+ 3 - 30
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SceneNaturalMapper.java

@@ -1,58 +1,31 @@
 package com.css.simulation.resource.scene.mapper;
 
+import api.common.pojo.param.scene.SceneDeleteParam;
 import api.common.pojo.param.scene.SceneNaturalParam;
 import api.common.pojo.po.scene.SceneNaturalPO;
-import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.springframework.stereotype.Repository;
 
 import java.util.List;
 import java.util.Map;
 
 @Mapper
-@Repository
 public interface SceneNaturalMapper {
-
     void saveSceneNatural(SceneNaturalPO params);
-
     void saveSceneNaturalList(List<SceneNaturalPO> list);
-
     List<SceneNaturalPO> querySceneNaturalList(SceneNaturalParam params);
-
     List<SceneNaturalPO> querySceneNaturalListByBqAndXlk(Map<String, SceneNaturalParam> map);
-
     List<SceneNaturalPO> querySceneNaturalListByBq(Map<String, SceneNaturalParam> map);
-
     void deleteSceneNatural(SceneNaturalPO params);
-
     SceneNaturalPO querySceneNaturaByName(SceneNaturalPO sceneNaturalPO);
     List<SceneNaturalPO> selectAllByName(SceneNaturalPO sceneNaturalPO);
-
     Integer querySceneNumBySy(SceneNaturalParam params);
-
     void updateSceneNatural(SceneNaturalPO params);
-
     void updateSceneNaturalList(List<SceneNaturalPO> list);
-
     List<SceneNaturalPO> querySceneNaturalListByQx(SceneNaturalParam params);
-
     List<SceneNaturalPO> querySceneNaturalListByBqAndXlkAndQx(Map<String, SceneNaturalParam> map);
-
     List<SceneNaturalPO> querySceneNaturalListByBqAndQx(Map<String, SceneNaturalParam> map);
-
     SceneNaturalPO querySceneNaturalById(String id);
-
-    @Select("select natural_id\n" +
-            "from scene_natural\n" +
-            "where natural_name = #{sceneName}")
-    List<String> selectIdByName(@Param("sceneName") String sceneName);
-
-    @Delete("update scene_natural\n" +
-            "set is_deleted  = '1',\n" +
-            "    modify_time = now(),\n" +
-            "    modify_user_id = #{modifyUserId}\n" +
-            "where natural_name = #{sceneName}")
-    void deleteByName(@Param("sceneName") String sceneName, @Param("modifyUserId") String modifyUserId);
+    List<String> selectIdsByNames(@Param("list")List<String> list);
+    void deleteBySceneNames(SceneDeleteParam sceneDeleteParam);
 }

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

@@ -60,4 +60,8 @@ public interface ScenePackageMapper {
     void updateSceneNumAfterDeleteSceneByAccidentId(@Param("sceneId") String sceneId);
     //删除打分规则时同步把测试包改变状态为禁用
     void updateIsUnavailable3(ScoringRulesPO params);
+
+    List<ScenePackagePO> selectByIndexIds(ScenePackageParam scenePackageParam);
+
+    void update(List<ScenePackagePO> testPackages);
 }

+ 6 - 13
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageSublistMapper.java

@@ -1,12 +1,12 @@
 package com.css.simulation.resource.scene.mapper;
 
 import api.common.pojo.param.scene.SceneDeleteParam;
+import api.common.pojo.param.scene.ScenePackageSublistParam;
 import api.common.pojo.po.scene.ScenePackageSublistPO;
 import api.common.pojo.vo.scene.ScenePackageSublistVO;
 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 java.util.List;
 
@@ -23,20 +23,13 @@ public interface ScenePackageSublistMapper {
     List<String> selectPackageIdById(SceneDeleteParam param);
     List<ScenePackageSublistPO> selectPackageFhById(SceneDeleteParam param);
     void updateScenePackageSublistById(SceneDeleteParam param);
-    @Update("update scene_package_sublist\n" +
-            "set scene_num = scene_num - 1\n" +
-            "where scene_natural_ids like concat('%', #{naturalId}, '%')")
-    void updateSceneNumAfterDeleteSceneByNaturalId(@Param("naturalId") String naturalId);
-    @Update("update scene_package_sublist\n" +
-            "set scene_num = scene_num - 1\n" +
-            "where scene_statue_ids like concat('%', #{sceneId}, '%')")
-    void updateSceneNumAfterDeleteSceneByStandardsId(@Param("sceneId")String sceneId);
-    @Update("update scene_package_sublist\n" +
-            "set scene_num = scene_num - 1\n" +
-            "where scene_traffic_ids like concat('%', #{sceneId}, '%')")
-    void updateSceneNumAfterDeleteSceneByAccidentId(@Param("sceneId")String sceneId);
     @Select("select sum(scene_num)\n" +
             "from scene_package_sublist\n" +
             "where root_id = #{scenePackageId}")
     int selectSceneNumByPackageId(@Param("scenePackageId")String scenePackageId);
+
+
+    List<ScenePackageSublistPO> selectBySceneIds(ScenePackageSublistParam scenePackageSublistParam);
+
+    void update(List<ScenePackageSublistPO> indexes);
 }

+ 4 - 26
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/StandardsRegulationsMapper.java → simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SceneStandardsRegulationsMapper.java

@@ -1,51 +1,29 @@
 package com.css.simulation.resource.scene.mapper;
 
+import api.common.pojo.param.scene.SceneDeleteParam;
 import api.common.pojo.param.scene.StandardsRegulationsParam;
 import api.common.pojo.po.scene.StandardsRegulationsPO;
-import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
 
 @Mapper
-@Repository
-public interface StandardsRegulationsMapper {
-
+public interface SceneStandardsRegulationsMapper {
     void saveStandardsRegulations(StandardsRegulationsPO params);
     void saveStandardsRegulationsList(List<StandardsRegulationsPO> list);
-
     List<StandardsRegulationsPO> queryStandardsRegulationsList(StandardsRegulationsParam params);
     List<StandardsRegulationsPO> queryStandardsRegulationsListByBq(StandardsRegulationsParam params);
-
     void deleteStandardsRegulations(StandardsRegulationsPO params);
-
     StandardsRegulationsPO queryStandardsRegulationsByName(StandardsRegulationsPO standardsRegulationsPO);
-
     List<StandardsRegulationsPO> selectAllByName(StandardsRegulationsPO standardsRegulationsPO);
-
     void updateStandardsRegulations(StandardsRegulationsPO params);
     void updateStandardsRegulationsList(List<StandardsRegulationsPO> list);
-
     List<StandardsRegulationsPO> queryStandardsRegulationsListByQx(StandardsRegulationsParam params);
     List<StandardsRegulationsPO> queryStandardsRegulationsListByBqAndQx(StandardsRegulationsParam params);
-
     List<String> queryRegulationType(String userId);
-
     StandardsRegulationsPO queryStandardsRegulationsById(String id);
-
-    @Select("select regulations_id\n" +
-            "from scene_standards_regulations\n" +
-            "where scene_name = #{sceneName}")
-    List<String> selectIdByName(@Param("sceneName") String sceneName);
-
-    @Delete("update scene_standards_regulations\n" +
-            "set is_deleted  = '1',\n" +
-            "    modify_time = now(),\n" +
-            "    modify_user_id = #{modifyUserId} \n" +
-            "where scene_name = #{sceneName}")
-    void deleteByName(@Param("sceneName") String sceneName, @Param("modifyUserId") String modifyUserId);
+    List<String> selectIdsByNames(@Param("list")List<String> list);
+    void deleteBySceneNames(SceneDeleteParam sceneDeleteParam);
 }

+ 5 - 5
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/ScenePackageService.java

@@ -37,7 +37,7 @@ public class ScenePackageService {
     @Resource
     private SceneAccidentMapper sceneAccidentMapper;
     @Resource
-    private StandardsRegulationsMapper standardsRegulationsMapper;
+    private SceneStandardsRegulationsMapper sceneStandardsRegulationsMapper;
     @Resource
     private SceneGeneralTemplateMapper sceneGeneralTemplateMapper;
     @Resource
@@ -400,9 +400,9 @@ public class ScenePackageService {
                     StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
                     standardsRegulationsPO.setShare("1");
                     for (String sceneStatueId : sceneStatueIdList) {
-                        StandardsRegulationsPO standardsRegulationsPOSy = standardsRegulationsMapper.queryStandardsRegulationsById(sceneStatueId);
+                        StandardsRegulationsPO standardsRegulationsPOSy = sceneStandardsRegulationsMapper.queryStandardsRegulationsById(sceneStatueId);
                         standardsRegulationsPO.setSceneName(standardsRegulationsPOSy.getSceneName());
-                        StandardsRegulationsPO StandardsRegulationsByName = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
+                        StandardsRegulationsPO StandardsRegulationsByName = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
                         standardsRegulationsPOSy.setShare("1");
                         //是否已存在
                         if (ObjectUtil.isNotNull(StandardsRegulationsByName)) {
@@ -412,14 +412,14 @@ public class ScenePackageService {
                             standardsRegulationsPOSy.setRegulationsId(StandardsRegulationsByName.getRegulationsId());
                             standardsRegulationsPOSy.setModifyTime(TimeUtil.getNowForMysql());
                             standardsRegulationsPOSy.setModifyUserId(AuthUtil.getCurrentUserId());
-                            standardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPOSy);
+                            sceneStandardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPOSy);
                         } else {
                             standardsRegulationsPOSy.setRegulationsId(StringUtil.getRandomUUID());
                             standardsRegulationsPOSy.setCreateTime(TimeUtil.getNowForMysql());
                             standardsRegulationsPOSy.setCreateUserId(AuthUtil.getCurrentUserId());
                             standardsRegulationsPOSy.setModifyTime(TimeUtil.getNowForMysql());
                             standardsRegulationsPOSy.setModifyUserId("");
-                            standardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPOSy);
+                            sceneStandardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPOSy);
                         }
 
                         if (ObjectUtil.isNull(sceneStatueIdsGy)) {

+ 79 - 47
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/scene/SceneAccidentService.java

@@ -4,15 +4,12 @@ import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.constants.LogConstants;
 import api.common.pojo.param.MinioParameter;
-import api.common.pojo.param.scene.SceneAccidentParam;
-import api.common.pojo.param.scene.SceneDeleteParam;
-import api.common.pojo.param.scene.SceneImportParam;
+import api.common.pojo.param.scene.*;
 import api.common.pojo.po.scene.SceneAccidentPO;
+import api.common.pojo.po.scene.ScenePackagePO;
+import api.common.pojo.po.scene.ScenePackageSublistPO;
 import api.common.pojo.po.system.SceneImportPO;
-import api.common.util.CollectionUtil;
-import api.common.util.ObjectUtil;
-import api.common.util.StringUtil;
-import api.common.util.TimeUtil;
+import api.common.util.*;
 import com.css.simulation.resource.common.utils.AuthUtil;
 import com.css.simulation.resource.feign.FileDownService;
 import com.css.simulation.resource.log.service.LogService;
@@ -26,12 +23,11 @@ import feign.Response;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -370,45 +366,81 @@ public class SceneAccidentService {
         return list;
     }
 
-    public void batchDeleteSceneAccident(List<String> sceneNameList) {
-
-        for (String sceneName : sceneNameList) {
-            SceneAccidentPO sceneAccidentPO = new SceneAccidentPO();
-            sceneAccidentPO.setSceneName(sceneName);
-            deleteSceneAccidentList(sceneAccidentPO);
-        }
+    @Transactional
+    public void batchDeleteSceneAccident(List<String> sceneNames) {
+        deleteSceneAccidentList(sceneNames);
     }
 
-    public void deleteSceneAccidentList(SceneAccidentPO params) {
-        //1 获取参数
-        String sceneName = params.getSceneName(); // 场景名称
-        //2 根据场景名称查询出同名的所有场景id,包括公有和私有
-        List<String> sceneIdList = sceneAccidentMapper.selectIdByName(sceneName);
-        for (String sceneId : sceneIdList) {
-            //5 根据场景id查询场景包id并修改场景数量
-            scenePackageMapper.updateSceneNumAfterDeleteSceneByAccidentId(sceneId);
-            scenePackageSublistMapper.updateSceneNumAfterDeleteSceneByAccidentId(sceneId);
-            //3 将所有包含该场景的场景测试包状态为已禁用
-            scenePackageMapper.updateIsUnavailableByAccidentId("1", sceneId);
-            //4 将所有场景测试包指标中的该场景删除
-            SceneDeleteParam param = new SceneDeleteParam();
-            param.setModifyTime(TimeUtil.getNowForMysql());
-            param.setSceneJtId(sceneId);
-            param.setModifyUserId(AuthUtil.getCurrentUserId());
-            scenePackageSublistMapper.updateScenePackageSublistById(param);
-
-        }
-        //5 将所有场景包中的该场景删除
-        systemScenePackageSublistMapper.deleteBySceneName(sceneName);
-        //6 删除所有同名场景(包括公有和私有)
-        sceneAccidentMapper.deleteByName(sceneName, AuthUtil.getCreateUserId());
-        //7 记录日志
+    @SneakyThrows
+    @Transactional
+    public void deleteSceneAccidentList(List<String> sceneNames) {
         Map<String, String> map = new HashMap<>();
-        map.put("sceneId", params.getAccidentId());
-        map.put("sceneName", params.getSceneName());
-        map.put("type", DictConstants.SCENE_ACCIDENT);
-        logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
-        //systemUserSceneService.deleteSystemUserSceneBySceneId(params.getAccidentId());
+        try {
+            //* -------------------------------- 场景表 --------------------------------
+            //1 根据场景名称查询出同名的所有场景id,包括公有和私有
+            List<String> sceneIds = sceneAccidentMapper.selectIdsByNames(sceneNames);
+            //2 删除场景数据
+            SceneDeleteParam sceneDeleteParam = SceneDeleteParam.builder()
+                    .sceneNames(sceneNames)
+                    .modifyTime(TimeUtil.getNowForMysql())
+                    .modifyUserId(AuthUtil.getCreateUserId())
+                    .build();
+            sceneAccidentMapper.deleteBySceneNames(sceneDeleteParam);
+            //* -------------------------------- 场景测试包指标表 & 场景测试包表 --------------------------------
+            //1 根据自然驾驶场景ID查询场景测试包指标
+            List<ScenePackageSublistPO> indexes = scenePackageSublistMapper.selectBySceneIds(ScenePackageSublistParam.builder()
+                    .sceneIds(sceneIds)
+                    .sceneType(DictConstants.SCENE_ACCIDENT)
+                    .build());
+            //2 根据指标ID查询场景测试包
+            List<ScenePackagePO> testPackages = scenePackageMapper.selectByIndexIds(ScenePackageParam.builder()
+                    .indexIds(indexes.stream().map(ScenePackageSublistPO::getId).collect(Collectors.toList()))
+                    .build());
+            //3 设置包为已禁用
+            testPackages.forEach(testPackage -> testPackage.setIsUnavailable(DictConstants.IS_UNAVAILABLE));
+            //4 遍历删除场景
+            indexes.forEach(index -> {
+                final String sceneNaturalIdsString = index.getSceneNaturalIds();
+                final String sceneTrafficIdsString = index.getSceneTrafficIds();
+                final String sceneStatueIdsString = index.getSceneStatueIds();
+                final String sceneGeneralizationIdsString = index.getSceneGeneralizationIds();
+                final List<String> sceneNaturalIds = CollectionUtil.sequenceStringToList(sceneNaturalIdsString, ",");
+                final List<String> sceneTrafficIds = CollectionUtil.sequenceStringToList(sceneTrafficIdsString, ",");
+                final List<String> sceneStatueIds = CollectionUtil.sequenceStringToList(sceneStatueIdsString, ",");
+                final List<String> sceneGeneralizationIds = CollectionUtil.sequenceStringToList(sceneGeneralizationIdsString, ",");
+                final Iterator<String> iterator = sceneTrafficIds.iterator();
+                while (iterator.hasNext()) {
+                    final String sceneId = iterator.next();
+                    if (sceneIds.contains(sceneId)) {
+                        iterator.remove();
+                        testPackages.forEach(testPackage -> {
+                            testPackage.setSceneNum(testPackage.getSceneNum() - 1);
+                        });
+                    }
+                }
+                index.setSceneNum(sceneNaturalIds.size() + sceneTrafficIds.size() + sceneStatueIds.size() + sceneGeneralizationIds.size());
+                index.setSceneNaturalIds(CollectionUtil.listToSequence(sceneNaturalIds));
+                index.setModifyTime(TimeUtil.getNowForMysql());
+                index.setModifyUserId(AuthUtil.getCurrentUserId());
+            });
+            //5 更新指标
+            scenePackageSublistMapper.update(indexes);
+            //6 更新包
+            scenePackageMapper.update(testPackages);
+
+            //* -------------------------------- 场景包表 --------------------------------
+            //1 将所有场景包中的该场景删除
+            systemScenePackageSublistMapper.deleteBySceneNames(SystemScenePackageParam.builder()
+                    .sceneNames(sceneNames)
+                    .modifyTime(TimeUtil.getNowForMysql())
+                    .modifyUserId(AuthUtil.getCurrentUserId())
+                    .build());
+        } finally {
+            //* -------------------------------- 日志表 --------------------------------
+            map.put("sceneNames", JsonUtil.listToJson(sceneNames));
+            map.put("type", DictConstants.SCENE_NATURAL);
+            logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
+        }
     }
 
     /*

+ 80 - 43
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/scene/SceneNaturalService.java

@@ -4,20 +4,18 @@ import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.constants.LogConstants;
 import api.common.pojo.param.MinioParameter;
-import api.common.pojo.param.scene.SceneDeleteParam;
-import api.common.pojo.param.scene.SceneImportParam;
-import api.common.pojo.param.scene.SceneNaturalNewParam;
-import api.common.pojo.param.scene.SceneNaturalParam;
+import api.common.pojo.param.scene.*;
 import api.common.pojo.po.scene.SceneNaturalPO;
+import api.common.pojo.po.scene.ScenePackagePO;
+import api.common.pojo.po.scene.ScenePackageSublistPO;
 import api.common.pojo.po.system.SceneImportPO;
-import api.common.util.CollectionUtil;
-import api.common.util.ObjectUtil;
-import api.common.util.ParamUtil;
-import api.common.util.TimeUtil;
+import api.common.util.*;
 import com.css.simulation.resource.common.utils.AuthUtil;
 import com.css.simulation.resource.feign.FileDownService;
 import com.css.simulation.resource.log.service.LogService;
-import com.css.simulation.resource.scene.mapper.*;
+import com.css.simulation.resource.scene.mapper.SceneNaturalMapper;
+import com.css.simulation.resource.scene.mapper.ScenePackageMapper;
+import com.css.simulation.resource.scene.mapper.ScenePackageSublistMapper;
 import com.css.simulation.resource.system.mapper.SystemScenePackageMapper;
 import com.css.simulation.resource.system.mapper.SystemScenePackageSublistMapper;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -31,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Slf4j
@@ -355,43 +354,81 @@ public class SceneNaturalService {
     }
 
 
-    public void batchDeleteSceneNatural(List<String> naturalNameList) {
-        for (String naturalName : naturalNameList) {
-            SceneNaturalPO sceneNaturalPO = new SceneNaturalPO();
-            sceneNaturalPO.setNaturalName(naturalName);
-            deleteSceneNatural(sceneNaturalPO);
-        }
+    @Transactional
+    public void batchDeleteSceneNatural(List<String> sceneNames) {
+        deleteSceneNatural(sceneNames);
     }
 
-    @SneakyThrows
     @Transactional
-    public void deleteSceneNatural(SceneNaturalPO params) {
-        //1 获取参数
-        String sceneName = params.getNaturalName(); // 场景名称
-        //2 根据场景名称查询出同名的所有场景id,包括公有和私有
-        List<String> sceneIdList = sceneNaturalMapper.selectIdByName(sceneName);
-        for (String sceneId : sceneIdList) {
-            //5 根据场景id查询场景包id并修改场景数量
-            scenePackageMapper.updateSceneNumAfterDeleteSceneByNaturalId(sceneId);
-            scenePackageSublistMapper.updateSceneNumAfterDeleteSceneByNaturalId(sceneId);
-            //3 将所有包含该场景的场景测试包状态为已禁用
-            scenePackageMapper.updateIsUnavailableByNaturalId("1", sceneId);
-            //4 将所有场景测试包指标中的该场景删除
-            SceneDeleteParam param = new SceneDeleteParam();
-            param.setModifyTime(TimeUtil.getNowForMysql());
-            param.setSceneZrId(sceneId);
-            param.setModifyUserId(AuthUtil.getCurrentUserId());
-            scenePackageSublistMapper.updateScenePackageSublistById(param);
-        }
-        //6 将所有场景包中的该场景删除
-        systemScenePackageSublistMapper.deleteBySceneName(sceneName);
-        //7 删除所有同名场景(包括公有和私有)
-        sceneNaturalMapper.deleteByName(sceneName, AuthUtil.getCreateUserId());
-        //8 记录日志
+    @SneakyThrows
+    public void deleteSceneNatural(List<String> sceneNames) {
         Map<String, String> map = new HashMap<>();
-        map.put("sceneName", params.getNaturalName());
-        map.put("type", DictConstants.SCENE_NATURAL);
-        logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
+        try {
+            //* -------------------------------- 场景表 --------------------------------
+            //1 根据场景名称查询出同名的所有场景id,包括公有和私有
+            List<String> sceneIds = sceneNaturalMapper.selectIdsByNames(sceneNames);
+            //2 删除场景数据
+            SceneDeleteParam sceneDeleteParam = SceneDeleteParam.builder()
+                    .sceneNames(sceneNames)
+                    .modifyTime(TimeUtil.getNowForMysql())
+                    .modifyUserId(AuthUtil.getCreateUserId())
+                    .build();
+            sceneNaturalMapper.deleteBySceneNames(sceneDeleteParam);
+            //* -------------------------------- 场景测试包指标表 & 场景测试包表 --------------------------------
+            //1 根据自然驾驶场景ID查询场景测试包指标
+            List<ScenePackageSublistPO> indexes = scenePackageSublistMapper.selectBySceneIds(ScenePackageSublistParam.builder()
+                    .sceneIds(sceneIds)
+                    .sceneType(DictConstants.SCENE_NATURAL)
+                    .build());
+            //2 根据指标ID查询场景测试包
+            List<ScenePackagePO> testPackages = scenePackageMapper.selectByIndexIds(ScenePackageParam.builder()
+                    .indexIds(indexes.stream().map(ScenePackageSublistPO::getId).collect(Collectors.toList()))
+                    .build());
+            //3 设置包为已禁用
+            testPackages.forEach(testPackage -> testPackage.setIsUnavailable(DictConstants.IS_UNAVAILABLE));
+            //4 遍历删除场景
+            indexes.forEach(index -> {
+                final String sceneNaturalIdsString = index.getSceneNaturalIds();
+                final String sceneTrafficIdsString = index.getSceneTrafficIds();
+                final String sceneStatueIdsString = index.getSceneStatueIds();
+                final String sceneGeneralizationIdsString = index.getSceneGeneralizationIds();
+                final List<String> sceneNaturalIds = CollectionUtil.sequenceStringToList(sceneNaturalIdsString, ",");
+                final List<String> sceneTrafficIds = CollectionUtil.sequenceStringToList(sceneTrafficIdsString, ",");
+                final List<String> sceneStatueIds = CollectionUtil.sequenceStringToList(sceneStatueIdsString, ",");
+                final List<String> sceneGeneralizationIds = CollectionUtil.sequenceStringToList(sceneGeneralizationIdsString, ",");
+                final Iterator<String> iterator = sceneNaturalIds.iterator();
+                while (iterator.hasNext()) {
+                    final String sceneId = iterator.next();
+                    if (sceneIds.contains(sceneId)) {
+                        iterator.remove();
+                        testPackages.forEach(testPackage -> {
+                            testPackage.setSceneNum(testPackage.getSceneNum() - 1);
+                        });
+                    }
+                }
+                index.setSceneNum(sceneNaturalIds.size() + sceneTrafficIds.size() + sceneStatueIds.size() + sceneGeneralizationIds.size());
+                index.setSceneNaturalIds(CollectionUtil.listToSequence(sceneNaturalIds));
+                index.setModifyTime(TimeUtil.getNowForMysql());
+                index.setModifyUserId(AuthUtil.getCurrentUserId());
+            });
+            //5 更新指标
+            scenePackageSublistMapper.update(indexes);
+            //6 更新包
+            scenePackageMapper.update(testPackages);
+
+            //* -------------------------------- 场景包表 --------------------------------
+            //1 将所有场景包中的该场景删除
+            systemScenePackageSublistMapper.deleteBySceneNames(SystemScenePackageParam.builder()
+                    .sceneNames(sceneNames)
+                    .modifyTime(TimeUtil.getNowForMysql())
+                    .modifyUserId(AuthUtil.getCurrentUserId())
+                    .build());
+        } finally {
+            //* -------------------------------- 日志表 --------------------------------
+            map.put("sceneNames", JsonUtil.listToJson(sceneNames));
+            map.put("type", DictConstants.SCENE_NATURAL);
+            logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
+        }
     }
 
     public Integer querySceneNumBySy() {
@@ -583,7 +620,7 @@ public class SceneNaturalService {
                             if (update) {
                                 // -------------------------------- 修改数据到 mysql --------------------------------
                                 updateNumber++;
-                                if(api.common.util.StringUtil.isEmpty(sceneNaturalPO.getShare())){
+                                if (api.common.util.StringUtil.isEmpty(sceneNaturalPO.getShare())) {
                                     sceneNaturalPO.setShare(DictConstants.IS_NOT_SHARED);
                                 }
                                 scenes.forEach(scene -> {

+ 96 - 62
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/scene/SceneStandardsService.java

@@ -4,21 +4,18 @@ import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.constants.LogConstants;
 import api.common.pojo.param.MinioParameter;
-import api.common.pojo.param.scene.SceneDeleteParam;
-import api.common.pojo.param.scene.SceneImportParam;
-import api.common.pojo.param.scene.StandardsRegulationsParam;
+import api.common.pojo.param.scene.*;
+import api.common.pojo.po.scene.ScenePackagePO;
+import api.common.pojo.po.scene.ScenePackageSublistPO;
 import api.common.pojo.po.scene.StandardsRegulationsPO;
 import api.common.pojo.po.system.SceneImportPO;
-import api.common.util.CollectionUtil;
-import api.common.util.ObjectUtil;
-import api.common.util.StringUtil;
-import api.common.util.TimeUtil;
+import api.common.util.*;
 import com.css.simulation.resource.common.utils.AuthUtil;
 import com.css.simulation.resource.feign.FileDownService;
 import com.css.simulation.resource.log.service.LogService;
 import com.css.simulation.resource.scene.mapper.ScenePackageMapper;
 import com.css.simulation.resource.scene.mapper.ScenePackageSublistMapper;
-import com.css.simulation.resource.scene.mapper.StandardsRegulationsMapper;
+import com.css.simulation.resource.scene.mapper.SceneStandardsRegulationsMapper;
 import com.css.simulation.resource.system.mapper.SystemScenePackageSublistMapper;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -26,19 +23,18 @@ import feign.Response;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
 public class SceneStandardsService {
 
     @Resource
-    private StandardsRegulationsMapper standardsRegulationsMapper;
+    private SceneStandardsRegulationsMapper sceneStandardsRegulationsMapper;
     @Resource
     private ScenePackageSublistMapper scenePackageSublistMapper;
     @Resource
@@ -67,7 +63,7 @@ public class SceneStandardsService {
         StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
         standardsRegulationsPO.setShare("0");
         standardsRegulationsPO.setSceneName(sceneName);
-        StandardsRegulationsPO PoByName = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
+        StandardsRegulationsPO PoByName = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
 
 
         standardsRegulationsPO = standardsRegulationsPO.builder()
@@ -102,7 +98,7 @@ public class SceneStandardsService {
             standardsRegulationsPO.setCreateTime(TimeUtil.getNowForMysql());
             standardsRegulationsPO.setModifyTime(TimeUtil.getNowForMysql());
             standardsRegulationsPO.setCreateUserId(AuthUtil.getCurrentUserId());
-            standardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPO);
+            sceneStandardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPO);
 
             // return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景名称" + sceneName + "已存在,请检查");
         } else {
@@ -110,7 +106,7 @@ public class SceneStandardsService {
             standardsRegulationsPO.setRegulationsId(standardsRegulationsPO.getRegulationsId());
             standardsRegulationsPO.setModifyTime(TimeUtil.getNowForMysql());
             standardsRegulationsPO.setModifyUserId(AuthUtil.getCurrentUserId());
-            standardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPO);
+            sceneStandardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPO);
         }
         return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
     }
@@ -125,24 +121,24 @@ public class SceneStandardsService {
         log.info("标准法规------" + roleCode);
         String userId = AuthUtil.getCurrentUserId();
         if (DictConstants.ROLE_CODE_ADMIN.equals(roleCode) || DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)) { //管理员账户
-            list = standardsRegulationsMapper.queryStandardsRegulationsList(params);
+            list = sceneStandardsRegulationsMapper.queryStandardsRegulationsList(params);
             log.info("标准法规---list---" + list.size() + "----------" + params);
         } else if (DictConstants.ROLE_CODE_SUBUESR.equals(roleCode)) {
             //查询父账户
             userId = AuthUtil.getCreateUserId();
             params.setUserId(userId);
             if (params.getShare().equals("0")) {
-                list = standardsRegulationsMapper.queryStandardsRegulationsList(params);
+                list = sceneStandardsRegulationsMapper.queryStandardsRegulationsList(params);
             } else {
-                list = standardsRegulationsMapper.queryStandardsRegulationsListByQx(params);
+                list = sceneStandardsRegulationsMapper.queryStandardsRegulationsListByQx(params);
             }
         } else if (DictConstants.ROLE_CODE_UESR.equals(roleCode)) {
             //查询普通账户
             params.setUserId(userId);
             if (params.getShare().equals("0")) {
-                list = standardsRegulationsMapper.queryStandardsRegulationsList(params);
+                list = sceneStandardsRegulationsMapper.queryStandardsRegulationsList(params);
             } else {
-                list = standardsRegulationsMapper.queryStandardsRegulationsListByQx(params);
+                list = sceneStandardsRegulationsMapper.queryStandardsRegulationsListByQx(params);
             }
         }
        /* if(params.getLabel()!=null&&params.getLabel().size()>0){
@@ -169,43 +165,81 @@ public class SceneStandardsService {
         return list;
     }
 
-    public void batchDeleteSceneStandards(List<String> sceneNameList) {
-        for (String sceneName : sceneNameList) {
-            StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
-            standardsRegulationsPO.setSceneName(sceneName);
-            deleteStandardsRegulations(standardsRegulationsPO);
-        }
+    @Transactional
+    public void batchDeleteSceneStandards(List<String> sceneNames) {
+        deleteStandardsRegulations(sceneNames);
     }
 
-    public void deleteStandardsRegulations(StandardsRegulationsPO params) {
-        //1 获取参数
-        String sceneName = params.getSceneName(); // 场景名称
-        //2 根据场景名称查询出同名的所有场景id,包括公有和私有
-        List<String> sceneIdList = standardsRegulationsMapper.selectIdByName(sceneName);
-        for (String sceneId : sceneIdList) {
-            //5 根据场景id查询场景包id并修改场景数量
-            scenePackageMapper.updateSceneNumAfterDeleteSceneByStandardsId(sceneId);
-            scenePackageSublistMapper.updateSceneNumAfterDeleteSceneByStandardsId(sceneId);
-            //4 将所有包含该场景的场景测试包状态为已禁用
-            scenePackageMapper.updateIsUnavailableByStandardsId("1", sceneId);
-            //3 将所有场景测试包指标中的该场景删除
-            SceneDeleteParam param = new SceneDeleteParam();
-            param.setModifyTime(TimeUtil.getNowForMysql());
-            param.setSceneBzId(sceneId);
-            param.setModifyUserId(AuthUtil.getCurrentUserId());
-            scenePackageSublistMapper.updateScenePackageSublistById(param);
+    @SneakyThrows
+    @Transactional
+    public void deleteStandardsRegulations(List<String> sceneNames) {
+        Map<String, String> map = new HashMap<>();
+        try {
+            //* -------------------------------- 场景表 --------------------------------
+            //1 根据场景名称查询出同名的所有场景id,包括公有和私有
+            List<String> sceneIds = sceneStandardsRegulationsMapper.selectIdsByNames(sceneNames);
+            //2 删除场景数据
+            SceneDeleteParam sceneDeleteParam = SceneDeleteParam.builder()
+                    .sceneNames(sceneNames)
+                    .modifyTime(TimeUtil.getNowForMysql())
+                    .modifyUserId(AuthUtil.getCreateUserId())
+                    .build();
+            sceneStandardsRegulationsMapper.deleteBySceneNames(sceneDeleteParam);
+            //* -------------------------------- 场景测试包指标表 & 场景测试包表 --------------------------------
+            //1 根据自然驾驶场景ID查询场景测试包指标
+            List<ScenePackageSublistPO> indexes = scenePackageSublistMapper.selectBySceneIds(ScenePackageSublistParam.builder()
+                    .sceneIds(sceneIds)
+                    .sceneType(DictConstants.SCENE_STANDARD)
+                    .build());
+            //2 根据指标ID查询场景测试包
+            List<ScenePackagePO> testPackages = scenePackageMapper.selectByIndexIds(ScenePackageParam.builder()
+                    .indexIds(indexes.stream().map(ScenePackageSublistPO::getId).collect(Collectors.toList()))
+                    .build());
+            //3 设置包为已禁用
+            testPackages.forEach(testPackage -> testPackage.setIsUnavailable(DictConstants.IS_UNAVAILABLE));
+            //4 遍历删除场景
+            indexes.forEach(index -> {
+                final String sceneNaturalIdsString = index.getSceneNaturalIds();
+                final String sceneTrafficIdsString = index.getSceneTrafficIds();
+                final String sceneStatueIdsString = index.getSceneStatueIds();
+                final String sceneGeneralizationIdsString = index.getSceneGeneralizationIds();
+                final List<String> sceneNaturalIds = CollectionUtil.sequenceStringToList(sceneNaturalIdsString, ",");
+                final List<String> sceneTrafficIds = CollectionUtil.sequenceStringToList(sceneTrafficIdsString, ",");
+                final List<String> sceneStatueIds = CollectionUtil.sequenceStringToList(sceneStatueIdsString, ",");
+                final List<String> sceneGeneralizationIds = CollectionUtil.sequenceStringToList(sceneGeneralizationIdsString, ",");
+                final Iterator<String> iterator = sceneStatueIds.iterator();
+                while (iterator.hasNext()) {
+                    final String sceneId = iterator.next();
+                    if (sceneIds.contains(sceneId)) {
+                        iterator.remove();
+                        testPackages.forEach(testPackage -> {
+                            testPackage.setSceneNum(testPackage.getSceneNum() - 1);
+                        });
+                    }
+                }
+                index.setSceneNum(sceneNaturalIds.size() + sceneTrafficIds.size() + sceneStatueIds.size() + sceneGeneralizationIds.size());
+                index.setSceneNaturalIds(CollectionUtil.listToSequence(sceneNaturalIds));
+                index.setModifyTime(TimeUtil.getNowForMysql());
+                index.setModifyUserId(AuthUtil.getCurrentUserId());
+            });
+            //5 更新指标
+            scenePackageSublistMapper.update(indexes);
+            //6 更新包
+            scenePackageMapper.update(testPackages);
 
+            //* -------------------------------- 场景包表 --------------------------------
+            //1 将所有场景包中的该场景删除
+            systemScenePackageSublistMapper.deleteBySceneNames(SystemScenePackageParam.builder()
+                    .sceneNames(sceneNames)
+                    .modifyTime(TimeUtil.getNowForMysql())
+                    .modifyUserId(AuthUtil.getCurrentUserId())
+                    .build());
+        } finally {
+            //* -------------------------------- 日志表 --------------------------------
+            map.put("sceneNames", JsonUtil.listToJson(sceneNames));
+            map.put("type", DictConstants.SCENE_STANDARD);
+            logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
         }
-        //5 将所有场景包中的该场景删除
-        systemScenePackageSublistMapper.deleteBySceneName(sceneName);
-        //6 删除所有同名场景(包括公有和私有)
-        standardsRegulationsMapper.deleteByName(sceneName, AuthUtil.getCreateUserId());
-        //7 记录日志
-        Map<String, String> map = new HashMap<>();
-        map.put("sceneId", params.getRegulationsId());
-        map.put("sceneName", params.getSceneName());
-        map.put("type", DictConstants.SCENE_STANDARD);
-        logService.logSceneDelete(LogConstants.SYS_LOG_SCENE_DELETE, map);
     }
 
 
@@ -219,7 +253,7 @@ public class SceneStandardsService {
             //查询父账户
             userId = AuthUtil.getCreateUserId();
         }
-        List<String> list = standardsRegulationsMapper.queryRegulationType(userId);
+        List<String> list = sceneStandardsRegulationsMapper.queryRegulationType(userId);
 
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, list);
 
@@ -289,7 +323,7 @@ public class SceneStandardsService {
                                     standardsRegulationsPO.setShare(null);// 覆盖全部场景,包括share为0、1、2
                                     standardsRegulationsPO.setSceneName(sceneName);
 //                                    StandardsRegulationsPO PoByName = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
-                                    scenes = standardsRegulationsMapper.selectAllByName(standardsRegulationsPO);
+                                    scenes = sceneStandardsRegulationsMapper.selectAllByName(standardsRegulationsPO);
                                     if (CollectionUtil.isEmpty(scenes)) {  // 新增数据
                                         isupdate = "0";
                                     } else {    // 覆盖(更新)数据
@@ -325,7 +359,7 @@ public class SceneStandardsService {
                                 standardsRegulationsPO.setCreateTime(TimeUtil.getNowForMysql());
                                 standardsRegulationsPO.setCreateUserId(AuthUtil.getCurrentUserId());
                                 standardsRegulationsPO.setModifyTime(TimeUtil.getNowForMysql());
-                                standardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPO);
+                                sceneStandardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPO);
 
                             } else if (isupdate.equals("1")) {
                                 // -------------------------------- 修改数据到 mysql --------------------------------
@@ -336,7 +370,7 @@ public class SceneStandardsService {
                                     standardsRegulationsPO.setRegulationsId(scene.getRegulationsId());
                                     standardsRegulationsPO.setModifyTime(TimeUtil.getNowForMysql());
                                     standardsRegulationsPO.setModifyUserId(AuthUtil.getCurrentUserId());
-                                    standardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPO);
+                                    sceneStandardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPO);
                                 });
                             }
                             successNum = successNum + 1;
@@ -365,9 +399,9 @@ public class SceneStandardsService {
      * 获取标准法规场景数据:
      */
     public void instStandardsRegulation(StandardsRegulationsPO po) {
-        StandardsRegulationsPO syPo = standardsRegulationsMapper.queryStandardsRegulationsById(po.getRegulationsId());
+        StandardsRegulationsPO syPo = sceneStandardsRegulationsMapper.queryStandardsRegulationsById(po.getRegulationsId());
         syPo.setShare("1");
-        StandardsRegulationsPO PoByName = standardsRegulationsMapper.queryStandardsRegulationsByName(syPo);
+        StandardsRegulationsPO PoByName = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(syPo);
         if (ObjectUtil.isNull(PoByName)) {
             // -------------------------------- 保存数据到 mysql --------------------------------
             syPo.setCreateTime(TimeUtil.getNowForMysql());
@@ -375,13 +409,13 @@ public class SceneStandardsService {
             syPo.setModifyTime(TimeUtil.getNowForMysql());
             syPo.setModifyUserId("");
             syPo.setRegulationsId(api.common.util.StringUtil.getRandomUUID());
-            standardsRegulationsMapper.saveStandardsRegulations(syPo);
+            sceneStandardsRegulationsMapper.saveStandardsRegulations(syPo);
         } else {
             // -------------------------------- 修改数据到 mysql --------------------------------
             syPo.setModifyTime(TimeUtil.getNowForMysql());
             syPo.setModifyUserId(AuthUtil.getCurrentUserId());
             syPo.setRegulationsId(PoByName.getRegulationsId());
-            standardsRegulationsMapper.updateStandardsRegulations(syPo);
+            sceneStandardsRegulationsMapper.updateStandardsRegulations(syPo);
         }
 
     }

+ 5 - 7
simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/SystemScenePackageSublistMapper.java

@@ -1,9 +1,8 @@
 package com.css.simulation.resource.system.mapper;
 
+import api.common.pojo.param.scene.SystemScenePackageParam;
 import api.common.pojo.po.scene.SystemScenePackageSublistPO;
 import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -22,9 +21,8 @@ public interface SystemScenePackageSublistMapper {
 
     void deleteSystemScenePackageSublistBySC(SystemScenePackageSublistPO po);
 
-    @Update("update system_scene_package_sublist\n" +
-            "set is_deleted  = '1',\n" +
-            "    modify_time = now()\n" +
-            "where scene_name = #{sceneName}")
-    void deleteBySceneName(@Param("sceneName") String sceneName);
+
+    void deleteBySceneNames(SystemScenePackageParam systemScenePackageParam);
+
+
 }

+ 8 - 26
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/SceneImportService.java

@@ -3,11 +3,9 @@ package com.css.simulation.resource.system.service;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.constants.LogConstants;
 import api.common.pojo.param.system.SceneImportPageParam;
-import api.common.pojo.po.scene.SceneAccidentPO;
 import api.common.pojo.po.scene.SceneGeneralTemplatePO;
-import api.common.pojo.po.scene.SceneNaturalPO;
-import api.common.pojo.po.scene.StandardsRegulationsPO;
 import api.common.pojo.po.system.SceneImportPO;
+import api.common.util.CollectionUtil;
 import api.common.util.ObjectUtil;
 import api.common.util.StringUtil;
 import api.common.util.TimeUtil;
@@ -114,37 +112,21 @@ public class SceneImportService {
         sceneImportPO.setModifyUserId(AuthUtil.getCreateUserId());
         // 获取各个参数
         String sceneType = sceneImportPO.getSceneType();    // 场景类型
-        String sceneNames = sceneImportPO.getSceneNames(); // 场景名称
+        String sceneNameSequenceString = sceneImportPO.getSceneNames(); // 场景名称
         sceneImportMapper.deleteImportTask(sceneImportPO);
-        if (StringUtil.isNotEmpty(sceneNames)) {
-            String[] sceneNameArray = sceneNames.split(",");
-            sceneImportMapper.deleteImportTask(sceneImportPO);
+        if (StringUtil.isNotEmpty(sceneNameSequenceString)) {
+             List<String> sceneNames = CollectionUtil.sequenceStringToList(sceneNameSequenceString, ",");
             //2 根据任务id删除相关联的所有同名任务
             if (DictConstants.SCENE_NATURAL.equals(sceneType)) {
-                sceneImportMapper.deleteNaturalByTaskId(sceneImportPO);
-                SceneNaturalPO sceneNaturalPO = new SceneNaturalPO();
-                for (String sceneName : sceneNameArray) {
-                    sceneNaturalPO.setNaturalName(sceneName);
-                    sceneNaturalService.deleteSceneNatural(sceneNaturalPO);
-                }
+                sceneNaturalService.deleteSceneNatural(sceneNames);
             } else if (DictConstants.SCENE_STANDARD.equals(sceneType)) {
+                sceneStandardsService.deleteStandardsRegulations(sceneNames);
                 sceneImportMapper.deleteStandardsByTaskId(sceneImportPO);
-                StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
-                for (String sceneName : sceneNameArray) {
-                    standardsRegulationsPO.setSceneName(sceneName);
-                    sceneStandardsService.deleteStandardsRegulations(standardsRegulationsPO);
-                }
             } else if (DictConstants.SCENE_ACCIDENT.equals(sceneType)) {
-                sceneImportMapper.deleteAccidentByTaskId(sceneImportPO);
-                SceneAccidentPO sceneAccidentPO = new SceneAccidentPO();
-                for (String id : sceneNameArray) {
-                    sceneAccidentPO.setSceneName(id);
-                    sceneAccidentService.deleteSceneAccidentList(sceneAccidentPO);
-                }
+                sceneAccidentService.deleteSceneAccidentList(sceneNames);
             } else if (DictConstants.SCENE_GENERAL.equals(sceneType)) {
-//            sceneImportMapper.deleteNaturalByTaskId(sceneImportPO);
                 SceneGeneralTemplatePO po = new SceneGeneralTemplatePO();
-                for (String id : sceneNameArray) {
+                for (String id : sceneNames) {
                     po.setSceneId(id);
                     sceneGeneralTemplateService.deleteSceneGeneralTemplateById(po);
                 }

+ 9 - 9
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/SystemScenePackageService.java

@@ -49,7 +49,7 @@ public class SystemScenePackageService {
     @Resource
     SceneNaturalMapper sceneNaturalMapper;
     @Resource
-    StandardsRegulationsMapper standardsRegulationsMapper;
+    SceneStandardsRegulationsMapper sceneStandardsRegulationsMapper;
 
     /**
      * 场景包录入
@@ -277,9 +277,9 @@ public class SystemScenePackageService {
                 StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
                 standardsRegulationsPO.setSceneName(id);
                 standardsRegulationsPO.setShare("0");
-                StandardsRegulationsPO standardsRegulationsPOSy = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
+                StandardsRegulationsPO standardsRegulationsPOSy = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
                 standardsRegulationsPOSy.setShare("2");
-                StandardsRegulationsPO StandardsRegulationsByName = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPOSy);
+                StandardsRegulationsPO StandardsRegulationsByName = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPOSy);
                 // standardsRegulationsPOSy.setShare("1");
                 //是否已存在
                 if (ObjectUtil.isNotNull(StandardsRegulationsByName)) {
@@ -287,14 +287,14 @@ public class SystemScenePackageService {
                     standardsRegulationsPOSy.setModifyTime(TimeUtil.getNowForMysql());
                     standardsRegulationsPOSy.setModifyUserId(AuthUtil.getCurrentUserId());
                     standardsRegulationsPOSy.setShare(StandardsRegulationsByName.getShare());
-                    standardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPOSy);
+                    sceneStandardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPOSy);
                 } else {
                     standardsRegulationsPOSy.setRegulationsId(StringUtil.getRandomUUID());
                     standardsRegulationsPOSy.setCreateTime(TimeUtil.getNowForMysql());
                     standardsRegulationsPOSy.setCreateUserId(AuthUtil.getCurrentUserId());
                     standardsRegulationsPOSy.setModifyTime(TimeUtil.getNowForMysql());
                     standardsRegulationsPOSy.setModifyUserId("");
-                    standardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPOSy);
+                    sceneStandardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPOSy);
                 }
 
 
@@ -640,9 +640,9 @@ public class SystemScenePackageService {
                 StandardsRegulationsPO standardsRegulationsPO = new StandardsRegulationsPO();
                 standardsRegulationsPO.setSceneName(bzSceneName);
                 standardsRegulationsPO.setShare("0");
-                StandardsRegulationsPO standardsRegulationsPOSy = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
+                StandardsRegulationsPO standardsRegulationsPOSy = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPO);
                 standardsRegulationsPOSy.setShare("2");
-                StandardsRegulationsPO StandardsRegulationsByName = standardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPOSy);
+                StandardsRegulationsPO StandardsRegulationsByName = sceneStandardsRegulationsMapper.queryStandardsRegulationsByName(standardsRegulationsPOSy);
                 //  standardsRegulationsPOSy.setShare("1");
                 //是否已存在
                 if (ObjectUtil.isNotNull(StandardsRegulationsByName)) {
@@ -650,14 +650,14 @@ public class SystemScenePackageService {
                     standardsRegulationsPOSy.setModifyTime(TimeUtil.getNowForMysql());
                     standardsRegulationsPOSy.setModifyUserId(AuthUtil.getCurrentUserId());
                     standardsRegulationsPOSy.setShare(StandardsRegulationsByName.getShare());
-                    standardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPOSy);
+                    sceneStandardsRegulationsMapper.updateStandardsRegulations(standardsRegulationsPOSy);
                 } else {
                     standardsRegulationsPOSy.setRegulationsId(StringUtil.getRandomUUID());
                     standardsRegulationsPOSy.setCreateTime(TimeUtil.getNowForMysql());
                     standardsRegulationsPOSy.setCreateUserId(AuthUtil.getCurrentUserId());
                     standardsRegulationsPOSy.setModifyTime(TimeUtil.getNowForMysql());
                     standardsRegulationsPOSy.setModifyUserId("");
-                    standardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPOSy);
+                    sceneStandardsRegulationsMapper.saveStandardsRegulations(standardsRegulationsPOSy);
                 }
 
 

+ 19 - 0
simulation-resource-server/src/main/resources/mapper/scene/SceneAccidentMapper.xml

@@ -44,6 +44,16 @@
             #{item.xodrAddress,jdbcType=VARCHAR},#{item.jsonAddress,jdbcType=VARCHAR},#{item.maxTime,jdbcType=VARCHAR})
         </foreach>
     </insert>
+    <update id="deleteBySceneNames">
+        update scene_accident
+        set is_deleted = '1',
+        modify_user_id = #{modifyUserId},
+        modify_time = #{modifyTime}
+        where is_deleted = '0' and scene_name in
+        <foreach item="item" collection="sceneNames" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
 
 
     <select id="querySceneAccidentList" parameterType="api.common.pojo.param.scene.SceneAccidentParam"
@@ -510,6 +520,15 @@
         from simulation.scene_accident
         where accident_id = #{id}
     </select>
+    <select id="selectIdsByNames" resultType="java.lang.String">
+        select accident_id
+        from scene_accident
+        where is_deleted = '0'
+        and scene_name in
+        <foreach item="item" collection="list" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 
 
 </mapper>

+ 19 - 0
simulation-resource-server/src/main/resources/mapper/scene/SceneNaturalMapper.xml

@@ -86,6 +86,16 @@
             #{item.xoscAddress,jdbcType=VARCHAR},#{item.jsonAddress,jdbcType=VARCHAR},#{item.maxTime,jdbcType=VARCHAR})
         </foreach>
     </insert>
+    <update id="deleteBySceneNames">
+        update scene_natural
+        set is_deleted = '1',
+        modify_user_id = #{modifyUserId},
+        modify_time = #{modifyTime}
+        where is_deleted = '0' and natural_name in
+        <foreach item="item" collection="sceneNames" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
 
 
     <select id="querySceneNaturalList" parameterType="api.common.pojo.param.scene.SceneNaturalParam"
@@ -2765,5 +2775,14 @@
         from scene_natural
         where natural_id = #{id}
     </select>
+    <select id="selectIdsByNames" resultType="java.lang.String">
+        select natural_id
+        from scene_natural
+        where is_deleted = '0'
+        and natural_name in
+        <foreach item="item" collection="list" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 
 </mapper>

+ 20 - 0
simulation-resource-server/src/main/resources/mapper/scene/ScenePackageMapper.xml

@@ -212,6 +212,18 @@
             </if>
         </where>
     </select>
+    <select id="selectByIndexIds" resultType="api.common.pojo.po.scene.ScenePackagePO">
+        select package_id, scene_num
+        from scene_package
+        where package_id in (
+        select root_id
+        from scene_package_sublist
+        where sublist_id in
+        <foreach item="item" collection="indexIds" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        )
+    </select>
     <update id="updateIsUnavailable" parameterType="api.common.pojo.po.scene.ScenePackagePO">
         update simulation.scene_package
         set is_unavailable = #{isUnavailable},
@@ -244,4 +256,12 @@
             modify_time    = #{modifyTime}
         where package_id in (select distinct root_id from scene_package_sublist where package_and_rules = #{rulesId})
     </update>
+    <update id="update" parameterType="java.util.List">
+        <foreach collection="packages" item="item" index="index" open="" close="" separator=";">
+            update scene_package
+            set scene_num = #{item.sceneNum},
+            is_unavailable = #{item.isUnavailable}
+            where package_id = #{item.packageId}
+        </foreach>
+    </update>
 </mapper>

+ 59 - 34
simulation-resource-server/src/main/resources/mapper/scene/ScenePackageSublistMapper.xml

@@ -4,19 +4,20 @@
 
     <insert id="saveScenePackageSublist" parameterType="api.common.pojo.po.scene.ScenePackageSublistPO">
         insert into simulation.scene_package_sublist
-        (sublist_id,sublist_name,weight,rule_name,package_and_rules,
-        scene_natural_ids,scene_traffic_ids,scene_statue_ids,scene_generalization_ids,
-        scene_num,parent_id,root_id,seq,package_level,remarks,
-        create_user_id,create_time,modify_user_id,modify_time,
-         is_deleted,share,tree_node,template_id,example_id,rule_name_array)
-        values (#{id,jdbcType=VARCHAR},#{sublistName,jdbcType=VARCHAR},#{weight,jdbcType=VARCHAR},#{ruleName,jdbcType=VARCHAR},
-        #{packageAndRules,jdbcType=VARCHAR},
-        #{sceneNaturalIds}, #{sceneTrafficIds}, #{sceneStatueIds}, #{sceneGeneralizationIds},
-        #{sceneNum},#{parentId,jdbcType=VARCHAR},#{rootId,jdbcType=VARCHAR},#{seq},
-         #{packageLevel},#{remarks},
-         #{createUserId,jdbcType=VARCHAR},#{createTime},#{modifyUserId,jdbcType=VARCHAR},#{modifyTime},
-        #{isDeleted,jdbcType=VARCHAR}, #{share,jdbcType=VARCHAR}, #{treeNode,jdbcType=VARCHAR},
-        #{templateId,jdbcType=VARCHAR},#{exampleId,jdbcType=VARCHAR},#{ruleNameArray,jdbcType=VARCHAR})
+        (sublist_id, sublist_name, weight, rule_name, package_and_rules,
+         scene_natural_ids, scene_traffic_ids, scene_statue_ids, scene_generalization_ids,
+         scene_num, parent_id, root_id, seq, package_level, remarks,
+         create_user_id, create_time, modify_user_id, modify_time,
+         is_deleted, share, tree_node, template_id, example_id, rule_name_array)
+        values (#{id,jdbcType=VARCHAR}, #{sublistName,jdbcType=VARCHAR}, #{weight,jdbcType=VARCHAR},
+                #{ruleName,jdbcType=VARCHAR},
+                #{packageAndRules,jdbcType=VARCHAR},
+                #{sceneNaturalIds}, #{sceneTrafficIds}, #{sceneStatueIds}, #{sceneGeneralizationIds},
+                #{sceneNum}, #{parentId,jdbcType=VARCHAR}, #{rootId,jdbcType=VARCHAR}, #{seq},
+                #{packageLevel}, #{remarks},
+                #{createUserId,jdbcType=VARCHAR}, #{createTime}, #{modifyUserId,jdbcType=VARCHAR}, #{modifyTime},
+                #{isDeleted,jdbcType=VARCHAR}, #{share,jdbcType=VARCHAR}, #{treeNode,jdbcType=VARCHAR},
+                #{templateId,jdbcType=VARCHAR}, #{exampleId,jdbcType=VARCHAR}, #{ruleNameArray,jdbcType=VARCHAR})
     </insert>
 
 
@@ -36,7 +37,7 @@
             #{item.packageLevel},#{item.remarks},
             #{item.createUserId,jdbcType=VARCHAR},#{item.createTime},#{item.modifyUserId,jdbcType=VARCHAR},#{item.modifyTime},
             #{item.isDeleted,jdbcType=VARCHAR}, #{item.share,jdbcType=VARCHAR}, #{item.treeNode,jdbcType=VARCHAR},
-             #{item.templateId,jdbcType=VARCHAR},#{item.exampleId,jdbcType=VARCHAR},#{item.ruleNameArray,jdbcType=VARCHAR})
+            #{item.templateId,jdbcType=VARCHAR},#{item.exampleId,jdbcType=VARCHAR},#{item.ruleNameArray,jdbcType=VARCHAR})
         </foreach>
     </insert>
 
@@ -82,7 +83,9 @@
         where root_id = #{rootId,jdbcType=VARCHAR}
     </update>
     <delete id="deleteScenePackageSublistById" parameterType="java.lang.String">
-    delete from simulation.scene_package_sublist  where sublist_id = #{sublistId,jdbcType=VARCHAR}
+        delete
+        from simulation.scene_package_sublist
+        where sublist_id = #{sublistId,jdbcType=VARCHAR}
     </delete>
     <select id="queryBySublistName" parameterType="api.common.pojo.po.scene.ScenePackageSublistPO"
             resultType="api.common.pojo.vo.scene.ScenePackageSublistVO">
@@ -114,15 +117,6 @@
     <update id="updateScenePackageSublistById" parameterType="api.common.pojo.param.scene.SceneDeleteParam">
         update simulation.scene_package_sublist
         <set>
-            <if test="sceneZrId != null and sceneZrId!=''">
-                scene_natural_ids=  replace(replace(replace(scene_natural_ids, concat(#{sceneZrId}, ','), ''), concat(',', #{sceneZrId}), ''),#{sceneZrId}, ''),
-            </if>
-            <if test="sceneJtId != null and sceneJtId!=''">
-                scene_traffic_ids= replace(replace(replace(scene_traffic_ids, concat(#{sceneJtId}, ','), ''), concat(',', #{sceneJtId}), ''),#{sceneJtId}, ''),
-            </if>
-            <if test="sceneBzId != null and sceneBzId!=''">
-                scene_statue_ids=replace(replace(replace(scene_statue_ids, concat(#{sceneBzId}, ','), ''), concat(',', #{sceneBzId}), ''),#{sceneBzId}, ''),
-            </if>
             <if test="sceneFhId != null and sceneFhId!=''">
                 scene_generalization_ids='',
                 scene_num='0',
@@ -139,19 +133,30 @@
         where
         is_deleted='0'
         <if test="sceneZrId != null and sceneZrId != ''">
-            and scene_natural_ids  like CONCAT('%',#{sceneZrId,jdbcType=VARCHAR},'%')
+            and scene_natural_ids like CONCAT('%',#{sceneZrId,jdbcType=VARCHAR},'%')
         </if>
         <if test="sceneJtId != null and sceneJtId != ''">
-            and scene_traffic_ids  like CONCAT('%',#{sceneJtId,jdbcType=VARCHAR},'%')
+            and scene_traffic_ids like CONCAT('%',#{sceneJtId,jdbcType=VARCHAR},'%')
         </if>
         <if test="sceneBzId != null and sceneBzId != ''">
-            and scene_statue_ids  like CONCAT('%',#{sceneBzId,jdbcType=VARCHAR},'%')
+            and scene_statue_ids like CONCAT('%',#{sceneBzId,jdbcType=VARCHAR},'%')
         </if>
 
         <if test="sceneFhId != null and sceneFhId != ''">
             and template_id =#{sceneFhId}
         </if>
     </update>
+    <update id="update" parameterType="java.util.List">
+        <foreach collection="indexes" item="item" index="index" open="" close="" separator=";">
+            update scene_package_sublist
+            set scene_natural_ids = #{item.sceneNaturalIds},
+            scene_traffic_ids = #{item.sceneTrafficIds},
+            scene_statue_ids = #{item.sceneStatueIds},
+            scene_generalization_ids = #{item.sceneGeneralizationIds},
+            scene_num = #{item.sceneNum}
+            where sublist_id = #{item.sublistId}
+        </foreach>
+    </update>
 
 
     <select id="selectPackageIdById" parameterType="api.common.pojo.param.scene.SceneDeleteParam"
@@ -161,25 +166,45 @@
         <where>
             is_deleted = '0'
             <if test="sceneZrId != null and sceneZrId != ''">
-                and scene_natural_ids  like CONCAT('%',#{sceneZrId,jdbcType=VARCHAR},'%')
+                and scene_natural_ids like CONCAT('%',#{sceneZrId,jdbcType=VARCHAR},'%')
             </if>
             <if test="sceneJtId != null and sceneJtId != ''">
-                and scene_traffic_ids  like CONCAT('%',#{sceneJtId,jdbcType=VARCHAR},'%')
+                and scene_traffic_ids like CONCAT('%',#{sceneJtId,jdbcType=VARCHAR},'%')
             </if>
             <if test="sceneBzId != null and sceneBzId != ''">
-                and scene_statue_ids  like CONCAT('%',#{sceneBzId,jdbcType=VARCHAR},'%')
+                and scene_statue_ids like CONCAT('%',#{sceneBzId,jdbcType=VARCHAR},'%')
             </if>
             <if test="sceneFhId != null and sceneFhId != ''">
-                and scene_generalization_ids  like CONCAT('%',#{sceneFhId,jdbcType=VARCHAR},'%')
+                and scene_generalization_ids like CONCAT('%',#{sceneFhId,jdbcType=VARCHAR},'%')
             </if>
         </where>
     </select>
     <select id="selectPackageFhById" parameterType="api.common.pojo.param.scene.SceneDeleteParam"
             resultType="api.common.pojo.po.scene.ScenePackageSublistPO">
-        select root_id,scene_num,sublist_id
+        select root_id, scene_num, sublist_id
         from simulation.scene_package_sublist
         where is_deleted = '0'
-                and template_id =#{sceneFhId}
+          and template_id = #{sceneFhId}
 
     </select>
-</mapper>
+    <select id="selectBySceneIds" resultType="api.common.pojo.po.scene.ScenePackageSublistPO">
+        select sublist_id, scene_natural_ids, scene_traffic_ids, scene_statue_ids, scene_generalization_ids
+        from scene_package_sublist
+        where is_deleted = '0'
+        <if test="sceneType = '1'">
+            <foreach item="item" collection="sceneIds" separator="," open="(" close=")">
+                and scene_natural_ids like concat('%',#{item},'%')
+            </foreach>
+        </if>
+        <if test="sceneType = '2'">
+            <foreach item="item" collection="sceneIds" separator="," open="(" close=")">
+                and scene_statue_ids like concat('%',#{item},'%')
+            </foreach>
+        </if>
+        <if test="sceneType = '3'">
+            <foreach item="item" collection="sceneIds" separator="," open="(" close=")">
+                and scene_traffic_ids like concat('%',#{item},'%')
+            </foreach>
+        </if>
+    </select>
+</mapper>

+ 21 - 2
simulation-resource-server/src/main/resources/mapper/scene/StandardsRegulationsMapper.xml → simulation-resource-server/src/main/resources/mapper/scene/SceneStandardsRegulationsMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.css.simulation.resource.scene.mapper.StandardsRegulationsMapper">
+<mapper namespace="com.css.simulation.resource.scene.mapper.SceneStandardsRegulationsMapper">
 
 
     <insert id="saveStandardsRegulations" parameterType="api.common.pojo.po.scene.StandardsRegulationsPO">
@@ -36,7 +36,17 @@
             #{item.xodrAddress,jdbcType=VARCHAR},#{item.jsonAddress,jdbcType=VARCHAR},#{item.maxTime,jdbcType=VARCHAR})
         </foreach>
     </insert>
-
+    <update id="deleteBySceneNames">
+        update scene_standards_regulations
+        set is_deleted     = '1',
+        modify_user_id = #{modifyUserId},
+        modify_time = #{modifyTime}
+        where is_deleted = '0'
+        and scene_name in
+        <foreach item="item" collection="sceneNames" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
 
     <select id="queryStandardsRegulationsList" parameterType="api.common.pojo.param.scene.StandardsRegulationsParam"
             resultType="api.common.pojo.po.scene.StandardsRegulationsPO">
@@ -317,4 +327,13 @@
      where regulations_id=#{id}
     </select>
     <select id="queryRegulationType" resultType="java.lang.String"></select>
+    <select id="selectIdsByNames" resultType="java.lang.String">
+        select regulations_id
+        from scene_standards_regulations
+        where is_deleted = '0'
+        and scene_name in
+        <foreach item="item" collection="list" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 5 - 5
simulation-resource-server/src/main/resources/mapper/system/SceneImportMapper.xml

@@ -107,10 +107,10 @@
 
 
     <update id="deleteImportTask" parameterType="api.common.pojo.po.system.SceneImportPO">
-        update scene_import_task set
-           is_deleted = '1',
-          modify_time = #{modifyTime,jdbcType=TIMESTAMP},
-          modify_user_id = #{modifyUserId,jdbcType=VARCHAR}
-        where is_deleted = '0' and id = #{id,jdbcType=VARCHAR}
+        update scene_import_task
+        set is_deleted     = '1',
+            modify_time    = #{modifyTimeP},
+            modify_user_id = #{modifyUserId}
+        where id = #{id,jdbcType=VARCHAR}
     </update>
 </mapper>

+ 11 - 1
simulation-resource-server/src/main/resources/mapper/system/SystemScenePackageSublistMapper.xml

@@ -12,7 +12,16 @@
         #{item.createUserId,jdbcType=VARCHAR},#{item.createTime},#{item.modifyUserId,jdbcType=VARCHAR},#{item.modifyTime},#{item.isDeleted,jdbcType=VARCHAR})
     </foreach>
     </insert>
-
+    <update id="deleteBySceneNames">
+        update system_scene_package_sublist
+        set is_deleted  = '1',
+            modify_time = #{modifyTime},
+            modify_user_id = #{modifyUserId}
+        where scene_name in
+        <foreach item="item" collection="sceneNames" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
 
 
     <select id="querySceneNaturalList" parameterType="api.common.pojo.po.scene.SystemScenePackageSublistPO"
@@ -76,4 +85,5 @@
          modify_time = #{modifyTime}
         where is_deleted='0' and scene_name=#{sceneName}
     </update>
+
 </mapper>