diff --git a/pom.xml b/pom.xml index 6deffb243385d5f3de705704dddb01bb9785dbd4..ca08f09110eb0456003cfbc23b544f5f02290397 100644 --- a/pom.xml +++ b/pom.xml @@ -58,5 +58,9 @@ limitations under the License. com.neatlogic neatlogic-event-base + + com.neatlogic + neatlogic-eoa-base + - \ No newline at end of file + diff --git a/src/main/java/neatlogic/module/process/dependency/handler/EoaTemplate2ProcessStepDependencyHandler.java b/src/main/java/neatlogic/module/process/dependency/handler/EoaTemplate2ProcessStepDependencyHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..3ce703a849888d64a1bbf833d2523b383db12d6c --- /dev/null +++ b/src/main/java/neatlogic/module/process/dependency/handler/EoaTemplate2ProcessStepDependencyHandler.java @@ -0,0 +1,77 @@ +package neatlogic.module.process.dependency.handler; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.asynchronization.threadlocal.TenantContext; +import neatlogic.framework.dependency.core.FixedTableDependencyHandlerBase; +import neatlogic.framework.dependency.core.IFromType; +import neatlogic.framework.dependency.dto.DependencyInfoVo; +import neatlogic.framework.dependency.dto.DependencyVo; +import neatlogic.framework.eoa.enums.EoaFromType; +import neatlogic.framework.process.dto.ProcessVo; +import neatlogic.module.process.dao.mapper.ProcessMapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Component +public class EoaTemplate2ProcessStepDependencyHandler extends FixedTableDependencyHandlerBase { + + @Resource + private ProcessMapper processMapper; + + @Override + protected DependencyInfoVo parse(DependencyVo dependencyVo) { + JSONObject config = dependencyVo.getConfig(); + if (MapUtils.isEmpty(config)) { + return null; + } + String stepUuid = dependencyVo.getTo(); + String processUuid = config.getString("processUuid"); + ProcessVo processVo = processMapper.getProcessBaseInfoByUuid(processUuid); + if (processVo == null) { + return null; + } + JSONObject processConfig = processVo.getConfig(); + if (MapUtils.isEmpty(processConfig)) { + return null; + } + JSONObject processObj = processConfig.getJSONObject("process"); + if (MapUtils.isEmpty(processObj)) { + return null; + } + JSONArray stepList = processObj.getJSONArray("stepList"); + if (CollectionUtils.isEmpty(stepList)) { + return null; + } + for (int i = 0; i < stepList.size(); i++) { + JSONObject stepObj = stepList.getJSONObject(i); + if (MapUtils.isEmpty(stepObj)) { + continue; + } + String uuid = stepObj.getString("uuid"); + if (!Objects.equals(uuid, stepUuid)) { + continue; + } + JSONObject dependencyInfoConfig = new JSONObject(); + dependencyInfoConfig.put("processUuid", processUuid); + dependencyInfoConfig.put("stepUuid", stepUuid); + List pathList = new ArrayList<>(); + pathList.add("流程管理"); + pathList.add(processVo.getName()); + String urlFormat = "/" + TenantContext.get().getTenantUuid() + "/process.html#/flow-edit?uuid=${DATA.processUuid}&stepUuid=${DATA.stepUuid}"; + return new DependencyInfoVo(stepUuid, dependencyInfoConfig, stepObj.getString("name"), pathList, urlFormat, this.getGroupName()); + } + return null; + } + + @Override + public IFromType getFromType() { + return EoaFromType.EOATEMPLATE; + } +} diff --git a/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java b/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java index 8c4f5b4a430c02e6c508af5280c9068e78944cd3..410544ae248065dc9ecd8ddf43790962ee88e749 100644 --- a/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java +++ b/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java @@ -2,6 +2,7 @@ package neatlogic.module.process.importexport.handler; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import neatlogic.framework.eoa.enums.EoaImportExportHandlerType; import neatlogic.framework.importexport.constvalue.FrameworkImportExportHandlerType; import neatlogic.framework.importexport.core.ImportExportHandlerBase; import neatlogic.framework.importexport.core.ImportExportHandlerType; @@ -435,6 +436,29 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { } } } + } else if (Objects.equals(handler, "eoa")) { + JSONObject eoaConfig = stepConfig.getJSONObject("eoaConfig"); + JSONArray eoaTemplateList = eoaConfig.getJSONArray("eoaTemplateList"); + if (CollectionUtils.isNotEmpty(eoaTemplateList)) { + for (int j = 0; j < eoaTemplateList.size(); j++) { + JSONObject eoaTemplateObj = eoaTemplateList.getJSONObject(j); + if (MapUtils.isEmpty(eoaTemplateObj)) { + continue; + } + Long id = eoaTemplateObj.getLong("id"); + if (id == null) { + continue; + } + if (action == IMPORT) { + Object newPrimaryKey = getNewPrimaryKey(EoaImportExportHandlerType.EOA_TEMPLATE, id, primaryChangeList); + if (newPrimaryKey != null) { + eoaTemplateObj.put("id", newPrimaryKey); + } + } else if (action == EXPORT) { + doExportData(EoaImportExportHandlerType.EOA_TEMPLATE, id, dependencyList, zipOutputStream); + } + } + } } } } diff --git a/src/main/java/neatlogic/module/process/service/ProcessServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessServiceImpl.java index 89c2ba4db98a7bca7fb94c8d12f896291de964ea..31bf04410aafe2badfe3fffdbd00c08118906e14 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessServiceImpl.java @@ -156,6 +156,16 @@ public class ProcessServiceImpl implements ProcessService { config.put("stepName", stepVo.getName()); DependencyManager.insert(FormScene2ProcessStepDependencyHandler.class, stepVo.getFormSceneUuid(), stepVo.getUuid(), config); } + if (CollectionUtils.isNotEmpty(stepVo.getEoaTemplateIdList())) { + for (Long eoaTemplateId : stepVo.getEoaTemplateIdList()) { + JSONObject config = new JSONObject(); + config.put("processUuid", uuid); + config.put("processName", processVo.getName()); + config.put("stepUuid", stepVo.getUuid()); + config.put("stepName", stepVo.getName()); + DependencyManager.insert(EoaTemplate2ProcessStepDependencyHandler.class, eoaTemplateId, stepVo.getUuid(), config); + } + } if (CollectionUtils.isNotEmpty(stepVo.getWorkerPolicyList())) { for (ProcessStepWorkerPolicyVo processStepWorkerPolicyVo : stepVo.getWorkerPolicyList()) { processMapper.insertProcessStepWorkerPolicy(processStepWorkerPolicyVo); @@ -247,6 +257,7 @@ public class ProcessServiceImpl implements ProcessService { processMapper.deleteProcessStepTagByProcessUuid(uuid); for (String stepUuid : processStepUuidList) { DependencyManager.delete(FormScene2ProcessStepDependencyHandler.class, stepUuid); + DependencyManager.delete(EoaTemplate2ProcessStepDependencyHandler.class, stepUuid); } }