Browse Source

模板管理以及按照模板分割

zxm
zhangxiaomeng 7 months ago
parent
commit
cad5558e91
  1. 224
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ChineseNumberFilter.java
  2. 5
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TitleFormatterController.java
  3. 297
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TitleFormatterControllerCopy.java
  4. 10
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TitleTemplateController.java
  5. 72
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyFileManageController.java
  6. 48
      ruoyi-api/src/main/java/com/ruoyi/api/domain/TitleTemplate.java
  7. 90
      ruoyi-system/src/main/java/com/ruoyi/system/domain/FileUploadDTO.java
  8. 100
      ruoyi-system/src/main/java/com/ruoyi/system/domain/TitleTemplate.java
  9. 7
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/TitleTemplateMapper.java
  10. 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/ITitleTemplateService.java
  11. 2
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LuceneUtil.java
  12. 12
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TitleTemplateServiceImpl.java
  13. 998
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WordSplitter.java
  14. 36
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ZhyFileManageServiceImpl.java
  15. 21
      ruoyi-system/src/main/resources/mapper/system/TitleTemplateMapper.xml
  16. 50
      ruoyi-ui/src/api/system/titleTemplate.js
  17. 1013
      ruoyi-ui/src/views/system/fileManage/index.vue

224
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ChineseNumberFilter.java

