文件属性特殊字符优化,导出手册附件编号优化
This commit is contained in:
parent
f244da16ec
commit
8d0e7fbcb0
@ -61,6 +61,8 @@ import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.sini.com.spire.doc.documents.HorizontalAlignment.*;
|
||||
|
||||
@ -236,10 +238,10 @@ public class OutputWordUtil {
|
||||
PALRepositoryModel repositoryModel = PALRepositoryQueryAPIManager.getInstance().queryPalRepositoryModelByPalId(repositoryId);
|
||||
DCContext dcContextModel = null;
|
||||
List<UpfileModel> search = upFileDao.searchByRepositoryId(repositoryModel.getId(), "f");
|
||||
|
||||
//读取模型附件插入手册中文档对象
|
||||
if (search != null && search.size() > 0) {
|
||||
|
||||
//插入前,附件名先排序先排序
|
||||
sortFilesByNumber(search);
|
||||
//附件如果为空,不插入附件标题
|
||||
CharacterFormat format4 = new CharacterFormat();
|
||||
//创建字体格式
|
||||
@ -423,6 +425,8 @@ public class OutputWordUtil {
|
||||
boolean isPPT = false;
|
||||
//如果为PPT,则生成PPT手册
|
||||
if (search != null && search.size() > 0) {
|
||||
//插入前,附件名先排序先排序
|
||||
sortFilesByNumber(search);
|
||||
long b1 = System.currentTimeMillis();
|
||||
// 复制附件
|
||||
for (UpfileModel upfileModel : search) {
|
||||
@ -494,6 +498,8 @@ public class OutputWordUtil {
|
||||
|
||||
|
||||
if (search != null && search.size() > 0) {
|
||||
//插入前,附件名先排序先排序
|
||||
sortFilesByNumber(search);
|
||||
long b1 = System.currentTimeMillis();
|
||||
// 复制附件
|
||||
for (UpfileModel upfileModel : search) {
|
||||
@ -1685,6 +1691,8 @@ public class OutputWordUtil {
|
||||
DCContext dcContextModel = null;
|
||||
UserContext userContext = DispatcherRequest.getUserContext();
|
||||
if (search != null && search.size() > 0) {
|
||||
//插入前,附件名先排序先排序
|
||||
sortFilesByNumber(search);
|
||||
// 复制附件
|
||||
for (UpfileModel upfileModel : search) {
|
||||
DCPluginProfile dcProfile = DCProfileManager.getDCProfile(CoEConstant.APP_ID, CoeFileConstant.COE_UPFILE);
|
||||
@ -2814,4 +2822,25 @@ public class OutputWordUtil {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void sortFilesByNumber(List<UpfileModel> fileList) {
|
||||
fileList.sort(
|
||||
Comparator.comparing(
|
||||
OutputWordUtil::extractLeadingNumber,
|
||||
Comparator.nullsLast(Comparator.naturalOrder())
|
||||
)
|
||||
);
|
||||
}
|
||||
// 精准提取附件后的第一个连续数字
|
||||
private static Integer extractLeadingNumber(UpfileModel file) {
|
||||
// 增强版正则表达式(核心改进点)
|
||||
Pattern FILE_NUMBER_PATTERN =
|
||||
Pattern.compile("^附件\\s*(\\d+)\\s*[::、,_\\-]"); // ^开头匹配防止中途匹配
|
||||
try {
|
||||
Matcher matcher = FILE_NUMBER_PATTERN.matcher(file.getFileName());
|
||||
return matcher.find() ? Integer.parseInt(matcher.group(1)) : null;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1929,6 +1929,40 @@ public class CoeProcessLevelUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 转义文本中的特殊字符
|
||||
* @param input
|
||||
* @return
|
||||
*/
|
||||
public static String escapeHtml(String input) {
|
||||
if (input == null) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (char c : input.toCharArray()) {
|
||||
switch (c) {
|
||||
case '<':
|
||||
result.append("<");
|
||||
break;
|
||||
case '>':
|
||||
result.append(">");
|
||||
break;
|
||||
case '&':
|
||||
result.append("&");
|
||||
break;
|
||||
case '"':
|
||||
result.append(""");
|
||||
break;
|
||||
case '\'':
|
||||
result.append("'");
|
||||
break;
|
||||
default:
|
||||
result.append(c);
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量调整模型的文件/形状默认属性至自定义属性中
|
||||
*/
|
||||
|
||||
@ -2901,6 +2901,8 @@ public class CoeProcessLevelWeb extends ActionWeb {
|
||||
|
||||
inputValue = inputValue.replaceAll("'", "'");
|
||||
inputValue = inputValue.replaceAll("\"", """);
|
||||
//处理特殊字符
|
||||
inputValue = CoeProcessLevelUtil.escapeHtml(inputValue);
|
||||
boolean isRequired = attributeModel.getIsRequired();
|
||||
String desc = attributeModel.getDesc();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user