You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haojing/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java

358 lines
15 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.customization.dito.sendtodo;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.constant.Constants;
import com.time.util.DateUtil;
import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.interfaces.dito.comInfo.PropBean;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
/**
* @Title
* @Author wangchaofa
* @CreateDate 2023/9/26
* @Version 1.0
* @Description
*/
public class SendPortalAtAddTodoCmd {
private Map<String,Object> params;
public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
public SendPortalAtAddTodoCmd(){
}
public SendPortalAtAddTodoCmd(Map<String,Object> params){
this.params=params;
}
public String getShortMessageTitle(String messageTitle) {
if (messageTitle.length() > 20) {
messageTitle = messageTitle.substring(0, 17) + "...";
}
return messageTitle;
}
/**
*
* @param username
* @param passwd
* @param portal_todourl
* @param bpm_workflowurl
* @param bpm_app_workflowurl
* @param bpm_app_requesturl
*/
public void sendTodoDataByNode(String requestid, List<Map<String,Object>> todolist, String username, String passwd, String center, String portal_todourl, String bpm_workflowurl, String bpm_app_workflowurl, String bpm_app_requesturl){
HttpRequestUtil httpRequestUtil = new HttpRequestUtil();
String zhjkbs = "com.customization.dito.sendtodo.SendPortalAtAddTodoCmd.sendTodoDataByNode";
String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl");
JSONObject requestObject = new JSONObject();
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
bb.writeLog("SendPortalAtAddTodoCmd--sendTodoDataByNode");
String terminal = "1" ;
String taskType = "0";
String actionType = "0" ;
try {
bb.writeLog("SendPortalAtAddTodoCmd sleep start");
Thread.sleep(2000);
bb.writeLog("sleep end ");
String sql = "";
String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss");
String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ;
String replace = bpm_app_workflowurl.replace("/bpm", "");
String urlDing = replace+bpm_app_requesturl+requestid;
String urlApp = replace+bpm_app_requesturl+requestid;
if(StringUtils.isNotEmpty(mobileJumpUrl)){
urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8");
urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8");
}
bb.writeLog("urlDing", urlDing);
String requestname = "" ;
String workflowname = "" ;
String nodeId = "" ;
String nodeName = "" ;
String lastName = "";
sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid"+
" 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 ) h2 on h2.id = t1.creater \n" +
" where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" +
" and t1.requestid = "+requestid ;
bb.writeLog("sendTodoDataByNode--sql2:"+sql);
rs.executeQuery(sql);
if (rs.next()){
requestname = Util.null2String(rs.getString("requestname")) ;
workflowname = Util.null2String(rs.getString("workflowname")) ;
nodeId = Util.null2String(rs.getString("nodeid")) ;
nodeName = Util.null2String(rs.getString("nodeName")) ;
lastName = Util.null2String(rs.getString("loginid")) ;
}
requestObject.put("center",center);
requestObject.put("title",requestname);
requestObject.put("creator",lastName);
// requestObject.put("taskCode","weaver"+requestid);
requestObject.put("taskType",taskType);
requestObject.put("actionType",actionType);
requestObject.put("createDate",processTime);
requestObject.put("messageTitle",getShortMessageTitle(requestname));
requestObject.put("messageContent",requestname);
requestObject.put("terminal",terminal);
requestObject.put("urlPc",urlPc);
requestObject.put("urlApp",urlApp);
requestObject.put("urlDing",urlDing);
requestObject.put("nodeName",nodeName);
requestObject.put("ticketType",workflowname);
JSONArray taskObjectList = new JSONArray();
for (Map<String,Object> todoMap: todolist){
bb.writeLog("================== SendPortalAtAddTodoCmd todoMap============== "+ todoMap);
JSONObject taskObject = new JSONObject();
JSONArray list = new JSONArray();
JSONObject requestObject2 = new JSONObject();
requestObject2.putAll(requestObject);
SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil();
requestObject2.put("nodeName",todoMap.get("nodename"));
requestObject2.put("nodeId",todoMap.get("nodeid"));
requestObject2.put("taskCode","weaver"+requestid+"_at_"+todoMap.get("id"));
String creator = (String) todoMap.get("loginid");
if("sysadmin".equals(creator)){
creator = "Admin";
}
taskObject.put("objectAction","0");
taskObject.put("objectType","0");
taskObject.put("objectCode",creator);
taskObject.put("objectId",todoMap.get("id"));
taskObject.put("operatorCode",creator);
list.add(taskObject);
requestObject2.put("messageTitle",getShortMessageTitle(requestname));
requestObject2.put("messageContent", requestname);
requestObject2.put("terminal", "1");
requestObject2.put("taskType", "1");
requestObject2.put("actionType", "0");
requestObject2.put("taskObjectList",list);
String auth = username + ":" + passwd;
bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject2.toJSONString());
String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, requestObject2.toJSONString(), auth);
bb.writeLog("SendPortalToReadUtil-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)) {
sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, (String) todoMap.get("id"),requestObject2.toJSONString(),resultCode,"",zhjkbs);
sendPortalErrorUtil.saveAtRyjb(requestid,nodeId,(String) todoMap.get("id"));
}else if ("TODO-FAIL-002".equals(resultCode)){
//The task does not exist.任务不存在,则新增
User user = new User();
user.setUid(Integer.valueOf(todoMap.get("id").toString()));
SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil();
sendPortalToReadUtil.sendToReadDataByCreateNode(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl);
}else{
String resultmsg = msgObject.getString("resultMsg");
sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, (String) todoMap.get("id"),requestObject2.toJSONString(),resultCode,resultmsg,zhjkbs);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 去除掉关于流程中@人员的所有门户待阅记录
* @param requestid
*/
public void dealPortalAtRyjl(String requestid){
RecordSet rs = new RecordSet();
String uf_table = "uf_lcatryjlb" ;
rs.executeQuery("select * from "+ uf_table +" where requestid=?",requestid);
String nodeid = "";
String userid = "";
while(rs.next()){
nodeid = Util.null2o(rs.getString("nodeid"));
userid = Util.null2o(rs.getString("userid"));
completePortalReadData(requestid,nodeid,userid);
}
}
/***
*
* @param requestid
* @param nodeid
* @param userid
*/
public String completePortalReadData(String requestid, String nodeid,String userid){
String resultCode = "" ;
String zhjkbs = "com.engine.dito.reqremark.cmd.AtRequestRemarkCmd.completePortalReadData";
HttpRequestUtil httpRequestUtil = new HttpRequestUtil();
SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil();
String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl");
String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl");
String portal_todourl = PropBean.getUfPropValue("portal_todourl");
String username = PropBean.getUfPropValue("username");
String passwd = PropBean.getUfPropValue("passwd");
String center = PropBean.getUfPropValue("center");
String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl");
String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl");
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
String actionType = "3" ;
String terminal = "1" ;
String taskType = "1"; //0 待办 1 –待阅
String objectAction = "0" ;
String objectType = "0";
String objectId = "" ;
JSONObject requestObject = new JSONObject();
try {
String workcode = "";
String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'";
rs.executeQuery(sql);
while (rs.next()) {
workcode = Util.null2String(rs.getString("loginid"));
}
String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid;
String replace = bpm_app_workflowurl.replace("/bpm", "");
String urlDing = replace+bpm_app_requesturl+requestid;
String urlApp = replace+bpm_app_requesturl+requestid;
if(StringUtils.isNotEmpty(mobileJumpUrl)){
urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8");
urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8");
}
String requestname = "";
String workflowname = "" ;
sql = " select t1.requestname,t3.workflowname\n" +
" from workflow_requestbase t1\n" +
" inner join workflow_base t3 on t1.workflowid = t3.id\n" +
" where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" +
" and t1.requestid = " + requestid;
rs.execute(sql);
if (rs.next()) {
workflowname = Util.null2String(rs.getString("workflowname")) ;
requestname = Util.null2String(rs.getString("requestname")) ;
}
String createdate = TimeUtil.getCurrentDateString();
String createtime = TimeUtil.getCurrentTimeString();
String nodename = getNodeName(nodeid);
requestObject.put("center",center);
requestObject.put("title",requestname);
requestObject.put("creator",workcode);
requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid);
requestObject.put("nodeId",nodeid);
requestObject.put("taskType",taskType);
requestObject.put("actionType",actionType);
requestObject.put("createDate",createdate+" "+createtime);
requestObject.put("messageTitle",requestname);
requestObject.put("messageContent",requestname);
requestObject.put("terminal",terminal);
requestObject.put("urlPc",urlPc);
requestObject.put("urlApp",urlApp);
requestObject.put("urlDing",urlDing);
requestObject.put("nodeName",getNodeName(nodeid));
requestObject.put("ticketType",workflowname);
JSONArray taskObjectList = new JSONArray();
JSONObject taskObject = new JSONObject();
String objectCode = workcode ;
String operatorCode = workcode ;
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 auth = username + ":" + passwd;
String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth);
bb.writeLog("msgdata:"+msgdata);
if(StringUtils.isNotEmpty(msgdata)){
JSONObject msgObject = JSONObject.parseObject(msgdata);
//{"resultCode":"1","resultMsg":"No Result"}
if(msgObject.containsKey("resultCode")){
resultCode = msgObject.getString("resultCode");
if(!"0".equals(resultCode)){
String resultmsg = msgObject.getString("resultMsg");
sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs);
}
}
}
} catch (Exception e) {
e.printStackTrace();
bb.writeLog(e);
}
return resultCode;
}
/***
*
* @param id
* @return
*/
private String getNodeName(String id){
RecordSet rs = new RecordSet();
String name = "";
rs.executeQuery(" select nodename from workflow_nodebase where id = ?",id);
while (rs.next()){
name = Util.null2String(rs.getString("nodename"));
}
return name;
}
}