Przeglądaj źródła

7/29 专利挖掘文件

xiexiang 1 rok temu
rodzic
commit
c351747446

+ 2 - 0
src/main/java/cn/cslg/pas/common/vo/business/HandleResultFileVO.java

@@ -28,6 +28,8 @@ public class HandleResultFileVO {
 
     private String createId;
 
+    private Integer source;
+
     /**
      * 上传人
      */

+ 8 - 0
src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectFilesVO.java

@@ -82,4 +82,12 @@ public class PatentDigProjectFilesVO {
     private Date createTime;
 
     private ProjectTask projectTask;
+
+    /**
+     * 来源:1 PatentDigProjectFiles
+     *      2 AssoHandleResultFile
+     *      3 AssoProjectFile
+     *      4 AssoTaskFile
+     */
+    private Integer source;
 }

+ 9 - 0
src/main/java/cn/cslg/pas/controller/PatentDigProjectFilesController.java

@@ -95,4 +95,13 @@ public class PatentDigProjectFilesController {
         return Response.success(records);
     }
 
+    @Operation(summary = "删除专利挖掘项目文件")
+    @GetMapping("/delete")
+    public Response delete(Integer source, String fileGuid) throws Exception {
+        patentDigProjectFilesService.delete(source, fileGuid);
+        Records records = new Records();
+        records.setData("success");
+        return Response.success(records);
+    }
+
 }

+ 41 - 1
src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java

@@ -317,6 +317,10 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
 
     /**
      * 查询专利挖掘项目所有文件
+     * 来源:1 PatentDigProjectFiles
+     *      2 AssoHandleResultFile
+     *      3 AssoProjectFile
+     *      4 AssoTaskFile
      *
      * @param queryPatentDigProjectFilesDTO
      */
@@ -347,6 +351,7 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
             patentDigProjectFilesList.forEach(item -> {
                 PatentDigProjectFilesVO patentDigProjectFilesVO = new PatentDigProjectFilesVO();
                 BeanUtils.copyProperties(item, patentDigProjectFilesVO);
+                patentDigProjectFilesVO.setSource(1);
                 patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
             });
         }
@@ -378,6 +383,7 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
                     if (projectTask != null) {
                         patentDigProjectFilesVO.setProcessId(projectTask.getProcessId());
                     }
+                    patentDigProjectFilesVO.setSource(4);
                     patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
                 });
             }
@@ -398,9 +404,9 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
                     patentDigProjectFilesVO.setCreateId(item.getCreateId());
                     patentDigProjectFilesVO.setProcessId(processId);
                     patentDigProjectFilesVO.setCreateTime(item.getCreateTime());
+                    patentDigProjectFilesVO.setSource(2);
                     patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
                 });
-
             }
         }
         //查询项目下的文件
@@ -415,6 +421,7 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
                     patentDigProjectFilesVO.setFileGuid(item.getFileGuid());
                     patentDigProjectFilesVO.setCreateId(item.getCreateId());
                     patentDigProjectFilesVO.setCreateTime(item.getCreateTime());
+                    patentDigProjectFilesVO.setSource(3);
                     patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
                 });
             }
@@ -426,4 +433,37 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
         }
         return patentDigProjectFilesVOS;
     }
+
+    /**
+     * 删除
+     * 来源:1 PatentDigProjectFiles
+     *      2 AssoHandleResultFile
+     *      3 AssoProjectFile
+     *      4 AssoTaskFile
+     * @param source
+     * @param fileGuid
+     */
+    public void delete(Integer source, String fileGuid) {
+        if (fileGuid != null && !fileGuid.trim().isEmpty()) {
+            if (source != null) {
+                if (source.equals(1)) {
+                    LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(PatentDigProjectFiles::getFileGuid, fileGuid);
+                    this.remove(queryWrapper);
+                } else if (source.equals(2)) {
+                    LambdaQueryWrapper<AssoHandleResultFile> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(AssoHandleResultFile::getFileGuid, fileGuid);
+                    assoHandleResultFileService.remove(queryWrapper);
+                } else if (source.equals(3)) {
+                    LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(AssoProjectFile::getFileGuid, fileGuid);
+                    assoProjectFileService.remove(queryWrapper);
+                } else if (source.equals(4)) {
+                    LambdaQueryWrapper<AssoTaskFile> queryWrapper = new LambdaQueryWrapper<>();
+                    queryWrapper.eq(AssoTaskFile::getFileGuid, fileGuid);
+                    assoTaskFileService.remove(queryWrapper);
+                }
+            }
+        }
+    }
 }

+ 199 - 2
src/main/java/cn/cslg/pas/service/business/PatentExportService.java

@@ -67,6 +67,199 @@ public class PatentExportService {
     @Autowired
     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 {
         EsCustomFieldBatchVO EsVO = exportTask.getEsVO();
         try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+            //字段是否被选择
             String esSelected = JsonUtils.objectToJson(EsVO.getSelected());
-            //selected字符串转PatentExportVO集合
+            //专利字段的集合
             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());
@@ -103,6 +298,7 @@ public class PatentExportService {
             }
             //name的集合
             List<String> headers = selected.stream().filter(PatentExportVO::getSelected).map(PatentExportVO::getName).distinct().collect(Collectors.toList());
+            long startTime = System.currentTimeMillis();
             //新建工作簿
             HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
             //新建sheet页
@@ -227,6 +423,7 @@ public class PatentExportService {
                 messageService.sendPatentExportMessage(webSocketMessageVO);
             }
             hssfWorkbook.write(out);
+            log.info("导出excel结束,总数据量={},耗时={}ms", total, System.currentTimeMillis() - startTime);
             WebSocketMessageVO webSocketMessageVO = new WebSocketMessageVO();
             webSocketMessageVO.setProjectId(EsVO.getProjectId());
             webSocketMessageVO.setCreateId(exportTask.getCreateId());

+ 2 - 0
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -403,6 +403,7 @@ import java.util.stream.Collectors;
                                 BeanUtils.copyProperties(patentDigProjectFiles1, handleResultFileVO);
                                 handleResultFileVO.setGuid(patentDigProjectFiles1.getFileGuid());
                                 handleResultFileVO.setType(systemFile.getType());
+                                handleResultFileVO.setSource(1);
                                 handleResultFileVO.setOriginalName(systemFile.getOriginalName());
                             }
                             handleResultFileVOS.add(handleResultFileVO);
@@ -492,6 +493,7 @@ import java.util.stream.Collectors;
                     if (systemFile != null) {
                         BeanUtils.copyProperties(assoHandleResultFile, handleResultFileVO);
                         handleResultFileVO.setGuid(assoHandleResultFile.getFileGuid());
+                        handleResultFileVO.setSource(2);
                         handleResultFileVO.setType(systemFile.getType());
                         handleResultFileVO.setOriginalName(systemFile.getOriginalName());
                     }

+ 1 - 0
src/main/java/cn/cslg/pas/service/business/TaskHandleResultService.java

@@ -236,6 +236,7 @@ public class TaskHandleResultService extends ServiceImpl<TaskHandleResultMapper,
                         handleResultFileVO.setGuid(assoHandleResultFile.getFileGuid());
                         handleResultFileVO.setType(systemFile.getType());
                         handleResultFileVO.setOriginalName(systemFile.getOriginalName());
+                        handleResultFileVO.setSource(2);
                         handleResultFileVOS.add(handleResultFileVO);
                     }
                 }