diff --git a/src/weaver/interfaces/dito/action/RequestReamrkForceRecycle2PortalAction.java b/src/weaver/interfaces/dito/action/RequestReamrkForceRecycle2PortalAction.java new file mode 100755 index 00000000..2830234a --- /dev/null +++ b/src/weaver/interfaces/dito/action/RequestReamrkForceRecycle2PortalAction.java @@ -0,0 +1,171 @@ +package weaver.interfaces.dito.action; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.net.URLEncoder; +import java.util.Map; + +/** + * @author + * @date 2024/10/28 + * 强制回收处理节点的未处理的待阅数据 + */ +public class RequestReamrkForceRecycle2PortalAction implements Action { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + @Override + public String execute(RequestInfo requestInfo) { + BaseBean bb = new BaseBean(); + bb.writeLog("----RequestForceRecycle2PortalAction------"); + String requestid = requestInfo.getRequestid(); + + try{ + String resultCode = sendRemarkDoneDataByForceRecycle(requestid); + if(!"0".equals(resultCode)){ + requestInfo.getRequestManager().setMessageid("1000"); + requestInfo.getRequestManager().setMessagecontent("调用门户接口异常"); + return Action.FAILURE_AND_CONTINUE; + } + }catch (Exception e){ + requestInfo.getRequestManager().setMessageid("1000"); + requestInfo.getRequestManager().setMessagecontent("流程提交接口异常"); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } + + /*** + * 流程强制收回 + * @param requestid + */ + public String sendRemarkDoneDataByForceRecycle(String requestid){ + + String resultCode = "0"; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.action.RequestForceRecycle2PortalAction.sendTodoDataByForceRecycle" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + RecordSet rs = new RecordSet(); + + String message = "流程强制收回操作,完成未完成的抄送数据"; + BaseBean bb = new BaseBean(); + + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + String actionType = "3"; + try { + + 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"); + } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + JSONArray taskObjectList = new JSONArray(); + String sql = requestBaseInfoUtil.getRemark89Sql(requestid); + bb.writeLog("sendRemarkDoneDataByForceRecycle--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()) { + String loginid = rs.getString("loginid"); + String staffid = rs.getString("staffid"); + String userid = rs.getString("userid"); + + JSONObject taskObject = new JSONObject(); + taskObject.put("creator", loginid); + taskObject.put("staffid", staffid); + taskObject.put("userid", userid); + taskObjectList.add(taskObject); + } + bb.writeLog("sendRemarkDoneDataByForceRecycle-taskObjectList:"+taskObjectList.size()); + for(int i=0;i 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + +} diff --git a/src/weaver/interfaces/dito/action/SendRequest2CardAction.java b/src/weaver/interfaces/dito/action/SendRequest2CardAction.java new file mode 100644 index 00000000..9346aab3 --- /dev/null +++ b/src/weaver/interfaces/dito/action/SendRequest2CardAction.java @@ -0,0 +1,30 @@ +package weaver.interfaces.dito.action; + +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.card.SendRequestToCardUtil; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + + +/*** + * + */ +public class SendRequest2CardAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { +// String requestid = Util.null2String(requestInfo.getRequestManager().getRequestid()); +// +// User user = requestInfo.getRequestManager().getUser(); +// String nodeid = requestInfo.getRequestManager().getNodeid()+""; +// String workflowId = requestInfo.getRequestManager().getWorkflowid()+""; +// +// SendRequestToCardUtil sendRequestToCardUtil = new SendRequestToCardUtil(); +// sendRequestToCardUtil.sendRequestAtToCard(requestid,user, nodeid,workflowId); + + return Action.SUCCESS; + } +} + + diff --git a/src/weaver/interfaces/dito/archiving/RequestArchingCompleteForwardUtil.java b/src/weaver/interfaces/dito/archiving/RequestArchingCompleteForwardUtil.java new file mode 100644 index 00000000..070c3572 --- /dev/null +++ b/src/weaver/interfaces/dito/archiving/RequestArchingCompleteForwardUtil.java @@ -0,0 +1,155 @@ +package weaver.interfaces.dito.archiving; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +/*** + * + */ +public class RequestArchingCompleteForwardUtil { + + /*** + * 流程监控强制归档,完成流程所有转发数据的门户调用 + * + * @param list + */ + public void monitorCompleteRequestForward(List> list,String notes,User user){ + + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + monitorCompleteRequestForwardByUserId(requestid,userid,nodeid,workflowname,requestname,nodename,notes,creater); + } + } + } + + + /*** + * 完成 转发 数据 + * @param requestid + * @param userid + * @param nodeid + * @param workflowname + * @param requestname + * @param nodename + */ + private void monitorCompleteRequestForwardByUserId(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes,String creater){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestid:"+requestid); + + String zhjkbs = "weaver.interfaces.dito.archiving.RequestArchingCompleteForwardUtil.monitorCompleteRequestForwardByUserId" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + RecordSet rs = new RecordSet(); + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + try { + + 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"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",creater); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + + + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowForwardByUserId-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * + * @param messageTitle + * @return + */ + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } +} + + diff --git a/src/weaver/interfaces/dito/archiving/RequestArchingCompleteRemark89Util.java b/src/weaver/interfaces/dito/archiving/RequestArchingCompleteRemark89Util.java new file mode 100644 index 00000000..9679f550 --- /dev/null +++ b/src/weaver/interfaces/dito/archiving/RequestArchingCompleteRemark89Util.java @@ -0,0 +1,151 @@ +package weaver.interfaces.dito.archiving; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +/*** + * + */ +public class RequestArchingCompleteRemark89Util { + /** + * 流程监控强制归档,完成流程所有未完成的抄送数据的门户调用 + * + * @param list + */ + public void monitorCompleteRequestRemark89(List> list, String notes,User user){ + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + bb.writeLog("monitorCompleteRequestRemark89-userid:"+userid); + bb.writeLog("monitorCompleteRequestRemark89-nodeid:"+nodeid); + bb.writeLog("monitorCompleteRequestRemark89-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid) && StringUtils.isNotBlank(nodeid)){ + monitorCompleteRequestRemark89ByUserid(requestid,userid,nodeid,workflowname,requestname,nodename,notes,creater); + } + } + } + + + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + */ + private void monitorCompleteRequestRemark89ByUserid(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes,String creater){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorCompleteWorkflowCopyToByUserid-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.archiving.RequestArchingCompleteRemark89Util.monitorCompleteRequestRemark89ByUserid" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + RecordSet rs = new RecordSet(); + + try { + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",creater); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /*** + * + * @param messageTitle + * @return + */ + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } +} + + diff --git a/src/weaver/interfaces/dito/archiving/RequestArchingSendPortalUtil.java b/src/weaver/interfaces/dito/archiving/RequestArchingSendPortalUtil.java new file mode 100644 index 00000000..c32f9a5c --- /dev/null +++ b/src/weaver/interfaces/dito/archiving/RequestArchingSendPortalUtil.java @@ -0,0 +1,380 @@ +package weaver.interfaces.dito.archiving; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.engine.core.context.Context; +import com.engine.workflowDesign.cmd.autoForecast.GetSimpleModeDataCmd; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; + +/*** + * + */ +public class RequestArchingSendPortalUtil { + + RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + /*** + * 流程智能预测 + * @param requestids + * @param user + */ + public void doSimpleModeDataByMonitor(String requestids,User user){ + if(StringUtils.isNotBlank(requestids)) { + String[] lcids = requestids.split(","); + for (int i = 0; i < lcids.length; i++) { + String requestid = lcids[i]; + doSimpleModeDataByMonitor2Requestid(requestid,user); + } + } + } + + /*** + * + * @param requestid + * @param user + */ + public void doSimpleModeDataByMonitor2Requestid(String requestid,User user){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + String workflowid = "" ; + if(StringUtils.isNotBlank(requestid)){ + String sql = " select workflowid from workflow_requestbase where requestid = "+requestid ; + rs.executeQuery(sql); + if(rs.next()){ + workflowid = Util.null2String(rs.getString("workflowid")) ; + } + bb.writeLog("doSimpleModeDataByMonitor2Requestid:"+workflowid); + if(StringUtils.isNotBlank(workflowid)){ + Map params = new HashMap(); + params.put("requestid",requestid); + params.put("workflowid",workflowid); + params.put("resetForecast","1"); + + bb.writeLog("调用智能预测"); + new GetSimpleModeDataCmd(params,user).execute(Context.getCommandComtext()); + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("e:"+e.getMessage()); + } + } + + + + /*** + * 流程强制归档 + */ + public void monitorArchived(String requestid,String userid){ + monitorArchivedByTodo(requestid,userid); +// monitorArchivedByToRead(requestid,userid); + } + + /*** + * 强制归档后,处理待办,推送到门户的todo + * @param requestids + */ + public void monitorArchivedByTodo(String requestids,String currentUserId){ + BaseBean bb = new BaseBean(); + if(StringUtils.isNotBlank(requestids)){ + String[] lcids = requestids.split(","); + for(int i=0;i baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("monitorArchivedByTodo4Requestid---requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + + 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,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + /*** + * 强制归档后,处理抄送人员,推送到门户的toread + * @param requestids + */ +// public void monitorArchivedByToRead(String requestids,String currentUserId){ +// +// BaseBean bb = new BaseBean(); +// bb.writeLog("monitorArchivedByToRead"); +// +// if(StringUtils.isNotBlank(requestids)) { +// String[] lcids = requestids.split(","); +// for (int i = 0; i < lcids.length; i++) { +// String requestid = lcids[i]; +// monitorArchivedByToRead4Rquestid(requestid,currentUserId); +// } +// } +// } + + + /*** + * 强制归档后,处理抄送人员,推送到门户的toread + * @param requestid + * @param currentUserId + */ +// public void monitorArchivedByToRead4Rquestid(String requestid,String currentUserId){ +// +// String portal_todourl = Constants.portal_todourl; +// String bpm_app_workflowurl = Constants.bpm_app_workflowurl; +// String username = Constants.username; +// String passwd = Constants.passwd; +// String bpm_workflowurl = Constants.bpm_workflowurl; +// String center = Constants.center; +// String bpm_app_requesturl = Constants.bpm_app_requesturl; +// +// String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorArchivedByToRead4Rquestid" ; +// +// SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); +// HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); +// String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); +// +// RecordSet rs = new RecordSet(); +// BaseBean bb = new BaseBean(); +// bb.writeLog("monitorArchivedByToRead4Rquestid"); +// String terminal = "1" ; +// String taskType = "1"; +// String actionType = "0" ; +// String objectAction = "0"; +// String objectType = "0" ; +// try { +// +// String cus_staff = PropBean.getUfPropValue("cus_staff") ; +// String scopeid = "-1"; +// String scope = "HrmCustomFieldByInfoType" ; +// +// 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"); +// } +// +// Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); +// String currentNodeId = baseMap.get("currentnodeid"); +// String currentNodeName = baseMap.get("currentnodeid"); +// String workflowname = baseMap.get("workflowname"); +// String createrLoginId = baseMap.get("createrloginid"); +// String createrLastName = baseMap.get("createrusername"); +// String requestname = baseMap.get("requestname"); +// String currentnodetype = baseMap.get("currentnodetype"); +// bb.writeLog("currentnodetype:"+currentnodetype); +// +// if("3".equals(currentnodetype)){ +// +// JSONArray taskObjectList = new JSONArray(); +// +// String sql = " select t2.id as userid,c1."+cus_staff+" as staffid,h1.loginid \n" + +// " from ( select distinct id from workflow_forecastOperator t1 where t1.requestid = "+requestid+" and t1.nodeid ="+currentNodeId+" and t1.operateType in(-3,-4) ) t2 " + +// " left join cus_fielddata c1 on c1.id = t2.id and c1.scopeid="+scopeid+" and c1.scope = '"+scope+"' \n" + +// " left join (select id,lastname,loginid,email from hrmresource union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.id \n" ; +// +// bb.writeLog("monitorArchivedByToRead4Rquestid-sql:"+sql); +// rs.executeQuery(sql); +// while (rs.next()) { +// String creator = rs.getString("loginid"); +// String staffid = rs.getString("staffid"); +// String userid = rs.getString("userid"); +// +// JSONObject taskObject = new JSONObject(); +// taskObject.put("staffid", staffid); +// taskObject.put("creator",creator); +// taskObject.put("userid", userid); +// taskObjectList.add(taskObject); +// } +// +// for(int i=0;i 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + +} + + diff --git a/src/weaver/interfaces/dito/archiving/RequestArchvingQueryUtil.java b/src/weaver/interfaces/dito/archiving/RequestArchvingQueryUtil.java new file mode 100644 index 00000000..0c5c90e1 --- /dev/null +++ b/src/weaver/interfaces/dito/archiving/RequestArchvingQueryUtil.java @@ -0,0 +1,157 @@ +package weaver.interfaces.dito.archiving; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RequestArchvingQueryUtil { + + /*** + * 流程强制归档,查询流程的待办是数据 + * + * + * @param requestids + * @return + */ + public Map queryRequestNodeIdByArchving(String requestids){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + Map dataMap = new HashMap(); + try{ + String sql =" select requestid,currentnodeid from workflow_requestbase where requestid in("+requestids+") "; + bb.writeLog("queryRequestNodeIdByArchving-sql:"+sql); + rs.execute(sql); + while (rs.next()){ + String requestid = Util.null2String(rs.getString("requestid")); + String currentnodeid = Util.null2String(rs.getString("currentnodeid")); + dataMap.put(requestid,currentnodeid); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkByArchving-e:"+e); + } + return dataMap; + + } + + + /** + * 流程强制归档,查询流程所有未完成的抄送数据 + * + * @param requestids + * @return + */ + public List> queryWorkflowRemarkByRequestid(String requestids,Map nodeMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> list = new ArrayList>(); + String[] requestArray = requestids.split(","); + for(int i = 0;i 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8,9)\n" + + " and t.requestid in("+requestid +") and t.nodeid in("+currentnodeid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + } + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + return list; + } + + + /*** + * 流程强制归档,查询流程所有转发的数据 + * + * + * @param requestids + * @return + */ + public List> queryWorkflowForwardByRequestid(String requestids,Map nodeMap){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + List> list = new ArrayList>(); + + String[] requestArray = requestids.split(","); + for(int i = 0;i 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark = 1 \n" + + " and t.requestid in("+requestid +") and t.nodeid in("+currentnodeid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + bb.writeLog("queryWorkflowForwardByRequestid-list:"+list.size()); + } + } + return list; + } + +} diff --git a/src/weaver/interfaces/dito/card/SendRemarkToCardUtil.java b/src/weaver/interfaces/dito/card/SendRemarkToCardUtil.java new file mode 100644 index 00000000..38ecffa2 --- /dev/null +++ b/src/weaver/interfaces/dito/card/SendRemarkToCardUtil.java @@ -0,0 +1,593 @@ +package weaver.interfaces.dito.card; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.CardInfo; +import com.customization.wfTodoCard.ContentInfo; +import com.customization.wfTodoCard.TitleInfo; +import com.customization.wfTodoCard.ViewDetail; +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.customization.wfTodoCard.service.TodoCardService; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.*; + +public class SendRemarkToCardUtil { + + String oaAuthKey = new BaseBean().getPropValue("workflowTodoCard", "oaAuthKey"); + + public void sendRequestRemarkToCard(String requestId, String workflowId, String remark, User user){ + SendRequestToCardUtil sendRequestToCardUtil = new SendRequestToCardUtil(); + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + try{ + + String isMessageRemind = ""; + String sql1 = "select id,WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + bb.writeLog("sendRequestRemarkToCard-sql1:"+sql1); + rs.executeQuery(sql1); + if(rs.next()){ + isMessageRemind = rs.getString("isMessageRemind"); + } + bb.writeLog("sendRequestRemarkToCard-isMessageRemind:"+isMessageRemind); + + if("1".equals(isMessageRemind)){ + bb.writeLog("sendRequestRemarkToCard-remark:"+remark); + List result = new ArrayList(); + String title = ""; + if(StringUtils.isNotBlank(remark)){ + Document doc = Jsoup.parse(remark); + // 选择所有包含 atsome - uid 属性的元素 + Elements uidElements = doc.select("[atsome-uid]"); + Iterator uidIt = uidElements.iterator(); + while(uidIt.hasNext()) { + Element element = uidIt.next(); + String atsomeUid = element.attr("atsome-uid"); + if(!result.contains(atsomeUid)){ + result.add(atsomeUid); + } + } + + Elements pElements = doc.select("p"); + Iterator pIt = pElements.iterator(); + while(pIt.hasNext()) { + Element element = pIt.next(); + title += element.text(); + } + } + bb.writeLog("sendRequestRemarkToCard-title1:"+title); + if(StringUtils.isNotBlank(title)){ + title = StringEscapeUtils.unescapeHtml4(title); + } + bb.writeLog("sendRequestRemarkToCard-title2:"+title); + if(result.size() > 0){ + for(int i= 0;i>>>>"); + + String icon = ""; + String isMessageRemind = ""; + String sql1 = "select id,WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + bb.writeLog("sendDefaultByCmd-sql1:"+sql1); + rd.executeQuery(sql1); + if(rd.next()){ + icon = rd.getString("icon"); + isMessageRemind = rd.getString("isMessageRemind"); + } + + bb.writeLog("sendDefaultByCmd-icon:"+icon); + bb.writeLog("sendDefaultByCmd-isMessageRemind:"+isMessageRemind); + + String requestName = ""; + String createDate = ""; + String createTime = ""; + if ("1".equals(isMessageRemind)) { + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestId + "'"); + if (rd.next()) { + requestName = rd.getString("REQUESTNAME"); + createDate = rd.getString("CREATEDATE"); + createTime = rd.getString("CREATETIME"); + } + } + + bb.writeLog("sendDefaultByCmd-requestName:"+requestName); + bb.writeLog("sendDefaultByCmd-createDate:"+createDate); + bb.writeLog("sendDefaultByCmd-createTime:"+createTime); + + JSONArray callAuth = new JSONArray(); + callAuth.add((new JSONObject()) + .fluentPut("name", "weaver_userid").fluentPut("value", receiverId)); + callAuth.add((new JSONObject()) + .fluentPut("name", "usertoken").fluentPut("value", oaAuthKey)); + callAuth.add((new JSONObject()) + .fluentPut("name", "weaver_usertype").fluentPut("value", logintype)); + callAuth.add((new JSONObject()) + .fluentPut("name", "weaver_userlanguage").fluentPut("value", language)); + + doAtSend(requestName, icon, null, workflowId,requestId,language,createDate,createTime,workcode,expandMsg); + } + + +// public void copySendNeedSubmit(String requestname,String requestid,String nodeid){ +// RecordSet rs = new RecordSet(); +// +// String workflowId = ""; +// String userid = ""; +// String requestName = ""; +// String createtime = ""; +// String createdate = ""; +// +// String sql = "select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"; +// rs.executeQuery(sql); +// if(rs.next()){ +// workflowId = rs.getString("WORKFLOWID"); +// userid = rs.getString("CREATER"); +// requestName = rs.getString("REQUESTNAME"); +// createtime = rs.getString("CREATETIME"); +// createdate = rs.getString("CREATEDATE"); +// } +// +// String isMessageRemind = ""; +// String icon = ""; +// String messageRemindScope = ""; +// if(StringUtils.isNotBlank(workflowId)){ +// sql = "select id, WORKFLOWNAME, messageRemindScope, isMessageRemind,icon from workflow_base where id=?" ; +// rs.executeQuery(sql, new Object[] { workflowId }); +// if(rs.next()){ +// isMessageRemind = rs.getString("isMessageRemind"); +// icon = rs.getString("icon"); +// messageRemindScope = rs.getString("messageRemindScope"); +// } +// } +// +// String ifMr = ""; +// String mainid = ""; +// if("1".equals(isMessageRemind)){ +// sql = "select id, workflowid, nodeid, sfmr from uf_wftodocontent where workflowid =" + workflowId + " and nodeid =" + nodeid ; +// rs.executeQuery(sql); +// if (rs.next()) { +// mainid = rs.getString("id"); +// ifMr = rs.getString("sfmr"); +// } +// }else{ +// ifMr = "1"; +// } +// if ("1".equals(ifMr)) { +// sql = "select id from uf_wftodocontent where workflowid = '" + workflowId + "' and nodeid ='0'"; +// rs.executeQuery(sql); +// if (rs.next()) { +// mainid = rs.getString("id"); +// } +// } +// +// List filedNameList = new ArrayList<>(); +// sql = "select fieldname from uf_wftodocontent_dt1 where mainid = '" + mainid + "' and selected =1 order by sort asc" ; +// rs.executeQuery(sql); +// while (rs.next()) { +// String fieldname = rs.getString("fieldname"); +// if (!fieldname.startsWith("sys_")){ +// filedNameList.add(fieldname); +// } +// } +// +// JSONArray callAuth = new JSONArray(); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "weaver_userid").fluentPut("value", receiverId)); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "usertoken").fluentPut("value", this.oaAuthKey)); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "weaver_usertype").fluentPut("value", (logintype == null) ? "1" : logintype)); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "weaver_userlanguage").fluentPut("value", language)); +// String callAuthStr = callAuth.toJSONString(); +// +// +// } + + public void doAtSend(String requestname,String icon, List fieldNameList,String workflowId,String requestId,String language,String CreateDate,String CreateTime,String WorkCode,String expandMsg){ + BaseBean bb = new BaseBean(); + bb.writeLog("doAtSend--requestname:"+requestname); + bb.writeLog("doAtSend-expandMsg: " + expandMsg); + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname,workflowId,requestId,language); + bb.writeLog("doAtSend-cardJsonArray:"+cardJsonArray.toJSONString()); + Map sendUserMap = getRequestCreator(requestId); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", CreateDate + " " + CreateTime) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + bb.writeLog("doAtSend-casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, requestId); + + if (StringUtils.isNotBlank(expandMsg)) { + expandMsg = expandMsg.replace(" ", " "); + bb.writeLog("doAtSend-expandMsg2: " + expandMsg); + cardInfo.setExpandMsg(expandMsg); + } + + bb.writeLog("doAtSend-cardInfo :: " + cardInfo.toString()); + + String uid = UUID.randomUUID().toString(); + String message = TodoCardService.createTodoCard(sendUserMap.get("code"),WorkCode, 1, uid, cardInfo); + bb.writeLog("doAtSend-message:"+message); + + } + + + public CardInfo baseCardInfo(String requestName,String color, String icon, String cardData, String requestid){ + RecordSet recordSet = new RecordSet(); + + // 卡片标题替换成流程标题 + recordSet.executeQuery("select a.WORKFLOWNAME from workflow_base a left join workflow_requestbase b on a.id=b.WORKFLOWID where b.REQUESTID ="+requestid); + if (recordSet.next()){ + requestName = Util.null2String(recordSet.getString("WORKFLOWNAME")); + } + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(requestName); + titleInfo.setColor(null==color || "".equals(color)?"#F4F5F7":color); + titleInfo.setIconName(icon); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("keyInfo"); + contentInfo.setOrder(1); + contentInfo.setData(cardData); + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + recordSet.executeQuery("select pcxqdz, appxqdz from uf_cardifno_conf"); // 配置跳转地址 + if (recordSet.next()){ + ViewDetail viewDetail = new ViewDetail(); + String detailPcUrl = Util.null2String(recordSet.getString("pcxqdz")); + String detailAppUrl = Util.null2String(recordSet.getString("appxqdz")); + if (!"".equals(detailPcUrl)){ + viewDetail.setPcUrl(detailPcUrl + requestid); + } + if (!"".equals(detailAppUrl)){ + viewDetail.setAppUrl(detailAppUrl + requestid); + } + viewDetail.setOpenMethod("H5"); + + cardInfo.setViewDetailInfo(viewDetail); + } + + return cardInfo; + } + + + private Map getRequestCreator(String requestid) { + Map map = new HashMap(); + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select h.LASTNAME, h.WORKCODE from workflow_requestbase a left join hrmresource h on h.id=a.CREATER where a.requestid = " + requestid, new Object[0]); + if (recordSet.next()) { + map.put("name", recordSet.getString("LASTNAME")); + map.put("code", recordSet.getString("WORKCODE")); + } + return map; + } + + + // 卡片通用参数 + private JSONArray getCardParam(List filedNameList,String requestName,String workflowId,String requestId,String language){ + BaseBean bb = new BaseBean(); + bb.writeLog(">>>> get param :"+requestName); + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + // 参数存储 + Map paramMap = new HashMap<>(); + RecordSet rd = new RecordSet(); + Integer billid=0; // 表单id + if (null != filedNameList && filedNameList.size() > 0) { + + String queryTablesql = "select TABLENAME,b.id billid from workflow_base a inner join workflow_bill b on a.FORMID =b.ID where a.id = '" + workflowId+ "'"; + rd.executeQuery(queryTablesql); + String tablename = ""; + if (rd.next()) { + tablename = rd.getString("TABLENAME"); + billid = rd.getInt("billid"); + + String selectSql = String.join(",", filedNameList); + String querySql = "select " + selectSql + " from " + tablename + " where requestid = '" + requestId + "'"; + rd.executeQuery(querySql); + if (rd.next()) { + for (String tempname : filedNameList) { + paramMap.put(tempname, Util.null2String(rd.getString(tempname))); + } + } + } + + String sqlSelectLabel="select wb.FIELDNAME, hb.LABELNAME " + + "from workflow_billfield wb left join htmllabelinfo hb on hb.INDEXID = wb.FIELDLABEL " + + "where wb.BILLID = ? and hb.languageid=?"; + + RecordSet queryLabel=new RecordSet(); + queryLabel.executeQuery(sqlSelectLabel,billid, language); + + Map labelMap = new HashMap<>(); + while (queryLabel.next()){ + String fieldname = queryLabel.getString("FIELDNAME"); + String labelname = queryLabel.getString("LABELNAME"); + labelMap.put(fieldname,labelname); + } + + Map> selectItemMap = mapSelectItem(billid); // 选择框选项 + Map liulanMap = mapLiuLan(billid); // 浏览按钮 + Map commonLiuLanMap = mapCommonLiuLan(billid); // 浏览按钮 + Set checkSet = getCheckFieldName(billid); // check字段 + Set fileFieldSet = getFileFieldSet(billid); // 文件字段 + + bb.writeLog("》》》 select item >> "+ JSON.toJSONString(selectItemMap)); + bb.writeLog("》》》 liulanMap >> "+ JSON.toJSONString(liulanMap)); + + for (String tempname : filedNameList) { + String labelName = labelMap.getOrDefault(tempname,tempname); + String value = paramMap.getOrDefault(tempname, ""); + if (!"".equals(value)){ + bb.writeLog(">>> for tempname >> "+tempname); + + if (selectItemMap.containsKey(tempname)){ // 选择框 + bb.writeLog("select item >> "+tempname+" >> "+value); + Map selectItem = selectItemMap.get(tempname); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + for (String tempValue : valueArray){ + String tempValueName = selectItem.getOrDefault(tempValue,tempValue); + valueList.add(tempValueName); + } + bb.writeLog("> select item >> "+tempname+" >> "+valueList); + value = String.join(", ",valueList); + + } else if (checkSet.contains(tempname)){ // check字段 + bb.writeLog("checkSet >> "+tempname+" >> "+value); + value= "1".equals(value) ? "Yes" : "No"; + + } else if (fileFieldSet.contains(tempname)){ // 附件字段 + bb.writeLog("fileFieldSet >> "+tempname+" >> "+value); + List fileList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + queryTemp.executeQuery("select IMAGEFILENAME from docimagefile where docid in ("+value+")"); + while (queryTemp.next()){ + String tempValueName = queryTemp.getString("IMAGEFILENAME"); + fileList.add(tempValueName); + } + value = String.join(", ",fileList); + + } else if (liulanMap.containsKey(tempname)){ //自定义浏览框 + String searchById = liulanMap.get(tempname); + bb.writeLog("liulanMap >> "+tempname+" >> "+searchById); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + + for (String tempValue : valueArray){ + bb.writeLog("liulanMap >> "+tempname+" >> "+searchById+" >> "+tempValue); + queryTemp.executeQuery(searchById,tempValue); + if (queryTemp.next()){ + String tempValueName = queryTemp.getString(1); + bb.writeLog("query reuslt "); + valueList.add(tempValueName); + }else { + bb.writeLog("query reuslt null"); + } + } + value = String.join(", ",valueList); + + } else if (commonLiuLanMap.containsKey(tempname)){ // 公共浏览框类型 + String fieldType = commonLiuLanMap.get(tempname); + bb.writeLog("commonLiuLanMap >> "+tempname+" >> "+fieldType + " >>value= "+value); + + RecordSet queryTemp = new RecordSet(); + + switch (fieldType){ + case "1": // 单选人力 + queryTemp.executeQuery("select LASTNAME from hrmresource h where id =?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("LASTNAME")); + } + break; + + case "17": // 多选人力 + queryTemp.executeQuery("select LASTNAME from hrmresource h where id in ("+value+")"); + List valueList = new ArrayList<>(); + while (queryTemp.next()){ + valueList.add(Util.null2String(queryTemp.getString("LASTNAME"))); + } + bb.writeLog("user list >> "+ JSON.toJSONString(valueList)); + value = String.join(", ",valueList); + break; + + case "4": // 单选部门 + queryTemp.executeQuery("select DEPARTMENTNAME from hrmdepartment where id=?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("DEPARTMENTNAME")); + } + break; + + case "57": // 多选部门 + queryTemp.executeQuery("select DEPARTMENTNAME from hrmdepartment where id in ("+value+")"); + List valueList2 = new ArrayList<>(); + while (queryTemp.next()){ + valueList2.add(Util.null2String(queryTemp.getString("DEPARTMENTNAME"))); + } + bb.writeLog("dep lis is >> "+ JSON.toJSONString(valueList2)); + value = String.join(", ",valueList2); + break; + + case "16": // 单选流程 + queryTemp.executeQuery("select REQUESTNAME from workflow_requestbase where REQUESTID =?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("REQUESTNAME")); + } + break; + + case "152": // 多选流程 + queryTemp.executeQuery("select REQUESTNAME from workflow_requestbase where REQUESTID in ("+value+")"); + List valueList3 = new ArrayList<>(); + while (queryTemp.next()){ + valueList3.add(Util.null2String(queryTemp.getString("REQUESTNAME"))); + } + bb.writeLog("request list >> "+ JSON.toJSONString(valueList3)); + value = String.join(", ",valueList3); + break; + } + + } else { + value = value.replace(" ", " "); + value = value.replace("
", " "); + } + } + cardJsonArray.add( + new JSONObject().fluentPut("name", labelName).fluentPut("value", value) + ); + } + } + return cardJsonArray; + } + + + // 选择框选项数据 + private Map> mapSelectItem(Integer billid){ + RecordSet query = new RecordSet(); + query.executeQuery("select a.FIELDNAME , b.SELECTVALUE , b.SELECTNAME from workflow_billfield a left join workflow_selectitem b on a.id=b.FIELDID where a.billid=? and a.fieldhtmltype=5 order by a.id",billid); + Map> map = new HashMap<>(); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String selectvalue = query.getString("SELECTVALUE"); + String selectname = query.getString("SELECTNAME"); + if (map.containsKey(fieldname)){ + map.get(fieldname).put(selectvalue,selectname); + }else{ + Map tempMap = new HashMap<>(); + tempMap.put(selectvalue,selectname); + map.put(fieldname,tempMap); + } + } + return map; + } + + // 勾选框字段名 + private Set getCheckFieldName(Integer billid){ + Set set = new HashSet<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME from workflow_billfield where BILLID =? and FIELDHTMLTYPE=4",billid); + while (query.next()){ + set.add(query.getString("FIELDNAME")); + } + return set; + } + + // 附件选择 + private Set getFileFieldSet(Integer billid){ + Set set = new HashSet<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME from workflow_billfield where BILLID =? and FIELDHTMLTYPE=6",billid); + while (query.next()){ + set.add(query.getString("FIELDNAME")); + } + return set; + } + + // 浏览按钮 + private Map mapLiuLan(Integer billid){ + RecordSet query = new RecordSet(); + Map map = new HashMap<>(); + query.executeQuery("select FIELDNAME, FIELDDBTYPE from workflow_billfield where BILLID =? and FIELDDBTYPE like 'browser.%'",billid); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String fielddbtpye = query.getString("FIELDDBTYPE"); + String showname = fielddbtpye.substring(8); + RecordSet query2 = new RecordSet(); + query2.executeQuery("select searchById from mode_browser where showname =?",showname); + if (query2.next()){ + String searchById = query2.getString("searchById"); + map.put(fieldname,searchById); + } + } + return map; + } + + // 公共浏览框类型 + private Map mapCommonLiuLan(Integer billid){ + Map map = new HashMap<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME, type from workflow_billfield wb where FIELDHTMLTYPE=3 and BILLID = ?",billid); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String fielddbtpye = query.getString("type"); + map.put(fieldname,fielddbtpye); + } + return map; + } + +} diff --git a/src/weaver/interfaces/dito/card/SendRequestToCardUtil.java b/src/weaver/interfaces/dito/card/SendRequestToCardUtil.java new file mode 100644 index 00000000..2ecfbd63 --- /dev/null +++ b/src/weaver/interfaces/dito/card/SendRequestToCardUtil.java @@ -0,0 +1,564 @@ +package weaver.interfaces.dito.card; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.*; +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.customization.wfTodoCard.service.TodoCardService; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import java.util.*; + +public class SendRequestToCardUtil { + + String oaAuthKey = new BaseBean().getPropValue("workflowTodoCard", "oaAuthKey"); + + public void sendRequestAtToCard(String requestId, User user, String nodeid,String workflowId,String remark){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + try{ + bb.writeLog("SendRequestToCardUtil-remark:"+remark); + List result = new ArrayList(); + String title = ""; + if(StringUtils.isNotBlank(remark)){ + Document doc = Jsoup.parse(remark); + // 选择所有包含 atsome - uid 属性的元素 + Elements uidElements = doc.select("[atsome-uid]"); + Iterator uidIt = uidElements.iterator(); + while(uidIt.hasNext()) { + Element element = uidIt.next(); + String atsomeUid = element.attr("atsome-uid"); + if(!result.contains(atsomeUid)){ + result.add(atsomeUid); + } + } + + Elements pElements = doc.select("p"); + Iterator pIt = pElements.iterator(); + while(pIt.hasNext()) { + Element element = pIt.next(); + title += element.text(); + } + } + + bb.writeLog("SendRequestToCardUtil-title1:"+title); + if(StringUtils.isNotBlank(title)){ + title = StringEscapeUtils.unescapeHtml4(title); + } + + bb.writeLog("SendRequestToCardUtil-title2:"+title); + + if(result.size() > 0){ + for(int i= 0;i>>>>"); + + String icon = ""; + String sql1 = "select id,WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + bb.writeLog("sendRequestAtToCard-sql1:"+sql1); + rd.executeQuery(sql1); + if(rd.next()){ + icon = rd.getString("icon"); + } + + bb.writeLog("sendRequestAtToCard-icon:"+icon); + + String requestName = ""; + String createDate = ""; + String createTime = ""; + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestId + "'"); + if (rd.next()) { + requestName = rd.getString("REQUESTNAME"); + createDate = rd.getString("CREATEDATE"); + createTime = rd.getString("CREATETIME"); + } + + bb.writeLog("sendRequestAtToCard-requestName:"+requestName); + bb.writeLog("sendRequestAtToCard-createDate:"+createDate); + bb.writeLog("sendRequestAtToCard-createTime:"+createTime); + + JSONArray callAuth = new JSONArray(); + callAuth.add((new JSONObject()) + .fluentPut("name", "weaver_userid").fluentPut("value", receiverId)); + callAuth.add((new JSONObject()) + .fluentPut("name", "usertoken").fluentPut("value", oaAuthKey)); + callAuth.add((new JSONObject()) + .fluentPut("name", "weaver_usertype").fluentPut("value", logintype)); + callAuth.add((new JSONObject()) + .fluentPut("name", "weaver_userlanguage").fluentPut("value", language)); + + doAtSend(requestName, icon, null, workflowId,requestId,language,createDate,createTime,workcode,expandMsg); + } + + +// public void copySendNeedSubmit(String requestname,String requestid,String nodeid){ +// RecordSet rs = new RecordSet(); +// +// String workflowId = ""; +// String userid = ""; +// String requestName = ""; +// String createtime = ""; +// String createdate = ""; +// +// String sql = "select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"; +// rs.executeQuery(sql); +// if(rs.next()){ +// workflowId = rs.getString("WORKFLOWID"); +// userid = rs.getString("CREATER"); +// requestName = rs.getString("REQUESTNAME"); +// createtime = rs.getString("CREATETIME"); +// createdate = rs.getString("CREATEDATE"); +// } +// +// String isMessageRemind = ""; +// String icon = ""; +// String messageRemindScope = ""; +// if(StringUtils.isNotBlank(workflowId)){ +// sql = "select id, WORKFLOWNAME, messageRemindScope, isMessageRemind,icon from workflow_base where id=?" ; +// rs.executeQuery(sql, new Object[] { workflowId }); +// if(rs.next()){ +// isMessageRemind = rs.getString("isMessageRemind"); +// icon = rs.getString("icon"); +// messageRemindScope = rs.getString("messageRemindScope"); +// } +// } +// +// String ifMr = ""; +// String mainid = ""; +// if("1".equals(isMessageRemind)){ +// sql = "select id, workflowid, nodeid, sfmr from uf_wftodocontent where workflowid =" + workflowId + " and nodeid =" + nodeid ; +// rs.executeQuery(sql); +// if (rs.next()) { +// mainid = rs.getString("id"); +// ifMr = rs.getString("sfmr"); +// } +// }else{ +// ifMr = "1"; +// } +// if ("1".equals(ifMr)) { +// sql = "select id from uf_wftodocontent where workflowid = '" + workflowId + "' and nodeid ='0'"; +// rs.executeQuery(sql); +// if (rs.next()) { +// mainid = rs.getString("id"); +// } +// } +// +// List filedNameList = new ArrayList<>(); +// sql = "select fieldname from uf_wftodocontent_dt1 where mainid = '" + mainid + "' and selected =1 order by sort asc" ; +// rs.executeQuery(sql); +// while (rs.next()) { +// String fieldname = rs.getString("fieldname"); +// if (!fieldname.startsWith("sys_")){ +// filedNameList.add(fieldname); +// } +// } +// +// JSONArray callAuth = new JSONArray(); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "weaver_userid").fluentPut("value", receiverId)); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "usertoken").fluentPut("value", this.oaAuthKey)); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "weaver_usertype").fluentPut("value", (logintype == null) ? "1" : logintype)); +// callAuth.add((new JSONObject()) +// .fluentPut("name", "weaver_userlanguage").fluentPut("value", language)); +// String callAuthStr = callAuth.toJSONString(); +// +// +// } + + public void doAtSend(String requestname,String icon, List fieldNameList,String workflowId,String requestId,String language,String CreateDate,String CreateTime,String WorkCode,String expandMsg){ + BaseBean bb = new BaseBean(); + bb.writeLog("doAtSend--requestname:"+requestname); + + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname,workflowId,requestId,language); + bb.writeLog("doAtSend-cardJsonArray:"+cardJsonArray.toJSONString()); + Map sendUserMap = getRequestCreator(requestId); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", CreateDate + " " + CreateTime) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + bb.writeLog("doAtSend casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, requestId); + + if (StringUtils.isNotBlank(expandMsg)) { + expandMsg = expandMsg.replace(" ", " "); + cardInfo.setExpandMsg(expandMsg); + } + + bb.writeLog("doAtSend cardInfo :: " + cardInfo.toString()); + + String uid = UUID.randomUUID().toString(); + String message = TodoCardService.createTodoCard(sendUserMap.get("code"),WorkCode, 1, uid, cardInfo); + bb.writeLog("message:"+message); + + } + + + public CardInfo baseCardInfo(String requestName,String color, String icon, String cardData, String requestid){ + RecordSet recordSet = new RecordSet(); + + // 卡片标题替换成流程标题 + recordSet.executeQuery("select a.WORKFLOWNAME from workflow_base a left join workflow_requestbase b on a.id=b.WORKFLOWID where b.REQUESTID ="+requestid); + if (recordSet.next()){ + requestName = Util.null2String(recordSet.getString("WORKFLOWNAME")); + } + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(requestName); + titleInfo.setColor(null==color || "".equals(color)?"#F4F5F7":color); + titleInfo.setIconName(icon); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("keyInfo"); + contentInfo.setOrder(1); + contentInfo.setData(cardData); + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + recordSet.executeQuery("select pcxqdz, appxqdz from uf_cardifno_conf"); // 配置跳转地址 + if (recordSet.next()){ + ViewDetail viewDetail = new ViewDetail(); + String detailPcUrl = Util.null2String(recordSet.getString("pcxqdz")); + String detailAppUrl = Util.null2String(recordSet.getString("appxqdz")); + if (!"".equals(detailPcUrl)){ + viewDetail.setPcUrl(detailPcUrl + requestid); + } + if (!"".equals(detailAppUrl)){ + viewDetail.setAppUrl(detailAppUrl + requestid); + } + viewDetail.setOpenMethod("H5"); + + cardInfo.setViewDetailInfo(viewDetail); + } + + return cardInfo; + } + + + private Map getRequestCreator(String requestid) { + Map map = new HashMap(); + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select h.LASTNAME, h.WORKCODE from workflow_requestbase a left join hrmresource h on h.id=a.CREATER where a.requestid = " + requestid, new Object[0]); + if (recordSet.next()) { + map.put("name", recordSet.getString("LASTNAME")); + map.put("code", recordSet.getString("WORKCODE")); + } + return map; + } + + + // 卡片通用参数 + private JSONArray getCardParam(List filedNameList,String requestName,String workflowId,String requestId,String language){ + BaseBean bb = new BaseBean(); + bb.writeLog(">>>> get param :"+requestName); + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + // 参数存储 + Map paramMap = new HashMap<>(); + RecordSet rd = new RecordSet(); + Integer billid=0; // 表单id + if (null != filedNameList && filedNameList.size() > 0) { + + String queryTablesql = "select TABLENAME,b.id billid from workflow_base a inner join workflow_bill b on a.FORMID =b.ID where a.id = '" + workflowId+ "'"; + rd.executeQuery(queryTablesql); + String tablename = ""; + if (rd.next()) { + tablename = rd.getString("TABLENAME"); + billid = rd.getInt("billid"); + + String selectSql = String.join(",", filedNameList); + String querySql = "select " + selectSql + " from " + tablename + " where requestid = '" + requestId + "'"; + rd.executeQuery(querySql); + if (rd.next()) { + for (String tempname : filedNameList) { + paramMap.put(tempname, Util.null2String(rd.getString(tempname))); + } + } + } + + String sqlSelectLabel="select wb.FIELDNAME, hb.LABELNAME " + + "from workflow_billfield wb left join htmllabelinfo hb on hb.INDEXID = wb.FIELDLABEL " + + "where wb.BILLID = ? and hb.languageid=?"; + + RecordSet queryLabel=new RecordSet(); + queryLabel.executeQuery(sqlSelectLabel,billid, language); + + Map labelMap = new HashMap<>(); + while (queryLabel.next()){ + String fieldname = queryLabel.getString("FIELDNAME"); + String labelname = queryLabel.getString("LABELNAME"); + labelMap.put(fieldname,labelname); + } + + Map> selectItemMap = mapSelectItem(billid); // 选择框选项 + Map liulanMap = mapLiuLan(billid); // 浏览按钮 + Map commonLiuLanMap = mapCommonLiuLan(billid); // 浏览按钮 + Set checkSet = getCheckFieldName(billid); // check字段 + Set fileFieldSet = getFileFieldSet(billid); // 文件字段 + + bb.writeLog("》》》 select item >> "+ JSON.toJSONString(selectItemMap)); + bb.writeLog("》》》 liulanMap >> "+ JSON.toJSONString(liulanMap)); + + for (String tempname : filedNameList) { + String labelName = labelMap.getOrDefault(tempname,tempname); + String value = paramMap.getOrDefault(tempname, ""); + if (!"".equals(value)){ + bb.writeLog(">>> for tempname >> "+tempname); + + if (selectItemMap.containsKey(tempname)){ // 选择框 + bb.writeLog("select item >> "+tempname+" >> "+value); + Map selectItem = selectItemMap.get(tempname); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + for (String tempValue : valueArray){ + String tempValueName = selectItem.getOrDefault(tempValue,tempValue); + valueList.add(tempValueName); + } + bb.writeLog("> select item >> "+tempname+" >> "+valueList); + value = String.join(", ",valueList); + + } else if (checkSet.contains(tempname)){ // check字段 + bb.writeLog("checkSet >> "+tempname+" >> "+value); + value= "1".equals(value) ? "Yes" : "No"; + + } else if (fileFieldSet.contains(tempname)){ // 附件字段 + bb.writeLog("fileFieldSet >> "+tempname+" >> "+value); + List fileList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + queryTemp.executeQuery("select IMAGEFILENAME from docimagefile where docid in ("+value+")"); + while (queryTemp.next()){ + String tempValueName = queryTemp.getString("IMAGEFILENAME"); + fileList.add(tempValueName); + } + value = String.join(", ",fileList); + + } else if (liulanMap.containsKey(tempname)){ //自定义浏览框 + String searchById = liulanMap.get(tempname); + bb.writeLog("liulanMap >> "+tempname+" >> "+searchById); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + + for (String tempValue : valueArray){ + bb.writeLog("liulanMap >> "+tempname+" >> "+searchById+" >> "+tempValue); + queryTemp.executeQuery(searchById,tempValue); + if (queryTemp.next()){ + String tempValueName = queryTemp.getString(1); + bb.writeLog("query reuslt "); + valueList.add(tempValueName); + }else { + bb.writeLog("query reuslt null"); + } + } + value = String.join(", ",valueList); + + } else if (commonLiuLanMap.containsKey(tempname)){ // 公共浏览框类型 + String fieldType = commonLiuLanMap.get(tempname); + bb.writeLog("commonLiuLanMap >> "+tempname+" >> "+fieldType + " >>value= "+value); + + RecordSet queryTemp = new RecordSet(); + + switch (fieldType){ + case "1": // 单选人力 + queryTemp.executeQuery("select LASTNAME from hrmresource h where id =?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("LASTNAME")); + } + break; + + case "17": // 多选人力 + queryTemp.executeQuery("select LASTNAME from hrmresource h where id in ("+value+")"); + List valueList = new ArrayList<>(); + while (queryTemp.next()){ + valueList.add(Util.null2String(queryTemp.getString("LASTNAME"))); + } + bb.writeLog("user list >> "+ JSON.toJSONString(valueList)); + value = String.join(", ",valueList); + break; + + case "4": // 单选部门 + queryTemp.executeQuery("select DEPARTMENTNAME from hrmdepartment where id=?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("DEPARTMENTNAME")); + } + break; + + case "57": // 多选部门 + queryTemp.executeQuery("select DEPARTMENTNAME from hrmdepartment where id in ("+value+")"); + List valueList2 = new ArrayList<>(); + while (queryTemp.next()){ + valueList2.add(Util.null2String(queryTemp.getString("DEPARTMENTNAME"))); + } + bb.writeLog("dep lis is >> "+ JSON.toJSONString(valueList2)); + value = String.join(", ",valueList2); + break; + + case "16": // 单选流程 + queryTemp.executeQuery("select REQUESTNAME from workflow_requestbase where REQUESTID =?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("REQUESTNAME")); + } + break; + + case "152": // 多选流程 + queryTemp.executeQuery("select REQUESTNAME from workflow_requestbase where REQUESTID in ("+value+")"); + List valueList3 = new ArrayList<>(); + while (queryTemp.next()){ + valueList3.add(Util.null2String(queryTemp.getString("REQUESTNAME"))); + } + bb.writeLog("request list >> "+ JSON.toJSONString(valueList3)); + value = String.join(", ",valueList3); + break; + } + + } else { + value = value.replace(" ", " "); + value = value.replace("
", " "); + } + } + cardJsonArray.add( + new JSONObject().fluentPut("name", labelName).fluentPut("value", value) + ); + } + } + return cardJsonArray; + } + + + // 选择框选项数据 + private Map> mapSelectItem(Integer billid){ + RecordSet query = new RecordSet(); + query.executeQuery("select a.FIELDNAME , b.SELECTVALUE , b.SELECTNAME from workflow_billfield a left join workflow_selectitem b on a.id=b.FIELDID where a.billid=? and a.fieldhtmltype=5 order by a.id",billid); + Map> map = new HashMap<>(); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String selectvalue = query.getString("SELECTVALUE"); + String selectname = query.getString("SELECTNAME"); + if (map.containsKey(fieldname)){ + map.get(fieldname).put(selectvalue,selectname); + }else{ + Map tempMap = new HashMap<>(); + tempMap.put(selectvalue,selectname); + map.put(fieldname,tempMap); + } + } + return map; + } + + // 勾选框字段名 + private Set getCheckFieldName(Integer billid){ + Set set = new HashSet<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME from workflow_billfield where BILLID =? and FIELDHTMLTYPE=4",billid); + while (query.next()){ + set.add(query.getString("FIELDNAME")); + } + return set; + } + + // 附件选择 + private Set getFileFieldSet(Integer billid){ + Set set = new HashSet<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME from workflow_billfield where BILLID =? and FIELDHTMLTYPE=6",billid); + while (query.next()){ + set.add(query.getString("FIELDNAME")); + } + return set; + } + + // 浏览按钮 + private Map mapLiuLan(Integer billid){ + RecordSet query = new RecordSet(); + Map map = new HashMap<>(); + query.executeQuery("select FIELDNAME, FIELDDBTYPE from workflow_billfield where BILLID =? and FIELDDBTYPE like 'browser.%'",billid); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String fielddbtpye = query.getString("FIELDDBTYPE"); + String showname = fielddbtpye.substring(8); + RecordSet query2 = new RecordSet(); + query2.executeQuery("select searchById from mode_browser where showname =?",showname); + if (query2.next()){ + String searchById = query2.getString("searchById"); + map.put(fieldname,searchById); + } + } + return map; + } + + // 公共浏览框类型 + private Map mapCommonLiuLan(Integer billid){ + Map map = new HashMap<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME, type from workflow_billfield wb where FIELDHTMLTYPE=3 and BILLID = ?",billid); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String fielddbtpye = query.getString("type"); + map.put(fieldname,fielddbtpye); + } + return map; + } + +} diff --git a/src/weaver/interfaces/dito/delete/RequestDeleteForwardSendPortalUtil.java b/src/weaver/interfaces/dito/delete/RequestDeleteForwardSendPortalUtil.java new file mode 100644 index 00000000..fd99bddf --- /dev/null +++ b/src/weaver/interfaces/dito/delete/RequestDeleteForwardSendPortalUtil.java @@ -0,0 +1,123 @@ +package weaver.interfaces.dito.delete; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil; + +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +public class RequestDeleteForwardSendPortalUtil { + + public void requestDeleteByForward(List> list,String loginid,String notes){ + + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + requestDeleteByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,creater); + } + } + } + + + /*** + * 完成 转发 数据 + * @param requestid + * @param userid + */ + private void requestDeleteByUserId(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String createrLoginId){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestid:"+requestid); + + String zhjkbs = "weaver.interfaces.dito.delete.RequestDeleteForwardSendPortalUtil.requestDeleteByUserId" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + try { + + 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"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowForwardByUserId-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/weaver/interfaces/dito/delete/RequestDeleteQueryPortalUtil.java b/src/weaver/interfaces/dito/delete/RequestDeleteQueryPortalUtil.java new file mode 100644 index 00000000..04c5ed04 --- /dev/null +++ b/src/weaver/interfaces/dito/delete/RequestDeleteQueryPortalUtil.java @@ -0,0 +1,193 @@ +package weaver.interfaces.dito.delete; + +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RequestDeleteQueryPortalUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + /** + * + * @param requestid + */ + public List> queryRequestReamrk89ByDelete(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestReamrk8ByDelete-requestid:"+requestid); + List> list = new ArrayList>(); + try{ + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,h2.loginid\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8,9)\n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + public List> queryRequestForwardByDelete(String requestid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestForwardByDelete-requestid:"+requestid); + + List> list = new ArrayList>(); + + try{ + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,h2.loginid\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark = 1 \n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + } + }catch (Exception e){ + + } + return list; + } + + + public List> queryRequestAtByDelete(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestAtByDelete-requestid:"+requestid); + + List> list = new ArrayList>(); + try{ + if (StringUtils.isNotBlank(requestid)) { + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,h2.loginid\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (18) \n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowAtByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + } + }catch (Exception e){ + + } + return list; + } + + + + public List> queryRequestDataByDelete(String requestids){ + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestDataByDelete-requestid:"+requestids); + + List> list = new ArrayList>(); + try{ + if (StringUtils.isNotBlank(requestids)) { + String[] requestid = requestids.split(","); + for(int i=0;i baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid[i]); + list.add(baseMap); + } + } + }catch (Exception e){ + + } + + bb.writeLog("queryRequestDataByDelete-list:"+list.size()); + return list; + } + + +} diff --git a/src/weaver/interfaces/dito/delete/RequestDeleteRemark89SendPortalUtil.java b/src/weaver/interfaces/dito/delete/RequestDeleteRemark89SendPortalUtil.java new file mode 100644 index 00000000..aeaca82f --- /dev/null +++ b/src/weaver/interfaces/dito/delete/RequestDeleteRemark89SendPortalUtil.java @@ -0,0 +1,122 @@ +package weaver.interfaces.dito.delete; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +public class RequestDeleteRemark89SendPortalUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + + public void requestDeleteByRemark89(List> list,String loginid,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("requestDeleteRemark89-loginid:"+loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + requestDeleteRemark89ByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,creater); + } + } + } + + + /*** + * + * @param requestid + * @param userid + * @param loginid + * @param notes + */ + private void requestDeleteRemark89ByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String createrLoginId){ + BaseBean bb = new BaseBean(); + String zhjkbs = "weaver.interfaces.dito.delete.RequestDeleteSendPortalUtil.requestDeleteRemark89ByUserid" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + try { + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/src/weaver/interfaces/dito/delete/RequestDeleteRemarkAtSendPortalUtil.java b/src/weaver/interfaces/dito/delete/RequestDeleteRemarkAtSendPortalUtil.java new file mode 100644 index 00000000..72464fd9 --- /dev/null +++ b/src/weaver/interfaces/dito/delete/RequestDeleteRemarkAtSendPortalUtil.java @@ -0,0 +1,129 @@ +package weaver.interfaces.dito.delete; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +public class RequestDeleteRemarkAtSendPortalUtil { + + public void requestDeleteByAt(List> list,String loginid,String notes){ + + BaseBean bb = new BaseBean(); + bb.writeLog("requestDeleteByAt-loginid:" + loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + requestDeleteByAt2UserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,creater); + } + + } + } + + + /*** + * 完成@数据 + * @param requestid + * @param userid + */ + private void requestDeleteByAt2UserId(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String createrLoginId){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("monitorFinishedWorkflowAtByUserId-requestid:"+requestid); + +// String notes = "流程监控删除后,删除未读的@数据"; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.delete.RequestDeleteRemarkAtSendPortalUtil.requestDeleteByAt2UserId" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3"; + String terminal = "1" ; + String taskType = "1"; + + try { + + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("urlApp",urlApp); + requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid); + + String auth = username + ":" + passwd; + bb.writeLog("monitorFinishedWorkflowAtByUserId--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("monitorFinishedWorkflowAtByUserId-msgdata:" + msgdata); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + +} diff --git a/src/weaver/interfaces/dito/delete/RequestDeleteSendPortalUtil.java b/src/weaver/interfaces/dito/delete/RequestDeleteSendPortalUtil.java new file mode 100644 index 00000000..ca5b2c40 --- /dev/null +++ b/src/weaver/interfaces/dito/delete/RequestDeleteSendPortalUtil.java @@ -0,0 +1,196 @@ +package weaver.interfaces.dito.delete; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RequestDeleteSendPortalUtil { + + /*** + * + * @param user + * @param copyList + * @param forwardList + * @param atList + */ + public void completeRemark89ForwardAtByDelete(User user, List> copyList, List> forwardList, List> atList,String note){ + + BaseBean bb = new BaseBean(); + String loginid = user.getLoginid()+"" ; + try{ + note += "(抄送不需提交、抄送需要提交:"+copyList.size()+",转发:"+forwardList.size()+",@:"+atList.size()+")"; + + RequestDeleteRemark89SendPortalUtil requestDeleteRemark89SendPortalUtil = new RequestDeleteRemark89SendPortalUtil(); + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + String notes = note +"删除未读的抄送数据"; + requestDeleteRemark89SendPortalUtil.requestDeleteByRemark89(copyList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + RequestDeleteForwardSendPortalUtil requestDeleteForwardSendPortalUtil = new RequestDeleteForwardSendPortalUtil(); + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + String notes = note +"删除未读的转发数据"; + requestDeleteForwardSendPortalUtil.requestDeleteByForward(forwardList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("operate3typeByList:"+e); + } + + try{ + RequestDeleteRemarkAtSendPortalUtil requestDeleteRemarkAtSendPortalUtil = new RequestDeleteRemarkAtSendPortalUtil(); + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + String notes = note + "删除未读的@数据"; + requestDeleteRemarkAtSendPortalUtil.requestDeleteByAt(atList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + } + + + /*** + * 流程监控,完成流程删除的门户接口的调用 + * @param requestList + * @param userid + */ + public void monitorDelete(String userid,List> requestList){ + BaseBean bb = new BaseBean(); + bb.writeLog("MonitorRequestDeleteSendPortalUtil--monitorDelete"); + for (int i = 0; i < requestList.size(); i++) { + + Map baseMap = requestList.get(i); + monitorDelete4Requestid(baseMap,userid); + } + } + + + /*** + * 流程监控,完成流程删除的门户接口的调用 + * @param baseMap + * @param userid + */ + public void monitorDelete4Requestid(Map baseMap,String userid){ + + String notes = "流程监控删除后,删除待办数据"; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.monitor.delete.MonitorRequestDeleteSendPortalUtil.monitorDelete4Requestid" ; + + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + BaseBean bb = new BaseBean(); + + String terminal = "1" ; + String taskType = "0"; + String actionType = "3" ; + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + try { + String requestid = baseMap.get("requestid"); + bb.writeLog("monitorDelete4Requestid:"+requestid); + + 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 currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("monitorDelete4Requestid---requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorDelete4Requestid---msgdata:"+msgdata); + Map map = new HashMap<>(); + 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.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /*** + * + * @param messageTitle + * @return + */ + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + + +} diff --git a/src/weaver/interfaces/dito/form/SendPortalFormLoadUtil.java b/src/weaver/interfaces/dito/form/SendPortalFormLoadUtil.java new file mode 100644 index 00000000..201aad09 --- /dev/null +++ b/src/weaver/interfaces/dito/form/SendPortalFormLoadUtil.java @@ -0,0 +1,791 @@ +package weaver.interfaces.dito.form; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SendPortalFormLoadUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + public Map queryWorkflowRemark9ByLoadForm(String requestid,String current_userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("LoadForm-requestid:"+requestid); + Map remark9Map = new HashMap(); + try{ + if(StringUtils.isNotBlank(requestid)){ + String[] lcids = requestid.split(","); + for(int i=0;i 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (9) \n" + + " and t.preisremark in (9)\n" + + " and t.requestid ="+lcid+" and t.userid ="+current_userid+"" ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-sql:"+sql); + while (rs.next()){ + count++; + } + remark9Map.put(lcid,count); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-e:"+e); + } + + return remark9Map; + } + + + /** + * 打开页面详情,当前登录人的流程的@的数据 + * + * @param requestid + */ + public List> queryWorkflowRemarkAtByLoadForm(String requestid,String current_userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowRemarkAtByLoadForm-requestid:"+requestid); + + List> atList = new ArrayList>(); + try{ + + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8) \n" + + " and t.preisremark in (18)\n" + + " and t.requestid in("+requestid +") and t.userid in("+current_userid+")" ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-sql:"+sql); + + while (rs.next()){ + String currentid = Util.null2String(rs.getString("id")); + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("currentid",currentid); + atList.add(map); + } + bb.writeLog("queryWorkflowRemark8AtByLoadForm-atList:"+atList.size()); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-e:"+e); + } + return atList; + } + + /*** + * 打开页面详情,完成抄送不需提交、@的数据门户的调用以及生成@的已办数据 + */ +// public void completeReamrk8AtByLoadForm(User user, String requestid){ +// +// BaseBean bb = new BaseBean(); +// try{ +// String userid = user.getUID()+""; +// bb.writeLog("completeReamrk8AtByLoadForm--remark8List777:"+remark8List.size()); +// if(remark8List.size() >0){ +// String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; +// finishedWorkflowCopyToByRequestid(remark8List,userid,notes); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("completeReamrk8AtByLoadForm-e:"+e); +// } +// +// try{ +// bb.writeLog("completeReamrk8AtByLoadForm--atList777:"+atList.size()); +// if(atList.size() >0){ +// String notes = "打开流程表单详情页面,完成@的数据门户调用"; +// String userid = user.getUID()+""; +// finishedWorkflowAtByRequestid(atList,userid,notes); +// +// String loginid = user.getLoginid()+""; +// completePortalAtDoneByRequestid(atList,loginid); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("completeReamrk8AtByLoadForm-e:"+e); +// } +// } + + + +// public void finishedWorkflowCopyToByRequestid(List> list,String currentuserid,String notes){ +// BaseBean bb = new BaseBean(); +// bb.writeLog("finishedWorkflowCopyToByRequestid-currentuserid:"+currentuserid); +// for(int i=0;i dataMap = list.get(i); +// String requestid = Util.null2String(dataMap.get("lcid")); +// String userid = Util.null2String(dataMap.get("userid")); +// String nodeid = Util.null2String(dataMap.get("nodeid")); +// String nodename = Util.null2String(dataMap.get("nodename")); +// String requestname = Util.null2String(dataMap.get("requestname")); +// String workflowname = Util.null2String(dataMap.get("workflowname")); +// +// bb.writeLog("finishedWorkflowCopyToByRequestid-userid:"+userid); +// bb.writeLog("finishedWorkflowCopyToByRequestid-nodeid:"+nodeid); +// bb.writeLog("finishedWorkflowCopyToByRequestid-requestid:"+requestid); +// if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ +// finishedWorkflowCopyToByUserid(requestid,userid,nodeid,currentuserid,workflowname,requestname,nodename,notes); +// } +// } +// } + + + + + /*** + * + * @return + */ +// public void completePortalAtDoneByRequestid(List> atList,String loginid){ +// BaseBean bb = new BaseBean(); +// try{ +// bb.writeLog("completePortalAtDoneByRequestid-atList:"+atList.size()); +// if(atList.size() >0){ +// String notes = "打开流程表单详情页面,@的数据生成已办"; +// for(int i=0;i dataMap = atList.get(i); +// String requestid = Util.null2String(dataMap.get("lcid")); +// String userid = Util.null2String(dataMap.get("userid")); +// String nodeid = Util.null2String(dataMap.get("nodeid")); +// String nodename = Util.null2String(dataMap.get("nodename")); +// String requestname = Util.null2String(dataMap.get("requestname")); +// String workflowname = Util.null2String(dataMap.get("workflowname")); +// +// bb.writeLog("completePortalAtDoneByRequestid-userid:"+userid); +// bb.writeLog("completePortalAtDoneByRequestid-nodeid:"+nodeid); +// bb.writeLog("completePortalAtDoneByRequestid-requestid:"+requestid); +// if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ +// completePortalAtDoneData(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); +// } +// } +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("completePortalAtDoneByRequestid-e:"+e); +// } +// } + + +// public void finishedWorkflowAtByRequestid(List> list,String loginid,String notes){ +// +// BaseBean bb = new BaseBean(); +// bb.writeLog("finishedWorkflowAtByRequestid-loginid:" + loginid); +// for(int i=0;i dataMap = list.get(i); +// String requestid = Util.null2String(dataMap.get("lcid")); +// String userid = Util.null2String(dataMap.get("userid")); +// String nodeid = Util.null2String(dataMap.get("nodeid")); +// String nodename = Util.null2String(dataMap.get("nodename")); +// String requestname = Util.null2String(dataMap.get("requestname")); +// String workflowname = Util.null2String(dataMap.get("workflowname")); +// +// bb.writeLog("finishedWorkflowAtByRequestid-userid:"+userid); +// bb.writeLog("finishedWorkflowAtByRequestid-nodeid:"+nodeid); +// bb.writeLog("finishedWorkflowAtByRequestid-requestid:"+requestid); +// if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ +// finishedWorkflowAtByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); +// } +// } +// } + + + + + + +// public void completeReamrk8ByLoadForm(User user, String requestid){ +// +// BaseBean bb = new BaseBean(); +// +// try{ +// +// +// +// +// String userid = user.getUID()+""; +// finishedWorkflowAtByRequestid(atList,userid,notes); +// +// String loginid = user.getLoginid()+""; +// completePortalAtDoneByRequestid(atList,loginid); +// +// +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("completeReamrk8AtByLoadForm-e:"+e); +// } +// +// } + + + +// public void completeReamrkAtByLoadForm(String requestid,String userid){ +// +// BaseBean bb = new BaseBean(); +// try{ +// bb.writeLog("completeReamrkAtByLoadForm--requestid:"+requestid); +// if(remark8List.size() >0){ +// String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; +// finishedWorkflowCopyToByRequestid(remark8List,userid,notes); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("completeReamrk8AtByLoadForm-e:"+e); +// } +// +// try{ +// bb.writeLog("completeReamrk8AtByLoadForm--atList777:"+atList.size()); +// if(atList.size() >0){ +// String notes = "打开流程表单详情页面,完成@的数据门户调用"; +// String userid = user.getUID()+""; +// finishedWorkflowAtByRequestid(atList,userid,notes); +// +// String loginid = user.getLoginid()+""; +// completePortalAtDoneByRequestid(atList,loginid); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("completeReamrk8AtByLoadForm-e:"+e); +// } +// +// } + + +// public void queryWorkflowRemark8ByLoadForm(String requestid,String current_userid){ +// RecordSet rs = new RecordSet(); +// BaseBean bb = new BaseBean(); +// bb.writeLog("queryWorkflowRemark8AtByLoadForm-requestid:"+requestid); +// try{ +// Map map = null ; +// if(StringUtils.isNotBlank(requestid)){ +// String sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + +// " from workflow_currentoperator t\n" + +// " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + +// " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + +// " left join workflow_base t3 on t3.id = t1.workflowid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t.isremark in (8,9) \n" + +// " and t.preisremark in (8,9,18)\n" + +// " and t.requestid in("+requestid +") and t.userid in("+current_userid+")" ; +// +// rs.executeQuery(sql); +// bb.writeLog("queryWorkflowRemark8AtByLoadForm-sql:"+sql); +// +// while (rs.next()){ +// String currentid = Util.null2String(rs.getString("id")); +// String nodeid = Util.null2String(rs.getString("nodeid")); +// String userid = Util.null2String(rs.getString("userid")); +// String nodename = Util.null2String(rs.getString("nodename")); +// String workflowname = Util.null2String(rs.getString("workflowname")) ; +// String requestname = Util.null2String(rs.getString("requestname")) ; +// String lcid = Util.null2String(rs.getString("requestid")) ; +// String preisremark = Util.null2String(rs.getString("preisremark")) ; +// +// map = new HashMap(); +// map.put("requestid",requestid); +// map.put("userid",userid); +// map.put("nodeid",nodeid); +// map.put("nodename",nodename); +// map.put("workflowname",workflowname); +// map.put("requestname",requestname); +// map.put("lcid",lcid); +// map.put("currentid",currentid); +// +// if("8".equals(preisremark)){ +// remark8List.add(map); +// }else if("18".equals(preisremark)){ +// atList.add(map); +// }else if("9".equals(preisremark)){ +// remark9List.add(map); +// } +// } +// bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark8List:"+remark8List.size()); +// bb.writeLog("queryWorkflowRemark8AtByLoadForm-atList:"+atList.size()); +// bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark9List:"+remark9List.size()); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("queryWorkflowRemark8AtByLoadForm-e:"+e); +// } +// } + + + /*** + * + * @param requestid + * @param current_userid + * @param remark9Map + */ + public void completeRequestByLoadForm(String requestid,String current_userid,Map remark9Map,String logind,List> atList){ + BaseBean bb = new BaseBean(); + try{ + if(StringUtils.isNotBlank(requestid)){ + String[] lcids = requestid.split(","); + for(int i=0;i 0){ + completeRequestAtByLoadForm(lcid,current_userid,logind,atList); + }else{ + completeReamrk8AtByLoadForm(lcid,current_userid); + completeRequestAtByLoadForm(lcid,current_userid,logind,atList); + } + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-e:"+e); + } + + } + + + public void completeReamrk8AtByLoadForm(String lcid,String current_userid){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("completeReamrk8AtByLoadForm"); + try{ + int count0 = 0; + int count1 = 0; + String sql =" select t.id,t.userid,t.nodeid,t.requestid,t.preisremark,t.viewtype \n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8)" + + " and t.requestid ="+lcid+" and t.userid ="+current_userid+"" ; + + rs.executeQuery(sql); + bb.writeLog("LoadForm-8-sql:"+sql); + while (rs.next()){ + count0++; + String viewtype = Util.null2String(rs.getString("viewtype")); + bb.writeLog("LoadForm-8-viewtype:"+viewtype); + + // if("0".equals(viewtype)){ +// count1++; +// } + } + + if(count0 > 0){ + + String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; + String code = finishedWorkflowReamrk8ByUserId(lcid,current_userid,notes); + if("0".equals(code)){ + updateCurrentoperatorRemark(lcid,current_userid,"8"); + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("LoadForm-e:"+e); + } + + + + } + + /*** + * + * @param lcid + * @param current_userid + */ + public void completeRequestAtByLoadForm(String lcid,String current_userid,String loginid,List> atList){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("completeRequestAtByLoadForm"); + try{ + int count0 = 0; + int count1 = 0; + String sql =" select t.id,t.userid,t.nodeid,t.requestid,t.preisremark,t.viewtype \n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (18) " + + " and t.requestid ="+lcid+" and t.userid ="+current_userid+"" ; + + rs.executeQuery(sql); + bb.writeLog("LoadForm-at-sql:"+sql); + while (rs.next()){ + count0++; + String viewtype = Util.null2String(rs.getString("viewtype")); + bb.writeLog("LoadForm-at-viewtype:"+viewtype); +// if("0".equals(viewtype)){ +// count1++; +// } + } + + if(count0 >0){ + + String notes = "打开流程表单详情页面,完成@的数据门户调用"; + String code = finishedWorkflowAtByUserId(lcid,current_userid,notes); + if("0".equals(code)){ + + notes = "打开流程表单详情页面,完成@的已办数据门户调用"; + + if(atList.size()>0){ + completePortalAtDoneData(lcid,current_userid,notes,loginid); + updateCurrentoperatorRemark(lcid,current_userid,"18"); + } + } + } + + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("LoadForm-e:"+e); + } + } + + + /*** + * + * @param requestid + * @param userid + * @return + */ + private String finishedWorkflowAtByUserId(String requestid,String userid,String notes){ + + BaseBean bb = new BaseBean(); + bb.writeLog("finishedWorkflowAtByUserId-requestid:"+requestid); + + String resultCode = ""; + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.form.SendPortalFormLoadUtil.finishedWorkflowAtByUserId" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3"; + String terminal = "1" ; + String taskType = "1"; + + try { + + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("urlApp",urlApp); + requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid); + + String auth = username + ":" + passwd; + bb.writeLog("finishedWorkflowAtByUserId--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("finishedWorkflowAtByUserId-msgdata:" + msgdata); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + /** + * + * @param requestid + * @param userid + * @param notes + * @return + */ + public String completePortalAtDoneData(String requestid,String userid,String notes,String loginid){ + + String zhjkbs = "weaver.interfaces.dito.form.SendPortalFormLoadUtil.completePortalAtDoneData"; + String resultCode = "" ; + 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 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"); + String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + BaseBean bb = new BaseBean(); + bb.writeLog("completePortalAtDoneData"); + + String actionType = "0" ; + + try { + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + String newNodeId = requestid+userid+"_"+System.currentTimeMillis(); + + bb.writeLog("completePortalAtDoneData--createrLoginId:"+createrLoginId); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("nodeId",newNodeId); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskCode", "weaver" + requestid); + requestObject.put("processStaff", loginid); + requestObject.put("processTime", processTime); + requestObject.put("isRecall", "1"); + requestObject.put("actionType", actionType); + requestObject.put("urlPC", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing", urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("completePortalAtDoneData done requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); + bb.writeLog("completePortalAtDoneData done msgdata:" + msgdata); + if (org.apache.commons.lang.StringUtils.isNotEmpty(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + bb.writeLog("completePortalAtDoneData--msgObject:" + msgObject.toJSONString()); + if (msgObject.containsKey("resultCode")) { + resultCode = msgObject.getString("resultCode"); + if (!"0".equals(resultCode)) { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, newNodeId, userid+ "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,"",notes); + }else{ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, newNodeId, userid + "", requestObject.toJSONString(), resultCode, "", zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog(e); + } + return resultCode; + } + + + private String finishedWorkflowReamrk8ByUserId(String requestid,String userid,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("finishedWorkflowCopyToByUserid-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.form.SendPortalFormLoadUtil.finishedWorkflowCopyToByUserid" ; + String resultCode = "" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + try { + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("finishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorFinishedWorkflowCopyToByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return resultCode; + } + + + public void updateCurrentoperatorRemark(String requestid,String currentUserid,String preisremark){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + + String viewDate = DateUtil.getCurrentTime("yyyy-MM-dd"); + String viewTime = DateUtil.getCurrentTime("HH:mm:ss"); + + bb.writeLog("updateCurrentoperatorRemark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + if("8".equals(preisremark)){ + String sql = " update workflow_currentoperator set isremark=2,viewtype=-2,viewdate=(case when viewdate is not null then viewdate else '"+viewDate+"' end),viewtime=(case when viewtime is not null then viewtime else '"+viewTime+"' end) where requestid = "+requestid +" and preisremark in ("+preisremark+") and userid="+currentUserid; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentoperatorRemark-sql:"+sql +" isTrue:"+isTrue); + }else if("18".equals(preisremark)){ + String sql = " update workflow_currentoperator set isremark=2,viewtype=-2,viewdate=(case when viewdate is not null then viewdate else '"+viewDate+"' end),viewtime=(case when viewtime is not null then viewtime else '"+viewTime+"' end),operatedate=(case when operatedate is not null then operatedate else '"+viewDate+"' end),operatetime=(case when operatetime is not null then operatetime else '"+viewTime+"' end) where requestid = "+requestid +" and preisremark in ("+preisremark+") and userid="+currentUserid; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentoperatorRemark-sql:"+sql +" isTrue:"+isTrue); + } + } + }catch (Exception e){ + bb.writeLog("updateCurrentoperatorRemark-e:"+e); + } + + } + + +} diff --git a/src/weaver/interfaces/dito/forword/SendPortalTransferUtil.java b/src/weaver/interfaces/dito/forword/SendPortalTransferUtil.java new file mode 100644 index 00000000..0d7c69ef --- /dev/null +++ b/src/weaver/interfaces/dito/forword/SendPortalTransferUtil.java @@ -0,0 +1,231 @@ +package weaver.interfaces.dito.forword; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendMailUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SendPortalTransferUtil { + + public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + + public void requestTransferSendPortal(String requestid, int currentnodeid, User user){ + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + + BaseBean bb = new BaseBean(); + + bb.writeLog("======== SendPortalTransferUtil transferSendPortal ========================="+requestid); + 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 mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + RecordSet rs = new RecordSet(); + try { + String zhjkbs = "weaver.interfaces.dito.forword.SendPortalTransferUtil.requestTransferSendPortal"; + String actionType = "2"; + String terminal = "1"; + String taskType = "0"; + String objectAction = "0"; + String objectType = "0"; + + String workflowname = ""; + String nodeId = ""; + String nodeName = ""; + JSONObject requestObject = new JSONObject(); + + String urlPc = "[newtab]"+ Constants.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 msgdata = ""; + String requestname = ""; + String lastname = ""; + String userids = ""; + String loginid = ""; + String emailArray = ""; + + String 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("SendPortalForwardCmd transfer --sql:" + 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") + user.getUID()); + nodeName = Util.null2String(rs.getString("nodeName")); + lastname = Util.null2String(rs.getString("lastname")); + loginid = Util.null2String(rs.getString("loginid")); + } + + JSONArray taskObjectList = new JSONArray(); + + requestObject.put("creator", loginid); + requestObject.put("center", center); + requestObject.put("title", requestname); + requestObject.put("taskCode", "weaver" + requestid); + requestObject.put("nodeId", currentnodeid); + 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", getNodeName(currentnodeid)); + requestObject.put("ticketType", workflowname); + + sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= " + scopeid + " and c1.scope = '" + scope + "' " + + " 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 = 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 ('5', '7','11'))\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = " + requestid; + + bb.writeLog("SendPortalForwardCmd transfer --sql:" + sql); + rs.executeQuery(sql); + while (rs.next()) { + JSONObject taskObject = new JSONObject(); + + String usercode = Util.null2String(rs.getString("loginid")); + String staffid = Util.null2String(rs.getString("staffid")); + String userid1 = Util.null2String(rs.getString("userid")); + userids += StringUtils.isEmpty(userids) ? userid1 : "," + userid1; + + String objectCode = usercode; + String operatorCode = usercode; + + taskObject.put("objectAction", objectAction); + taskObject.put("objectType", objectType); + taskObject.put("objectCode", objectCode); + taskObject.put("objectId", staffid); + taskObject.put("operatorCode", operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")); + bb.writeLog("SendPortalForwardCmd transfer email:" + email); + Matcher matcher = regex.matcher(email); + if (matcher.matches()) { + emailArray += StringUtils.isEmpty(emailArray) ? email : "," + email; + } + } + if (taskObjectList.size() > 0) { + requestObject.put("taskObjectList", taskObjectList); + } else { + requestObject.put("actionType", "3"); + } + bb.writeLog("================ SendPortalForwardCmd transfer requestObject ============= "+ requestObject.toJSONString()); + String auth = username + ":" + passwd; + msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + bb.writeLog("================ SendPortalForwardCmd transfer msgObject ============= "+ msgObject.toJSONString()); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + + bb.writeLog("SendPortalForwardCmd transfer emailArray:" + emailArray); + if (StringUtils.isNotEmpty(emailArray)) { + + Map templateMap = getEmailTemplate(requestname, lastname, processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); + + sendMailUtil.sendMail(requestid, emailArray, notificationSubject, notificationContent); + } + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(user.getUID()), requestObject.toJSONString(), resultCode, "",zhjkbs,userids); + } else { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid, nodeId, nodeName, String.valueOf(user.getUID()), requestObject.toJSONString(), resultCode, resultmsg ,zhjkbs,userids); + } + } + } + }catch (Exception e){ + bb.writeLog(e); + e.printStackTrace(); + } + } + + + public String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + /*** + * + * @param requestname + * @param operator + * @param operatorTime + * @return + */ + public Map getEmailTemplate(String requestname,String operator,String operatorTime){ + Map dataMap = new HashMap(); + + String notificationSubject = "You have a new To-Read - <"+requestname+"> "; + String notificationContent = operator + " created this task on "+operatorTime+"\n" + + " Please handle it in time."; + + dataMap.put("notificationSubject",notificationSubject); + dataMap.put("notificationContent",notificationContent); + return dataMap; + } + + public String getNodeName(int nodeid){ + RecordSet rs = new RecordSet(); + String name = ""; + rs.executeQuery(" select nodename from workflow_nodebase where id = ?",nodeid); + while (rs.next()){ + name = Util.null2String(rs.getString("nodename")); + } + return name; + } + +} diff --git a/src/weaver/interfaces/dito/intervention/RequestInterventionForwardSendPortalUtil.java b/src/weaver/interfaces/dito/intervention/RequestInterventionForwardSendPortalUtil.java new file mode 100644 index 00000000..85a80f0f --- /dev/null +++ b/src/weaver/interfaces/dito/intervention/RequestInterventionForwardSendPortalUtil.java @@ -0,0 +1,128 @@ +package weaver.interfaces.dito.intervention; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +public class RequestInterventionForwardSendPortalUtil { + + public void requestInterventionByForward(List> list,String loginid,String notes){ + + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + requestInterventionByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,creater); + } + } + } + + + /*** + * 完成 转发 数据 + * @param requestid + * @param userid + */ + private void requestInterventionByUserId(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String createrLoginId){ + BaseBean bb = new BaseBean(); + bb.writeLog("requestInterventionByUserId-requestid:"+requestid); + + String zhjkbs = "weaver.interfaces.dito.intervention.RequestInterventionForwardSendPortalUtil.requestInterventionByUserId" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + try { + + 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"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("requestInterventionByUserId-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + +} diff --git a/src/weaver/interfaces/dito/intervention/RequestInterventionQueryUtil.java b/src/weaver/interfaces/dito/intervention/RequestInterventionQueryUtil.java new file mode 100644 index 00000000..7070249e --- /dev/null +++ b/src/weaver/interfaces/dito/intervention/RequestInterventionQueryUtil.java @@ -0,0 +1,157 @@ +package weaver.interfaces.dito.intervention; + +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RequestInterventionQueryUtil { + + /*** + * 流程干预,查询流程干预前的节点 + * + * + * @param requestids + * @return + */ + public Map queryRequestNodeIdByIntervention(String requestids){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + Map dataMap = new HashMap(); + try{ + String sql =" select requestid,currentnodeid from workflow_requestbase where requestid in("+requestids+") "; + bb.writeLog("queryRequestNodeIdByArchving-sql:"+sql); + rs.execute(sql); + while (rs.next()){ + String requestid = Util.null2String(rs.getString("requestid")); + String currentnodeid = Util.null2String(rs.getString("currentnodeid")); + dataMap.put(requestid,currentnodeid); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkByArchving-e:"+e); + } + return dataMap; + + } + + + /** + * 流程干预,查询流程干预节点所有未完成的抄送数据 + * + * @param requestids + * @return + */ + public List> queryWorkflowRemark89ByRequestid(String requestids,Map nodeMap){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> list = new ArrayList>(); + String[] requestArray = requestids.split(","); + for(int i = 0;i 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8,9)\n" + + " and t.requestid in("+requestid +") and t.nodeid in("+currentnodeid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + } + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + return list; + } + + + /*** + * 流程强制归档,查询流程所有转发的数据 + * + * + * @param requestids + * @return + */ + public List> queryWorkflowForwardByRequestid(String requestids,Map nodeMap){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + List> list = new ArrayList>(); + + String[] requestArray = requestids.split(","); + for(int i = 0;i 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark = 1 \n" + + " and t.requestid in("+requestid +") and t.nodeid in("+currentnodeid+") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + bb.writeLog("queryWorkflowForwardByRequestid-list:"+list.size()); + } + } + return list; + } + +} diff --git a/src/weaver/interfaces/dito/intervention/RequestInterventionRemark89SendPortalUtil.java b/src/weaver/interfaces/dito/intervention/RequestInterventionRemark89SendPortalUtil.java new file mode 100644 index 00000000..002ddc07 --- /dev/null +++ b/src/weaver/interfaces/dito/intervention/RequestInterventionRemark89SendPortalUtil.java @@ -0,0 +1,130 @@ +package weaver.interfaces.dito.intervention; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +public class RequestInterventionRemark89SendPortalUtil { + + + public void requestInterventionByRemark89(List> list,String loginid,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("requestInterventionByRemark89-loginid:"+loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + String creater = Util.null2String(dataMap.get("creater")); + + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + requestInterventionRemark89ByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,creater); + } + } + } + + + /*** + * + * @param requestid + * @param userid + * @param loginid + * @param notes + */ + private void requestInterventionRemark89ByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String createrLoginId){ + BaseBean bb = new BaseBean(); + String zhjkbs = "weaver.interfaces.dito.intervention.RequestInterventionRemark89SendPortalUtil.requestInterventionRemark89ByUserid" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + try { + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("requestInterventionRemark89ByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("requestInterventionRemark89ByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + +} diff --git a/src/weaver/interfaces/dito/intervention/RequestInterventionSendPortalUtil.java b/src/weaver/interfaces/dito/intervention/RequestInterventionSendPortalUtil.java new file mode 100644 index 00000000..9a3b08cd --- /dev/null +++ b/src/weaver/interfaces/dito/intervention/RequestInterventionSendPortalUtil.java @@ -0,0 +1,244 @@ +package weaver.interfaces.dito.intervention; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; + +public class RequestInterventionSendPortalUtil { + + + RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + /*** + * intervention 流程干预 + * @param requestid + * @param currentUserId + */ + public void monitorIntervention(String requestid,String currentUserId){ + monitorInterventionByUserId(requestid,currentUserId); + } + + /*** + * 流程干预 + * @param requestid + * @param currentUserId + */ + public void monitorInterventionByUserId(String requestid,String currentUserId){ + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorInterventionByUserId" ; + + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("SendPortalMonitorUtil--monitorIntervention"); + String terminal = "1" ; + String taskType = "0"; + + try { + + 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("monitorIntervention-urlDing", urlDing); + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + + + if("3".equals(currentnodetype)){ + String actionType = "3" ; + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("monitorIntervention---requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); + } + } + } + }else{ + String actionType = "2" ; + String nextNodeUserIds = ""; + + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid) ; + + bb.writeLog("monitorIntervention--count:"+count); + if(count >0){ + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + JSONArray taskObjectList = new JSONArray(); + String sql = requestBaseInfoUtil.getTodoSql(requestid); + rs.executeQuery(sql); + while (rs.next()) { + String loginid = rs.getString("loginid"); + String staffid = rs.getString("staffid") ; + + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction", "0"); + taskObject.put("objectType", "0"); + taskObject.put("objectCode", loginid); + taskObject.put("objectId", staffid); + taskObject.put("operatorCode", loginid); + taskObjectList.add(taskObject); + } + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + bb.writeLog("monitorIntervention---requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds); + } + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("monitorIntervention-e:"+e); + } + + } + + /*** + * + * @param messageTitle + * @return + */ + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + + /*** + * + * @param user + * @param copyList + * @param forwardList + */ + public void completeRemark89ForwardByIntervention(User user, List> copyList, List> forwardList, String note){ + + BaseBean bb = new BaseBean(); + String loginid = user.getLoginid()+"" ; + try{ + RequestInterventionRemark89SendPortalUtil requestInterventionRemark89SendPortalUtil = new RequestInterventionRemark89SendPortalUtil(); + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + String notes = note +"删除未读的抄送数据"; + requestInterventionRemark89SendPortalUtil.requestInterventionByRemark89(copyList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + RequestInterventionForwardSendPortalUtil requestInterventionForwardSendPortalUtil = new RequestInterventionForwardSendPortalUtil(); + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + String notes = note +"删除未读的转发数据"; + requestInterventionForwardSendPortalUtil.requestInterventionByForward(forwardList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("operate3typeByList:"+e); + } + } + + + +} diff --git a/src/weaver/interfaces/dito/job/BackupSendPortalLogCronJob.java b/src/weaver/interfaces/dito/job/BackupSendPortalLogCronJob.java new file mode 100644 index 00000000..83a5844c --- /dev/null +++ b/src/weaver/interfaces/dito/job/BackupSendPortalLogCronJob.java @@ -0,0 +1,172 @@ +package weaver.interfaces.dito.job; + +import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.schedule.BaseCronJob; + +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.*; + +public class BackupSendPortalLogCronJob extends BaseCronJob { + @Override + public void execute() { + updatePortalBackupData(); + } + + /*** + * + */ + public void updatePortalBackupData(){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + + LocalDate localDate = LocalDate.now(); + String processTime = localDate.minusMonths(6).toString(); + + String message = ""; + boolean isExist = false; + try{ + String sql = " select max(id) as id from uf_portal_error_bak_cron "; + rs.executeQuery(sql); + if(rs.next()){ + isExist = true; + } + }catch (Exception e){ + isExist = false; + } + + try{ + + if(isExist){ + message += "1、备份表uf_portal_error_bak_cron 已存在。"; + int backMaxId = 0; + String sql = " select max(id) as id from uf_portal_error_bak_cron where concat(modedatacreatedate,' ',modedatacreatetime) <='"+processTime+ "' " ; + rs.executeQuery(sql); + if(rs.next()){ + backMaxId = Util.getIntValue(Util.null2String(rs.getString("id"))); + } + message += "2、备份表uf_portal_error_bak_cron的最大ID是:"+backMaxId+"。"; + int maxId = 0; + sql = " select max(id) as id from uf_portal_error where concat(modedatacreatedate,' ',modedatacreatetime) <='"+processTime+ "' " ; + rs.executeQuery(sql); + if(rs.next()){ + maxId = Util.getIntValue(Util.null2String(rs.getString("id"))); + } + message += "3、记录表uf_portal_error的最大ID是:"+maxId+"。"; + + if(backMaxId < maxId){ + + sql = " insert into uf_portal_error_bak_cron " + + " select * from uf_portal_error where concat(modedatacreatedate,' ',modedatacreatetime) <='"+processTime+ "' " + + " and not exists (\n" + + " select 1\n" + + " from uf_portal_error_bak_cron b\n" + + " where b.id = uf_portal_error.id\n" + + " ) " ; + bb.writeLog("insert-sql:"+sql); + boolean isTrue = rs.executeUpdate(sql); + + if(isTrue){ + + message += "4、备份表uf_portal_error_bak_cron的插入新增数据成功。"; + String newMaxId = ""; + sql = " select max(id) as id from uf_portal_error_bak_cron where concat(modedatacreatedate,' ',modedatacreatetime) <='"+processTime+ "' " ; + rs.executeQuery(sql); + if(rs.next()){ + newMaxId = Util.null2String(rs.getString("id")); + } + message += "5、备份表uf_portal_error_bak_cron的插入新增数据后的最大ID是:"+newMaxId+"。"; + if(StringUtils.isNotEmpty(newMaxId)){ + if(newMaxId.equals(maxId)){ + message += "6、备份表uf_portal_error_bak_cron的插入新增数据后的最大ID:"+newMaxId+"与记录表uf_portal_error最大ID:"+maxId+"一致。"; + sql = " delete from uf_portal_error where id <="+newMaxId+" and concat(modedatacreatedate,' ',modedatacreatetime) <='"+processTime+ "' and id in( select id from uf_portal_error_bak_cron ) " ; + boolean isDelete = rs.executeUpdate(sql); + if(isDelete){ + message += "7、删除记录表uf_portal_error中ID小于"+newMaxId+"的数据成功。"; + }else{ + message += "7、删除记录表uf_portal_error中ID小于"+newMaxId+"的数据失败。"; + } + }else{ + message += "6、备份表uf_portal_error_bak_cron的插入新增数据后的最大ID为空,未删除记录表uf_portal_error的数据。"; + sql = " delete from uf_portal_error where id <="+newMaxId+" and concat(modedatacreatedate,' ',modedatacreatetime) <='"+processTime+ "' and id in( select id from uf_portal_error_bak_cron ) " ; + boolean isDelete = rs.executeUpdate(sql); + if(isDelete){ + message += "7、删除记录表uf_portal_error中ID小于"+newMaxId+"的数据成功。"; + }else{ + message += "7、删除记录表uf_portal_error中ID小于"+newMaxId+"的数据失败。";; + } + } + }else{ + message += "6、备份表uf_portal_error_bak_cron的插入新增数据后的最大ID为空,未删除记录表uf_portal_error的数据。"; + } + }else{ + message += "4、备份表uf_portal_error_bak_cron的插入新增数据失败。"; + } + }else{ + message += "4、记录表uf_portal_error的最大ID:"+maxId+" 小于备份表uf_portal_error_bak_cron的最大ID:"+backMaxId+",无法进行数据同步。"; + } + }else{ + message += "1、备份表uf_portal_error_bak_cron不存在,无法进行备份。"; + } + + RecordCronBackInfo(processTime,message); + + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + + + public void RecordCronBackInfo(String yhsj,String yhrz){ + + RecordSet rs = new RecordSet(); + String uf_table = "uf_portal_back_log"; + String formmodeid = "" ; + + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+uf_table+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + String modedatacreater = "1"; + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss"); + String modedatacreatedate = sdfDate.format(new Date()); + String modedatacreatetime = sdfTime.format(new Date()); + String modedatacreatertype = "0"; + + + Map mainMap = new HashMap(); + mainMap.put("yhsj",yhsj); + mainMap.put("yhrz",yhrz); + mainMap.put("formmodeid",formmodeid); + mainMap.put("modedatacreater",modedatacreater); + mainMap.put("modedatacreatertype",modedatacreatertype); + mainMap.put("modedatacreatedate",modedatacreatedate); + mainMap.put("modedatacreatetime",modedatacreatetime); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + + + if(tablename !="" && tablenvalue !="") + { + sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; + rs.execute(sql); + } + } + + +} diff --git a/src/weaver/interfaces/dito/mq/HrmRocketMsgListener2.java b/src/weaver/interfaces/dito/mq/HrmRocketMsgListener2.java new file mode 100644 index 00000000..55cfc2ac --- /dev/null +++ b/src/weaver/interfaces/dito/mq/HrmRocketMsgListener2.java @@ -0,0 +1,41 @@ +package weaver.interfaces.dito.mq; + +import org.apache.commons.lang3.StringUtils; +import org.apache.rocketmq.client.consumer.listener.*; +import org.apache.rocketmq.common.message.MessageExt; +import weaver.general.BaseBean; + +import java.io.UnsupportedEncodingException; +import java.util.List; + + +public class HrmRocketMsgListener2 implements MessageListenerOrderly { + + + @Override + public ConsumeOrderlyStatus consumeMessage(List msgs, ConsumeOrderlyContext consumeOrderlyContext) { + + HrmRocketmqUtil hrmRocketmqUtil = new HrmRocketmqUtil(); + BaseBean bb = new BaseBean(); + consumeOrderlyContext.setAutoCommit(true); + for (MessageExt msg : msgs) { + // 可以看到每个queue有唯一的consume线程来消费, 订单对每个queue(分区)有序 + bb.writeLog("consumeThread=" + Thread.currentThread().getName() + "queueId=" + msg.getQueueId() + ", content:" + new String(msg.getBody())); + String msgdata = ""; + try { + msgdata = new String(msg.getBody(),"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + if(StringUtils.isNotBlank(msgdata)) + { + int errcount = hrmRocketmqUtil.updateOrgData(msgdata); + bb.writeLog("Consumer---errcount---:"+errcount); + }else{ + bb.writeLog("Consumer---msgdata---is null "); + } + } + return ConsumeOrderlyStatus.SUCCESS; + + } +} diff --git a/src/weaver/interfaces/dito/mq/MqManagerUpdateCronJob.java b/src/weaver/interfaces/dito/mq/MqManagerUpdateCronJob.java new file mode 100644 index 00000000..dc74a436 --- /dev/null +++ b/src/weaver/interfaces/dito/mq/MqManagerUpdateCronJob.java @@ -0,0 +1,199 @@ +package weaver.interfaces.dito.mq; + + +import com.time.util.DateUtil; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.resource.ResourceComInfo; +import weaver.interfaces.schedule.BaseCronJob; +import java.time.LocalDate; +import java.util.*; + +public class MqManagerUpdateCronJob extends BaseCronJob { + @Override + public void execute() { + updateManagerData2Day(); + } + + + /*** + * + */ + public void updateManagerData2Day(){ + BaseBean bb = new BaseBean(); + LocalDate now = LocalDate.now(); + +// LocalDate updDays = now.minusDays(4); +// bb.writeLog("updDays4:"+updDays.toString()); +// updateManagerData(updDays.toString()); +// +// updDays = now.minusDays(3); +// bb.writeLog("updDays3:"+updDays.toString()); +// updateManagerData(updDays.toString()); +// +// updDays = now.minusDays(2); +// bb.writeLog("updDays2:"+updDays.toString()); +// updateManagerData(updDays.toString()); +// +// updDays = now.minusDays(1); +// bb.writeLog("updDays1:"+updDays.toString()); +// updateManagerData(updDays.toString()); + + bb.writeLog("now:"+now.toString()); + updateManagerData_Day(now.toString()); + } + /*** + * + */ +// public void updateManagerData(String nowDate){ +// RecordSet rs = new RecordSet(); +// RecordSet rs2 = new RecordSet(); +// BaseBean bb = new BaseBean(); +// String uftable = "uf_managerunenforced" ; +// String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); +// try{ +// List> dataList = new ArrayList>(); +// String modesql = " select id,personid,managerid from "+uftable+" where startdate <='"+nowDate+"' and (case when char_length(trim(enddate)) > 0 then enddate else '2999-12-31' end) >='"+nowDate +"' and ifnull(sfsx,0) = 0 and ifnull(sfgx,0)=0 order by (case when char_length(trim(enddate)) > 0 then enddate else '2999-12-31' end) "; +// bb.writeLog("modesql:"+modesql); +// rs.executeQuery(modesql); +// while (rs.next()){ +// String personid = Util.null2String(rs.getString("personid")); +// String managerid = Util.null2String(rs.getString("managerid")); +// String id = Util.null2String(rs.getString("id")); +// +// Map dataMap = new HashMap(); +// dataMap.put("id",id); +// dataMap.put("personid",personid); +// dataMap.put("managerid",managerid); +// dataList.add(dataMap); +// } +// +// bb.writeLog("updateManagerData:dataList:"+dataList.size()); +// +// for(int i=0;i dataMap = dataList.get(i); +// String personid = Util.null2String(dataMap.get("personid")); +// String managerid = Util.null2String(dataMap.get("managerid")); +// String id = Util.null2String(dataMap.get("id")); +// String sql2 = " update hrmresource set managerid ="+managerid+" where id ="+personid; +// boolean isTrue = rs.executeUpdate(sql2); +// bb.writeLog("updateManagerData:sql2:"+sql2 +" "+isTrue); +// if(isTrue){ +// int manageridcount = 0; +// String sql3 = "select managerid from hrmresource where id = "+personid; +// rs2.executeQuery(sql3); +// if(rs2.next()){ +// String hrmmanagerid = Util.null2String(rs2.getString("managerid")); +// if(managerid.equals(hrmmanagerid)){ +// manageridcount++; +// } +// } +// bb.writeLog("manageridcount:"+manageridcount); +// +// if(manageridcount == 0){ +// String sql4 = " update hrmresource set managerid ="+managerid+" where id ="+personid; +// isTrue = rs2.executeUpdate(sql4); +// bb.writeLog("updateManagerData:isTrue:"+isTrue); +// } +// +// String upSql = sql2.replace("'",""); +// String sql5 = " update "+uftable+" set sfgx = 1,gxsj='"+processTime+"',gxsq='"+upSql+"',sfyz='"+manageridcount+"' where id = "+id ; +// rs2.executeUpdate(sql5); +// +// } +// } +// }catch (Exception e){ +// bb.writeLog("e:"+e); +// } +// } + + /*** + * + * @param nowDate + */ + public void updateManagerData_Day(String nowDate){ + RecordSet rs = new RecordSet(); + RecordSet rs2 = new RecordSet(); + BaseBean bb = new BaseBean(); + String uftable = "uf_managerunenforced" ; + ResourceComInfo resourceComInfo = null; + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + try{ + resourceComInfo = new ResourceComInfo(); + List> dataList = new ArrayList>(); + String modesql = " select id,personid,managerid from "+uftable+" where startdate <='"+nowDate+"' and (case when char_length(trim(enddate)) > 0 then enddate else '2999-12-31' end) >='"+nowDate +"' and ifnull(sfsx,0) = 0 and ifnull(sfgx,0)=0 order by (case when char_length(trim(enddate)) > 0 then enddate else '2999-12-31' end) "; + bb.writeLog("modesql:"+modesql); + rs.executeQuery(modesql); + while (rs.next()){ + String personid = Util.null2String(rs.getString("personid")); + String managerid = Util.null2String(rs.getString("managerid")); + String id = Util.null2String(rs.getString("id")); + + Map dataMap = new HashMap(); + dataMap.put("id",id); + dataMap.put("personid",personid); + dataMap.put("managerid",managerid); + dataList.add(dataMap); + } + + for(int i=0;i dataMap = dataList.get(i); + String personid = Util.null2String(dataMap.get("personid")); + String managerid = Util.null2String(dataMap.get("managerid")); + String id = Util.null2String(dataMap.get("id")); + String sql2 = " update hrmresource set managerid ="+managerid+" where id ="+personid; + boolean isTrue = rs.executeUpdate(sql2); + bb.writeLog("updateManagerData:sql2:"+sql2 +" "+isTrue); + if(isTrue){ + int manageridcount = 0; + String sql3 = "select managerid from hrmresource where id = "+personid; + rs2.executeQuery(sql3); + if(rs2.next()){ + String hrmmanagerid = Util.null2String(rs2.getString("managerid")); + bb.writeLog("hrmmanagerid:"+hrmmanagerid); + if(managerid.equals(hrmmanagerid)){ + manageridcount++; + } + } + bb.writeLog("manageridcount:"+manageridcount); + + if(manageridcount == 0){ + String sql4 = " update hrmresource set managerid ="+managerid+" where id ="+personid; + isTrue = rs2.executeUpdate(sql4); + bb.writeLog("updateManagerData:isTrue:"+isTrue); + } + + String upSql = sql2.replace("'",""); + String sql5 = " update "+uftable+" set sfgx = 1,gxsj='"+processTime+"',gxsq='"+upSql+"',sfyz='"+manageridcount+"' where id = "+id ; + isTrue = rs2.executeUpdate(sql5); + bb.writeLog(sql5+" isTrue5:"+isTrue); + + String sql6 = " update "+uftable+" set sfsx = 1 where personid ='"+personid+"' and char_length(trim(enddate)) > 0 and enddate < '"+nowDate+"'"; + isTrue = rs.executeUpdate(sql6); + bb.writeLog(sql6+" isTrue6:"+isTrue); + } + } + resourceComInfo.removeResourceCache(); + + MqManagerUpdateRunnable MqManagerUpdateRunnable = new MqManagerUpdateRunnable(dataList); + new Thread(MqManagerUpdateRunnable).start(); + + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + +// public static void main(String[] args) { +// LocalDate now = LocalDate.now(); +// for(int i=0;i<=6;i++){ +// LocalDate sevenDaysAgo = now.minusDays(6-i); +// System.out.println(sevenDaysAgo.toString()); +// } +// } + +} diff --git a/src/weaver/interfaces/dito/mq/MqManagerUpdateRunnable.java b/src/weaver/interfaces/dito/mq/MqManagerUpdateRunnable.java new file mode 100644 index 00000000..e0643274 --- /dev/null +++ b/src/weaver/interfaces/dito/mq/MqManagerUpdateRunnable.java @@ -0,0 +1,86 @@ +package weaver.interfaces.dito.mq; + + +import com.time.util.DateUtil; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.resource.ResourceComInfo; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class MqManagerUpdateRunnable implements Runnable { + + private List> dataList = new ArrayList>(); + + public MqManagerUpdateRunnable(List> dataList){ + this.dataList = dataList; + } + + @Override + public void run() { + RecordSet rs = new RecordSet(); + RecordSet rs2 = new RecordSet(); + BaseBean bb = new BaseBean(); + String uftable = "uf_managerunenforced" ; + bb.writeLog("MqManagerUpdateRunnable:dataList:"+dataList.size()); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + ResourceComInfo resourceComInfo = null; + + try{ + + LocalDate now = LocalDate.now(); + String nowDate = now.toString(); + + resourceComInfo = new ResourceComInfo(); + + for(int i=0;i dataMap = dataList.get(i); + String personid = Util.null2String(dataMap.get("personid")); + String managerid = Util.null2String(dataMap.get("managerid")); + String id = Util.null2String(dataMap.get("id")); + String sql2 = " update hrmresource set managerid ="+managerid+" where id ="+personid; + boolean isTrue = rs.executeUpdate(sql2); + bb.writeLog("updateManagerData:sql2:"+sql2 +" "+isTrue); + if(isTrue){ + int manageridcount = 0; + String sql3 = "select managerid from hrmresource where id = "+personid; + rs2.executeQuery(sql3); + if(rs2.next()){ + String hrmmanagerid = Util.null2String(rs2.getString("managerid")); + bb.writeLog("hrmmanagerid:"+hrmmanagerid); + if(managerid.equals(hrmmanagerid)){ + manageridcount++; + } + } + bb.writeLog("manageridcount:"+manageridcount); + + if(manageridcount == 0){ + String sql4 = " update hrmresource set managerid ="+managerid+" where id ="+personid; + isTrue = rs2.executeUpdate(sql4); + bb.writeLog("updateManagerData:isTrue:"+isTrue); + } + + String upSql = sql2.replace("'",""); + String sql5 = " update "+uftable+" set sfgx = 1,gxsj='"+processTime+"',gxsq='"+upSql+"',sfyz='"+manageridcount+"' where id = "+id ; + isTrue = rs2.executeUpdate(sql5); + bb.writeLog(sql5+" isTrue5:"+isTrue); + + String sql6 = " update "+uftable+" set sfsx = 1 where personid ='"+personid+"' and char_length(trim(enddate)) > 0 and enddate < '"+nowDate+"'"; + isTrue = rs.executeUpdate(sql6); + bb.writeLog(sql6+" isTrue6:"+isTrue); + } + } + + resourceComInfo.removeResourceCache(); + }catch (Exception e){ + bb.writeLog("MqManagerUpdateRunnable:e:"+e); + } + + } +} diff --git a/src/weaver/interfaces/dito/mq/RocketMsgListener2.java b/src/weaver/interfaces/dito/mq/RocketMsgListener2.java new file mode 100644 index 00000000..4ac183c8 --- /dev/null +++ b/src/weaver/interfaces/dito/mq/RocketMsgListener2.java @@ -0,0 +1,39 @@ +package weaver.interfaces.dito.mq; + +import org.apache.commons.lang3.StringUtils; +import org.apache.rocketmq.client.consumer.listener.*; +import org.apache.rocketmq.common.message.MessageExt; +import weaver.general.BaseBean; + +import java.io.UnsupportedEncodingException; +import java.util.List; + + +public class RocketMsgListener2 implements MessageListenerOrderly { + + @Override + public ConsumeOrderlyStatus consumeMessage(List list, ConsumeOrderlyContext consumeOrderlyContext) { + BaseBean bb = new BaseBean(); +// MessageExt msg = list.get(0); + + RocketmqUtil rocketmqUtil = new RocketmqUtil(); + + try { + for(MessageExt msg : list){ + bb.writeLog("Consumer---3----"+new String(msg.getBody())); + String msgdata = new String(msg.getBody(),"UTF-8"); + if(StringUtils.isNotBlank(msgdata)) + { + String data = msgdata.substring(msgdata.indexOf("{")); + int errcount = rocketmqUtil.updateOrgData(data); + bb.writeLog("Consumer---errcount---:"+errcount); + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("Consumer---UnsupportedEncodingException---e:"+e); + return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT; + } + return ConsumeOrderlyStatus.SUCCESS; + } +} diff --git a/src/weaver/interfaces/dito/paservice/SubmitRequestRemarkUtil.java b/src/weaver/interfaces/dito/paservice/SubmitRequestRemarkUtil.java new file mode 100644 index 00000000..e05f389b --- /dev/null +++ b/src/weaver/interfaces/dito/paservice/SubmitRequestRemarkUtil.java @@ -0,0 +1,609 @@ +package weaver.interfaces.dito.paservice; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SubmitRequestRemarkUtil { + + /** + * + * @param requestid + */ + public List> queryWorkflowCopyToByRequestid(String requestid,String current_userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowCopyToByRequestid-requestid:"+requestid); + List> list = new ArrayList>(); + String where = ""; + if(StringUtils.isNotBlank(current_userid)){ + where += " and t.userid in("+current_userid+")" ; + } + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark not in (18)\n" + + " and t.requestid in("+requestid +") " + where ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + public List> queryWorkflowForwardByRequestid(String requestid,String current_userid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowForwardByRequestid-requestid:"+requestid); + + List> list = new ArrayList>(); + String where = ""; + if(StringUtils.isNotBlank(current_userid)){ + where += " and t.userid in("+current_userid+")" ; + } + + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark = 1 \n" + + " and t.requestid in("+requestid +") "+where ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryWorkflowForwardByRequestid-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + + public List> queryWorkflowAtByRequestid(String requestid,String current_userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowAtByRequestid-requestid:"+requestid); + + List> list = new ArrayList>(); + String where = ""; + if(StringUtils.isNotBlank(current_userid)){ + where += " and t.userid in("+current_userid+")" ; + } + try{ + Map map = null; + if (StringUtils.isNotBlank(requestid)) { + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8) and t.preisremark in (18) \n" + + " and t.requestid in("+requestid +") "+where ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowAtByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + + bb.writeLog("queryWorkflowAtByRequestid-list:" + list.size()); + } + }catch (Exception e){ + + } + return list; + } + + + /*** + * + * @param user + * @param copyList + * @param forwardList + * @param atList + */ + public void operate3typeByList(User user, List> copyList, List> forwardList, List> atList,String note){ + + BaseBean bb = new BaseBean(); + String loginid = user.getLoginid()+"" ; + SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); + try{ + bb.writeLog("copyList:"+copyList.size()); + if(copyList.size() >0){ + String notes = note +"删除未读的抄送数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(copyList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + bb.writeLog("forwardList:"+forwardList.size()); + if(forwardList.size() >0){ + String notes = note +"删除未读的转发数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowForwardByRequestid(forwardList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + try{ + bb.writeLog("atList:"+atList.size()); + if(atList.size() >0){ + String notes = note + "删除未读的@数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + } + + } + + + /** + * 打开页面详情,当前登录人的流程的抄送需提交、抄送不需提交、@的数据 + * + * @param requestid + */ + public void queryWorkflowRemark8AtByLoadForm(String requestid,String current_userid,List> remark8List,List> atList,List> remark9List){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark in (8,9,18)\n" + + " and t.requestid in("+requestid +") and t.userid in("+current_userid+")" ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-sql:"+sql); + + while (rs.next()){ + String currentid = Util.null2String(rs.getString("id")); + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String preisremark = Util.null2String(rs.getString("preisremark")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("currentid",currentid); + + if("8".equals(preisremark)){ + remark8List.add(map); + }else if("18".equals(preisremark)){ + atList.add(map); + }else if("9".equals(preisremark)){ + remark9List.add(map); + } + } + bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark8List:"+remark8List.size()); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-atList:"+atList.size()); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark9List:"+remark9List.size()); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-e:"+e); + } + } + + /*** + * 打开页面详情,完成抄送不需提交、@的数据门户的调用以及生成@的已办数据 + * @param loginid + * @param remark8List + * @param atList + */ + public void completeReamrk8AtByLoadForm(String loginid, List> remark8List, List> atList){ + + BaseBean bb = new BaseBean(); + SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); + try{ + bb.writeLog("remark8List888:"+remark8List.size()); + if(remark8List.size() >0){ + String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark8List,loginid,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("remark8List3-e:"+e); + } + + try{ + bb.writeLog("atList888:"+atList.size()); + if(atList.size() >0){ + String notes = "打开流程表单详情页面,完成@的数据门户调用"; + sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + + completePortalAtDoneByRequestid(atList,loginid); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("atList3-e:"+e); + } + + } + + /*** + * + * @param requestid + * @param current_nodeid + * @param remarkList + * @param atList + */ + public void queryRemarkToPortalByIntervenor(String requestid,String current_nodeid,List> remarkList,List> atList){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRemarkToPortalByIntervenor-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark in (8,9,18)\n" + + " and t.requestid in("+requestid +") " + + " and t.nodeid in("+current_nodeid+")" ; + + rs.executeQuery(sql); + bb.writeLog("queryRemarkToPortalByIntervenor-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String preisremark = Util.null2String(rs.getString("preisremark")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + + if("8".equals(preisremark) || "9".equals(preisremark)){ + remarkList.add(map); + }else if("18".equals(preisremark)){ + atList.add(map); + } + } + bb.writeLog("queryRemarkToPortalByIntervenor-remarkList:"+remarkList.size()); + bb.writeLog("queryRemarkToPortalByIntervenor-atList:"+atList.size()); + } + }catch (Exception e){ + + } + } + + /*** + * + * @param requestid + * @param current_nodeid + * @return + */ + public List> queryForwardToPortalByIntervenor(String requestid,String current_nodeid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryForwardToPortalByIntervenor-requestid:"+requestid); + List> list = new ArrayList>(); + + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark = 1 \n" + + " and t.requestid in("+ requestid +") " + + " and t.nodeid in("+ current_nodeid +")" ; + + rs.executeQuery(sql); + bb.writeLog("queryForwardToPortalByIntervenor-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryForwardToPortalByIntervenor-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + + /*** + * + * @return + */ + public void completePortalAtDoneByRequestid(List> atList,String loginid){ + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("completePortalAtDoneByRequestid-atList:"+atList.size()); + if(atList.size() >0){ + String notes = "打开流程表单详情页面,@的数据生成已办"; + for(int i=0;i dataMap = atList.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("completePortalAtDoneByRequestid-userid:"+userid); + bb.writeLog("completePortalAtDoneByRequestid-nodeid:"+nodeid); + bb.writeLog("completePortalAtDoneByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + completePortalAtDoneData(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completePortalAtDoneByRequestid-e:"+e); + } + } + + /** + * + * @param requestid + * @param userid + * @param currentnodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + * @return + */ + public String completePortalAtDoneData(String requestid,String userid,String currentnodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ + + String zhjkbs = "com.customization.dito.sendtodo.SendPortalTodoDeleteUtil.completePortalAtDoneData"; + String resultCode = "" ; + 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 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"); + String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + + String actionType = "0" ; + + try { + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String newNodeId = requestid+userid+"_"+System.currentTimeMillis(); + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource 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("completePortalAtDoneData:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("completePortalAtDoneData--createrLoginId:"+createrLoginId); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("nodeId",newNodeId); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskCode", "weaver" + requestid); + requestObject.put("processStaff", loginid); + requestObject.put("processTime", processTime); + requestObject.put("isRecall", "1"); + requestObject.put("actionType", actionType); + requestObject.put("urlPC", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing", urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("completePortalAtDoneData done requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); + bb.writeLog("completePortalAtDoneData done msgdata:" + msgdata); + if (org.apache.commons.lang.StringUtils.isNotEmpty(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + bb.writeLog("completePortalAtDoneData--msgObject:" + msgObject.toJSONString()); + if (msgObject.containsKey("resultCode")) { + resultCode = msgObject.getString("resultCode"); + if (!"0".equals(resultCode)) { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentnodeid, newNodeId, userid+ "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,"",notes); + }else{ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentnodeid, newNodeId, userid + "", requestObject.toJSONString(), resultCode, "", zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog(e); + } + return resultCode; + } + + + /*** + * + * @param requestid + * @return + */ + public String queryCurrentNodeIdByRequestid(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryCurrentNodeIdByRequestid-requestid:"+requestid); + String currentnodeid = ""; + try{ + if (StringUtils.isNotBlank(requestid)) { + + String sql =" select currentnodeid from workflow_requestbase where requestid = "+requestid ; + rs.executeQuery(sql); + bb.writeLog("queryCurrentNodeIdByRequestid-sql:"+sql); + if (rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + } + }catch (Exception e){ + bb.writeLog("queryCurrentNodeIdByRequestid:"+e); + } + return currentnodeid; + } + +} diff --git a/src/weaver/interfaces/dito/paservice/SubmitRequestUtil.java b/src/weaver/interfaces/dito/paservice/SubmitRequestUtil.java new file mode 100644 index 00000000..ac572899 --- /dev/null +++ b/src/weaver/interfaces/dito/paservice/SubmitRequestUtil.java @@ -0,0 +1,368 @@ +package weaver.interfaces.dito.paservice; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendMailUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SubmitRequestUtil { + + public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + public void sendTodoDataByNode(String requestid, User user,String nodeid){ + + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "com.customization.dito.sendtodo.SendPortalTodoUtil.sendTodoDataByNode" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + + RecordSet rs = new RecordSet(); + + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByNode"); + + String terminal = "1" ; + String taskType = "0"; + + String emailArray = ""; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + try { + String nextNodeUserIds = "" ; + + String message = "流程对外接口提交流程," ; + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + String currentnodetype = baseMap.get("currentnodetype"); + + bb.writeLog("sendTodoDataByNode-currentnodetype:"+currentnodetype); + if("3".equals(currentnodetype)){ + String currentUserId = user.getUID()+"" ; + + message = "流程流转到归档节点,执行actionType=3" ; + String actionType = "3" ; + try { + 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(org.apache.commons.lang3.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("sendTodoDataByNode-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByNode-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByNode:"+e); + } + }else{ + message += "非归档节点,流程流转从"+nodeid+"节点提交" ; + int count = requestBaseInfoUtil.getTodoCountByRequestNode(requestid,nodeid); + // count >0 会签还没有流转到下个节点 + if(count >0){ + + message += ",流程流转到"+currentNodeId+"节点,执行actionType=1" ; + + String currentLoginId = user.getLoginid() ; + String currentUserId = user.getUID()+"" ; + String currentStaffId = requestBaseInfoUtil.getUserStaffid(currentUserId); + + JSONArray taskObjectList = new JSONArray(); + String actionType = "1" ; + String objectAction = "1" ; + String objectType = "0"; + + 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"); + } + + JSONObject requestObject = new JSONObject(); + + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + if(StringUtils.isNotBlank(currentLoginId)){ + String objectCode = currentLoginId ; + String operatorCode = currentLoginId ; + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("operatorCode",operatorCode); + taskObject.put("objectId",currentStaffId); + taskObjectList.add(taskObject); + } + + String sql = requestBaseInfoUtil.getTodoSql(requestid); + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + + String objectCode = usercode ; + String operatorCode = usercode ; + + objectAction = "0"; + + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + } + requestObject.put("taskObjectList",taskObjectList); + + if (taskObjectList.size() > 0){ + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); + + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,message); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,message); + } + } + } + } + }else{ + String currentUserId = user.getUID()+"" ; + + String objectAction = "0" ; + String objectType = "0"; + + 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"); + } + + JSONObject requestObject = new JSONObject(); + + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + JSONArray taskObjectList = new JSONArray(); + String sql = requestBaseInfoUtil.getTodoSql(requestid); + bb.writeLog("sendTodoDataByNode--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + + String objectCode = usercode ; + String operatorCode = usercode ; + + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email3:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } + + if (taskObjectList.size() >0){ + requestObject.put("actionType","2"); + requestObject.put("taskObjectList",taskObjectList); + + message += ",流程流转到"+currentNodeId+"节点,执行actionType=2" ; + }else { + requestObject.put("actionType","3"); + + message += ",流程流转到"+currentNodeId+"节点,执行actionType=3" ; + } + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + + Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); + + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } + + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,message); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,message); + } + } + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + public Map getEmailTemplate(String requestname, String operator, String operatorTime){ + Map dataMap = new HashMap(); + + String notificationSubject = "You have a new To-Do task - <"+requestname+"> "; + String notificationContent = operator + " created this task on "+operatorTime+"\n" + + "Please handle it in time."; + + dataMap.put("notificationSubject",notificationSubject); + dataMap.put("notificationContent",notificationContent); + return dataMap; + } + +} diff --git a/src/weaver/interfaces/dito/reject/RemarkRejectSendPortalUtil.java b/src/weaver/interfaces/dito/reject/RemarkRejectSendPortalUtil.java new file mode 100644 index 00000000..a28d27ce --- /dev/null +++ b/src/weaver/interfaces/dito/reject/RemarkRejectSendPortalUtil.java @@ -0,0 +1,237 @@ +package weaver.interfaces.dito.reject; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendMailUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RemarkRejectSendPortalUtil { + + public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + /*** + * 操作退回时执行,就是退回到某个节点,意味着查询出来的待办要新增,提交节点的所有待办都有删除 + * + * @param requestid + * @param noideid + * @param user + */ + public void sendTodoDataByReject(String requestid, String noideid, User user, String portal_todourl, String bpm_app_workflowurl, String username, String passwd, String bpm_workflowurl, String center, String bpm_app_requesturl){ + + String zhjkbs = "weaver.interfaces.dito.reject.RequestRejectSendPortalUtil.sendTodoDataByReject" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + String emailArray = ""; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + + String notes = ""; + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByReject"); + RecordSet rs = new RecordSet(); + String terminal = "1" ; + String taskType = "0"; + String objectAction = "0" ; + String objectType = "0"; + + String currentUserId = user.getUID()+"" ; + String nextNodeUserIds = ""; + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + + 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"); + } + + if ("3".equals(currentnodetype)) { + String actionType = "3"; + notes = "流程退回到归档节点"; + try { + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskCode", "weaver" + requestid); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle", getShortMessageTitle(requestname)); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing", urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("requestObject:" + requestObject.toJSONString() + "
"); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("msgdata:" + msgdata + "
"); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, "", zhjkbs, "", notes); + } else { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs, "", notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + }else{ + notes = "流程退回到:"+currentNodeName+"("+currentNodeId+")节点"; + JSONArray taskObjectList = new JSONArray(); + String actionType = "2" ; + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String sql = requestBaseInfoUtil.getTodoSql(requestid); + bb.writeLog("sendTodoDataByReject--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + + JSONObject taskObject = new JSONObject(); + String objectCode = usercode ; + String operatorCode = usercode ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email4:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, "", zhjkbs, "", notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs, "", notes); + } + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + /*** + * + * @param messageTitle + * @return + */ + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + /*** + * + * @param requestname + * @param operator + * @param operatorTime + * @return + */ + public Map getEmailTemplate(String requestname, String operator, String operatorTime){ + Map dataMap = new HashMap(); + + String notificationSubject = "You have a new To-Do task - <"+requestname+"> "; + String notificationContent = operator + " created this task on "+operatorTime+"\n" + + "Please handle it in time."; + + dataMap.put("notificationSubject",notificationSubject); + dataMap.put("notificationContent",notificationContent); + return dataMap; + } + + +} diff --git a/src/weaver/interfaces/dito/reject/RequestRejectSendPortalUtil.java b/src/weaver/interfaces/dito/reject/RequestRejectSendPortalUtil.java new file mode 100644 index 00000000..a755a1ec --- /dev/null +++ b/src/weaver/interfaces/dito/reject/RequestRejectSendPortalUtil.java @@ -0,0 +1,399 @@ +package weaver.interfaces.dito.reject; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendMailUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RequestRejectSendPortalUtil { + + public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + + public void sendTodoDataByReject(String requestid, String noideid, User user, String portal_todourl, String bpm_app_workflowurl, String username, String passwd, String bpm_workflowurl, String center, String bpm_app_requesturl) { + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByReject"); + sendTodoPortalByReject(requestid,noideid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + sendReadPortalByReject(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + } + /*** + * 操作退回时执行,就是退回到某个节点,意味着查询出来的待办要新增,提交节点的所有待办都有删除 + * + * @param requestid + * @param noideid + * @param user + */ + public void sendTodoPortalByReject(String requestid, String noideid, User user, String portal_todourl, String bpm_app_workflowurl, String username, String passwd, String bpm_workflowurl, String center, String bpm_app_requesturl){ + + String zhjkbs = "weaver.interfaces.dito.reject.RequestRejectSendPortalUtil.sendTodoPortalByReject" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendMailUtil sendMailUtil = new SendMailUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + String emailArray = ""; + Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); + + String notes = ""; + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoPortalByReject"); + RecordSet rs = new RecordSet(); + String terminal = "1" ; + String taskType = "0"; + String objectAction = "0" ; + String objectType = "0"; + + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + + 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"); + } + + if ("3".equals(currentnodetype)) { + String actionType = "3"; + notes = "流程退回到归档节点"; + try { + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskCode", "weaver" + requestid); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle", getShortMessageTitle(requestname)); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing", urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("requestObject:" + requestObject.toJSONString() + "
"); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("msgdata:" + msgdata + "
"); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, "", zhjkbs, "", notes); + } else { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs, "", notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + }else{ + notes = "流程退回到:"+currentNodeName+"("+currentNodeId+")节点"; + JSONArray taskObjectList = new JSONArray(); + String actionType = "2" ; + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String sql = requestBaseInfoUtil.getTodoSql(requestid); + bb.writeLog("sendTodoDataByReject--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + + JSONObject taskObject = new JSONObject(); + String objectCode = usercode ; + String operatorCode = usercode ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email4:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, "", zhjkbs, "", notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentNodeId, currentNodeName, "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs, "", notes); + } + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + /*** + * + * @param messageTitle + * @return + */ + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + /*** + * + * @param requestname + * @param operator + * @param operatorTime + * @return + */ + public Map getEmailTemplate(String requestname, String operator, String operatorTime){ + Map dataMap = new HashMap(); + + String notificationSubject = "You have a new To-Do task - <"+requestname+"> "; + String notificationContent = operator + " created this task on "+operatorTime+"\n" + + "Please handle it in time."; + + dataMap.put("notificationSubject",notificationSubject); + dataMap.put("notificationContent",notificationContent); + return dataMap; + } + + + /*** + * @param requestid + * @param user + */ + public void sendReadPortalByReject(String requestid,User user,String portal_todourl,String bpm_app_workflowurl,String username,String passwd,String bpm_workflowurl,String center,String bpm_app_requesturl){ + + String zhjkbs = "weaver.interfaces.dito.reject.RequestRejectSendPortalUtil.sendReadPortalByReject" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("sendReadPortalByReject"); + + String currentUserId = user.getUID()+"" ; + + String terminal = "1" ; + String actionType = "0" ; + String taskType = "1"; + String objectAction = "0" ; + String objectType = "0"; + + try { + + 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + bb.writeLog("urlDing", urlDing); + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + JSONArray taskObjectList = new JSONArray(); + String sql = getRemark89Sql(requestid,currentNodeId); + bb.writeLog("SendPortalToReadUtil-sendToReadDataByNode--sql:" + sql); + rs.executeQuery(sql); + while (rs.next()) { + String nodeid = Util.null2String(rs.getString("nodeid")) ; + String nodename = Util.null2String(rs.getString("nodename")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + + String loginid = Util.null2String(rs.getString("loginid")) ; + String userid = Util.null2String(rs.getString("userid")) ; + + JSONObject taskObject = new JSONObject(); + taskObject.put("nodeid",nodeid); + taskObject.put("nodename",nodename); + taskObject.put("loginid",loginid); + taskObject.put("staffid",staffid); + taskObject.put("userid",userid); + taskObjectList.add(taskObject); + } + + for (int i = 0; i < taskObjectList.size(); i++) { + JSONObject dataObject = taskObjectList.getJSONObject(i); + String nodeid = dataObject.getString("nodeid"); + String nodename = dataObject.getString("nodename"); + String loginid = dataObject.getString("loginid"); + String userid = dataObject.getString("userid"); + String staffid = dataObject.getString("staffid"); + + JSONObject taskObject = new JSONObject(); + String objectCode = loginid ; + String operatorCode = loginid ; + + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + JSONArray taskArray = new JSONArray(); + taskArray.add(taskObject); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("urlApp",urlApp); + + requestObject.put("nodeName",nodename); + requestObject.put("nodeId",nodeid); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskObjectList",taskArray); + + String auth = username + ":" + passwd; + bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("SendPortalToReadUtil-msgdata:" + msgdata); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodename,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /*** + * + * @param requestid + * @param currentNodeId + * @return + */ + public String getRemark89Sql(String requestid,String currentNodeId){ + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String sql =" select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " 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 = t2.userid\n" + + " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t2.isremark in ('8','9') and t2.preisremark not in ('18') \n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid +" and t2.nodeid = "+currentNodeId ; + return sql; + } + + + +} diff --git a/src/weaver/interfaces/dito/remark/UpdateRequestRemarkViewDateRunnable.java b/src/weaver/interfaces/dito/remark/UpdateRequestRemarkViewDateRunnable.java new file mode 100644 index 00000000..9468b563 --- /dev/null +++ b/src/weaver/interfaces/dito/remark/UpdateRequestRemarkViewDateRunnable.java @@ -0,0 +1,37 @@ +package weaver.interfaces.dito.remark; + +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; + +public class UpdateRequestRemarkViewDateRunnable implements Runnable{ + + private String requestid; + private String userid; + private String preisremark; + public UpdateRequestRemarkViewDateRunnable(String requestid, String userid, String preisremark){ + this.requestid = requestid; + this.userid = userid; + this.preisremark = preisremark; + } + @Override + public void run() { + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + String viewDate = DateUtil.getCurrentTime("yyyy-MM-dd"); + String viewTime = DateUtil.getCurrentTime("HH:mm:ss"); + + bb.writeLog("updateCurrentoperatorRemark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2,viewtype=-2,viewdate=(case when viewdate is not null then viewdate else '"+viewDate+"' end),viewtime=(case when viewtime is not null then viewtime else '"+viewTime+"' end) where requestid = "+requestid +" and preisremark in ("+preisremark+") and userid in("+userid+")"; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentoperatorRemark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentoperatorRemark-e:"+e); + } + } +} diff --git a/src/weaver/interfaces/dito/submit/RequestSubmitQueryPortalUtil.java b/src/weaver/interfaces/dito/submit/RequestSubmitQueryPortalUtil.java new file mode 100644 index 00000000..05075ca5 --- /dev/null +++ b/src/weaver/interfaces/dito/submit/RequestSubmitQueryPortalUtil.java @@ -0,0 +1,195 @@ +package weaver.interfaces.dito.submit; + +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RequestSubmitQueryPortalUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + /** + * + * @param requestid + */ + public List> queryRequestReamrk89BySubmit(String requestid,String currentUserid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestReamrk8ByDelete-requestid:"+requestid); + List> list = new ArrayList>(); + try{ + if(StringUtils.isNotBlank(requestid)){ + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,h2.loginid\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark not in (8,9)\n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowCopyToByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + bb.writeLog("queryWorkflowCopyToByRequestid-list:"+list.size()); + } + } + }catch (Exception e){ + + } + return list; + } + + public List> queryRequestForwardBySubmit(String requestid,String currentUserid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestForwardByDelete-requestid:"+requestid); + + List> list = new ArrayList>(); + + try{ + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,h2.loginid\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark = 1 \n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowForwardByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + } + }catch (Exception e){ + + } + return list; + } + + + public List> queryRequestAtBySubmit(String requestid,String currentUserid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestAtByDelete-requestid:"+requestid); + + List> list = new ArrayList>(); + try{ + if (StringUtils.isNotBlank(requestid)) { + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,h2.loginid\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (18) \n" + + " and t.requestid in("+requestid +") " ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowAtByRequestid-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String creater = Util.null2String(rs.getString("loginid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("creater",creater); + list.add(map); + } + } + }catch (Exception e){ + + } + return list; + } + + + + public List> queryRequestDataByDelete(String requestids,String currentUserid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestDataByDelete-requestid:"+requestids); + + List> list = new ArrayList>(); + try{ + if (StringUtils.isNotBlank(requestids)) { + String[] requestid = requestids.split(","); + for(int i=0;i baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid[i]); + list.add(baseMap); + } + + } + }catch (Exception e){ + + } + return list; + } + + +} diff --git a/src/weaver/interfaces/dito/util/okhttp/NetworkIntercepter.java b/src/weaver/interfaces/dito/util/okhttp/NetworkIntercepter.java new file mode 100644 index 00000000..075fc164 --- /dev/null +++ b/src/weaver/interfaces/dito/util/okhttp/NetworkIntercepter.java @@ -0,0 +1,64 @@ +package weaver.interfaces.dito.util.okhttp; + +import okhttp3.*; +import okio.Buffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.charset.Charset; + + +public class NetworkIntercepter implements Interceptor{ + private static Logger LOGGER = LoggerFactory.getLogger(NetworkIntercepter.class); + @Override + public Response intercept(Interceptor.Chain chain) { + long start = System.currentTimeMillis(); + Response response=null; + String responseBody = null; + String responseCode = null; + String url = null; + String requestBody = null; + try { + Request request = chain.request(); + url = request.url().toString(); + requestBody = getRequestBody(request); + response = chain.proceed(request); + responseBody = response.body().string(); + responseCode = String.valueOf(response.code()); + MediaType mediaType = response.body().contentType(); + response = response.newBuilder().body(ResponseBody.create(mediaType,responseBody)).build(); + } + catch (Exception e){ + LOGGER.error(e.getMessage()); + } + finally { + long end = System.currentTimeMillis(); + String duration = String.valueOf(end - start); + LOGGER.info("responseTime= {}, requestUrl= {}, params={}, responseCode= {}, result= {}", + duration, url,requestBody,responseCode,responseBody); + } + + return response; + } + + private String getRequestBody(Request request) { + String requestContent = ""; + if (request == null) { + return requestContent; + } + RequestBody requestBody = request.body(); + if (requestBody == null) { + return requestContent; + } + try { + Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + Charset charset = Charset.forName("utf-8"); + requestContent = buffer.readString(charset); + } catch (IOException e) { + e.printStackTrace(); + } + return requestContent; + } +} \ No newline at end of file diff --git a/src/weaver/interfaces/dito/util/okhttp/OkHttpUtils.java b/src/weaver/interfaces/dito/util/okhttp/OkHttpUtils.java new file mode 100644 index 00000000..49d20d78 --- /dev/null +++ b/src/weaver/interfaces/dito/util/okhttp/OkHttpUtils.java @@ -0,0 +1,41 @@ +package weaver.interfaces.dito.util.okhttp; + +import okhttp3.ConnectionPool; +import okhttp3.OkHttpClient; + +import java.util.concurrent.TimeUnit; + +public class OkHttpUtils { + private static final int CONNECTION_TIME_OUT = 2000;//连接超时时间 + private static final int SOCKET_TIME_OUT = 2000;//读写超时时间 + private static final int MAX_IDLE_CONNECTIONS = 30;// 空闲连接数 + private static final long KEEP_ALLIVE_TIME = 60000L;//保持连接时间 + + private OkHttpClient okHttpClient; + private volatile static OkHttpUtils okhttpUtils; + + public static OkHttpUtils getInstance(){ + if(okhttpUtils == null){ + synchronized(OkHttpUtils.class){ + if(okhttpUtils == null){ + okhttpUtils = new OkHttpUtils(); + } + } + } + return okhttpUtils; + } + + public OkHttpUtils(){ + ConnectionPool connectionPool = new ConnectionPool(MAX_IDLE_CONNECTIONS,KEEP_ALLIVE_TIME, TimeUnit.MILLISECONDS); + this.okHttpClient = new OkHttpClient() + .newBuilder() + .readTimeout(SOCKET_TIME_OUT, TimeUnit.MILLISECONDS) + .writeTimeout(SOCKET_TIME_OUT, TimeUnit.MILLISECONDS) + .connectionPool(connectionPool) + .retryOnConnectionFailure(false) //自动重连设置为false + .connectTimeout(CONNECTION_TIME_OUT,TimeUnit.MILLISECONDS) + .addInterceptor(new RetryIntercepter(2)) //重试拦截器2次 + .addNetworkInterceptor(new NetworkIntercepter()) //网络拦截器,统一打印日志 + .build(); + } +} diff --git a/src/weaver/interfaces/dito/util/okhttp/RetryIntercepter.java b/src/weaver/interfaces/dito/util/okhttp/RetryIntercepter.java new file mode 100644 index 00000000..964418bd --- /dev/null +++ b/src/weaver/interfaces/dito/util/okhttp/RetryIntercepter.java @@ -0,0 +1,41 @@ +package weaver.interfaces.dito.util.okhttp; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +import java.io.IOException; + + +public class RetryIntercepter implements Interceptor{ + public int maxRetryCount; + private int count = 0; + public RetryIntercepter(int maxRetryCount) { + this.maxRetryCount = maxRetryCount; + } + + @Override + public Response intercept(Chain chain) throws IOException { + + return retry(chain); + } + + public Response retry(Chain chain){ + Response response = null; + Request request = chain.request(); + try { + response = chain.proceed(request); + while (!response.isSuccessful() && count < maxRetryCount) { + count++; + response = retry(chain); + } + } + catch (Exception e){ + while (count < maxRetryCount){ + count++; + response = retry(chain); + } + } + return response; + } +} diff --git a/src/weaver/interfaces/dito/wait/RequestWaitNodeUtil.java b/src/weaver/interfaces/dito/wait/RequestWaitNodeUtil.java new file mode 100644 index 00000000..6b8b2bff --- /dev/null +++ b/src/weaver/interfaces/dito/wait/RequestWaitNodeUtil.java @@ -0,0 +1,50 @@ +package weaver.interfaces.dito.wait; + +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import java.util.HashMap; +import java.util.Map; + +public class RequestWaitNodeUtil { + + public void isWaitNode(String requestid) { + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByReject"); + + Map baseMap = queryRequestBaseByRequestid(requestid); + } + + + public Map queryRequestBaseByRequestid(String requestid){ + RecordSet rs = new RecordSet(); + Map baseMap = new HashMap(); + String requestname = ""; + String currentnodeid = ""; + String currentnodetype = ""; + + try{ + String sql =" select t1.requestname,t1.currentnodetype,t1.currentnodeid" + + " from workflow_requestbase t1\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(sql); + if (rs.next()){ + requestname = Util.null2String(rs.getString("requestname")) ; + currentnodeid = Util.null2String(rs.getString("currentnodeid")) ; + currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; + baseMap.put("requestname",requestname); + baseMap.put("currentnodeid",currentnodeid); + baseMap.put("currentnodetype",currentnodetype); + baseMap.put("requestid",requestid); + } + }catch (Exception e){ + + } + return baseMap; + } + + + +}