浏览代码

Merge branch 'master' of ssh://10.10.101.21/source/kanban-parent

luhg 8 年之前
父节点
当前提交
da4eb0def9

+ 0 - 10
kanban-console/src/main/java/com/uas/kanban/dao/TemplateDao.java

@@ -63,14 +63,4 @@ public class TemplateDao extends BaseDao<Template> {
 		return filters;
 	}
 
-	@Override
-	public Template parse(@NotEmpty("json") String json) {
-		Template template = super.parse(json);
-		String content = template.getContent();
-		if (!StringUtils.isEmpty(content)) {
-			content = templateParser.processSql(content);
-			template.setContent(content);
-		}
-		return template;
-	}
 }

+ 18 - 1
kanban-console/src/main/java/com/uas/kanban/model/GlobalParameter.java

@@ -184,6 +184,18 @@ public class GlobalParameter extends BaseEntity {
 		}
 	}
 
+    /**
+     * 初始化参数值(如果已填写,不初始化)
+     */
+	public void mayInitValue(){
+        if (!ObjectUtils.isEmpty(getValue())) {
+            return;
+        }
+        if((inputMode == InputMode.Radio || inputMode == InputMode.DropDownBox) && optionalValues != null){
+            value = optionalValues.get(defaultOptionalValueIndex == null ? 0 : defaultOptionalValueIndex - 1);
+        }
+    }
+
 	/**
 	 * 检查参数
 	 *
@@ -193,7 +205,12 @@ public class GlobalParameter extends BaseEntity {
 	public void checkValue() throws IllegalArgumentException {
 		// 检查参数值是否已填写
 		if (ObjectUtils.isEmpty(getValue())) {
-			throw new IllegalArgumentException("需填写参数:code=" + code + ", name=" + name);
+			if((inputMode == InputMode.Radio || inputMode == InputMode.DropDownBox) && optionalValues != null){
+				value = optionalValues.get(defaultOptionalValueIndex == null ? 0 : defaultOptionalValueIndex - 1);
+			}
+			else{
+				throw new IllegalArgumentException("需填写公共参数:code=" + code + ", name=" + name);
+			}
 		}
 		// 通过单选或下拉框方式填写参数时,参数值必须是可选项中的一个值
 		if ((inputMode == InputMode.Radio || inputMode == InputMode.DropDownBox) && optionalValues != null) {

+ 4 - 6
kanban-console/src/main/java/com/uas/kanban/service/impl/KanbanInstanceServiceImpl.java

@@ -105,6 +105,9 @@ public class KanbanInstanceServiceImpl extends BaseService<KanbanInstance> imple
 		List<GlobalParameter> globalParameters = kanbanInstance.getGlobalParameters();
 		Map<String, List<TemplateParameter>> parameters = kanbanInstance.getParameters();
 		if (!CollectionUtils.isEmpty(globalParameters) || !CollectionUtils.isEmpty(parameters)) {
+            for(GlobalParameter globalParameter:globalParameters){
+                globalParameter.mayInitValue();
+            }
 			try {
 				KanbanInstance kanbanInstanceClone = ObjectUtils.clone(kanbanInstance);
 				generateParameters(kanbanInstanceClone);
@@ -373,12 +376,7 @@ public class KanbanInstanceServiceImpl extends BaseService<KanbanInstance> imple
 		String templateContent;
 		try {
 			NewbieJdbcSupport jdbc = dataSourceManager.getJdbc(template.getDataSourceCode());
-			// 替换参数
-			content = templateParser.replaceParameters(content, globalParameters, true,jdbc);
-			if (!StringUtils.isEmpty(title)) {
-				title = templateParser.replaceParameters(title, globalParameters, false,jdbc);
-			}
-			templateContent = templateParser.parseXml(content, title, jdbc);
+			templateContent = templateParser.parseXml(content, title, globalParameters, jdbc);
 		} catch (DocumentException e) {
 			throw new IllegalStateException("xml 解析出错", e);
 		} catch (TransformerException e) {

+ 28 - 10
kanban-console/src/main/java/com/uas/kanban/support/TemplateParser.java

@@ -66,7 +66,7 @@ public class TemplateParser {
 	 * @return 替换后的模版内容
      * @throws SQLException
 	 */
