From 4aaa69a67113947c46d187bcc4a1839479981c95 Mon Sep 17 00:00:00 2001 From: ouyang Date: Wed, 10 May 2023 18:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=AF=E5=88=B0=E7=AB=AF=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=BA=94=E7=94=A8=E5=8A=9F=E8=83=BD=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E9=83=A8=E5=88=86=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...oft.apps.coe.method.process.subprocess.jar | Bin 1976 -> 10311 bytes .../manifest.xml | 15 +- .../subprocess/SubProcessController.java | 95 +++++++++ .../subprocess/constant/SubProcessConst.java | 14 ++ .../subprocess/model/vo/SubProcessTagVo.java | 40 ++++ .../subprocess/{ => plugin}/Plugins.java | 2 +- .../process/subprocess/web/SubProcessWeb.java | 201 ++++++++++++++++++ .../action.xml | 20 ++ 8 files changed, 380 insertions(+), 7 deletions(-) create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/constant/SubProcessConst.java create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/model/vo/SubProcessTagVo.java rename com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/{ => plugin}/Plugins.java (94%) create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml diff --git a/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar b/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar index eb6189fd38dfc31c1f4604debed7ac81fd131162..4b5db017b5bbfa5132bcc270682c8b252870bd68 100644 GIT binary patch literal 10311 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 delta 1125 zcmX>eu!EmBz?+$ci-CcIf#Go5iiy0+%pl5G3rr>G3j%pz3`js?G9#1p#NAwA`4d(k zYBDRM6PWg5bQc$4;Nak3IM9l!%O0r9v_2rGG(9t~ST8vzvAB3`NVLDOqsTutuH93( zN=5hF7meN$8+gE5yQ|``j#tygj2g*p$&s7x-hGqTdqiDW-lxXo*SpCob{&Q-44w7| z;vY6I+JC4b?RJp%krf|PpT(q|`+08W`!mPid&@I?c^oAZdqU&Hv5P9@wtW&tT74^D zWFN0DoD*jP0uEp&>#W}$RaR)avar3OLJiYOdV%xKj zUt-QVM|3&b{0W-!g~YQ<$4u%Ed@ahjxy$joX26{FyCg5w%XFUFpvmA|l=hwER&-EIjjsfhT-d2Mlh{=51W3U-2X_vW1BQ(d)w{?tsN8%=9@ zX1~&GubqEh;^OR_HPP!oC3Iz_XK=0!aC`ad*R!|Nmlqes#zoDn-TJAh@abP}R%OnZ zBdS$lr%PnnCWHtydit!sP`JgRWZfr&=;bO0wK$?%78xWJublUL^&;E%^_LC@STN3A zcg-jeAwdC5+V6lZ}kIUS$FF!KfxHr!?Lpm$T{q2E^sU`O=PP%pM4AU0Z zoGhjK%Q8pv`wG4;=)HC}VC58*sT-TQUMkAeJ~=zNtX1HiYL8HHK5Mw><|*HTlrvlk zgnt({d{9q(puiXSM($JjD0p=1);_2Gh5cyuh@&auArVQ4W<9VL;?) hWUK5azfyKqM#<3u-mE}3fQk|hhAbuq1`AdY4*))r_M`v+ diff --git a/com.actionsoft.apps.coe.method.process.subprocess/manifest.xml b/com.actionsoft.apps.coe.method.process.subprocess/manifest.xml index 82daaf07..e4241611 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/manifest.xml +++ b/com.actionsoft.apps.coe.method.process.subprocess/manifest.xml @@ -1,18 +1,18 @@ - 端到端(SubProcess)建模方法 + 端到端(SubProcess)建模方法 1.0 29 北京炎黄盈动科技发展有限责任公司 - false + false 2022-06-13 - -
+ +
2022-06-08 21:10:35 2022-06-13 09:36:32 - com.actionsoft.apps.coe.method.process.subprocess.Plugins + com.actionsoft.apps.coe.method.process.subprocess.plugin.Plugins @@ -23,5 +23,8 @@ - {"process.epc":{"code": "&#xe605;","color": "#4E7FF9"}} + {"process.epc":{"code": "&#xe605;","color": "#4E7FF9"}} + + process/3d2f5b3d-3e66-4777-808a-2c56e91dc8cc +
diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java new file mode 100644 index 00000000..6377716c --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java @@ -0,0 +1,95 @@ +package com.actionsoft.apps.coe.method.process.subprocess; + +import com.actionsoft.apps.coe.method.process.subprocess.web.SubProcessWeb; +import com.actionsoft.bpms.commons.mvc.view.ResponseObject; +import com.actionsoft.bpms.server.UserContext; +import com.actionsoft.bpms.server.bind.annotation.Controller; +import com.actionsoft.bpms.server.bind.annotation.Mapping; +import com.actionsoft.exception.AWSException; +import com.alibaba.fastjson.JSONArray; + +/** + * @author oYang + * @create 2023-05-09 15:37 + */ +@Controller +public class SubProcessController { + + /** + * 功能入口->获取部分初始数据 + * @param uc + * @return + */ + @Mapping("com.actionsoft.apps.coe.method.process.subprocess.init_data") + public String initData(UserContext uc){ + try { + SubProcessWeb processWeb = new SubProcessWeb(uc); + return processWeb.initData(); + } catch (AWSException e) { + return ResponseObject.newErrResponse(e.getMessage()).toString(); + } + } + + /** + * 功能入口->子流程树加载接口 + * 端到端功能入口处 加载流程文件树 调用资产库主界面左侧树方法API + * 在此基础上保留 EPC与泳道图 其它建模类型的模型过滤掉 + * @param uc + * @param wsId + * @param teamId + * @param pid + * @param createUsers + * @param orgIds + * @param methodIds + * @return + */ + @Mapping("com.actionsoft.apps.coe.method.process.subprocess.find_tree_node") + public String findSubProcessModelTreeNode(UserContext uc, String wsId, String teamId, String pid, String createUsers, String orgIds, String methodIds){ + SubProcessWeb processWeb = new SubProcessWeb(uc); + return processWeb.findSubProcessTreeNode(wsId, teamId, pid, createUsers, orgIds, methodIds); + } + + /** + * 功能入口->子流程选择接口 + * 根据选择的树节点 返回节点下所有子级节点(不限于一级子节点) + * @param uc + * @param nodeKeyJsonArr + * @return + */ + @Mapping("com.actionsoft.apps.coe.method.process.subprocess.find_tree_child_node_all") + public String findModeTreeChildNodeAll(UserContext uc, String nodeKeyJsonArr){ + try { + SubProcessWeb processWeb = new SubProcessWeb(uc); + JSONArray childNodeAll = processWeb.findModeTreeChildNodeAll(nodeKeyJsonArr); + ResponseObject ro = ResponseObject.newOkResponse("查询成功"); + ro.setData(childNodeAll); + return ro.toString(); + } catch (AWSException e) { + return ResponseObject.newErrResponse(e.getMessage()).toString(); + } + } + + /** + * 功能入口->加载位置树 + * @param uc + * @param wsId + * @param teamId + * @param pid + * @return + */ + @Mapping("com.actionsoft.apps.coe.method.process.subprocess.construct_position_tree") + public String constructPositionTree(UserContext uc, String wsId, String teamId, String pid){ + try { + SubProcessWeb processWeb = new SubProcessWeb(uc); + JSONArray data = processWeb.constructPositionTree(wsId, teamId, pid); + ResponseObject ro = ResponseObject.newOkResponse("查询成功"); + ro.setData(data); + return ro.toString(); + } catch (AWSException e) { + return ResponseObject.newErrResponse(e.getMessage()).toString(); + } + } + + + +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/constant/SubProcessConst.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/constant/SubProcessConst.java new file mode 100644 index 00000000..8c24c8e4 --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/constant/SubProcessConst.java @@ -0,0 +1,14 @@ +package com.actionsoft.apps.coe.method.process.subprocess.constant; + +/** + * @author oYang + * @create 2023-05-10 15:35 + */ +public interface SubProcessConst { + + // 应用ID + String APP_ID = "com.actionsoft.apps.coe.method.process.subprocess"; + + // 端到端流程存放父节点 参数名 + String SUB_PROCESS_MODEL_LOCATION = "SUB_PROCESS_MODEL_LOCATION"; +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/model/vo/SubProcessTagVo.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/model/vo/SubProcessTagVo.java new file mode 100644 index 00000000..e2373791 --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/model/vo/SubProcessTagVo.java @@ -0,0 +1,40 @@ +package com.actionsoft.apps.coe.method.process.subprocess.model.vo; + +/** + * @author oYang + * @create 2023-05-10 11:06 + */ +public class SubProcessTagVo { + + private String label; + private String value; + + public SubProcessTagVo(String label, String value) { + this.label = label; + this.value = value; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return "SubProcessTagVo{" + + "label='" + label + '\'' + + ", value='" + value + '\'' + + '}'; + } +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/Plugins.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/plugin/Plugins.java similarity index 94% rename from com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/Plugins.java rename to com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/plugin/Plugins.java index c1b18a9e..1ee4c5ae 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/Plugins.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/plugin/Plugins.java @@ -1,4 +1,4 @@ -package com.actionsoft.apps.coe.method.process.subprocess; +package com.actionsoft.apps.coe.method.process.subprocess.plugin; import com.actionsoft.apps.listener.PluginListener; import com.actionsoft.apps.resource.AppContext; diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java new file mode 100644 index 00000000..87a7784f --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java @@ -0,0 +1,201 @@ +package com.actionsoft.apps.coe.method.process.subprocess.web; + +import com.actionsoft.apps.coe.method.process.subprocess.constant.SubProcessConst; +import com.actionsoft.apps.coe.method.process.subprocess.model.vo.SubProcessTagVo; +import com.actionsoft.apps.coe.pal.constant.CoEConstant; +import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager; +import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache; +import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel; +import com.actionsoft.apps.coe.pal.pal.repository.web.CoeProcessLevelWeb; +import com.actionsoft.bpms.commons.mvc.view.ActionWeb; +import com.actionsoft.bpms.commons.mvc.view.ResponseObject; +import com.actionsoft.bpms.server.UserContext; +import com.actionsoft.bpms.util.UtilString; +import com.actionsoft.exception.AWSException; +import com.actionsoft.i18n.I18nRes; +import com.actionsoft.sdk.local.SDK; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.collections4.IteratorUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author oYang + * @create 2023-05-09 15:49 + */ +public class SubProcessWeb extends ActionWeb { + + private UserContext uc; + + public SubProcessWeb(UserContext uc) { + super(uc); + this.uc = uc; + } + + public String initData() throws AWSException{ + // 获取端到端文件存储的根目录 + String property = SDK.getAppAPI().getProperty(SubProcessConst.APP_ID, SubProcessConst.SUB_PROCESS_MODEL_LOCATION); + if (UtilString.isEmpty(property)) + throw new AWSException("应用参数【" + SubProcessConst.SUB_PROCESS_MODEL_LOCATION + "】异常"); + String[] locationIds = property.split("/"); + + StringBuffer dirName = new StringBuffer(I18nRes.findValue(CoEConstant.APP_ID, locationIds[0]) + "/"); + for (int i = 1; i < locationIds.length; i++) { + PALRepositoryModel model = PALRepositoryCache.getCache().get(locationIds[i]); + dirName.append(model.getName()).append("/"); + } + + ResponseObject ro = ResponseObject.newOkResponse(); + ro.put("dirRootName", dirName.toString()); + ro.put("dirRootPath", property); + return ro.toString(); + } + + /** + * 资产库主界面左侧树适配 + * @param wsId + * @param teamId + * @param pid + * @param createUsers + * @param orgIds + * @param methodIds + * @return + * @throws AWSException + */ + public String findSubProcessTreeNode(String wsId, String teamId, String pid, String createUsers, String orgIds, String methodIds) throws AWSException{ + // 调用资产库主界面左侧树的API + CoeProcessLevelWeb processLevelWeb = new CoeProcessLevelWeb(uc); + String result = processLevelWeb.getPalProcesslevelTreeData(wsId, teamId, pid, createUsers, orgIds, methodIds); + // 解析API返回结果 + ResponseObject ro = ResponseObject.parse(result); + JSONArray data = ro.getData(JSONArray.class); + if (UtilString.isEmpty(pid)){ + data = data.stream() + .filter(item -> "process".equals(((JSONObject)item).getString("plCategory"))) + .collect(Collectors.toCollection(JSONArray::new)); + }else { + // 保留EPC 与 泳道图 其它过滤掉 + data = data.stream() + .filter(item -> { + JSONObject model = (JSONObject) item; + boolean flag = false; + if ("process.framework".equals(model.getString("plMethodId")) || "default".equals(model.getString("plMethodId"))){ + // 递归判断该架构或者该文件夹是否保留 + flag = this.isContainEpcOrFlowChart(model.getString("wsId"),model.getString("versionId")); + }else if ("process.epc".equals(model.getString("plMethodId")) || "process.flowchart".equals(model.getString("plMethodId"))){ + flag = true; + } + return flag; + }) + .collect(Collectors.toCollection(JSONArray::new)); + } + ro.setData(data); + return ro.toString(); + } + + /** + * 递归判断当前架构或者文件夹是否包含 EPC或者泳道图 + * @param wsId + * @param pid + * @return + */ + private boolean isContainEpcOrFlowChart(String wsId, String pid){ + boolean flag = false; + Iterator iterator = PALRepositoryCache.getByPid(wsId, pid); + if (!iterator.hasNext()) return flag; + while (iterator.hasNext()){ + PALRepositoryModel currentModel = iterator.next(); + if ("process.framework".equals(currentModel.getMethodId()) || "default".equals(currentModel.getMethodId())){ + flag = this.isContainEpcOrFlowChart(wsId, currentModel.getVersionId()); + }else if ("process.epc".equals(currentModel.getMethodId()) || "process.flowchart".equals(currentModel.getMethodId())){ + flag = true; + } + if (flag) break; + } + return flag; + } + + /** + * 查询当前节点下的所有子级节点 + * @param nodeKeyJsonArr nodeKey的JSONArray字符串 + * @return JSONArray + * @throws AWSException + */ + public JSONArray findModeTreeChildNodeAll(String nodeKeyJsonArr) throws AWSException{ + if (UtilString.isEmpty(nodeKeyJsonArr)) { + throw new AWSException("参数异常"); + } + List tagVoList = new ArrayList<>(); + Set filterKeySet = new HashSet<>(); + List nodeKeys = JSONArray.parseArray(nodeKeyJsonArr, String.class); + List modelList = new ArrayList<>(); + for (String nodeKey : nodeKeys) { + PALRepositoryModel repositoryModel = PALRepositoryCache.getCache().get(nodeKey); + modelList.add(repositoryModel); + } + this.handleModelTreeChildNode(modelList, tagVoList, filterKeySet); + return (JSONArray) JSONArray.toJSON(tagVoList); + } + + private void handleModelTreeChildNode(List modelList, List tagVoList, Set filterKeySet){ + + for (PALRepositoryModel model : modelList) { + if (!("process.framework".equals(model.getMethodId()) + || "default".equals(model.getMethodId()))){ + // 当前模型不是架构或者文件夹 则直接放入返回列表中 + if (!filterKeySet.contains(model.getId())){ + SubProcessTagVo tagVo = new SubProcessTagVo(model.getName(), model.getId()); + tagVoList.add(tagVo); + filterKeySet.add(model.getId()); + } + continue; + } + // 获取当前模型的一级子节点 + Iterator iterator = PALRepositoryCache.getByPid(model.getWsId(), model.getId()); + List list = IteratorUtils.toList(iterator); + handleModelTreeChildNode(list, tagVoList, filterKeySet); + } + } + + /** + * 调用资产库主界面左侧树 API + * 在此基础上保留文件夹与架构 + * 其它模型文件过滤掉 + * @param wsId + * @param teamId + * @param pid + * @return + * @throws AWSException + */ + public JSONArray constructPositionTree(String wsId, String teamId, String pid) throws AWSException { + String property = SDK.getAppAPI().getProperty(SubProcessConst.APP_ID, SubProcessConst.SUB_PROCESS_MODEL_LOCATION); + if (UtilString.isEmpty(property)) + throw new AWSException("应用参数【" + SubProcessConst.SUB_PROCESS_MODEL_LOCATION + "】异常"); + String[] locationIds = property.split("/"); + if (UtilString.isEmpty(pid)){ + JSONArray result = PALRepositoryQueryAPIManager.getInstance().getPalRepositoryTreeRoot(uc, wsId, null, teamId); + result = result.stream() + .filter(item -> { + JSONObject model = (JSONObject) item; + return locationIds[0].equals(model.getString("id")); + }).collect(Collectors.toCollection(JSONArray :: new)); + return result; + } + JSONArray result = PALRepositoryQueryAPIManager.getInstance().getUsedPalRepositoryTreeDataByPidNew(uc, wsId, teamId, pid); + if (locationIds[0].equals(pid)){ + result = result.stream() + .filter(item -> locationIds[1].equals(((JSONObject)item).getString("id"))) + .collect(Collectors.toCollection(JSONArray :: new)); + return result; + } + result = result.stream() + .filter(item -> { + boolean flag = false; + JSONObject model = (JSONObject) item; + return flag = "default".equals(model.getString("plMethodId")) || "".equals(model.getString("plMethodId")); + }).collect(Collectors.toCollection(JSONArray :: new)); + return result; + } +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml b/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml new file mode 100644 index 00000000..46184d28 --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file