diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index 81a8e387a7..07af72a806 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -1465,10 +1465,13 @@ public abstract class JTemplate> public abstract String route(); public String getTemplateName() { - return getEditingFILE().getName() + getSuffix(); + return getEditingFILE().getName() + compatibilityTip(); } - private String getSuffix() { + /** + * 设置新引擎后,有不支持的功能时,设计器中模板的标题需要加上“兼容模式”或者“不支持分页引擎”来提示用户 + * */ + private String compatibilityTip() { if (!CptCompileUtil.isNewEngine(this.getTarget(), getEditingFILE().getPath())){ return StringUtils.EMPTY; } @@ -1617,13 +1620,11 @@ public abstract class JTemplate> worker.addSuccessCallback(new Runnable() { @Override public void run() { - boolean isChangedFile = !JTemplate.this.isSaved() && !DesignModeContext.isVcsMode(); + boolean isChangedFile = !JTemplate.this.saved; if (isChangedFile){ - callBackForSave(); CptCompileUtil.compile(JTemplate.this); - } else{ - callBackForSave(); } + callBackForSave(); // 当前打开的是正在保存的模板才刷新 if (ComparatorUtils.equals(JTemplate.this.template.getTemplateID(), HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().template.getTemplateID())) { @@ -1682,10 +1683,13 @@ public abstract class JTemplate> result = result || provider.saveToNewFile(this.editingFILE.getPath(), this); } if (!result) { - //在这里改变报表引擎属性 - boolean ischanged = CptCompileUtil.haveChanged(oldName, this); - if (ischanged){ - //如果cptx另存为cpt/cptx的另存为/cpt另存为,则需要重新预编译,因此设置jTemplate的保存状态为false。 + /* + * 1.在CptCompileUtil::haveChanged改变报表引擎属性 + * 2.如果cptx文件另存为cpt文件/cptx另存为cptx文件/设置了新引擎的cpt文件另存为cpt文件, + * 因为编译目录改变了,需要重新预编译,因此设置jTemplate的保存状态为false + * */ + boolean hasChanged = CptCompileUtil.hasChanged(oldName, this); + if (hasChanged){ this.saved = false; } result = this.saveRealFile(); diff --git a/designer-base/src/main/java/com/fr/nx/app/designer/utils/CptCompileUtil.java b/designer-base/src/main/java/com/fr/nx/app/designer/utils/CptCompileUtil.java index 92856148ab..7067789a45 100644 --- a/designer-base/src/main/java/com/fr/nx/app/designer/utils/CptCompileUtil.java +++ b/designer-base/src/main/java/com/fr/nx/app/designer/utils/CptCompileUtil.java @@ -143,7 +143,7 @@ public class CptCompileUtil { /* * 该另存为流程会改变文件内容,现在作为兼容的流程,以后可以随时删除该流程 * */ - public static boolean haveChanged(String oldName, JTemplate jTemplate){ + public static boolean hasChanged(String oldName, JTemplate jTemplate){ FILE editingFILE = jTemplate.getEditingFILE(); String path = editingFILE.getPath(); //只有在旧文件是cptx文件并且新文件是cpt文件时才会改变报表引擎属性