diff --git a/WEB-INF/prop/PORTAL_INFO.properties b/WEB-INF/prop/PORTAL_INFO.properties index 8df71486..ba26c4c0 100644 --- a/WEB-INF/prop/PORTAL_INFO.properties +++ b/WEB-INF/prop/PORTAL_INFO.properties @@ -1,3 +1,5 @@ + +###以下是和门户集成相关的 ##门户地址 portal_host = http://172.16.25.133 @@ -7,8 +9,10 @@ portal_user_auth = http://172.16.25.133/portal-web/user/current ##门户首页 portal_homepage = http://172.16.25.133/portal-web/# -##RocketMq的consumerGroup -consumerGroup = cbec-consumer-group_nj_133 + +###以下是和人员同步mq相关的 +##RocketMq的consumerGroup cbec-consumer-group_nj_133 +consumerGroup = coc-consumer-group_portal_133 ##RocketMq的namesrvAddr namesrvAddr = 172.16.84.183:9001;172.16.84.187:9001 @@ -22,6 +26,7 @@ topic = dataSync_topic_nj ##RocketMq的subExpression subExpression = BPM +###以下是和门户待办相关的 ##门户待办接口 portal_todourl = http://172.16.25.133/portal-web/centerTodo/sync @@ -37,11 +42,24 @@ bpm_workflowurl = http://172.16.25.133/bpm ## 门户待办类型 center = MCCM - +##bpm系统的地址,集群以;拼接 bpm_host_array = 10.10.192.187 - +###以下是签章相关的 esiginsUrl = http://172.16.25.133/portal-web/v1/esign ##/whalecloud/cos/ecology -ecology_app_root = /app/weaver/ecology \ No newline at end of file +ecology_app_root = /app/weaver/ecology + + +###以下是和邮件相关的 + +emailUrl = http://10.26.4.136:80/api/rest +emailMethod = sendNotification +eventCode = +notificationType = EMAIL + +channel = OA + +version = 1.0 + diff --git a/src/com/customization/sendtodo/HttpReqUtils.java b/src/com/customization/sendtodo/HttpReqUtils.java index 37b8c46a..5ae93ffb 100644 --- a/src/com/customization/sendtodo/HttpReqUtils.java +++ b/src/com/customization/sendtodo/HttpReqUtils.java @@ -34,9 +34,13 @@ public class HttpReqUtils extends BaseBean{ .build(); try { Response response = client.newCall(request).execute(); + bb.writeLog("response.code():"+response.code()); bb.writeLog("response.body():"+response.body().string()); - msgData = response.body().string(); + + if(response!=null && response.code() == 200){ + msgData = response.body().string(); + } } catch (IOException e) { e.printStackTrace(); } diff --git a/src/com/customization/sendtodo/SendPortalTodoCmd.java b/src/com/customization/sendtodo/SendPortalTodoCmd.java index 77a106ae..1c169db7 100644 --- a/src/com/customization/sendtodo/SendPortalTodoCmd.java +++ b/src/com/customization/sendtodo/SendPortalTodoCmd.java @@ -1,7 +1,5 @@ package com.customization.sendtodo; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.engine.core.cfg.annotation.CommandDynamicProxy; import com.engine.core.interceptor.AbstractCommandProxy; import com.engine.core.interceptor.Command; @@ -20,6 +18,7 @@ import java.util.Map; */ @CommandDynamicProxy(target = RequestSubmitCmd.class, desc="流程提交后给门户发送代办消息") public class SendPortalTodoCmd extends AbstractCommandProxy> { + @Override public Map execute(Command> targetCommand) { //获取到被代理对象 @@ -47,657 +46,18 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> RequestOperationResultBean resultBean = (RequestOperationResultBean) result.get("data"); String executeResult = resultBean.getType().name(); - String new_requestid = Util.null2String(resultBean.getResultInfo().get("requestid")); -// String newRequestid = (String) result.get("newRequestid"); - bb.writeLog("new_requestid:"+new_requestid); -// bb.writeLog("newRequestid:"+newRequestid); - if("SUCCESS".equals(executeResult)){ + String new_requestid = Util.null2String(resultBean.getResultInfo().get("requestid")); + bb.writeLog("new_requestid:"+new_requestid); - String portal_todourl = bb.getPropValue("PORTAL_INFO","portal_todourl"); - String username = bb.getPropValue("PORTAL_INFO","username"); - String passwd = bb.getPropValue("PORTAL_INFO","passwd"); - String center = bb.getPropValue("PORTAL_INFO","center"); - String bpm_workflowurl = bb.getPropValue("PORTAL_INFO","bpm_workflowurl"); + SendPortalTodoRunnable sendPortalTodoRunnable = new SendPortalTodoRunnable(src,new_requestid,requestid,nodeid,user); + new Thread(sendPortalTodoRunnable).start(); - - if(Util.getIntValue(requestid) == -1 && "save".equals(src)){ - sendTodoDataByCreater(new_requestid,user,portal_todourl,username,passwd,bpm_workflowurl,center); - }else if(Util.getIntValue(requestid) == -1 && "submit".equals(src)){ - sendTodoDataByCreateNode(new_requestid,nodeid,user,portal_todourl,username,passwd,bpm_workflowurl,center); - }else if(Util.getIntValue(requestid)> 0 && "submit".equals(src)){ - sendTodoDataByNode(requestid,nodeid,user,portal_todourl,username,passwd,bpm_workflowurl,center); - }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ - sendTodoDataByReject(requestid,nodeid,user,portal_todourl,username,passwd,bpm_workflowurl,center); - } } return result; } - /*** - * - * @param requestId - * @param user - */ - public void sendTodoDataByCreater(String requestId,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ - - HttpReqUtils httpReqUtils = new HttpReqUtils(); - BaseBean bb = new BaseBean(); - RecordSet rs = new RecordSet(); - String actionType = "0" ; - String terminal = "1" ; - String ticketType = center ; - - JSONObject requestObject = new JSONObject(); - try { - int userid = user.getUID(); - String sql =" select t1.requestname,t1.requestmark,t1.creater,t2.nodeid,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + - " t1.requestid as taskcode,d1.nodename\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + - " where t2.userid in ("+userid+") \n" + - " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + - " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+userid+"))) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + - "and t2.requestid = "+requestId ; - - rs.executeQuery(sql); - if (rs.next()){ - - String title = Util.null2String(rs.getString("requestname")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String taskCode = Util.null2String(rs.getString("taskcode")) ; - String nodeId = Util.null2String(rs.getString("nodeid")) ; - - String createdate = Util.null2String(rs.getString("createdate")) ; - String createtime = Util.null2String(rs.getString("createtime")) ; - String messageTitle = Util.null2String(rs.getString("requestname")) ; - String messageContent = Util.null2String(rs.getString("requestname")) ; - - String taskType = "0"; - - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestId ; - String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestId; - String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestId; - String nodeName = Util.null2String(rs.getString("nodeName")) ; - - - - requestObject.put("center",center); - requestObject.put("title",title); - requestObject.put("creator",creator); - requestObject.put("taskCode",taskCode); - requestObject.put("nodeId",nodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",messageTitle); - requestObject.put("messageContent",messageContent); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",ticketType); - - - JSONArray taskObjectList = new JSONArray(); - JSONObject taskObject = new JSONObject(); - String objectAction = "0" ; - String objectType = "0"; - String objectCode = creator ; - String objectId = "" ; - String operatorCode = creator ; - - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - - requestObject.put("taskObjectList",taskObjectList); - } - - bb.writeLog("dataJsonnew:"+requestObject.toJSONString()); -// String username = "admin"; -// String passwd = "Uportal_123"; -// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; - String auth = username + ":" + passwd; - String msgdata = httpReqUtils.doPostByAuth2(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("msgdata:"+msgdata); - if(!"".equals(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - System.out.println(msgObject); - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - - /*** - * - * @param requestid - * @param noideid - * @param user - */ - public void sendTodoDataByCreateNode(String requestid,String noideid,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ - - HttpReqUtils httpReqUtils = new HttpReqUtils(); - JSONObject requestObject = new JSONObject(); - - BaseBean bb = new BaseBean(); - bb.writeLog("sendTodoDataByCreateNode"); - RecordSet rs = new RecordSet(); - String ticketType = center ; - String terminal = "1" ; - try { - - String currentnodetype = "" ; - String sql = " select currentnodetype from workflow_requestbase where requestid="+requestid; - rs.executeQuery(sql); - bb.writeLog("sendTodoDataByNode--sql:"+sql); - if (rs.next()){ - currentnodetype = Util.null2String(rs.getString("CURRENTNODETYPE")); - } - bb.writeLog("sendTodoDataByNode--currentnodetype:"+currentnodetype); - if("3".equals(currentnodetype)){ - String actionType = "3" ; - - }else{ - - String actionType = "0" ; - - JSONArray taskObjectList = new JSONArray(); - - sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + - " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - bb.writeLog("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - - String title = Util.null2String(rs.getString("requestname")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String taskCode = Util.null2String(rs.getString("taskcode")) ; - String nodeId = Util.null2String(rs.getString("nodeid")) ; - - String createdate = Util.null2String(rs.getString("createdate")) ; - String createtime = Util.null2String(rs.getString("createtime")) ; - String messageTitle = Util.null2String(rs.getString("requestname")) ; - String messageContent = Util.null2String(rs.getString("requestname")) ; - - String taskType = "0"; - - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; - String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String nodeName = Util.null2String(rs.getString("nodeName")) ; - - requestObject.put("center",center); - requestObject.put("title",title); - requestObject.put("creator",creator); - requestObject.put("taskCode",taskCode); - requestObject.put("nodeId",nodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",messageTitle); - requestObject.put("messageContent",messageContent); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",ticketType); - } - - sql = " select t2.userid,h1.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.REQUESTID = "+requestid; - bb.writeLog("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - - String usercode = Util.null2String(rs.getString("loginid")) ; - JSONObject taskObject = new JSONObject(); - String objectAction = "0" ; - String objectType = "0"; - String objectCode = usercode ; - String objectId = "" ; - String operatorCode = usercode ; - - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - } - - requestObject.put("taskObjectList",taskObjectList); - - -// String username = "admin"; -// String passwd = "Uportal_123"; -// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; - - String auth = username + ":" + passwd; - bb.writeLog("requestObject:"+requestObject.toJSONString()); - String msgdata = httpReqUtils.doPostByAuth2(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("msgdata:"+msgdata); - if(!"".equals(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - System.out.println(msgdata); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - - /*** - * - * @param requestid - * @param noideid - * @param user - */ - public void sendTodoDataByNode(String requestid,String noideid,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ - HttpReqUtils httpReqUtils = new HttpReqUtils(); - JSONObject requestObject = new JSONObject(); - - BaseBean bb = new BaseBean(); - bb.writeLog("sendTodoDataByNode"); - RecordSet rs = new RecordSet(); - String ticketType = center ; - String terminal = "1" ; - try { - - String currentnodetype = "" ; - String sql = " select currentnodetype from workflow_requestbase where requestid="+requestid; - rs.executeQuery(sql); - bb.writeLog("sendTodoDataByNode--sql:"+sql); - if (rs.next()){ - currentnodetype = Util.null2String(rs.getString("CURRENTNODETYPE")); - } - bb.writeLog("sendTodoDataByNode--currentnodetype:"+currentnodetype); - if("3".equals(currentnodetype)){ - String actionType = "3" ; - - }else{ - - String actionType = "" ; - int count = 0 ; - sql = " select t2.userid,h1.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.REQUESTID = "+requestid+ - " and t2.nodeid = " + noideid ; - bb.writeLog("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - count++; - } - bb.writeLog("sendTodoDataByNode--count:"+count); - if(count >0){ - - JSONArray taskObjectList = new JSONArray(); - actionType = "1" ; - sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + - " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid + - " and t1.currentnodeid = " + noideid ; - - bb.writeLog("sendTodoDataByNode--sql:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - - String title = Util.null2String(rs.getString("requestname")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String taskCode = Util.null2String(rs.getString("taskcode")) ; - String nodeId = Util.null2String(rs.getString("nodeid")) ; - - String createdate = Util.null2String(rs.getString("createdate")) ; - String createtime = Util.null2String(rs.getString("createtime")) ; - String messageTitle = Util.null2String(rs.getString("requestname")) ; - String messageContent = Util.null2String(rs.getString("requestname")) ; - - String taskType = "0"; - - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; - String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String nodeName = Util.null2String(rs.getString("nodeName")) ; - - - requestObject.put("center",center); - requestObject.put("title",title); - requestObject.put("creator",creator); - requestObject.put("taskCode",taskCode); - requestObject.put("nodeId",nodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",messageTitle); - requestObject.put("messageContent",messageContent); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",ticketType); - } - - JSONObject taskObject = new JSONObject(); - String objectAction = "1" ; - String objectType = "0"; - String objectCode = user.getLoginid() ; - String objectId = "" ; - String operatorCode = user.getLoginid() ; - - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - requestObject.put("taskObjectList",taskObjectList); - - }else{ - - JSONArray taskObjectList = new JSONArray(); - actionType = "2" ; - - sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + - " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - bb.writeLog("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - - String title = Util.null2String(rs.getString("requestname")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String taskCode = Util.null2String(rs.getString("taskcode")) ; - String nodeId = Util.null2String(rs.getString("nodeid")) ; - - String createdate = Util.null2String(rs.getString("createdate")) ; - String createtime = Util.null2String(rs.getString("createtime")) ; - String messageTitle = Util.null2String(rs.getString("requestname")) ; - String messageContent = Util.null2String(rs.getString("requestname")) ; - - String taskType = "0"; - - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; - String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String nodeName = Util.null2String(rs.getString("nodeName")) ; - - requestObject.put("center",center); - requestObject.put("title",title); - requestObject.put("creator",creator); - requestObject.put("taskCode",taskCode); - requestObject.put("nodeId",nodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",messageTitle); - requestObject.put("messageContent",messageContent); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",ticketType); - } - -// sql = " select t2.userid,h1.loginid\n" + -// " from workflow_requestbase t1\n" + -// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + -// " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + -// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and t2.REQUESTID = "+requestid+ -// " and t2.nodeid = " + noideid ; -// bb.writeLog("sendTodoDataByNode--sql:"+sql); -// rs.executeQuery(sql); -// while (rs.next()){ -// JSONObject taskObject = new JSONObject(); -// String objectAction = "1" ; -// String objectType = "0"; -// String objectCode = user.getLoginid() ; -// String objectId = "" ; -// String operatorCode = user.getLoginid() ; -// -// taskObject.put("objectAction",objectAction); -// taskObject.put("objectType",objectType); -// taskObject.put("objectCode",objectCode); -// taskObject.put("objectId",objectId); -// taskObject.put("operatorCode",operatorCode); -// taskObjectList.add(taskObject); -// } - - sql = " select t2.userid,h1.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.REQUESTID = "+requestid; - bb.writeLog("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - - String usercode = Util.null2String(rs.getString("loginid")) ; - JSONObject taskObject = new JSONObject(); - String objectAction = "0" ; - String objectType = "0"; - String objectCode = usercode ; - String objectId = "" ; - String operatorCode = usercode ; - - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - } - requestObject.put("taskObjectList",taskObjectList); - } - -// String username = "admin"; -// String passwd = "Uportal_123"; -// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; - - //"Basic YWRtaW46VXBvcnRhbF8xMjM=" - - String auth = username + ":" + passwd; - bb.writeLog("requestObject:"+requestObject.toJSONString()); - String msgdata = httpReqUtils.doPostByAuth2(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("msgdata:"+msgdata); - if(!"".equals(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - System.out.println(msgObject); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /*** - * 操作退回时执行 - * @param requestid - * @param noideid - * @param user - */ - public void sendTodoDataByReject(String requestid,String noideid,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ - - HttpReqUtils httpReqUtils = new HttpReqUtils(); - JSONObject requestObject = new JSONObject(); - - BaseBean bb = new BaseBean(); - bb.writeLog("sendTodoDataByReject"); - RecordSet rs = new RecordSet(); - String ticketType = center ; - String terminal = "1" ; - try { - - String currentnodetype = "" ; - String sql = " select currentnodetype from workflow_requestbase where requestid="+requestid; - rs.executeQuery(sql); - bb.writeLog("sendTodoDataByReject--sql:"+sql); - if (rs.next()){ - currentnodetype = Util.null2String(rs.getString("CURRENTNODETYPE")); - } - bb.writeLog("sendTodoDataByReject--currentnodetype:"+currentnodetype); - if("3".equals(currentnodetype)){ - String actionType = "3" ; - }else{ - - String actionType = "2" ; - - JSONArray taskObjectList = new JSONArray(); - - sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + - " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - bb.writeLog("sendTodoDataByReject--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - - String title = Util.null2String(rs.getString("requestname")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String taskCode = Util.null2String(rs.getString("taskcode")) ; - String nodeId = Util.null2String(rs.getString("nodeid")) ; - - String createdate = Util.null2String(rs.getString("createdate")) ; - String createtime = Util.null2String(rs.getString("createtime")) ; - String messageTitle = Util.null2String(rs.getString("requestname")) ; - String messageContent = Util.null2String(rs.getString("requestname")) ; - - String taskType = "0"; - - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; - String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; - String nodeName = Util.null2String(rs.getString("nodeName")) ; - - requestObject.put("center",center); - requestObject.put("title",title); - requestObject.put("creator",creator); - requestObject.put("taskCode",taskCode); - requestObject.put("nodeId",nodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); - requestObject.put("messageTitle",messageTitle); - requestObject.put("messageContent",messageContent); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",ticketType); - } - - - - - sql = " select t2.userid,h1.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.REQUESTID = "+requestid; - bb.writeLog("sendTodoDataByReject--sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - - String usercode = Util.null2String(rs.getString("loginid")) ; - JSONObject taskObject = new JSONObject(); - String objectAction = "0" ; - String objectType = "0"; - String objectCode = usercode ; - String objectId = "" ; - String operatorCode = usercode ; - - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",objectId); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - } - - requestObject.put("taskObjectList",taskObjectList); - - -// String username = "admin"; -// String passwd = "Uportal_123"; -// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; - - String auth = username + ":" + passwd; - bb.writeLog("requestObject:"+requestObject.toJSONString()); - String msgdata = httpReqUtils.doPostByAuth2(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("msgdata:"+msgdata); - if(!"".equals(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - System.out.println(msgdata); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - } } diff --git a/src/com/customization/sendtodo/SendPortalTodoRunnable.java b/src/com/customization/sendtodo/SendPortalTodoRunnable.java new file mode 100644 index 00000000..fd659e1b --- /dev/null +++ b/src/com/customization/sendtodo/SendPortalTodoRunnable.java @@ -0,0 +1,720 @@ +package com.customization.sendtodo; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.util.SendMailUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SendPortalTodoRunnable implements Runnable{ + + public String EMAIL_REGEX_DEFAULT = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; + + private String src; + private String new_requestid; + private String requestid; + private String nodeid; + private User user; + + public SendPortalTodoRunnable(String src,String new_requestid,String requestid,String nodeid, User user){ + this.src = src; + this.new_requestid = new_requestid; + this.requestid = requestid; + this.nodeid = nodeid; + this.user = user; + } + + @Override + public void run() { + + BaseBean bb = new BaseBean(); + String portal_todourl = bb.getPropValue("PORTAL_INFO","portal_todourl"); + String username = bb.getPropValue("PORTAL_INFO","username"); + String passwd = bb.getPropValue("PORTAL_INFO","passwd"); + String center = bb.getPropValue("PORTAL_INFO","center"); + String bpm_workflowurl = bb.getPropValue("PORTAL_INFO","bpm_workflowurl"); + + + if(Util.getIntValue(requestid) == -1 && "save".equals(src)){ + sendTodoDataByCreater(new_requestid,user,portal_todourl,username,passwd,bpm_workflowurl,center); + }else if(Util.getIntValue(requestid) == -1 && "submit".equals(src)){ + sendTodoDataByCreateNode(new_requestid,nodeid,user,portal_todourl,username,passwd,bpm_workflowurl,center); + }else if(Util.getIntValue(requestid)> 0 && "submit".equals(src)){ + sendTodoDataByNode(requestid,nodeid,user,portal_todourl,username,passwd,bpm_workflowurl,center); + }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ + sendTodoDataByReject(requestid,nodeid,user,portal_todourl,username,passwd,bpm_workflowurl,center); + } + } + + + /*** + * + * @param requestId + * @param user + */ + public void sendTodoDataByCreater(String requestId, User user, String portal_todourl, String username, String passwd, String bpm_workflowurl, String center){ + + //HttpReqUtils httpReqUtils = new HttpReqUtils(); + + SendPortalTodoUtil sendPortalTodoUtil = new SendPortalTodoUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + + JSONArray emailArray = new JSONArray(); + + + String requestname = ""; + String requestremark = "" ; + String actionType = "0" ; + String terminal = "1" ; + String taskType = "0"; + String ticketType = center ; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + + JSONObject requestObject = new JSONObject(); + try { + int userid = user.getUID(); + String sql =" select t1.requestname,t1.requestmark,t1.creater,t2.nodeid,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskcode,d1.nodename,h1.email\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where t2.userid in ("+userid+") \n" + + " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + + " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+userid+"))) \n" + + " and t2.islasttimes = 1 \n" + + " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + + " and t2.requestid = "+requestId ; + + rs.executeQuery(sql); + if (rs.next()){ + + String title = Util.null2String(rs.getString("requestname")) ; + String creator = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + String messageContent = Util.null2String(rs.getString("requestname")) ; + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestId ; + String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestId; + String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestId; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",ticketType); + + JSONArray taskObjectList = new JSONArray(); + JSONObject taskObject = new JSONObject(); + String objectAction = "0" ; + String objectType = "0"; + String objectCode = creator ; + String objectId = "" ; + String operatorCode = creator ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + requestObject.put("taskObjectList",taskObjectList); + + + String email = Util.null2String(rs.getString("email")) ; + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray.add(email); + } + } + + bb.writeLog("dataJsonnew:"+requestObject.toJSONString()); +// String username = "admin"; +// String passwd = "Uportal_123"; +// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; + String auth = username + ":" + passwd; + String msgdata = sendPortalTodoUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + //{"resultCode":"1","resultMsg":"No Result"} + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + + System.out.println(emailArray.toJSONString()); + String notificationSubject = ""; + String notificationContent = "" ; + sendMailUtil.sendMail(requestId,emailArray.toJSONString(),notificationSubject,notificationContent); + + }else{ + sendPortalTodoUtil.doCreateSendPortalTodoErrorInfo(); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * + * @param requestid + * @param noideid + * @param user + */ + public void sendTodoDataByCreateNode(String requestid,String noideid,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ + + //HttpReqUtils httpReqUtils = new HttpReqUtils(); + SendPortalTodoUtil sendPortalTodoUtil = new SendPortalTodoUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + + JSONObject requestObject = new JSONObject(); + + JSONArray emailArray = new JSONArray(); + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByCreateNode"); + RecordSet rs = new RecordSet(); + String ticketType = center ; + String terminal = "1" ; + try { + + String currentnodetype = "" ; + String sql = " select currentnodetype from workflow_requestbase where requestid="+requestid; + rs.executeQuery(sql); + bb.writeLog("sendTodoDataByNode--sql:"+sql); + if (rs.next()){ + currentnodetype = Util.null2String(rs.getString("CURRENTNODETYPE")); + } + bb.writeLog("sendTodoDataByNode--currentnodetype:"+currentnodetype); + if("3".equals(currentnodetype)){ + String actionType = "3" ; + + }else{ + + String actionType = "0" ; + JSONArray taskObjectList = new JSONArray(); + sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename,h1.email\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id, lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + if (rs.next()){ + + String title = Util.null2String(rs.getString("requestname")) ; + String creator = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + String messageContent = Util.null2String(rs.getString("requestname")) ; + + String taskType = "0"; + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",ticketType); + + String email = Util.null2String(rs.getString("email")) ; + emailArray.add(email); + } + + sql = " select t2.userid,h1.loginid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + + String usercode = Util.null2String(rs.getString("loginid")) ; + JSONObject taskObject = new JSONObject(); + String objectAction = "0" ; + String objectType = "0"; + String objectCode = usercode ; + String objectId = "" ; + String operatorCode = usercode ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + emailArray.add(email); + } + + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + bb.writeLog("requestObject:"+requestObject.toJSONString()); + String msgdata = sendPortalTodoUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + //{"resultCode":"1","resultMsg":"No Result"} + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + + System.out.println(emailArray.toJSONString()); + String notificationSubject = ""; + String notificationContent = "" ; + sendMailUtil.sendMail(requestid,emailArray.toJSONString(),notificationSubject,notificationContent); + + }else{ + sendPortalTodoUtil.doCreateSendPortalTodoErrorInfo(); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * + * @param requestid + * @param noideid + * @param user + */ + public void sendTodoDataByNode(String requestid,String noideid,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ + HttpReqUtils httpReqUtils = new HttpReqUtils(); + JSONObject requestObject = new JSONObject(); + + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByNode"); + RecordSet rs = new RecordSet(); + String ticketType = center ; + String terminal = "1" ; + try { + + String currentnodetype = "" ; + String sql = " select currentnodetype from workflow_requestbase where requestid="+requestid; + rs.executeQuery(sql); + bb.writeLog("sendTodoDataByNode--sql:"+sql); + if (rs.next()){ + currentnodetype = Util.null2String(rs.getString("CURRENTNODETYPE")); + } + bb.writeLog("sendTodoDataByNode--currentnodetype:"+currentnodetype); + if("3".equals(currentnodetype)){ + String actionType = "3" ; + + }else{ + + String actionType = "" ; + int count = 0 ; + sql = " select t2.userid,h1.loginid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.REQUESTID = "+requestid+ + " and t2.nodeid = " + noideid ; + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + count++; + } + bb.writeLog("sendTodoDataByNode--count:"+count); + if(count >0){ + + JSONArray taskObjectList = new JSONArray(); + actionType = "1" ; + + sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid + + " and t1.currentnodeid = " + noideid ; + + bb.writeLog("sendTodoDataByNode--sql:"+sql); + + rs.executeQuery(sql); + if (rs.next()){ + + String title = Util.null2String(rs.getString("requestname")) ; + String creator = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + String messageContent = Util.null2String(rs.getString("requestname")) ; + + String taskType = "0"; + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",ticketType); + } + + JSONObject taskObject = new JSONObject(); + String objectAction = "1" ; + String objectType = "0"; + String objectCode = user.getLoginid() ; + String objectId = "" ; + String operatorCode = user.getLoginid() ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + requestObject.put("taskObjectList",taskObjectList); + + }else{ + + JSONArray taskObjectList = new JSONArray(); + actionType = "2" ; + + sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + if (rs.next()){ + + String title = Util.null2String(rs.getString("requestname")) ; + String creator = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + String messageContent = Util.null2String(rs.getString("requestname")) ; + + String taskType = "0"; + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",ticketType); + } + +// sql = " select t2.userid,h1.loginid\n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t2.REQUESTID = "+requestid+ +// " and t2.nodeid = " + noideid ; +// bb.writeLog("sendTodoDataByNode--sql:"+sql); +// rs.executeQuery(sql); +// while (rs.next()){ +// JSONObject taskObject = new JSONObject(); +// String objectAction = "1" ; +// String objectType = "0"; +// String objectCode = user.getLoginid() ; +// String objectId = "" ; +// String operatorCode = user.getLoginid() ; +// +// taskObject.put("objectAction",objectAction); +// taskObject.put("objectType",objectType); +// taskObject.put("objectCode",objectCode); +// taskObject.put("objectId",objectId); +// taskObject.put("operatorCode",operatorCode); +// taskObjectList.add(taskObject); +// } + + sql = " select t2.userid,h1.loginid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.REQUESTID = "+requestid; + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + + String usercode = Util.null2String(rs.getString("loginid")) ; + JSONObject taskObject = new JSONObject(); + String objectAction = "0" ; + String objectType = "0"; + String objectCode = usercode ; + String objectId = "" ; + String operatorCode = usercode ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + } + requestObject.put("taskObjectList",taskObjectList); + } + +// String username = "admin"; +// String passwd = "Uportal_123"; +// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; + + //"Basic YWRtaW46VXBvcnRhbF8xMjM=" + + String auth = username + ":" + passwd; + bb.writeLog("requestObject:"+requestObject.toJSONString()); + String msgdata = httpReqUtils.doPostByAuth2(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + System.out.println(msgObject); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * 操作退回时执行 + * @param requestid + * @param noideid + * @param user + */ + public void sendTodoDataByReject(String requestid,String noideid,User user,String portal_todourl,String username,String passwd,String bpm_workflowurl,String center){ + + HttpReqUtils httpReqUtils = new HttpReqUtils(); + JSONObject requestObject = new JSONObject(); + + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByReject"); + RecordSet rs = new RecordSet(); + String ticketType = center ; + String terminal = "1" ; + try { + + String currentnodetype = "" ; + String sql = " select currentnodetype from workflow_requestbase where requestid="+requestid; + rs.executeQuery(sql); + bb.writeLog("sendTodoDataByReject--sql:"+sql); + if (rs.next()){ + currentnodetype = Util.null2String(rs.getString("CURRENTNODETYPE")); + } + bb.writeLog("sendTodoDataByReject--currentnodetype:"+currentnodetype); + if("3".equals(currentnodetype)){ + String actionType = "3" ; + }else{ + + String actionType = "2" ; + + JSONArray taskObjectList = new JSONArray(); + + sql = " select t1.requestname,t1.requestmark,t1.creater,t1.createdate,t1.createtime,h1.lastname,h1.loginid,\n" + + " t1.requestid as taskCode,t1.currentnodeid as nodeid,d1.nodename\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t1.creater\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("sendTodoDataByReject--sql:"+sql); + rs.executeQuery(sql); + if (rs.next()){ + + String title = Util.null2String(rs.getString("requestname")) ; + String creator = Util.null2String(rs.getString("loginid")) ; + String taskCode = Util.null2String(rs.getString("taskcode")) ; + String nodeId = Util.null2String(rs.getString("nodeid")) ; + + String createdate = Util.null2String(rs.getString("createdate")) ; + String createtime = Util.null2String(rs.getString("createtime")) ; + String messageTitle = Util.null2String(rs.getString("requestname")) ; + String messageContent = Util.null2String(rs.getString("requestname")) ; + + String taskType = "0"; + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String urlApp = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String urlDing = "[newtab]"+bpm_workflowurl+"/spa/workflow/static4mobileform/index.html#/req?requestid="+requestid; + String nodeName = Util.null2String(rs.getString("nodeName")) ; + + requestObject.put("center",center); + requestObject.put("title",title); + requestObject.put("creator",creator); + requestObject.put("taskCode",taskCode); + requestObject.put("nodeId",nodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("messageTitle",messageTitle); + requestObject.put("messageContent",messageContent); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",nodeName); + requestObject.put("ticketType",ticketType); + } + + + + + sql = " select t2.userid,h1.loginid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join (select id, lastname,loginid from hrmresource where STATUS = 1 union all select id, lastname,loginid from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1', '5', '8', '9', '7', '11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.REQUESTID = "+requestid; + bb.writeLog("sendTodoDataByReject--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + + String usercode = Util.null2String(rs.getString("loginid")) ; + JSONObject taskObject = new JSONObject(); + String objectAction = "0" ; + String objectType = "0"; + String objectCode = usercode ; + String objectId = "" ; + String operatorCode = usercode ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",objectId); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + } + + requestObject.put("taskObjectList",taskObjectList); + + +// String username = "admin"; +// String passwd = "Uportal_123"; +// String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; + + String auth = username + ":" + passwd; + bb.writeLog("requestObject:"+requestObject.toJSONString()); + String msgdata = httpReqUtils.doPostByAuth2(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + System.out.println(msgdata); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + +} diff --git a/src/com/customization/sendtodo/SendPortalTodoUtil.java b/src/com/customization/sendtodo/SendPortalTodoUtil.java new file mode 100644 index 00000000..5e124a71 --- /dev/null +++ b/src/com/customization/sendtodo/SendPortalTodoUtil.java @@ -0,0 +1,56 @@ +package com.customization.sendtodo; + +import com.sun.jersey.core.util.Base64; +import okhttp3.*; +import weaver.general.BaseBean; + +import java.io.IOException; + +public class SendPortalTodoUtil { + + /*** + * + * @param portal_todourl + * @param dataJson + * @param auth + * @return + */ + public String doPostByAuth(String portal_todourl,String dataJson,String auth){ + //"http://172.16.25.133/portal-web/centerTodo/sync" + BaseBean bb = new BaseBean(); + + String authorization = "Basic "+new String(Base64.encode(auth)); + bb.writeLog("authorization:"+authorization); + bb.writeLog("portal_todourl:"+portal_todourl); + bb.writeLog("dataJson:"+dataJson); + bb.writeLog("auth:"+auth); + + String msgData = "" ; + OkHttpClient client = new OkHttpClient().newBuilder().build(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, dataJson); + Request request = new Request.Builder() + .url(portal_todourl) + .method("POST", body) + .addHeader("Authorization", authorization) + .addHeader("Content-Type", "application/json") + .build(); + try { + Response response = client.newCall(request).execute(); + + bb.writeLog("response.code():"+response.code()); + bb.writeLog("response.body():"+response.body().string()); + + if(response!=null && response.code() == 200){ + msgData = response.body().string(); + } + } catch (IOException e) { + e.printStackTrace(); + } + return msgData; + } + + public void doCreateSendPortalTodoErrorInfo(){ + + } +} diff --git a/src/weaver/interfaces/iwhalecloud/util/RSAUtils.java b/src/weaver/interfaces/iwhalecloud/util/RSAUtils.java new file mode 100644 index 00000000..55109702 --- /dev/null +++ b/src/weaver/interfaces/iwhalecloud/util/RSAUtils.java @@ -0,0 +1,206 @@ +package weaver.interfaces.iwhalecloud.util; + +import java.security.KeyFactory; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.Signature; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang.StringUtils; + +public class RSAUtils { + + /** + * 加密算法RSA + */ + private static final String KEY_ALGORITHM = "RSA"; + + /** + * 签名算法:MD5withRSA + */ + private static final String SIGNATURE_ALGORITHM_MD5 = "MD5withRSA"; + + + /** + * 字节编码方式:16进制 + */ + private static final String ENCODING_HEX = "HEX"; + + /** + * 字节编码方式:base64 + */ + private static final String ENCODING_BASE64 = "BASE64"; + + private static final String AND = "&"; + + /** + * 签名校验 + * + * @param data + * @param publicKeyByte + * @param sign + * @return + * @throws Exception + */ + private static boolean verify(byte[] data, byte[] publicKeyByte, byte[] sign, String signatureAlgorithm) + throws Exception { + if (data == null || publicKeyByte == null || sign == null) { + return false; + } + + // 生成公钥 + X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(publicKeyByte); + KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); + PublicKey publicKey = keyFactory.generatePublic(x509KeySpec); + Signature signature = Signature.getInstance(signatureAlgorithm); + signature.initVerify(publicKey); + signature.update(data); + + return signature.verify(sign); + } + + + /** + * 签名校验 - V9框架生成的公私钥可以用在这个方法: MD5withRSA + * + * @param data + * @param publicKey + * @param sign + * @return + * @throws Exception + */ + private static boolean verify(byte[] data, String publicKey, String sign) throws Exception { + if (StringUtils.isBlank(publicKey) || StringUtils.isBlank(sign)) { + return false; + } + + return verify(data, Base64.decodeBase64(publicKey), Base64.decodeBase64(sign), SIGNATURE_ALGORITHM_MD5); + } + + /** + * 二进制转变为16进制 + * + * @param bytes + * @return + */ + private static String encodeByte2HexStr(byte[] bytes) { + if (bytes == null) { + return null; + } + + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < bytes.length; i++) { + String hex = Integer.toHexString(bytes[i] & 0xFF); + if (hex.length() == 1) { + hex = '0' + hex; + } + sb.append(hex.toUpperCase()); + } + + return sb.toString(); + } + + + private static String sign(byte[] data, byte[] privateKeyByte, String encodingType, String signatureAlgorithm) + throws Exception { + if (data == null || privateKeyByte == null) { + return StringUtils.EMPTY; + } + + // 生成私钥 + PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(privateKeyByte); + KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); + PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); + + Signature signature = Signature.getInstance(signatureAlgorithm); + signature.initSign(privateKey); + signature.update(data); + if (ENCODING_HEX.equals(encodingType)) { + return encodeByte2HexStr(signature.sign()); + } + + return Base64.encodeBase64String(signature.sign()); + } + + + private static String sign(byte[] data, String privateKey) throws Exception { + if (StringUtils.isBlank(privateKey)) { + return StringUtils.EMPTY; + } + + return sign(data, Base64.decodeBase64(privateKey), ENCODING_BASE64, SIGNATURE_ALGORITHM_MD5); + } + + + private static String genSignDate(String appId, String appCode, String appSecret, String timestamp) { + // appId和appCode两个只需要传递一个,两个都传时以appId为准 + String appPk = ""; + if (StringUtils.isNotBlank(appId)) { + appPk = appId; + } + else if (StringUtils.isNotBlank(appCode)) { + appPk = appCode; + } + String responseType = "token"; + System.out.println("timestamp == " + timestamp); + return appPk + AND + + appSecret + AND + + responseType + AND + + timestamp; + } + + /** + * 生成签名 + * + * @param appId + * @param appCode + * @param appSecret + * @param timestamp + * @param privateKey + * @return + * @throws Exception + */ + public static String generateSign(String appId, String appCode, String appSecret, String timestamp, String privateKey) throws Exception { + String signData = genSignDate(appId, appCode, appSecret, timestamp); + return sign(signData.getBytes("utf-8"), privateKey); + } + + + /** + * 验证签名 + * + * @param appId + * @param appCode + * @param appSecret + * @param timestamp + * @param publicKey + * @param sign + * @return + * @throws Exception + */ + public static boolean verifySign(String appId, String appCode, String appSecret, String timestamp, String publicKey, String sign) throws Exception { + String signData = genSignDate(appId, appCode, appSecret, timestamp); + return verify(signData.getBytes("utf-8"), publicKey, sign); + } + + + public static void main(String[] args) throws Exception { + String appId = "80938"; + String appCode = ""; + String appSecret = "abb6dc5515eeca96"; + String timestamp = System.currentTimeMillis() + ""; + + // 生成签名 + String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCt49VVhOmTZVpWPK/bB/ZvpoxrpXt3c9h8DJtHq9vWLGPVMS0a2l+v4U+g8zFpq6Rb6G6nnJ+pYXmojygQhqKG6izWxEojdAF2znt6URsikGe1wRxUpUewRbZVse7Rs0jvJmGZeVZ08gC1iKogyHtHeRinnHJNxC4v/5yhkOBpR6oe4t2IutKNFhSmHdJP5bEkei5gWAZ4xi15pvcWBcUSVEQliW7qRTX9yQUdCq1KzCLEGYNfm27SzKvFpRUAXpgjfFftmB3u7pZ9qhAn/25b0h9sE90Xjwg/UNmLqxUerNNDbIrqWy0x6g/+2Q/c4OXKLk5FlkkEURoBINNDbYgdAgMBAAECggEAAsfZ6XwuoATG5QojZcVC05Y+OJp01vwrQhCRixvccBhVoFsg9YT4cr+PnmtFJwNvpWiaHGQMyZCdeWyQn3MHtlCYVvbcmKSKQXQb1WDmpi7Y+bcU1OWvt8nlmIk34HKVf/2FIgcmssgL6ts8nTmXfxUYp9WAnm28r1fPEWZXsFdGNilFxg6Vymct+5hfnXUA5OMm1RgSvYR/12F4aqILz7kjMBjkF4IJAJpRqR4WlU3vhJ3+FGLnOqnAKRE+rkn10LaKpfOrWY6chm6C2ddNVzGyYaDAqH+TK+9C8qLYZLjbyD8a5LlCU4xdHYbG4VoVpHz7Pop4XQWzOkP7zagvoQKBgQD1MT9K4Kt/Ms3pw/zbv0a3Wvt45OfszMHiVBYXE7Fhp11zqK6wyTUU8ePLO3XxS5GbQwBRlfYhI2aF6nWxq2iphqemD5AqC03m0tJl4g2/q/+Mr0k7ClRJHV2cs80ij9aWdHcNlCW5G37ZXfjiQ9qkiIIr1RLngO59HAEP1ePZzwKBgQC1jgJeDpFRKDZ8SCYKowjnvMgPULZ97LDofS828hgwLSzSI+tOpHOrJnFgIC08JTVxYnB5gw3ybqvPLt9Tz+soledqayTynMwlpDz4WuoQw5mEPvURIqsxkrMFqYFcMLrBbIsyJFboKkfgLpTXlOFe6wv0oe0s37Sgz9IRMe/2UwKBgGQCGUnGR80TANAHg5xx8TsaXhXacAqzHaXeHEB/ZMtrA4AIXnB3MTKA0yPy9dFcvGAyvO+KFiFAGjInBqhYPNFgvgLKuEed4sFyXiT2RhtW4V4VpO3y8Zv84VDoOZSOTL2DdYfRVG2jHGM2pCxN9uFDWKzeNN6+RQg8ouY9nLkbAoGACme1IwbatTgEx2KrK3jkjcN4A8iwbM8f5HMoPZHqaPht1S1R0xQBvRFa9hNiBExtn63wnEYyim5lUl5xVjBYXd8ZgDPbzjvGR3H+PI2ZVJShO78P9Id0IEc0E2L/kvUH/wXlhF4ozO1/aQ3CYgiaUgJOkRqmqSe5Bm5ir7GY+xkCgYBkfmFhBI9m8AxljI3oJAGv43EGw2s6wZkrQXFBStYBSxTkkS9JHMbkNrKgKvsuzPLUCD0hmdTPREh/miO/0VNXZaa05L7xhgvakezI4f2BSY6tCMXHiBmnRXE8JL4+rEvWAKUaMCTynoyGRetl+JmooLZ5Fez1250hw5vWdSUudA=="; + String sign = generateSign(appId, appCode, appSecret, timestamp, privateKey); + System.out.println("sign == " + sign); + + // 验证签名 + String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArePVVYTpk2VaVjyv2wf2b6aMa6V7d3PYfAybR6vb1ixj1TEtGtpfr+FPoPMxaaukW+hup5yfqWF5qI8oEIaihuos1sRKI3QBds57elEbIpBntcEcVKVHsEW2VbHu0bNI7yZhmXlWdPIAtYiqIMh7R3kYp5xyTcQuL/+coZDgaUeqHuLdiLrSjRYUph3ST+WxJHouYFgGeMYteab3FgXFElREJYlu6kU1/ckFHQqtSswixBmDX5tu0syrxaUVAF6YI3xX7Zgd7u6WfaoQJ/9uW9IfbBPdF48IP1DZi6sVHqzTQ2yK6lstMeoP/tkP3ODlyi5ORZZJBFEaASDTQ22IHQIDAQAB"; + boolean verify = verifySign(appId, appCode, appSecret, timestamp, publicKey, sign); + System.out.println("verify == " + verify); + } + +} diff --git a/src/weaver/interfaces/job/ESiginsCronJob.java b/src/weaver/interfaces/job/ESiginsCronJob.java index 6ec4a126..76a35003 100644 --- a/src/weaver/interfaces/job/ESiginsCronJob.java +++ b/src/weaver/interfaces/job/ESiginsCronJob.java @@ -27,6 +27,10 @@ public class ESiginsCronJob extends BaseCronJob { updateHrmSiginData(); } + + /*** + * + */ public void updateHrmSiginData(){ RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); @@ -212,6 +216,17 @@ public class ESiginsCronJob extends BaseCronJob { // } // } + + /*** + * + * @param sysUserCode + * @param imagetype + * @param image_File_Zip_Path + * @param filesize + * @param image_File_Path + * @param subcompanyid1 + * @param userid + */ public void updateSignature(String sysUserCode,String imagetype,String image_File_Zip_Path,long filesize,String image_File_Path,String subcompanyid1,String userid){ String imageFileType = "application/octet-stream"; @@ -252,7 +267,13 @@ public class ESiginsCronJob extends BaseCronJob { } - + /*** + * + * @param esignImage + * @param imagefilepath + * @param imagetype + * @return + */ public String saveImageFile(String esignImage,String imagefilepath,String imagetype) { //对字节数组字符串进行Base64解码并生成图片 @@ -386,13 +407,16 @@ public class ESiginsCronJob extends BaseCronJob { Response response = client.newCall(request).execute(); bb.writeLog("response.code():"+response.code()); //bb.writeLog("response.body():"+response.body().string()); - msgData = response.body().string(); + + if(response != null && response.code() == 200){ + msgData = response.body().string(); + } } catch (IOException e) { e.printStackTrace(); bb.writeLog("e2:"+e); } - bb.writeLog("msgData:"+msgData); +// bb.writeLog("msgData:"+msgData); return msgData; } @@ -425,7 +449,7 @@ public class ESiginsCronJob extends BaseCronJob { System.out.println("response.code():"+response.code()); System.out.println("response.body():"+response.body().string()); String msgData = response.body().string(); - System.out.println("msgData:"+msgData); +// System.out.println("msgData:"+msgData); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/weaver/interfaces/util/SendMailUtil.java b/src/weaver/interfaces/util/SendMailUtil.java new file mode 100644 index 00000000..c287cb7d --- /dev/null +++ b/src/weaver/interfaces/util/SendMailUtil.java @@ -0,0 +1,145 @@ +package weaver.interfaces.util; + +import com.alibaba.fastjson.JSONObject; +import okhttp3.*; +import org.apache.commons.lang.StringUtils; +import weaver.general.BaseBean; +import weaver.interfaces.iwhalecloud.util.RSAUtils; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class SendMailUtil { + + public void sendMail(String requestid,String emails,String notificationSubject,String notificationContent){ + + SimpleDateFormat sdf = new SimpleDateFormat(""); + BaseBean bb = new BaseBean(); + String emailUrl = bb.getPropValue("PORTAL_INFO","mailUrl"); + String emailMethod = bb.getPropValue("PORTAL_INFO","mailMethod"); + String eventCode = bb.getPropValue("PORTAL_INFO","eventCode"); + String notificationType = bb.getPropValue("PORTAL_INFO","notificationType"); + String channel = bb.getPropValue("PORTAL_INFO","channel"); + String version = bb.getPropValue("PORTAL_INFO","version"); + String triggerTime =sdf.format(new Date()); + + // { +// "request":{ +// "eventCode":"", +// "transId":"", +// "triggerTime":"20221020094013", +// "notificationType":"EMAIL", +// "email":"798989044@qq.com", +// "channel":"OA", +// "notificationSubject":"新待办到达", +// "notificationContent":"新待办到达,清及时处理" +// } +// } + + JSONObject requestJson = new JSONObject(); + requestJson.put("eventCode",eventCode); + requestJson.put("triggerTime",triggerTime); + requestJson.put("notificationType",notificationType); + requestJson.put("email",emails); + requestJson.put("channel",channel); + requestJson.put("notificationSubject",notificationSubject); + requestJson.put("notificationContent",notificationContent); + + try{ + String responseData = doGetAccessToken(); + String accessToken = "" ; + if(StringUtils.isNotEmpty(responseData)){ + JSONObject responseObject = JSONObject.parseObject(responseData); + if(responseObject.containsKey("resCode") && responseObject.containsKey("data")){ + String resCode = responseObject.getString("resCode"); + if("00000".equals(resCode)){ + JSONObject dataObject = responseObject.getJSONObject("data"); + if(dataObject.containsKey("accessToken")){ + accessToken = dataObject.getString("accessToken"); + } + } + } + } + + if(StringUtils.isNotEmpty(accessToken)){ + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("access_token",accessToken); + jsonObject.put("method",emailMethod); + jsonObject.put("version",version); + jsonObject.put("content",requestJson); +// "{\r\n \"access_token\": \"\",\r\n \"method\": \"sendNotification\",\r\n \"version\": \"1.0\",\r\n \"content\": {\"eventCode\":\"\", \r\n \"transId\":\"\", \r\n \"triggerTime\":\"20221020094013\",\r\n \"notificationType\":\"EMAIL\",\r\n \"email\":\"798989044@qq.com\", \r\n \"channel\":\"OA\", \r\n \"notificationSubject\":\"新待办到达\",\r\n \"notificationContent\":\"新待办到达,清及时处理\" }\r\n}" + + System.out.println(jsonObject.toJSONString()); + + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType,jsonObject.toJSONString()); + Request request = new Request.Builder() + .url(emailUrl) + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + Response response = client.newCall(request).execute(); + } + }catch (IOException e) { + e.printStackTrace(); + }catch (Exception e){ + + } + } + + + public String doGetAccessToken(){ + + String responseData = "" ; + BaseBean bb = new BaseBean(); + RSAUtils RSAUtils = new RSAUtils(); + + String tokenUrl = bb.getPropValue("","") ; //"http://10.26.4.136:80/api/oauth2/apigAuthorize" + String appCode = bb.getPropValue("","") ; + String appSecret = bb.getPropValue("","") ; + String responseType = bb.getPropValue("","") ; //token + String privateKey = bb.getPropValue("","") ; + + //String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCt49VVhOmTZVpWPK/bB/ZvpoxrpXt3c9h8DJtHq9vWLGPVMS0a2l+v4U+g8zFpq6Rb6G6nnJ+pYXmojygQhqKG6izWxEojdAF2znt6URsikGe1wRxUpUewRbZVse7Rs0jvJmGZeVZ08gC1iKogyHtHeRinnHJNxC4v/5yhkOBpR6oe4t2IutKNFhSmHdJP5bEkei5gWAZ4xi15pvcWBcUSVEQliW7qRTX9yQUdCq1KzCLEGYNfm27SzKvFpRUAXpgjfFftmB3u7pZ9qhAn/25b0h9sE90Xjwg/UNmLqxUerNNDbIrqWy0x6g/+2Q/c4OXKLk5FlkkEURoBINNDbYgdAgMBAAECggEAAsfZ6XwuoATG5QojZcVC05Y+OJp01vwrQhCRixvccBhVoFsg9YT4cr+PnmtFJwNvpWiaHGQMyZCdeWyQn3MHtlCYVvbcmKSKQXQb1WDmpi7Y+bcU1OWvt8nlmIk34HKVf/2FIgcmssgL6ts8nTmXfxUYp9WAnm28r1fPEWZXsFdGNilFxg6Vymct+5hfnXUA5OMm1RgSvYR/12F4aqILz7kjMBjkF4IJAJpRqR4WlU3vhJ3+FGLnOqnAKRE+rkn10LaKpfOrWY6chm6C2ddNVzGyYaDAqH+TK+9C8qLYZLjbyD8a5LlCU4xdHYbG4VoVpHz7Pop4XQWzOkP7zagvoQKBgQD1MT9K4Kt/Ms3pw/zbv0a3Wvt45OfszMHiVBYXE7Fhp11zqK6wyTUU8ePLO3XxS5GbQwBRlfYhI2aF6nWxq2iphqemD5AqC03m0tJl4g2/q/+Mr0k7ClRJHV2cs80ij9aWdHcNlCW5G37ZXfjiQ9qkiIIr1RLngO59HAEP1ePZzwKBgQC1jgJeDpFRKDZ8SCYKowjnvMgPULZ97LDofS828hgwLSzSI+tOpHOrJnFgIC08JTVxYnB5gw3ybqvPLt9Tz+soledqayTynMwlpDz4WuoQw5mEPvURIqsxkrMFqYFcMLrBbIsyJFboKkfgLpTXlOFe6wv0oe0s37Sgz9IRMe/2UwKBgGQCGUnGR80TANAHg5xx8TsaXhXacAqzHaXeHEB/ZMtrA4AIXnB3MTKA0yPy9dFcvGAyvO+KFiFAGjInBqhYPNFgvgLKuEed4sFyXiT2RhtW4V4VpO3y8Zv84VDoOZSOTL2DdYfRVG2jHGM2pCxN9uFDWKzeNN6+RQg8ouY9nLkbAoGACme1IwbatTgEx2KrK3jkjcN4A8iwbM8f5HMoPZHqaPht1S1R0xQBvRFa9hNiBExtn63wnEYyim5lUl5xVjBYXd8ZgDPbzjvGR3H+PI2ZVJShO78P9Id0IEc0E2L/kvUH/wXlhF4ozO1/aQ3CYgiaUgJOkRqmqSe5Bm5ir7GY+xkCgYBkfmFhBI9m8AxljI3oJAGv43EGw2s6wZkrQXFBStYBSxTkkS9JHMbkNrKgKvsuzPLUCD0hmdTPREh/miO/0VNXZaa05L7xhgvakezI4f2BSY6tCMXHiBmnRXE8JL4+rEvWAKUaMCTynoyGRetl+JmooLZ5Fez1250hw5vWdSUudA=="; + //"{\"appCode\":\""+appCode+"\",\r\n\t\"appSecret\":\"9f5a519622a8790b\",\r\n\t\"responseType\":\"token\",\r\n\t\"timestamp\":\"1592212221795\",\r\n\t\"sign\":\"LE4MPesIy8BCxOa958cQxX0cW1ObvOfCn2dDUK6AzCukcvyS6EvFMLzSBFiCgcMT1w9cYAbSIOWL2SENvpC2qxXrgtWJd6B3J1dUmL5ZBtOEGZ6ymRz7IAQraA1TG82Y0ZTgVFhOGS/TtbTjdEhurwcclWdbSPEy6uZesoQpyF7MAW+hb5Y5ioqe1ky7RE15W/gwJDONgLifUoZnXhowjsJHBJ/xCwdfQi48/wu0CX+G46C+fSYHKncGbeeg7hFyaltNWsco0ScWLB/JjKA1qZv+pPFGaWGidfoTErq7Ux8fIYH3cRjRoSNknOcawi+zjy8GMBDjxIk9lX7+Oz1wYA==\"\r\n}" + + + String timestamp = System.currentTimeMillis() + ""; + try { + // 生成签名 + String sign = RSAUtils.generateSign("", appCode, appSecret, timestamp, privateKey); + + System.out.println("sign == " + sign); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("appCode",appCode); + jsonObject.put("appSecret",appSecret); + jsonObject.put("responseType",responseType); + jsonObject.put("timestamp",timestamp); + jsonObject.put("sign",timestamp); + System.out.println(jsonObject.toJSONString()); + + OkHttpClient client = new OkHttpClient().newBuilder().build(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, jsonObject.toJSONString()); + Request request = new Request.Builder() + .url(tokenUrl) + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + Response response = client.newCall(request).execute(); + bb.writeLog("response.code():"+response.code()); + bb.writeLog("response.body():"+response.body().string()); + responseData = response.body().string(); + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + return responseData; + } +}