From c4eadecde8b2844fea6aaf51e3695321634be714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwyx12345678=E2=80=9D?= <2816059288@qq.com> Date: Mon, 6 May 2024 17:04:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81OA=E6=B6=88=E6=81=AF=E5=BE=85?= =?UTF-8?q?=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cxkg/integration/MessageListen.java | 750 ++++++++++++++++++ 1 file changed, 750 insertions(+) create mode 100644 shkd-cosmic-debug/src/main/java/shkd/cosmic/cxkg/integration/MessageListen.java diff --git a/shkd-cosmic-debug/src/main/java/shkd/cosmic/cxkg/integration/MessageListen.java b/shkd-cosmic-debug/src/main/java/shkd/cosmic/cxkg/integration/MessageListen.java new file mode 100644 index 0000000..38e1df1 --- /dev/null +++ b/shkd-cosmic-debug/src/main/java/shkd/cosmic/cxkg/integration/MessageListen.java @@ -0,0 +1,750 @@ +package shkd.cosmic.cxkg.integration; + +import com.alibaba.dubbo.common.utils.CollectionUtils; +import com.alibaba.fastjson.JSON; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.*; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.workflow.engine.msg.AbstractMessageServiceHandler; +import kd.bos.workflow.engine.msg.ctx.MessageContext; +import kd.bos.workflow.engine.msg.info.MessageInfo; +import kd.bos.workflow.engine.msg.info.ToDoInfo; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +public class MessageListen extends AbstractMessageServiceHandler { + private static final Log log = LogFactory.getLog(MessageListen.class); + static Map processInstanceStateMap = new HashMap(); + static Map taskStateMap = new HashMap(); + static Map operationTypeMap = new HashMap(); + static Map decisionTypeMap = new HashMap(); + + static { + processInstanceStateMap.put("1", "1"); + processInstanceStateMap.put("2", "2"); + taskStateMap.put("dismissed", "被驳回"); + taskStateMap.put("willApproval", "待审批"); + taskStateMap.put("freeze", "已冻结"); + taskStateMap.put("willHandled", "待处理"); + taskStateMap.put("unConverted", "待转换"); + taskStateMap.put("converted", "已转换"); + taskStateMap.put("converting", "转换中"); + taskStateMap.put("manualSuspended", "已挂起"); + operationTypeMap.put("transfer", "1"); + operationTypeMap.put("coordinateRequest", "2"); + operationTypeMap.put("coordinateReply", "3"); + operationTypeMap.put("coordinateCancel", "4"); + operationTypeMap.put("addComment", "5"); + operationTypeMap.put("withdraw", "6"); + operationTypeMap.put("circulation", "7"); + operationTypeMap.put("reminders", "8"); + operationTypeMap.put("jump", "9"); + operationTypeMap.put("addsign", "10"); + operationTypeMap.put("suspend", "11"); + operationTypeMap.put("suspendCancel", "12"); + operationTypeMap.put("terminal_f", "13"); + operationTypeMap.put("delegate", "14"); + operationTypeMap.put("textMessage", "15"); + operationTypeMap.put("converted", "16"); + decisionTypeMap.put("approve", "同意"); + decisionTypeMap.put("reject", "驳回"); + decisionTypeMap.put("terminate", "终止"); + } + + public MessageListen() { + } + + public void createToDo(MessageContext messageContext, ToDoInfo toDoInfo) { + int tasktype = 0; + log.info("待办任务~~~~~~~~~~"); + List> requestBodyList = this.getRequestBodyList(messageContext, toDoInfo, tasktype, false); + log.info("推送待办任务内容:{}", requestBodyList); + + Map resultMap; + for (Iterator var6 = requestBodyList.iterator(); var6.hasNext(); resultMap.get("code")) { + Map requestBody = (Map) var6.next(); + String jsonStr = this.pushZHData(requestBody); + log.info("推送结果 jsonStr:" + jsonStr); + resultMap = (Map) JSON.parseObject(jsonStr, Map.class); + if ("1".equals(resultMap.get("operResult"))) { + log.info("推送待办任务内容成功"); + } else { + log.info("推送待办任务内容失败"); + } + } + + } + + public void dealToDo(MessageContext messageContext, ToDoInfo toDoInfo) { +// int tasktype = 2; +// log.info("已办任务~~~~~~~~~~"); +// List> requestBodyList = this.getRequestBodyList(messageContext, toDoInfo, tasktype, false); +// log.info("推送已办任务内容:{}", requestBodyList); +// +// Map resultMap; +// for(Iterator var6 = requestBodyList.iterator(); var6.hasNext(); resultMap.get("code")) { +// Map requestBody = (Map)var6.next(); +// String jsonStr = this.pushZHData(requestBody); +// log.info("推送结果 jsonStr:"+jsonStr); +// resultMap = (Map)JSON.parseObject(jsonStr, Map.class); +// resultMap.get("code"); +// if ("1".equals(resultMap.get("operResult"))) { +// log.info("推送已办任务内容成功"); +// } else { +// log.info("推送已办任务内容失败"); +// } +// } + + int tasktype = 2; + log.info("已办任务~~~~~~~~~~"); + List> requestBodyList = this.getRequestBodyList(messageContext, toDoInfo, tasktype, false); + log.info("推送已办任务内容:{}", requestBodyList); + Map resultMap; + for (Iterator> var6 = requestBodyList.iterator(); var6.hasNext(); resultMap.get("code")) { + Map requestBody = var6.next(); + String jsonStr = pushZHData(requestBody); + log.info("已办任务结果~"+jsonStr); + resultMap = (Map) JSON.parseObject(jsonStr, Map.class); + resultMap.get("code"); + if ("200".equals(resultMap.get("code"))) { + log.info("推送已办任务内容成功"); + } else { + log.info("推送已办任务内容失败"); + } + } + } + + public void sendMessage(MessageContext ctx, MessageInfo message) { + int tasktype = 4; + super.sendMessage(ctx, message); + log.info("消息通知~~~~~~~~~~"); + List> requestBodyList = getRequestBodyList2(message); + log.info("推送消息通知内容:{}", requestBodyList); + + Map resultMap; + for (Iterator var6 = requestBodyList.iterator(); var6.hasNext(); resultMap.get("code")) { + Map requestBody = (Map) var6.next(); + String jsonStr = this.pushZHData(requestBody); + log.info("传阅结果 jsonStr:" + jsonStr); + resultMap = (Map) JSON.parseObject(jsonStr, Map.class); + resultMap.get("errcode"); + if ("0".equals(resultMap.get("errcode"))) { + log.info("推送已办任务内容成功"); + } else { + log.info("推送已办任务内容失败"); + } + } + } + + + public void deleteToDo(MessageContext messageContext, ToDoInfo toDoInfo) { + log.info("删除待办~~~~~~~~~~"); + int tasktype = 2; + List> requestBodyList = this.getRequestBodyList(messageContext, toDoInfo, tasktype, true); + log.info("推送删除任务内容:{}", requestBodyList); + + Map resultMap; + for (Iterator var6 = requestBodyList.iterator(); var6.hasNext(); resultMap.get("code")) { + Map requestBody = (Map) var6.next(); + String jsonStr = this.pushZHData(requestBody); + log.info("推送结果 jsonStr:" + jsonStr); + resultMap = (Map) JSON.parseObject(jsonStr, Map.class); + resultMap.get("code"); + if ("1".equals(resultMap.get("operResult"))) { + log.info("推送删除任务内容成功"); + } else { + log.info("推送删除任务内容失败"); + } + } + } + + private List> getRequestBodyList(MessageContext messageContext, ToDoInfo toDoInfo, int tasktype, boolean isdel) { + Long processDefinitionId = messageContext.getProcessDefinitionId(); + String processDefinitionName = ""; + Long processInstanceId = messageContext.getProcessInstanceId(); + String processInstanceState = ""; + String nodename = ""; + Long createDateUnix = 0L; + Long modifyDateUnix = 0L; + String createDateString = ""; + String url = toDoInfo.getUrl(); + Long startUserId = messageContext.getStartUserId(); + String startUserMobile = ""; + String startUserName = ""; + Long executionId = messageContext.getExecutionId(); + String executionName = ""; + Long taskId = messageContext.getTaskId(); + String taskName = ""; + String taskState = ""; + Long taskCreateDateUnix = 0L; + Long taskUpdateDateUnix = 0L; + String taskCreateDateString = ""; + List userIds = toDoInfo.getUserIds(); + List userMobiles = new ArrayList(); + List userNames = new ArrayList(); + String operationType = ""; + String operationUserMobile = ""; + String msg_type = ""; + String MessageState = ""; + String billno = ""; + String title = isdel ? "流程撤回" : toDoInfo.getContent(); + String entityName = messageContext.getEntityName(); + if (title != null) { + int dex = title.indexOf("单", 0); + if (dex != -1) { + title = title.substring(dex + 1);//截取单后面的字符串 + } + } +// if (title == null) { +// title = "任务:" + taskId + "已办"; +// } + + DynamicObject processDefinition = BusinessDataServiceHelper.loadSingle(processDefinitionId, "wf_processdefinition"); + if (processDefinition != null) { + processDefinitionName = processDefinition.getString("name"); + } + DynamicObject[] processInstance = BusinessDataServiceHelper.load("wf_execution", "createdate", new QFilter("id", "=", processInstanceId).toArray()); + if (processInstance.length != 0) { + Date createDate = processInstance[0].getDate("createdate"); + if (createDate != null) { + createDateString = isdel ? (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()) : (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(createDate); + } + } + + DynamicObject startUser = BusinessDataServiceHelper.loadSingle(startUserId, "bos_user"); + if (startUser != null) { + startUserMobile = startUser.getString("phone"); + startUserName = startUser.getString("username"); + } + + +// DynamicObject execution = BusinessDataServiceHelper.loadSingle(executionId, "wf_execution"); +// if (execution != null) { +// executionName = execution.getString("name"); +// if (executionName != null){ +// String[] split = executionName.split("/"); +// if (split != null){ +// billno = split[0]; +// } +// } +// } + DynamicObject[] task = BusinessDataServiceHelper.load("wf_task", "name,handlestate,createdate", new QFilter("id", "=", taskId).toArray()); + if (task.length != 0) { + taskName = task[0].getString("name"); + String handleState = task[0].getString("handlestate"); + taskState = (String) taskStateMap.get(handleState); + Date taskCreateDate = task[0].getDate("createdate"); + if (taskCreateDate != null) { + taskCreateDateString = isdel ? (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()) : (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(taskCreateDate); + } + } + + QFilter operationLogFilter; + if (CollectionUtils.isNotEmpty(userIds)) { + operationLogFilter = new QFilter("id", "in", userIds); + DynamicObject[] userList = BusinessDataServiceHelper.load("bos_user", "phone,username", operationLogFilter.toArray()); + Arrays.stream(userList).forEach((user) -> { + if (user != null) { + String mobile = user.getString("phone"); + userMobiles.add(mobile); + String name = user.getString("username"); + userNames.add(name); + } + + }); + } + +// operationLogFilter = new QFilter("taskid", "=", taskId); +// QFilter operationLogFilter1 = new QFilter("type", "!=", "circulation"); +// QFilter[] operationLogFilters = new QFilter[]{operationLogFilter, operationLogFilter1}; +// DynamicObject[] operationLogs = BusinessDataServiceHelper.load("wf_operationlog", "ownerid,type,createdate,decisiontype", operationLogFilters, "createdate desc"); +// if (operationLogs.length != 0) { +// DynamicObject operationLog = operationLogs[0]; +// Long ownerId = operationLog.getLong("ownerid"); +// DynamicObject operationUser = BusinessDataServiceHelper.loadSingle(ownerId, "bos_user"); +// if (operationUser != null) { +// operationUserMobile = operationUser.getString("phone"); +// } +// +// String type = operationLog.getString("type"); +// if ("comment".equals(type)) { +// String decisionType = operationLog.getString("decisiontype"); +// if (!StringUtils.isEmpty(decisionType)) { +// operationType = (String)decisionTypeMap.get(decisionType); +// } +// } else if (tasktype != 1) { +// operationType = (String)operationTypeMap.get(type); +// } +// } +//// String data = createDateString.substring(0,10);//截取日期前十位 +// if (title == null) { +// title = "任务:" + billno + processDefinitionName + "已处理"; +// } +// QFilter startUserFilter; +// if (CollectionUtils.isNotEmpty(userIds)) { +// startUserFilter = new QFilter("id", "in", userIds); +// DynamicObject[] userList = BusinessDataServiceHelper.load("bos_user", "phone,username", startUserFilter.toArray()); +// Arrays.stream(userList).forEach((user) -> { +// if (user != null) { +// String mobile = user.getString("phone"); +// userMobiles.add(mobile); +// String name = user.getString("username"); +// userNames.add(name); +// } +// +// }); +// } +// String receiverUser = ""; +// DynamicObject receiver = BusinessDataServiceHelper.loadSingle(userIds, "bos_user"); +// if (startUser != null) { +//// startUserMobile = receiver.getString("phone"); +// receiverUser = receiver.getString("username"); +// } + userNames.add(startUserName); + List> requestBodyList = new ArrayList(); + Iterator var47 = userNames.iterator(); + + while (var47.hasNext()) { + String userName = (String) var47.next(); + if (userName.equals(startUserName)) { + Map requestBody = new HashMap(); + requestBody.put("syscode", "kingdee"); + requestBody.put("flowid", String.valueOf(processInstanceId)); + requestBody.put("requestname", "主题:"+title); + requestBody.put("workflowname", entityName + "审批流程"); + requestBody.put("nodename", taskName); + requestBody.put("pcurl", url); + requestBody.put("appurl", url != null ? getAppurl(url) : null); + requestBody.put("isremark", String.valueOf(tasktype)); + requestBody.put("viewtype", "1"); + requestBody.put("creator", startUserName); + requestBody.put("createdatetime", createDateString); + requestBody.put("receiver", userName); + requestBody.put("receivedatetime", taskCreateDateString); + requestBody.put("receivets", String.valueOf((new Date()).getTime())); + requestBody.put("userid", userName); + requestBody.put("bizState", String.valueOf(tasktype)); + requestBody.put("lastNameList", userName); +// requestBody.put("targetId", "588|"+String.valueOf(processInstanceId)); +// requestBodyList.add(requestBody); + } else { + Map requestBody = new HashMap(); + requestBody.put("syscode", "kingdee"); + requestBody.put("flowid", String.valueOf(processInstanceId)); + if(title!=null){ + requestBody.put("requestname", title); + }else{ + requestBody.put("requestname", entityName); + } + + requestBody.put("workflowname", entityName + "审批流程"); + requestBody.put("nodename", taskName); + requestBody.put("pcurl", url); + requestBody.put("appurl", getAppurl(url)); + requestBody.put("isremark", String.valueOf(tasktype)); + requestBody.put("viewtype", "0"); + requestBody.put("creator", startUserName); + requestBody.put("createdatetime", createDateString); + requestBody.put("receiver", userName); + requestBody.put("receivedatetime", taskCreateDateString); + requestBody.put("receivets", String.valueOf((new Date()).getTime())); + requestBody.put("userid", userName); + requestBody.put("bizState", String.valueOf(tasktype)); + requestBody.put("lastNameList", userName); +// requestBody.put("targetId", "588|"+String.valueOf(processInstanceId)); + requestBodyList.add(requestBody); + } + } + + return requestBodyList; + } + + private static String getAppurl(String pcurl) { + if (pcurl != null) { + String appurl = pcurl.replace("integration/yzjShareOpen.do", "mobile.html").replace("formId=wf_approvalpage_bac", "form=wf_approvalpagemobile_bac"); + return appurl; + } + return null; + } + + private List> getRequestBodyList2(MessageInfo message) { + Map messageContext = JSON.parseObject(message.getParams().get("messageContext").toString()); + Long createDateUnix = 0L; + Long processInstanceId = (Long) messageContext.get("processInstanceId");//processInstanceId + Long modifyDateUnix = 0L; + Long taskCreateDateUnix = 0L; + Long taskUpdateDateUnix = 0L; + String taskName = ""; + String taskState = ""; + String processInstanceState = ""; + String taskCreateDateString = ""; + String startUserName = ""; + String createDateString = ""; + String title = message.getTitle(); + String content = message.getContent(); + String url = message.getContentUrl(); + String taskId = messageContext.get("taskId").toString(); + List userIds = message.getUserIds(); + List userMobiles = new ArrayList(); + List userNames = new ArrayList(); + Long senderId = message.getSenderId(); + String senderMobile = ""; + Long startUserId = (Long) messageContext.get("startUserId"); + String startUserMobile = null; + Date sendTime = message.getSendTime(); + String entityName = null; + Long processDefinitionId = Long.parseLong(messageContext.get("processDefinitionId").toString()); + String processDefinitionName = ""; + String noticeId = message.getId().toString(); + DynamicObject processDefinition = BusinessDataServiceHelper.loadSingle(processDefinitionId, "wf_processdefinition"); + if (processDefinition != null) { + processDefinitionName = processDefinition.getString("name"); + } + QFilter startUserFilter; + if (CollectionUtils.isNotEmpty(userIds)) { + startUserFilter = new QFilter("id", "in", userIds); + DynamicObject[] userList = BusinessDataServiceHelper.load("bos_user", "phone,username", startUserFilter.toArray()); + Arrays.stream(userList).forEach((user) -> { + if (user != null) { + String mobile = user.getString("phone"); + userMobiles.add(mobile); + String name = user.getString("username"); + userNames.add(name); + } + + }); + } + DynamicObject startUser; + if (senderId != null && senderId != 0L) { + startUserFilter = new QFilter("id", "=", senderId); + startUser = BusinessDataServiceHelper.loadSingleFromCache("bos_user", startUserFilter.toArray()); + if (startUser != null) { + senderMobile = startUser.getString("phone"); + } + } + if (startUserId != null) { + startUserFilter = new QFilter("id", "=", startUserId); + startUser = BusinessDataServiceHelper.loadSingleFromCache("bos_user", startUserFilter.toArray()); + if (startUser != null) { + startUserMobile = startUser.getString("phone"); + } + DynamicObject startUser1 = BusinessDataServiceHelper.loadSingle(startUserId, "bos_user"); + if (startUser1 != null) { + startUserName = startUser1.getString("username"); + } + } + + + if (messageContext.get("entityName") != null) { + entityName = messageContext.get("entityName").toString(); + } + + DynamicObject processInstance = BusinessDataServiceHelper.loadSingle(processInstanceId, "wf_execution"); + if (processInstance != null) { + Date createDate = processInstance.getDate("createdate"); + if (createDate != null) { + createDateUnix = createDate.getTime(); + createDateString = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(createDate); + } + + Date modifyDate = processInstance.getDate("modifydate"); + if (modifyDate != null) { + modifyDateUnix = modifyDate.getTime(); + } + + String suspensionstate = processInstance.getString("suspensionstate"); + processInstanceState = (String) processInstanceStateMap.get(suspensionstate); + } + + List> requestBodyList = new ArrayList(); + Iterator var21 = userNames.iterator(); + + int i = 1; + while (var21.hasNext()) { + String username = (String) var21.next(); + Map requestBody = new HashMap(); +// requestBody.put("code", 588); +// requestBody.put("title", title); +// requestBody.put("requestname", title); +// requestBody.put("flowid", String.valueOf(processInstanceId+i)); +// requestBody.put("workflowname", entityName+"审批流程"); +// requestBody.put("content", content); +// requestBody.put("context", content); +// requestBody.put("pcurl", url); +// requestBody.put("appurl", getAppurl(url)); +//// requestBody.put("taskId", taskId); +////// requestBody.put("userMobile", userMobile); +// requestBody.put("senderMobile", senderMobile); +// requestBody.put("startUserMobile", startUserMobile); +//// requestBody.put("sendTime", sendTime); +// requestBody.put("entityName", entityName); +////// requestBody.put("receiver", username); +////// requestBody.put("userids", username); +// requestBody.put("isremark", "8"); +// requestBody.put("viewtype", "0"); +// requestBody.put("creater", startUserName); +// requestBody.put("createdatetime", createDateString); +// requestBody.put("receivedatetime", createDateString); +// requestBody.put("processDefinitionId", processDefinitionId.toString()); +// requestBody.put("processDefinitionName", processDefinitionName); +////// requestBody.put("receivets", String.valueOf((new Date()).getTime())); +// requestBody.put("noticeId", noticeId); +// requestBody.put("loginIdList", username); +// requestBody.put("linkUrl", url); +// requestBody.put("linkMobileUrl", getAppurl(url)); +// requestBody.put("loginIdList", "zhangqj"); +//// requestBody.put("linkMobileUrl", "http://oatest.zhonghuangroup.com:8999"); + +// String appurl = getAppurl(url); + String encode = Base64.getEncoder().encodeToString(url.getBytes()); + QFilter filter = new QFilter("number", "=", "003"); + DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); + String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); + requestBody.put("code", "588"); + requestBody.put("loginIdList", username); + requestBody.put("creater", startUserName); + requestBody.put("title", title); + requestBody.put("context", content); + requestBody.put("linkUrl", url); + requestBody.put("linkMobileUrl", kd21_largetextfield + encode); + requestBody.put("targetId", "588|" + String.valueOf(processInstanceId)); + requestBody.put("bizState", "0"); + requestBodyList.add(requestBody); + i++; + } + return requestBodyList; + } + +// private String pushZHData(Map params) { +// log.info("推送消息到中环....."); +// Map registAppid = TokenAuthentication.registAppid(); +// Map token = TokenAuthentication.getToken(); +// QFilter filter = new QFilter("number","=","001"); +//// DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); +//// String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); +// String kd21_largetextfield = "/rest/ofs/ReceiveRequestInfoByJson"; +// String apiUrl = kd21_largetextfield;//获取接口的地址 +// log.info("推送接口地址:"+apiUrl+""); +// RestTemplate restTemplate = new RestTemplate(); +// HttpHeaders headers = new HttpHeaders(); + + // headers.setContentType(MediaType.APPLICATION_JSON); +// String jsonBody = JSON.toJSONString(params); +// String postRestful = TokenAuthentication.postRestful(apiUrl, jsonBody); +// HttpEntity requestEntity = new HttpEntity(jsonBody, headers); +//// log.info("推送完成,返回结果:{}", "postRestful"+postRestful); +// ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class, new Object[0]); +// log.info("推送完成,返回结果:responseEntity{}", responseEntity); +// String jsonStr = (String)responseEntity.getBody(); +// log.info("推送完成,返回结果:{}", jsonStr); +// return jsonStr; +// } +// private String pushZHMessage(Map params) { +// log.info("推送待办到中环....."); +// QFilter filter = new QFilter("number","=","002"); +// DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); +// String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); +//// String kd21_largetextfield = "/api/ec/dev/message/sendCustomMessageSingle"; +// String apiUrl = kd21_largetextfield;//获取接口的地址 +// log.info("传阅接口地址:"+apiUrl+""); +// RestTemplate restTemplate = new RestTemplate(); +// +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_JSON); +// String jsonBody = JSON.toJSONString(params); +// HttpEntity requestEntity = new HttpEntity(jsonBody, headers); +// log.info("传阅接口:"+requestEntity+""); +//// Map token = TokenAuthentication.getToken(); +//// String postRestful = TokenAuthentication.postRestful(apiUrl, jsonBody); +// ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class, new Object[0]); +// log.info("传阅完成,返回结果:responseEntity{}", responseEntity); +// String jsonStr = (String)responseEntity.getBody(); +// log.info("传阅完成,返回结果:{}", jsonStr); +// return jsonStr; +//// log.info("推送完成,返回结果:{}", "postRestful"+postRestful); +//// return postRestful; +// } +// +// private String pushZHDelete(Map params) { +// log.info("删除待办到中环....."); +// QFilter filter = new QFilter("number","=","003"); +// DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); +// String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); +//// String kd21_largetextfield = "/rest/ofs/deleteUserRequestInfoByJson"; +// String apiUrl = kd21_largetextfield;//获取接口的地址 +// log.info("删除接口地址:"+apiUrl+""); +// RestTemplate restTemplate = new RestTemplate(); +// +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_JSON); +// String jsonBody = JSON.toJSONString(params); +// HttpEntity requestEntity = new HttpEntity(jsonBody, headers); +// log.info("删除接口:"+requestEntity+""); +// ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class, new Object[0]); +// log.info("删除完成,返回结果:responseEntity{}", responseEntity); +// String jsonStr = (String)responseEntity.getBody(); +// log.info("删除完成,返回结果:{}", jsonStr); +// return jsonStr; +// } +// private String pushZHAfter(Map params) { +// log.info("已办待办到中环....."); +// QFilter filter = new QFilter("number","=","004"); +// DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); +// String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); +//// String kd21_largetextfield = "/rest/ofs/deleteUserRequestInfoByJson"; +// String apiUrl = kd21_largetextfield;//获取接口的地址 +// log.info("已办接口地址:"+apiUrl+""); +// RestTemplate restTemplate = new RestTemplate(); +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_JSON); +// String jsonBody = JSON.toJSONString(params); +// HttpEntity requestEntity = new HttpEntity(jsonBody, headers); +// log.info("已办接口:"+requestEntity+""); +// ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class, new Object[0]); +// log.info("已办完成,返回结果:responseEntity{}", responseEntity); +// String jsonStr = (String)responseEntity.getBody(); +// log.info("已办完成,返回结果:{}", jsonStr); +// return jsonStr; +// } +//} + private String pushZHData(Map params) { +// log.info("推送消息到中环....."); +// QFilter filter = new QFilter("number", "=", "001"); +// DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[] { filter }); +// String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); +// String apiUrl = kd21_largetextfield; +//// String apiUrl = "http://oatest.zhonghuangroup.com:8081/rest/ofs/ReceiveRequestInfoByJson"; +// RestTemplate restTemplate = new RestTemplate(); +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_JSON); +// String jsonBody = JSON.toJSONString(params); +// HttpEntity requestEntity = new HttpEntity(jsonBody, headers); +// ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class, new Object[0]); +// String jsonStr = (String)responseEntity.getBody(); +// log.info("{已办完成}", jsonStr); + + log.info("推送消息到中环....."); + QFilter filter = new QFilter("number", "=", "001"); + DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); + String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); + String apiUrl = kd21_largetextfield; + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + String jsonBody = JSON.toJSONString(params); + HttpEntity requestEntity = new HttpEntity(jsonBody, headers); + ResponseEntity responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, String.class, new Object[0]); + String jsonStr = (String) responseEntity.getBody(); + log.info("{已办完成}", jsonStr); + return jsonStr; + } + + +// private String pushZHMessage(Map params) { +// log.info("推送待办到中环....." + params); +// QFilter filter = new QFilter("number", "=", "002"); +// DynamicObject kd21_oa_matters = BusinessDataServiceHelper.loadSingle("kd21_oa_matters", "id,name,kd21_largetextfield", new QFilter[]{filter}); +// String kd21_largetextfield = kd21_oa_matters.getString("kd21_largetextfield"); +// String apiUrl = kd21_largetextfield; +// Map map = new HashMap(); +// log.info("接口地址" + apiUrl); +// String jsonBody = JSON.toJSONString(params); +// log.info("jsonBody" + jsonBody); +// Map js = new Gson().fromJson(jsonBody, map.getClass()); +// String post = post(apiUrl, js, js); +// log.info("推送完成,返回结果:{}", post); +// +// return post; +// } + + + public static String post(String path, Map params, Map data) { + try { + String str = ""; +// if (params != null) { +// StringBuilder stringBuilder = new StringBuilder("?"); +// for (Map.Entry entry : params.entrySet()) { +// stringBuilder.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); +// } +// if (stringBuilder.length() > 1) +// path += stringBuilder.substring(0, stringBuilder.length() - 1); +// } + URL url = new URL(path); + //打开和url之间的连接 + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); +// PrintWriter out = null; + // 请求参数 编码为 utf-8 + //请求方式 + conn.setRequestMethod("POST"); + //设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); + if (data != null) + for (Map.Entry entry : data.entrySet()) + conn.setRequestProperty(entry.getKey(), entry.getValue()); + //设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个 + //最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, + //post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 + conn.setDoOutput(true); + conn.setDoInput(true); + OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "utf-8"); + if (params != null) + out.write(mapToStr(params)); + //缓冲数据 + out.flush(); + out.close(); + //获取URLConnection对象对应的输入流 + InputStream is = conn.getInputStream(); + //构造一个字符流缓存 + BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8")); + String result = ""; + while ((str = br.readLine()) != null) { + result = str; + } + //关闭流 + is.close(); + //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。 + //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。 + conn.disconnect(); + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将Map转换成字符串参数,用于POST GET 请求 + * + * @param map + * @return + */ + public static String mapToStr(Map map) { + StringBuilder stringBuilder = new StringBuilder(); + if (map != null) { + for (Map.Entry entry : map.entrySet()) { + stringBuilder.append(entry.getKey()); + if (entry.getValue() != null) + stringBuilder.append("=").append(entry.getValue()); + stringBuilder.append("&"); + } + } + if (stringBuilder.length() > 0) + return stringBuilder.substring(0, stringBuilder.length() - 1); + return null; + } +}