|
@@ -15,19 +15,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import feign.Response;
|
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-/*import org.apache.poi.util.IOUtils;
|
|
|
-import org.springframework.mock.web.MockMultipartFile;
|
|
|
+import org.apache.commons.fileupload.FileItem;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
-import java.io.FileInputStream;
|
|
|
-import java.util.Date;*/
|
|
|
+import java.util.Date;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
-
|
|
|
import java.util.List;
|
|
|
|
|
|
-
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class SceneAccidentService {
|
|
@@ -58,11 +55,7 @@ public class SceneAccidentService {
|
|
|
JsonNode root = objMap.readTree(json);
|
|
|
//判断场景名称唯一
|
|
|
String sceneName = root.path("场景名称").asText();
|
|
|
- Integer sceneNum = SceneAccidentMapper.querySceneAccidentByNmae(sceneName);
|
|
|
- if (sceneNum > 0) {
|
|
|
- return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景名称" + sceneName + "已存在,请检查");
|
|
|
- }
|
|
|
-
|
|
|
+ String sceneId = SceneAccidentMapper.querySceneAccidentByNmae(sceneName);
|
|
|
SceneAccidentPO sceneAccidentPO = null;
|
|
|
sceneAccidentPO = sceneAccidentPO.builder()
|
|
|
.accidentId(StringUtil.getRandomUUID())
|
|
@@ -75,13 +68,9 @@ public class SceneAccidentService {
|
|
|
.conflictType(root.path("冲突类型").asText())
|
|
|
.sceneTime(root.path("时间").asText())
|
|
|
.sceneWeather(root.path("天气").asText())
|
|
|
+ .maxTime(root.path("max_time").asText())
|
|
|
.isDeleted("0")
|
|
|
.build();
|
|
|
- // -------------------------------- 保存数据到 mysql --------------------------------
|
|
|
- sceneAccidentPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
- sceneAccidentPO.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
- sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
-
|
|
|
if (null != param.getJsonAddress() && !param.getJsonAddress().equals("")) {
|
|
|
sceneAccidentPO.setJsonAddress(param.getJsonAddress());
|
|
|
}
|
|
@@ -97,11 +86,24 @@ public class SceneAccidentService {
|
|
|
if (null != param.getVideoAddress() && !param.getVideoAddress().equals("")) {
|
|
|
sceneAccidentPO.setVideoAddress(param.getVideoAddress());
|
|
|
}
|
|
|
- if (null != param.getVideoPreview() && !param.getVideoPreview().equals("")) {
|
|
|
- sceneAccidentPO.setVideoPreview(param.getVideoPreview());
|
|
|
- }
|
|
|
- SceneAccidentMapper.saveSceneAccident(sceneAccidentPO);
|
|
|
+ if (ObjectUtil.isNull(sceneId)) {
|
|
|
+ // -------------------------------- 保存数据到 mysql --------------------------------
|
|
|
+ sceneAccidentPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
+ sceneAccidentPO.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
|
|
+
|
|
|
+ /* if (null != param.getVideoPreview() && !param.getVideoPreview().equals("")) {
|
|
|
+ sceneAccidentPO.setVideoPreview(param.getVideoPreview());
|
|
|
+ }*/
|
|
|
+ SceneAccidentMapper.saveSceneAccident(sceneAccidentPO);
|
|
|
+ } else {
|
|
|
+ // -------------------------------- 修改数据到 mysql --------------------------------
|
|
|
+ sceneAccidentPO.setAccidentId(sceneId);
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ sceneAccidentPO.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
+ SceneAccidentMapper.updateSceneAccident(sceneAccidentPO);
|
|
|
+ }
|
|
|
return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
|
|
|
|
|
|
}
|
|
@@ -146,6 +148,7 @@ public class SceneAccidentService {
|
|
|
.conflictType(root.path("冲突类型").asText())
|
|
|
.sceneTime(root.path("时间").asText())
|
|
|
.sceneWeather(root.path("天气").asText())
|
|
|
+ .maxTime(root.path("max_time").asText())
|
|
|
.isDeleted("0")
|
|
|
.build();
|
|
|
// -------------------------------- 保存数据到 mysql --------------------------------
|
|
@@ -177,19 +180,19 @@ public class SceneAccidentService {
|
|
|
}
|
|
|
|
|
|
public List<SceneAccidentPO> querySceneAccidentList(SceneAccidentParam params) {
|
|
|
- if(ObjectUtil.isNotNull(params.getSceneName()) || (params.getSelfDriving()!=null&¶ms.getSelfDriving().size()>0)||(params.getTargetDriving()!=null&¶ms.getTargetDriving().size()>0)
|
|
|
- || (params.getSelfReaction()!=null&¶ms.getSelfReaction().size()>0)||(params.getConflictType()!=null&¶ms.getConflictType().size()>0)||(params.getConflictBehavior()!=null&¶ms.getConflictBehavior().size()>0)||(params.getIds()!=null&¶ms.getIds().length>0)){
|
|
|
+ if (ObjectUtil.isNotNull(params.getSceneName()) || (params.getSelfDriving() != null && params.getSelfDriving().size() > 0) || (params.getTargetDriving() != null && params.getTargetDriving().size() > 0)
|
|
|
+ || (params.getSelfReaction() != null && params.getSelfReaction().size() > 0) || (params.getConflictType() != null && params.getConflictType().size() > 0) || (params.getConflictBehavior() != null && params.getConflictBehavior().size() > 0) || (params.getIds() != null && params.getIds().length > 0)) {
|
|
|
params.setXlk("1");
|
|
|
}
|
|
|
- if(ObjectUtil.isNotNull(params.getRearEndCollision()) ||ObjectUtil.isNotNull(params.getCutIn()) ||ObjectUtil.isNotNull(params.getDriveCurve()) ||ObjectUtil.isNotNull(params.getCarConflict())){
|
|
|
+ if (ObjectUtil.isNotNull(params.getRearEndCollision()) || ObjectUtil.isNotNull(params.getCutIn()) || ObjectUtil.isNotNull(params.getDriveCurve()) || ObjectUtil.isNotNull(params.getCarConflict())) {
|
|
|
params.setBq(1);
|
|
|
}
|
|
|
List<SceneAccidentPO> list = null;
|
|
|
- if((params.getXlk().equals("1")&¶ms.getBq().equals(1))||(params.getXlk().equals("0")&¶ms.getBq().equals(0))||(params.getXlk().equals("1")&¶ms.getBq().equals(0))){
|
|
|
+ if ((params.getXlk().equals("1") && params.getBq().equals(1)) || (params.getXlk().equals("0") && params.getBq().equals(0)) || (params.getXlk().equals("1") && params.getBq().equals(0))) {
|
|
|
list = SceneAccidentMapper.querySceneAccidentList(params);
|
|
|
}/*else if(params.getXlk().equals("1")&¶ms.getBq().equals("0")){
|
|
|
list = SceneAccidentMapper.querySceneAccidentListByXlk(params);
|
|
|
- }*/else if(params.getXlk().equals("0")&¶ms.getBq().equals(1)){
|
|
|
+ }*/ else if (params.getXlk().equals("0") && params.getBq().equals(1)) {
|
|
|
list = SceneAccidentMapper.querySceneAccidentListByBq(params);
|
|
|
}
|
|
|
|
|
@@ -249,31 +252,31 @@ public class SceneAccidentService {
|
|
|
params.setAllIds(listA);
|
|
|
}*/
|
|
|
|
|
|
- for (SceneAccidentPO po: list) {
|
|
|
- if(po.getConflictBehavior().indexOf("追尾")>-1){
|
|
|
+ for (SceneAccidentPO po : list) {
|
|
|
+ if (po.getConflictBehavior().indexOf("追尾") > -1) {
|
|
|
po.setLabel("追尾");
|
|
|
}
|
|
|
- if(po.getTargetDriving().indexOf("切入")>-1){
|
|
|
- if(ObjectUtil.isNull(po.getLabel())){
|
|
|
+ if (po.getTargetDriving().indexOf("切入") > -1) {
|
|
|
+ if (ObjectUtil.isNull(po.getLabel())) {
|
|
|
po.setLabel("目标车切入");
|
|
|
- }else{
|
|
|
- po.setLabel(po.getLabel()+",目标车切入");
|
|
|
+ } else {
|
|
|
+ po.setLabel(po.getLabel() + ",目标车切入");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if(po.getTargetDriving().indexOf("沿弯道行驶")>-1){
|
|
|
- if(ObjectUtil.isNull(po.getLabel())){
|
|
|
+ if (po.getTargetDriving().indexOf("沿弯道行驶") > -1) {
|
|
|
+ if (ObjectUtil.isNull(po.getLabel())) {
|
|
|
po.setLabel("目标车沿弯道行驶");
|
|
|
- }else{
|
|
|
- po.setLabel(po.getLabel()+",目标车沿弯道行驶");
|
|
|
+ } else {
|
|
|
+ po.setLabel(po.getLabel() + ",目标车沿弯道行驶");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if(po.getConflictType().indexOf("机动车-机动车")>-1){
|
|
|
- if(ObjectUtil.isNull(po.getLabel())){
|
|
|
+ if (po.getConflictType().indexOf("机动车-机动车") > -1) {
|
|
|
+ if (ObjectUtil.isNull(po.getLabel())) {
|
|
|
po.setLabel("机动车-机动车冲突");
|
|
|
- }else{
|
|
|
- po.setLabel(po.getLabel()+",机动车-机动车冲突");
|
|
|
+ } else {
|
|
|
+ po.setLabel(po.getLabel() + ",机动车-机动车冲突");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -289,10 +292,9 @@ public class SceneAccidentService {
|
|
|
//systemUserSceneService.deleteSystemUserSceneBySceneId(params.getAccidentId());
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-/* *//**
|
|
|
+ /*
|
|
|
* 获取交通事故场景数据:
|
|
|
- *//*
|
|
|
+ */
|
|
|
@SneakyThrows
|
|
|
public ResponseBodyVO<String> saveAll(SceneAccidentParam param) {
|
|
|
//1 获取所有目录下所有场景
|
|
@@ -305,8 +307,9 @@ public class SceneAccidentService {
|
|
|
|
|
|
String fileName = null;
|
|
|
try {
|
|
|
- List<SceneAccidentPO> list=new ArrayList<SceneAccidentPO>();
|
|
|
- Integer wJNum=1;
|
|
|
+ List<SceneAccidentPO> list = new ArrayList<SceneAccidentPO>();
|
|
|
+ List<SceneAccidentPO> updateList = new ArrayList<SceneAccidentPO>();
|
|
|
+ Integer wJNum = 1;
|
|
|
for (File scene1 : scenes) {
|
|
|
String dataUrlNew = scene1.getAbsolutePath();
|
|
|
File[] scenes1 = FileUtil.getDirectory(dataUrlNew).listFiles();
|
|
@@ -317,15 +320,19 @@ public class SceneAccidentService {
|
|
|
Integer nowTime = TimeUtil.getRq(new Date(), 0);
|
|
|
for (File scene : scenes1) {
|
|
|
String dataUrl = scene.getAbsolutePath();
|
|
|
- // File pdfFile = new File(dataUrl);
|
|
|
- fileName= scene.getName();
|
|
|
+ // File pdfFile = new File(dataUrl);
|
|
|
+ fileName = scene.getName();
|
|
|
//文件上传测试1 遍历拿到的文件scene
|
|
|
- FileInputStream inputStream = new FileInputStream(scene);
|
|
|
+ /* FileInputStream inputStream = new FileInputStream(scene);
|
|
|
MultipartFile multipartFile = new MockMultipartFile("file", fileName, "text/plain", IOUtils.toByteArray(inputStream));
|
|
|
+ */
|
|
|
+ FileItem fileItem = XmlParse.createFileItem(scene.getPath(), scene.getName());
|
|
|
+ MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
|
|
|
+ fileItem.delete();
|
|
|
//调用文件上传方法
|
|
|
- String nowNum=nowTime+""+wJNum;
|
|
|
- String objectName = "交通事故场景1111/" + nowNum + "/" + fileName;
|
|
|
- ResponseBodyVO<String> respon= fileDownService.upload(multipartFile, objectName);
|
|
|
+ String nowNum = nowTime + "" + wJNum;
|
|
|
+ String objectName = "交通事故场景1111/" + nowNum + "/" + fileName;
|
|
|
+ ResponseBodyVO<String> respon = fileDownService.upload(multipartFile, objectName);
|
|
|
|
|
|
if (dataUrl.indexOf(".json") != -1) {
|
|
|
// -------------------------------- 读取结构化数据文件 --------------------------------
|
|
@@ -334,11 +341,8 @@ public class SceneAccidentService {
|
|
|
ObjectMapper objMap = new ObjectMapper();
|
|
|
JsonNode root = objMap.readTree(json);
|
|
|
//判断是否存在
|
|
|
- String sceneName=root.path("场景名称").asText();
|
|
|
- Integer sceneNum = SceneAccidentMapper.querySceneAccidentByNmae(root.path("场景名称").asText());
|
|
|
- if (sceneNum > 0) {
|
|
|
- return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景名称" + sceneName + "已存在,请检查");
|
|
|
- }
|
|
|
+ String sceneName = root.path("场景名称").asText();
|
|
|
+ String sceneId = SceneAccidentMapper.querySceneAccidentByNmae(root.path("场景名称").asText());
|
|
|
sceneAccidentPO = sceneAccidentPO.builder()
|
|
|
.accidentId(StringUtil.getRandomUUID())
|
|
|
.sceneName(root.path("场景名称").asText())
|
|
@@ -350,34 +354,299 @@ public class SceneAccidentService {
|
|
|
.conflictType(root.path("冲突类型").asText())
|
|
|
.sceneTime(root.path("时间").asText())
|
|
|
.sceneWeather(root.path("天气").asText())
|
|
|
+ .maxTime(root.path("max_time").asText())
|
|
|
.isDeleted("0")
|
|
|
.build();
|
|
|
// -------------------------------- 保存数据到 mysql --------------------------------
|
|
|
- sceneAccidentPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
- sceneAccidentPO.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
- sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
- }
|
|
|
- //插入地址
|
|
|
- if (null != objectName && objectName.indexOf(".json")!=-1) {
|
|
|
- sceneAccidentPO.setJsonAddress(objectName);
|
|
|
- }else if (null != objectName && objectName.indexOf(".xml")!=-1) {
|
|
|
- sceneAccidentPO.setXmlAddress(objectName);
|
|
|
- }else if (null != objectName && objectName.indexOf(".xodr")!=-1) {
|
|
|
- sceneAccidentPO.setXodrAddress(objectName);
|
|
|
- }else if (null != objectName && objectName.indexOf(".osgb")!=-1) {
|
|
|
- sceneAccidentPO.setOsgbAddress(objectName);
|
|
|
- }else if (null != objectName && objectName.indexOf(".mp4")!=-1) {
|
|
|
- sceneAccidentPO.setVideoAddress(objectName);
|
|
|
+ //插入地址
|
|
|
+ if (null != objectName && objectName.indexOf(".json") != -1) {
|
|
|
+ sceneAccidentPO.setJsonAddress(objectName);
|
|
|
+ } else if (objectName.indexOf(".xml") != -1 || objectName.indexOf(".xosc") != -1) {
|
|
|
+ sceneAccidentPO.setXmlAddress(objectName);
|
|
|
+ } else if (null != objectName && objectName.indexOf(".xodr") != -1) {
|
|
|
+ sceneAccidentPO.setXodrAddress(objectName);
|
|
|
+ } else if (null != objectName && objectName.indexOf(".osgb") != -1) {
|
|
|
+ sceneAccidentPO.setOsgbAddress(objectName);
|
|
|
+ } else if (null != objectName && objectName.indexOf(".mp4") != -1) {
|
|
|
+ sceneAccidentPO.setVideoAddress(objectName);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ObjectUtil.isNull(sceneId)) {
|
|
|
+ sceneAccidentPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
+ sceneAccidentPO.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ // return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景名称" + sceneName + "已存在,请检查");
|
|
|
+ } else {
|
|
|
+ sceneAccidentPO.setAccidentId(sceneId);
|
|
|
+ sceneAccidentPO.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- list.add(sceneAccidentPO);
|
|
|
+ if (ObjectUtil.isNull(sceneAccidentPO.getModifyUserId())) {
|
|
|
+ list.add(sceneAccidentPO);
|
|
|
+ } else {
|
|
|
+ updateList.add(sceneAccidentPO);
|
|
|
+ }
|
|
|
wJNum++;
|
|
|
}
|
|
|
- //SceneAccidentMapper.saveSceneAccident(sceneAccidentPO);
|
|
|
+ if (ObjectUtil.isNotNull(list)) {
|
|
|
+ SceneAccidentMapper.saveSceneAccidentList(list);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotNull(updateList)) {
|
|
|
+ SceneAccidentMapper.updateSceneAccidentList(updateList);
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
|
|
|
} catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景文件" + fileName + "解析出错");
|
|
|
}
|
|
|
- return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
|
|
|
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 获取交通事故场景数据:最新的自己获取路径
|
|
|
+ */
|
|
|
+ @SneakyThrows
|
|
|
+ public ResponseBodyVO<String> saveAllNew(String dataUrl1) {
|
|
|
+ //1 获取所有目录下所有场景
|
|
|
+ // String dataUrl0 = "D:\\自然驾驶场景样例"; // 场景数据根路径
|
|
|
+ String dataUrl0 = "D:\\自然驾驶场景样例\\2021\\20210806";
|
|
|
+ File[] scenes = FileUtil.getDirectory(dataUrl0).listFiles();
|
|
|
+ if (scenes == null) {
|
|
|
+ throw new RuntimeException("目录:" + dataUrl0 + " 下没有文件!");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ List<SceneAccidentPO> list = new ArrayList<SceneAccidentPO>();
|
|
|
+ List<SceneAccidentPO> updateList = new ArrayList<SceneAccidentPO>();
|
|
|
+ for (File scene1 : scenes) {
|
|
|
+ String dataUrlNew = scene1.getAbsolutePath();
|
|
|
+ File[] scenes1 = FileUtil.getDirectory(dataUrlNew).listFiles();
|
|
|
+ if (scenes1 == null) {
|
|
|
+ throw new RuntimeException("目录:" + dataUrlNew + " 下没有文件!");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (File scene : scenes1) {
|
|
|
+ //判断是否为场景文件夹
|
|
|
+ if (scene.isDirectory()) {
|
|
|
+ String dataUrlNew1 = scene.getAbsolutePath();
|
|
|
+ File[] scenes2 = FileUtil.getDirectory(dataUrlNew1).listFiles();
|
|
|
+ if (scenes2 == null) {
|
|
|
+ throw new RuntimeException("目录:" + dataUrlNew1 + " 下没有文件!");
|
|
|
+ }
|
|
|
+ SceneAccidentPO sceneAccidentPO = null;
|
|
|
+ String isUpdate = "";
|
|
|
+ for (File scene3 : scenes2) {
|
|
|
+ String dataUrl = scene3.getAbsolutePath();
|
|
|
+ if (dataUrl.indexOf(".json") != -1) {
|
|
|
+ // -------------------------------- 读取结构化数据文件 --------------------------------
|
|
|
+ // -------------------------------- label.json --------------------------------
|
|
|
+ String json = FileUtil.readFile(dataUrl);
|
|
|
+ ObjectMapper objMap = new ObjectMapper();
|
|
|
+ JsonNode root = objMap.readTree(json);
|
|
|
+ //判断是否存在
|
|
|
+ String sceneName = root.path("场景名称").asText();
|
|
|
+ String sceneId = SceneAccidentMapper.querySceneAccidentByNmae(sceneName);
|
|
|
+ sceneAccidentPO = sceneAccidentPO.builder()
|
|
|
+ .accidentId(StringUtil.getRandomUUID())
|
|
|
+ .sceneName(sceneName)
|
|
|
+ .scenceResume(root.path("场景描述").asText())
|
|
|
+ .selfDriving(root.path("自车驾驶行为").asText())
|
|
|
+ .targetDriving(root.path("目标驾驶行为").asText())
|
|
|
+ .selfReaction(root.path("自车反应行为").asText())
|
|
|
+ .conflictBehavior(root.path("冲突行为").asText())
|
|
|
+ .conflictType(root.path("冲突类型").asText())
|
|
|
+ .sceneTime(root.path("时间").asText())
|
|
|
+ .sceneWeather(root.path("天气").asText())
|
|
|
+ .maxTime(root.path("max_time").asText())
|
|
|
+ .isDeleted("0")
|
|
|
+ .build();
|
|
|
+
|
|
|
+ String xodrAderss = root.path("xodr").asText();
|
|
|
+ String osgbAderss = root.path("osgb").asText();
|
|
|
+ sceneAccidentPO.setOsgbAddress(dataUrl0 + osgbAderss);
|
|
|
+ sceneAccidentPO.setXodrAddress(dataUrl0 + xodrAderss);
|
|
|
+ // -------------------------------- 保存数据到 mysql --------------------------------
|
|
|
+ if (ObjectUtil.isNull(sceneId)) {
|
|
|
+ isUpdate = "0";
|
|
|
+ sceneAccidentPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
+ sceneAccidentPO.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ // return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景名称" + sceneName + "已存在,请检查");
|
|
|
+ } else {
|
|
|
+ isUpdate = "1";
|
|
|
+ sceneAccidentPO.setAccidentId(sceneId);
|
|
|
+ sceneAccidentPO.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //插入地址
|
|
|
+ if (dataUrl.indexOf(".json") != -1) {
|
|
|
+ sceneAccidentPO.setJsonAddress(dataUrl);
|
|
|
+ } else if (dataUrl.indexOf(".xml") != -1 || dataUrl.indexOf(".xosc") != -1) {
|
|
|
+ sceneAccidentPO.setXmlAddress(dataUrl);
|
|
|
+ } /*else if (dataUrl.indexOf(".xodr") != -1) {
|
|
|
+ sceneAccidentPO.setXodrAddress(dataUrl);
|
|
|
+ } else if (dataUrl.indexOf(".osgb") != -1) {
|
|
|
+ sceneAccidentPO.setOsgbAddress(dataUrl);
|
|
|
+ }*/ else if (dataUrl.indexOf("simulation.mp4") != -1) {
|
|
|
+ sceneAccidentPO.setVideoAddress(dataUrl);
|
|
|
+ } else if (dataUrl.indexOf("simulation.mp4") == -1 && dataUrl.indexOf(".mp4") != -1) {
|
|
|
+ sceneAccidentPO.setVideoPreview(dataUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (isUpdate.equals("0")) {
|
|
|
+ list.add(sceneAccidentPO);
|
|
|
+ } else if (isUpdate.equals("1")) {
|
|
|
+ updateList.add(sceneAccidentPO);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotNull(list)) {
|
|
|
+ SceneAccidentMapper.saveSceneAccidentList(list);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotNull(updateList)) {
|
|
|
+ SceneAccidentMapper.updateSceneAccidentList(updateList);
|
|
|
+ }
|
|
|
+ return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "该场景文件" + dataUrl0 + "解析出错");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+/* public static FileItem createFileItem(String filePath, String fileName){
|
|
|
+ String fieldName = "file";
|
|
|
+ FileItemFactory factory = new DiskFileItemFactory();
|
|
|
+ FileItem item = factory.createItem(fieldName, "text/plain", false,fileName);
|
|
|
+ File newfile = new File(filePath);
|
|
|
+ int bytesRead = 0;
|
|
|
+ byte[] buffer = new byte[8192];
|
|
|
+ try (FileInputStream fis = new FileInputStream(newfile);
|
|
|
+ OutputStream os = item.getOutputStream()) {
|
|
|
+ while ((bytesRead = fis.read(buffer, 0, 8192))!= -1)
|
|
|
+ {
|
|
|
+ os.write(buffer, 0, bytesRead);
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return item;
|
|
|
}*/
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取交通事故场景数据:
|
|
|
+ */
|
|
|
+ public ResponseBodyVO<String> importMiNio(MinioParameter parms) {
|
|
|
+
|
|
|
+ MinioParameter MI = new MinioParameter();
|
|
|
+
|
|
|
+ MI.setObjectName(parms.getObjectName());
|
|
|
+ List<String> errList=new ArrayList<>();
|
|
|
+ List<String> list = fileDownService.listDeepOne(MI).getInfo();
|
|
|
+ String OsgbPath=null;
|
|
|
+ String XodrPath=null;
|
|
|
+ for (String filePath:list) {
|
|
|
+ if (filePath.indexOf("/OSGB") != -1) {
|
|
|
+ OsgbPath = filePath;
|
|
|
+ } else if (filePath.indexOf("/XODR") != -1) {
|
|
|
+ XodrPath = filePath;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (String filePath:list) {
|
|
|
+ if(filePath.indexOf("/Scenarios")!=-1){
|
|
|
+ MI.setObjectName(filePath);
|
|
|
+ List<String> listScene = fileDownService.listDeepOne(MI).getInfo();
|
|
|
+ for (String scenePath:listScene) {
|
|
|
+
|
|
|
+ try {
|
|
|
+ MI.setObjectName(scenePath);
|
|
|
+ List<String> listAderss = fileDownService.list(MI).getInfo();
|
|
|
+ SceneAccidentPO sceneAccidentPO = null;
|
|
|
+ String isupdate = null;
|
|
|
+ for (String adress : listAderss) {
|
|
|
+ if (adress.indexOf(".json") != -1) {
|
|
|
+ MI.setObjectName(adress);
|
|
|
+ Response download = fileDownService.download(MI);
|
|
|
+ // -------------------------------- label.json --------------------------------
|
|
|
+ String json = download.body().toString();
|
|
|
+ ObjectMapper objMap = new ObjectMapper();
|
|
|
+ JsonNode root = objMap.readTree(json);
|
|
|
+ //判断场景名称唯一
|
|
|
+ String sceneName = root.path("场景名称").asText();
|
|
|
+ String sceneId = SceneAccidentMapper.querySceneAccidentByNmae(sceneName);
|
|
|
+ String osgbAdress = OsgbPath + "/" + root.path("osgb").asText();
|
|
|
+ String xodrAdress = XodrPath + "/" + root.path("xodr").asText();
|
|
|
+ sceneAccidentPO = sceneAccidentPO.builder()
|
|
|
+ .accidentId(StringUtil.getRandomUUID())
|
|
|
+ .sceneName(sceneName)
|
|
|
+ .scenceResume(root.path("场景描述").asText())
|
|
|
+ .selfDriving(root.path("自车驾驶行为").asText())
|
|
|
+ .targetDriving(root.path("目标驾驶行为").asText())
|
|
|
+ .selfReaction(root.path("自车反应行为").asText())
|
|
|
+ .conflictBehavior(root.path("冲突行为").asText())
|
|
|
+ .conflictType(root.path("冲突类型").asText())
|
|
|
+ .sceneTime(root.path("时间").asText())
|
|
|
+ .sceneWeather(root.path("天气").asText())
|
|
|
+ .maxTime(root.path("max_time").asText())
|
|
|
+ .xodrAddress(xodrAdress)
|
|
|
+ .osgbAddress(osgbAdress)
|
|
|
+ .isDeleted("0")
|
|
|
+ .build();
|
|
|
+ if (ObjectUtil.isNull(sceneId)) {
|
|
|
+ isupdate = "0";
|
|
|
+ } else {
|
|
|
+ isupdate = "1";
|
|
|
+ sceneAccidentPO.setAccidentId(sceneId);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (adress.indexOf(".json") != -1) {
|
|
|
+ sceneAccidentPO.setJsonAddress(adress);
|
|
|
+ } else if (adress.indexOf(".xml") != -1 || adress.indexOf(".xosc") != -1) {
|
|
|
+ sceneAccidentPO.setXmlAddress(adress);
|
|
|
+ } else if (adress.indexOf(".xodr") != -1) {
|
|
|
+ sceneAccidentPO.setXodrAddress(adress);
|
|
|
+ } else if (adress.indexOf(".osgb") != -1) {
|
|
|
+ sceneAccidentPO.setOsgbAddress(adress);
|
|
|
+ } else if (adress.indexOf(".mp4") != -1) {
|
|
|
+ sceneAccidentPO.setVideoAddress(adress);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (isupdate.equals("0")) {
|
|
|
+ // -------------------------------- 保存数据到 mysql --------------------------------
|
|
|
+ sceneAccidentPO.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
+ sceneAccidentPO.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ SceneAccidentMapper.saveSceneAccident(sceneAccidentPO);
|
|
|
+ } else if (isupdate.equals("1")) {
|
|
|
+ // -------------------------------- 修改数据到 mysql --------------------------------
|
|
|
+ sceneAccidentPO.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
+ sceneAccidentPO.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
+ SceneAccidentMapper.updateSceneAccident(sceneAccidentPO);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ errList.add(scenePath);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|