From d9925d41d242d3955a7df7e8e3a8cc5ff117953a Mon Sep 17 00:00:00 2001 From: yujh Date: Mon, 12 May 2025 09:26:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pal/pal/output/util/OutputWordUtil.java | 45 ++++++------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/output/util/OutputWordUtil.java b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/output/util/OutputWordUtil.java index e7df11e8..753eeb8d 100755 --- a/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/output/util/OutputWordUtil.java +++ b/com.actionsoft.apps.coe.pal/src/com/actionsoft/apps/coe/pal/pal/output/util/OutputWordUtil.java @@ -1372,34 +1372,10 @@ public class OutputWordUtil { List search2 = upFileDao.searchByRepositoryId(repositoryModel.getId(), "f"); DCContext dcContextModel = null; - - - // 排序 - try { - Collections.sort(search2, new Comparator() { - @Override - public int compare(UpfileModel o1, UpfileModel o2) { - String p1 = o1.getFileName(); - String p2 = o2.getFileName(); - - if (p1.substring(0, 2).equals("附件") && p2.substring(0, 2).equals("附件") && p1.contains(":") && p2.contains(":") && StringUtils.isNumeric(p1.substring(2, p1.indexOf(":"))) && StringUtils.isNumeric(p2.substring(2, p2.indexOf(":")))) { - return Integer.parseInt(p1.substring(2, p1.indexOf(":"))) - Integer.parseInt(p2.substring(2, p2.indexOf(":"))); - - } else { - return 0; - } - - - } - }); - } catch (Exception e) { - - e.printStackTrace(); - } - //读取模型附件插入手册中文档对象 if (search2 != null && search2.size() > 0) { - + //插入前,附件名先排序先排序 + sortFilesByNumber(search2); //附件如果为空,不插入附件标题 CharacterFormat format4 = new CharacterFormat(); //创建字体格式 @@ -2831,14 +2807,21 @@ public class OutputWordUtil { ) ); } - // 精准提取附件后的第一个连续数字 - private static Integer extractLeadingNumber(UpfileModel file) { - // 增强版正则表达式(核心改进点) + // 提取附件后的第一个连续数字(支持小数) + private static Double extractLeadingNumber(UpfileModel file) { Pattern FILE_NUMBER_PATTERN = - Pattern.compile("^附件\\s*(\\d+)\\s*[::、,_\\-]"); // ^开头匹配防止中途匹配 + Pattern.compile("^附件[^\\d]*(\\d+(?:\\.\\d+)?|\\.\\d+)"); // 增强正则 try { Matcher matcher = FILE_NUMBER_PATTERN.matcher(file.getFileName()); - return matcher.find() ? Integer.parseInt(matcher.group(1)) : null; + if (matcher.find()) { + String numberStr = matcher.group(1); + // 处理结尾单独的小数点(如"123."的情况) + if (numberStr.endsWith(".")) { + numberStr = numberStr.substring(0, numberStr.length() - 1); + } + return Double.parseDouble(numberStr); + } + return null; } catch (Exception e) { return null; }