Jelajahi Sumber

Merge branch '20240309-saq-fix' of https://gitee.com/lingxinmeng/simulation-cloud into lcytest

李春阳 1 tahun lalu
induk
melakukan
0fd8b71c5a

+ 7 - 0
api-common/src/main/java/api/common/pojo/param/project/MultiSimulationSceneParam.java

@@ -3,6 +3,8 @@ package api.common.pojo.param.project;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 @Getter
 @Setter
 public class MultiSimulationSceneParam {
@@ -18,5 +20,10 @@ public class MultiSimulationSceneParam {
 
     private String sceneId;
 
+    /**
+     * 复制场景时使用
+     */
+    private List<String> sceneIdList;
+
 
 }

+ 3 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/domain/service/ProjectDomainService.java

@@ -250,6 +250,9 @@ public class ProjectDomainService {
                 cameraVehicleId = i + 1;
             }
         }
+        if (cameraVehicleId == 0){
+            cameraVehicleId = -1;
+        }
         podString = podString.replace("camera-vehicle-id", "\"" + cameraVehicleId + "\"");
 
         StringBuffer stringBuffer = new StringBuffer();

+ 2 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/server/adapter/controller/job_manage/JobManageController.java

@@ -406,11 +406,11 @@ public class JobManageController {
   }
 
   /**
-   * 另存为
+   * 复制场景
    */
   @RequestMapping("/copyMultiSimulationScene")
   public ResponseBodyVO<MultiSimulationSceneVO> copyMultiSimulationScene(@RequestBody MultiSimulationSceneParam param) {
-    return multiSimulationProjectService.copyMultiSimulationScene(param);
+    return multiSimulationProjectService.copyMoreMultiSimulationScene(param);
   }
 
   @RequestMapping("/viewMultiSimulationProjectResult")

+ 49 - 13
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/impl/MultiSimulationProjectServiceImpl.java

