From 0ceb6fcfecdc7299d8d8d0d87a4bfa2c243d49a2 Mon Sep 17 00:00:00 2001 From: "446052889@qq.com" <446052889@qq.com> Date: Wed, 28 Sep 2022 16:01:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E3=80=81=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=89=B9=E5=A4=84=E7=90=86=E5=85=B3=E8=81=94?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=A0=A1=E9=AA=8C=E7=94=B1=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=94=B9=E4=B8=BA=E5=8F=AA=E7=94=A8=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/com.actionsoft.apps.coe.pal.batch.jar | Bin 227751 -> 227184 bytes .../valid/impl/type/ValidRelation.java | 253 ++++++----------- .../valid/impl/type/ValidShapeRelation.java | 265 +++++++----------- 3 files changed, 183 insertions(+), 335 deletions(-) diff --git a/com.actionsoft.apps.coe.pal.batch/lib/com.actionsoft.apps.coe.pal.batch.jar b/com.actionsoft.apps.coe.pal.batch/lib/com.actionsoft.apps.coe.pal.batch.jar index a8dce7d63e650c42ad11e1365e692054f064a607..7032c7c8277915609ddfb6ecfd7a91a1be88ea68 100644 GIT binary patch delta 10435 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 delta 10904 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 diff --git a/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/process/valid/impl/type/ValidRelation.java b/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/process/valid/impl/type/ValidRelation.java index b3750aa9..0bd6d276 100644 --- a/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/process/valid/impl/type/ValidRelation.java +++ b/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/process/valid/impl/type/ValidRelation.java @@ -1,11 +1,6 @@ package com.actionsoft.apps.coe.pal.batch.web.create.process.valid.impl.type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import com.actionsoft.apps.AppsConst; import com.actionsoft.apps.coe.pal.batch.util.BatchUtil; @@ -78,81 +73,43 @@ public class ValidRelation implements ValidCell { isOk = false; msg = "单选属性不支持多个值"; } else { - for (String path : valueSet) { - String [] pathArr = path.split("/"); - boolean flag = true; - List tmpList = new ArrayList(); - for (int j = 0; j < pathArr.length; j++) { - if (UtilString.isEmpty(pathArr[j])) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - if (j == 0) {// 寻找流程大类是否存在 - if (!pathArr[j].equals(I18nRes.findValue(CoEConstant.APP_ID, category))) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList.add(category); - } else { - // 获取子节点 - List tmpList2 = new ArrayList(); - for (String pid : tmpList) { - List list = PALRepositoryCache.getAllSubModelsByPid(wsId, pid); - for (PALRepositoryModel model : list) { - if (model.isUse() && model.getName().equals(pathArr[j])) { - if (j == pathArr.length - 1) { - if ("default".equals(model.getMethodId())) { - isOk = false; - msg = "路径[" + path + "]末级流程不允许是文件夹"; - flag = false; - break; - } else if (!model.getMethodId().contains(method)) { - isOk = false; - msg = "路径[" + path + "]末级流程不符合属性范围要求"; - } else { - tmpList2.add(model.getId()); - } - } else { - tmpList2.add(model.getId()); - } - } - } - if (!flag) { - break; - } - } - if (flag && tmpList2.size() == 0) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList = tmpList2; + Iterator iterator = PALRepositoryCache.getByWsId(wsId); + Map map = new HashMap<>(); + while (iterator.hasNext()) { + PALRepositoryModel model = iterator.next(); + if (model.isUse()) { + map.put(model.getId(), model.getName().trim()); + } + } + for (String name : valueSet) { + List ids = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + if (name.equals(entry.getValue())) { + ids.add(entry.getKey()); } } - if (flag) { - if (tmpList.size() == 0) { + if (ids.size() == 0) { + isOk = false; + msg = "[" + name + "]不存在"; + break; + } if (ids.size() > 1) { + isOk = false; + msg = "[" + name + "]出现多个匹配"; + break; + } else { + PALRepositoryModel model = PALRepositoryCache.getCache().get(ids.get(0)); + if ("default".equals(model.getMethodId())) { isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不允许是文件夹"; break; - } else if (tmpList.size() > 1) { + } else if (!model.getMethodId().contains(method)) { isOk = false; - msg = "路径[" + path + "]存在多个,无法匹配"; - break; - } else if (tmpList.get(0).length() < 36) { - isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不符合属性范围要求"; break; } else { isOk = true; - repositoryIds.add(tmpList.get(0)); + repositoryIds.add(model.getId()); } - } else { - break; } } } @@ -169,7 +126,7 @@ public class ValidRelation implements ValidCell { } } attr.put("relations", result); - } else {// 关联的是形状 + } else if ("shape".equals(type)) {// 关联的是形状 Set fileShapeIds = new HashSet<>(); String [] valueArr = value.split(","); // 过滤掉空值 @@ -183,108 +140,70 @@ public class ValidRelation implements ValidCell { isOk = false; msg = "单选属性不支持多个值"; } else { - for (String path : valueSet) { - String [] pathArr = path.split("/"); - boolean flag = true; - List tmpList = new ArrayList(); - for (int j = 0; j < pathArr.length; j++) { - if (UtilString.isEmpty(pathArr[j])) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - if (j == 0) {// 寻找流程大类是否存在 - if (!pathArr[j].equals(I18nRes.findValue(CoEConstant.APP_ID, category))) { - isOk = false; - msg = "大类路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList.add(category); - } else { - // 获取子节点 - List tmpList2 = new ArrayList(); - for (String pid : tmpList) { - List list = PALRepositoryCache.getAllSubModelsByPid(wsId, pid); - String repositoryName = null; - String shapeName = null; - if (j == pathArr.length - 1) { - // 拆分名称为名称+节点名称 - String [] namePath = pathArr[j].split(":"); - if (namePath.length == 2 && !UtilString.isEmpty(namePath[0]) && !UtilString.isEmpty(namePath[1])) { - repositoryName = namePath[0]; - shapeName = namePath[1]; - } else { - isOk = false; - msg = "路径[" + path + "]末级流程与节点信息错误"; - flag = false; - break; - } - } - if (j == pathArr.length - 1) {// 最后一个层级 - for (PALRepositoryModel model : list) { - if (model.isUse() && model.getName().equals(repositoryName)) { - if ("default".equals(model.getMethodId())) { - isOk = false; - msg = "路径[" + path + "]末级流程不允许是文件夹"; - flag = false; - break; - } else if (!model.getMethodId().contains(method)) { - isOk = false; - msg = "路径[" + path + "]末级流程不符合属性范围要求"; - } else { - // 获取节点数据 - String definition = PALRepositoryQueryAPIManager.getInstance().getProcessDefinition(null, model.getId()); - List shapes = ShapeUtil.getShapeJsonToJsonObject(definition); - for (JSONObject shape : shapes) { - if (shapeName.equals(shape.getString("text"))) { - // 获取匹配的节点数据 - tmpList2.add(model.getId() + ":" + shape.getString("id") + ":" + shape.getString("text")); - } - } - } - } - } - } else { - for (PALRepositoryModel model : list) { - if (model.isUse() && model.getName().equals(pathArr[j])) { - tmpList2.add(model.getId()); - } - } - } - if (!flag) { - break; - } - } - if (flag && tmpList2.size() == 0) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList = tmpList2; + Iterator iterator = PALRepositoryCache.getByWsId(wsId); + Map map = new HashMap<>(); + while (iterator.hasNext()) { + PALRepositoryModel model = iterator.next(); + if (model.isUse()) { + map.put(model.getId(), model.getName().trim()); + } + } + for (String nameArr : valueSet) { + // 拆分名称为名称+节点名称 + String name = null; + String shapeName = null; + String [] namePath = nameArr.split(":"); + if (namePath.length == 2 && !UtilString.isEmpty(namePath[0]) && !UtilString.isEmpty(namePath[1])) { + name = namePath[0]; + shapeName = namePath[1]; + } else { + isOk = false; + msg = "[" + nameArr + "]末级模型与节点信息错误"; + break; + } + List ids = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + if (name.equals(entry.getValue())) { + ids.add(entry.getKey()); } } - if (flag) { - if (tmpList.size() == 0) { + if (ids.size() == 0) { + isOk = false; + msg = "[" + name + "]不存在"; + break; + } if (ids.size() > 1) { + isOk = false; + msg = "[" + name + "]出现多个匹配"; + break; + } else { + PALRepositoryModel model = PALRepositoryCache.getCache().get(ids.get(0)); + if ("default".equals(model.getMethodId())) { isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不允许是文件夹"; break; - } else if (tmpList.size() > 1) { + } else if (!model.getMethodId().contains(method)) { isOk = false; - msg = "路径[" + path + "]存在多个,无法匹配"; - break; - } else if (tmpList.get(0).length() < 36) { - isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不符合属性范围要求"; break; } else { + String result = null; + // 获取节点数据 + String definition = PALRepositoryQueryAPIManager.getInstance().getProcessDefinition(null, model.getId()); + List shapes = ShapeUtil.getShapeJsonToJsonObject(definition); + for (JSONObject shape : shapes) { + if (shapeName.equals(shape.getString("text"))) { + // 获取匹配的节点数据 + result = model.getId() + ":" + shape.getString("id") + ":" + shape.getString("text"); + } + } + if (result == null) { + isOk = false; + msg = "[" + shapeName + "]不存在"; + break; + } isOk = true; - fileShapeIds.add(tmpList.get(0)); + fileShapeIds.add(result); } - } else { - break; } } } @@ -300,6 +219,8 @@ public class ValidRelation implements ValidCell { shapes.add(object); } attr.put("relations", shapes); + } else { + msg = "不支持形状和模型同时选择的类型"; } JSONObject result = new JSONObject(); result.put("name", title); diff --git a/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/shape/valid/impl/type/ValidShapeRelation.java b/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/shape/valid/impl/type/ValidShapeRelation.java index 66e16f7f..adc6c7d3 100644 --- a/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/shape/valid/impl/type/ValidShapeRelation.java +++ b/com.actionsoft.apps.coe.pal.batch/src/com/actionsoft/apps/coe/pal/batch/web/create/shape/valid/impl/type/ValidShapeRelation.java @@ -1,14 +1,11 @@ package com.actionsoft.apps.coe.pal.batch.web.create.shape.valid.impl.type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import com.actionsoft.apps.AppsConst; import com.actionsoft.apps.coe.pal.batch.util.BatchUtil; +import com.actionsoft.apps.coe.pal.batch.web.create.process.ProcessConst; +import com.actionsoft.apps.coe.pal.batch.web.create.process.valid.ValidCell; import com.actionsoft.apps.coe.pal.batch.web.create.shape.ShapeConst; import com.actionsoft.apps.coe.pal.batch.web.create.shape.valid.ValidShapeCell; import com.actionsoft.apps.coe.pal.constant.CoEConstant; @@ -22,9 +19,13 @@ import com.actionsoft.i18n.I18nRes; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +/** + * 校验关联PAL模型和形状类型 + * @author sunlh + * + */ public class ValidShapeRelation implements ValidShapeCell { - private String getCategoryId(String categoryName) { Map result = new HashMap<>(); String [] methodArray = PALMethodCache.getPALMethodList(true).toArray(new String[0]); @@ -36,7 +37,7 @@ public class ValidShapeRelation implements ValidShapeCell { } return null; } - + @Override public Object validTableCell(Object param) { JSONObject paramObj = JSONObject.parseObject(param.toString()); @@ -74,81 +75,43 @@ public class ValidShapeRelation implements ValidShapeCell { isOk = false; msg = "单选属性不支持多个值"; } else { - for (String path : valueSet) { - String [] pathArr = path.split("/"); - boolean flag = true; - List tmpList = new ArrayList(); - for (int j = 0; j < pathArr.length; j++) { - if (UtilString.isEmpty(pathArr[j])) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - if (j == 0) {// 寻找流程大类是否存在 - if (!pathArr[j].equals(I18nRes.findValue(CoEConstant.APP_ID, category))) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList.add(category); - } else { - // 获取子节点 - List tmpList2 = new ArrayList(); - for (String pid : tmpList) { - List list = PALRepositoryCache.getAllSubModelsByPid(wsId, pid); - for (PALRepositoryModel model : list) { - if (model.isUse() && model.getName().equals(pathArr[j])) { - if (j == pathArr.length - 1) { - if ("default".equals(model.getMethodId())) { - isOk = false; - msg = "路径[" + path + "]末级流程不允许是文件夹"; - flag = false; - break; - } else if (!model.getMethodId().contains(method)) { - isOk = false; - msg = "路径[" + path + "]末级流程不符合属性范围要求"; - } else { - tmpList2.add(model.getId()); - } - } else { - tmpList2.add(model.getId()); - } - } - } - if (!flag) { - break; - } - } - if (flag && tmpList2.size() == 0) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList = tmpList2; + Iterator iterator = PALRepositoryCache.getByWsId(wsId); + Map map = new HashMap<>(); + while (iterator.hasNext()) { + PALRepositoryModel model = iterator.next(); + if (model.isUse()) { + map.put(model.getId(), model.getName().trim()); + } + } + for (String name : valueSet) { + List ids = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + if (name.equals(entry.getValue())) { + ids.add(entry.getKey()); } } - if (flag) { - if (tmpList.size() == 0) { + if (ids.size() == 0) { + isOk = false; + msg = "[" + name + "]不存在"; + break; + } if (ids.size() > 1) { + isOk = false; + msg = "[" + name + "]出现多个匹配"; + break; + } else { + PALRepositoryModel model = PALRepositoryCache.getCache().get(ids.get(0)); + if ("default".equals(model.getMethodId())) { isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不允许是文件夹"; break; - } else if (tmpList.size() > 1) { + } else if (!model.getMethodId().contains(method)) { isOk = false; - msg = "路径[" + path + "]存在多个,无法匹配"; - break; - } else if (tmpList.get(0).length() < 36) { - isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不符合属性范围要求"; break; } else { isOk = true; - repositoryIds.add(tmpList.get(0)); + repositoryIds.add(model.getId()); } - } else { - break; } } } @@ -165,7 +128,7 @@ public class ValidShapeRelation implements ValidShapeCell { } } attr.put("relations", result); - } else {// 关联的是形状 + } else if ("shape".equals(type)) {// 关联的是形状 Set fileShapeIds = new HashSet<>(); String [] valueArr = value.split(","); // 过滤掉空值 @@ -179,113 +142,75 @@ public class ValidShapeRelation implements ValidShapeCell { isOk = false; msg = "单选属性不支持多个值"; } else { - for (String path : valueSet) { - String [] pathArr = path.split("/"); - boolean flag = true; - List tmpList = new ArrayList(); - for (int j = 0; j < pathArr.length; j++) { - if (UtilString.isEmpty(pathArr[j])) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - if (j == 0) {// 寻找流程大类是否存在 - if (!pathArr[j].equals(I18nRes.findValue(CoEConstant.APP_ID, category))) { - isOk = false; - msg = "大类路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList.add(category); - } else { - // 获取子节点 - List tmpList2 = new ArrayList(); - for (String pid : tmpList) { - List list = PALRepositoryCache.getAllSubModelsByPid(wsId, pid); - String repositoryName = null; - String shapeName = null; - if (j == pathArr.length - 1) { - // 拆分名称为名称+节点名称 - String [] namePath = pathArr[j].split(":"); - if (namePath.length == 2 && !UtilString.isEmpty(namePath[0]) && !UtilString.isEmpty(namePath[1])) { - repositoryName = namePath[0]; - shapeName = namePath[1]; - } else { - isOk = false; - msg = "路径[" + path + "]末级流程与节点信息错误"; - flag = false; - break; - } - } - if (j == pathArr.length - 1) {// 最后一个层级 - for (PALRepositoryModel model : list) { - if (model.isUse() && model.getName().equals(repositoryName)) { - if ("default".equals(model.getMethodId())) { - isOk = false; - msg = "路径[" + path + "]末级流程不允许是文件夹"; - flag = false; - break; - } else if (!model.getMethodId().contains(method)) { - isOk = false; - msg = "路径[" + path + "]末级流程不符合属性范围要求"; - } else { - // 获取节点数据 - String definition = PALRepositoryQueryAPIManager.getInstance().getProcessDefinition(null, model.getId()); - List shapes = ShapeUtil.getShapeJsonToJsonObject(definition); - for (JSONObject shape : shapes) { - if (shapeName.equals(shape.getString("text"))) { - // 获取匹配的节点数据 - tmpList2.add(model.getId() + ":" + shape.getString("id") + ":" + shape.getString("text")); - } - } - } - } - } - } else { - for (PALRepositoryModel model : list) { - if (model.isUse() && model.getName().equals(pathArr[j])) { - tmpList2.add(model.getId()); - } - } - } - if (!flag) { - break; - } - } - if (flag && tmpList2.size() == 0) { - isOk = false; - msg = "路径[" + path + "]不存在"; - flag = false; - break; - } - tmpList = tmpList2; + Iterator iterator = PALRepositoryCache.getByWsId(wsId); + Map map = new HashMap<>(); + while (iterator.hasNext()) { + PALRepositoryModel model = iterator.next(); + if (model.isUse()) { + map.put(model.getId(), model.getName().trim()); + } + } + for (String nameArr : valueSet) { + // 拆分名称为名称+节点名称 + String name = null; + String shapeName = null; + String [] namePath = nameArr.split(":"); + if (namePath.length == 2 && !UtilString.isEmpty(namePath[0]) && !UtilString.isEmpty(namePath[1])) { + name = namePath[0]; + shapeName = namePath[1]; + } else { + isOk = false; + msg = "[" + nameArr + "]末级模型与节点信息错误"; + break; + } + List ids = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + if (name.equals(entry.getValue())) { + ids.add(entry.getKey()); } } - if (flag) { - if (tmpList.size() == 0) { + if (ids.size() == 0) { + isOk = false; + msg = "[" + name + "]不存在"; + break; + } if (ids.size() > 1) { + isOk = false; + msg = "[" + name + "]出现多个匹配"; + break; + } else { + PALRepositoryModel model = PALRepositoryCache.getCache().get(ids.get(0)); + if ("default".equals(model.getMethodId())) { isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不允许是文件夹"; break; - } else if (tmpList.size() > 1) { + } else if (!model.getMethodId().contains(method)) { isOk = false; - msg = "路径[" + path + "]存在多个,无法匹配"; - break; - } else if (tmpList.get(0).length() < 36) { - isOk = false; - msg = "路径[" + path + "]不存在"; + msg = "[" + name + "]不符合属性范围要求"; break; } else { + String result = null; + // 获取节点数据 + String definition = PALRepositoryQueryAPIManager.getInstance().getProcessDefinition(null, model.getId()); + List shapes = ShapeUtil.getShapeJsonToJsonObject(definition); + for (JSONObject shape : shapes) { + if (shapeName.equals(shape.getString("text"))) { + // 获取匹配的节点数据 + result = model.getId() + ":" + shape.getString("id") + ":" + shape.getString("text"); + } + } + if (result == null) { + isOk = false; + msg = "[" + shapeName + "]不存在"; + break; + } isOk = true; - fileShapeIds.add(tmpList.get(0)); + fileShapeIds.add(result); } - } else { - break; } } } - + JSONArray shapes = new JSONArray(); for (String fileShape : fileShapeIds) { String [] fileArr = fileShape.split(":"); @@ -296,6 +221,8 @@ public class ValidShapeRelation implements ValidShapeCell { shapes.add(object); } attr.put("relations", shapes); + } else { + msg = "不支持形状和模型同时选择的类型"; } JSONObject result = new JSONObject(); result.put("name", title);