-	public String replaceParameters(@NotEmpty("content") String content, List<GlobalParameter> globalParameters,
+	private String replaceParameters(@NotEmpty("content") String content, List<GlobalParameter> globalParameters,
 			@NotEmpty("needSingleQuote") Boolean needSingleQuote, @NotEmpty("jdbc") NewbieJdbcSupport jdbc) throws SQLException {
 		if (CollectionUtils.isEmpty(globalParameters)) {
 			return content;
@@ -122,6 +122,8 @@ public class TemplateParser {
 	 *            模版内容
 	 * @param title
 	 *            标题
+	 * @param globalParameters
+	 *            公共参数
 	 * @param jdbc
 	 *            NewbieJdbcSupport 对象
 	 * @return 解析后的 json 数据
@@ -131,13 +133,17 @@ public class TemplateParser {
 	 * @throws SQLException
 	 * @throws IllegalStateException
 	 */
-	public String parseXml(@NotEmpty("content") String content, String title, @NotEmpty("jdbc") NewbieJdbcSupport jdbc)
+	public String parseXml(@NotEmpty("content") String content, String title,List<GlobalParameter> globalParameters, @NotEmpty("jdbc") NewbieJdbcSupport jdbc)
 			throws DocumentException, TransformerException, IOException, IllegalStateException, SQLException {
 		content = processSql(content);
-		content = processForm(content, jdbc);
-		content = processGrid(content, jdbc);
-		content = processBarAndLine(content, jdbc);
-		content = processPie(content, jdbc);
+		// 替换标题中的公共参数
+		if (!com.uas.kanban.util.StringUtils.isEmpty(title)) {
+			title = replaceParameters(title, globalParameters, false,jdbc);
+		}
+		content = processForm(content, jdbc, globalParameters);
+		content = processGrid(content, jdbc, globalParameters);
+		content = processBarAndLine(content, jdbc, globalParameters);
+		content = processPie(content, jdbc, globalParameters);
 		content = finalProcess(content, title);
 		return TranslateHelper.xmlToJson(content);
 	}
@@ -171,13 +177,15 @@ public class TemplateParser {
 	 *            模版内容
 	 * @param jdbc
 	 *            NewbieJdbcSupport 对象
+     * @param globalParameters
+     *            公共参数
 	 * @return 解析后的模版内容
 	 * @throws DocumentException
 	 * @throws SQLException
 	 * @throws IllegalStateException
 	 */
 	@SuppressWarnings("unchecked")
-	private String processForm(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc)
+	private String processForm(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc, List<GlobalParameter> globalParameters)
 			throws DocumentException, IllegalStateException, SQLException {
 		Document document = getDocument(content);
 		// 获取 form 组件
@@ -185,6 +193,7 @@ public class TemplateParser {
 		for (Element element : elements) {
 			// 执行 sql ,获取数据
 			String sql = element.attribute("sql").getText();
+            sql = replaceParameters(sql, globalParameters, true,jdbc);
 			// 获取 field 节点
 			List<Element> fieldElements = element.elements("field");
 			if (CollectionUtils.isEmpty(fieldElements)) {
@@ -212,13 +221,15 @@ public class TemplateParser {
 	 *            模版内容
 	 * @param jdbc
 	 *            NewbieJdbcSupport 对象
+     * @param globalParameters
+     *            公共参数
 	 * @return 解析后的模版内容
 	 * @throws DocumentException
 	 * @throws SQLException
 	 * @throws IllegalStateException
 	 */
 	@SuppressWarnings("unchecked")
-	private String processGrid(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc)
+	private String processGrid(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc, List<GlobalParameter> globalParameters)
 			throws DocumentException, IllegalStateException, SQLException {
 		Document document = getDocument(content);
 		// 获取 form 组件
@@ -226,6 +237,7 @@ public class TemplateParser {
 		for (Element element : elements) {
 			// 执行 sql ,获取数据
 			String sql = element.attribute("sql").getText();
+            sql = replaceParameters(sql, globalParameters, true,jdbc);
 			// 获取 field 节点
 			List<Element> fieldElements = element.elements("field");
 			if (CollectionUtils.isEmpty(fieldElements)) {
@@ -267,13 +279,15 @@ public class TemplateParser {
 	 *            模版内容
 	 * @param jdbc
 	 *            NewbieJdbcSupport 对象
+     * @param globalParameters
+     *            公共参数
 	 * @return 解析后的模版内容
 	 * @throws DocumentException
 	 * @throws SQLException
 	 * @throws IllegalStateException
 	 */
 	@SuppressWarnings("unchecked")
-	private String processBarAndLine(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc)
+	private String processBarAndLine(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc, List<GlobalParameter> globalParameters)
 			throws DocumentException, IllegalStateException, SQLException {
 		Document document = getDocument(content);
 		// 获取 bar 和 line 组件
@@ -281,6 +295,7 @@ public class TemplateParser {
 		for (Element element : elements) {
 			// 执行 sql ,获取数据
 			String sql = element.attribute("sql").getText();
+            sql = replaceParameters(sql, globalParameters, true,jdbc);
 			checkCount(jdbc.getDataSource().getConnection(), sql);
 			Map<String, List<Object>> map = convert(jdbc.listMap(sql));
 			if (CollectionUtils.isEmpty(map)) {
@@ -328,13 +343,15 @@ public class TemplateParser {
 	 *            模版内容
 	 * @param jdbc
 	 *            NewbieJdbcSupport 对象
+     * @param globalParameters
+     *            公共参数
 	 * @return 解析后的模版内容
 	 * @throws DocumentException
 	 * @throws SQLException
 	 * @throws IllegalStateException
 	 */
 	@SuppressWarnings("unchecked")
-	private String processPie(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc)
+	private String processPie(@NotEmpty("content") String content, @NotEmpty("jdbc") NewbieJdbcSupport jdbc, List<GlobalParameter> globalParameters)
 			throws DocumentException, IllegalStateException, SQLException {
 		Document document = getDocument(content);
 		// 获取 bar 和 line 组件
@@ -342,6 +359,7 @@ public class TemplateParser {
 		for (Element element : elements) {
 			// 执行 sql ,获取数据
 			String sql = element.attribute("sql").getText();
+            sql = replaceParameters(sql, globalParameters, true,jdbc);
 			checkCount(jdbc.getDataSource().getConnection(), sql);
 			List<Map<String, Object>> listMap = jdbc.listMap(sql);
 			if (CollectionUtils.isEmpty(listMap)) {