@@ -381,10 +381,10 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
 //        PageHelper.clearPage();
         if (!CollectionUtils.isEmpty(multiSimulationSceneVOS)) {
             for (MultiSimulationSceneVO scene : multiSimulationSceneVOS) {
-                String sceneId = scene.getSceneId();
-                int i = sceneCarMapper.selectSceneCarNumsBySceneId(sceneId);
-                scene.setCarNums(i);
+                String sceneId = scene.getId();
                 String mapId = scene.getMapId();
+                int i = sceneCarMapper.selectSceneCarNumsBySceneIdAndMapId(sceneId, mapId);
+                scene.setCarNums(i);
                 if (StringUtils.isBlank(mapId)) {
                     continue;
                 }
@@ -663,7 +663,7 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
                 List<MultiSimulationSceneCarVO> multiSimulationSceneCarVOS = sceneCarMapper.selectSceneCarList(multiSimulationSceneCarParam);
                 if (!CollectionUtils.isEmpty(multiSimulationSceneCarVOS)) {
                     for (MultiSimulationSceneCarVO car : multiSimulationSceneCarVOS) {
-                        MultiSimulationSceneCarParam carParam = buildSceneCarParam(car, id);
+                        MultiSimulationSceneCarParam carParam = buildSceneCarParamAll(car, id);
                         int add = sceneCarMapper.addMultiSimulationSceneCar(carParam);
                         if (add <= 0) {
                             throw new RuntimeException("新增车辆信息失败");
@@ -677,22 +677,42 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         return multiSimulationProjectVOResponseBodyVO;
     }
 
+    @Transactional
+    public ResponseBodyVO<MultiSimulationSceneVO> copyMoreMultiSimulationScene(MultiSimulationSceneParam param) {
+        List<String> sceneIdList = param.getSceneIdList();
+        if (CollectionUtils.isEmpty(sceneIdList)){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "参数异常");
+        }
+        for (String sceneId: sceneIdList) {
+            MultiSimulationSceneParam sceneParam = new MultiSimulationSceneParam();
+            sceneParam.setSceneId(sceneId);
+            ResponseBodyVO<MultiSimulationSceneVO> multiSimulationSceneVOResponseBodyVO = copyMultiSimulationScene(sceneParam);
+            if (!multiSimulationSceneVOResponseBodyVO.isStatus()){
+                throw new RuntimeException(multiSimulationSceneVOResponseBodyVO.getMessage());
+            }
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+    }
+
     public ResponseBodyVO<MultiSimulationSceneVO> copyMultiSimulationScene(MultiSimulationSceneParam param) {
         if (StringUtils.isBlank(param.getSceneId())) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "参数异常");
         }
         MultiSimulationSceneVO sceneVO = simulationSceneMapper.selectSceneDetailBySceneId(param.getSceneId());
-        ResponseBodyVO responseBodyVO = checkScene(sceneVO);
-        if (responseBodyVO.getCode() != ResponseBodyVO.Response.SUCCESS.getCode()) {
-            return responseBodyVO;
+        if (Objects.isNull(sceneVO)){
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "未查出有效场景:" + param.getSceneId());
         }
+//        ResponseBodyVO responseBodyVO = checkScene(sceneVO);
+//        if (responseBodyVO.getCode() != ResponseBodyVO.Response.SUCCESS.getCode()) {
+//            return responseBodyVO;
+//        }
         MultiSimulationSceneCarParam multiSimulationSceneCarParam = new MultiSimulationSceneCarParam();
         multiSimulationSceneCarParam.setSceneId(param.getSceneId());
         List<MultiSimulationSceneCarVO> multiSimulationSceneCarVOS = sceneCarMapper.selectSceneCarList(multiSimulationSceneCarParam);
-        ResponseBodyVO sceneCars = checkAllSceneCars(multiSimulationSceneCarVOS, param.getSceneId());
-        if (sceneCars.getCode() != ResponseBodyVO.Response.SUCCESS.getCode()) {
-            return sceneCars;
-        }
+//        ResponseBodyVO sceneCars = checkAllSceneCars(multiSimulationSceneCarVOS, param.getSceneId());
+//        if (sceneCars.getCode() != ResponseBodyVO.Response.SUCCESS.getCode()) {
+//            return sceneCars;
+//        }
         // 插入场景
         MultiSimulationScenePO multiSimulationScenePO = buildScenePO(sceneVO, sceneVO.getProjectId());
         int i = simulationSceneMapper.addMultiSimulationSceneAll(multiSimulationScenePO);
@@ -969,8 +989,24 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         String pathEnd = carVO.getPathEnd();
         JSONObject objectEnd = JSONObject.parseObject(pathEnd);
         MultiSimulationSceneCarParam multiSimulationSceneCarParam = new MultiSimulationSceneCarParam();
-        multiSimulationSceneCarParam.setSceneCarId(carVO.getId()).setSceneId(newSceneId)
-            .setCarId(carVO.getCarId()).setAlgorithmId(carVO.getAlgorithmId())
+        multiSimulationSceneCarParam.setSceneCarId(StringUtil.getRandomUUID()).setSceneId(newSceneId)
+            .setCarId(carVO.getCarId()).setAlgorithmId(carVO.getAlgorithmId()).setAlgorithmType(carVO.getAlgorithmType())
+            .setMapId(carVO.getMapId())
+            .setPathId(carVO.getPathId())
+            .setPathStart(objectStart).setPathEnd(objectEnd)
+            .setPathStartStr(pathStart)
+            .setPathEndStr(pathEnd)
+            .setCarSort(carVO.getCarSort()).setIsSimulationCar(0);
+        return multiSimulationSceneCarParam;
+    }
+    public static MultiSimulationSceneCarParam buildSceneCarParamAll(MultiSimulationSceneCarVO carVO, String newSceneId) {
+        String pathStart = carVO.getPathStart();
+        JSONObject objectStart = JSONObject.parseObject(pathStart);
+        String pathEnd = carVO.getPathEnd();
+        JSONObject objectEnd = JSONObject.parseObject(pathEnd);
+        MultiSimulationSceneCarParam multiSimulationSceneCarParam = new MultiSimulationSceneCarParam();
+        multiSimulationSceneCarParam.setSceneCarId(StringUtil.getRandomUUID()).setSceneId(newSceneId)
+            .setCarId(carVO.getCarId()).setAlgorithmId(carVO.getAlgorithmId()).setAlgorithmType(carVO.getAlgorithmType())
             .setMapId(carVO.getMapId())
             .setPathId(carVO.getPathId())
             .setPathStart(objectStart).setPathEnd(objectEnd)

+ 2 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/service/job_manage/MultiSimulationProjectService.java

@@ -44,6 +44,8 @@ public interface MultiSimulationProjectService {
 
     ResponseBodyVO<MultiSimulationSceneVO> copyMultiSimulationScene(MultiSimulationSceneParam param);
 
+    ResponseBodyVO<MultiSimulationSceneVO> copyMoreMultiSimulationScene(MultiSimulationSceneParam param);
+
     ResponseBodyVO<MultiSimulationSceneResultVO> viewMultiSimulationProjectResult(MultiSimulationSceneParam param);
 
     void exportProjectTaskFileById(MultiSimulationProjectParam param);

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

@@ -15,8 +15,8 @@ public interface MultiSimulationSceneCarMapper {
         "(#{sceneCarId},#{sceneId},#{carId},#{algorithmId},#{algorithmType},#{mapId},#{pathId},#{pathStartStr},#{pathEndStr},#{carSort},#{isSimulationCar})")
     int addMultiSimulationSceneCar(MultiSimulationSceneCarParam param);
 
-    @Select("select count(*) from multi_simulation_scene_car where scene_id = #{sceneId} and deleted = 0")
-    int selectSceneCarNumsBySceneId(@Param("sceneId") String sceneId);
+    @Select("select count(*) from multi_simulation_scene_car where scene_id = #{sceneId} and map_id = #{mapId} and deleted = 0")
+    int selectSceneCarNumsBySceneIdAndMapId(@Param("sceneId") String sceneId, @Param("mapId") String mapId);
 
 
     @Update("<script>" +