|
@@ -67,6 +67,199 @@ public class PatentExportService {
|
|
@Autowired
|
|
@Autowired
|
|
private EsCustomFieldService esCustomFieldService;
|
|
private EsCustomFieldService esCustomFieldService;
|
|
|
|
|
|
|
|
+// /**
|
|
|
|
+// * 导出专利
|
|
|
|
+// *
|
|
|
|
+// * @param exportTask
|
|
|
|
+// * @return
|
|
|
|
+// * @throws IOException
|
|
|
|
+// */
|
|
|
|
+// @Async
|
|
|
|
+// public void exportPatent(ExportTaskDTO exportTask) throws IOException {
|
|
|
|
+// EsCustomFieldBatchVO EsVO = exportTask.getEsVO();
|
|
|
|
+// try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
|
|
|
+// //字段是否被选择
|
|
|
|
+// String esSelected = JsonUtils.objectToJson(EsVO.getSelected());
|
|
|
|
+// //专利字段的集合
|
|
|
|
+// List<PatentExportVO> selected = Optional.ofNullable(JsonUtils.jsonToList(esSelected, PatentExportVO.class))
|
|
|
|
+// .orElse(new ArrayList<>());
|
|
|
|
+//
|
|
|
|
+// if (selected.isEmpty()) {
|
|
|
|
+// throw new IllegalArgumentException("没有选择要导出的字段数据");
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// //key的集合(标头:例如patentNo)
|
|
|
|
+// //过滤出被选择的字段
|
|
|
|
+// List<PatentExportVO> patentExportVOS = selected.stream()
|
|
|
|
+// .filter(PatentExportVO::getSelected)
|
|
|
|
+// .collect(Collectors.toList());
|
|
|
|
+// List<String> types = Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
|
|
|
|
+// List<InnerFields> innerFieldsList = new ArrayList<>();
|
|
|
|
+// for (PatentExportVO patentExportVO : patentExportVOS) {
|
|
|
|
+// if (types.contains(patentExportVO.getType())) {
|
|
|
|
+// InnerFields innerFields = new InnerFields();
|
|
|
|
+// innerFields.setFieldId(patentExportVO.getValue());
|
|
|
|
+// innerFields.setFieldType(Integer.parseInt(patentExportVO.getType()));
|
|
|
|
+// innerFieldsList.add(innerFields);
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //name的集合
|
|
|
|
+// List<String> headers = selected.stream().filter(PatentExportVO::getSelected).map(PatentExportVO::getName).distinct().collect(Collectors.toList());
|
|
|
|
+// //新建工作簿
|
|
|
|
+// HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
|
|
|
|
+// //新建sheet页
|
|
|
|
+// HSSFSheet sheet = hssfWorkbook.createSheet();
|
|
|
|
+// sheet.setDefaultColumnWidth(30);
|
|
|
|
+// //新建标头行
|
|
|
|
+// HSSFRow headerRow = sheet.createRow(0);
|
|
|
|
+// headerRow.setHeight((short) 500);
|
|
|
|
+// //新建标头行格式
|
|
|
|
+// HSSFCellStyle headerCellStyle = hssfWorkbook.createCellStyle();
|
|
|
|
+// //新建普通行格式
|
|
|
|
+// HSSFCellStyle commonCellStyle = hssfWorkbook.createCellStyle();
|
|
|
|
+// //遍历设置标头
|
|
|
|
+// for (int i = 0; i < headers.size(); i++) {
|
|
|
|
+// HSSFCell cell = headerRow.createCell(i);
|
|
|
|
+// ExcelUtils.setExcelCellStyle(headerCellStyle);
|
|
|
|
+// headerCellStyle.setAlignment(HorizontalAlignment.CENTER);
|
|
|
|
+// headerCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
|
+// headerCellStyle.setFillForegroundColor(HSSFColor.HSSFColorPredefined.SKY_BLUE.getIndex());
|
|
|
|
+// headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
|
|
|
+// headerCellStyle.setWrapText(true);
|
|
|
|
+// cell.setCellStyle(headerCellStyle);
|
|
|
|
+// cell.setCellValue(headers.get(i));
|
|
|
|
+// }
|
|
|
|
+// //根据projectId查询专利信息
|
|
|
|
+// List<String> patentNos = pdfExportFirstPageService.getPatentNo(EsVO);
|
|
|
|
+// if (patentNos.isEmpty()) {
|
|
|
|
+// throw new XiaoShiException("未获取到专利信息");
|
|
|
|
+// }
|
|
|
|
+// Integer total = patentNos.size();
|
|
|
|
+// Integer defaultNum = 0;
|
|
|
|
+// for (int i = 0; i < patentNos.size(); i++) {
|
|
|
|
+// String patentNo = patentNos.get(i);
|
|
|
|
+// Map<String, Object> map = new LinkedHashMap<>();
|
|
|
|
+// PatentNoVO patentNoVO = new PatentNoVO();
|
|
|
|
+// patentNoVO.setPatentNo(patentNo);
|
|
|
|
+// patentNoVO.setProjectId(exportTask.getProjectId());
|
|
|
|
+// PatentColumnDTO patent = patentService.selectPatentDetail(patentNoVO);
|
|
|
|
+// if (patent == null) {
|
|
|
|
+// defaultNum++;
|
|
|
|
+// continue;
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// EsQueryPatentFieldsDTO esQueryPatentFieldsDTO = new EsQueryPatentFieldsDTO();
|
|
|
|
+// esQueryPatentFieldsDTO.setProjectId(exportTask.getProjectId());
|
|
|
|
+// esQueryPatentFieldsDTO.setTaskId(EsVO.getTaskId());
|
|
|
|
+// esQueryPatentFieldsDTO.setPatentNos(patentNos);
|
|
|
|
+// esQueryPatentFieldsDTO.setInnerFields(innerFieldsList);
|
|
|
|
+// List<EsPatentFieldsVO> list = esCustomFieldService.getPatentFields(esQueryPatentFieldsDTO);
|
|
|
|
+//
|
|
|
|
+//
|
|
|
|
+// for (int j = 0; j < patentExportVOS.size(); j++) {
|
|
|
|
+// String column = patentExportVOS.get(j).getValue();
|
|
|
|
+// String name = patentExportVOS.get(j).getName();
|
|
|
|
+// String type = patentExportVOS.get(j).getType();
|
|
|
|
+//
|
|
|
|
+// if (types.contains(type)) {
|
|
|
|
+// EsPatentFieldsVO esPatentFieldsVO = list.stream()
|
|
|
|
+// .filter(item -> item.getPatentNo().equals(patentNo))
|
|
|
|
+// .findFirst()
|
|
|
|
+// .orElse(null);
|
|
|
|
+// if (esPatentFieldsVO != null) {
|
|
|
|
+// List<InnerPatentFieldsVO> innerClassFields = esPatentFieldsVO.getInnerClassFields();
|
|
|
|
+// if (!innerClassFields.isEmpty()) {
|
|
|
|
+// InnerPatentFieldsVO innerPatentFieldsVO = innerClassFields.stream()
|
|
|
|
+// .filter(item -> item.getField().equals(column) && item.getFieldType().equals(Integer.parseInt(type)))
|
|
|
|
+// .findFirst()
|
|
|
|
+// .orElse(null);
|
|
|
|
+// if (innerPatentFieldsVO != null) {
|
|
|
|
+// List<FieldValueVO> fieldValueVOS = innerPatentFieldsVO.getFieldValueVOS();
|
|
|
|
+// if (!fieldValueVOS.isEmpty()) {
|
|
|
|
+// StringBuffer sb = new StringBuffer();
|
|
|
|
+// for (FieldValueVO fieldValueVO : fieldValueVOS) {
|
|
|
|
+// String valueStr = fieldValueVO.getValue();
|
|
|
|
+// sb.append(valueStr);
|
|
|
|
+// }
|
|
|
|
+// map.put(name, sb.toString());
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// } else {
|
|
|
|
+// // 使用反射获取属性值
|
|
|
|
+// Object value = GenerateObjectUtil.getPropertyValue(patent, column);
|
|
|
|
+// if (value != null) {
|
|
|
|
+// String json = CommonService.readJsonFile("patent.json");
|
|
|
|
+// List<PatentConfigVO> patentConfigVOS = JSON.parseArray(json, PatentConfigVO.class);
|
|
|
|
+// PatentConfigVO patentConfigVO = patentConfigVOS.stream().filter(item -> item.getValue().equals(column)).findFirst().orElse(null);
|
|
|
|
+// String exportClass = patentConfigVO.getExportClass();
|
|
|
|
+// GetValueImp getValueImp = patentExportFactory.getClass(exportClass);
|
|
|
|
+// if (getValueImp != null) {
|
|
|
|
+// String reValue = getValueImp.getValue(value);
|
|
|
|
+// map.put(name, reValue);
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// //新建一普通行
|
|
|
|
+// HSSFRow row = sheet.createRow(i + 1);
|
|
|
|
+// row.setHeight((short) 800);
|
|
|
|
+// for (String key : map.keySet()) {
|
|
|
|
+// int index = headers.indexOf(key);
|
|
|
|
+// if (index != -1) {
|
|
|
|
+// HSSFCell cell = row.createCell(index);
|
|
|
|
+// ExcelUtils.setExcelCellStyle(commonCellStyle);
|
|
|
|
+// commonCellStyle.setVerticalAlignment(VerticalAlignment.TOP);
|
|
|
|
+// commonCellStyle.setWrapText(true);
|
|
|
|
+// cell.setCellStyle(commonCellStyle);
|
|
|
|
+// if (StringUtils.isNotNull(map.get(key))) {
|
|
|
|
+// cell.setCellValue(String.valueOf(map.get(key)));
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
|
|
|
|
+// webSocketMessageVO.setProjectId(EsVO.getProjectId());
|
|
|
|
+// webSocketMessageVO.setCreateId(exportTask.getCreateId());
|
|
|
|
+// webSocketMessageVO.setCode(602);
|
|
|
|
+// webSocketMessageVO.setAllNum(total);
|
|
|
|
+// webSocketMessageVO.setCurrentNum(i+1);
|
|
|
|
+// webSocketMessageVO.setTaskId(exportTask.getTaskId());
|
|
|
|
+// webSocketMessageVO.setState(1);
|
|
|
|
+// messageService.sendPatentExportMessage(webSocketMessageVO);
|
|
|
|
+// }
|
|
|
|
+// hssfWorkbook.write(out);
|
|
|
|
+// WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
|
|
|
|
+// webSocketMessageVO.setProjectId(EsVO.getProjectId());
|
|
|
|
+// webSocketMessageVO.setCreateId(exportTask.getCreateId());
|
|
|
|
+// webSocketMessageVO.setCode(603);
|
|
|
|
+// webSocketMessageVO.setAllNum(total);
|
|
|
|
+// webSocketMessageVO.setCurrentNum(total);
|
|
|
|
+// webSocketMessageVO.setTaskId(exportTask.getTaskId());
|
|
|
|
+// webSocketMessageVO.setState(2);
|
|
|
|
+// messageService.sendPatentExportMessage(webSocketMessageVO);
|
|
|
|
+// String fileGuid = "";
|
|
|
|
+// if (out.toByteArray() != null && out.toByteArray().length != 0) {
|
|
|
|
+// fileGuid = parseByteToFileUtils.uploadFile(out.toByteArray(), 1);
|
|
|
|
+// }
|
|
|
|
+// exportTask.setFileGuid(fileGuid);
|
|
|
|
+// exportTask.setAllNum(total);
|
|
|
|
+// exportTask.setDefaultNum(defaultNum);
|
|
|
|
+// exportTask.setDoneNum(total - defaultNum);
|
|
|
|
+// exportTask.setState(2);
|
|
|
|
+// Integer taskId = importTaskService.updateExportTask(exportTask);
|
|
|
|
+// if (taskId == null) {
|
|
|
|
+// throw new XiaoShiException("导出记录失败");
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// } catch (FileNotFoundException e) {
|
|
|
|
+// throw new FileNotFoundException();
|
|
|
|
+// } catch (Exception e) {
|
|
|
|
+//
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 导出专利
|
|
* 导出专利
|
|
*
|
|
*
|
|
@@ -78,16 +271,18 @@ public class PatentExportService {
|
|
public void exportPatent(ExportTaskDTO exportTask) throws IOException {
|
|
public void exportPatent(ExportTaskDTO exportTask) throws IOException {
|
|
EsCustomFieldBatchVO EsVO = exportTask.getEsVO();
|
|
EsCustomFieldBatchVO EsVO = exportTask.getEsVO();
|
|
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
|
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
|
|
|
+ //字段是否被选择
|
|
String esSelected = JsonUtils.objectToJson(EsVO.getSelected());
|
|
String esSelected = JsonUtils.objectToJson(EsVO.getSelected());
|
|
- //selected字符串转PatentExportVO集合
|
|
|
|
|
|
+ //专利字段的集合
|
|
List<PatentExportVO> selected = Optional.ofNullable(JsonUtils.jsonToList(esSelected, PatentExportVO.class))
|
|
List<PatentExportVO> selected = Optional.ofNullable(JsonUtils.jsonToList(esSelected, PatentExportVO.class))
|
|
.orElse(new ArrayList<>());
|
|
.orElse(new ArrayList<>());
|
|
- //导出文件名
|
|
|
|
|
|
+
|
|
if (selected.isEmpty()) {
|
|
if (selected.isEmpty()) {
|
|
throw new IllegalArgumentException("没有选择要导出的字段数据");
|
|
throw new IllegalArgumentException("没有选择要导出的字段数据");
|
|
}
|
|
}
|
|
|
|
|
|
//key的集合(标头:例如patentNo)
|
|
//key的集合(标头:例如patentNo)
|
|
|
|
+ //过滤出被选择的字段
|
|
List<PatentExportVO> patentExportVOS = selected.stream()
|
|
List<PatentExportVO> patentExportVOS = selected.stream()
|
|
.filter(PatentExportVO::getSelected)
|
|
.filter(PatentExportVO::getSelected)
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -103,6 +298,7 @@ public class PatentExportService {
|
|
}
|
|
}
|
|
//name的集合
|
|
//name的集合
|
|
List<String> headers = selected.stream().filter(PatentExportVO::getSelected).map(PatentExportVO::getName).distinct().collect(Collectors.toList());
|
|
List<String> headers = selected.stream().filter(PatentExportVO::getSelected).map(PatentExportVO::getName).distinct().collect(Collectors.toList());
|
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
//新建工作簿
|
|
//新建工作簿
|
|
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
|
|
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
|
|
//新建sheet页
|
|
//新建sheet页
|
|
@@ -227,6 +423,7 @@ public class PatentExportService {
|
|
messageService.sendPatentExportMessage(webSocketMessageVO);
|
|
messageService.sendPatentExportMessage(webSocketMessageVO);
|
|
}
|
|
}
|
|
hssfWorkbook.write(out);
|
|
hssfWorkbook.write(out);
|
|
|
|
+ log.info("导出excel结束,总数据量={},耗时={}ms", total, System.currentTimeMillis() - startTime);
|
|
WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
|
|
WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
|
|
webSocketMessageVO.setProjectId(EsVO.getProjectId());
|
|
webSocketMessageVO.setProjectId(EsVO.getProjectId());
|
|
webSocketMessageVO.setCreateId(exportTask.getCreateId());
|
|
webSocketMessageVO.setCreateId(exportTask.getCreateId());
|