Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
陈绍鑫 2025-07-02 16:09:34 +08:00
commit dc61586112
2 changed files with 305 additions and 61 deletions

View File

@ -55,16 +55,18 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
}
logger.info(String.format("callTrdSSOLogin→queryUrl%s", queryUrl));
logger.info(String.format("eoss_ip:%s,client_id:%s,client_secret:%s,重定向地址:%s", ip, client, secret, s));
queryUrl = Base64.getEncoder().encodeToString(queryUrl.getBytes(StandardCharsets.UTF_8));
String redirect = skIP + "/index.html?param=" + queryUrl;
String ssourl;
try {
logger.info(String.format("callTrdSSOLogin→true/false%s", queryUrl.contains("wf_approvalpage")));
//非待办登录到首页
if (!queryUrl.contains("wf_approvalpage")) {
//认证中心的登录地址
//重定向的统一认证的地址 获取授权码
//重定向到eoss统一认证的地址 获取授权码code
ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s",
ip, client, s);
ip, client, redirect);
if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) {
String userName = UserServiceHelper.getCurrentUser("name").getString("name");
DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion");
@ -73,13 +75,11 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler {
if (sessionId != null) {
AuthService.logout(ip, sessionId);
}
//退出系统跳转到eoss登录页
ssourl = ip + "/service/SGE-project-sctz-master/pc/dist/login.html";
}
} else {
queryUrl = Base64.getEncoder().encodeToString(queryUrl.getBytes(StandardCharsets.UTF_8));
String skUrl = RevProxyUtil.getURLContextPath(httpServletRequest);
logger.info("callTrdSSOLogin→getURLContextPath" + skUrl);
String redirect = skIP + "/index.html?param=" + queryUrl;
//待办跳转相关逻辑处理
logger.info("callTrdSSOLogin→skip" + redirect);
//重定向的统一认证的地址 获取授权码
ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s",

View File

@ -1,7 +1,13 @@
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.DynamicObjectCollection;
import kd.bos.db.DB;
import kd.bos.db.DBRoute;
import kd.bos.exception.ErrorCode;
import kd.bos.exception.KDException;
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.handler.AbstractServiceHandler;
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.DealToDoHandler;
import shkd.sys.sys.midservice.handler.deleteToDoHandler;
import shkd.sys.sys.midservice.utils.GetUrlUtils;
import shkd.sys.sys.utils.AesUtils;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -36,26 +44,36 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
public static final String TYPE = "todo";
private static final Log logger = LogFactory.getLog(BacklogServiceHandle.class);
private static final DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache();
public void createToDo(MessageContext ctx, ToDoInfo todoInfo) {
logger.info("###创建待办_createToDo");
//判断是否需要发送待办链接true为不推送false为推送
boolean b = allowMobApprove(ctx, todoInfo);
logger.info("###推送结果为:"+b+"(true为不推送false为推送)");
if(!b){
logger.info("###推送结果为:" + b + "(true为不推送false为推送)");
if (!b) {
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
if (Objects.equals(shkd_type, "0")) {
// eoss 环境
getToDoFormal(ctx,todoInfo);
}else if(Objects.equals(shkd_type,"1")){
getToDoFormal(ctx, todoInfo);
} else if (Objects.equals(shkd_type, "1")) {
//新eoss 环境
getToDoNew(ctx,todoInfo);
}else if(Objects.equals(shkd_type,"2")){
getToDoNew(ctx, todoInfo);
} else if (Objects.equals(shkd_type, "2")) {
//二套环境
getToDoNew(ctx,todoInfo);
getToDoFormal(ctx,todoInfo);
getToDoNew(ctx, todoInfo);
getToDoFormal(ctx, todoInfo);
}
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();
@ -111,44 +129,268 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
}
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");
boolean b = allowMobApprove(ctx, info);
logger.info("###推送结果为:"+b+"(true为不推送false为推送)");
if(!b){
logger.info("###推送结果为:" + b + "(true为不推送false为推送)");
if (!b) {
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
if (Objects.equals(shkd_type, "0")) {
// eoss 环境
getDealFormal(ctx,info);
}else if(Objects.equals(shkd_type,"1")){
getDealFormal(ctx, info);
} else if (Objects.equals(shkd_type, "1")) {
// eoss 环境
getDealNew(ctx,info);
}else if(Objects.equals(shkd_type,"2")){
getDealNew(ctx, info);
} else if (Objects.equals(shkd_type, "2")) {
//二套环境
getDealNew(ctx,info);
getDealFormal(ctx,info);
getDealNew(ctx, info);
getDealFormal(ctx, info);
}
logger.info("###结束已办_dealToDo");
}
}
//撤销
public void deleteToDo(MessageContext ctx, ToDoInfo info){
public void deleteToDo(MessageContext ctx, ToDoInfo info) {
logger.info("###创建撤销_deleteToDo");
boolean b = allowMobApprove(ctx, info);
logger.info("###推送结果为:"+b+"(true为不推送false为推送)");
if(!b){
logger.info("###推送结果为:" + b + "(true为不推送false为推送)");
if (!b) {
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
if (Objects.equals(shkd_type, "0")) {
// eoss 环境
getDeleteFormal(ctx,info);
}else if(Objects.equals(shkd_type,"1")){
getDeleteFormal(ctx, info);
} else if (Objects.equals(shkd_type, "1")) {
// eoss 环境
getDeleteNew(ctx,info);
}else if(Objects.equals(shkd_type,"2")){
getDeleteNew(ctx, info);
} else if (Objects.equals(shkd_type, "2")) {
//二套环境
getDeleteNew(ctx,info);
getDeleteFormal(ctx,info);
getDeleteNew(ctx, info);
getDeleteFormal(ctx, info);
}
/* List<Long> userIds = info.getUserIds();
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,phone,username", new QFilter[]{new QFilter("id", "in", userIds)});
@ -269,6 +511,7 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno"));
}
}
/***
* 测试环境待办
*/
@ -338,40 +581,41 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
/***
* 正式环境已办办
*/
public void getDealFormal(MessageContext ctx, ToDoInfo info){
public void getDealFormal(MessageContext ctx, ToDoInfo info) {
//几个已办
List<Long> userIds = info.getUserIds();
logger.info("####已办taskid:"+info.getTaskId());
logger.info("####已办taskid:" + info.getTaskId());
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,phone,username", new QFilter[]{new QFilter("id", "in", userIds)});
DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno",
new QFilter[]{new QFilter("id", "=", info.getTaskId())});
//业务id
Long taskId = ctx.getTaskId();
for (DynamicObject queryOne : query) {
if(dynamicObject != null){
DealToDoHandler.get_DealToDoHandler().sendDealToDo(taskId,queryOne.getString("username"),dynamicObject.getString("billno"));
}else{
DealToDoHandler.get_DealToDoHandler().sendDealToDo(taskId,queryOne.getString("username"),"");
if (dynamicObject != null) {
DealToDoHandler.get_DealToDoHandler().sendDealToDo(taskId, queryOne.getString("username"), dynamicObject.getString("billno"));
} else {
DealToDoHandler.get_DealToDoHandler().sendDealToDo(taskId, queryOne.getString("username"), "");
}
}
}
/***
* 测试环境已办
*/
public void getDealNew(MessageContext ctx, ToDoInfo info){
public void getDealNew(MessageContext ctx, ToDoInfo info) {
//几个已办
List<Long> userIds = info.getUserIds();
logger.info("####已办taskid:"+info.getTaskId());
logger.info("####已办taskid:" + info.getTaskId());
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,phone,username", new QFilter[]{new QFilter("id", "in", userIds)});
DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno",
new QFilter[]{new QFilter("id", "=", info.getTaskId())});
//业务id
Long taskId = ctx.getTaskId();
for (DynamicObject queryOne : query) {
if(dynamicObject != null){
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(taskId,queryOne.getString("username"),dynamicObject.getString("billno"));
}else{
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(taskId,queryOne.getString("username"),"");
if (dynamicObject != null) {
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(taskId, queryOne.getString("username"), dynamicObject.getString("billno"));
} else {
DealToDoHandler.get_DealToDoHandler().sendDealToDoNew(taskId, queryOne.getString("username"), "");
}
}
}
@ -379,19 +623,19 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
/***
* 测试环境撤销
*/
public void getDeleteFormal(MessageContext ctx, ToDoInfo info){
public void getDeleteFormal(MessageContext ctx, ToDoInfo info) {
List<Long> userIds = info.getUserIds();
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,phone,username", new QFilter[]{new QFilter("id", "in", userIds)});
DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno",
new QFilter[]{new QFilter("id", "=", info.getTaskId())});
//业务id
Long taskId = ctx.getTaskId();
logger.info("####撤销taskid:"+info.getTaskId());
logger.info("####撤销taskid:" + info.getTaskId());
for (DynamicObject queryOne : query) {
if(dynamicObject != null){
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(taskId,queryOne.getString("username"),dynamicObject.getString("billno"));
}else{
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(taskId,queryOne.getString("username"),"");
if (dynamicObject != null) {
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(taskId, queryOne.getString("username"), dynamicObject.getString("billno"));
} else {
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(taskId, queryOne.getString("username"), "");
}
}
}
@ -399,19 +643,19 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
/***
* 测试环境撤销
*/
public void getDeleteNew(MessageContext ctx, ToDoInfo info){
public void getDeleteNew(MessageContext ctx, ToDoInfo info) {
List<Long> userIds = info.getUserIds();
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,phone,username", new QFilter[]{new QFilter("id", "in", userIds)});
DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno",
new QFilter[]{new QFilter("id", "=", info.getTaskId())});
//业务id
Long taskId = ctx.getTaskId();
logger.info("####撤销taskid:"+info.getTaskId());
logger.info("####撤销taskid:" + info.getTaskId());
for (DynamicObject queryOne : query) {
if(dynamicObject != null){
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoNew(taskId,queryOne.getString("username"),dynamicObject.getString("billno"));
}else{
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoNew(taskId,queryOne.getString("username"),"");
if (dynamicObject != null) {
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoNew(taskId, queryOne.getString("username"), dynamicObject.getString("billno"));
} else {
deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoNew(taskId, queryOne.getString("username"), "");
}
}
}