diff --git a/designer-base/src/main/java/com/fr/design/mainframe/template/info/DesignerOpenHistory.java b/designer-base/src/main/java/com/fr/design/mainframe/template/info/DesignerOpenHistory.java index 096b6d16a..560431f1b 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/template/info/DesignerOpenHistory.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/template/info/DesignerOpenHistory.java @@ -48,6 +48,18 @@ class DesignerOpenHistory implements XMLReadable, XMLWriter { history[0] = today; } + /** + * 设计器在 dayCount 时间内启动超过 X 次(目前定的 X = 3) + */ + boolean isOpenEnoughTimesInPeriod(int dayCount) { + boolean enoughTimes = StringUtils.isNotEmpty(history[LENGTH - 1]); + if (!enoughTimes) { + return false; + } + return getHistorySpanDayCount() < dayCount; + } + + /** * 获取历史记录中囊括的日子数。即最早的历史记录 history[LENGTH - 1],到最晚的记录 history[0] 之间的时间跨度 */ diff --git a/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfo.java b/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfo.java index ffd9aaf3b..900210bd0 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfo.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfo.java @@ -211,7 +211,7 @@ class TemplateInfo implements XMLReadable, XMLWriter { // 条件 2. 设计器在这段未编辑的时间内启动超过 X 次(目前定的 X = 3)。即"设计器最近 X 次启动的时间跨度" < "未编辑时间"; return idleDayCount > COMPLETE_DAY_COUNT - && DesignerOpenHistory.getInstance().getHistorySpanDayCount() < idleDayCount; + && DesignerOpenHistory.getInstance().isOpenEnoughTimesInPeriod(idleDayCount); } String getConsumingMapJsonString() { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfoCollector.java b/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfoCollector.java index e7fc95594..0996c260c 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfoCollector.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/template/info/TemplateInfoCollector.java @@ -20,6 +20,7 @@ import java.io.FileOutputStream; import java.io.FileReader; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -101,16 +102,22 @@ public class TemplateInfoCollector implements XMLReadable, XMLWriter { removeTestTemplates(); + List removeLaterList = new ArrayList<>(); + for (String key : templateInfoMap.keySet()) { TemplateInfo templateInfo = templateInfoMap.get(key); if (templateInfo.isReadyForSend()) { if (SendHelper.sendTemplateInfo(templateInfo)) { - // 清空记录 - removeFromTemplateInfoList(templateInfo.getTemplateID()); + removeLaterList.add(key); } } } + // 清空记录 + for (String key : removeLaterList) { + removeFromTemplateInfoList(key); + } + saveInfo(); } diff --git a/designer-base/src/test/java/com/fr/design/mainframe/template/info/DesignerOpenHistoryTest.java b/designer-base/src/test/java/com/fr/design/mainframe/template/info/DesignerOpenHistoryTest.java index e3f63ddc3..3e95cfec7 100644 --- a/designer-base/src/test/java/com/fr/design/mainframe/template/info/DesignerOpenHistoryTest.java +++ b/designer-base/src/test/java/com/fr/design/mainframe/template/info/DesignerOpenHistoryTest.java @@ -87,6 +87,18 @@ public class DesignerOpenHistoryTest { } } + @Test + public void testOpenEnoughTimesInPeriod() { + assertTrue(openHistory.isOpenEnoughTimesInPeriod(15)); + assertFalse(openHistory.isOpenEnoughTimesInPeriod(3)); + + Reflect.on(openHistory).set("history", new String[] {"2019-05-03", "2019-05-02", ""}); + assertFalse(openHistory.isOpenEnoughTimesInPeriod(15)); + + Reflect.on(openHistory).set("history", new String[] {"2019-05-03", "", ""}); + assertFalse(openHistory.isOpenEnoughTimesInPeriod(15)); + } + @Test public void testHasOpenedToday() { assertFalse(openHistory.hasOpenedToday());