From 34259470f1116d6d9ec30fa6090960e22f1883c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E4=B8=9C=E5=BC=BA?= <1559301693@qq.com> Date: Sat, 2 Aug 2025 23:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=80=BB=E8=A3=81=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=99=BD=E5=90=8D=E5=8D=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apps/integration/oa/TaskListener.java | 112 ++++++++++++++---- 1 file changed, 89 insertions(+), 23 deletions(-) diff --git a/com.awspaas.user.apps.yili.integration/src/com/awspaas/user/apps/integration/oa/TaskListener.java b/com.awspaas.user.apps.yili.integration/src/com/awspaas/user/apps/integration/oa/TaskListener.java index bbe58728..5664d81f 100644 --- a/com.awspaas.user.apps.yili.integration/src/com/awspaas/user/apps/integration/oa/TaskListener.java +++ b/com.awspaas.user.apps.yili.integration/src/com/awspaas/user/apps/integration/oa/TaskListener.java @@ -18,6 +18,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.awspaas.user.apps.integration.XmlDatasUtil; import com.awspaas.user.apps.integration.util.HttpClientUtils; +import jodd.util.StringUtil; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; @@ -443,8 +444,72 @@ public class TaskListener extends ProcessPubicListener { BO bo_act_coe_publish1 = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH").detailByBindId(processId); BO bo=SDK.getBOAPI().query("BO_ACT_DATA_MONITORING").detailByBindId(processId); if(bo_act_coe_publish1!=null){ - //这里不在处理数据监控为空,单据为Y的场景,只处理数据监控为N的单据为Y的场景 if(bo==null){ + String approve1=bo_act_coe_publish1.getString("CEO_APPROVE"); + if(approve1.equals("Y")){ + ProcessInstance processInst_1 = SDK.getProcessAPI().createProcessInstance("obj_d57df7db3e6845b3b30e7ff3cdd591c9","10036614","流程标题名称为"+pec.getProcessInstance().getTitle()+"总裁数据代办异常"); + BO bo_faid = new BO(); + bo_faid.set("TASKID",taskId); + bo_faid.set("APPLYUSER",bo_act_coe_publish1.getCreateUser()); + bo_faid.set("PROCESS_TITLE",pec.getProcessInstance().getTitle()); + bo_faid.set("PROCESSID",bo_act_coe_publish1.getBindId()); + SDK.getBOAPI().create("BO_ACT_DATA_CEO_MIGRATION",bo_faid,processInst_1.getId(),"admin"); + + ProcessInstance processInst_2 = SDK.getProcessAPI().createProcessInstance("obj_d57df7db3e6845b3b30e7ff3cdd591c9","00116580","流程标题名称为"+pec.getProcessInstance().getTitle()+"总裁数据代办异常"); + + + BO bo_faid1 = new BO(); + bo_faid1.set("TASKID",taskId); + bo_faid1.set("APPLYUSER",bo_act_coe_publish1.getCreateUser()); + bo_faid1.set("PROCESS_TITLE",pec.getProcessInstance().getTitle()); + bo_faid1.set("PROCESSID",bo_act_coe_publish1.getBindId()); + SDK.getBOAPI().create("BO_ACT_DATA_CEO_MIGRATION",bo_faid1,processInst_2.getId(),"admin"); + + ProcessInstance processInst_3 = SDK.getProcessAPI().createProcessInstance("obj_d57df7db3e6845b3b30e7ff3cdd591c9","admin","流程标题名称为"+pec.getProcessInstance().getTitle()+"总裁数据代办异常"); + + BO bo_faid2 = new BO(); + bo_faid2.set("TASKID",taskId); + bo_faid2.set("APPLYUSER",bo_act_coe_publish1.getCreateUser()); + bo_faid2.set("PROCESS_TITLE",pec.getProcessInstance().getTitle()); + bo_faid2.set("PROCESSID",bo_act_coe_publish1.getBindId()); + SDK.getBOAPI().create("BO_ACT_DATA_CEO_MIGRATION",bo_faid2,processInst_3.getId(),"admin"); + + + + SDK.getProcessAPI().start(processInst_1); + SDK.getProcessAPI().start(processInst_2); + SDK.getProcessAPI().start(processInst_3); + + + //发送OA待办 + TaskInstance taskInstance1= SDK.getTaskAPI().getInstanceById(processInst_1.getStartTaskInstId()); + TaskInstance taskInstance2= SDK.getTaskAPI().getInstanceById(processInst_2.getStartTaskInstId()); + + + sendOaDataPending(taskInstance1,processInst_1,"10036614"); + sendOaDataPending(taskInstance2,processInst_2,"00116580"); + + try{ + boolean hasProperty = SDK.getAppAPI().hasProperty("com.awspaas.user.apps.yili.integration", "CEO_approval_whitelist"); + String property = ""; + if (hasProperty) { + property = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "CEO_approval_whitelist"); + } + if (StringUtil.isBlank(property) || !property.contains(pec.getProcessInstance().getId())) { + //挂起流程 + SDK.getProcessAPI().suspend(pec.getProcessInstance()); + } + }catch (Exception e){ + e.printStackTrace(); + logger.info("取消挂起总裁审批流程失败,失败原因:"+e.getMessage()); + try { + SDK.getProcessAPI().suspend(pec.getProcessInstance()); + }catch (Exception e1){ + e1.printStackTrace(); + logger.info("挂起总裁流程失败,失败原因:"+e1.getMessage()); + } + } + } BO bo1=new BO(); bo1.set("PROCESSID",processId); bo1.set("TASKID",taskId); @@ -485,35 +550,36 @@ public class TaskListener extends ProcessPubicListener { SDK.getProcessAPI().start(processInst_2); SDK.getProcessAPI().start(processInst_3); + //发送OA待办 TaskInstance taskInstance1= SDK.getTaskAPI().getInstanceById(processInst_1.getStartTaskInstId()); TaskInstance taskInstance2= SDK.getTaskAPI().getInstanceById(processInst_2.getStartTaskInstId()); - //这里还需要增加流程所在的环节 - TaskInstance taskInstance = SDK.getTaskAPI().getTaskInstance(taskId); - String activityDefId = taskInstance.getActivityDefId();//任务节点ID - // 判断activityDefId不是发起人,流程校对人,流程经理,集团流程经理审批 - // 定义需要排除的审批节点ID集合 - Set excludedActivityDefIds = new HashSet<>(Arrays.asList( - "obj_c9e5a2e257f00001e2a375d01f601518", // 发起人 - "obj_c9e93c345010000148211f97f9c07f00", // 流程校对人 - "obj_c9e5a2e6a2c00001891c127ce9309250", // 流程经理 - "obj_cb4eae5c0d9000015a3019b015cdac30" // 集团流程经理 - )); - if (!excludedActivityDefIds.contains(activityDefId)) { - //挂起流程 - SDK.getProcessAPI().suspend(pec.getProcessInstance()); - }else{ - System.out.println(">>>>>我是特殊节点,无需挂起流程 = " + activityDefId); - } - //仿真环境OA接口不同,加个异常处理,防止程序中断 - try { - sendOaDataPending(taskInstance1,processInst_1,"10036614"); - sendOaDataPending(taskInstance2,processInst_2,"00116580"); + + sendOaDataPending(taskInstance1,processInst_1,"10036614"); + sendOaDataPending(taskInstance2,processInst_2,"00116580"); + + + try{ + boolean hasProperty = SDK.getAppAPI().hasProperty("com.awspaas.user.apps.yili.integration", "CEO_approval_whitelist"); + String property = ""; + if (hasProperty) { + property = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "CEO_approval_whitelist"); + } + if (StringUtil.isBlank(property) || !property.contains(pec.getProcessInstance().getId())) { + //挂起流程 + SDK.getProcessAPI().suspend(pec.getProcessInstance()); + } }catch (Exception e){ e.printStackTrace(); + logger.info("取消挂起总裁审批流程失败,失败原因:"+e.getMessage()); + try { + SDK.getProcessAPI().suspend(pec.getProcessInstance()); + }catch (Exception e1){ + e1.printStackTrace(); + logger.info("挂起总裁流程失败,失败原因:"+e1.getMessage()); + } } - } bo.set("CEO_APPROVE",approve1); SDK.getBOAPI().update("BO_ACT_DATA_MONITORING",bo);