@ -0,0 +1,224 @@
package com.ruoyi.web.controller.system;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class ChineseNumberFilter {
// 中文数字字符集
private static final String[] CHINESE_DIGITS = {
"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十",
"百", "千", "万", "亿", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾"
};
// 阿拉伯数字正则表达式
private static final Pattern ARABIC_DIGITS_PATTERN = Pattern.compile("[0-9]+");
// 中文数字正则表达式
private static final Pattern CHINESE_DIGITS_PATTERN;
static {
// 构建中文数字正则表达式
StringBuilder chinesePatternBuilder = new StringBuilder();
for (String digit : CHINESE_DIGITS) {
chinesePatternBuilder.append(Pattern.quote(digit)).append("|");
}
String chinesePattern = chinesePatternBuilder.substring(0, chinesePatternBuilder.length() - 1);
CHINESE_DIGITS_PATTERN = Pattern.compile("(" + chinesePattern + ")+");
}
/**
* 过滤标题中的中文数字和阿拉伯数字
* @param title 原始标题
* @return 过滤后的标题
*/
public static String filterNumbers(String title) {
if (title == null || title.isEmpty()) {
return title;
}
// 移除阿拉伯数字
String result = removeArabicDigits(title);
// 移除中文数字
result = removeChineseDigits(result);
return result.trim();
}
/**
* 移除阿拉伯数字
*/
private static String removeArabicDigits(String text) {
Matcher matcher = ARABIC_DIGITS_PATTERN.matcher(text);
return matcher.replaceAll("");
}
/**
* 移除中文数字
*/
private static String removeChineseDigits(String text) {
String result = text;
for (String digit : CHINESE_DIGITS) {
result = result.replace(digit, "");
}
return result;
}
/**
* 提取标题中的数字格式保留数字但规范化格式
*/
public static String extractNumberFormat(String title) {
if (title == null || title.isEmpty()) {
return "";
}
// 提取阿拉伯数字
String arabicResult = extractArabicDigits(title);
// 提取中文数字
String chineseResult = extractChineseDigits(title);
return arabicResult + chineseResult;
}
/**
* 提取阿拉伯数字
*/
private static String extractArabicDigits(String text) {
Matcher matcher = ARABIC_DIGITS_PATTERN.matcher(text);
StringBuilder result = new StringBuilder();
while (matcher.find()) {
result.append("[数字]");
}
return result.toString();
}
/**
* 提取中文数字
*/
private static String extractChineseDigits(String text) {
Matcher matcher = CHINESE_DIGITS_PATTERN.matcher(text);
StringBuilder result = new StringBuilder();
while (matcher.find()) {
result.append("[中文数字]");
}
return result.toString();
}
/**
* 比较两个标题的数字格式是否相同
*/
public static boolean compareNumberFormats(String title1, String title2) {
String format1 = extractNumberFormat(title1);
String format2 = extractNumberFormat(title2);
return format1.equals(format2);
}
private static String getFirstNChars(String str, int n) {
if (str == null || n <= 0) {
return "";
}
return str.length() > n ? str.substring(0, n) : str;
}
/**
* 测试方法
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("中文标题数字格式比较工具");
System.out.println("=======================");
String useT = "第1部分 这是一级标题";
String useTFormat = extractNumberFormat(useT);
System.out.println("参考标题: " + useT);
System.out.println("参考标题数字格式: " + useTFormat);
System.out.println("请输入要比较的标题(输入'exit'退出):");
while (true) {
System.out.print("> ");
String input = scanner.nextLine();
if ("exit".equalsIgnoreCase(input)) {
break;
}
String result = filterNumbers(input);
String inputFormat = extractNumberFormat(input);
int aa = input.length();
String useTT = getFirstNChars(useT, aa);
String textResult = filterNumbers(useTT);
// 比较数字格式
boolean formatsMatch = compareNumberFormats(input, useTT);
System.out.println("原始模板标题: " + input);
System.out.println("过滤后模板标题: " + result);
System.out.println("原始标题: " + useTT);
System.out.println("过滤后标题: " + textResult);
System.out.println("检测到的数字格式: " + inputFormat);
System.out.println("与参考格式匹配: " + formatsMatch);
if(result.equals("")){
if (textResult.equals("")){
System.out.println("是一级标题");
}else {
System.out.println("不是");
}
}else {
// 判断是否是一级标题的逻辑
if (result.equals("")) {
if (textResult.equals("")) {
System.out.println("判断: 是一级标题");
} else {
System.out.println("判断: 不是一级标题");
}
} else {
if(textResult.contains(result)){
if (formatsMatch) {
System.out.println("判断: 数字格式匹配,可能是同级标题");
} else {
System.out.println("判断: 数字格式不匹配,不是同级标题");
}
}else {
System.out.println("判断: 不是一级标题");
}
}
}
char lastChar = input.charAt(input.length() - 1);
System.out.println(lastChar);
// 在实际标题中查找这个字符第一次出现的位置
int position = useT.indexOf(lastChar);
if (position == -1) {
// 如果没有找到,返回整个实际标题
System.out.println("没有");
}else {
String content = useT.substring(position + 1).trim();
System.out.println(content);
}
System.out.println();
}
scanner.close();
System.out.println("程序已退出。");
}
}

5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TitleFormatterController.java

@ -2,8 +2,8 @@ package com.ruoyi.web.controller.system;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.api.domain.TitleTemplate; import com.ruoyi.system.domain.TitleTemplate;
import com.ruoyi.api.service.impl.TitleTemplateServiceImpl; import com.ruoyi.system.service.impl.TitleTemplateServiceImpl;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -151,7 +151,6 @@ public class TitleFormatterController {
return result; return result;
} }
/** /**
* 精确模板匹配 * 精确模板匹配
*/ */

297
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TitleFormatterControllerCopy.java

@ -0,0 +1,297 @@
package com.ruoyi.web.controller.system;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.system.domain.TitleTemplate;
import com.ruoyi.system.service.impl.TitleTemplateServiceImpl;
import com.ruoyi.common.core.domain.AjaxResult;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.*;
@RestController
@RequestMapping("/system/formatterCopy")
public class TitleFormatterControllerCopy {
@Autowired
private TitleTemplateServiceImpl titleTemplateService;
@PostMapping
public AjaxResult formatDocument(@RequestParam("file") MultipartFile file,
@RequestParam("template") String templateJson) {
try {
// 解析模板参数
JSONObject templateObj = JSON.parseObject(templateJson);
Long templateType = Long.parseLong(templateObj.getString("id"));
TitleTemplate titleTemplate = titleTemplateService.selectTitleTemplateById(templateType);
if (titleTemplate == null) {
return AjaxResult.error("未找到对应的标题模板");
}
// 检查文件类型
if (!file.getOriginalFilename().endsWith(".docx")) {
return AjaxResult.error("仅支持.docx格式的文档");
}
// 处理文档
Map<String, Object> result = processDocumentWithNumbering(file, titleTemplate);
return AjaxResult.success("文档处理成功", result);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("文档处理失败: " + e.getMessage());
}
}
/**
* 处理文档并添加多级标题编号
*/
private Map<String, Object> processDocumentWithNumbering(MultipartFile file, TitleTemplate titleTemplate)
throws IOException {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> paragraphsInfo = new ArrayList<>();
// 初始化各级标题计数器
int[] levelCounters = new int[5]; // 0不使用,1-4对应各级标题
Arrays.fill(levelCounters, 0);
try (InputStream inputStream = file.getInputStream();
XWPFDocument document = new XWPFDocument(inputStream)) {
// 获取模板中的标题配置
String firstTitle = titleTemplate.getFirstTitle();
String secondTitle = titleTemplate.getSecondTitle();
String thirdTitle = titleTemplate.getThirdTitle();
String fourthTitle = titleTemplate.getFourthTitle();
System.out.println("=== 开始处理文档 ===");
System.out.println("模板配置: 一级标题='" + firstTitle + "', 二级标题='" + secondTitle +
"', 三级标题='" + thirdTitle + "', 四级标题='" + fourthTitle + "'");
// 遍历文档中的所有段落
List<XWPFParagraph> paragraphs = document.getParagraphs();
for (int i = 0; i < paragraphs.size(); i++) {
XWPFParagraph paragraph = paragraphs.get(i);
// 获取段落文本
String fullText = getParagraphText(paragraph);
if (fullText.isEmpty()) {
continue;
}
System.out.println("\n--- 处理段落 " + (i + 1) + " ---");
System.out.println("完整文本: '" + fullText + "'");
Map<String, Object> paraInfo = new HashMap<>();
paraInfo.put("originalText", fullText);
String numberedText = fullText;
int levelNumber = 0;
String levelName = "正文";
// 检查段落是否包含模板字符串并确定标题级别(精确匹配)
if (isExactTemplateMatch(fullText, firstTitle)) {
levelCounters[1]++;
resetLowerLevels(levelCounters, 1);
numberedText = generateLevelNumber(levelCounters, 1) + " " + extractPureContent(fullText, firstTitle);
levelNumber = 1;
levelName = "一级标题";
setParagraphStyle(paragraph, "Heading1");
System.out.println("识别为一级标题,新编号: " + numberedText);
} else if (isExactTemplateMatch(fullText, secondTitle)) {
levelCounters[2]++;
resetLowerLevels(levelCounters, 2);
numberedText = generateLevelNumber(levelCounters, 2) + " " + extractPureContent(fullText, secondTitle);
levelNumber = 2;
levelName = "二级标题";
setParagraphStyle(paragraph, "Heading2");
System.out.println("识别为二级标题,新编号: " + numberedText);
} else if (isExactTemplateMatch(fullText, thirdTitle)) {
levelCounters[3]++;
resetLowerLevels(levelCounters, 3);
numberedText = generateLevelNumber(levelCounters, 3) + " " + extractPureContent(fullText, thirdTitle);
levelNumber = 3;
levelName = "三级标题";
setParagraphStyle(paragraph, "Heading3");
System.out.println("识别为三级标题,新编号: " + numberedText);
} else if (isExactTemplateMatch(fullText, fourthTitle)) {
levelCounters[4]++;
resetLowerLevels(levelCounters, 4);
numberedText = generateLevelNumber(levelCounters, 4) + " " + extractPureContent(fullText, fourthTitle);
levelNumber = 4;
levelName = "四级标题";
setParagraphStyle(paragraph, "Heading4");
System.out.println("识别为四级标题,新编号: " + numberedText);
} else {
System.out.println("识别为正文");
}
// 设置段落信息
paraInfo.put("level", levelName);
paraInfo.put("levelNumber", levelNumber);
paraInfo.put("numberedText", numberedText);
paragraphsInfo.add(paraInfo);
// 更新段落文本
updateParagraphText(paragraph, numberedText);
}
}
result.put("paragraphs", paragraphsInfo);
result.put("summary", String.format(
"文档处理完成:一级标题%d个,二级标题%d个,三级标题%d个,四级标题%d个",
levelCounters[1], levelCounters[2], levelCounters[3], levelCounters[4]
));
return result;
}
/**
* 精确模板匹配
*/
private boolean isExactTemplateMatch(String text, String template) {
if (text == null || template == null || template.isEmpty()) {
return false;
}
return text.trim().startsWith(template.trim());
}
/**
* 提取纯文本内容
*/
private String extractPureContent(String fullText, String template) {
if (fullText.startsWith(template)) {
return fullText.substring(template.length()).trim();
}
return fullText;
}
/**
* 获取段落文本
*/
private String getParagraphText(XWPFParagraph paragraph) {
StringBuilder textBuilder = new StringBuilder();
for (XWPFRun run : paragraph.getRuns()) {
if (run.getText(0) != null) {
textBuilder.append(run.getText(0));
}
}
return textBuilder.toString().trim();
}
/**
* 生成级别编号
*/
private String generateLevelNumber(int[] levelCounters, int level) {
for (int i = 1; i < levelCounters.length; i++) {
if (levelCounters[i] == 0) {
levelCounters[i] = 1;
}
}
switch (level) {
case 1:
return generateChineseNumber(levelCounters[1]) + "、";
case 2:
return "(" + generateChineseNumber(levelCounters[2]) + ")";
case 3:
return levelCounters[3] + ".";
case 4:
return "(" + levelCounters[4] + ")";
default:
return "";
}
}
/**
* 生成中文数字
*/
private String generateChineseNumber(int number) {
String[] chineseNumbers = {"", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
if (number <= 10) {
return chineseNumbers[number];
} else if (number < 20) {
return "十" + (number > 10 ? chineseNumbers[number - 10] : "");
} else if (number < 100) {
int tens = number / 10;
int units = number % 10;
return chineseNumbers[tens] + "十" + (units > 0 ? chineseNumbers[units] : "");
} else {
return String.valueOf(number);
}
}
/**
* 重置下级标题计数器
*/
private void resetLowerLevels(int[] levelCounters, int currentLevel) {
for (int i = currentLevel + 1; i < levelCounters.length; i++) {
levelCounters[i] = 0;
}
}
/**
* 更新段落文本
*/
private void updateParagraphText(XWPFParagraph paragraph, String newText) {
// 清除原有的runs
for (int i = paragraph.getRuns().size() - 1; i >= 0; i--) {
paragraph.removeRun(i);
}
// 创建新的run并设置文本
XWPFRun run = paragraph.createRun();
run.setText(newText);
// 设置字体样式
run.setFontSize(12);
if (paragraph.getStyle() != null && paragraph.getStyle().startsWith("Heading")) {
run.setBold(true);
// 根据标题级别设置不同的字体大小
switch (paragraph.getStyle()) {
case "Heading1":
run.setFontSize(16);
break;
case "Heading2":
run.setFontSize(14);
break;
case "Heading3":
run.setFontSize(13);
break;
case "Heading4":
run.setFontSize(12);
break;
}
}
}
/**
* 设置段落样式
*/
private void setParagraphStyle(XWPFParagraph paragraph, String style) {
paragraph.setStyle(style);
if (style.startsWith("Heading")) {
// 设置不同的缩进
switch (style) {
case "Heading1":
paragraph.setIndentationLeft(0);
break;
case "Heading2":
paragraph.setIndentationLeft(200);
break;
case "Heading3":
paragraph.setIndentationLeft(400);
break;
case "Heading4":
paragraph.setIndentationLeft(600);
break;
}
}
}
}

10
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TitleTemplateController.java

@ -3,8 +3,8 @@ package com.ruoyi.web.controller.system;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.api.domain.TitleTemplate; import com.ruoyi.system.domain.TitleTemplate;
import com.ruoyi.api.service.ITitleTemplateService; import com.ruoyi.system.service.ITitleTemplateService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -27,11 +27,11 @@ public class TitleTemplateController extends BaseController
private ITitleTemplateService titleTemplateService; private ITitleTemplateService titleTemplateService;
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(TitleTemplate titleTemplate) public List<TitleTemplate> list(TitleTemplate titleTemplate)
{ {
startPage();
List<TitleTemplate> list = titleTemplateService.selectTitleTemplateList(titleTemplate); List<TitleTemplate> list = titleTemplateService.selectTitleTemplateList(titleTemplate);
return getDataTable(list); return list;
} }

72
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyFileManageController.java

@ -10,15 +10,13 @@ import com.ruoyi.common.utils.Neo4jUtil;
import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.system.domain.ZhyArticle; import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.ZhyDoc;
import com.ruoyi.system.domain.ZhyDocRelation;
import com.ruoyi.system.domain.ZhyFileManage;
import com.ruoyi.system.mapper.Test1Mapper; import com.ruoyi.system.mapper.Test1Mapper;
import com.ruoyi.system.mapper.ZhyArticleMapper; import com.ruoyi.system.mapper.ZhyArticleMapper;
import com.ruoyi.system.mapper.ZhyDocRelationMapper; import com.ruoyi.system.mapper.ZhyDocRelationMapper;
import com.ruoyi.system.service.impl.LuceneUtil; import com.ruoyi.system.service.impl.LuceneUtil;
import com.ruoyi.system.service.impl.ZhyFileManageServiceImpl; import com.ruoyi.system.service.impl.ZhyFileManageServiceImpl;
import lombok.Data;
import org.apache.poi.util.Units; import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
@ -97,45 +95,25 @@ public class ZhyFileManageController extends BaseController {
util.exportExcel(response, list, "用户数据"); util.exportExcel(response, list, "用户数据");
} }
@PostMapping("/addFile")
public AjaxResult addFile(MultipartFile file) throws IOException {
String url = saveFileWithStructure(file);
FileInputStream fileInputStream = new FileInputStream(url + "\\" + file.getOriginalFilename());
ZhyFileManage zhyFileManage = new ZhyFileManage();
zhyFileManage.setCreateTime(new Date());
zhyFileManage.setFileName(file.getOriginalFilename());
zhyFileManage.setFileUrl(url + "\\" + file.getOriginalFilename());
zhyFileManage.setIsShow("0");
zhyFileManage.setIsDelete("0");
zhyFileManage.setCreateBy(getUserId());
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在保存原文件");
zhyFileManageService.insertFile(zhyFileManage);
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在解析分词");
zhyFileManageService.wordSplitter(fileInputStream, url + "\\wordSplitter", zhyFileManage.getId(),null);
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在创建索引");
zhyFileManageService.createIndex(url + "\\wordSplitter", "D:\\project\\gyx\\tupudata\\fileManager\\index");
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在建立关系");
zhyFileManageService.getRelationShip(zhyFileManage.getId());
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在创建图谱");
zhyFileManageService.createGraph();
return AjaxResult.success().put("msg", "成功");
} @PostMapping("/addFile")
@PostMapping("/addFile1") public AjaxResult addFile(FileUploadDTO fileInfo) throws IOException {
public AjaxResult addFile1(MultipartFile file) throws IOException { System.out.println(fileInfo.getTitleInfo());
String url = saveFileWithStructure(file); System.out.println(fileInfo.getFirstTitle());
FileInputStream fileInputStream = new FileInputStream(url + "\\" + file.getOriginalFilename()); String url = saveFileWithStructure(fileInfo.getFile());
FileInputStream fileInputStream = new FileInputStream(url + "\\" + fileInfo.getFile().getOriginalFilename());
ZhyFileManage zhyFileManage = new ZhyFileManage(); ZhyFileManage zhyFileManage = new ZhyFileManage();
zhyFileManage.setCreateTime(new Date()); zhyFileManage.setCreateTime(new Date());
zhyFileManage.setFileName(file.getOriginalFilename()); zhyFileManage.setFileName(fileInfo.getFile().getOriginalFilename());
zhyFileManage.setFileUrl(url + "\\" + file.getOriginalFilename()); zhyFileManage.setFileUrl(url + "\\" + fileInfo.getFile().getOriginalFilename());
zhyFileManage.setIsShow("0"); zhyFileManage.setIsShow("0");
zhyFileManage.setIsDelete("0"); zhyFileManage.setIsDelete("0");
zhyFileManage.setCreateBy(getUserId()); zhyFileManage.setCreateBy(getUserId());
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在保存原文件"); webSocket.sendOneMessage(String.valueOf(getUserId()), "正在保存原文件");
zhyFileManageService.insertFile(zhyFileManage); zhyFileManageService.insertFile(zhyFileManage);
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在解析分词"); webSocket.sendOneMessage(String.valueOf(getUserId()), "正在解析分词");
zhyFileManageService.wordSplitter(fileInputStream, url + "\\wordSplitter", zhyFileManage.getId(),null); zhyFileManageService.wordSplitter(fileInputStream, url + "\\wordSplitter", zhyFileManage.getId(),null,fileInfo);
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在创建索引"); webSocket.sendOneMessage(String.valueOf(getUserId()), "正在创建索引");
zhyFileManageService.createIndex(url + "\\wordSplitter", "D:\\project\\gyx\\tupudata\\fileManager\\index"); zhyFileManageService.createIndex(url + "\\wordSplitter", "D:\\project\\gyx\\tupudata\\fileManager\\index");
webSocket.sendOneMessage(String.valueOf(getUserId()), "正在建立关系"); webSocket.sendOneMessage(String.valueOf(getUserId()), "正在建立关系");
@ -145,6 +123,30 @@ public class ZhyFileManageController extends BaseController {
return AjaxResult.success().put("msg", "成功"); return AjaxResult.success().put("msg", "成功");
} }
// @PostMapping("/addFile1")
// public AjaxResult addFile1(MultipartFile file) throws IOException {
// String url = saveFileWithStructure(file);
// FileInputStream fileInputStream = new FileInputStream(url + "\\" + file.getOriginalFilename());
// ZhyFileManage zhyFileManage = new ZhyFileManage();
// zhyFileManage.setCreateTime(new Date());
// zhyFileManage.setFileName(file.getOriginalFilename());
// zhyFileManage.setFileUrl(url + "\\" + file.getOriginalFilename());
// zhyFileManage.setIsShow("0");
// zhyFileManage.setIsDelete("0");
// zhyFileManage.setCreateBy(getUserId());
// webSocket.sendOneMessage(String.valueOf(getUserId()), "正在保存原文件");
// zhyFileManageService.insertFile(zhyFileManage);
// webSocket.sendOneMessage(String.valueOf(getUserId()), "正在解析分词");
// zhyFileManageService.wordSplitter(fileInputStream, url + "\\wordSplitter", zhyFileManage.getId(),null);
// webSocket.sendOneMessage(String.valueOf(getUserId()), "正在创建索引");
// zhyFileManageService.createIndex(url + "\\wordSplitter", "D:\\project\\gyx\\tupudata\\fileManager\\index");
// webSocket.sendOneMessage(String.valueOf(getUserId()), "正在建立关系");
// zhyFileManageService.getRelationShip(zhyFileManage.getId());
// webSocket.sendOneMessage(String.valueOf(getUserId()), "正在创建图谱");
// zhyFileManageService.createGraph();
//
// return AjaxResult.success().put("msg", "成功");
// }
@PostMapping("/insertRelationByFile") @PostMapping("/insertRelationByFile")
public AjaxResult insertRelationByFile(MultipartFile file) throws IOException { public AjaxResult insertRelationByFile(MultipartFile file) throws IOException {
@ -675,7 +677,7 @@ public class ZhyFileManageController extends BaseController {
} }
} }
zhyFileManageService.wordSplitter(null , url +"\\wordSplitter", 0,list); zhyFileManageService.wordSplitterOld(null , url +"\\wordSplitter", 0,list);
zhyFileManageService.createIndex(url + "\\wordSplitter", "D:\\project\\gyx\\tupudata\\fileManager\\index"); zhyFileManageService.createIndex(url + "\\wordSplitter", "D:\\project\\gyx\\tupudata\\fileManager\\index");
test1Mapper.updateParentId(list); test1Mapper.updateParentId(list);

48
ruoyi-api/src/main/java/com/ruoyi/api/domain/TitleTemplate.java

@ -1,48 +0,0 @@
package com.ruoyi.api.domain;
public class TitleTemplate {
private String name;
private Long id;
private String firstTitle;
private String secondTitle;
private String thirdTitle;
private String fourthTitle;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFirstTitle() {
return firstTitle;
}
public void setFirstTitle(String firstTitle) {
this.firstTitle = firstTitle;
}
public String getSecondTitle() {
return secondTitle;
}
public void setSecondTitle(String secondTitle) {
this.secondTitle = secondTitle;
}
public String getThirdTitle() {
return thirdTitle;
}
public void setThirdTitle(String thirdTitle) {
this.thirdTitle = thirdTitle;
}
public String getFourthTitle() {
return fourthTitle;
}
public void setFourthTitle(String fourthTitle) {
this.fourthTitle = fourthTitle;
}
}

90
ruoyi-system/src/main/java/com/ruoyi/system/domain/FileUploadDTO.java

@ -0,0 +1,90 @@
package com.ruoyi.system.domain;
import org.springframework.web.multipart.MultipartFile;
public class FileUploadDTO {
private MultipartFile file;
private TitleTemplate titleInfo;
private String firstTitle;
private String secondTitle;
private String thirdTitle;
private String fourthTitle;
private String fiveTitle;
private String sixTitle;
private String sevenTitle;
public MultipartFile getFile() {
return file;
}
public void setFile(MultipartFile file) {
this.file = file;
}
public TitleTemplate getTitleInfo() {
return titleInfo;
}
public void setTitleInfo(TitleTemplate titleInfo) {
this.titleInfo = titleInfo;
}
public String getFirstTitle() {
return firstTitle;
}
public void setFirstTitle(String firstTitle) {
this.firstTitle = firstTitle;
}
public String getSecondTitle() {
return secondTitle;
}
public void setSecondTitle(String secondTitle) {
this.secondTitle = secondTitle;
}
public String getThirdTitle() {
return thirdTitle;
}
public void setThirdTitle(String thirdTitle) {
this.thirdTitle = thirdTitle;
}
public String getFourthTitle() {
return fourthTitle;
}
public void setFourthTitle(String fourthTitle) {
this.fourthTitle = fourthTitle;
}
public String getFiveTitle() {
return fiveTitle;
}
public void setFiveTitle(String fiveTitle) {
this.fiveTitle = fiveTitle;
}
public String getSixTitle() {
return sixTitle;
}
public void setSixTitle(String sixTitle) {
this.sixTitle = sixTitle;
}
public String getSevenTitle() {
return sevenTitle;
}
public void setSevenTitle(String sevenTitle) {
this.sevenTitle = sevenTitle;
}
}

100
ruoyi-system/src/main/java/com/ruoyi/system/domain/TitleTemplate.java

@ -0,0 +1,100 @@
package com.ruoyi.system.domain;
public class TitleTemplate {
private String name;
private Long id;
private String firstTitle;
private String secondTitle;
private String thirdTitle;
private String fourthTitle;
private String fiveTitle;
private String sixTitle;
private String sevenTitle;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFirstTitle() {
return firstTitle;
}
public void setFirstTitle(String firstTitle) {
this.firstTitle = firstTitle;
}
public String getSecondTitle() {
return secondTitle;
}
public void setSecondTitle(String secondTitle) {
this.secondTitle = secondTitle;
}
public String getThirdTitle() {
return thirdTitle;
}
public void setThirdTitle(String thirdTitle) {
this.thirdTitle = thirdTitle;
}
public String getFourthTitle() {
return fourthTitle;
}
public void setFourthTitle(String fourthTitle) {
this.fourthTitle = fourthTitle;
}
public String getFiveTitle() {
return fiveTitle;
}
public void setFiveTitle(String fiveTitle) {
this.fiveTitle = fiveTitle;
}
public String getSixTitle() {
return sixTitle;
}
public void setSixTitle(String sixTitle) {
this.sixTitle = sixTitle;
}
public String getSevenTitle() {
return sevenTitle;
}
public void setSevenTitle(String sevenTitle) {
this.sevenTitle = sevenTitle;
}
@Override
public String toString() {
return "TitleTemplate{" +
"name='" + name + '\'' +
", id=" + id +
", firstTitle='" + firstTitle + '\'' +
", secondTitle='" + secondTitle + '\'' +
", thirdTitle='" + thirdTitle + '\'' +
", fourthTitle='" + fourthTitle + '\'' +
", fiveTitle='" + fiveTitle + '\'' +
", sixTitle='" + sixTitle + '\'' +
", sevenTitle='" + sevenTitle + '\'' +
'}';
}
}

7
ruoyi-api/src/main/java/com/ruoyi/api/mapper/TitleTemplateMapper.java → ruoyi-system/src/main/java/com/ruoyi/system/mapper/TitleTemplateMapper.java

@ -1,10 +1,11 @@
package com.ruoyi.api.mapper; package com.ruoyi.system.mapper;
import com.ruoyi.api.domain.TitleTemplate; import com.ruoyi.system.domain.TitleTemplate;
import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@Mapper
public interface TitleTemplateMapper public interface TitleTemplateMapper
{ {

5
ruoyi-api/src/main/java/com/ruoyi/api/service/ITitleTemplateService.java → ruoyi-system/src/main/java/com/ruoyi/system/service/ITitleTemplateService.java

@ -1,11 +1,10 @@
package com.ruoyi.api.service; package com.ruoyi.system.service;
import com.ruoyi.api.domain.TitleTemplate; import com.ruoyi.system.domain.TitleTemplate;
import java.util.List; import java.util.List;
public interface ITitleTemplateService public interface ITitleTemplateService
{ {
public TitleTemplate selectTitleTemplateById(Long id); public TitleTemplate selectTitleTemplateById(Long id);

2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LuceneUtil.java

@ -547,7 +547,7 @@ public class LuceneUtil {
String url = doc.get("url"); String url = doc.get("url");
String snippet = null; String snippet = null;
String snippet1 = null; String snippet1 = null;
Map ttt = wordSplitter.startsWithHeading1(id); Map ttt = wordSplitter.startsWithHeadingOld(id);
try { try {
snippet = highlighter.getBestFragment(new IKAnalyzer(true), "content", text); snippet = highlighter.getBestFragment(new IKAnalyzer(true), "content", text);
snippet1 = highlighter.getBestFragment(new IKAnalyzer(true), "id", String.valueOf(ttt.get("title"))); snippet1 = highlighter.getBestFragment(new IKAnalyzer(true), "id", String.valueOf(ttt.get("title")));

12
ruoyi-api/src/main/java/com/ruoyi/api/service/impl/TitleTemplateServiceImpl.java → ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TitleTemplateServiceImpl.java

@ -1,13 +1,13 @@
package com.ruoyi.api.service.impl; package com.ruoyi.system.service.impl;
import java.util.List; import com.ruoyi.system.domain.TitleTemplate;
import com.ruoyi.system.mapper.TitleTemplateMapper;
import com.ruoyi.api.domain.TitleTemplate; import com.ruoyi.system.service.ITitleTemplateService;
import com.ruoyi.api.mapper.TitleTemplateMapper;
import com.ruoyi.api.service.ITitleTemplateService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@Service @Service
public class TitleTemplateServiceImpl implements ITitleTemplateService public class TitleTemplateServiceImpl implements ITitleTemplateService

998
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WordSplitter.java

File diff suppressed because it is too large

36
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ZhyFileManageServiceImpl.java

@ -43,10 +43,10 @@ public class ZhyFileManageServiceImpl {
@Autowired @Autowired
Test1Mapper test1Mapper; Test1Mapper test1Mapper;
public String wordSplitter(FileInputStream file,String url,Integer fileId,List<ZhyDoc> list){ public String wordSplitter(FileInputStream file,String url,Integer fileId,List<ZhyDoc> list,FileUploadDTO fileUploadDTO){
try { try {
if(file!=null){ if(file!=null){
wordSplitter.testWordOne(file,url,fileId); wordSplitter.testWordOne(file,url,fileId,fileUploadDTO);
}else{ }else{
wordSplitter.handWord(url,list); wordSplitter.handWord(url,list);
} }
@ -57,9 +57,13 @@ public class ZhyFileManageServiceImpl {
return "b"; return "b";
} }
public String wordSplitterBattle(FileInputStream file,String url,Integer fileId){ public String wordSplitterOld(FileInputStream file,String url,Integer fileId,List<ZhyDoc> list){
try { try {
wordSplitter.testWordBattle(file,url,fileId); if(file!=null){
wordSplitter.testWordOneOld(file,url,fileId);
}else{
wordSplitter.handWord(url,list);
}
return "a"; return "a";
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -67,26 +71,12 @@ public class ZhyFileManageServiceImpl {
return "b"; return "b";
} }
// public String wordSplitterAdd(FileInputStream file,String url,Integer fileId,List<Map> list){
// try {
// wordSplitter.testWordOneAdd(file,url,fileId,list);
// return "a";
// } catch (Exception e) {
// e.printStackTrace();
// }
// return "b";
// }
public String wordSplitterBattleAdd(FileInputStream file,String url,Integer fileId,List<Map> list){
try {
wordSplitter.testWordBattleAdd(file,url,fileId,list);
return "a";
} catch (Exception e) {
e.printStackTrace();
}
return "b";
}

21
ruoyi-api/src/main/resources/mapper/api/TitleTemplateMapper.xml → ruoyi-system/src/main/resources/mapper/system/TitleTemplateMapper.xml

@ -2,7 +2,7 @@
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.api.mapper.TitleTemplateMapper"> <mapper namespace="com.ruoyi.system.mapper.TitleTemplateMapper">
<resultMap type="TitleTemplate" id="TitleTemplateResult"> <resultMap type="TitleTemplate" id="TitleTemplateResult">
<result property="id" column="id" /> <result property="id" column="id" />
@ -11,10 +11,15 @@
<result property="secondTitle" column="second_title" /> <result property="secondTitle" column="second_title" />
<result property="thirdTitle" column="third_title" /> <result property="thirdTitle" column="third_title" />
<result property="fourthTitle" column="fourth_title" /> <result property="fourthTitle" column="fourth_title" />
<result property="fiveTitle" column="five_title" />
<result property="sixTitle" column="six_title" />
<result property="sevenTitle" column="seven_title" />
</resultMap> </resultMap>
<sql id="selectTitleTemplateVo"> <sql id="selectTitleTemplateVo">
select id, name, first_title, second_title, third_title, fourth_title from title_template select id, name, first_title, second_title, third_title, fourth_title,five_title,six_title,seven_title from title_template
</sql> </sql>
<select id="selectTitleTemplateList" parameterType="TitleTemplate" resultMap="TitleTemplateResult"> <select id="selectTitleTemplateList" parameterType="TitleTemplate" resultMap="TitleTemplateResult">
@ -25,6 +30,9 @@
<if test="secondTitle != null and secondTitle != ''"> and second_title = #{secondTitle}</if> <if test="secondTitle != null and secondTitle != ''"> and second_title = #{secondTitle}</if>
<if test="thirdTitle != null and thirdTitle != ''"> and third_title = #{thirdTitle}</if> <if test="thirdTitle != null and thirdTitle != ''"> and third_title = #{thirdTitle}</if>
<if test="fourthTitle != null and fourthTitle != ''"> and fourth_title = #{fourthTitle}</if> <if test="fourthTitle != null and fourthTitle != ''"> and fourth_title = #{fourthTitle}</if>
<if test="fiveTitle != null and fiveTitle != ''"> and five_title = #{fiveTitle}</if>
<if test="sixTitle != null and sixTitle != ''"> and six_title = #{sixTitle}</if>
<if test="sevenTitle != null and sevenTitle != ''"> and seven_title = #{sevenTitle}</if>
</where> </where>
</select> </select>
@ -41,6 +49,9 @@
<if test="secondTitle != null">second_title,</if> <if test="secondTitle != null">second_title,</if>
<if test="thirdTitle != null">third_title,</if> <if test="thirdTitle != null">third_title,</if>
<if test="fourthTitle != null">fourth_title,</if> <if test="fourthTitle != null">fourth_title,</if>
<if test="fiveTitle != null">five_title,</if>
<if test="sixTitle != null">six_title,</if>
<if test="sevenTitle != null">seven_title,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
@ -48,6 +59,9 @@
<if test="secondTitle != null">#{secondTitle},</if> <if test="secondTitle != null">#{secondTitle},</if>
<if test="thirdTitle != null">#{thirdTitle},</if> <if test="thirdTitle != null">#{thirdTitle},</if>
<if test="fourthTitle != null">#{fourthTitle},</if> <if test="fourthTitle != null">#{fourthTitle},</if>
<if test="fiveTitle != null">#{fiveTitle},</if>
<if test="sixTitle != null">#{sixTitle},</if>
<if test="sevenTitle != null">#{sevenTitle},</if>
</trim> </trim>
</insert> </insert>
@ -59,6 +73,9 @@
<if test="secondTitle != null">second_title = #{secondTitle},</if> <if test="secondTitle != null">second_title = #{secondTitle},</if>
<if test="thirdTitle != null">third_title = #{thirdTitle},</if> <if test="thirdTitle != null">third_title = #{thirdTitle},</if>
<if test="fourthTitle != null">fourth_title = #{fourthTitle},</if> <if test="fourthTitle != null">fourth_title = #{fourthTitle},</if>
<if test="fiveTitle != null">five_title = #{fiveTitle},</if>
<if test="sixTitle != null">six_title = #{sixTitle},</if>
<if test="sevenTitle != null">seven_title = #{sevenTitle},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

50
ruoyi-ui/src/api/system/titleTemplate.js

@ -0,0 +1,50 @@
import request from '@/utils/request'
export function listTemplate(query) {
return request({
url: '/system/template/list',
method: 'get',
params: query
})
}
export function getTemplate(id) {
return request({
url: '/system/template/' + id,
method: 'get'
})
}
export function addTemplate(data) {
return request({
url: '/system/template',
method: 'post',
data: data
})
}
export function updateTemplate(data) {
return request({
url: '/system/template',
method: 'put',
data: data
})
}
export function delTemplate(id) {
return request({
url: '/system/template/' + id,
method: 'delete'
})
}
export function titleFormatter(formData) {
return request({
url: '/system/formatter',
method: 'post',
headers: {
'Content-Type': 'multipart/form-data' // 必须设置这个
},
data: formData // 必须是 FormData 对象
})
}

1013
ruoyi-ui/src/views/system/fileManage/index.vue

File diff suppressed because it is too large
Loading…
Cancel
Save