From a3c58db58870b2c25724d36925ddf080ea0efdd8 Mon Sep 17 00:00:00 2001 From: yujh Date: Thu, 27 Jun 2024 09:55:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=8C=89=E9=92=AE=EF=BC=8C?= =?UTF-8?q?=E5=BA=9F=E6=AD=A2=E6=8C=89=E9=92=AE=E5=90=8E=E7=AB=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pal/publisher/PublisherController.java | 23 ++++ .../client/web/ProcessPublishWeb.java | 119 ++++++++++++++++-- 2 files changed, 133 insertions(+), 9 deletions(-) diff --git a/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/PublisherController.java b/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/PublisherController.java index 76fbaffd..23ee3e61 100644 --- a/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/PublisherController.java +++ b/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/PublisherController.java @@ -4,6 +4,8 @@ import com.actionsoft.apps.AppsConst; import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager; import com.actionsoft.apps.coe.pal.publisher.client.web.ProcessPublishClientWeb; import com.actionsoft.apps.coe.pal.publisher.client.web.ProcessPublishWeb; +import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance; +import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance; import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate; import com.actionsoft.bpms.commons.login.constant.LoginConst; import com.actionsoft.bpms.commons.mvc.view.ResponseObject; @@ -907,5 +909,26 @@ public class PublisherController { return web.changeHisToPublicAll(); } + /** + * 创建发布流程 + * @param processDefId + * @return + */ + @Mapping("com.actionsoft.apps.coe.pal.publisher.createProcess") + public String createProcess(UserContext me,String palUUID, String processDefId) { + ProcessPublishWeb web = new ProcessPublishWeb(me); + return web.createProcess(palUUID,processDefId); + } + + /** + * 创建发布流程(废止状态) + * @param processDefId + * @return + */ + @Mapping("com.actionsoft.apps.coe.pal.publisher.createProcess_processTermination") + public String createProcessTermination(UserContext me,String palUUID, String processDefId) { + ProcessPublishWeb web = new ProcessPublishWeb(me); + return web.createProcessTermination(palUUID,processDefId); + } } \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/client/web/ProcessPublishWeb.java b/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/client/web/ProcessPublishWeb.java index 18302a55..cb411632 100644 --- a/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/client/web/ProcessPublishWeb.java +++ b/com.actionsoft.apps.coe.pal.publisher/src/com/actionsoft/apps/coe/pal/publisher/client/web/ProcessPublishWeb.java @@ -4,15 +4,7 @@ import java.io.File; import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ThreadFactory; @@ -20,6 +12,8 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryPropertyCache; +import com.actionsoft.apps.coe.pal.publisher.constant.FilePermConstant; import org.apache.commons.lang.StringUtils; import com.actionsoft.apps.coe.pal.constant.CoEConstant; @@ -4953,4 +4947,111 @@ public class ProcessPublishWeb extends ActionWeb { return String.valueOf(count); } + /** + * 创建发布流程 + * @param processDefId + * @return + */ + public String createProcess(String palUUID,String processDefId) { + ResponseObject responseObject = ResponseObject.newOkResponse(); + String optionType = "";//发布类型 + String subBoName = "";//子表名称 + //获取文件属性 + PALRepositoryModel thisModel = PALRepositoryCache.getCache().get(palUUID); + PALRepositoryModel hisModel = null; + List modelList = PALRepositoryCache.getCache().getByVersionId(thisModel.getVersionId()); + Optional firstPublished = modelList.stream().filter(PALRepositoryModel::isPublish).findFirst(); + if (firstPublished.isPresent()) { + hisModel = firstPublished.get(); + System.out.println("第一个已发布的对象是:" + hisModel.toString()); // 假设有toString方法 + if(hisModel.getId().equals(thisModel.getId())){ + responseObject.msg("该文件已经发布"); + return responseObject.toString(); + }else{ + optionType = "流程制度版本更新"; + subBoName = "BO_ACT_COE_PUBLISH_C"; + } + } else { + optionType = "流程制度发布"; + subBoName = "BO_ACT_COE_PUBLISH_N"; + } + ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance(processDefId, _uc.getUID(), _uc.getUserName()+"发起流程发布流程"); + BO bo =new BO(); + BO subBO =new BO(); + bo.set("OPTIONTYPE",optionType);//发布类型,不同的发布类型,显示不同的子表数据 + if(optionType.equals("流程制度发布")){//创建一个子表 + subBO.set("PUBLISTHTYPE","N"); + subBO.set("PUBLISHFILENAME",thisModel.getName()); + subBO.set("PUBLISHFILEID",thisModel.getId()); + subBO.set("TASKID","submit_create"); + subBO.set("FILETYPE","111"); + SDK.getBOAPI().create(subBoName,subBO,processInstance.getId(),_uc.getUID()); + }else { + subBO.set("CHANGETYPE","C"); + subBO.set("CHANGEFILENAME",hisModel.getName()); + subBO.set("CHANGEDFILENAMENEW",thisModel.getName()); + subBO.set("CHANGEFILEID",hisModel.getId()); + subBO.set("CHANGEDFILEIDNEW",thisModel.getId()); + subBO.set("TASKID","submit_create"); + subBO.set("PUBLISH_NUMBER",PALRepositoryPropertyCache.getPropertyByPropertyId(palUUID, "file_number").getPropertyValue()); + SDK.getBOAPI().create(subBoName,subBO,processInstance.getId(),_uc.getUID()); + } + //获取流程L1-L4等级名称 + getProcessLevel(bo,palUUID); + //创建主表数据 + SDK.getBOAPI().create(PublisherConstant.BOTABLENAME,bo,processInstance.getId(),_uc.getUID()); + TaskInstance taskInstance = SDK.getProcessAPI().start(processInstance).fetchActiveTasks().get(0); + String formURL = SDK.getFormAPI().getFormURL(SDK.getPlatformAPI().getPortalUrl(), getContext().getSessionId(), processInstance.getId(), taskInstance.getId(), SDK.getTaskAPI().getTaskInstance(taskInstance.getId()).getState(), "", "", ""); + responseObject.put("url",formURL); + return responseObject.toString(); + } + + /** + * 废止逻辑 + * @param palUUID + * @param processDefId + * @return + */ + public String createProcessTermination(String palUUID,String processDefId) { + ResponseObject responseObject = ResponseObject.newOkResponse(); + String optionType = "流程制度废止"; + String subBoName = "BO_ACT_COE_PUBLISH_S"; + //获取文件属性 + PALRepositoryModel thisModel = PALRepositoryCache.getCache().get(palUUID); + ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance(processDefId, _uc.getUID(), _uc.getUserName()+"发起流程发布流程"); + BO bo =new BO(); + BO subBO =new BO(); + bo.set("OPTIONTYPE",optionType);//发布类型,不同的发布类型,显示不同的子表数据 + //获取流程L1-L4等级名称 + getProcessLevel(bo,palUUID); + subBO.set("STOPTYPE","S"); + subBO.set("STOPFILENAME",thisModel.getName()); + subBO.set("STOPFILEID",thisModel.getId()); + subBO.set("TASKID","submit_create"); + SDK.getBOAPI().create(PublisherConstant.BOTABLENAME,bo,processInstance.getId(),_uc.getUID()); + SDK.getBOAPI().create(subBoName,subBO,processInstance.getId(),_uc.getUID()); + TaskInstance taskInstance = SDK.getProcessAPI().start(processInstance).fetchActiveTasks().get(0); + String formURL = SDK.getFormAPI().getFormURL(SDK.getPlatformAPI().getPortalUrl(), getContext().getSessionId(), processInstance.getId(), taskInstance.getId(), SDK.getTaskAPI().getTaskInstance(taskInstance.getId()).getState(), "", "", ""); + responseObject.put("url",formURL); + return responseObject.toString(); + } + + /** + * 获取流程L1-L4等级名称 + * @param bo + * @param palUUID + * @return + */ + public void getProcessLevel(BO bo,String palUUID){ + PALRepositoryPropertyCache cache = PALRepositoryPropertyCache.getCache(); + String l1_name = cache.getPropertyByPropertyId(palUUID, "Process_Architecture_L1").getPropertyValue(); + bo.set("LEVEL_1_PROCESS_NAME",l1_name); + String l2_name = cache.getPropertyByPropertyId(palUUID, "Process_Architecture_L2").getPropertyValue(); + bo.set("LEVEL_2_PROCESS_NAME",l2_name); + String l3_name = cache.getPropertyByPropertyId(palUUID, "Process_Architecture_L3").getPropertyValue(); + bo.set("LEVEL_3_PROCESS_NAME",l3_name); + String l4_name = cache.getPropertyByPropertyId(palUUID, "Process_Architecture_L4").getPropertyValue(); + bo.set("LEVEL_4_PROCESS_NAME",l4_name); + + } } \ No newline at end of file