Procházet zdrojové kódy

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

李春阳 před 1 rokem
rodič
revize
15ad627b88

+ 2 - 0
api-common/src/main/java/api/common/pojo/constants/DictConstants.java

@@ -12,6 +12,8 @@ public class DictConstants {
     public static final String PROJECT_RUN_TYPE_EXECUTE = "1";  // 等待执行
     public static final String PROJECT_RUN_TYPE_EXPAND = "2";  // 等待扩充
     public static final String PROJECT_WAIT_QUEUE_KEY = "project-wait-queue";  // 等待执行
+
+    public static final String MULTI_PROJECT_WAIT_QUEUE_KEY = "multi-project-wait-queue";  // 多模式仿真等待执行
     public static final String PROJECT_WAIT_TYPE_EXECUTE = "1";  // 等待执行
     public static final String PROJECT_WAIT_TYPE_EXPAND = "2";  // 等待扩充
     public static final String PROJECT_WAIT_TYPE_ALL = "3";  // 等待扩充

+ 2 - 0
api-common/src/main/java/api/common/pojo/param/project/MultiSimulationProjectKafkaParam.java

@@ -14,5 +14,7 @@ import java.util.List;
 @Accessors(chain = true)
 public class MultiSimulationProjectKafkaParam {
     private String projectId;
+
+    private Integer defaultTime;
     private List<MultiSimulationSceneKafkaParam> kafkaParamList;
 }

+ 9 - 4
api-common/src/main/java/api/common/pojo/param/project/MultiSimulationSceneCarParam.java

@@ -1,5 +1,6 @@
 package api.common.pojo.param.project;
 
+import com.alibaba.fastjson.JSONObject;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Setter;
@@ -22,13 +23,17 @@ public class MultiSimulationSceneCarParam {
 
     private String pathId;
 
-    private String pathStart;
+    private JSONObject pathStart;
 
-    private String pathEnd;
+    private String pathStartStr;
 
-    private String pathStartPoint;
+    private JSONObject pathEnd;
 
-    private String pathEndPoint;
+    private String pathEndStr;
+
+//    private String pathStartPoint;
+//
+//    private String pathEndPoint;
 
     private Integer carSort;
 

+ 32 - 0
api-common/src/main/java/api/common/pojo/po/project/MultiSimulationProjectTaskRecordPO.java

@@ -0,0 +1,32 @@
+package api.common.pojo.po.project;
+
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+/**
+ * 多模式仿真
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class MultiSimulationProjectTaskRecordPO implements Serializable {
+    private String id;
+    private String projectId;
+
+    private String sceneId;
+
+    private String taskBody;
+
+    private Integer status;
+
+    private Integer deleted;
+    private Integer sort;
+
+    private Timestamp createTime;
+    private Timestamp updateTime;
+}

+ 7 - 2
api-common/src/main/java/api/common/pojo/vo/project/MultiSimulationSceneCarVO.java

@@ -1,5 +1,6 @@
 package api.common.pojo.vo.project;
 
+import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -29,9 +30,9 @@ public class MultiSimulationSceneCarVO implements Serializable {
 
     private String pathEnd;
 
-    private String pathStartPoint;
+//    private String pathStartPoint;
 
-    private String pathEndPoint;
+//    private String pathEndPoint;
 
     private Integer carSort;
 
@@ -51,4 +52,8 @@ public class MultiSimulationSceneCarVO implements Serializable {
 
     private String sceneCarId;
 
+    private JSONObject pathStartJson;
+
+    private JSONObject pathEndJson;
+
 }

+ 40 - 23
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/impl/MultiSimulationProjectServiceImpl.java

@@ -194,6 +194,8 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
             MultiSimulationSceneKafkaParam multiSimulationSceneKafkaParam = new MultiSimulationSceneKafkaParam();
             multiSimulationSceneKafkaParam.setMapId(scene.getMapId());
             multiSimulationSceneKafkaParam.setProjectId(scene.getProjectId());
+            // 设置场景id
+            multiSimulationSceneKafkaParam.setId(id);
             MultiSimulationSceneCarParam sceneCarParam = new MultiSimulationSceneCarParam();
             sceneCarParam.setSceneId(id);
             List<MultiSimulationSceneCarVO> multiSimulationSceneCarVOS = sceneCarMapper.selectSceneCarList(sceneCarParam);
@@ -368,10 +370,6 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, sceneVO);
     }
 
-    public static void main(String[] args) {
-        System.out.println(StringUtil.getRandomUUID());
-    }
-
     @Override
     @SneakyThrows
     public ResponseBodyVO<PageInfo<MultiSimulationSceneCarVO>> getMultiSimulationSceneCarList(MultiSimulationSceneCarParam param) {
@@ -409,6 +407,10 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
                         car.setAlgorithmId("");
                     }
                 }
+                String pathStart = car.getPathStart();
+                car.setPathStartJson(JSONObject.parseObject(pathStart));
+                String pathEnd = car.getPathEnd();
+                car.setPathEndJson(JSONObject.parseObject(pathEnd));
             }
         }
         PageInfo<MultiSimulationSceneCarVO> pageInfo = new PageInfo<>(multiSimulationSceneCarVOS);
@@ -432,13 +434,16 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         param.setCarId(StringUtils.isBlank(param.getCarId()) ? "" : param.getCarId());
         param.setAlgorithmId(StringUtils.isBlank(param.getAlgorithmId()) ? "" : param.getAlgorithmId());
         param.setPathId(StringUtils.isBlank(param.getPathId()) ? "" : param.getPathId());
-        param.setPathStart(StringUtils.isBlank(param.getPathStart()) ? "" : param.getPathStart());
-        param.setPathEnd(StringUtils.isBlank(param.getPathEnd()) ? "" : param.getPathEnd());
-        param.setPathStartPoint(StringUtils.isBlank(param.getPathStartPoint()) ? "" : param.getPathStartPoint());
-        param.setPathEndPoint(StringUtils.isBlank(param.getPathEndPoint()) ? "" : param.getPathEndPoint());
+        param.setPathStart(param.getPathStart()== null ? new JSONObject() : param.getPathStart());
+        param.setPathEnd(param.getPathEnd() == null ? new JSONObject() : param.getPathEnd());
+//        param.setPathStartPoint(StringUtils.isBlank(param.getPathStartPoint()) ? "" : param.getPathStartPoint());
+//        param.setPathEndPoint(StringUtils.isBlank(param.getPathEndPoint()) ? "" : param.getPathEndPoint());
         param.setCarSort(Objects.isNull(param.getCarSort()) ? 0 : param.getCarSort());
         param.setAlgorithmType(param.getAlgorithmType() == null ? 0 : param.getAlgorithmType());
 
+        param.setPathStartStr(param.getPathStart().toJSONString());
+        param.setPathEndStr(param.getPathEnd().toJSONString());
+
         if (StringUtils.isBlank(param.getSceneCarId())) {
             param.setSceneCarId(StringUtil.getRandomUUID());
             if (StringUtils.isBlank(param.getSceneId())) {
@@ -510,17 +515,24 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         }
         param.setSceneId(sceneId);
         List<MultiSimulationSceneCarVO> multiSimulationSceneCarVOS = sceneCarMapper.selectSceneCarList(param);
+        boolean isLast = false;
         for (MultiSimulationSceneCarVO car : multiSimulationSceneCarVOS) {
             Integer isSimulationCar = car.getIsSimulationCar();
-            if (isSimulationCar == 1 && !StringUtils.equals(car.getId(), param.getSceneCarId())) {
-                sceneCarMapper.updateMultiSimulationSceneCarView(car.getId(), 0);
+            if (isSimulationCar == 1){
+                if (!StringUtils.equals(car.getId(), param.getSceneCarId())){
+                    sceneCarMapper.updateMultiSimulationSceneCarView(car.getId(), 0);
+                } else {
+                    isLast = true;
+                }
             }
         }
-        int i = sceneCarMapper.updateMultiSimulationSceneCarView(param.getSceneCarId(), 1);
-        if (i > 0) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+        if (!isLast){
+            int i = sceneCarMapper.updateMultiSimulationSceneCarView(param.getSceneCarId(), 1);
+            if (i <= 0) {
+                return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
+            }
         }
-        return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }
 
     @Override
@@ -710,13 +722,12 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
         if (StringUtils.isBlank(carVO.getPathEnd())) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "车辆id:" + carVO.getId() + "未配置轨迹终点");
         }
-
-        if (StringUtils.isBlank(carVO.getPathStartPoint())) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "车辆id:" + carVO.getId() + "未配置轨迹起点朝向");
-        }
-        if (StringUtils.isBlank(carVO.getPathEndPoint())) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "车辆id:" + carVO.getId() + "未配置轨迹终点朝向");
-        }
+//        if (StringUtils.isBlank(carVO.getPathStartPoint())) {
+//            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "车辆id:" + carVO.getId() + "未配置轨迹起点朝向");
+//        }
+//        if (StringUtils.isBlank(carVO.getPathEndPoint())) {
+//            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "车辆id:" + carVO.getId() + "未配置轨迹终点朝向");
+//        }
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
     }
 
@@ -738,11 +749,17 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
     }
 
     public static MultiSimulationSceneCarParam buildSceneCarParam(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(carVO.getId()).setSceneId(newSceneId)
             .setCarId(carVO.getCarId()).setAlgorithmId(carVO.getAlgorithmId()).setPathId(carVO.getPathId())
-            .setPathStart(carVO.getPathStart()).setPathEnd(carVO.getPathEnd()).setPathStartPoint(carVO.getPathStartPoint())
-            .setPathEndPoint(carVO.getPathEndPoint()).setCarSort(carVO.getCarSort()).setIsSimulationCar(carVO.getIsSimulationCar());
+            .setPathStart(objectStart).setPathEnd(objectEnd)
+            .setPathStartStr(pathStart)
+            .setPathEndStr(pathEnd)
+            .setCarSort(carVO.getCarSort()).setIsSimulationCar(carVO.getIsSimulationCar());
         return multiSimulationSceneCarParam;
     }
 

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

@@ -11,8 +11,8 @@ import java.util.List;
 
 @Mapper
 public interface MultiSimulationSceneCarMapper {
-    @Insert("insert into multi_simulation_scene_car (id,scene_id,car_id,algorithm_id,algorithm_type,path_id,path_start,path_end,path_start_point,path_end_point,car_sort,is_simulation_car) values" +
-        "(#{sceneCarId},#{sceneId},#{carId},#{algorithmId},#{algorithmType},#{pathId},#{pathStart},#{pathEnd},#{pathStartPoint},#{pathEndPoint},#{carSort},#{isSimulationCar})")
+    @Insert("insert into multi_simulation_scene_car (id,scene_id,car_id,algorithm_id,algorithm_type,path_id,path_start,path_end,car_sort,is_simulation_car) values" +
+        "(#{sceneCarId},#{sceneId},#{carId},#{algorithmId},#{algorithmType},#{pathId},#{pathStartStr},#{pathEndStr},#{carSort},#{isSimulationCar})")
     int addMultiSimulationSceneCar(MultiSimulationSceneCarParam param);
 
     @Select("select count(*) from multi_simulation_scene_car where scene_id = #{sceneId} and deleted = 0")
@@ -21,7 +21,7 @@ public interface MultiSimulationSceneCarMapper {
 
     @Update("<script>" +
         "update multi_simulation_scene_car set car_id = #{carId},algorithm_id = #{algorithmId}, algorithm_type = #{algorithmType}, path_id = #{pathId}," +
-        "path_start = #{pathStart},path_end = #{pathEnd},path_start_point = #{pathStartPoint},path_end_point = #{pathEndPoint},car_sort = #{carSort} " +
+        "path_start = #{pathStartStr},path_end = #{pathEndStr},car_sort = #{carSort} " +
         "where id = #{sceneCarId}" +
         "</script>")
     int updateMultiSimulationSceneCar(MultiSimulationSceneCarParam param);
@@ -36,14 +36,14 @@ public interface MultiSimulationSceneCarMapper {
     int deleteMultiSimulationSceneCar(MultiSimulationSceneCarParam param);
 //
     @Select("<script>" +
-        "select id,scene_id,car_id,algorithm_id,algorithm_type,path_id,path_start,path_end,path_start_point,path_end_point,car_sort,create_time from multi_simulation_scene_car where deleted = 0 " +
-        "and scene_id = #{sceneId}" +
+        "select id,scene_id,car_id,algorithm_id,algorithm_type,path_id,path_start,path_end,car_sort,is_simulation_car,create_time from multi_simulation_scene_car where deleted = 0 " +
+        "and scene_id = #{sceneId} " +
         "order by car_sort, create_time desc" +
         "</script>")
     List<MultiSimulationSceneCarVO> selectSceneCarList(MultiSimulationSceneCarParam param);
 
     @Select("<script>" +
-        "select id,scene_id,car_id,algorithm_id,algorithm_type,path_id,path_start,path_end,path_start_point,path_end_point,car_sort,create_time from multi_simulation_scene_car where deleted = 0 " +
+        "select id,scene_id,car_id,algorithm_id,algorithm_type,path_id,path_start,path_end,car_sort,create_time from multi_simulation_scene_car where deleted = 0 " +
         "and id = #{sceneCarId}" +
         "</script>")
     MultiSimulationSceneCarVO selectSceneCarById(MultiSimulationSceneCarParam param);