首节已办发送
This commit is contained in:
parent
950f2f595d
commit
3d9e628f2a
|
@ -1,7 +1,13 @@
|
||||||
package shkd.sys.sys.midservice.servicehandler;
|
package shkd.sys.sys.midservice.servicehandler;
|
||||||
|
|
||||||
|
import kd.bos.algo.DataSet;
|
||||||
|
import kd.bos.algo.Row;
|
||||||
|
import kd.bos.cache.CacheFactory;
|
||||||
|
import kd.bos.cache.DistributeSessionlessCache;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.db.DB;
|
||||||
|
import kd.bos.db.DBRoute;
|
||||||
import kd.bos.exception.ErrorCode;
|
import kd.bos.exception.ErrorCode;
|
||||||
import kd.bos.exception.KDException;
|
import kd.bos.exception.KDException;
|
||||||
import kd.bos.logging.Log;
|
import kd.bos.logging.Log;
|
||||||
|
@ -12,12 +18,14 @@ import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
|
||||||
import kd.bos.workflow.engine.msg.ctx.MessageContext;
|
import kd.bos.workflow.engine.msg.ctx.MessageContext;
|
||||||
import kd.bos.workflow.engine.msg.handler.AbstractServiceHandler;
|
import kd.bos.workflow.engine.msg.handler.AbstractServiceHandler;
|
||||||
import kd.bos.workflow.engine.msg.info.ToDoInfo;
|
import kd.bos.workflow.engine.msg.info.ToDoInfo;
|
||||||
|
import kd.hr.hdm.common.transfer.util.ObjectUtils;
|
||||||
import shkd.sys.sys.midservice.handler.CreateToDoHandler;
|
import shkd.sys.sys.midservice.handler.CreateToDoHandler;
|
||||||
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
import shkd.sys.sys.midservice.handler.DealToDoHandler;
|
||||||
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
|
||||||
import shkd.sys.sys.midservice.utils.GetUrlUtils;
|
import shkd.sys.sys.midservice.utils.GetUrlUtils;
|
||||||
import shkd.sys.sys.utils.AesUtils;
|
import shkd.sys.sys.utils.AesUtils;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -36,10 +44,10 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
public static final String TYPE = "todo";
|
public static final String TYPE = "todo";
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(BacklogServiceHandle.class);
|
private static final Log logger = LogFactory.getLog(BacklogServiceHandle.class);
|
||||||
|
private static final DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache();
|
||||||
|
|
||||||
public void createToDo(MessageContext ctx, ToDoInfo todoInfo) {
|
public void createToDo(MessageContext ctx, ToDoInfo todoInfo) {
|
||||||
logger.info("###创建待办_createToDo");
|
logger.info("###创建待办_createToDo");
|
||||||
//判断是否需要发送待办链接、true为不推送,false为推送
|
|
||||||
boolean b = allowMobApprove(ctx, todoInfo);
|
boolean b = allowMobApprove(ctx, todoInfo);
|
||||||
logger.info("###推送结果为:" + b + "(true为不推送,false为推送)");
|
logger.info("###推送结果为:" + b + "(true为不推送,false为推送)");
|
||||||
if (!b) {
|
if (!b) {
|
||||||
|
@ -56,6 +64,16 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
getToDoFormal(ctx, todoInfo);
|
getToDoFormal(ctx, todoInfo);
|
||||||
}
|
}
|
||||||
logger.info("###结束待办_createToDo");
|
logger.info("###结束待办_createToDo");
|
||||||
|
try {
|
||||||
|
String s = cache.get(ctx.getBusinessKey());
|
||||||
|
if (Objects.equals(s, "true")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 发送首节的已办
|
||||||
|
sendToDo(ctx);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.info("获得缓存失败,发送首节的已办失败:" + e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* //几个待办
|
/* //几个待办
|
||||||
List<Long> userIds = todoInfo.getUserIds();
|
List<Long> userIds = todoInfo.getUserIds();
|
||||||
|
@ -111,6 +129,229 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
}
|
}
|
||||||
logger.info("###结束待办_createToDo");*/
|
logger.info("###结束待办_createToDo");*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 首节已办数据发送
|
||||||
|
* @param ctx 信息
|
||||||
|
*/
|
||||||
|
private void sendToDo(MessageContext ctx) {
|
||||||
|
String accountId = System.getProperty("backlog-accountid");
|
||||||
|
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
|
||||||
|
StringBuilder cwbSql1 = new StringBuilder();
|
||||||
|
cwbSql1.append("SELECT ");
|
||||||
|
cwbSql1.append("b.FID,");
|
||||||
|
cwbSql1.append("b.FPROCDEFID,");
|
||||||
|
cwbSql1.append("b.FTASKDEFKEY,");
|
||||||
|
cwbSql1.append("b.FPROCINSTID,");
|
||||||
|
cwbSql1.append("b.FEXECUTIONID,");
|
||||||
|
cwbSql1.append("b.FPARENTTASKID,");
|
||||||
|
cwbSql1.append("b.FOWNER,");
|
||||||
|
cwbSql1.append("b.FASSIGNEE,");
|
||||||
|
cwbSql1.append("b.FCLAIMTIME,");
|
||||||
|
cwbSql1.append("b.FENDTIME,");
|
||||||
|
cwbSql1.append("b.FDURATION,");
|
||||||
|
cwbSql1.append("b.FPRIORITY,");
|
||||||
|
cwbSql1.append("b.FDUEDATE,");
|
||||||
|
cwbSql1.append("b.FFORMKEY,");
|
||||||
|
cwbSql1.append("b.FCATEGORY,");
|
||||||
|
cwbSql1.append("b.FISDISPLAY,");
|
||||||
|
cwbSql1.append("b.FSTARTERID,");
|
||||||
|
cwbSql1.append("b.FENTITYNUMBER,");
|
||||||
|
cwbSql1.append("b.FCREATEDATE,");
|
||||||
|
cwbSql1.append("b.FMODIFYDATE,");
|
||||||
|
cwbSql1.append("b.FASSIGNEEID,");
|
||||||
|
cwbSql1.append("b.FOWNERID,");
|
||||||
|
cwbSql1.append("b.FEXECUTIONTYPE,");
|
||||||
|
cwbSql1.append("b.FBUSINESSKEY,");
|
||||||
|
cwbSql1.append("b.FYZJGROUPID,");
|
||||||
|
cwbSql1.append("b.FPROCESSINGPAGE,");
|
||||||
|
cwbSql1.append("b.FHANDLESTATE,");
|
||||||
|
cwbSql1.append("b.FMOBILEFORMKEY,");
|
||||||
|
cwbSql1.append("b.FDELEGATION,");
|
||||||
|
cwbSql1.append("b.FBILLNO,");
|
||||||
|
cwbSql1.append("b.FPROCESSINGMOBILEPAGE,");
|
||||||
|
cwbSql1.append("b.FENDTYPE,");
|
||||||
|
cwbSql1.append("b.FSOURCE,");
|
||||||
|
cwbSql1.append("b.FVALIDATEOPERATION,");
|
||||||
|
cwbSql1.append("b.FNAME,");
|
||||||
|
cwbSql1.append("b.FSUBACTIVITYNAME,");
|
||||||
|
cwbSql1.append("b.FDESCRIPTION,");
|
||||||
|
cwbSql1.append("b.FSUBJECT,");
|
||||||
|
cwbSql1.append("b.FENTITYNAME,");
|
||||||
|
cwbSql1.append("b.FSENDERNAME,");
|
||||||
|
cwbSql1.append("b.FSTARTNAME,");
|
||||||
|
cwbSql1.append("b.FPARTICIPANTNAME,");
|
||||||
|
cwbSql1.append("b.FGROUPNUMBER,");
|
||||||
|
cwbSql1.append("b.FREALDURATION,");
|
||||||
|
cwbSql1.append("b.FBATCHOP,");
|
||||||
|
cwbSql1.append("b.FBILLTYPE,");
|
||||||
|
cwbSql1.append("b.FBIZTRACENO,");
|
||||||
|
cwbSql1.append("b.FSENDERNAMEFORMAT,");
|
||||||
|
cwbSql1.append("b.FSTARTNAMEFORMAT,");
|
||||||
|
cwbSql1.append("b.FPRESENTASSIGNEE,");
|
||||||
|
cwbSql1.append("b.FORGUNITID,");
|
||||||
|
cwbSql1.append("b.FORGVIEWID,");
|
||||||
|
cwbSql1.append("b.FPROCESSTYPE,");
|
||||||
|
cwbSql1.append("b.FSENDERID,");
|
||||||
|
cwbSql1.append("b.FCONTROL,");
|
||||||
|
cwbSql1.append("b.FEXTENDDATE,");
|
||||||
|
cwbSql1.append("b.FEXTENDNUMBER,");
|
||||||
|
cwbSql1.append("b.FEXTENDSTR1,");
|
||||||
|
cwbSql1.append("b.FEXTENDSTR2,");
|
||||||
|
cwbSql1.append("b.FDELETEREASON,");
|
||||||
|
cwbSql1.append("b.FEXTENDFORMAT,");
|
||||||
|
cwbSql1.append("b.FEXTENDMULSTR1,");
|
||||||
|
cwbSql1.append("b.FEXTENDMULSTR2,");
|
||||||
|
cwbSql1.append("a.FCREATEDATE fstarttime,");
|
||||||
|
cwbSql1.append("c.FID as factivityId,");
|
||||||
|
cwbSql1.append("d.FUSERID freceiveuserid,");
|
||||||
|
cwbSql1.append("d.FUSERNAME freceiveusername,");
|
||||||
|
cwbSql1.append("d.FCREATEDATE freceivetime,");
|
||||||
|
cwbSql1.append("d.FENDTIME fcompletetime,");
|
||||||
|
cwbSql1.append("d.FMODIFYDATE flastmodifytime ");
|
||||||
|
cwbSql1.append("from t_wf_hitaskinst b ");
|
||||||
|
cwbSql1.append("INNER JOIN t_wf_hiparticipant d on d.FTASKID=b.FID ");
|
||||||
|
cwbSql1.append("INNER JOIN t_wf_hiactinst c on c.FTASKID=b.FID ");
|
||||||
|
cwbSql1.append("INNER JOIN t_wf_hiprocinst a on a.FID=b.FPROCINSTID ");
|
||||||
|
cwbSql1.append("where b.fbusinesskey = ?");
|
||||||
|
cwbSql1.append(" and b.FDELETEREASON ='first_usertask_skip");
|
||||||
|
cwbSql1.append(" and b.FENDTIME is not null and d.FENDTIME is not null");
|
||||||
|
cwbSql1.append(" ORDER BY b.FMODIFYDATE,b.FID");
|
||||||
|
DataSet cwbAmount1 = DB.queryDataSet(this.getClass().getName(), DBRoute.of("sys"), cwbSql1.toString(), new Object[]{ctx.getBusinessKey()});
|
||||||
|
Iterator<Row> iterator = cwbAmount1.iterator();
|
||||||
|
logger.info("开始第一个节点已办数据拼接");
|
||||||
|
try {
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Row next = iterator.next();
|
||||||
|
//接收人手机号
|
||||||
|
DynamicObject dynamicObject = QueryServiceHelper.queryOne("bos_user", "number,name," +
|
||||||
|
"phone,username", new QFilter[]{new QFilter("id", "=", next.getString("freceiveuserid"))});
|
||||||
|
String userName1 = dynamicObject.getString("username");
|
||||||
|
String userName;
|
||||||
|
try {
|
||||||
|
userName = AesUtils.aesEncryptString(dynamicObject.getString("username"));
|
||||||
|
logger.info("AES加密后user:" + userName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
ErrorCode errorCode = new ErrorCode("error_code", "AES加密出现异常,请联系运维人员排查!");
|
||||||
|
throw new KDException(errorCode, e);
|
||||||
|
}
|
||||||
|
//判断是否移动端
|
||||||
|
boolean allowMobApprove = allowMobApprove(next.get("fid"));
|
||||||
|
if (allowMobApprove) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//标题
|
||||||
|
String title = next.getString("fsubject");
|
||||||
|
//PC地址
|
||||||
|
String pcUrl = GetUrlUtils.getInstance().getPcUrl(next.getString("fprocessingpage"),
|
||||||
|
next.getString("fprocessingmobilepage"),
|
||||||
|
next.getString("fsource"),
|
||||||
|
accountId,
|
||||||
|
next.getString("factivityId"),
|
||||||
|
next.getString("fbusinesskey"),
|
||||||
|
next.getString("fid"));
|
||||||
|
StringBuilder form = new StringBuilder();
|
||||||
|
form.append("{");
|
||||||
|
form.append("\"title\":");
|
||||||
|
form.append("\"").append(title).append("\",");
|
||||||
|
form.append("\"bName\":");
|
||||||
|
form.append("\"").append("司库").append("\",");
|
||||||
|
form.append("\"bussinessCode\":");
|
||||||
|
form.append("\"").append("EOSS").append("\",");
|
||||||
|
form.append("\"urGency\":");
|
||||||
|
form.append("\"0\",");
|
||||||
|
form.append("\"currentStepName\":");
|
||||||
|
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("\"receiveUserId\":");
|
||||||
|
form.append("\"").append(userName1).append("\",");
|
||||||
|
form.append("\"handleUrl\":");
|
||||||
|
form.append("\"").append(pcUrl).append("&userName=").append(userName).append("\",");
|
||||||
|
form.append("\"appHandleUrl\":");
|
||||||
|
form.append("\"").append(pcUrl).append("&userName=").append(userName).append("\",");
|
||||||
|
// appUrl移动端查看模式
|
||||||
|
form.append("\"appViewUrl\":");
|
||||||
|
form.append("\"").append(pcUrl).append("&userName=").append(userName).append("&ado=view").append("\",");
|
||||||
|
form.append("\"appName\":");
|
||||||
|
form.append("\"").append(next.getString("fentityname")).append("\",");
|
||||||
|
//pc端查看模式
|
||||||
|
form.append("\"viewUrl\":");
|
||||||
|
form.append("\"").append(pcUrl).append("&userName=").append(userName).append("&ado=view").append("\",");
|
||||||
|
form.append("\"pendingId\":");
|
||||||
|
form.append("\"").append(next.getLong("fid")).append("\",");
|
||||||
|
form.append("\"pendingAttr\":");
|
||||||
|
form.append("\"0\"");
|
||||||
|
form.append("}");
|
||||||
|
Object shkd_cache = SystemParamServiceHelper.getPublicParameter("shkd_cache");
|
||||||
|
Integer z = 0;
|
||||||
|
if (Objects.equals(shkd_type, "0")) {
|
||||||
|
//旧 eoss 环境
|
||||||
|
boolean b = CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), title, next.getLong("fid").toString(), userName, next.getString("fbillno"));
|
||||||
|
if(ObjectUtils.isEmpty(shkd_cache)){
|
||||||
|
z = 604800;
|
||||||
|
}else{
|
||||||
|
z = Integer.valueOf(shkd_cache.toString());
|
||||||
|
}
|
||||||
|
cache.put(ctx.getBusinessKey(),String.valueOf(b),z);
|
||||||
|
} else if (Objects.equals(shkd_type, "1")) {
|
||||||
|
//新 eoss 环境
|
||||||
|
boolean b = CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(form.toString(), title, next.getLong("fid").toString(), userName, next.getString("fbillno"));
|
||||||
|
if(ObjectUtils.isEmpty(shkd_cache)){
|
||||||
|
z = 604800;
|
||||||
|
}else{
|
||||||
|
z = Integer.valueOf(shkd_cache.toString());
|
||||||
|
}
|
||||||
|
cache.put(ctx.getBusinessKey(),String.valueOf(b),z);
|
||||||
|
} else if (Objects.equals(shkd_type, "2")) {
|
||||||
|
//二套环境
|
||||||
|
boolean b = CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), title, next.getLong("fid").toString(), userName, next.getString("fbillno"));
|
||||||
|
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoNew(form.toString(), title, next.getLong("fid").toString(), userName, next.getString("fbillno"));
|
||||||
|
if(ObjectUtils.isEmpty(shkd_cache)){
|
||||||
|
z = 604800;
|
||||||
|
}else{
|
||||||
|
z = Integer.valueOf(shkd_cache.toString());
|
||||||
|
}
|
||||||
|
cache.put(ctx.getBusinessKey(),String.valueOf(b),z);
|
||||||
|
}
|
||||||
|
if (Objects.equals(shkd_type, "0")) {
|
||||||
|
//旧 eoss 环境
|
||||||
|
boolean b = DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"), userName, next.getString("fbillno"));
|
||||||
|
if(ObjectUtils.isEmpty(shkd_cache)){
|
||||||
|
z = 604800;
|
||||||
|
}else{
|
||||||
|
z = Integer.valueOf(shkd_cache.toString());
|
||||||
|
}
|
||||||
|
cache.put(ctx.getBusinessKey(),String.valueOf(b),z);
|
||||||
|
} else if (Objects.equals(shkd_type, "1")) {
|
||||||
|
//新 eoss 环境
|
||||||
|
boolean b = DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(next.getLong("fid"), userName, next.getString("fbillno"));
|
||||||
|
if(ObjectUtils.isEmpty(shkd_cache)){
|
||||||
|
z = 604800;
|
||||||
|
}else{
|
||||||
|
z = Integer.valueOf(shkd_cache.toString());
|
||||||
|
}
|
||||||
|
cache.put(ctx.getBusinessKey(),String.valueOf(b),z);
|
||||||
|
} else if (Objects.equals(shkd_type, "2")) {
|
||||||
|
//二套环境
|
||||||
|
boolean b = DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"), userName, next.getString("fbillno"));
|
||||||
|
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(next.getLong("fid"), userName, next.getString("fbillno"));
|
||||||
|
if(ObjectUtils.isEmpty(shkd_cache)){
|
||||||
|
z = 604800;
|
||||||
|
}else{
|
||||||
|
z = Integer.valueOf(shkd_cache.toString());
|
||||||
|
}
|
||||||
|
cache.put(ctx.getBusinessKey(),String.valueOf(b),z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("###首节已办数据拼接、发送失败,具体原因:", e.getMessage(), e);
|
||||||
|
}
|
||||||
|
logger.info("首节已办数据拼接和发送完成");
|
||||||
|
}
|
||||||
|
|
||||||
//已办
|
//已办
|
||||||
public void dealToDo(MessageContext ctx, ToDoInfo info) {
|
public void dealToDo(MessageContext ctx, ToDoInfo info) {
|
||||||
logger.info("###创建已办_dealToDo");
|
logger.info("###创建已办_dealToDo");
|
||||||
|
@ -132,6 +373,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
logger.info("###结束已办_dealToDo");
|
logger.info("###结束已办_dealToDo");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//撤销
|
//撤销
|
||||||
public void deleteToDo(MessageContext ctx, ToDoInfo info) {
|
public void deleteToDo(MessageContext ctx, ToDoInfo info) {
|
||||||
logger.info("###创建撤销_deleteToDo");
|
logger.info("###创建撤销_deleteToDo");
|
||||||
|
@ -269,6 +511,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno"));
|
todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 测试环境、待办
|
* 测试环境、待办
|
||||||
*/
|
*/
|
||||||
|
@ -355,6 +598,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 测试环境、已办
|
* 测试环境、已办
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue