21 changed files with 2060 additions and 1252 deletions
@ -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("程序已退出。"); |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -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; |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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 + '\'' + |
||||
|
'}'; |
||||
|
} |
||||
|
} |
||||
@ -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 |
||||
{ |
{ |
||||
|
|
||||
@ -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); |
||||
@ -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 |
||||
File diff suppressed because it is too large
@ -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 对象
|
||||
|
}) |
||||
|
} |
||||
File diff suppressed because it is too large
Loading…
Reference in new issue