Quellcode durchsuchen

remain old parameter values

sunyj vor 8 Jahren
Ursprung
Commit
2b64f6aadc

+ 33 - 2
kanban-console/src/main/java/com/uas/kanban/service/impl/PanelInstanceServiceImpl.java

@@ -150,7 +150,7 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
             if (panelInstance != null) {
                 deleteOne(panelInstance.codeNotEmpty());
             }
-            panelInstance = generateInstance(panelCode);
+            panelInstance = generateInstance(panelCode, panelInstance);
         }
         try {
             NewbieJdbcSupport jdbc = dataSourceManager.getJdbc(panel.getDataSourceCode());
@@ -402,12 +402,15 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
      * @param panelCode 面板 code
      * @return 面板实例
      */
-    private PanelInstance generateInstance(@NotEmpty("panelCode") String panelCode) {
+    private PanelInstance generateInstance(@NotEmpty("panelCode") String panelCode, @NotEmpty("oldPanelInstance") PanelInstance oldPanelInstance) {
         Panel panel = panelDao.checkExist(panelCode);
         PanelInstance panelInstance = new PanelInstance();
         panelInstance.setUserCode(SystemSession.getUser().codeNotEmpty());
         panelInstance.setPanelCode(panelCode);
         panelInstance.setPanelVersion(panel.getVersion());
+        // 切换频率、刷新频率
+        panelInstance.setSwitchFrequency(oldPanelInstance.getSwitchFrequency());
+        panelInstance.setRefreshFrequency(oldPanelInstance.getRefreshFrequency());
         initSwitchFrequence(panelInstance);
         panelInstance.toParameters(generateParameters(panelCode));
         List<Kanban> kanbans = kanbanDao.findByPanelCode(panelCode);
@@ -415,6 +418,7 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
             throw new IllegalStateException("面板 '" + panel.getName() + "' 未关联看板");
         }
         panelInstance.initKanbanCodes(kanbans);
+        recoverOldParameters(panelInstance, oldPanelInstance);
         return panelInstanceDao.save(panelInstance);
     }
 
@@ -440,4 +444,31 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
         }
     }
 
+    /**
+     * 恢复旧的参数值
+     *
+     * @param panelInstance    面板实例
+     * @param oldPanelInstance 旧的面板实例
+     */
+    private void recoverOldParameters(@NotEmpty("panelInstance") PanelInstance panelInstance, @NotEmpty("oldPanelInstance") PanelInstance oldPanelInstance) {
+        // 参数
+        List<Parameter> parameters = panelInstance.fromParameters();
+        List<Parameter> oldParameters = oldPanelInstance.fromParameters();
+        parameters = parameters == null ? new ArrayList<Parameter>() : parameters;
+        oldParameters = oldParameters == null ? new ArrayList<Parameter>() : oldParameters;
+        if (CollectionUtils.isEmpty(parameters) || CollectionUtils.isEmpty(oldParameters)) {
+            return;
+        }
+        for (Parameter parameter : parameters) {
+            for (Parameter oldParameter : oldParameters) {
+                // 如果参数版本一致(参数未修改过),恢复之前的参数值
+                if (Objects.equals(parameter.codeNotEmpty(), oldParameter.codeNotEmpty())
+                        && Objects.equals(parameter.getVersion(), oldParameter.getVersion())) {
+                    parameter.setValue(oldParameter.getValue());
+                }
+            }
+        }
+        panelInstance.toParameters(parameters);
+    }
+
 }