增加发布修改表单事件代码

This commit is contained in:
zhaol 2025-01-08 22:21:45 +08:00
parent ee7186cd0c
commit 33216e2a51
5 changed files with 83 additions and 4 deletions

View File

@ -6,7 +6,10 @@ import com.actionsoft.bpms.bo.design.model.BOModel;
import com.actionsoft.bpms.bo.engine.BO;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: yujh
@ -28,7 +31,12 @@ public class BoCopyUtil {
String itemName = item.getName();
Object fromItem = fromBo.get(itemName);
if(null != fromItem) {
toBo.set(itemName, fromItem);
String bodata=toBo.getString(itemName);
if(!fromItem.equals(bodata)){
if(!itemName.equals("PUBLISHBINDID")){
toBo.set(itemName, fromItem);
}
}
}
}
}
@ -39,16 +47,26 @@ public class BoCopyUtil {
* @param toBo 目标BO
* @param fromBoName 源BO表名称
*/
public static void copy(JSONObject fromJson, BO toBo, String fromBoName) {
public static boolean copy(JSONObject fromJson, BO toBo, String fromBoName) {
boolean flag=true;
BOModel boModel = BOCache.getInstance().getModelByEntityName(fromBoName);
List<BOItemModel> items = boModel.getBoItems();
for(BOItemModel item : items) {
String itemName = item.getName();
Object fromItem = fromJson.get(itemName);
if(null != fromItem) {
toBo.set(itemName, fromItem);
String bodata=toBo.getString(itemName);
if(!fromItem.equals(bodata)){
if(!itemName.equals("PUBLISHBINDID")){
System.out.println("发布表的值========"+bodata);
System.out.println("itemName========"+itemName);
System.out.println("修改表的值======"+fromItem);
flag=false;
}
}
}
}
return flag;
}
/**

View File

@ -5371,12 +5371,15 @@ public class ProcessPublishWeb extends ActionWeb {
ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_e2c34a123cbb413cae82b0ce1e637088", me.getUID(), "发起的发布流程数据修改流程");
SDK.getProcessAPI().start(processInstance);
BO publishBo=SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId).detail();
// 首先查询源表的数据查询条件请自行定义
BOQueryAPI query = SDK.getBOAPI().query("BO_ACT_COE_PUBLISH", true).addQuery("BINDID=", processInstId);
// 指定将要复制到新的bo表以及流程实例ID
BOCopyAPI copyAPI = query.copyTo("BO_ACT_PUBLISH_DATA", processInstance.getId());
copyAPI.addNewData("PUBLISHBINDID", processInstId);
copyAPI.addNewData("SOURCEDATA", JSON.toJSONString(publishBo.asMap()));
// 执行复制操作
copyAPI.exec();

View File

@ -0,0 +1,36 @@
package com.actionsoft.apps.coe.pal.publisher.event;
import com.actionsoft.apps.coe.pal.publisher.client.util.BoCopyUtil;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListenerInterface;
import com.actionsoft.exception.BPMNError;
import com.actionsoft.sdk.local.SDK;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class FormUpdateAfterSaveEvent extends ExecuteListener implements ExecuteListenerInterface {
@Override
public void execute(ProcessExecutionContext pro) throws Exception {
String bindid=pro.getProcessInstance().getId();
BO publishData=pro.getBO("BO_ACT_PUBLISH_DATA");
BO publishBo= SDK.getBOAPI().query("BO_ACT_COE_PUBLISH",true).addQuery("BINDID=",publishData.getString("PUBLISHBINDID")).detail();
BO publish_data=SDK.getBOAPI().query("BO_ACT_PUBLISH_DATA",true).addQuery("BINDID=",bindid).detail();
JSONObject publishJson =JSONObject.parseObject(JSON.toJSONString(publishBo.asMap()));
JSONObject sourceJson=JSONObject.parseObject(publish_data.getString("SOURCEDATA"));
boolean updateFlag= BoCopyUtil.copy(sourceJson,publishBo,"BO_ACT_COE_PUBLISH");
if(!updateFlag){
throw new BPMNError("0313","系统检测用户对于该单据已修改,需要重新发起修改流程");
}
}
}

View File

@ -9,6 +9,14 @@ import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.BOCopyAPI;
import com.actionsoft.sdk.local.api.BOQueryAPI;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
public class PublishUpdateDataProcessAfterCompleteEvent extends ExecuteListener implements ExecuteListenerInterface {
@ -27,10 +35,24 @@ public class PublishUpdateDataProcessAfterCompleteEvent extends ExecuteListener
BO publishBo=SDK.getBOAPI().query("BO_ACT_COE_PUBLISH",true).addQuery("BINDID=",publishData.getString("PUBLISHBINDID")).detail();
if(publishBo==null){
throw new Exception("未查到发布流程数据,请检查!");
}
BO publish_data=SDK.getBOAPI().query("BO_ACT_PUBLISH_DATA",true).addQuery("BINDID=",bindid).detail();
if(publish_data==null){
throw new Exception("未查到发布修改数据流程数据,请检查!");
}
JSONObject publishJson =JSONObject.parseObject(JSON.toJSONString(publishBo.asMap()));
JSONObject sourceJson=JSONObject.parseObject(publish_data.getString("SOURCEDATA"));
BoCopyUtil.copy(publish_data,publishBo,"BO_ACT_PUBLISH_DATA");
SDK.getBOAPI().update("BO_ACT_COE_PUBLISH",publishBo);
int count=SDK.getBOAPI().update("BO_ACT_COE_PUBLISH",publishBo);
}
}