|
|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
}
|