|
@@ -4,19 +4,24 @@ import api.common.pojo.common.PageVO;
|
|
|
import api.common.pojo.common.ResponseBodyVO;
|
|
|
import api.common.pojo.enums.MultiSimulationStatusEnum;
|
|
|
import api.common.pojo.param.project.MultiSimulationProjectParam;
|
|
|
+import api.common.pojo.param.project.MultiSimulationSceneCarParam;
|
|
|
+import api.common.pojo.param.project.MultiSimulationSceneParam;
|
|
|
+import api.common.pojo.po.algorithm.AlgorithmPO;
|
|
|
+import api.common.pojo.po.model.ConfigPO;
|
|
|
import api.common.pojo.po.project.MultiSimulationProjectPO;
|
|
|
-import api.common.pojo.vo.project.MultiSimulationProjectDetailVO;
|
|
|
-import api.common.pojo.vo.project.MultiSimulationProjectVO;
|
|
|
-import api.common.pojo.vo.project.SimulationManualProjectVO;
|
|
|
+import api.common.pojo.po.project.MultiSimulationScenePO;
|
|
|
+import api.common.pojo.vo.map.SimulationMapVO;
|
|
|
+import api.common.pojo.vo.project.*;
|
|
|
import api.common.util.StringUtil;
|
|
|
import com.alibaba.cloud.commons.lang.StringUtils;
|
|
|
import com.css.simulation.resource.server.app.service.job_manage.MultiSimulationProjectService;
|
|
|
-import com.css.simulation.resource.server.infra.db.mysql.mapper.MultiSimulationProjectMapper;
|
|
|
+import com.css.simulation.resource.server.infra.db.mysql.mapper.*;
|
|
|
import com.css.simulation.resource.server.infra.util.PageUtil;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.List;
|
|
@@ -28,6 +33,18 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
|
|
|
|
|
|
@Resource
|
|
|
private MultiSimulationProjectMapper multiSimulationProjectMapper;
|
|
|
+ @Resource
|
|
|
+ private MultiSimulationSceneMapper simulationSceneMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MultiSimulationSceneCarMapper sceneCarMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SimulationMapMapper mapMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private SimulationManualProjectMapper simulationManualProjectMapper;
|
|
|
+
|
|
|
@Override
|
|
|
@SneakyThrows
|
|
|
public ResponseBodyVO<PageInfo<MultiSimulationProjectVO>> selectMultiSimulationProject(MultiSimulationProjectParam param){
|
|
@@ -43,15 +60,31 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
|
|
|
if (StringUtils.isBlank(param.getProjectKey())){
|
|
|
param.setProjectKey(null);
|
|
|
}
|
|
|
-
|
|
|
+ if (StringUtils.isBlank(param.getProjectId())){
|
|
|
+ param.setProjectId(null);
|
|
|
+ }
|
|
|
setPage(param.getPageNum(), param.getPageSize());
|
|
|
List<MultiSimulationProjectVO> multiSimulationProjectVOS = multiSimulationProjectMapper.selectProjectList(param);
|
|
|
+ if (!CollectionUtils.isEmpty(multiSimulationProjectVOS)){
|
|
|
+ for (MultiSimulationProjectVO project: multiSimulationProjectVOS) {
|
|
|
+ String id = project.getId();
|
|
|
+ project.setProjectStatusValue(MultiSimulationStatusEnum.matchStatusEnumByStatus(project.getProjectStatus()).getProjectStatusValue());
|
|
|
+ int i = simulationSceneMapper.selectSceneNumsByProjectId(id);
|
|
|
+ project.setSceneNums(i);
|
|
|
+ }
|
|
|
+ }
|
|
|
PageInfo<MultiSimulationProjectVO> pageInfo = new PageInfo<>(multiSimulationProjectVOS);
|
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, pageInfo);
|
|
|
}
|
|
|
@Override
|
|
|
@SneakyThrows
|
|
|
public ResponseBodyVO<MultiSimulationProjectDetailVO> addMultiSimulationProject(MultiSimulationProjectParam param){
|
|
|
+ String name = param.getProjectName();
|
|
|
+
|
|
|
+ MultiSimulationProjectVO multiSimulationProjectVO = multiSimulationProjectMapper.selectMultiSimulationProjectByName(StringUtils.isBlank(name) ? "" : name);
|
|
|
+ if (!Objects.isNull(multiSimulationProjectVO)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE,"添加失败,存在同名的多模式仿真任务");
|
|
|
+ }
|
|
|
MultiSimulationProjectPO build = MultiSimulationProjectPO.builder()
|
|
|
.id(StringUtil.getRandomUUID())
|
|
|
.projectName(param.getProjectName()== null ? "": param.getProjectName())
|
|
@@ -67,6 +100,174 @@ public class MultiSimulationProjectServiceImpl implements MultiSimulationProject
|
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<String> deleteMultiSimulationProject(MultiSimulationProjectParam param){
|
|
|
+ int i = multiSimulationProjectMapper.deleteMultiSimulationProject(param.getProjectId());
|
|
|
+ if (i > 0){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null);
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<String> updateMultiSimulationProject(MultiSimulationProjectParam param){
|
|
|
+ if (StringUtils.isBlank(param.getProjectId())){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "项目id不能为空");
|
|
|
+ }
|
|
|
+ param.setProjectName(StringUtils.isBlank(param.getProjectName()) ? "" : param.getProjectName());
|
|
|
+ param.setProjectDescription(StringUtils.isBlank(param.getProjectDescription()) ? "" : param.getProjectDescription());
|
|
|
+ param.setProjectMaxSeconds(Objects.isNull(param.getProjectMaxSeconds()) ? 0 : param.getProjectMaxSeconds());
|
|
|
+ int i = multiSimulationProjectMapper.updateMultiSimulationProject(param);
|
|
|
+ if (i > 0){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, null);
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<MultiSimulationProjectVO> getMultiSimulationProjectDetail(MultiSimulationProjectParam param){
|
|
|
+ if (StringUtils.isBlank(param.getProjectId())){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "项目id不能为空");
|
|
|
+ }
|
|
|
+ MultiSimulationProjectVO multiSimulationProjectVO = multiSimulationProjectMapper.selectMultiSimulationProjectById(param.getProjectId());
|
|
|
+ if (Objects.isNull(multiSimulationProjectVO)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "未查询出有效的项目");
|
|
|
+ }
|
|
|
+ multiSimulationProjectVO.setProjectStatusValue(MultiSimulationStatusEnum.matchStatusEnumByStatus(multiSimulationProjectVO.getProjectStatus()).getProjectStatusValue());
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, multiSimulationProjectVO);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<MultiSimulationSceneVO> addMultiSimulationScene(MultiSimulationSceneParam param){
|
|
|
+ if (StringUtils.isBlank(param.getProjectId())){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "项目id不能为空");
|
|
|
+ }
|
|
|
+ MultiSimulationScenePO build = MultiSimulationScenePO.builder().id(StringUtil.getRandomUUID()).projectId(param.getProjectId()).build();
|
|
|
+ int i = simulationSceneMapper.addMultiSimulationScene(build);
|
|
|
+ if (i > 0){
|
|
|
+ MultiSimulationSceneVO sceneVO = MultiSimulationSceneVO.builder().sceneId(build.getId()).build();
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, sceneVO);
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO deleteMultiSimulationScene(MultiSimulationSceneParam param){
|
|
|
+ if (StringUtils.isBlank(param.getSceneId())){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "删除失败,场景id不能为空");
|
|
|
+ }
|
|
|
+ int i = simulationSceneMapper.deleteMultiSimulationScene(param);
|
|
|
+ if (i > 0){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, "删除成功");
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<PageInfo<MultiSimulationSceneVO>> selectMultiSimulationSceneList(MultiSimulationSceneParam param){
|
|
|
+ if (StringUtils.isBlank(param.getProjectId())){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "查询失败,id为空");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(param.getPageNum())){
|
|
|
+ param.setPageNum(1);
|
|
|
+ }
|
|
|
+ if (Objects.isNull(param.getPageSize())){
|
|
|
+ param.setPageSize(10);
|
|
|
+ }
|
|
|
+ setPage(param.getPageNum(), param.getPageSize());
|
|
|
+ List<MultiSimulationSceneVO> multiSimulationSceneVOS = simulationSceneMapper.selectSceneList(param);
|
|
|
+ if (!CollectionUtils.isEmpty(multiSimulationSceneVOS)){
|
|
|
+ for (MultiSimulationSceneVO scene: multiSimulationSceneVOS) {
|
|
|
+ String sceneId = scene.getSceneId();
|
|
|
+ int i = sceneCarMapper.selectSceneCarNumsByProjectId(sceneId);
|
|
|
+ scene.setCarNums(i);
|
|
|
+ String mapId = scene.getMapId();
|
|
|
+ if (StringUtils.isBlank(mapId)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ SimulationMapVO simulationMapVO = mapMapper.selectMapByMapId(mapId);
|
|
|
+ if (Objects.isNull(simulationMapVO)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ scene.setMapName(simulationMapVO.getMapName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageInfo<MultiSimulationSceneVO> pageInfo = new PageInfo<>(multiSimulationSceneVOS);
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<MultiSimulationSceneVO> getMultiSimulationSceneDetail(MultiSimulationSceneParam param){
|
|
|
+ if (StringUtils.isBlank(param.getSceneId())){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "查询失败,场景id为空");
|
|
|
+ }
|
|
|
+ MultiSimulationSceneVO sceneVO = simulationSceneMapper.selectSceneDetailBySceneId(param.getSceneId());
|
|
|
+ if (Objects.isNull(sceneVO)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "查询失败,未找到有效的场景");
|
|
|
+ }
|
|
|
+ String mapId = sceneVO.getMapId();
|
|
|
+ if (StringUtils.isNotBlank(mapId)){
|
|
|
+ SimulationMapVO simulationMapVO = mapMapper.selectMapByMapId(mapId);
|
|
|
+ if (Objects.isNull(simulationMapVO)){
|
|
|
+ sceneVO.setMapId("");
|
|
|
+ }else {
|
|
|
+ sceneVO.setMapName(simulationMapVO.getMapName());
|
|
|
+ sceneVO.setMapImgUrl(simulationMapVO.getMapImgUrl());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, sceneVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<PageInfo<MultiSimulationSceneCarVO>> getMultiSimulationSceneCarList(MultiSimulationSceneCarParam param){
|
|
|
+ String sceneId = param.getSceneId();
|
|
|
+ if (StringUtils.isBlank(sceneId)){
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "查询失败,场景id为空");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(param.getPageNum())){
|
|
|
+ param.setPageNum(1);
|
|
|
+ }
|
|
|
+ if (Objects.isNull(param.getPageSize())){
|
|
|
+ param.setPageSize(10);
|
|
|
+ }
|
|
|
+ setPage(param.getPageNum(), param.getPageSize());
|
|
|
+ List<MultiSimulationSceneCarVO> multiSimulationSceneCarVOS = sceneCarMapper.selectSceneCarList(param);
|
|
|
+ if (!CollectionUtils.isEmpty(multiSimulationSceneCarVOS)){
|
|
|
+ for (MultiSimulationSceneCarVO car: multiSimulationSceneCarVOS) {
|
|
|
+ String algorithmId = car.getAlgorithmId();
|
|
|
+ String carId = car.getCarId();
|
|
|
+ if (StringUtils.isNotBlank(carId)){
|
|
|
+ ConfigPO configPO = simulationManualProjectMapper.selectConfigVehicleById(carId);
|
|
|
+ if (!Objects.isNull(configPO)){
|
|
|
+ car.setCarName(configPO.getConfigName());
|
|
|
+ }else {
|
|
|
+ log.info("根据carId未查出有效的车辆信息carId:{}", carId);
|
|
|
+ car.setCarId("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(algorithmId)){
|
|
|
+ AlgorithmPO algorithmPO = simulationManualProjectMapper.selectAvailableAlgorithmById(algorithmId);
|
|
|
+ if (!Objects.isNull(algorithmPO)){
|
|
|
+ car.setAlgorithmName(algorithmPO.getAlgorithmName());
|
|
|
+ }else {
|
|
|
+ log.info("根据算法id未查出有效的算法信息algorithmId:{}", algorithmId);
|
|
|
+ car.setAlgorithmId("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageInfo<MultiSimulationSceneCarVO> pageInfo = new PageInfo<>(multiSimulationSceneCarVOS);
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private void setPage(Integer pageNum, Integer pageSize) {
|
|
|
PageVO pageVO = new PageVO();
|
|
|
pageVO.setCurrentPage(pageNum);
|