parent
54627d74ae
commit
4c6244d80f
|
|
@ -0,0 +1,123 @@
|
|||
package shkd.sys.sys.midservice.opplugin;
|
||||
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import shkd.sys.sys.midservice.handler.CreateToDoHandler;
|
||||
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/***
|
||||
* push-backlog
|
||||
*/
|
||||
public class BacklogPushOPPlugin extends AbstractOperationServicePlugIn {
|
||||
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
e.getFieldKeys().add("shkd_traceid");
|
||||
e.getFieldKeys().add("shkd_username");
|
||||
e.getFieldKeys().add("shkd_number");
|
||||
e.getFieldKeys().add("shkd_status");
|
||||
e.getFieldKeys().add("shkd_request");
|
||||
e.getFieldKeys().add("shkd_request_tag");
|
||||
e.getFieldKeys().add("shkd_response");
|
||||
e.getFieldKeys().add("shkd_url");
|
||||
e.getFieldKeys().add("shkd_ispush");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
super.onAddValidators(e);
|
||||
e.addValidator(new AbstractValidator() {
|
||||
@Override
|
||||
public void validate() {
|
||||
ExtendedDataEntity[] dataEntities1 = this.getDataEntities();
|
||||
Set<DynamicObject> shkdIspush = Arrays.stream(dataEntities1).filter(e1 -> e1.getDataEntity() != null)
|
||||
.map(e1 -> e1.getDataEntity())
|
||||
.filter(e1 -> e1.getBoolean("shkd_ispush")).collect(Collectors.toSet());
|
||||
if(shkdIspush.size() > 0){
|
||||
this.addErrorMessage(dataEntities1[0],"选中的数据中包含补推成功的数据,请手动过滤一下");
|
||||
}
|
||||
Set<DynamicObject> shkdResponse = Arrays.stream(dataEntities1).filter(e1 -> e1.getDataEntity() != null)
|
||||
.map(e1 -> e1.getDataEntity())
|
||||
.filter(e1 -> "true".equals(e1.getString("shkd_response"))).collect(Collectors.toSet());
|
||||
if(shkdResponse.size() > 0){
|
||||
this.addErrorMessage(dataEntities1[0],"选中的数据中包含推送成功的数据,请手动过滤一下");
|
||||
}
|
||||
Set<DynamicObject> shkdUrl = Arrays.stream(dataEntities1).filter(e1 -> e1.getDataEntity() != null)
|
||||
.map(e1 -> e1.getDataEntity())
|
||||
.filter(e1 -> StringUtils.isEmpty(e1.getString("shkd_url"))).collect(Collectors.toSet());
|
||||
if(shkdUrl.size() > 0){
|
||||
this.addErrorMessage(dataEntities1[0],"选中的数据url为空,请手动补充一下,推送旧eoss、url有值即可,推送新eoss,url中需要包含新eoss");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||
super.afterExecuteOperationTransaction(e);
|
||||
DynamicObject[] dataEntities1 = e.getDataEntities();
|
||||
for (DynamicObject dynamicObject : dataEntities1) {
|
||||
String shkdUrl = dynamicObject.getString("shkd_url");
|
||||
String type = dynamicObject.getString("shkd_status");
|
||||
String userName = dynamicObject.getString("shkd_username");
|
||||
String shkd_traceid = dynamicObject.getString("shkd_traceid");
|
||||
String data_json = dynamicObject.getString("shkd_request_tag");
|
||||
String title = dynamicObject.getString("shkd_request");
|
||||
String fbillno = dynamicObject.getString("shkd_number");
|
||||
if ("新eoss".equals(shkdUrl)) {
|
||||
new_push(title,data_json,shkd_traceid,userName,fbillno,type);
|
||||
}else{
|
||||
old_push(title,data_json,shkd_traceid,userName,fbillno,type);
|
||||
}
|
||||
dynamicObject.set("shkd_ispush",true);
|
||||
}
|
||||
SaveServiceHelper.save(dataEntities1);
|
||||
}
|
||||
public void old_push(String title,String data_json,String shkd_traceid, String userName,String fbillno,String type){
|
||||
switch (type){
|
||||
case "0":
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(data_json,title,shkd_traceid,userName,fbillno);
|
||||
break;
|
||||
case "2":
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDo(Long.valueOf(shkd_traceid),userName,fbillno);
|
||||
case "5":
|
||||
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(Long.valueOf(shkd_traceid),userName,fbillno);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void new_push(String title,String data_json,String shkd_traceid, String userName,String fbillno,String type){
|
||||
switch (type){
|
||||
case "0":
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(data_json,title,shkd_traceid,userName,fbillno);
|
||||
break;
|
||||
case "2":
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(Long.valueOf(shkd_traceid),userName,fbillno);
|
||||
case "5":
|
||||
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoNew(Long.valueOf(shkd_traceid),userName,fbillno);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -23,6 +23,7 @@ import shkd.sys.sys.midservice.handler.CreateToDoHandler;
|
|||
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||
import shkd.sys.sys.midservice.utils.GetUrlUtils;
|
||||
import shkd.sys.sys.midservice.utils.MobToDoServiceHelper;
|
||||
import shkd.sys.sys.utils.AesUtils;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
|
@ -31,6 +32,7 @@ import java.util.Map;
|
|||
import java.util.Objects;
|
||||
|
||||
import static shkd.sys.sys.midservice.utils.MobApproveListServiceHelper.allowMobApprove;
|
||||
import static shkd.sys.sys.midservice.utils.MobToDoServiceHelper.allowMobTodo;
|
||||
|
||||
/**
|
||||
* @Author: FangShiXiao
|
||||
|
|
@ -175,7 +177,8 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
//接收人手机号
|
||||
DynamicObject dynamicObject = QueryServiceHelper.queryOne("bos_user", "number,name," +
|
||||
"phone,username", new QFilter[]{new QFilter("id", "=", next.getString("freceiveuserid"))});
|
||||
String userName1 = dynamicObject.getString("username");
|
||||
String phone = dynamicObject.getString("phone");
|
||||
// String receiveUsersysName = dynamicObject.getString("username");
|
||||
String userName;
|
||||
try {
|
||||
userName = AesUtils.aesEncryptString(dynamicObject.getString("username"));
|
||||
|
|
@ -220,10 +223,10 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
form.append("\"").append(next.getString("fname")).append("\",");
|
||||
form.append("\"sendUserName\":");
|
||||
form.append("\"").append(next.getString("fstartname")).append("\",");
|
||||
form.append("\"receiveUsersysName\":");
|
||||
form.append("\"").append(userName1).append("\",");
|
||||
// form.append("\"receiveUsersysName\":");
|
||||
// form.append("\"").append(receiveUsersysName).append("\",");
|
||||
form.append("\"receiveUserId\":");
|
||||
form.append("\"").append(userName1).append("\",");
|
||||
form.append("\"").append(phone).append("\",");
|
||||
form.append("\"handleUrl\":");
|
||||
form.append("\"").append(pcUrl).append("&userName=").append(userName).append("\",");
|
||||
form.append("\"appHandleUrl\":");
|
||||
|
|
@ -248,9 +251,9 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
logger.info("###shkd_type参数为"+shkd_type);
|
||||
if (Objects.equals(shkd_type, "0")) {
|
||||
//旧 eoss 环境 待办
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), title, next.getLong("fid").toString(), userName1, next.getString("fbillno"));
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), title, next.getLong("fid").toString(), phone, next.getString("fbillno"));
|
||||
//旧 eoss 环境 已办
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"), userName1, next.getString("fbillno"));
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"), phone, next.getString("fbillno"));
|
||||
if (ObjectUtils.isEmpty(shkd_cache)) {
|
||||
z = 604800;
|
||||
} else {
|
||||
|
|
@ -260,9 +263,9 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
} else if (Objects.equals(shkd_type, "1")) {
|
||||
String replace = form.toString().replace("&ado=view", "&ado=view&isNew=true");
|
||||
//新 eoss 环境 待办
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(replace, title, next.getLong("fid").toString(), userName1, next.getString("fbillno"));
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(replace, title, next.getLong("fid").toString(), phone, next.getString("fbillno"));
|
||||
//新 eoss 环境 已办
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(next.getLong("fid"), userName1, next.getString("fbillno"));
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(next.getLong("fid"), phone, next.getString("fbillno"));
|
||||
if (ObjectUtils.isEmpty(shkd_cache)) {
|
||||
z = 604800;
|
||||
} else {
|
||||
|
|
@ -272,11 +275,11 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
} else if (Objects.equals(shkd_type, "2")) {
|
||||
String replace = form.toString().replace("&ado=view", "&ado=view&isNew=true");
|
||||
//二套环境 待办
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), title, next.getLong("fid").toString(), userName1, next.getString("fbillno"));
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(replace, title, next.getLong("fid").toString(), userName1, next.getString("fbillno"));
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), title, next.getLong("fid").toString(), phone, next.getString("fbillno"));
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(replace, title, next.getLong("fid").toString(), phone, next.getString("fbillno"));
|
||||
//二套环境 已办
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"), userName1, next.getString("fbillno"));
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(next.getLong("fid"), userName1, next.getString("fbillno"));
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"), phone, next.getString("fbillno"));
|
||||
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(next.getLong("fid"), phone, next.getString("fbillno"));
|
||||
if (ObjectUtils.isEmpty(shkd_cache)) {
|
||||
z = 604800;
|
||||
} else {
|
||||
|
|
@ -374,20 +377,23 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
form.append("\"").append(dynamicObject.getString("name")).append("\",");
|
||||
form.append("\"sendUserName\":");
|
||||
form.append("\"").append(dynamicObject.getString("startname")).append("\",");
|
||||
form.append("\"receiveUsersysName\":");
|
||||
form.append("\"").append(query_one.getString("username")).append("\",");
|
||||
// form.append("\"receiveUsersysName\":");
|
||||
// form.append("\"").append(query_one.getString("username")).append("\",");
|
||||
form.append("\"receiveUserId\":");
|
||||
form.append("\"").append(query_one.getString("username")).append("\",");
|
||||
form.append("\"").append(query_one.getString("phone")).append("\",");
|
||||
form.append("\"handleUrl\":");
|
||||
Map<String, Object> taskInfo = GetUrlUtils.getTaskInfo(todoInfo.getTaskId());
|
||||
String pc_url = GetUrlUtils.buildTaskUrl(taskInfo);
|
||||
String app_url = GetUrlUtils.buildAppTaskUrl(taskInfo);
|
||||
form.append("\"").append(pc_url).append("&userName=").append(userName).append("\",");
|
||||
form.append("\"appHandleUrl\":");
|
||||
form.append("\"").append(app_url).append("&userName=").append(userName).append("\",");
|
||||
// appUrl移动端查看模式
|
||||
form.append("\"appViewUrl\":");
|
||||
form.append("\"").append(app_url).append("&userName=").append(userName).append("&ado=view").append("\",");
|
||||
boolean b = allowMobTodo(ctx, todoInfo);
|
||||
if (!b) {
|
||||
form.append("\"appHandleUrl\":");
|
||||
form.append("\"").append(app_url).append("&userName=").append(userName).append("\",");
|
||||
// appUrl移动端查看模式
|
||||
form.append("\"appViewUrl\":");
|
||||
form.append("\"").append(app_url).append("&userName=").append(userName).append("&ado=view").append("\",");
|
||||
}
|
||||
form.append("\"appName\":");
|
||||
form.append("\"").append(ctx.getEntityName()).append("\",");
|
||||
//pc端查看模式
|
||||
|
|
@ -400,7 +406,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
form.append("}");
|
||||
logger.info("###待办拼接请求体:" + form);
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), todoInfo.getTitle(),
|
||||
todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno"));
|
||||
todoInfo.getTaskId().toString(), query_one.getString("phone"), dynamicObject.getString("billno"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -439,20 +445,23 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
form.append("\"").append(dynamicObject.getString("name")).append("\",");
|
||||
form.append("\"sendUserName\":");
|
||||
form.append("\"").append(dynamicObject.getString("startname")).append("\",");
|
||||
form.append("\"receiveUsersysName\":");
|
||||
form.append("\"").append(query_one.getString("username")).append("\",");
|
||||
// form.append("\"receiveUsersysName\":");
|
||||
// form.append("\"").append(query_one.getString("username")).append("\",");
|
||||
form.append("\"receiveUserId\":");
|
||||
form.append("\"").append(query_one.getString("username")).append("\",");
|
||||
form.append("\"").append(query_one.getString("phone")).append("\",");
|
||||
form.append("\"handleUrl\":");
|
||||
Map<String, Object> taskInfo = GetUrlUtils.getTaskInfo(todoInfo.getTaskId());
|
||||
String pc_url = GetUrlUtils.buildTaskUrl(taskInfo);
|
||||
String app_url = GetUrlUtils.buildAppTaskUrl(taskInfo);
|
||||
form.append("\"").append(pc_url).append("&isNew=true&userName=").append(userName).append("\",");
|
||||
form.append("\"appHandleUrl\":");
|
||||
form.append("\"").append(app_url).append("&isNew=true&userName=").append(userName).append("\",");
|
||||
// appUrl移动端查看模式
|
||||
form.append("\"appViewUrl\":");
|
||||
form.append("\"").append(app_url).append("&isNew=true&userName=").append(userName).append("&ado=view").append("\",");
|
||||
boolean b = allowMobTodo(ctx, todoInfo);
|
||||
if (!b) {
|
||||
form.append("\"appHandleUrl\":");
|
||||
form.append("\"").append(app_url).append("&isNew=true&userName=").append(userName).append("\",");
|
||||
// appUrl移动端查看模式
|
||||
form.append("\"appViewUrl\":");
|
||||
form.append("\"").append(app_url).append("&isNew=true&userName=").append(userName).append("&ado=view").append("\",");
|
||||
}
|
||||
form.append("\"appName\":");
|
||||
form.append("\"").append(ctx.getEntityName()).append("\",");
|
||||
//pc端查看模式
|
||||
|
|
@ -465,7 +474,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
|||
form.append("}");
|
||||
logger.info("###推送新EOSS待办拼接请求体:" + form);
|
||||
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(form.toString(), todoInfo.getTitle(),
|
||||
todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno"));
|
||||
todoInfo.getTaskId().toString(), query_one.getString("phone"), dynamicObject.getString("billno"));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
package shkd.sys.sys.midservice.utils;
|
||||
|
||||
import com.bes.admin.jeemx.util.ObjectUtil;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.workflow.engine.msg.ctx.MessageContext;
|
||||
import kd.bos.workflow.engine.msg.info.ToDoInfo;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author 方世筱
|
||||
* @Date 2025/6/20 0020 13:46
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class MobToDoServiceHelper {
|
||||
public static boolean allowMobTodo(String entityNumber,String billType,String procDefNumber,String nodeKey){
|
||||
QFilter[] qFilters = new QFilter[]{
|
||||
//实体编码=传入参数
|
||||
//生效
|
||||
new QFilter("shkd_entitynumber","=",entityNumber),
|
||||
new QFilter("shkd_enable","=",true)
|
||||
};
|
||||
Map<Object, DynamicObject> objectDynamicObjectMap = BusinessDataServiceHelper.loadFromCache(
|
||||
"shkd_mob_todo", "id,shkd_nolimitbilltype,shkd_nolimitprocess," +
|
||||
"shkd_nolimitnode,shkd_billtype,shkd_processnum,shkd_nodenum", qFilters);
|
||||
if(objectDynamicObjectMap != null && objectDynamicObjectMap.size()>0){
|
||||
Iterator<Map.Entry<Object, DynamicObject>> iterator = objectDynamicObjectMap.entrySet().iterator();
|
||||
while(iterator.hasNext()){
|
||||
Map.Entry<Object, DynamicObject> next = iterator.next();
|
||||
DynamicObject config = next.getValue();
|
||||
//限定单据类型且不一致
|
||||
if(!config.getBoolean("shkd_nolimitbilltype") && !ObjectUtil.equals(billType,config.getString("shkd_billtype"))){
|
||||
continue;
|
||||
}
|
||||
//限定流程且不一致
|
||||
if(!config.getBoolean("shkd_nolimitprocess") && !ObjectUtil.equals(procDefNumber,config.getString("shkd_processnum"))){
|
||||
continue;
|
||||
}
|
||||
//限定节点且不一致
|
||||
if(!config.getBoolean("shkd_nolimitnode") && !ObjectUtil.equals(nodeKey,config.getString("shkd_nodenum"))){
|
||||
continue;
|
||||
}
|
||||
//符合条件
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean allowMobTodo(MessageContext ctx, ToDoInfo todoInfo){
|
||||
String entityNumber=ctx.getEntityNumber();
|
||||
String billType = "";
|
||||
DynamicObject object = BusinessDataServiceHelper.loadSingleFromCache("wf_hitaskinst", "entityname",
|
||||
new QFilter[]{new QFilter("id", "=", todoInfo.getTaskId())});
|
||||
if(object != null){
|
||||
billType = object.getString("entityname");
|
||||
}
|
||||
String elementId = ctx.getElementId();
|
||||
int i = elementId.lastIndexOf("_");
|
||||
//流程
|
||||
String procDefNumber = elementId.substring(0, i);
|
||||
//节点
|
||||
String nodeKey = elementId.substring(i + 1);
|
||||
return allowMobTodo(entityNumber,billType,procDefNumber,nodeKey);
|
||||
}
|
||||
|
||||
public static boolean allowMobTodo(Object taskId){
|
||||
DynamicObject object = BusinessDataServiceHelper.loadSingleFromCache("wf_hitaskinst",
|
||||
"entitynumber,entityname,taskdefinitionkey",
|
||||
new QFilter[]{new QFilter("id", "=", taskId)});
|
||||
if(object != null){
|
||||
String entityNumber = object.getString("entitynumber");
|
||||
String billType = object.getString("entityname");
|
||||
String elementId = object.getString("taskdefinitionkey");
|
||||
int i = elementId.lastIndexOf("_");
|
||||
//流程
|
||||
String procDefNumber = elementId.substring(0, i);
|
||||
//节点
|
||||
String nodeKey = elementId.substring(i + 1);
|
||||
|
||||
return allowMobTodo(entityNumber,billType,procDefNumber,nodeKey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue