From d5256c01935d1fae7e49fb7aae2e235944939a19 Mon Sep 17 00:00:00 2001 From: roger Date: Tue, 26 Dec 2023 15:04:30 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-92893=20=E9=94=81=E5=AE=9A=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=8C=E9=87=8D=E5=A4=8D=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E5=89=AF=E6=9C=AC=EF=BC=8C=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=A8=A1=E6=9D=BF=E5=86=85=E5=AE=B9=E4=B8=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/utils/TemplateUtils.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java index 9b426b5c87..250846b47c 100644 --- a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java @@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.SwingWorker; import java.io.OutputStream; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.Function; @@ -65,14 +66,7 @@ public class TemplateUtils { if (file == null) { return; } - Runnable doAfterCreateTemplate; - //判断一下要保存的文件是否已打开 - int index = HistoryTemplateListCache.getInstance().contains(file); - JTemplate template = null; - if (index != -1) { - template = HistoryTemplateListCache.getInstance().getHistoryList().get(index); - } - createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, template); + createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, null); } /** @@ -181,23 +175,29 @@ public class TemplateUtils { * @param template 需要关闭的模板 */ private static void openNewTemplateAndCloseOldTemplate(FILE file, boolean openNewTemplate, @Nullable JTemplate template) { - new SwingWorker() { + new SwingWorker>, Void>() { @Override - protected Boolean doInBackground() throws Exception { + protected List> doInBackground() throws Exception { + List> needCloseTemplate = new ArrayList<>(); + //判断一下要保存的副本文件是否已打开 + int index = HistoryTemplateListCache.getInstance().contains(file); + if (index != -1) { + WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); + needCloseTemplate.add(HistoryTemplateListCache.getInstance().getHistoryList().get(index)); + } if (JTemplate.isValid(template)) { //给要关闭的模板解锁 WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(template.getPath()); - return true; + needCloseTemplate.add(template); } - return false; + return needCloseTemplate; } @Override protected void done() { try { - if (get()) { - //模板释放锁成功后关闭该模板 - HistoryTemplateListCache.getInstance().closeSelectedReport(template); - } + //获取需要关闭的模板 + List> jTemplates = get(); + jTemplates.forEach(jTemplate -> HistoryTemplateListCache.getInstance().closeSelectedReport(jTemplate)); if (openNewTemplate) { DesignerContext.getDesignerFrame().openTemplate(file); }