From 34a735d8301ec65e805d26db9078e515a338dfdb Mon Sep 17 00:00:00 2001 From: fang <123456> Date: Tue, 8 Apr 2025 20:17:16 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=B0=E4=B8=80=E5=A5=97?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backlogTack/ToDoResendTack.java | 38 ++- .../midservice/handler/CreateToDoHandler.java | 74 +++++- .../midservice/handler/DealToDoHandler.java | 30 +++ .../midservice/handler/deleteToDoHandler.java | 29 ++ .../servicehandler/BacklogServiceHandle.java | 251 ++++++++++++++++-- .../sys/midservice/utils/RequestClient.java | 151 ++++++++++- 6 files changed, 535 insertions(+), 38 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/backlogTack/ToDoResendTack.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/backlogTack/ToDoResendTack.java index d00c8d2..003f064 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/backlogTack/ToDoResendTack.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/backlogTack/ToDoResendTack.java @@ -74,6 +74,8 @@ public class ToDoResendTack extends AbstractTask { String accountId = System.getProperty("backlog-accountid"); logger.info("拼接sql,此次拼接的待办类型为:" + t_status + "(1:待办、2已办、5撤销),使用参数startTime:" + startTime + "endTime:" + endTime); + Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type"); + StringBuilder cwbSql1 = new StringBuilder(); cwbSql1.append("SELECT "); cwbSql1.append("b.FID,"); @@ -224,12 +226,44 @@ public class ToDoResendTack extends AbstractTask { form.append("\"0\""); form.append("}"); CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno")); + if(java.util.Objects.equals(shkd_type,"0")){ + //正式环境 + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno")); + }else if(java.util.Objects.equals(shkd_type,"1")){ + //测试环境 + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoTest(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno")); + + }else if(java.util.Objects.equals(shkd_type,"2")){ + //二套环境 + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno")); + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoTest(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno")); + } break; case "2": - DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"),userName,next.getString("fbillno")); + if(java.util.Objects.equals(shkd_type,"0")){ + //正式环境 + DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"),userName,next.getString("fbillno")); + }else if(java.util.Objects.equals(shkd_type,"1")){ + //测试环境 + DealToDoHandler.get_DealToDoHandler().sendDealToDoTest(next.getLong("fid"),userName,next.getString("fbillno")); + }else if(java.util.Objects.equals(shkd_type,"2")){ + //二套环境 + DealToDoHandler.get_DealToDoHandler().sendDealToDo(next.getLong("fid"),userName,next.getString("fbillno")); + DealToDoHandler.get_DealToDoHandler().sendDealToDoTest(next.getLong("fid"),userName,next.getString("fbillno")); + } break; case "5": - deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(next.getLong("fid"),userName,next.getString("fbillno")); + if(java.util.Objects.equals(shkd_type,"0")){ + //正式环境 + deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(next.getLong("fid"),userName,next.getString("fbillno")); + }else if(java.util.Objects.equals(shkd_type,"1")){ + //测试环境 + deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoTest(next.getLong("fid"),userName,next.getString("fbillno")); + }else if(java.util.Objects.equals(shkd_type,"2")){ + //二套环境 + deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(next.getLong("fid"),userName,next.getString("fbillno")); + deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoTest(next.getLong("fid"),userName,next.getString("fbillno")); + } break; default: break; diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/CreateToDoHandler.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/CreateToDoHandler.java index 73c8deb..1f98d22 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/CreateToDoHandler.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/CreateToDoHandler.java @@ -1,13 +1,26 @@ package shkd.sys.sys.midservice.handler; +import cn.hutool.crypto.SmUtil; import com.alibaba.fastjson.JSONObject; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.exception.ErrorCode; +import kd.bos.exception.KDException; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.QueryServiceHelper; +import kd.bos.workflow.engine.msg.ctx.MessageContext; +import kd.bos.workflow.engine.msg.info.ToDoInfo; import shkd.sys.sys.midservice.constant.ToDoCenterConstant; import shkd.sys.sys.midservice.model.BacklogMessage; +import shkd.sys.sys.midservice.utils.GetUrlUtils; import shkd.sys.sys.midservice.utils.RequestClient; +import shkd.sys.sys.utils.AesUtils; +import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -22,34 +35,35 @@ public class CreateToDoHandler { private static Log logger = LogFactory.getLog(CreateToDoHandler.class); private static CreateToDoHandler _CreateToDoHandler; - public static synchronized CreateToDoHandler get_CreateToDoHandler(){ - if(_CreateToDoHandler == null){ - _CreateToDoHandler = new CreateToDoHandler(); + public static synchronized CreateToDoHandler get_CreateToDoHandler() { + if (_CreateToDoHandler == null) { + _CreateToDoHandler = new CreateToDoHandler(); } return _CreateToDoHandler; } + public boolean - sendCreateToDo(String messageInfo,String title,String appRecordId,String userId,String number) { + sendCreateToDo(String messageInfo, String title, String appRecordId, String userId, String number) { logger.info("###进入待办推送接口数据组装"); try { //调用接口结果 - String result = RequestClient.getInstance().callService(ToDoCenterConstant.URI_send_addNew,messageInfo); - logger.info("###接口返回结果"+result); + String result = RequestClient.getInstance().callService(ToDoCenterConstant.URI_send_addNew, messageInfo); + logger.info("###接口返回结果" + result); //接口调用结果 JSONObject jsonObject = JSONObject.parseObject(result); - if(jsonObject == null){ - RequestClient.getInstance().saveCreateToDo(title,ToDoCenterConstant.URI_send_addNew,false,result,messageInfo,appRecordId,userId,number); + if (jsonObject == null) { + RequestClient.getInstance().saveCreateToDo(title, ToDoCenterConstant.URI_send_addNew, false, result, messageInfo, appRecordId, userId, number); logger.info("###响应报文为空"); return false; - }else{ - if(Objects.equals("success",jsonObject.getString("status"))){ + } else { + if (Objects.equals("success", jsonObject.getString("status"))) { //发送成功 //调用保存操作 - RequestClient.getInstance().saveCreateToDo(title,ToDoCenterConstant.URI_send_addNew,true,result,messageInfo,appRecordId,userId,number); + RequestClient.getInstance().saveCreateToDo(title, ToDoCenterConstant.URI_send_addNew, true, result, messageInfo, appRecordId, userId, number); return true; - }else{ + } else { //调用保存操作 - RequestClient.getInstance().saveCreateToDo(title,ToDoCenterConstant.URI_send_addNew,false,result,messageInfo,appRecordId,userId,number); + RequestClient.getInstance().saveCreateToDo(title, ToDoCenterConstant.URI_send_addNew, false, result, messageInfo, appRecordId, userId, number); //发送失败 logger.error("###接口调通失败"); return false; @@ -57,9 +71,41 @@ public class CreateToDoHandler { } } catch (Exception e) { - logger.error("###调用接口失败:"+e.getMessage(),e); + logger.error("###调用接口失败:" + e.getMessage(), e); return false; } } + public boolean + sendCreateToDoTest(String messageInfo, String title, String appRecordId, String userId, String number) { + logger.info("###进入待办推送接口数据组装"); + try { + //调用接口结果 + String result = RequestClient.getInstance().callServiceTest(ToDoCenterConstant.URI_send_addNew, messageInfo); + logger.info("###接口返回结果" + result); + //接口调用结果 + JSONObject jsonObject = JSONObject.parseObject(result); + if (jsonObject == null) { + RequestClient.getInstance().saveCreateToDoTest(title, ToDoCenterConstant.URI_send_addNew, false, result, messageInfo, appRecordId, userId, number); + logger.info("###响应报文为空"); + return false; + } else { + if (Objects.equals("success", jsonObject.getString("status"))) { + //发送成功 + //调用保存操作 + RequestClient.getInstance().saveCreateToDoTest(title, ToDoCenterConstant.URI_send_addNew, true, result, messageInfo, appRecordId, userId, number); + return true; + } else { + //调用保存操作 + RequestClient.getInstance().saveCreateToDoTest(title, ToDoCenterConstant.URI_send_addNew, false, result, messageInfo, appRecordId, userId, number); + //发送失败 + logger.error("###接口调通失败"); + return false; + } + } + } catch (Exception e) { + logger.error("###调用接口失败:" + e.getMessage(), e); + return false; + } + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/DealToDoHandler.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/DealToDoHandler.java index 4d2ad41..6a67a3a 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/DealToDoHandler.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/DealToDoHandler.java @@ -57,5 +57,35 @@ public class DealToDoHandler { return false; } } + + public boolean sendDealToDoTest(Long appRecordId, String userId,String number) { + try { + String part = "{ \"appRecordId\": \""+appRecordId+"\", \"userId\": \""+userId+"\" }"; + //调用接口结果 + String result = RequestClient.getInstance().callServiceTest(ToDoCenterConstant.URI_SEND_finish, part); + //保存发送消息日志 + //接口调用结果 + JSONObject jsonObject = JSONObject.parseObject(result); + if (jsonObject == null) { + //发送失败 + RequestClient.getInstance().saveDeLToDoTest(appRecordId, userId, ToDoCenterConstant.URI_SEND_finish, false, result, part, "2",number); + logger.info("###响应报文为空"); + return false; + } else { + if(Objects.equals("success",jsonObject.getString("status"))){ + //发送成功 + RequestClient.getInstance().saveDeLToDoTest(appRecordId, userId, ToDoCenterConstant.URI_SEND_finish, true, result, part, "2",number); + return true; + } else { + //发送失败 + RequestClient.getInstance().saveDeLToDoTest(appRecordId, userId, ToDoCenterConstant.URI_SEND_finish, false, result, part, "2",number); + return false; + } + } + } catch (Exception e) { + logger.error("调用接口失败:" + e.getMessage(), e); + return false; + } + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/deleteToDoHandler.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/deleteToDoHandler.java index b119b14..f7152e4 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/deleteToDoHandler.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/handler/deleteToDoHandler.java @@ -57,4 +57,33 @@ public class deleteToDoHandler { return false; } } + public boolean sendDeleteToDoTest(Long appRecordId,String userId,String number) { + try { + //body + String part = "{ \"appRecordId\": \""+appRecordId+"\", \"userId\": \""+userId+"\" }"; + //调用接口结果 + String result = RequestClient.getInstance().callServiceTest(ToDoCenterConstant.URI_send_deleteP,part); + //保存发送消息日志 + //接口调用结果 + JSONObject jsonObject = JSONObject.parseObject(result); + if(jsonObject== null){ + RequestClient.getInstance().saveDeLToDoTest(appRecordId,userId,ToDoCenterConstant.URI_send_deleteP,false,result,part,"5",number); + logger.info("###响应报文为空"); + return false; + }else{ + if(Objects.equals("success",jsonObject.getString("status"))){ + //发送成功 + RequestClient.getInstance().saveDeLToDoTest(appRecordId,userId,ToDoCenterConstant.URI_send_deleteP,true,result,part,"5",number); + return true; + }else{ + RequestClient.getInstance().saveDeLToDoTest(appRecordId,userId,ToDoCenterConstant.URI_send_deleteP,false,result,part,"5",number); + return false; + } + } + + } catch (Exception e) { + logger.error("###调用中台服务消息中心发送消息服务异常:"+e.getMessage(),e); + return false; + } + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/servicehandler/BacklogServiceHandle.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/servicehandler/BacklogServiceHandle.java index a8a11bf..38e9d91 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/servicehandler/BacklogServiceHandle.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/servicehandler/BacklogServiceHandle.java @@ -21,6 +21,7 @@ import shkd.sys.sys.utils.AesUtils; import java.util.List; import java.util.Map; +import java.util.Objects; /** * @Description: @@ -36,9 +37,21 @@ public class BacklogServiceHandle extends AbstractServiceHandler { private static final Log logger = LogFactory.getLog(BacklogServiceHandle.class); public void createToDo(MessageContext ctx, ToDoInfo todoInfo) { - logger.info("###创建待办_createToDo"); - //几个待办 + Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type"); + if(Objects.equals(shkd_type,"0")){ + //正式环境 + getToDoFormal(ctx,todoInfo); + }else if(Objects.equals(shkd_type,"1")){ + //测试环境 + getToDoTest(ctx,todoInfo); + }else if(Objects.equals(shkd_type,"2")){ + //二套环境 + getToDoTest(ctx,todoInfo); + getToDoFormal(ctx,todoInfo); + } + logger.info("###结束待办_createToDo"); + /* //几个待办 List userIds = todoInfo.getUserIds(); DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,number" + ",phone,username", new QFilter[]{new QFilter("id", "in", userIds)}); @@ -56,7 +69,116 @@ public class BacklogServiceHandle extends AbstractServiceHandler { throw new KDException(errorCode, e); } StringBuilder form = new StringBuilder(); - // BacklogMessage backlogMessage = new BacklogMessage(); + form.append("{"); + form.append("\"title\":"); + form.append("\"").append(todoInfo.getTitle()).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(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("\"receiveUserId\":"); + form.append("\"").append(query_one.getString("username")).append("\","); + form.append("\"handleUrl\":"); + Map taskInfo = GetUrlUtils.getTaskInfo(todoInfo.getTaskId()); + String url = GetUrlUtils.buildTaskUrl(taskInfo); + form.append("\"").append(url).append("&userName=").append(userName).append("\","); + form.append("\"appHandleUrl\":"); + form.append("\"").append(url).append("&userName=").append(userName).append("\","); + form.append("\"appName\":"); + form.append("\"").append(ctx.getEntityName()).append("\","); + form.append("\"pendingId\":"); + form.append("\"").append(todoInfo.getTaskId()).append("\","); + form.append("\"pendingAttr\":"); + form.append("\"0\""); + form.append("}"); + logger.info("###待办拼接请求体:"+form); + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),todoInfo.getTitle(), + todoInfo.getTaskId().toString(),query_one.getString("username"),dynamicObject.getString("billno")); + } + logger.info("###结束待办_createToDo");*/ + } + //已办 + public void dealToDo(MessageContext ctx, ToDoInfo info){ + logger.info("###创建已办_dealToDo"); + Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type"); + if(Objects.equals(shkd_type,"0")){ + //正式环境 + getDealFormal(ctx,info); + }else if(Objects.equals(shkd_type,"1")){ + //测试环境 + getDealTest(ctx,info); + }else if(Objects.equals(shkd_type,"2")){ + //二套环境 + getDealTest(ctx,info); + getDealFormal(ctx,info); + } + logger.info("###结束已办_dealToDo"); + } + //撤销 + public void deleteToDo(MessageContext ctx, ToDoInfo info){ + + logger.info("###创建撤销_deleteToDo"); + Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type"); + if(Objects.equals(shkd_type,"0")){ + //正式环境 + getDeleteFormal(ctx,info); + }else if(Objects.equals(shkd_type,"1")){ + //测试环境 + getDeleteTest(ctx,info); + }else if(Objects.equals(shkd_type,"2")){ + //二套环境 + getDeleteTest(ctx,info); + getDeleteFormal(ctx,info); + } + /* List 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()); + 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"),""); + + } + }*/ + logger.info("###结束撤销_deleteToDo"); + } + + /*** + * 正式环境、待办 + */ + public void getToDoFormal(MessageContext ctx, ToDoInfo todoInfo) { + //几个待办 + List userIds = todoInfo.getUserIds(); + DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,number" + + ",phone,username", new QFilter[]{new QFilter("id", "in", userIds)}); + DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno,startname,id,name", + new QFilter[]{new QFilter("id", "=", todoInfo.getTaskId())}); + logger.info("####待办taskid:" + todoInfo.getTaskId()); + for (DynamicObject query_one : query) { + String userName; + try { + userName = AesUtils.aesEncryptString(query_one.getString("username")); + logger.info("AES加密后user:" + userName); + } catch (Exception e) { + logger.info("####AES加密出现异常,请联系运维人员排查!"); + ErrorCode errorCode = new ErrorCode("error_code", "AES加密出现异常,请联系运维人员排查!"); + throw new KDException(errorCode, e); + } + StringBuilder form = new StringBuilder(); + // BacklogMessage backlogMessage = new BacklogMessage(); form.append("{"); form.append("\"title\":"); form.append("\"").append(todoInfo.getTitle()).append("\","); @@ -123,17 +245,74 @@ public class BacklogServiceHandle extends AbstractServiceHandler { backlogMessage.setNotifyMethod(""); //业务自定义数据 backlogMessage.setJsonData("");*/ - logger.info("###待办拼接请求体:"+form); - CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),todoInfo.getTitle(), - todoInfo.getTaskId().toString(),query_one.getString("username"),dynamicObject.getString("billno")); + logger.info("###待办拼接请求体:" + form); + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(), todoInfo.getTitle(), + todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno")); + } + } + /*** + * 测试环境、待办 + */ + public void getToDoTest(MessageContext ctx, ToDoInfo todoInfo) { + //几个待办 + List userIds = todoInfo.getUserIds(); + DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,number" + + ",phone,username", new QFilter[]{new QFilter("id", "in", userIds)}); + DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno,startname,id,name", + new QFilter[]{new QFilter("id", "=", todoInfo.getTaskId())}); + logger.info("####待办taskid:" + todoInfo.getTaskId()); + for (DynamicObject query_one : query) { + String userName; + try { + userName = AesUtils.aesEncryptString(query_one.getString("username")); + logger.info("AES加密后user:" + userName); + } catch (Exception e) { + logger.info("####AES加密出现异常,请联系运维人员排查!"); + ErrorCode errorCode = new ErrorCode("error_code", "AES加密出现异常,请联系运维人员排查!"); + throw new KDException(errorCode, e); + } + StringBuilder form = new StringBuilder(); + // BacklogMessage backlogMessage = new BacklogMessage(); + form.append("{"); + form.append("\"title\":"); + form.append("\"").append(todoInfo.getTitle()).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(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("\"receiveUserId\":"); + form.append("\"").append(query_one.getString("username")).append("\","); + form.append("\"handleUrl\":"); + Map taskInfo = GetUrlUtils.getTaskInfo(todoInfo.getTaskId()); + String url = GetUrlUtils.buildTaskUrl(taskInfo); + form.append("\"").append(url).append("&userName=").append(userName).append("\","); + form.append("\"appHandleUrl\":"); + form.append("\"").append(url).append("&userName=").append(userName).append("\","); + form.append("\"appName\":"); + form.append("\"").append(ctx.getEntityName()).append("\","); + form.append("\"pendingId\":"); + form.append("\"").append(todoInfo.getTaskId()).append("\","); + form.append("\"pendingAttr\":"); + form.append("\"0\""); + form.append("}"); + logger.info("###待办拼接请求体:" + form); + CreateToDoHandler.get_CreateToDoHandler().sendCreateToDoTest(form.toString(), todoInfo.getTitle(), + todoInfo.getTaskId().toString(), query_one.getString("username"), dynamicObject.getString("billno")); } - logger.info("###结束待办_createToDo"); - } - //已办 - public void dealToDo(MessageContext ctx, ToDoInfo info){ - logger.info("###创建已办_dealToDo"); + /*** + * 正式环境、已办办 + */ + public void getDealFormal(MessageContext ctx, ToDoInfo info){ //几个已办 List userIds = info.getUserIds(); logger.info("####已办taskid:"+info.getTaskId()); @@ -149,13 +328,32 @@ public class BacklogServiceHandle extends AbstractServiceHandler { DealToDoHandler.get_DealToDoHandler().sendDealToDo(taskId,queryOne.getString("username"),""); } } - logger.info("###结束已办_dealToDo"); - } - //撤销 - public void deleteToDo(MessageContext ctx, ToDoInfo info){ + /*** + * 测试环境、已办 + */ + public void getDealTest(MessageContext ctx, ToDoInfo info){ + //几个已办 + List userIds = info.getUserIds(); + 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().sendDealToDoTest(taskId,queryOne.getString("username"),dynamicObject.getString("billno")); + }else{ + DealToDoHandler.get_DealToDoHandler().sendDealToDoTest(taskId,queryOne.getString("username"),""); + } + } + } - logger.info("###创建撤销_deleteToDo"); + /*** + * 测试环境、撤销 + */ + public void getDeleteFormal(MessageContext ctx, ToDoInfo info){ List 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", @@ -168,10 +366,27 @@ public class BacklogServiceHandle extends AbstractServiceHandler { deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(taskId,queryOne.getString("username"),dynamicObject.getString("billno")); }else{ deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDo(taskId,queryOne.getString("username"),""); - } } - logger.info("###结束撤销_deleteToDo"); } + /*** + * 测试环境、撤销 + */ + public void getDeleteTest(MessageContext ctx, ToDoInfo info){ + List 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()); + for (DynamicObject queryOne : query) { + if(dynamicObject != null){ + deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoTest(taskId,queryOne.getString("username"),dynamicObject.getString("billno")); + }else{ + deleteToDoHandler.get_deleteToDoHandler().sendDeleteToDoTest(taskId,queryOne.getString("username"),""); + } + } + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/utils/RequestClient.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/utils/RequestClient.java index fe317a2..b06482b 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/utils/RequestClient.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/midservice/utils/RequestClient.java @@ -4,7 +4,6 @@ import cn.hutool.crypto.SmUtil; import cn.hutool.http.HttpRequest; import kd.bos.coderule.api.CodeRuleInfo; import kd.bos.dataentity.entity.DynamicObject; -import kd.bos.isc.util.flow.core.Execution; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; @@ -26,16 +25,28 @@ public class RequestClient { private static final Logger logger = LoggerFactory.getLogger(RequestClient.class); private final String protocal;//http private final String ip;// 域名 + private final String port;// 端口 private final String clientKey;// 系统标识 private final String clientSecret;// clientSecret-scict + private final String testIp;// 域名 + private final String testPort;// 域名 + private final String testClientKey;// 系统标识 + private final String testClientSecret;// clientSecret-scict private RequestClient() { this.protocal = System.getProperty("backlog-protocal"); + //正式环境 this.ip = System.getProperty("backlog-ip"); this.port = System.getProperty("backlog-port"); - this.clientKey= System.getProperty("clientKey-scict"); - this.clientSecret= System.getProperty("clientSecret-scict"); + this.clientKey= System.getProperty("clientKey-scict"); // scicsiku + this.clientSecret= System.getProperty("clientSecret-scict");// 0abbcc87-f1d4-4550-8df7-b45acaa305c8 + //测试环境 + this.testIp = System.getProperty("backlog-testip"); // + this.testPort = System.getProperty("backlog-testport"); // + this.testClientKey = System.getProperty("testclientKey-scict"); // scicsiku + this.testClientSecret = System.getProperty("testclientSecret-scict"); // 18b9a506-d9d8-4d15-9e03-01867cff5824 + } /** * 获取中台服务客户端实例 @@ -85,6 +96,46 @@ public class RequestClient { } return responseText; } + + /** + * 测试环境、封装中台请求头,执行POST请求 + * @param url 接口地址(不含http://ip:port的后半部分) + * @param body FORM格式字符串 + * @return 响应结果报文 + */ + public String callServiceTest(String url, String body){ + StringBuffer urlStr = new StringBuffer(); + urlStr.append(this.protocal).append("://").append(this.testIp); + if (!StringUtils.isEmpty(this.testPort)) { + urlStr.append(":").append(this.testPort); + } + logger.info("###环境参数,protocal:"+this.protocal+",ip:"+this.testIp+",this.port:"+this.testPort); + urlStr.append(url); + String responseText = null; + String timestamp = Long.toString(System.currentTimeMillis() / 1000); + byte[] securityKey = this.testClientSecret.substring(10, 26).getBytes(); + String authenticationCode = SmUtil.sm4(securityKey).encryptHex(testClientKey + testClientSecret + timestamp); + logger.info("###请求头主要参数:authen(sign)"+authenticationCode+"###时间戳"+timestamp); + Map params=new HashMap<>(2); + params.put("params",body); + try { + //直接POST请求 + responseText = HttpRequest.post(urlStr.toString()) + .header("authen", authenticationCode) + .header("clientKey", testClientKey) + .header("timestamp", timestamp) + .header("origin_client", "HttpToken") + .form(params) + .execute().body(); + logger.info(String.format("###调用接口成功,请求URL:%s,请求Body:%s,响应报文:%s", urlStr, params, responseText)); + } catch (Exception e) { + logger.error(String.format("###调用接口异常:%s,请求URL:%s,请求Body:%s", e.getMessage(), urlStr, params), e); + } + return responseText; + } + + + /*** * 保存待办日志 * @param title 标题 @@ -131,8 +182,56 @@ public class RequestClient { } } + + /*** + * 测试环境、保存待办日志 + * @param title 标题 + * @param url 路径 + * @param isTrue 接口调用是否成功 + * @param result 响应报文 + * @param jsonMessage 请求报文 + * @param appRecordId taskid + * @param userId 用户id + * @param number 单据编码 + */ + public void saveCreateToDoTest(String title,String url, boolean isTrue,String result,String jsonMessage,String appRecordId,String userId,String number){ + logger.info("###开始调用待办保存日志方法"); + StringBuffer urlStr = new StringBuffer(); + urlStr.append(this.protocal).append("://").append(this.testIp); + if (!StringUtils.isEmpty(this.testPort)) { + urlStr.append(":").append(this.testPort); + } + urlStr.append(url);; + logger.info("###保存时,环境参数,protocal:"+this.protocal+",ip:"+this.testIp+",this.port:"+this.testPort); + try{ + DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("shkd_backlog1"); + logger.info("###保存日志表id"+dynamicObject.getPkValue()); + dynamicObject.set("shkd_url","测试环境:"+urlStr); + CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(dynamicObject.getDataEntityType().getName(), dynamicObject, null); + dynamicObject.set("billno",CodeRuleServiceHelper.getNumber(codeRule,dynamicObject)); + dynamicObject.set("shkd_traceid",appRecordId); + dynamicObject.set("shkd_username",userId); + dynamicObject.set("shkd_request",title); + dynamicObject.set("shkd_request_tag",jsonMessage); + dynamicObject.set("shkd_response",isTrue); + dynamicObject.set("shkd_response_tag",result); + dynamicObject.set("shkd_status","0"); + dynamicObject.set("billstatus","C"); + if(StringUtils.isNotEmpty(number)){ + dynamicObject.set("shkd_number",number); + } + Object[] save = SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); + logger.info("###保存日志表后id"+dynamicObject.getPkValue()); + logger.info("save结果"+save.toString()); + logger.info("###结束调用待办保存日志方法"); + }catch (Exception execution){ + logger.info("###保存日志失败"+execution.getMessage()); + } + + } + /*** - * 保存待办日志 + * 保存已办、撤销日志 * @param appRecordId 业务id * @param userId 接收人id * @param url 路径 @@ -175,5 +274,49 @@ public class RequestClient { } + /*** + * 测试环境、保存已办、撤销日志 + * @param appRecordId 业务id + * @param userId 接收人id + * @param url 路径 + * @param isTrue 接口调用是否成功 + * @param result 响应报文 + * @param jsonMessage 请求报文 + * @param status 类型 2:已办 5:撤销 + */ + public void saveDeLToDoTest(Long appRecordId,String userId,String url,boolean isTrue,String result,String jsonMessage,String status,String number){ + logger.info("###开始调用已办、撤销保存日志方法"); + StringBuffer urlStr = new StringBuffer(); + urlStr.append(this.protocal).append("://").append(this.testIp); + if (!StringUtils.isEmpty(this.testPort)) { + urlStr.append(":").append(this.testPort); + } + urlStr.append(url); + try{ + DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("shkd_backlog1"); + dynamicObject.set("shkd_url","测试环境:"+urlStr.toString()); + CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(dynamicObject.getDataEntityType().getName(), dynamicObject, null); + dynamicObject.set("billno",CodeRuleServiceHelper.getNumber(codeRule,dynamicObject)); + dynamicObject.set("shkd_traceid",appRecordId); + dynamicObject.set("shkd_username",userId); + dynamicObject.set("shkd_request","业务id:"+appRecordId+",接收人username:"+userId); + dynamicObject.set("shkd_request_tag",jsonMessage); + dynamicObject.set("shkd_response",isTrue); + dynamicObject.set("shkd_response_tag",result); + dynamicObject.set("shkd_status",status); + dynamicObject.set("billstatus","C"); + if(StringUtils.isNotEmpty(number)){ + dynamicObject.set("shkd_number",number); + } + Object[] save = SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); + logger.info("###保存日志表id"+dynamicObject.getPkValue()); + logger.info("save结果"+save.toString()); + logger.info("###结束调用已办、撤销保存日志方法"); + }catch (Exception execution){ + logger.info("###保存日志失败"+execution.getMessage()); + } + + } + }