调整总裁流程白名单问题

This commit is contained in:
袁东强 2025-08-02 23:46:40 +08:00 committed by zhaolei
parent a488bb9bfe
commit 34259470f1

View File

@ -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<String> 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);