Просмотр исходного кода

Parse optionalValues when parameter's type is SQL

sunyj 8 лет назад
Родитель
Сommit
f038446b5b

+ 18 - 6
kanban-console/src/main/java/com/uas/kanban/service/impl/PanelInstanceServiceImpl.java

@@ -104,11 +104,16 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
             if (parameter.getType() == Type.SQL) {
                 try {
                     NewbieJdbcSupport jdbc = dataSourceManager.getJdbc(dataSourceCode);
-                    List<Map<String, Object>> listMap = jdbc.listMap(String.valueOf(parameter.getValue()));
-                    if (listMap == null) {
-                        listMap = new ArrayList<>();
+                    parameter.setValue(getValue(jdbc, String.valueOf(parameter.getValue())));
+                    // 并且需要解析 optionalValues 里可选择的值
+                    List<Object> optionalValues = parameter.getOptionalValues();
+                    if (!CollectionUtils.isEmpty(optionalValues)) {
+                        for (int i = 0; i < optionalValues.size(); i++) {
+                            Object optionValue = optionalValues.get(i);
+                            optionalValues.set(i, getValue(jdbc, String.valueOf(optionValue)));
+                        }
+                        parameter.setOptionalValues(optionalValues);
                     }
-                    parameter.setValue(JSONObject.toJSONString(listMap));
                 } catch (SQLException e) {
                     throw new IllegalStateException("参数解析错误", e);
                 }
@@ -117,6 +122,14 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
         return parameters;
     }
 
+    private String getValue(@NotEmpty("jdbc") NewbieJdbcSupport jdbc, @NotEmpty("sql") String sql) {
+        List<Map<String, Object>> listMap = jdbc.listMap(sql);
+        if (listMap == null) {
+            listMap = new ArrayList<>();
+        }
+        return JSONObject.toJSONString(listMap);
+    }
+
     /**
      * 比较参数数量、名称等是否一致
      *
@@ -265,8 +278,7 @@ public class PanelInstanceServiceImpl extends BaseService<PanelInstance> impleme
             throw new IllegalStateException("面板 '" + panel.getName() + "' 未关联看板,请联系管理员");
         }
         panelInstance.initKanbanCodes(kanbans);
-        panelInstanceDao.save(panelInstance);
-        return panelInstance;
+        return panelInstanceDao.save(panelInstance);
     }
 
     /**