|
@@ -2,7 +2,9 @@ package com.css.simulation.resource.scene.service;
|
|
|
|
|
|
|
|
|
|
import api.common.pojo.common.ResponseBodyVO;
|
|
import api.common.pojo.common.ResponseBodyVO;
|
|
|
|
+import api.common.pojo.constants.DictConstants;
|
|
import api.common.pojo.param.scene.SceneGeneralTemplateParam;
|
|
import api.common.pojo.param.scene.SceneGeneralTemplateParam;
|
|
|
|
+import api.common.pojo.po.system.SceneImportPO;
|
|
import api.common.pojo.vo.scene.SceneGeneralTemplateMbVO;
|
|
import api.common.pojo.vo.scene.SceneGeneralTemplateMbVO;
|
|
import api.common.pojo.vo.scene.SceneGeneralTemplateVO;
|
|
import api.common.pojo.vo.scene.SceneGeneralTemplateVO;
|
|
import api.common.util.JsonUtil;
|
|
import api.common.util.JsonUtil;
|
|
@@ -117,88 +119,187 @@ public class SceneGeneralTemplateService {
|
|
/**
|
|
/**
|
|
* 泛化模板导入:
|
|
* 泛化模板导入:
|
|
*/
|
|
*/
|
|
- @SneakyThrows
|
|
|
|
- public ResponseBodyVO<String> saveSceneGeneralTemplate(File excelFile,String version) {
|
|
|
|
- FileInputStream is = new FileInputStream(excelFile); //文件流
|
|
|
|
- Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的
|
|
|
|
- int sheetCount = workbook.getNumberOfSheets(); //Sheet的数量
|
|
|
|
- List<SceneGeneralTemplatePO> list=new ArrayList<>();
|
|
|
|
- List<String> fileNameAll=new ArrayList<>();
|
|
|
|
- //遍历每个Sheet
|
|
|
|
- for (int s = 0; s < sheetCount; s++) {
|
|
|
|
- Sheet sheet = workbook.getSheetAt(s);
|
|
|
|
- String sheetName = sheet.getSheetName(); //文件Sheet的名称
|
|
|
|
- //验证模板名称是否正确 filrName为字典中的类别名
|
|
|
|
|
|
+ public void saveSceneGeneralTemplate(File excelFile, String version) {
|
|
|
|
+ try {
|
|
|
|
+ FileInputStream is = new FileInputStream(excelFile); //文件流
|
|
|
|
+ Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的
|
|
|
|
+ int sheetCount = workbook.getNumberOfSheets(); //Sheet的数量
|
|
|
|
+ List<SceneGeneralTemplatePO> list = new ArrayList<>();
|
|
|
|
+ List<String> fileNameAll = new ArrayList<>();
|
|
|
|
+ //遍历每个Sheet
|
|
|
|
+ for (int s = 0; s < sheetCount; s++) {
|
|
|
|
+ Sheet sheet = workbook.getSheetAt(s);
|
|
|
|
+ String sheetName = sheet.getSheetName(); //文件Sheet的名称
|
|
|
|
+ //验证模板名称是否正确 filrName为字典中的类别名
|
|
/* Map<String, String> map = dictService.getDictMapByType("fileName");
|
|
/* Map<String, String> map = dictService.getDictMapByType("fileName");
|
|
String fileName = map.get(sheetName);
|
|
String fileName = map.get(sheetName);
|
|
if (ObjectUtil.isNotNull(fileName)) {*/
|
|
if (ObjectUtil.isNotNull(fileName)) {*/
|
|
- int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数
|
|
|
|
- //效验sheet页是否符合标准
|
|
|
|
- Cell ce00 = sheet.getRow(0).getCell(0);
|
|
|
|
- //ce00.setCellType(CellType.STRING);
|
|
|
|
- String c00Value = ce00.getStringCellValue();
|
|
|
|
- if (c00Value != null && c00Value.equals("场景编号")) {
|
|
|
|
- //遍历每一行
|
|
|
|
- for (int r = 1; r < rowCount; r++) {
|
|
|
|
- Row row = sheet.getRow(r);
|
|
|
|
- int cellCount = row.getPhysicalNumberOfCells(); //获取总列数
|
|
|
|
- SceneGeneralTemplatePO po = new SceneGeneralTemplatePO();
|
|
|
|
- Field[] field = po.getClass().getDeclaredFields();
|
|
|
|
- //遍历每一个单元格
|
|
|
|
- for (int c = 0; c < cellCount; c++) {
|
|
|
|
- int a = c + 1;
|
|
|
|
- Cell cell = row.getCell(c);
|
|
|
|
- String cellValue = null;
|
|
|
|
- if (r > 0 && c == 3) {
|
|
|
|
- Date aaa = cell.getDateCellValue();
|
|
|
|
- cellValue = TimeUtil.getToStringDate(aaa, 4);
|
|
|
|
- } else {
|
|
|
|
- //在读取单元格内容前,设置所有单元格中内容都是字符串类型
|
|
|
|
- cell.setCellType(CellType.STRING);
|
|
|
|
- //按照字符串类型读取单元格内数据
|
|
|
|
- cellValue = cell.getStringCellValue();
|
|
|
|
|
|
+ int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数
|
|
|
|
+ //效验sheet页是否符合标准
|
|
|
|
+ Cell ce00 = sheet.getRow(0).getCell(0);
|
|
|
|
+ //ce00.setCellType(CellType.STRING);
|
|
|
|
+ String c00Value = ce00.getStringCellValue();
|
|
|
|
+ if (c00Value != null && c00Value.equals("场景编号")) {
|
|
|
|
+ //遍历每一行
|
|
|
|
+ for (int r = 1; r < rowCount; r++) {
|
|
|
|
+ Row row = sheet.getRow(r);
|
|
|
|
+ int cellCount = row.getPhysicalNumberOfCells(); //获取总列数
|
|
|
|
+ SceneGeneralTemplatePO po = new SceneGeneralTemplatePO();
|
|
|
|
+ Field[] field = po.getClass().getDeclaredFields();
|
|
|
|
+ //遍历每一个单元格
|
|
|
|
+ for (int c = 0; c < cellCount; c++) {
|
|
|
|
+ int a = c + 1;
|
|
|
|
+ Cell cell = row.getCell(c);
|
|
|
|
+ String cellValue = null;
|
|
|
|
+ if (r > 0 && c == 3) {
|
|
|
|
+ Date aaa = cell.getDateCellValue();
|
|
|
|
+ cellValue = TimeUtil.getToStringDate(aaa, 4);
|
|
|
|
+ } else {
|
|
|
|
+ //在读取单元格内容前,设置所有单元格中内容都是字符串类型
|
|
|
|
+ cell.setCellType(CellType.STRING);
|
|
|
|
+ //按照字符串类型读取单元格内数据
|
|
|
|
+ cellValue = cell.getStringCellValue();
|
|
|
|
+ }
|
|
|
|
+ /*在这里可以对每个单元格中的值进行二次操作转化*/
|
|
|
|
+ // System.out.print(cellValue + " ");
|
|
|
|
+ if (r > 0) {
|
|
|
|
+ //获取属性的名字
|
|
|
|
+ String name = field[a].getName();
|
|
|
|
+ //将属性名的第一位字母大写
|
|
|
|
+ name = name.substring(0, 1).toUpperCase() + name.substring(1);
|
|
|
|
+ //调用setter方法设属性值
|
|
|
|
+ Class[] parameterTypes = new Class[1];
|
|
|
|
+ parameterTypes[0] = field[a].getType();
|
|
|
|
+ Method getOrSet = po.getClass().getDeclaredMethod("set" + name, parameterTypes);
|
|
|
|
+ getOrSet.invoke(po, cellValue);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- /*在这里可以对每个单元格中的值进行二次操作转化*/
|
|
|
|
- // System.out.print(cellValue + " ");
|
|
|
|
|
|
+ System.out.println();
|
|
if (r > 0) {
|
|
if (r > 0) {
|
|
- //获取属性的名字
|
|
|
|
- String name = field[a].getName();
|
|
|
|
- //将属性名的第一位字母大写
|
|
|
|
- name = name.substring(0, 1).toUpperCase() + name.substring(1);
|
|
|
|
- //调用setter方法设属性值
|
|
|
|
- Class[] parameterTypes = new Class[1];
|
|
|
|
- parameterTypes[0] = field[a].getType();
|
|
|
|
- Method getOrSet = po.getClass().getDeclaredMethod("set" + name, parameterTypes);
|
|
|
|
- getOrSet.invoke(po, cellValue);
|
|
|
|
|
|
+ po.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
|
+ po.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
|
+ po.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
|
+ po.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
+ po.setIsDeleted("0");
|
|
|
|
+ po.setId(StringUtil.getRandomUUID());
|
|
|
|
+ po.setFileName(sheetName);
|
|
|
|
+ po.setVersion(version);
|
|
|
|
+ fileNameAll.add(sheetName);
|
|
|
|
+ list.add(po);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- System.out.println();
|
|
|
|
- if (r > 0) {
|
|
|
|
- po.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
|
- po.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
|
- po.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
|
- po.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
- po.setIsDeleted("0");
|
|
|
|
- po.setId(StringUtil.getRandomUUID());
|
|
|
|
- po.setFileName(sheetName);
|
|
|
|
- po.setVersion(version);
|
|
|
|
- fileNameAll.add(sheetName);
|
|
|
|
- list.add(po);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
+ //}
|
|
|
|
+ }
|
|
|
|
+ if (ObjectUtil.isNotNull(list)) {
|
|
|
|
+ SceneGeneralTemplatePO po = list.get(0);
|
|
|
|
+ po.setFileNameAll(fileNameAll);
|
|
|
|
+ mapper.deleteSceneGeneralTemplateAll(po);
|
|
|
|
+ mapper.saveSceneGeneralTemplateAll(list);
|
|
|
|
+
|
|
}
|
|
}
|
|
- //}
|
|
|
|
|
|
+ }catch (Exception e){
|
|
}
|
|
}
|
|
- if(ObjectUtil.isNotNull(list)){
|
|
|
|
- SceneGeneralTemplatePO po=list.get(0);
|
|
|
|
- po.setFileNameAll(fileNameAll);
|
|
|
|
- mapper.deleteSceneGeneralTemplateAll(po);
|
|
|
|
- mapper.saveSceneGeneralTemplateAll(list);
|
|
|
|
- return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
|
|
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 泛化模板导入:
|
|
|
|
+ */
|
|
|
|
+ public SceneImportPO saveSceneGeneralTemplateNew(File excelFile, String version,SceneImportPO sceneImportPO) {
|
|
|
|
+ try {
|
|
|
|
+ FileInputStream is = new FileInputStream(excelFile); //文件流
|
|
|
|
+ Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的
|
|
|
|
+ int sheetCount = workbook.getNumberOfSheets(); //Sheet的数量
|
|
|
|
+ List<SceneGeneralTemplatePO> list = new ArrayList<>();
|
|
|
|
+ List<String> fileNameAll = new ArrayList<>();
|
|
|
|
+ //遍历每个Sheet
|
|
|
|
+ for (int s = 0; s < sheetCount; s++) {
|
|
|
|
+ Sheet sheet = workbook.getSheetAt(s);
|
|
|
|
+ String sheetName = sheet.getSheetName(); //文件Sheet的名称
|
|
|
|
+ //验证模板名称是否正确 filrName为字典中的类别名
|
|
|
|
+ /* Map<String, String> map = dictService.getDictMapByType("fileName");
|
|
|
|
+ String fileName = map.get(sheetName);
|
|
|
|
+ if (ObjectUtil.isNotNull(fileName)) {*/
|
|
|
|
+ int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数
|
|
|
|
+ //效验sheet页是否符合标准
|
|
|
|
+ Cell ce00 = sheet.getRow(0).getCell(0);
|
|
|
|
+ //ce00.setCellType(CellType.STRING);
|
|
|
|
+ String c00Value = ce00.getStringCellValue();
|
|
|
|
+ if (c00Value != null && c00Value.equals("场景编号")) {
|
|
|
|
+ //遍历每一行
|
|
|
|
+ for (int r = 1; r < rowCount; r++) {
|
|
|
|
+ Row row = sheet.getRow(r);
|
|
|
|
+ int cellCount = row.getPhysicalNumberOfCells(); //获取总列数
|
|
|
|
+ SceneGeneralTemplatePO po = new SceneGeneralTemplatePO();
|
|
|
|
+ Field[] field = po.getClass().getDeclaredFields();
|
|
|
|
+ //遍历每一个单元格
|
|
|
|
+ for (int c = 0; c < cellCount; c++) {
|
|
|
|
+ int a = c + 1;
|
|
|
|
+ Cell cell = row.getCell(c);
|
|
|
|
+ String cellValue = null;
|
|
|
|
+ if (r > 0 && c == 3) {
|
|
|
|
+ Date aaa = cell.getDateCellValue();
|
|
|
|
+ cellValue = TimeUtil.getToStringDate(aaa, 4);
|
|
|
|
+ } else {
|
|
|
|
+ //在读取单元格内容前,设置所有单元格中内容都是字符串类型
|
|
|
|
+ cell.setCellType(CellType.STRING);
|
|
|
|
+ //按照字符串类型读取单元格内数据
|
|
|
|
+ cellValue = cell.getStringCellValue();
|
|
|
|
+ }
|
|
|
|
+ /*在这里可以对每个单元格中的值进行二次操作转化*/
|
|
|
|
+ // System.out.print(cellValue + " ");
|
|
|
|
+ if (r > 0) {
|
|
|
|
+ //获取属性的名字
|
|
|
|
+ String name = field[a].getName();
|
|
|
|
+ //将属性名的第一位字母大写
|
|
|
|
+ name = name.substring(0, 1).toUpperCase() + name.substring(1);
|
|
|
|
+ //调用setter方法设属性值
|
|
|
|
+ Class[] parameterTypes = new Class[1];
|
|
|
|
+ parameterTypes[0] = field[a].getType();
|
|
|
|
+ Method getOrSet = po.getClass().getDeclaredMethod("set" + name, parameterTypes);
|
|
|
|
+ getOrSet.invoke(po, cellValue);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println();
|
|
|
|
+ if (r > 0) {
|
|
|
|
+ po.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
|
+ po.setCreateUserId(AuthUtil.getCurrentUserId());
|
|
|
|
+ po.setModifyUserId(AuthUtil.getCurrentUserId());
|
|
|
|
+ po.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
+ po.setIsDeleted("0");
|
|
|
|
+ po.setId(StringUtil.getRandomUUID());
|
|
|
|
+ po.setFileName(sheetName);
|
|
|
|
+ po.setVersion(version);
|
|
|
|
+ fileNameAll.add(sheetName);
|
|
|
|
+ list.add(po);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //}
|
|
|
|
+ }
|
|
|
|
+ if (ObjectUtil.isNotNull(list)) {
|
|
|
|
+ SceneGeneralTemplatePO po = list.get(0);
|
|
|
|
+ po.setFileNameAll(fileNameAll);
|
|
|
|
+ mapper.deleteSceneGeneralTemplateAll(po);
|
|
|
|
+ mapper.saveSceneGeneralTemplateAll(list);
|
|
|
|
+
|
|
|
|
+ sceneImportPO.setStatus(DictConstants.SCENE_IMPORT_STATUS_4);
|
|
|
|
+ sceneImportPO.setSuccessNum(list.size());
|
|
|
|
+ return sceneImportPO;
|
|
|
|
+ }
|
|
|
|
+ sceneImportPO.setStatus(DictConstants.SCENE_IMPORT_STATUS_2);
|
|
|
|
+ return sceneImportPO;
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ sceneImportPO.setErrorMessage("该文件解析失败,请检查");
|
|
|
|
+ sceneImportPO.setStatus(DictConstants.SCENE_IMPORT_STATUS_2);
|
|
|
|
+ return sceneImportPO;
|
|
}
|
|
}
|
|
- return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "模板解析失败,请检查模板");
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
public List<SceneGeneralTemplatePO> querySceneGeneralTemplateList(SceneGeneralTemplateParam po) {
|
|
public List<SceneGeneralTemplatePO> querySceneGeneralTemplateList(SceneGeneralTemplateParam po) {
|
|
List<SceneGeneralTemplatePO> list=mapper.querySceneGeneralTemplateList(po);
|
|
List<SceneGeneralTemplatePO> list=mapper.querySceneGeneralTemplateList(po);
|
|
Map<String,String> scenarioRoadTypeMap= dictService.getDictMapByType("scenarioRoadType");
|
|
Map<String,String> scenarioRoadTypeMap= dictService.getDictMapByType("scenarioRoadType");
|