|
@@ -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&¶ms.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);
|
|
|
}
|
|
|
|
|
|
}
|