|
|
@@ -19,6 +19,7 @@ import java.util.regex.Pattern;
|
|
|
|
|
|
import javax.xml.transform.TransformerException;
|
|
|
|
|
|
+import com.uas.kanban.model.Type;
|
|
|
import org.dom4j.Attribute;
|
|
|
import org.dom4j.Document;
|
|
|
import org.dom4j.DocumentException;
|
|
|
@@ -53,17 +54,20 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 替换模版中的参数为实际值
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param globalParameters
|
|
|
* 公共参数
|
|
|
* @param needSingleQuote
|
|
|
* 参数值是否以单引号括起来(用于 sql)
|
|
|
+ * @param jdbc
|
|
|
+ * NewbieJdbcSupport 对象
|
|
|
* @return 替换后的模版内容
|
|
|
+ * @throws SQLException
|
|
|
*/
|
|
|
public String replaceParameters(@NotEmpty("content") String content, List<GlobalParameter> globalParameters,
|
|
|
- @NotEmpty("needSingleQuote") Boolean needSingleQuote) {
|
|
|
+ @NotEmpty("needSingleQuote") Boolean needSingleQuote, @NotEmpty("jdbc") NewbieJdbcSupport jdbc) throws SQLException {
|
|
|
if (CollectionUtils.isEmpty(globalParameters)) {
|
|
|
return content;
|
|
|
}
|
|
|
@@ -86,6 +90,20 @@ public class TemplateParser {
|
|
|
if (value == null) {
|
|
|
throw new IllegalStateException("公共参数值为null:" + globalParameterName);
|
|
|
}
|
|
|
+
|
|
|
+ // 如果公共参数值为 {@link Type#SQL} ,需要取得查询结果
|
|
|
+ if(globalParameter.getType()== Type.SQL){
|
|
|
+ String stringValue=(String)value;
|
|
|
+ stringValue=replaceParameters(stringValue,globalParameters,true,jdbc);
|
|
|
+ checkCount(jdbc.getDataSource().getConnection(), stringValue);
|
|
|
+ Map<String, Object> data = jdbc.findMap(stringValue);
|
|
|
+ if (CollectionUtils.isEmpty(data)) {
|
|
|
+ throw new IllegalStateException("公共参数通过 SQL 取得结果为空:"+globalParameterName);
|
|
|
+ }else if(data.size()>1){
|
|
|
+ throw new IllegalStateException("公共参数通过 SQL 取得结果不止一列:"+globalParameterName);
|
|
|
+ }
|
|
|
+ value=data.values().iterator().next();
|
|
|
+ }
|
|
|
// TODO value 为时间
|
|
|
if (needSingleQuote != null && needSingleQuote.booleanValue()) {
|
|
|
content = content.substring(0, start) + "'" + value + "'" + content.substring(end);
|
|
|
@@ -99,7 +117,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 解析单个 xml 模版,转为 json 格式的数据
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param title
|
|
|
@@ -126,7 +144,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 处理 sql ,包括替换特殊字符等
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @return 处理后的模版内容
|
|
|
@@ -148,7 +166,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 处理模版中的 form 组件
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param jdbc
|
|
|
@@ -189,7 +207,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 处理模版中的 grid 组件
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param jdbc
|
|
|
@@ -244,7 +262,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 处理模版中的 bar 和 line 组件
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param jdbc
|
|
|
@@ -305,7 +323,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 处理模版中的pie组件
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param jdbc
|
|
|
@@ -345,7 +363,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 读取 xml 为 Document 对象
|
|
|
- *
|
|
|
+ *
|
|
|
* @param xml
|
|
|
* xml 字符串
|
|
|
* @return Document 对象
|
|
|
@@ -357,7 +375,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 检查当前条件下的结果数目是否超出限制
|
|
|
- *
|
|
|
+ *
|
|
|
* @param connection
|
|
|
* @param sql
|
|
|
* @throws SQLException
|
|
|
@@ -374,7 +392,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 获取当前查询语句的结果数目
|
|
|
- *
|
|
|
+ *
|
|
|
* @param connection
|
|
|
* @param sql
|
|
|
* @return
|
|
|
@@ -434,7 +452,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 将 List<Map<String, Object>> 转为 Map<String, List<Object>>
|
|
|
- *
|
|
|
+ *
|
|
|
* @param listMap
|
|
|
* 将转换的对象,每个 Map 的键都相同,否则会得到非预期的结果<br/>
|
|
|
* 如下所示:
|
|
|
@@ -482,7 +500,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 将对象转为字符串
|
|
|
- *
|
|
|
+ *
|
|
|
* @param object
|
|
|
* 对象
|
|
|
* @return 转换的字符串
|
|
|
@@ -499,7 +517,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 对模版内容的最终处理,包括映射、添加title等
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param title
|
|
|
@@ -521,7 +539,7 @@ public class TemplateParser {
|
|
|
|
|
|
/**
|
|
|
* 为模版添加 title
|
|
|
- *
|
|
|
+ *
|
|
|
* @param content
|
|
|
* 模版内容
|
|
|
* @param title
|