|
@@ -234,6 +234,60 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
|
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO updateMultiSimulationSceneRetry(MultiSimulationSceneParam param){
|
|
|
+ String projectId = param.getProjectId();
|
|
|
+ MultiSimulationProjectVO projectVO = multiSimulationProjectMapper.selectMultiSimulationProjectById(projectId);
|
|
|
+ if (Objects.isNull(projectVO)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "未查询到可用的任务");
|
|
|
+ }
|
|
|
+ String simulationMageGroupId = projectVO.getSimulationMageGroupId();
|
|
|
+ if (StringUtils.isBlank(simulationMageGroupId)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "仿真镜像组为空");
|
|
|
+ }
|
|
|
+ Integer projectStatus = projectVO.getProjectStatus();
|
|
|
+ if (projectStatus != MultiSimulationStatusEnum.COMPLETED_STATUS.getProjectStatus()){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "当前仿真任务状态不允许只执行部分场景任务");
|
|
|
+ }
|
|
|
+ List<String> sceneIdList = param.getSceneIdList();
|
|
|
+ Set<String> sceneSet = new HashSet<>(sceneIdList);
|
|
|
+ MultiSimulationSceneParam multiSimulationSceneParam = new MultiSimulationSceneParam();
|
|
|
+ multiSimulationSceneParam.setProjectId(projectId);
|
|
|
+ List<MultiSimulationSceneVO> sceneVOList = simulationSceneMapper.selectSceneList(multiSimulationSceneParam);
|
|
|
+ List<MultiSimulationSceneVO> multiSimulationSceneVOS = new ArrayList<>();
|
|
|
+ if (!CollectionUtils.isEmpty(sceneVOList)){
|
|
|
+ for (MultiSimulationSceneVO vo: sceneVOList) {
|
|
|
+ if (sceneSet.contains(vo.getId())){
|
|
|
+ multiSimulationSceneVOS.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ResponseBodyVO responseBodyVO = checkAllScene(multiSimulationSceneVOS);
|
|
|
+ if (responseBodyVO.getCode() != ResponseBodyVO.Response.SUCCESS.getCode()){
|
|
|
+ return responseBodyVO;
|
|
|
+ }
|
|
|
+ for (MultiSimulationSceneVO sceneVo: multiSimulationSceneVOS) {
|
|
|
+ String sceneVoId = sceneVo.getId();
|
|
|
+ String mapId = sceneVo.getMapId();
|
|
|
+ SimulationMapVO simulationMapVO = mapMapper.selectMapByMapId(mapId);
|
|
|
+ if (Objects.isNull(simulationMapVO)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "场景id:" + sceneVoId + "未查到有效的地图");
|
|
|
+ }
|
|
|
+ MultiSimulationSceneCarParam sceneCarParam = new MultiSimulationSceneCarParam();
|
|
|
+ sceneCarParam.setSceneId(sceneVoId);
|
|
|
+ sceneCarParam.setMapId(mapId);
|
|
|
+ List<MultiSimulationSceneCarVO> multiSimulationSceneCarVOS = sceneCarMapper.selectSceneCarList(sceneCarParam);
|
|
|
+ ResponseBodyVO sceneCars = checkAllSceneCars(multiSimulationSceneCarVOS, sceneVoId);
|
|
|
+ if (sceneCars.getCode() != ResponseBodyVO.Response.SUCCESS.getCode()){
|
|
|
+ return sceneCars;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ MultiSimulationProjectKafkaParam multiSimulationProjectKafkaParam = buildSendKafkaParamByScene(projectId, projectVO.getProjectMaxSeconds(), simulationMageGroupId, multiSimulationSceneVOS);
|
|
|
+ projectRunToKafka(multiSimulationProjectKafkaParam);
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
public MultiSimulationProjectKafkaParam buildSendKafkaParam(String projectId, Integer defaultTime, String simulationMageGroupId){
|
|
|
MultiSimulationProjectKafkaParam multiSimulationProjectKafkaParam = new MultiSimulationProjectKafkaParam();
|
|
|
multiSimulationProjectKafkaParam.setProjectId(projectId);
|
|
@@ -260,6 +314,32 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
|
|
|
return multiSimulationProjectKafkaParam;
|
|
|
}
|
|
|
|
|
|
+ public MultiSimulationProjectKafkaParam buildSendKafkaParamByScene(String projectId, Integer defaultTime, String simulationMageGroupId, List<MultiSimulationSceneVO> multiSimulationSceneVOS){
|
|
|
+ MultiSimulationProjectKafkaParam multiSimulationProjectKafkaParam = new MultiSimulationProjectKafkaParam();
|
|
|
+ multiSimulationProjectKafkaParam.setProjectId(projectId);
|
|
|
+ multiSimulationProjectKafkaParam.setSimulationMageGroupId(simulationMageGroupId);
|
|
|
+ multiSimulationProjectKafkaParam.setIsAll(false);
|
|
|
+ MultiSimulationSceneParam sceneParam = new MultiSimulationSceneParam();
|
|
|
+ sceneParam.setProjectId(projectId);
|
|
|
+ List<MultiSimulationSceneKafkaParam> sceneKafkaParamList = new ArrayList<>();
|
|
|
+ for (MultiSimulationSceneVO scene : multiSimulationSceneVOS) {
|
|
|
+ String id = scene.getId();
|
|
|
+ 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);
|
|
|
+ multiSimulationSceneKafkaParam.setSimulationSceneCarVOList(multiSimulationSceneCarVOS);
|
|
|
+ sceneKafkaParamList.add(multiSimulationSceneKafkaParam);
|
|
|
+ }
|
|
|
+ multiSimulationProjectKafkaParam.setKafkaParamList(sceneKafkaParamList);
|
|
|
+ multiSimulationProjectKafkaParam.setDefaultTime(defaultTime);
|
|
|
+ return multiSimulationProjectKafkaParam;
|
|
|
+ }
|
|
|
+
|
|
|
@SneakyThrows
|
|
|
private void projectRunToKafka(MultiSimulationProjectKafkaParam param) {
|
|
|
KafkaParameter kafkaParameter = new KafkaParameter();
|