diff --git a/WEB-INF/lib/jsdk22.jar b/WEB-INF/lib/jsdk22.jar deleted file mode 100644 index 4ef6fd9e..00000000 Binary files a/WEB-INF/lib/jsdk22.jar and /dev/null differ diff --git a/src/com/api/dito/hrm/HrmConvertActionApi.java b/src/com/api/dito/hrm/HrmConvertActionApi.java new file mode 100644 index 00000000..977dd1b6 --- /dev/null +++ b/src/com/api/dito/hrm/HrmConvertActionApi.java @@ -0,0 +1,10 @@ +package com.api.dito.hrm; + + +import com.engine.dito.hrm.HrmConvertAction; + +import javax.ws.rs.Path; + +@Path("/dito/hrmconvert") +public class HrmConvertActionApi extends HrmConvertAction { +} diff --git a/src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java b/src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java new file mode 100644 index 00000000..f0a0337a --- /dev/null +++ b/src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java @@ -0,0 +1,224 @@ +package com.customization.dito.at; + +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.ForwardSubmitCmd; +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.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.*; + + +/** + * 转发、转办、意见征询等提交待办推送 + * + * @author wangj + * @version 1.00版本 + * @Date 2022/10/11 + */ +@CommandDynamicProxy(target = ForwardSubmitCmd.class, desc = "流程转发、转办、意见征询等提交后推送消息卡片") +public class SendForword2CurrentOperatorCmd extends AbstractCommandProxy> { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + ForwardSubmitCmd forwardSubmitCmd = (ForwardSubmitCmd) targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + BaseBean bb = new BaseBean(); + bb.writeLog("-----------SendForword2CurrentOperatorCmd------start--"); + HttpServletRequest request = forwardSubmitCmd.getRequest(); + FileUpload fu = new FileUpload(request); + + String requestid = Util.null2String(fu.getParameter("requestid")); + String nodeid = Util.null2String(fu.getParameter("nodeid")); + String workflowid = Util.null2String(fu.getParameter("workflowid")); + String f_weaver_belongto_userid = Util.null2String(fu.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(fu.getParameter("f_weaver_belongto_usertype")); + User user = forwardSubmitCmd.getUser(); + + String agentType = Util.null2String(fu.getParameter("agentType")); + String agentorByAgentId = Util.null2String(fu.getParameter("agentorByAgentId")); + String remark = Util.null2String(fu.getParameter("remark")); + + // 2 征求意见;3 转办 ;1 转发; 5 征询转办 + int forwardflag = Util.getIntValue(fu.getParameter("forwardflag")); + + bb.writeLog("SendForword2CurrentOperatorCmd-requestid:"+requestid); + bb.writeLog("SendForword2CurrentOperatorCmd-nodeid:"+nodeid); + bb.writeLog("SendForword2CurrentOperatorCmd-workflowid:"+workflowid); + bb.writeLog("SendForword2CurrentOperatorCmd-remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + + sendDate(result,workflowid,requestid,nodeid,agentType,agentorByAgentId,remark,forwardflag,user); + bb.writeLog("-----------SendForword2CurrentOperatorCmd------end--"); + return result; + } + + public void sendDate(Map result, String workflowid, String requestid, String nodeid, String agentType, String agentorByAgentId, String remark, int forwardflag,User user) { + BaseBean bb = new BaseBean(); + boolean status = (boolean) result.get("success"); + bb.writeLog("-----------SendForword2CurrentOperatorCmd------status:"+status); + if (status) { + bb.writeLog("-----------SendForword2CurrentOperatorCmd------forwardflag:"+forwardflag); + if(forwardflag == 1){ + insertAt2CurrentOperatorByForward(requestid,remark); + } + } + } + + + public void insertAt2CurrentOperatorByForward(String requestid,String remark) { + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("SendForword2CurrentOperatorCmd-remark:"+remark); + List result = new ArrayList(); + if(org.apache.commons.lang3.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); + } + } + } + + if(result.size() > 0){ + Map baseMap = queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + insertCurrentOperator(requestid,result,currentNodeId); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + public void insertCurrentOperator(String requestid, List addUsers, String currentNodeId) { + BaseBean bb = new BaseBean(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm:ss"); + Date date = new Date(); + String receivedate = simpleDateFormat.format(date); + String receivetime = simpleDateFormat1.format(date); + + int showOrder = 0; + RecordSet rs = new RecordSet(); + int groupid = 0 ; + String workflowid = ""; + String workflowtype = ""; + String needwfback = ""; + rs.executeQuery(" select requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime," + + " viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark,multiTakLevel " + + " from workflow_currentoperator where requestid=? and nodeid=? order by groupid desc", requestid, currentNodeId); + if (rs.next()) { + groupid = Util.getIntValue(rs.getString("groupid")); + workflowid = rs.getString("workflowid"); + workflowtype = rs.getString("workflowtype") ; + needwfback = rs.getString("needwfback"); + } + bb.writeLog("workflowid:"+workflowid); + + ArrayList lists = new ArrayList<>(); + for (String addUser : addUsers) { + bb.writeLog("addUser:"+addUser); + if(StringUtils.isNotBlank(addUser)){ + String islasttimes = ""; + String sql = " select islasttimes from workflow_currentoperator where requestid = "+requestid+" and nodeid = "+currentNodeId +" and userid = "+addUser; + + rs.executeQuery(sql); + if(rs.next()){ + islasttimes = Util.null2String(rs.getString("islasttimes")); + } + bb.writeLog("islasttimes:"+islasttimes); + if(StringUtils.isBlank(islasttimes)){ + islasttimes = "1"; + }else{ + islasttimes = "0"; + } + + groupid++; + String userIdTemp = addUser; + String agentorbyagentid = "-1"; + String agenttype = "0"; + showOrder = rs.getInt("showorder") + 1; + ArrayList list = new ArrayList(); + list.add(requestid); + list.add(userIdTemp); + list.add(groupid); + list.add(workflowid); + list.add(workflowtype); + list.add(0); + list.add(currentNodeId); + list.add(agentorbyagentid); + list.add(agenttype); + list.add(showOrder); + list.add(receivedate); + list.add(receivetime); + list.add(0); + list.add(0); + list.add(islasttimes); + list.add(0); + list.add(needwfback); + list.add("8"); + list.add("18"); + lists.add(list); + } + } + + boolean isTrue = rs.executeBatchSql(" insert into workflow_currentoperator(requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime,viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark) " + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", lists); + bb.writeLog("isTrue:"+isTrue); + } + + 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; + } + +} diff --git a/src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java b/src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java new file mode 100644 index 00000000..26b2a3a4 --- /dev/null +++ b/src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java @@ -0,0 +1,212 @@ +package com.customization.dito.at; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.RequestWithdrawCmd; +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 javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.*; + +/*** + * + */ +@CommandDynamicProxy(target = RequestWithdrawCmd.class, desc="流程撤回后给门户发送代办消息") +public class SendWithdRaw2CurrentOperatorCmd extends AbstractCommandProxy> { + + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + RequestWithdrawCmd requestWithdrawCmd = (RequestWithdrawCmd)targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + + BaseBean bb = new BaseBean(); + HttpServletRequest request = requestWithdrawCmd.getRequest(); + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String workflowid = Util.null2String(request.getParameter("workflowid")).trim(); + String actionType = Util.null2String(request.getParameter("actionType")).trim(); + String recallnodeid = Util.null2String(request.getParameter("recallNodeId")); + String remark = Util.null2String(request.getParameter("remark")); + + User user = requestWithdrawCmd.getUser(); + bb.writeLog("requestid:"+requestid); + bb.writeLog("workflowid:"+workflowid); + bb.writeLog("actionType:"+actionType); + bb.writeLog("recallnodeid:"+recallnodeid); + bb.writeLog("remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map resultMap = nextExecute(targetCommand); + + sendDate(resultMap,actionType,requestid,remark); + return resultMap; + } + + + public void sendDate(Map resultMap, String actionType, String requestid, String remark) { + BaseBean bb = new BaseBean(); + bb.writeLog("SendWithdRaw2CurrentOperatorCmd--sendDate"); + try{ + String result = Util.null2String(resultMap.get("result")); + bb.writeLog("SendWithdRaw2CurrentOperatorCmd--result:"+result); + if("success".equals(result) && "submit".equals(actionType)){ + insertAt2CurrentOperatorByForward(requestid,remark); + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + + public void insertAt2CurrentOperatorByForward(String requestid,String remark) { + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("SendForword2CurrentOperatorCmd-remark:"+remark); + List result = new ArrayList(); + if(org.apache.commons.lang3.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); + } + } + } + + if(result.size() > 0){ + Map baseMap = queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + insertCurrentOperator(requestid,result,currentNodeId); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + public void insertCurrentOperator(String requestid, List addUsers, String currentNodeId) { + BaseBean bb = new BaseBean(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm:ss"); + Date date = new Date(); + String receivedate = simpleDateFormat.format(date); + String receivetime = simpleDateFormat1.format(date); + + int showOrder = 0; + RecordSet rs = new RecordSet(); + int groupid = 0 ; + String workflowid = ""; + String workflowtype = ""; + String needwfback = ""; + rs.executeQuery(" select requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime," + + " viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark,multiTakLevel " + + " from workflow_currentoperator where requestid=? and nodeid=? order by groupid desc", requestid, currentNodeId); + if (rs.next()) { + groupid = Util.getIntValue(rs.getString("groupid")); + workflowid = rs.getString("workflowid"); + workflowtype = rs.getString("workflowtype") ; + needwfback = rs.getString("needwfback"); + } + bb.writeLog("workflowid:"+workflowid); + + ArrayList lists = new ArrayList<>(); + for (String addUser : addUsers) { + bb.writeLog("addUser:"+addUser); + if(StringUtils.isNotBlank(addUser)){ + String islasttimes = ""; + String sql = " select islasttimes from workflow_currentoperator where requestid = "+requestid+" and nodeid = "+currentNodeId +" and userid = "+addUser; + + rs.executeQuery(sql); + if(rs.next()){ + islasttimes = Util.null2String(rs.getString("islasttimes")); + } + bb.writeLog("islasttimes:"+islasttimes); + if(StringUtils.isBlank(islasttimes)){ + islasttimes = "1"; + }else{ + islasttimes = "0"; + } + + groupid++; + String userIdTemp = addUser; + String agentorbyagentid = "-1"; + String agenttype = "0"; + showOrder = rs.getInt("showorder") + 1; + ArrayList list = new ArrayList(); + list.add(requestid); + list.add(userIdTemp); + list.add(groupid); + list.add(workflowid); + list.add(workflowtype); + list.add(0); + list.add(currentNodeId); + list.add(agentorbyagentid); + list.add(agenttype); + list.add(showOrder); + list.add(receivedate); + list.add(receivetime); + list.add(0); + list.add(0); + list.add(islasttimes); + list.add(0); + list.add(needwfback); + list.add("8"); + list.add("18"); + lists.add(list); + } + } + + boolean isTrue = rs.executeBatchSql(" insert into workflow_currentoperator(requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime,viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark) " + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", lists); + bb.writeLog("isTrue:"+isTrue); + } + + 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; + } + + + +} + + diff --git a/src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java b/src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java new file mode 100644 index 00000000..94c8a0d6 --- /dev/null +++ b/src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java @@ -0,0 +1,80 @@ +package com.customization.dito.batch; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.ForwardSubmitCmd; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.card.SendRemarkToCardUtil; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + + +/** + * 转发、转办、意见征询等提交待办推送 + * + * @author wangj + * @version 1.00版本 + * @Date 2022/10/11 + */ +@CommandDynamicProxy(target = ForwardSubmitCmd.class, desc = "流程转发、转办、意见征询等提交后推送消息卡片") +public class BatchRequestSubmitSendPortalCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + ForwardSubmitCmd forwardSubmitCmd = (ForwardSubmitCmd) targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + BaseBean bb = new BaseBean(); + bb.writeLog("-----------SendRemark2CardCmd------start--"); + HttpServletRequest request = forwardSubmitCmd.getRequest(); + FileUpload fu = new FileUpload(request); + + String requestid = Util.null2String(fu.getParameter("requestid")); + String nodeid = Util.null2String(fu.getParameter("nodeid")); + String workflowid = Util.null2String(fu.getParameter("workflowid")); + String f_weaver_belongto_userid = Util.null2String(fu.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(fu.getParameter("f_weaver_belongto_usertype")); + User user = forwardSubmitCmd.getUser(); + + String agentType = Util.null2String(fu.getParameter("agentType")); + String agentorByAgentId = Util.null2String(fu.getParameter("agentorByAgentId")); + String remark = Util.null2String(fu.getParameter("remark")); + + // 2 征求意见;3 转办 ;1 转发; 5 征询转办 + int forwardflag = Util.getIntValue(fu.getParameter("forwardflag")); + + bb.writeLog("SendRemark2CardCmd-requestid:"+requestid); + bb.writeLog("SendRemark2CardCmd-nodeid:"+nodeid); + bb.writeLog("SendRemark2CardCmd-workflowid:"+workflowid); + bb.writeLog("SendRemark2CardCmd-remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + + sendDate(result,workflowid,requestid,nodeid,agentType,agentorByAgentId,remark,forwardflag,user); + bb.writeLog("-----------SendRemark2CardCmd------end--"); + return result; + } + + public void sendDate(Map result, String workflowid, String requestid, String nodeid, String agentType, String agentorByAgentId, String remark, int forwardflag,User user) { + BaseBean bb = new BaseBean(); + boolean status = (boolean) result.get("success"); + bb.writeLog("-----------SendRemark2CardCmd------status:"+status); + if (status) { + bb.writeLog("-----------SendRemark2CardCmd------forwardflag:"+forwardflag); + if(forwardflag == 3){ + SendRemarkToCardUtil sendRemarkToCardUtil = new SendRemarkToCardUtil(); +// sendRemarkToCardUtil.sendRequestRemarkToCard(requestid,workflowid,remark); + } + } + } + + + +} diff --git a/src/com/customization/dito/card/SendRemark2CardCmd.java b/src/com/customization/dito/card/SendRemark2CardCmd.java new file mode 100644 index 00000000..509c15a0 --- /dev/null +++ b/src/com/customization/dito/card/SendRemark2CardCmd.java @@ -0,0 +1,79 @@ +package com.customization.dito.card; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.ForwardSubmitCmd; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.card.SendRemarkToCardUtil; +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + + +/** + * 转发、转办、意见征询等提交待办推送 + * + * @author wangj + * @version 1.00版本 + * @Date 2022/10/11 + */ +@CommandDynamicProxy(target = ForwardSubmitCmd.class, desc = "流程转发、转办、意见征询等提交后推送消息卡片") +public class SendRemark2CardCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + ForwardSubmitCmd forwardSubmitCmd = (ForwardSubmitCmd) targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + BaseBean bb = new BaseBean(); + bb.writeLog("-----------SendRemark2CardCmd------start--"); + HttpServletRequest request = forwardSubmitCmd.getRequest(); + FileUpload fu = new FileUpload(request); + + String requestid = Util.null2String(fu.getParameter("requestid")); + String nodeid = Util.null2String(fu.getParameter("nodeid")); + String workflowid = Util.null2String(fu.getParameter("workflowid")); + String f_weaver_belongto_userid = Util.null2String(fu.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(fu.getParameter("f_weaver_belongto_usertype")); + User user = forwardSubmitCmd.getUser(); + + String agentType = Util.null2String(fu.getParameter("agentType")); + String agentorByAgentId = Util.null2String(fu.getParameter("agentorByAgentId")); + String remark = Util.null2String(fu.getParameter("remark")); + + // 2 征求意见;3 转办 ;1 转发; 5 征询转办 + int forwardflag = Util.getIntValue(fu.getParameter("forwardflag")); + + bb.writeLog("SendRemark2CardCmd-requestid:"+requestid); + bb.writeLog("SendRemark2CardCmd-nodeid:"+nodeid); + bb.writeLog("SendRemark2CardCmd-workflowid:"+workflowid); + bb.writeLog("SendRemark2CardCmd-remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + + sendDate(result,workflowid,requestid,nodeid,agentType,agentorByAgentId,remark,forwardflag,user); + bb.writeLog("-----------SendRemark2CardCmd------end--"); + return result; + } + + public void sendDate(Map result, String workflowid, String requestid, String nodeid, String agentType, String agentorByAgentId, String remark, int forwardflag,User user) { + BaseBean bb = new BaseBean(); + boolean status = (boolean) result.get("success"); + bb.writeLog("-----------SendRemark2CardCmd------status:"+status); + if (status) { + bb.writeLog("-----------SendRemark2CardCmd------forwardflag:"+forwardflag); + if(forwardflag == 3 || forwardflag == 2 || forwardflag == 1){ + SendRemarkToCardUtil sendRemarkToCardUtil = new SendRemarkToCardUtil(); + sendRemarkToCardUtil.sendRequestRemarkToCard(requestid,workflowid,remark,user); + } + } + } + + + +} diff --git a/src/com/customization/dito/card/SendRequest2CardCmd.java b/src/com/customization/dito/card/SendRequest2CardCmd.java new file mode 100644 index 00000000..6417d1ca --- /dev/null +++ b/src/com/customization/dito/card/SendRequest2CardCmd.java @@ -0,0 +1,172 @@ +package com.customization.dito.card; + +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.RequestSubmitCmd; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +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 weaver.interfaces.dito.card.SendRequestToCardUtil; +import weaver.workflow.request.RequestSignRelevanceWithMe; + +import javax.servlet.http.HttpServletRequest; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/*** + * + */ +@CommandDynamicProxy(target = RequestSubmitCmd.class, desc="流程提交后给门户卡片发送卡片信息") +public class SendRequest2CardCmd extends AbstractCommandProxy> { + + @Override + public Map execute(Command> targetCommand) { + + RequestSubmitCmd requestSubmitCmd = (RequestSubmitCmd)targetCommand; + + BaseBean bb = new BaseBean(); + HttpServletRequest request = requestSubmitCmd.getRequest(); + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String workflowid = Util.null2String(request.getParameter("workflowid")).trim(); + String src = Util.null2String(request.getParameter("src")).trim(); + String nodeid = Util.null2String(request.getParameter("nodeid")); + String workflowname = Util.null2String(request.getParameter("workflowname")); + String remark = Util.null2String(request.getParameter("remark")); + + /*** + * 空值:流程正常提交 + * 1:被代理人提交流程 + * 2:代理人提交流程 + */ + String agentType = Util.null2String(request.getParameter("agentType")); + String f_weaver_belongto_userid = Util.null2String(request.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype")); + String creater = Util.null2String(request.getParameter("creater")); + String intervenorid = Util.null2String(request.getParameter("Intervenorid")); + String agentorByAgentId = Util.null2String(request.getParameter("agentorByAgentId")); + String isSelectValue = Util.null2String(request.getParameter("isSelectValue")); + + User user = requestSubmitCmd.getUser(); + String userid = user.getUID()+""; + bb.writeLog("SendRequest2CardCmd-requestid:"+requestid); + bb.writeLog("SendRequest2CardCmd-workflowid:"+workflowid); + bb.writeLog("SendRequest2CardCmd-src:"+src); + bb.writeLog("SendRequest2CardCmd-nodeid:"+nodeid); + bb.writeLog("SendRequest2CardCmd-workflowname:"+workflowname); + bb.writeLog("SendRequest2CardCmd-user:"+user.getLoginid()); + bb.writeLog("SendRequest2CardCmd-f_weaver_belongto_userid:"+f_weaver_belongto_userid); + bb.writeLog("SendRequest2CardCmd-f_weaver_belongto_usertype:"+f_weaver_belongto_usertype); + bb.writeLog("SendRequest2CardCmd-creater:"+creater); + bb.writeLog("SendRequest2CardCmd-agentType:"+agentType); + bb.writeLog("SendRequest2CardCmd-intervenorid:"+intervenorid); + bb.writeLog("SendRequest2CardCmd-agentorByAgentId:"+agentorByAgentId); + bb.writeLog("SendRequest2CardCmd-remark:"+remark); + bb.writeLog("SendRequest2CardCmd-isSelectValue:"+isSelectValue); + + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + bb.writeLog("SendRequest2CardCmd-submit-end:"+requestid+" time:"+System.currentTimeMillis()); + + sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,workflowid,remark,isSelectValue); + + return result; + } + + /*** + * + * @param result + * @param requestid + * @param agentType + * @param src + * @param nodeid + * @param userid + * @param f_weaver_belongto_userid + * @param user + */ + public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,String workflowId,String remark,String isSelectValue){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + try{ + if(result.containsKey("data")){ + //对返回值做加工处理 + RequestOperationResultBean resultBean = (RequestOperationResultBean) result.get("data"); + String executeResult = resultBean.getType().name(); + bb.writeLog("SendRequest2CardCmd-executeResult:"+executeResult); + + String new_requestid2 = Util.null2String(resultBean.getResultInfo().get("requestid")); + bb.writeLog("SendRequest2CardCmd-new_requestid2:"+new_requestid2); + + if("SUCCESS".equals(executeResult)){ + String new_requestid = Util.null2String(resultBean.getResultInfo().get("requestid")); + bb.writeLog("SendRequest2CardCmd-new_requestid:"+new_requestid); + +// if ("1".equals(isSelectValue) && null != remark && !"".equals(remark)) { +// Document doc = Jsoup.parse(remark); +// // 选择所有的

标签 +// Elements pTags = doc.select("p"); +// +// String title = ""; +// Iterator pIt = pTags.iterator(); +// while(pIt.hasNext()) { +// Element element = pIt.next(); +// title += element.text(); +// } +// +// new BaseBean().writeLog("sendDate-title:" + title); +// if(StringUtils.isNotBlank(title)){ +// title = StringEscapeUtils.unescapeHtml4(title); +// } +// new BaseBean().writeLog("sendDate-title2:" + title); +// +// RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); +// List atResourceids = reqsignwm.parseRemark(remark); +// for (String atResourceid : atResourceids) { +// new BaseBean().writeLog("RequestSubmitCmd-atResourceid:" + atResourceid); +// new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestid),"",title,"You have been tagged in a comment."); +// } +// } + + + String isMessageRemind = ""; + String sql1 = "select id,workflowname, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + bb.writeLog("SendRequest2CardCmd-sql1:"+sql1); + rs.executeQuery(sql1); + if(rs.next()){ + isMessageRemind = rs.getString("isMessageRemind"); + } + bb.writeLog("SendRequest2CardCmd-isMessageRemind:"+isMessageRemind); + + if("1".equals(isMessageRemind)){ + if ("1".equals(isSelectValue) && null != remark && !"".equals(remark)) { + SendRequestToCardUtil sendRequestToCardUtil = new SendRequestToCardUtil(); + if(Util.getIntValue(requestid) == -1 && "submit".equals(src)){ + sendRequestToCardUtil.sendRequestAtToCard(new_requestid,user,nodeid,workflowId,remark); + }else if(Util.getIntValue(requestid)> 0 && "submit".equals(src)){ + sendRequestToCardUtil.sendRequestAtToCard(requestid,user,nodeid,workflowId,remark); + }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ + sendRequestToCardUtil.sendRequestAtToCard(requestid,user,nodeid,workflowId,remark); + } + } + } + } + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + +} + + diff --git a/src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java b/src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java new file mode 100644 index 00000000..da777032 --- /dev/null +++ b/src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java @@ -0,0 +1,180 @@ +package com.customization.dito.sendtodo; + +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.util.HashMap; +import java.util.Map; + +public class RequestBaseInfoUtil { + + public Map queryRequestBaseByRequestid(String requestid){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + Map baseMap = new HashMap(); + String workflowname = ""; + String requestname = ""; + String currentnodeid = ""; + String currentnodename = "" ; + String createrloginid = ""; + String createruserid = ""; + String createrusername = ""; + String currentnodetype = ""; + + try{ + String sql =" select t1.requestname,t1.currentnodetype,t1.currentnodeid,h2.id as createruserid,h2.lastname as createrusername,h2.loginid as createrloginid,d1.nodename as currentnodename,t3.workflowname" + + " 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 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 ; + + rs.executeQuery(sql); + if (rs.next()){ + workflowname = Util.null2String(rs.getString("workflowname")) ; + requestname = Util.null2String(rs.getString("requestname")) ; + currentnodeid = Util.null2String(rs.getString("currentnodeid")) ; + currentnodename = Util.null2String(rs.getString("currentnodename")) ; + createrloginid = Util.null2String(rs.getString("createrloginid")) ; + createruserid = Util.null2String(rs.getString("createruserid")) ; + createrusername = Util.null2String(rs.getString("createrusername")) ; + currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; + + baseMap.put("workflowname",workflowname); + baseMap.put("requestname",requestname); + baseMap.put("currentnodeid",currentnodeid); + baseMap.put("currentnodename",currentnodename); + baseMap.put("createrloginid",createrloginid); + baseMap.put("createruserid",createruserid); + baseMap.put("createrusername",createrusername); + baseMap.put("currentnodetype",currentnodetype); + baseMap.put("requestid",requestid); + } + }catch (Exception e){ + + } + return baseMap; + } + + + public int getTodoCountByRequestNode(String requestid,String nodeid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + int count = 0; + try{ + String countSql = " select t2.userid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid+ + " and t2.nodeid = " + nodeid ; + + bb.writeLog("sendTodoDataByNode--countSql:"+countSql); + rs.executeQuery(countSql); + while (rs.next()){ + count++; + } + }catch (Exception e){ + + } + return count; + } + + public String getUserStaffid(String userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String staffId = ""; + try { + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String userSql = " select "+cus_staff+" as staffid from cus_fielddata where scopeid="+scopeid+" and scope='"+scope+"' and id=?"; + rs.executeQuery(userSql,userid); + if (rs.next()){ + staffId = Util.null2String(rs.getString("staffid")); + } + }catch (Exception e){ + + } + + return staffId; + } + + + public String getRemark89Sql(String requestid){ + + + 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 ; + return sql; + } + + + public String getTodoSql(String requestid){ + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String 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; + return sql; + } + + + public int getTodoCountByRequestid(String requestid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + int count = 0; + try{ + + String countSql = " select t2.userid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid ; + + bb.writeLog("sendTodoDataByNode--countSql:"+countSql); + rs.executeQuery(countSql); + while (rs.next()){ + count++; + } + }catch (Exception e){ + + } + return count; + } + + +} diff --git a/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java index ad00a8d2..bbc2b7f3 100644 --- a/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java @@ -9,9 +9,7 @@ import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.general.Util; -import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; - import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -25,6 +23,8 @@ import java.util.Map; */ public class SendPortalAtAddTodoCmd { + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + private Map params; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; @@ -54,25 +54,18 @@ public class SendPortalAtAddTodoCmd { public void sendTodoDataByNode(String requestid, List> todolist, String username, String passwd, String center, String portal_todourl, String bpm_workflowurl, String bpm_app_workflowurl, String bpm_app_requesturl){ HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String zhjkbs = "com.customization.dito.sendtodo.SendPortalAtAddTodoCmd.sendTodoDataByNode"; - String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); + String notes = "at后创建门户的待阅数据"; + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); BaseBean bb = new BaseBean(); bb.writeLog("SendPortalAtAddTodoCmd--sendTodoDataByNode"); - String terminal = "1" ; - String taskType = "0"; - String actionType = "0" ; - try { bb.writeLog("SendPortalAtAddTodoCmd sleep start"); Thread.sleep(2000); - bb.writeLog("sleep end "); - - String sql = ""; + bb.writeLog("SendPortalAtAddTodoCmd sleep end "); String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); @@ -81,119 +74,128 @@ public class SendPortalAtAddTodoCmd { String urlDing = replace+bpm_app_requesturl+requestid; String urlApp = replace+bpm_app_requesturl+requestid; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); if(StringUtils.isNotEmpty(mobileJumpUrl)){ urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - bb.writeLog("urlDing", urlDing); +// String requestname = "" ; +// String workflowname = "" ; +// String nodeId = "" ; +// String nodeName = "" ; +// String lastName = ""; +// 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 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t1.requestid = "+requestid ; +// +// bb.writeLog("sendTodoDataByNode--sql2:"+sql); +// +// rs.executeQuery(sql); +// if (rs.next()){ +// requestname = Util.null2String(rs.getString("requestname")) ; +// workflowname = Util.null2String(rs.getString("workflowname")) ; +// nodeId = Util.null2String(rs.getString("nodeid")) ; +// nodeName = Util.null2String(rs.getString("nodeName")) ; +// lastName = Util.null2String(rs.getString("loginid")) ; +// } + + 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",getShortMessageTitle(requestname)); +// requestObject.put("terminal",terminal); +// requestObject.put("urlPc",urlPc); +// requestObject.put("urlApp",urlApp); +// requestObject.put("urlDing",urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String lastName = ""; - sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid"+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendTodoDataByNode--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - lastName = Util.null2String(rs.getString("loginid")) ; - } - - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("creator",lastName); -// requestObject.put("taskCode","weaver"+requestid); - - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",processTime); - requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); - - - JSONArray taskObjectList = new JSONArray(); for (Map todoMap: todolist){ bb.writeLog("================== SendPortalAtAddTodoCmd todoMap============== "+ todoMap); - JSONObject taskObject = new JSONObject(); - JSONArray list = new JSONArray(); - JSONObject requestObject2 = new JSONObject(); - requestObject2.putAll(requestObject); - - SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); - requestObject2.put("nodeName",todoMap.get("nodename")); - requestObject2.put("nodeId",todoMap.get("nodeid")); - requestObject2.put("taskCode","weaver"+requestid+"_at_"+todoMap.get("id")); - - String creator = (String) todoMap.get("loginid"); - if("sysadmin".equals(creator)){ - creator = "Admin"; - } + String userid = Util.null2String(todoMap.get("id")) ; + String creator = Util.null2String(todoMap.get("loginid")); + JSONArray taskObjectList = new JSONArray(); + JSONObject taskObject = new JSONObject(); taskObject.put("objectAction","0"); taskObject.put("objectType","0"); taskObject.put("objectCode",creator); taskObject.put("objectId",todoMap.get("id")); taskObject.put("operatorCode",creator); - list.add(taskObject); - - requestObject2.put("messageTitle",getShortMessageTitle(requestname)); - requestObject2.put("messageContent", requestname); - requestObject2.put("terminal", "1"); - requestObject2.put("taskType", "1"); - requestObject2.put("actionType", "0"); - - requestObject2.put("taskObjectList",list); + taskObjectList.add(taskObject); + + JSONObject requestObject = new JSONObject(); + + String nodeId = Util.null2String(todoMap.get("nodename")); + String nodeName = Util.null2String(todoMap.get("nodename")); + requestObject.put("nodeName",todoMap.get("nodename")); + requestObject.put("nodeId",todoMap.get("nodeid")); + requestObject.put("taskCode","weaver"+requestid+"_at_"+todoMap.get("id")); + requestObject.put("terminal", "1"); + requestObject.put("taskType", "1"); + requestObject.put("actionType", "0"); + + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("taskObjectList",taskObjectList); String auth = username + ":" + passwd; - - bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject2.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, requestObject2.toJSONString(), auth); + bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, requestObject.toJSONString(), auth); bb.writeLog("SendPortalToReadUtil-msgdata:" + msgdata); if (!"".equals(msgdata)) { JSONObject msgObject = JSONObject.parseObject(msgdata); - //{"resultCode":"1","resultMsg":"No Result"} if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, "",requestObject2.toJSONString(),resultCode,"",zhjkbs,(String) todoMap.get("id")); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName, "",requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); sendPortalErrorUtil.saveAtRyjb(requestid,nodeId,(String) todoMap.get("id")); - }else if ("TODO-FAIL-002".equals(resultCode)){ - //The task does not exist.任务不存在,则新增 - User user = new User(); - user.setUid(Integer.valueOf(todoMap.get("id").toString())); - SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil(); - sendPortalToReadUtil.sendToReadDataByCreateNode(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); - - }else{ - + } +// else if ("TODO-FAIL-002".equals(resultCode)){ +// //The task does not exist.任务不存在,则新增 +// User user = new User(); +// user.setUid(Integer.valueOf(todoMap.get("id").toString())); +// SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil(); +// sendPortalToReadUtil.sendToReadDataByCreateNode(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); +// +// } + else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, "",requestObject2.toJSONString(),resultCode,resultmsg,zhjkbs,(String) todoMap.get("id")); - + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName, "",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); } } } - } - } catch (Exception e) { e.printStackTrace(); } @@ -251,9 +253,9 @@ public class SendPortalAtAddTodoCmd { try { String workcode = ""; - String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'"; + String sql = " select * from (select id, lastname,loginid from hrmresource union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'"; rs.executeQuery(sql); - while (rs.next()) { + if (rs.next()) { workcode = Util.null2String(rs.getString("loginid")); } diff --git a/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java b/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java index 20d3519e..55c968cc 100644 --- a/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java @@ -127,6 +127,8 @@ public class SendPortalErrorUtil { bb.writeLog("doCreateSendPortalTodoErrorInfo"); String uf_table = "uf_portal_error" ; + + // ModeRightInfo modeRightInfo = new ModeRightInfo(); // modeRightInfo.setNewRight(true); @@ -208,8 +210,49 @@ public class SendPortalErrorUtil { // } // } } + + insertNewDeleteLog(zhjkbs,mainMap); + } + + + public void insertNewDeleteLog(String zhjkbs,Map mainMap){ + + if("com.customization.dito.sendtodo.SendPortalTodoUtil.sendTodoDataByCreater".equals(zhjkbs)){ + BaseBean bb = new BaseBean(); + String saveLogTable = "uf_portal_savelog"; + RecordSet rs = new RecordSet(); + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+saveLogTable+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + mainMap.put("formmodeid",formmodeid); + + 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+"'" ; + } + bb.writeLog("tablename:"+tablename); + bb.writeLog("tablenvalue:"+tablenvalue); + + if(tablename !="" && tablenvalue !="") { + sql = " insert into " + saveLogTable + "(" + tablename + ") values (" + tablenvalue + ")"; + bb.writeLog("sql:" + sql); + boolean boo = rs.execute(sql); + } + } } + public void saveAtRyjb(String requestid,String nodeid,String userid){ RecordSet rs = new RecordSet(); String uf_table = "uf_lcatryjlb" ; diff --git a/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java b/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java index 10db30ac..33b681dc 100644 --- a/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java +++ b/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java @@ -118,6 +118,11 @@ public class SendPortalErrorUtilRunnable implements Runnable{ sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; bb.writeLog("sql:"+sql); boolean boo = rs.execute(sql); + + + + + // if(boo) // { // String dataid = "" ; @@ -134,6 +139,46 @@ public class SendPortalErrorUtilRunnable implements Runnable{ // } // } } + + insertNewDeleteLog(zhjkbs,mainMap); } + + public void insertNewDeleteLog(String zhjkbs,Map mainMap){ + + + if("weaver.interfaces.dito.monitor.delete.MonitorRequestDeleteSendPortalUtil.monitorDelete4Requestid".equals(zhjkbs)){ + BaseBean bb = new BaseBean(); + String saveLogTable = "uf_portal_deletelog"; + RecordSet rs = new RecordSet(); + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+saveLogTable+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + mainMap.put("formmodeid",formmodeid); + + 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+"'" ; + } + bb.writeLog("tablename:"+tablename); + bb.writeLog("tablenvalue:"+tablenvalue); + + if(tablename !="" && tablenvalue !="") { + sql = " insert into " + saveLogTable + "(" + tablename + ") values (" + tablenvalue + ")"; + bb.writeLog("sql:" + sql); + boolean boo = rs.execute(sql); + } + } + } } diff --git a/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java b/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java index 737bb146..a3e937bc 100644 --- a/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java @@ -27,7 +27,6 @@ import java.util.regex.Pattern; */ public class SendPortalForwardCmd { - private Map params; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); @@ -40,13 +39,7 @@ public class SendPortalForwardCmd { String scopeid = "-1"; String scope = "HrmCustomFieldByInfoType" ; - public SendPortalForwardCmd(){ - } - - public SendPortalForwardCmd(Map params){ - this.params=params; - } //转发 public void forwardSendPortal(String requestid,int currentnodeid,User user,Set resourceids) { @@ -89,13 +82,20 @@ public class SendPortalForwardCmd { String urlDing = replace + bpm_app_requesturl + requestid; String urlApp = replace + bpm_app_requesturl + requestid; - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); try { + + if (StringUtils.isNotEmpty(mobileJumpUrl)) { + urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); + urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); + } + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + 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" + + " 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; @@ -111,17 +111,12 @@ public class SendPortalForwardCmd { loginid = Util.null2String(rs.getString("loginid")); } - if (StringUtils.isNotEmpty(mobileJumpUrl)) { - urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - } - JSONArray taskObjectList = new JSONArray(); - bb.writeLog("SendPortalForwardCmd urlDing", urlDing); + JSONArray taskObjectList = new JSONArray(); + requestObject.put("creator", loginid); requestObject.put("center", center); requestObject.put("title", requestname); - requestObject.put("creator", loginid); requestObject.put("taskCode", "weaver" + requestid+"_zf_"+ userid); requestObject.put("nodeId", currentnodeid); requestObject.put("taskType", taskType); @@ -136,7 +131,7 @@ public class SendPortalForwardCmd { requestObject.put("nodeName", getNodeName(currentnodeid)); requestObject.put("ticketType", workflowname); - sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + + 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 + "' " + @@ -155,11 +150,6 @@ public class SendPortalForwardCmd { 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; - - if ("sysadmin".equals(usercode)) { - usercode = "Admin"; - } String objectCode = usercode; String operatorCode = usercode; @@ -229,7 +219,6 @@ public class SendPortalForwardCmd { 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 cus_staff = PropBean.getUfPropValue("cus_staff") ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); RecordSet rs = new RecordSet(); @@ -241,40 +230,33 @@ public class SendPortalForwardCmd { String objectAction = "0"; String objectType = "0"; - String sql = ""; String workflowname = ""; String nodeId = ""; String nodeName = ""; - JSONObject requestObject = new JSONObject(); - String urlPc = "[newtab]"+ Constants.bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+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 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"); +// } - String msgdata = ""; String requestname = ""; String lastname = ""; String userids = ""; String loginid = ""; - String emailArray = ""; - - 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; + 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")); @@ -285,17 +267,12 @@ public class SendPortalForwardCmd { loginid = Util.null2String(rs.getString("loginid")); } - if (StringUtils.isNotEmpty(mobileJumpUrl)) { - urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - } - JSONArray taskObjectList = new JSONArray(); - bb.writeLog("SendPortalForwardCmd transfer urlDing", urlDing); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator", loginid); requestObject.put("center", center); requestObject.put("title", requestname); - requestObject.put("creator", loginid); requestObject.put("taskCode", "weaver" + requestid); requestObject.put("nodeId", currentnodeid); requestObject.put("taskType", taskType); @@ -310,7 +287,9 @@ public class SendPortalForwardCmd { requestObject.put("nodeName", getNodeName(currentnodeid)); requestObject.put("ticketType", workflowname); - sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + + String emailArray = ""; + JSONArray taskObjectList = new JSONArray(); + 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 + "' " + @@ -328,12 +307,6 @@ public class SendPortalForwardCmd { 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; - - if ("sysadmin".equals(usercode)) { - usercode = "Admin"; - } String objectCode = usercode; String operatorCode = usercode; @@ -357,16 +330,14 @@ public class SendPortalForwardCmd { } 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)) { + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + if (StringUtils.isNotEmpty(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)) { @@ -399,7 +370,6 @@ public class SendPortalForwardCmd { String passwd = PropBean.getUfPropValue("passwd"); String center = PropBean.getUfPropValue("center"); - String zhjkbs = "com.customization.dito.sendtodo.SendPortalForwardCmd.delTodoAddDoneSendPortal"; RecordSet rs = new RecordSet(); @@ -446,11 +416,10 @@ public class SendPortalForwardCmd { //删除转发的待办 JSONObject jsonObject = new JSONObject(); + jsonObject.put("creator", loginid); jsonObject.put("center", center); jsonObject.put("title", requestname); - jsonObject.put("creator", loginid); jsonObject.put("taskCode", "weaver" + requestid+"_zf_"+user.getUID()); - jsonObject.put("taskType", "0"); jsonObject.put("actionType", "3"); jsonObject.put("createDate", processTime); diff --git a/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java b/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java index ba37c401..375b81ff 100644 --- a/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java @@ -1,17 +1,23 @@ package com.customization.dito.sendtodo; +import com.alibaba.fastjson.JSONObject; import com.engine.core.cfg.annotation.CommandDynamicProxy; import com.engine.core.interceptor.AbstractCommandProxy; import com.engine.core.interceptor.Command; import com.engine.workflow.cmd.requestForm.RemarkSubmitCmd; import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +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.monitor.SendPortalMonitorDeleteUtil; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import weaver.interfaces.dito.remark.UpdateRequestRemarkViewDateRunnable; import javax.servlet.http.HttpServletRequest; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -46,20 +52,28 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy bb.writeLog("user:"+user.getLoginid()); bb.writeLog("creater:"+creater); bb.writeLog("agentType:"+agentType); - bb.writeLog("isremark:"+agentType); + bb.writeLog("isremark:"+isremark); List> remark9List = new ArrayList>(); +// if("0".equals(isremark) && "save".equals(src)){ +// remark9List = queryRequestRemark9(requestid,userid); +// } + if("9".equals(isremark) && "save".equals(src)){ - remark9List = queryRequestRemark(requestid,userid); + remark9List = queryRequestRemark9(requestid,userid); } + + bb.writeLog("remark9List2:"+remark9List); + Map result = nextExecute(targetCommand); - sendDate(result,loginid,remark9List); + sendDate(result,loginid,remark9List,userid); return result; } - public void sendDate(Map result, String loginid,List> remark9List) { + public void sendDate(Map result, String loginid,List> remark9List,String userid) { BaseBean bb = new BaseBean(); + bb.writeLog("sendDate"); try { if (result.containsKey("data")) { //对返回值做加工处理 @@ -68,19 +82,16 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy bb.writeLog("executeResult:" + executeResult); if ("SUCCESS".equals(executeResult)) { - + bb.writeLog("remark9List3:"+remark9List); if(!remark9List.isEmpty() && remark9List.size()>0){ bb.writeLog("SendPortalRemarkCmd-remark9List:"+remark9List.size()); - SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); String notes = "流程页面打开后,批注抄送需提交的数据"; - sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark9List,loginid,notes); + completeRequestRemark9ByRemarkSubmit(remark9List,loginid,notes,userid); } - } } } catch (Exception e) { - } } @@ -91,12 +102,11 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy * @param userid * @return */ - public List> queryRequestRemark(String requestid,String userid){ + public List> queryRequestRemark9(String requestid,String userid){ List> remark9List = new ArrayList>(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); try{ - Map map = null; 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" + @@ -108,14 +118,15 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy " and t.userid="+userid+""; rs.executeQuery(sql); - bb.writeLog("OpenRequestRemark9Cmd-sql:"+sql); + bb.writeLog("queryRequestRemark-sql:"+sql); while (rs.next()){ String nodeid = Util.null2String(rs.getString("nodeid")); String nodename = Util.null2String(rs.getString("nodename")); String workflowname = Util.null2String(rs.getString("workflowname")) ; String requestname = Util.null2String(rs.getString("requestname")) ; - map = new HashMap(); + + Map map = new HashMap(); map.put("requestid",requestid); map.put("userid",userid+""); map.put("nodeid",nodeid); @@ -125,9 +136,177 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy map.put("lcid",requestid); remark9List.add(map); } + + bb.writeLog("remark9List:"+remark9List); }catch (Exception e){ bb.writeLog("queryRequestRemark-e:"+e); } return remark9List; } + + /** + * 点击流程抄送需提交的<批注>按钮,完成抄送流程的门户调用 + * + * @param list + * @param loginid + */ + public void completeRequestRemark9ByRemarkSubmit(List> list,String loginid,String notes,String currentUserid){ + BaseBean bb = new BaseBean(); + bb.writeLog("completeRequestRemark9ByRemarkSubmit-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("completeRequestRemark9ByRemarkSubmit-userid:"+userid); + bb.writeLog("completeRequestRemark9ByRemarkSubmit-nodeid:"+nodeid); + bb.writeLog("completeRequestRemark9ByRemarkSubmit-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + completeRequestRemark9ByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,currentUserid); + } + } + } + + + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + */ + private void completeRequestRemark9ByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String currentUserid){ + BaseBean bb = new BaseBean(); + bb.writeLog("completeRequestRemark9ByUserid-requestid:"+requestid); + String zhjkbs = "com.customization.dito.sendtodo.SendPortalRemarkCmd.completeRequestRemark9ByUserid" ; + + 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"); + } + + 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("monitorFinishedWorkflowCopyToByUserid:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + 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("completeRequestRemark9ByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("completeRequestRemark9ByUserid-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); + + updateCurrentoperatorRemark(requestid,currentUserid,"8,9"); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * + * @param requestid + * @param currentUserid + * @param preisremark + */ + public void updateCurrentoperatorRemark(String requestid,String currentUserid,String preisremark){ + + BaseBean bb = new BaseBean(); + bb.writeLog("updateCurrentoperatorRemark-new-requestid:"+requestid); +// 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="+currentUserid; +// boolean isTrue = rs.executeUpdate(sql); +// bb.writeLog("updateCurrentoperatorRemark-sql:"+sql +" isTrue:"+isTrue); +// } +// }catch (Exception e){ +// bb.writeLog("updateCurrentoperatorRemark-e:"+e); +// } + + UpdateRequestRemarkViewDateRunnable updateRequestRemarkViewDateRunnable = new UpdateRequestRemarkViewDateRunnable(requestid,currentUserid,preisremark); + new Thread(updateRequestRemarkViewDateRunnable).start(); + + } + + } diff --git a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java index 0f21383a..62ec2745 100644 --- a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java @@ -21,6 +21,8 @@ public class SendPortalToReadUtil { //public static String EMAIL_REGEX_DEFAULT = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + /*** * 流程发起节点,提交到下个节点,发起节点没有待办,下个节点有待办 * @param requestid @@ -38,12 +40,6 @@ public class SendPortalToReadUtil { bb.writeLog("SendPortalToReadUtil-sendToReadDataByCreateNode"); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; - - JSONObject requestObject = new JSONObject(); - Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); String currentUserId = user.getUID()+"" ; String terminal = "1" ; @@ -51,16 +47,9 @@ public class SendPortalToReadUtil { String taskType = "1"; String objectAction = "0" ; String objectType = "0"; - String emailArray = ""; try { String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - JSONArray taskObjectList = new JSONArray(); - String createrLastname = ""; - String createrLoginid = "" ; - String requestname = ""; - String workflowname = "" ; - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -71,114 +60,88 @@ public class SendPortalToReadUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - 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 ; + 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("sendToReadDataByNode--sql:"+sql); rs.executeQuery(sql); - if (rs.next()){ - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - createrLastname = Util.null2String(rs.getString("lastname")) ; - createrLoginid = Util.null2String(rs.getString("loginid")) ; + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")) ; + String nodename = Util.null2String(rs.getString("nodename")) ; + String email = Util.null2String(rs.getString("email")) ; + 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("email",email); + taskObject.put("loginid",loginid); + taskObject.put("staffid",staffid); + taskObject.put("userid",userid); + taskObjectList.add(taskObject); } - requestObject.put("center",center); - requestObject.put("title",requestname); - 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("urlDing",urlDing); - requestObject.put("ticketType",workflowname); - requestObject.put("urlApp",urlApp); - requestObject.put("creator",createrLoginid); - - 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 ; - - bb.writeLog("sendToReadDataByNode--sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - String lcid = Util.null2String(rs.getString("requestid")) ; - String nodeid = Util.null2String(rs.getString("nodeid")) ; - String nodename = Util.null2String(rs.getString("nodename")) ; - String email = Util.null2String(rs.getString("email")) ; - String staffid = Util.null2String(rs.getString("staffid")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String userid = Util.null2String(rs.getString("userid")) ; - - JSONObject taskObject = new JSONObject(); - taskObject.put("lcid",lcid); - taskObject.put("nodeid",nodeid); - taskObject.put("nodename",nodename); - taskObject.put("email",email); - taskObject.put("creator",creator); - taskObject.put("staffid",staffid); - taskObject.put("userid",userid); - taskObjectList.add(taskObject); - } - - for(int i=0;i 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+ - " and t2.nodeid = " + noideid ; - - bb.writeLog("sendToReadDataByNode--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + 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"); + + int count = requestBaseInfoUtil.getTodoCountByRequestNode(requestid,prenodeid); +// String countSql=" select t2.userid \n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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+ +// " and t2.nodeid = " + nodeid ; +// +// bb.writeLog("sendToReadDataByNode--countSql:"+countSql); +// rs.executeQuery(countSql); +// while (rs.next()){ +// count++; +// } bb.writeLog("SendPortalToReadUtil-sendToReadDataByNode--count:"+count); if(count == 0) { - String workflowname = "" ; - String requestname = ""; - String createrLastname = ""; - String createrLoginid = ""; JSONArray taskObjectList = new JSONArray(); - 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("SendPortalToReadUtil-sendToReadDataByNode--sql:" + sql); - rs.executeQuery(sql); - if (rs.next()) { - workflowname = Util.null2String(rs.getString("workflowname")); - requestname = Util.null2String(rs.getString("requestname")); - createrLastname = Util.null2String(rs.getString("lastname")) ; - createrLoginid = Util.null2String(rs.getString("loginid")) ; - } - - requestObject.put("center", center); - requestObject.put("title", requestname); - 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("urlDing", urlDing); - requestObject.put("ticketType", workflowname); - requestObject.put("creator",createrLoginid); - requestObject.put("urlApp",urlApp); - - 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 ; - + String sql = requestBaseInfoUtil.getRemark89Sql(requestid); bb.writeLog("SendPortalToReadUtil-sendToReadDataByNode--sql:" + sql); rs.executeQuery(sql); while (rs.next()) { - String lcid = Util.null2String(rs.getString("requestid")) ; String nodeid = Util.null2String(rs.getString("nodeid")) ; String nodename = Util.null2String(rs.getString("nodename")) ; - String email = Util.null2String(rs.getString("email")) ; String staffid = Util.null2String(rs.getString("staffid")) ; - String creator = Util.null2String(rs.getString("loginid")) ; + String loginid = Util.null2String(rs.getString("loginid")) ; String userid = Util.null2String(rs.getString("userid")) ; JSONObject taskObject = new JSONObject(); - taskObject.put("lcid",lcid); taskObject.put("nodeid",nodeid); taskObject.put("nodename",nodename); - taskObject.put("email",email); - taskObject.put("creator",creator); + taskObject.put("loginid",loginid); taskObject.put("staffid",staffid); taskObject.put("userid",userid); taskObjectList.add(taskObject); @@ -353,21 +264,15 @@ public class SendPortalToReadUtil { for (int i = 0; i < taskObjectList.size(); i++) { JSONObject dataObject = taskObjectList.getJSONObject(i); - String lcid = dataObject.getString("lcid"); String nodeid = dataObject.getString("nodeid"); String nodename = dataObject.getString("nodename"); - String email = dataObject.getString("email"); - String creator = dataObject.getString("creator"); + String loginid = dataObject.getString("loginid"); String userid = dataObject.getString("userid"); - if("sysadmin".equals(creator)){ - creator = "Admin"; - } + String staffid = dataObject.getString("staffid"); JSONObject taskObject = new JSONObject(); - String objectCode = creator ; - String operatorCode = creator ; - - String staffid = dataObject.getString("staffid"); + String objectCode = loginid ; + String operatorCode = loginid ; taskObject.put("objectAction",objectAction); taskObject.put("objectType",objectType); @@ -377,9 +282,25 @@ public class SendPortalToReadUtil { 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", lcid+"_cs_"+userid); + requestObject.put("taskCode", requestid+"_cs_"+userid); requestObject.put("taskObjectList",taskArray); String auth = username + ":" + passwd; @@ -391,6 +312,7 @@ public class SendPortalToReadUtil { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { + // Matcher matcher = regex.matcher(email); // if (matcher.matches()) { // emailArray += StringUtils.isEmpty(emailArray) ? email : "," + email; @@ -420,8 +342,6 @@ public class SendPortalToReadUtil { } } } - - } } catch (Exception e) { e.printStackTrace(); diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java index 2c740282..0f8f9c78 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java @@ -1,6 +1,5 @@ package com.customization.dito.sendtodo; -import com.engine.workflow.constant.requestForm.RequestExecuteType; import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.agent.SendPortalToReadByAgentUtil; @@ -13,7 +12,11 @@ import com.engine.workflow.entity.requestForm.RequestOperationResultBean; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; -import weaver.interfaces.dito.monitor.SendPortalMonitorUtil; +import weaver.interfaces.dito.delete.RequestDeleteQueryPortalUtil; +import weaver.interfaces.dito.delete.RequestDeleteSendPortalUtil; +import weaver.interfaces.dito.intervention.RequestInterventionSendPortalUtil; +import weaver.interfaces.dito.intervention.RequestInterventionQueryUtil; +import weaver.interfaces.dito.reject.RequestRejectSendPortalUtil; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; @@ -54,6 +57,7 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype")); String creater = Util.null2String(request.getParameter("creater")); String intervenorid = Util.null2String(request.getParameter("Intervenorid")); + String agentorByAgentId = Util.null2String(request.getParameter("agentorByAgentId")); // Map params = ParamUtil.request2Map(request); @@ -78,44 +82,57 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> bb.writeLog("creater:"+creater); bb.writeLog("agentType:"+agentType); bb.writeLog("intervenorid:"+intervenorid); + bb.writeLog("agentorByAgentId:"+agentorByAgentId); List> copyList = new ArrayList>(); List> forwardList = new ArrayList>(); List> atList = new ArrayList>(); - + List> baseList = new ArrayList>(); try{ SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - if("intervenor".equals(src)){ - if(StringUtils.isNotBlank(intervenorid)){ - if("1".equals(agentType)){ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,intervenorid); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,intervenorid); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,intervenorid); - }else{ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,intervenorid); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,intervenorid); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,intervenorid); - } - }else{ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); - } - }else if("delete".equals(src)){ - if("1".equals(agentType)){ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,""); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,""); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,""); - }else{ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,""); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,""); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,""); - } + if("delete".equals(src)){ + bb.writeLog("RequestDeleteQueryPortalUtil"); + RequestDeleteQueryPortalUtil requestDeleteQueryPortalUtil = new RequestDeleteQueryPortalUtil(); + copyList = requestDeleteQueryPortalUtil.queryRequestReamrk89ByDelete(requestid); + forwardList = requestDeleteQueryPortalUtil.queryRequestForwardByDelete(requestid); + atList = requestDeleteQueryPortalUtil.queryRequestAtByDelete(requestid); + baseList = requestDeleteQueryPortalUtil.queryRequestDataByDelete(requestid); + + }else if("intervenor".equals(src)) { + + bb.writeLog("RequestInterventionQueryUtil"); + RequestInterventionQueryUtil requestInterventionQueryUtil = new RequestInterventionQueryUtil(); + Map nodeMap = requestInterventionQueryUtil.queryRequestNodeIdByIntervention(requestid); + copyList = requestInterventionQueryUtil.queryWorkflowRemark89ByRequestid(requestid,nodeMap); + forwardList = requestInterventionQueryUtil.queryWorkflowForwardByRequestid(requestid,nodeMap); + }else{ if("1".equals(agentType)){ + /** + * 被代理人提交,需要在流程监控里查看提交 + * userid == 当前登录人 == 被代理人 + */ copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + }else if("2".equals(agentType)){ + /** + * 代理人提交 + * userid = 当前登录人 == 代理人 + * agentorByAgentId = 被代理人 + * 抄送、转发 已将数据 被代理人转成代理人 + * @ 还是流程被代理人 + * + */ + if(StringUtils.isNotBlank(agentorByAgentId)){ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,agentorByAgentId); + }else{ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + } }else{ copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); @@ -131,13 +148,13 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> Map result = nextExecute(targetCommand); bb.writeLog("SendPortalTodoCmd-submit-end:"+requestid+" time:"+System.currentTimeMillis()); - sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,copyList,forwardList,atList); + sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,copyList,forwardList,atList,baseList); return result; } - public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,List> copyList,List> forwardList,List> atList){ + public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,List> copyList,List> forwardList,List> atList,List> baseList){ BaseBean bb = new BaseBean(); try{ @@ -165,7 +182,6 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String center = Constants.center; String bpm_app_requesturl = Constants.bpm_app_requesturl; - String notes = "" ; bb.writeLog("SendPortalTodoCmd-portal-start:"+requestid+" time:"+System.currentTimeMillis()); if(Util.getIntValue(requestid) == -1 && "save".equals(src)){ @@ -179,7 +195,7 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> /*** * 空值:流程正常提交 - * 1:被代理人提交流程 + * 1:被代理人提交流程,需要在流程监控里查看提交 * 2:代理人提交流程 */ if("1".equals(agentType)){ @@ -195,34 +211,65 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> notes = "流程提交"; }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ - sendPortalTodoUtil.sendTodoDataByReject(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); notes = "流程退回"; + RequestRejectSendPortalUtil requestRejectSendPortalUtil = new RequestRejectSendPortalUtil(); + requestRejectSendPortalUtil.sendTodoDataByReject(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + }else if(Util.getIntValue(requestid)> 0 && "intervenor".equals(src)){ - SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); - sendPortalMonitorUtil.monitorIntervention(requestid,userid); notes = "流程干预"; + RequestInterventionSendPortalUtil requestInterventiomSendPortalUtil = new RequestInterventionSendPortalUtil(); + requestInterventiomSendPortalUtil.monitorIntervention(requestid,userid); + }else if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ - SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); - sendPortalMonitorUtil.monitorDelete(requestid,userid); + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); + requestDeleteSendPortalUtil.monitorDelete(userid,baseList); notes = "流程页面删除"; } - bb.writeLog("sendPortalTodoDeleteUtil22:"+notes+" src:"+src); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + if("delete".equals(src)){ + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); + requestDeleteSendPortalUtil.completeRemark89ForwardAtByDelete(user,copyList,forwardList,atList,notes); + }else if("intervenor".equals(src)){ + RequestInterventionSendPortalUtil requestInterventionSendPortalUtil = new RequestInterventionSendPortalUtil(); + requestInterventionSendPortalUtil.completeRemark89ForwardByIntervention(user,copyList,forwardList,notes); + }else if("submit".equals(src) || "reject".equals(src) ){ + bb.writeLog("sendPortalTodoDeleteUtil22:"+notes+" src:"+src); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + } + bb.writeLog("SendPortalTodoCmd-portal-end:"+requestid+" time:"+System.currentTimeMillis()); + }else if("DELETE".equals(executeResult)){ - String notes = "" ; - if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ +// String notes = "" ; +// if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ +// +// SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); +// sendPortalMonitorUtil.monitorDelete(requestid,userid); +// notes = "流程页面删除"; +// } +// bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); +// SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); +// sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + + + String notes = "流程提交异常" ; + if(Util.getIntValue(requestid)> 0){ + if("delete".equals(src)){ + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); + requestDeleteSendPortalUtil.monitorDelete(userid,baseList); + notes = "流程提交异常,执行删除"; + requestDeleteSendPortalUtil.completeRemark89ForwardAtByDelete(user,copyList,forwardList,atList,notes); + }else{ - SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); - sendPortalMonitorUtil.monitorDelete(requestid,userid); - notes = "流程页面删除"; + bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); + if("submit".equals(src) || "reject".equals(src) ){ + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + } + } } - bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); }else{ bb.writeLog("SendPortalTodoCmd-FAILURE"); String portal_todourl = Constants.portal_todourl; diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java index be03950d..5866b85d 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java @@ -1,11 +1,16 @@ package com.customization.dito.sendtodo; +import com.alibaba.fastjson.JSONObject; +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; @@ -226,30 +231,32 @@ public class SendPortalTodoDeleteUtil { /** + * 打开页面详情,当前登录人的流程的抄送需提交、抄送不需提交、@的数据 * * @param requestid */ - public void queryWorkflowRemark8AtByLoadForm(String requestid,String current_userid,List> remark8List,List> atList){ + 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.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + 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 (8,18)\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")); @@ -266,15 +273,19 @@ public class SendPortalTodoDeleteUtil { 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("8".equals(preisremark)){ + }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(); @@ -283,7 +294,7 @@ public class SendPortalTodoDeleteUtil { } /*** - * + * 打开页面详情,完成抄送不需提交、@的数据门户的调用以及生成@的已办数据 * @param loginid * @param remark8List * @param atList @@ -293,73 +304,278 @@ public class SendPortalTodoDeleteUtil { BaseBean bb = new BaseBean(); SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); try{ - bb.writeLog("copyList:"+remark8List.size()); + bb.writeLog("remark8List888:"+remark8List.size()); if(remark8List.size() >0){ String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark8List,loginid,notes); } }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("remark8List3-e:"+e); } - try{ - bb.writeLog("atList:"+atList.size()); + bb.writeLog("atList888:"+atList.size()); if(atList.size() >0){ - String notes = "打开流程表单详情页面,完成@的数据"; + String notes = "打开流程表单详情页面,完成@的数据门户调用"; sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + + completePortalAtDoneByRequestid(atList,loginid); } }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + 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; + } -// public int getAtCountByRequestid(String requestid,String userid) { -// int atcount = 0 ; -// BaseBean bb = new BaseBean(); -// try{ -// RecordSet rs = new RecordSet(); -// String sql =" select t1.userid,t1.nodeid " + -// " from workflow_currentoperator t1 " + -// " where t1.isremark = 8 and preisremark = 18" + -// " and t1.requestid= " +requestid + -// " and t1.userid= " +userid ; -// bb.writeLog("completeForwardRequest --sql:" + sql); -// rs.executeQuery(sql); -// while (rs.next()) { -// atcount++ ; -// } -// }catch (Exception e){ -// -// } -// return atcount; -// } -// -// -// public int getForwardCountByRequestid(String requestid,String userid) { -// int forwardcount = 0; -// BaseBean bb = new BaseBean(); -// try{ -// RecordSet rs = new RecordSet(); -// String sql =" select t1.userid,t1.nodeid " + -// " from workflow_currentoperator t1 " + -// " where t1.isremark = 1 " + -// " and t1.requestid= " +requestid + -// " and t1.userid= " +userid ; -// bb.writeLog("completeForwardRequest --sql:" + sql); -// rs.executeQuery(sql); -// while (rs.next()) { -// forwardcount++ ; -// } -// }catch (Exception e){ -// -// } -// return forwardcount; -// -// } } diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java index b1be6ed0..437f6830 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java @@ -9,12 +9,9 @@ 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.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -22,6 +19,8 @@ import java.util.regex.Pattern; public class SendPortalTodoUtil { public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); /*** * 流程发起节点,发起保存不提交,发起节点有待办,下个节点没有待办 * @param requestid @@ -40,7 +39,6 @@ public class SendPortalTodoUtil { String emailArray = ""; - String requestname = ""; String actionType = "0" ; String terminal = "1" ; String taskType = "0"; @@ -51,26 +49,21 @@ public class SendPortalTodoUtil { String scopeid = "-1"; String scope = "HrmCustomFieldByInfoType" ; - Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); - - JSONObject requestObject = new JSONObject(); - try { - - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - - String currentNodeId = ""; - String currentNodeName = "" ; String nextNodeUserIds = ""; - String workflowname = ""; - String currentUserId = user.getUID()+""; - String createrLoginId = "" ; - String createrLastName = ""; + 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 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; @@ -79,72 +72,49 @@ public class SendPortalTodoUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - - String sql =" select t1.requestname,h1.loginid,d1.nodename,h1.email,c1."+cus_staff+" as staffid,t3.workflowname,h2.lastname,t2.userid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join cus_fielddata c1 on c1.id = t2.userid and scopeid= "+scopeid+" and 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 (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 t2.userid in ("+currentUserId+") \n" + - " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','8','9','11'))\n" + - " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+currentUserId+"))) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + - " and t2.requestid = "+requestid ; + String staffid = ""; + String sql =" select 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 scopeid= "+scopeid+" and scope = '"+scope+"' "+ + " where t2.userid in ("+currentUserId+") \n" + + " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','8','9','11'))\n" + + " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+currentUserId+"))) \n" + + " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + + " and t2.requestid = "+requestid ; bb.writeLog("sendTodoDataByCreater-sql:"+sql); rs.executeQuery(sql); if (rs.next()){ - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - - String email = Util.null2String(rs.getString("email")) ; - bb.writeLog("email1:"+email); - Matcher matcher = regex.matcher(email); - if(matcher.matches()){ - emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; - } - - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; + staffid = Util.null2String(rs.getString("staffid")); } - requestObject.put("center",center); - requestObject.put("title",requestname); + JSONObject requestObject = new JSONObject(); requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); JSONObject taskObject = new JSONObject(); - if("sysadmin".equals(createrLoginId)){ - createrLoginId = "Admin"; - } - String objectCode = createrLoginId ; String operatorCode = createrLoginId ; - String staffid = Util.null2String(rs.getString("staffid")); taskObject.put("objectAction",objectAction); taskObject.put("objectType",objectType); taskObject.put("objectCode",objectCode); @@ -157,6 +127,7 @@ public class SendPortalTodoUtil { // String username = "admin"; // String passwd = "Uportal_123"; // String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; + if (taskObjectList.size() > 0){ String auth = username + ":" + passwd; String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); @@ -230,34 +201,33 @@ public class SendPortalTodoUtil { try { String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - JSONArray taskObjectList = new JSONArray(); - String requestname = "" ; - String currentNodeId = "" ; - String currentNodeName = ""; - String workflowname = "" ; - String createrLoginId = "" ; - String createrLastName = ""; - String nextNodeUserIds = "" ; - String currentUserId = user.getUID()+"" ; - - 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("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - } + 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 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 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t1.requestid = "+requestid ; +// +// bb.writeLog("sendTodoDataByNode--sql:"+sql); +// rs.executeQuery(sql); +// if (rs.next()){ +// requestname = Util.null2String(rs.getString("requestname")) ; +// currentNodeId = Util.null2String(rs.getString("nodeid")) ; +// currentNodeName = Util.null2String(rs.getString("nodeName")) ; +// workflowname = Util.null2String(rs.getString("workflowname")) ; +// createrLastName = Util.null2String(rs.getString("lastname")) ; +// createrLoginId = Util.null2String(rs.getString("loginid")) ; +// } String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -270,34 +240,42 @@ public class SendPortalTodoUtil { } JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); - requestObject.put("title",requestname); + requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - 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" + - " 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 = '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; + + String nextNodeUserIds = "" ; + String currentUserId = user.getUID()+"" ; + + JSONArray taskObjectList = new JSONArray(); +// String 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; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); @@ -306,28 +284,28 @@ public class SendPortalTodoUtil { String userocde = Util.null2String(rs.getString("loginid")) ; String staffid = Util.null2String(rs.getString("staffid")) ; String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; - - if("sysadmin".equals(userocde)){ - userocde = "Admin"; - } + if(!"0".equals(userid)){ + nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; - String objectCode = userocde ; - String operatorCode = userocde ; + if(StringUtils.isNotBlank(userocde)){ + String objectCode = userocde ; + String operatorCode = userocde ; - 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); + 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("email2:"+email); - Matcher matcher = regex.matcher(email); - if(matcher.matches()){ - emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email2:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } } } @@ -353,7 +331,6 @@ public class SendPortalTodoUtil { } 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); @@ -465,20 +442,21 @@ public class SendPortalTodoUtil { * 如果流程提交节点还有待办,意味着流程还是提交节点,只是提交节点一个人删除待办 * 如果流程提交节点没有待办,意味着流程流转到下个节点,那么查询出来的待办都有新增,并且删除提交节点的所有待办 * @param requestid - * @param noideid + * @param nodeid * @param user */ - public void sendTodoDataByNode(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){ + public void sendTodoDataByNode(String requestid,String nodeid,User user,String portal_todourl,String bpm_app_workflowurl,String username,String passwd,String bpm_workflowurl,String center,String 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"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); bb.writeLog("sendTodoDataByNode"); String cus_staff = PropBean.getUfPropValue("cus_staff") ; @@ -491,40 +469,27 @@ public class SendPortalTodoUtil { String emailArray = ""; Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); try { - String createrLoginId = ""; - String currentNodeId = "" ; - String currentNodeName = "" ; String nextNodeUserIds = "" ; - String currentLoginId = user.getLoginid() ; - String currentStaffId = "" ; - String createrLastName = "" ; - String currentUserId = user.getUID()+"" ; - String message = "" ; - String userSql = "select "+cus_staff+" as staffid from cus_fielddata where scopeid="+scopeid+" and scope='"+scope+"' and id=?"; - rs.executeQuery(userSql,currentUserId); - if (rs.next()){ - currentStaffId = Util.null2String(rs.getString("staffid")); - } + + 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 currentnodeid = "" ; - String currentnodetype = "" ; - String nodesql = " select t1.currentnodeid,t1.currentnodetype "+ - " from workflow_requestbase t1\n" + - " where ifnull(t1.deleted,0) <> 1 \n" + - " and t1.requestid = "+requestid ; - rs.executeQuery(nodesql); - if(rs.next()){ - currentnodeid = Util.null2String(rs.getString("currentnodeid")); - currentnodetype = Util.null2String(rs.getString("currentnodetype")); - } + String currentnodetype = baseMap.get("currentnodetype"); - bb.writeLog("sendTodoDataByNode-currentnodeid:"+currentnodeid); bb.writeLog("sendTodoDataByNode-currentnodetype:"+currentnodetype); if("3".equals(currentnodetype)){ + String currentUserId = user.getUID()+"" ; + message = "流程流转到归档节点,执行actionType=3" ; String actionType = "3" ; try { @@ -538,42 +503,24 @@ public class SendPortalTodoUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorDelete4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } + 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("title",requestname); requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("sendTodoDataByNode-3-requestObject:"+requestObject.toJSONString()); @@ -585,10 +532,10 @@ public class SendPortalTodoUtil { if(msgObject.containsKey("resultCode")){ String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); } } } @@ -597,64 +544,22 @@ public class SendPortalTodoUtil { bb.writeLog("sendTodoDataByNode:"+e); } }else{ - message += "流程流转从"+noideid+"节点提交,待办人员:" ; - int count = 0 ; - String countuserids = "" ; - String countSql = " select t2.userid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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+ - " and t2.nodeid = " + noideid ; - - bb.writeLog("sendTodoDataByNode--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - String userid = Util.null2String(rs.getString("userid")); - countuserids += StringUtils.isBlank(countuserids) ? userid : ","+userid; - bb.writeLog("sendTodoDataByNode-userid:"+userid); - count++; - } - - message = message + "["+countuserids+"]" ; - - bb.writeLog("sendTodoDataByNode--count:"+count); + message += "流程流转从"+nodeid+"节点提交,待办人员:" ; + int count = requestBaseInfoUtil.getTodoCountByRequestNode(requestid,nodeid); + // count >0 会签还没有流转到下个节点 + if(count >0){ - String requestname = "" ; - String workflowname = "" ; + message += ",流程流转到"+currentNodeId+"节点,执行actionType=1" ; - if(count >0){ + 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 sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendTodoDataByNode--sql:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - } - - message += ",流程流转到"+currentNodeId+"节点,执行actionType=1" ; - 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; @@ -664,27 +569,26 @@ public class SendPortalTodoUtil { urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - if("sysadmin".equals(currentLoginId)){ - currentLoginId = "Admin"; - } - bb.writeLog("urlDing", urlDing); - requestObject.put("center",center); - requestObject.put("title",requestname); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); if(StringUtils.isNotBlank(currentLoginId)){ String objectCode = currentLoginId ; @@ -698,29 +602,22 @@ public class SendPortalTodoUtil { taskObjectList.add(taskObject); } - 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; - +// String 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.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid; + + 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 userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; - - if("sysadmin".equals(usercode)){ - usercode = "Admin"; - } String objectCode = usercode ; String operatorCode = usercode ; @@ -734,15 +631,7 @@ public class SendPortalTodoUtil { 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 ; -// } } - requestObject.put("taskObjectList",taskObjectList); if (taskObjectList.size() > 0){ @@ -774,31 +663,11 @@ public class SendPortalTodoUtil { } } }else{ + String currentUserId = user.getUID()+"" ; + String objectAction = "0" ; String objectType = "0"; - JSONArray taskObjectList = new JSONArray(); - - 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("sendTodoDataByNode--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - } - 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; @@ -809,36 +678,38 @@ public class SendPortalTodoUtil { } - bb.writeLog("urlDing", urlDing); + JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); - requestObject.put("taskType",taskType); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - 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; + JSONArray taskObjectList = new JSONArray(); +// String 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; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); while (rs.next()){ @@ -846,28 +717,25 @@ public class SendPortalTodoUtil { String usercode = Util.null2String(rs.getString("loginid")) ; String staffid = Util.null2String(rs.getString("staffid")) ; String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; - - if("sysadmin".equals(usercode)){ - usercode = "Admin"; - } - - 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("0".equals(userid)){ + 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 ; + } } } @@ -876,45 +744,41 @@ public class SendPortalTodoUtil { 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); - //{"resultCode":"1","resultMsg":"No Result"} - if(msgObject.containsKey("resultCode")){ - String resultCode = msgObject.getString("resultCode"); - if("0".equals(resultCode)){ - - bb.writeLog("emailArray:"+emailArray); - if(StringUtils.isNotEmpty(emailArray)) - { + 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); + //{"resultCode":"1","resultMsg":"No Result"} + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ - Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); - String notificationSubject = templateMap.get("notificationSubject"); - String notificationContent = templateMap.get("notificationContent"); + 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); - } + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,message); + 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 resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,message); + } } } + } + } } - - // //处理抄送的 // JSONObject taskObject = new JSONObject(); // String sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ @@ -1041,46 +905,21 @@ public class SendPortalTodoUtil { String objectAction = "0" ; String objectType = "0"; - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; - + String currentUserId = user.getUID()+"" ; + String nextNodeUserIds = ""; try { - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - String actionType = "2" ; JSONArray taskObjectList = new JSONArray(); - String createrLastName = ""; - String createrLoginId = ""; - String workflowname = "" ; - String requestname = ""; - String currentNodeId = ""; - String currentNodeName = "" ; - String nextNodeUserIds = "" ; - String currentUserId = user.getUID()+"" ; + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname "+ - " 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("sendTodoDataByReject--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - } + 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 urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -1093,49 +932,44 @@ public class SendPortalTodoUtil { } JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); - requestObject.put("title",requestname); + requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - 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; +// String 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; + + 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")) ; - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; JSONObject taskObject = new JSONObject(); - - if("sysadmin".equals(usercode)){ - usercode = "Admin"; - } - String objectCode = usercode ; String operatorCode = usercode ; @@ -1153,7 +987,6 @@ public class SendPortalTodoUtil { emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; } } - requestObject.put("taskObjectList",taskObjectList); String auth = username + ":" + passwd; diff --git a/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java b/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java index fbb2ea9e..d8939ad5 100644 --- a/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java @@ -8,6 +8,8 @@ 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.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; @@ -16,17 +18,15 @@ import java.util.Map; public class SendPortalWithAddDoneCmd { private Map params; - public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; public SendPortalWithAddDoneCmd(Map params){ - this.params=params; + this.params = params; } public Map execute(CommandContext commandContext) { BaseBean bb = new BaseBean(); List> allDonelist = (List>)(params.get("doneDatas")); - bb.writeLog("allDonelist:"+allDonelist.size()); String requestid = Util.null2String(params.get("requestid")); List> donelist = new ArrayList>(); List userList = getRequestArchivedReamrkUserIds(requestid); @@ -38,15 +38,22 @@ public class SendPortalWithAddDoneCmd { donelist.add(doneMap); } } - bb.writeLog("donelist:"+donelist.size()); - String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); - String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); - String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); - String username = PropBean.getUfPropValue("username"); - String passwd = PropBean.getUfPropValue("passwd"); - String center = PropBean.getUfPropValue("center"); - String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); +// String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); +// String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); +// String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); +// String username = PropBean.getUfPropValue("username"); +// String passwd = PropBean.getUfPropValue("passwd"); +// String center = PropBean.getUfPropValue("center"); +// String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_doneurl = Constants.portal_doneurl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; sendPortalDoneData(requestid,donelist,portal_doneurl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,bpm_app_requesturl); @@ -127,10 +134,6 @@ public class SendPortalWithAddDoneCmd { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); -// RecordSet rs = new RecordSet(); -// String scopeid = "-1"; -// String scope = "HrmCustomFieldByInfoType" ; - try { String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); @@ -153,148 +156,47 @@ public class SendPortalWithAddDoneCmd { for (Map doneMap:donelist) { -// boolean bool = checkIsAgent(workflowid,userid); -// bb.writeLog("=============== SendPortalWithAddDoneCmd bool =================== " + bool); - //没有流程代理的情况下 -// if(!bool){ - //判断是否是抄送流程 - // String cus_staff = PropBean.getUfPropValue("cus_staff") ; -// String sql = " select count(1) num "+ -// " 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 t1.currentnodetype <> 3"+ -// " and t2.isremark in ('2','9')\n" + -// " and t2.preisremark in ('8','9')\n" + -// " and t2.islasttimes = 1\n" + -// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + -// " and t2.requestid = "+requestid + " and t2.userid = "+ userid; -// -// rs.executeQuery(sql); -// int num = 0; -// //过滤非归档节点,抄送待阅流程 -// if(rs.next()){ -// num = rs.getInt("num"); -// } -// //判断是否为转发节点 -// sql = "SELECT c1."+ PropBean.getUfPropValue("cus_staff")+" as staffid FROM workflow_currentoperator t1 left join cus_fielddata c1 on c1.id = t1.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' WHERE t1.preisremark=1 and t1.REQUESTID=? and t1.USERID=?"; -// rs.executeQuery(sql,requestid,doneMap.get("id")); -// if (rs.next()){ -// //删除转发的待办 -// JSONObject jsonObject = new JSONObject(); -// -// jsonObject.put("center",center); -// jsonObject.put("title",doneMap.get("requestname")); -// jsonObject.put("creator",doneMap.get("creater")); -// jsonObject.put("taskCode","weaver"+requestid); -// -// jsonObject.put("taskType","0"); -// jsonObject.put("actionType","1"); -// jsonObject.put("createDate",processTime); -// jsonObject.put("messageTitle",getShortMessageTitle(doneMap.get("requestname").toString())); -// jsonObject.put("messageContent",doneMap.get("requestname")); -// jsonObject.put("terminal","1"); -// jsonObject.put("urlPc",urlPc); -// jsonObject.put("urlApp",urlApp); -// jsonObject.put("urlDing",urlDing); -// jsonObject.put("nodeName",doneMap.get("nodename")); -// jsonObject.put("ticketType",doneMap.get("workflowname")); -// -// JSONArray list = new JSONArray(); -// JSONObject taskObject = new JSONObject(); -// list.add(taskObject); -// taskObject.put("objectAction","1"); -// taskObject.put("objectType","0"); -// taskObject.put("objectCode",doneMap.get("loginid")); -// taskObject.put("objectId",rs.getString("staffid")); -// taskObject.put("operatorCode",doneMap.get("loginid")); -// jsonObject.put("taskObjectList",list); -// bb.writeLog("SendPortalWithAddDoneCmd--delete forward workflow--requestObject:" + jsonObject.toJSONString()); -// String auth = username + ":" + passwd; -// String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, jsonObject.toJSONString(), auth); -// bb.writeLog("SendPortalToReadUtil-msgdata:" + msgdata); -// if(StringUtils.isNotEmpty(msgdata)) { -// JSONObject msgObject = JSONObject.parseObject(msgdata); -// if(msgObject.containsKey("resultCode")){ -// String resultCode = msgObject.getString("resultCode"); -// if(!"0".equals(resultCode)){ -// String resultmsg = msgObject.getString("resultMsg"); -// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,doneMap.get("id").toString(),doneMap.get("nodename").toString(),doneMap.get("id").toString(),jsonObject.toJSONString(),resultCode,resultmsg); -// } -// } -// } -// -// } -// if (num == 0){ -// bb.writeLog("num :"+num+",userid"+doneMap.get("id")); -// String nodeid = requestid+doneMap.get("id"); - - String workflowid = Util.null2String(doneMap.get("workflowid")); - String userid = Util.null2String(doneMap.get("userid")); - bb.writeLog("=============== SendPortalWithAddDoneCmd workflowid =================== " + workflowid); - bb.writeLog("=============== SendPortalWithAddDoneCmd userid =================== " + userid); - - String workflowname = Util.null2String(doneMap.get("workflowname")); - String requestname = Util.null2String(doneMap.get("requestname")); - String loginid = Util.null2String(doneMap.get("loginid")); - bb.writeLog("loginid1:"+loginid); - if("sysadmin".equals(loginid)){ - loginid = "Admin"; + String workflowid = Util.null2String(doneMap.get("workflowid")); + String userid = Util.null2String(doneMap.get("userid")); + + String workflowname = Util.null2String(doneMap.get("workflowname")); + String requestname = Util.null2String(doneMap.get("requestname")); + String loginid = Util.null2String(doneMap.get("loginid")); + String creater = Util.null2String(doneMap.get("creater")); + + String nodeName = Util.null2String(doneMap.get("nodename")); + + String nodeid = requestid+userid+"_"+System.currentTimeMillis(); + + JSONObject requestObject = new JSONObject(); + requestObject.put("center", center); + requestObject.put("taskCode", "weaver"+requestid); + requestObject.put("nodeId", nodeid); + requestObject.put("ticketType", workflowname); + requestObject.put("title", requestname); + requestObject.put("creator", creater); + requestObject.put("processStaff", loginid); + requestObject.put("processTime", processTime); + requestObject.put("isRecall", isRecall); + requestObject.put("actionType", actionType); + requestObject.put("urlPC", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); + if(StringUtils.isNotEmpty(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); } - bb.writeLog("loginid2:"+loginid); - - String creater = Util.null2String(doneMap.get("creater")); - bb.writeLog("creater1:"+creater); - if("sysadmin".equals(creater)){ - creater = "Admin"; - } - bb.writeLog("creater2:"+creater); - - String nodeName = Util.null2String(doneMap.get("nodename")); -// String nodeid = Util.null2String(doneMap.get("noedid")); -// bb.writeLog("nodeid:"+nodeid); -// if(StringUtils.isBlank(nodeid)){ -// nodeid = requestid+userid; ; -// } -// bb.writeLog("nodeid2:"+nodeid); - - String nodeid = requestid+userid+"_"+System.currentTimeMillis(); - - JSONObject requestObject = new JSONObject(); - requestObject.put("center", center); - requestObject.put("taskCode", "weaver"+requestid); - requestObject.put("nodeId", nodeid); - requestObject.put("ticketType", workflowname); - requestObject.put("title", requestname); - requestObject.put("creator", creater); - requestObject.put("processStaff", loginid); - requestObject.put("processTime", processTime); - requestObject.put("isRecall", isRecall); - requestObject.put("actionType", actionType); - requestObject.put("urlPC", urlPc); - requestObject.put("urlApp", urlApp); - requestObject.put("urlDing",urlDing); - - String auth = username + ":" + passwd; - bb.writeLog("done requestObject:" + requestObject.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); - bb.writeLog("done 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.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); - } - } - } -// } + } + } } } catch (Exception e) { bb.writeLog("done Exception"); diff --git a/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java index f9b08b9d..7dbb1666 100644 --- a/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java @@ -115,7 +115,7 @@ public class SendPortalWithAddTodoCmd { " 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" + + " 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 ; diff --git a/src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java b/src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java new file mode 100644 index 00000000..70d68df6 --- /dev/null +++ b/src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java @@ -0,0 +1,255 @@ +package com.customization.dito.sendtodo.withdraw; + +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.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.RequestWithdrawCmd; +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 javax.servlet.http.HttpServletRequest; +import java.net.URLEncoder; +import java.util.*; + +/** + * @Title + * @Author shil + * @CreateDate 2023/10/9 + * @Version 1.0 + * @Description + */ + +@CommandDynamicProxy(target = RequestWithdrawCmd.class, desc="流程撤回给门户发送待办消息") +public class SendPortalWithDrawCmd extends AbstractCommandProxy> { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + @Override + public Map execute(Command> targetCommand) { + BaseBean bb = new BaseBean(); + bb.writeLog("SendPortalWithDrawCmd"); + + RequestWithdrawCmd requestWithdrawCmd = (RequestWithdrawCmd) targetCommand; + HttpServletRequest request = requestWithdrawCmd.getRequest(); + + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String actionType = Util.null2String(request.getParameter("actionType")).trim(); + User user = requestWithdrawCmd.getUser(); + bb.writeLog("requestid:"+requestid); + bb.writeLog("actionType:"+actionType); + bb.writeLog("user:"+user.getLoginid()); + + Map result = nextExecute(targetCommand); + + if("submit".equals(actionType)){ + sendPortalByWithDraw(result,requestid,user); + } + + return result; + } + + + public void sendPortalByWithDraw(Map resultMap,String requestid,User user){ + BaseBean bb = new BaseBean(); + bb.writeLog("sendPortalByWithDraw:"+requestid); + if(resultMap.containsKey("result")){ + String result = Util.null2String(resultMap.get("result")); + bb.writeLog("result:"+result); + if("success".equals(result)){ + if(StringUtils.isNotBlank(requestid)){ + sendTodoDataByForceBack(requestid); + } + } + } + } + + public String sendTodoDataByForceBack(String requestid){ + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByForceBack:"+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; + RecordSet rs = new RecordSet(); + String message = "流程页面撤回操作"; + + String zhjkbs = "com.customization.dito.sendtodo.withdraw.SendPortalWithDrawCmd.sendTodoDataByForceBack" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String terminal = "1" ; + String taskType = "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.lang3.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + 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 currentnodeid = baseMap.get("currentnodeid"); + + bb.writeLog("sendTodoDataByForceBack-currentnodetype:"+currentnodetype); + + if("3".equals(currentnodetype)){ + message += ",流程状态为归档"; + String actionType = "3" ; + 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("sendTodoDataByForceBack-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByForceBack:"+e); + } + }else{ + String actionType = "2"; + String objectAction = "0" ; + String objectType = "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("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 =" 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.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByForceBack--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); + } + + requestObject.put("actionType",actionType); + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack--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,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + +} diff --git a/src/com/customization/wfTodoCard/ButtonInfo.java b/src/com/customization/wfTodoCard/ButtonInfo.java new file mode 100644 index 00000000..f0595a5d --- /dev/null +++ b/src/com/customization/wfTodoCard/ButtonInfo.java @@ -0,0 +1,70 @@ +package com.customization.wfTodoCard; + +/* + * 按钮对象 + */ +public class ButtonInfo { + private String name; + private String color; + private String callUrl; + private String callParam; + private String callMethod; + private String callStatus; + private String callAuth; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getCallUrl() { + return callUrl; + } + + public void setCallUrl(String callUrl) { + this.callUrl = callUrl; + } + + public String getCallParam() { + return callParam; + } + + public void setCallParam(String callParam) { + this.callParam = callParam; + } + + public String getCallMethod() { + return callMethod; + } + + public void setCallMethod(String callMethod) { + this.callMethod = callMethod; + } + + public String getCallStatus() { + return callStatus; + } + + public String getCallAuth() { + return callAuth; + } + + public void setCallAuth(String callAuth) { + this.callAuth = callAuth; + } + + public void setCallStatus(String callStatus) { + this.callStatus = callStatus; + } +} diff --git a/src/com/customization/wfTodoCard/CardInfo.java b/src/com/customization/wfTodoCard/CardInfo.java new file mode 100644 index 00000000..14a965f4 --- /dev/null +++ b/src/com/customization/wfTodoCard/CardInfo.java @@ -0,0 +1,65 @@ +package com.customization.wfTodoCard; + + +import java.util.List; + +/* + * 卡片对象 + */ +public class CardInfo { + + private TitleInfo titleInfo; + private List contentInfos; + private String warnMsg; + private String expandMsg; + private ViewDetail viewDetailInfo; + private List buttonInfos; + + public TitleInfo getTitleInfo() { + return titleInfo; + } + + public void setTitleInfo(TitleInfo titleInfo) { + this.titleInfo = titleInfo; + } + + public List getContentInfos() { + return contentInfos; + } + + public void setContentInfos(List contentInfos) { + this.contentInfos = contentInfos; + } + + public String getWarnMsg() { + return warnMsg; + } + + public void setWarnMsg(String warnMsg) { + this.warnMsg = warnMsg; + } + + public String getExpandMsg() { + return expandMsg; + } + + public void setExpandMsg(String expandMsg) { + this.expandMsg = expandMsg; + } + + public ViewDetail getViewDetailInfo() { + return viewDetailInfo; + } + + public void setViewDetailInfo(ViewDetail viewDetailInfo) { + this.viewDetailInfo = viewDetailInfo; + } + + public List getButtonInfos() { + return buttonInfos; + } + + public void setButtonInfos(List buttonInfos) { + this.buttonInfos = buttonInfos; + } +} diff --git a/src/com/customization/wfTodoCard/ContentInfo.java b/src/com/customization/wfTodoCard/ContentInfo.java new file mode 100644 index 00000000..6c113986 --- /dev/null +++ b/src/com/customization/wfTodoCard/ContentInfo.java @@ -0,0 +1,39 @@ +package com.customization.wfTodoCard; + + +/* + * 内容对象 + */ +public class ContentInfo { + + // text / imageUrl / List + // keyInfo: name / value + private String type; + private Integer order; + private String data; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } + +} diff --git a/src/com/customization/wfTodoCard/TitleInfo.java b/src/com/customization/wfTodoCard/TitleInfo.java new file mode 100644 index 00000000..09d378af --- /dev/null +++ b/src/com/customization/wfTodoCard/TitleInfo.java @@ -0,0 +1,35 @@ +package com.customization.wfTodoCard; + +/** + * 标题对象 + */ +public class TitleInfo { + + private String name; + private String iconName; + private String color; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIconName() { + return iconName; + } + + public void setIconName(String iconName) { + this.iconName = iconName; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/src/com/customization/wfTodoCard/ViewDetail.java b/src/com/customization/wfTodoCard/ViewDetail.java new file mode 100644 index 00000000..b0662807 --- /dev/null +++ b/src/com/customization/wfTodoCard/ViewDetail.java @@ -0,0 +1,35 @@ +package com.customization.wfTodoCard; + +/* + * 跳转对象 + */ +public class ViewDetail { + private String appUrl; + private String pcUrl; + // H5 miniApp webView browser + private String openMethod; + + public String getAppUrl() { + return appUrl; + } + + public void setAppUrl(String appUrl) { + this.appUrl = appUrl; + } + + public String getPcUrl() { + return pcUrl; + } + + public void setPcUrl(String pcUrl) { + this.pcUrl = pcUrl; + } + + public String getOpenMethod() { + return openMethod; + } + + public void setOpenMethod(String openMethod) { + this.openMethod = openMethod; + } +} diff --git a/src/com/customization/wfTodoCard/action/WFMessageRemindAction.java b/src/com/customization/wfTodoCard/action/WFMessageRemindAction.java new file mode 100644 index 00000000..b2bf6f77 --- /dev/null +++ b/src/com/customization/wfTodoCard/action/WFMessageRemindAction.java @@ -0,0 +1,48 @@ +package com.customization.wfTodoCard.action; + +import com.alibaba.fastjson.JSONObject; +import weaver.conn.RecordSet; +import weaver.general.StringUtil; +import weaver.general.Util; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.core.Context; +import java.util.HashMap; +import java.util.Map; + +/* + * 废弃不用 + */ +public class WFMessageRemindAction { + + + + public String checkUser(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap<>(); + String workflowId = Util.null2String(request.getParameter("workflowId")); + String messageRemindScope = Util.null2String(request.getParameter("messageRemindScope")); + + RecordSet recordSet = new RecordSet(); + if(!StringUtil.isEmpty(messageRemindScope)){ + recordSet.execute("update workflow_base set messageRemindScope = '"+messageRemindScope+"' where id = '"+workflowId+"'"); + apidatas.put("success", "1"); + }else{ + apidatas.put("success", "0"); + } + return JSONObject.toJSONString(apidatas); + } + + + public String getRemindScope(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap<>(); + String workflowId = Util.null2String(request.getParameter("workflowId")); + + RecordSet recordSet = new RecordSet(); + recordSet.execute("select messageRemindScope from workflow_base where id = '"+workflowId+"'"); + if(recordSet.next()){ + apidatas.put("messageRemindScope", recordSet.getString("messageRemindScope")); + } + return JSONObject.toJSONString(apidatas); + } +} diff --git a/src/com/customization/wfTodoCard/entity/NodeOperator.java b/src/com/customization/wfTodoCard/entity/NodeOperator.java new file mode 100644 index 00000000..9db458e1 --- /dev/null +++ b/src/com/customization/wfTodoCard/entity/NodeOperator.java @@ -0,0 +1,196 @@ +package com.customization.wfTodoCard.entity; + +// ڵ +public class NodeOperator { + private String id; + private String workCode; + private String workflowId; + private String nodeId; + private String userId; + private String processUser; + private String preisremark; + private String isremark; + private String operatetype; + private String handleForwardId; + private String signOrder; + private String isReject; + private String isbereject; + private String isEnd; + private String receiveDate; + private String receiveTime; + private String requestId; + private String isStart; // + private String createDate; + private String createTime; + + private String language; + + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getCreateDate() { + return createDate; + } + + public void setCreateDate(String createDate) { + this.createDate = createDate; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getRequestId() { + return requestId; + } + + public String getIsbereject() { + return isbereject; + } + + public void setIsbereject(String isbereject) { + this.isbereject = isbereject; + } + + public String getIsStart() { + return isStart; + } + + public void setIsStart(String isStart) { + this.isStart = isStart; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getWorkCode() { + return workCode; + } + + public String getReceiveDate() { + return receiveDate; + } + + public void setReceiveDate(String receiveDate) { + this.receiveDate = receiveDate; + } + + public String getReceiveTime() { + return receiveTime; + } + + public void setReceiveTime(String receiveTime) { + this.receiveTime = receiveTime; + } + + public void setWorkCode(String workCode) { + this.workCode = workCode; + } + + public String getWorkflowId() { + return workflowId; + } + + public void setWorkflowId(String workflowId) { + this.workflowId = workflowId; + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getProcessUser() { + return processUser; + } + + public void setProcessUser(String processUser) { + this.processUser = processUser; + } + + public String getPreisremark() { + return preisremark; + } + + public void setPreisremark(String preisremark) { + this.preisremark = preisremark; + } + + public String getIsremark() { + return isremark; + } + + public void setIsremark(String isremark) { + this.isremark = isremark; + } + + public String getOperatetype() { + return operatetype; + } + + public void setOperatetype(String operatetype) { + this.operatetype = operatetype; + } + + public String getHandleForwardId() { + return handleForwardId; + } + + public void setHandleForwardId(String handleForwardId) { + this.handleForwardId = handleForwardId; + } + + public String getSignOrder() { + return signOrder; + } + + public void setSignOrder(String signOrder) { + this.signOrder = signOrder; + } + + public String getIsReject() { + return isReject; + } + + public void setIsReject(String isReject) { + this.isReject = isReject; + } + + public String getIsEnd() { + return isEnd; + } + + public void setIsEnd(String isEnd) { + this.isEnd = isEnd; + } +} diff --git a/src/com/customization/wfTodoCard/handle/CardInfoHandler.java b/src/com/customization/wfTodoCard/handle/CardInfoHandler.java new file mode 100644 index 00000000..2efee730 --- /dev/null +++ b/src/com/customization/wfTodoCard/handle/CardInfoHandler.java @@ -0,0 +1,911 @@ +package com.customization.wfTodoCard.handle; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.*; +import com.customization.wfTodoCard.entity.NodeOperator; +import com.customization.wfTodoCard.service.TodoCardService; +import org.apache.commons.lang3.StringEscapeUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.*; + +public class CardInfoHandler extends BaseBean { + String oaHost = getPropValue("workflowTodoCard", "oahost"); + + // 获取节点操作人 + public NodeOperator getCardInfo(Integer cid){ + RecordSet rs = new RecordSet(); + String sql="select h.WORKCODE,h.systemlanguage, a.WORKFLOWID,a.REQUESTID, a.NODEID , a.USERID , a.processUser ,a.preisremark,a.RECEIVEDATE, a.RECEIVETIME , rq.CREATEDATE ,rq.CREATETIME , a.isremark ,a.operatetype, a.HANDLEFORWARDID , wg.SIGNORDER , " + + "a.isbereject, n.ISSTART, n.ISREJECT , n.ISEND " + + "from workflow_currentoperator a left join workflow_nodebase n on n.id=a.nodeid left join hrmresource h on h.id=a.USERID left join workflow_groupdetail wg on wg.id=a.GROUPDETAILID " + + "left join workflow_requestbase rq on rq.REQUESTID=a.REQUESTID " + + "where a.id="+cid;; +// String sql="select h.WORKCODE, a.WORKFLOWID,a.REQUESTID, a.NODEID , a.USERID , a.processUser ,a.preisremark,a.RECEIVEDATE, a.RECEIVETIME , a.isremark ,a.operatetype, a.HANDLEFORWARDID , wg.SIGNORDER , a.isbereject, n.ISSTART, n.ISREJECT , n.ISEND " + +// "from workflow_currentoperator a left join workflow_nodebase n on n.id=a.nodeid left join hrmresource h on h.id=a.USERID left join workflow_groupdetail wg on wg.id=a.GROUPDETAILID " + +// "where a.id="+cid; + rs.executeQuery(sql); + if (rs.next()){ + NodeOperator nodeOperator = new NodeOperator(); + nodeOperator.setId(String.valueOf(cid)); + nodeOperator.setLanguage(rs.getString("systemlanguage")); + nodeOperator.setWorkCode(rs.getString("WORKCODE")); + nodeOperator.setWorkflowId(rs.getString("WORKFLOWID")); + nodeOperator.setNodeId(rs.getString("NODEID")); + nodeOperator.setUserId(rs.getString("USERID")); + nodeOperator.setProcessUser(rs.getString("processUser")); + nodeOperator.setPreisremark(rs.getString("preisremark")); + nodeOperator.setIsremark(rs.getString("isremark")); + nodeOperator.setOperatetype(rs.getString("operatetype")); + nodeOperator.setHandleForwardId(rs.getString("HANDLEFORWARDID")); + nodeOperator.setSignOrder(rs.getString("SIGNORDER")); + nodeOperator.setIsReject(rs.getString("ISREJECT")); + nodeOperator.setIsEnd(rs.getString("ISEND")); + nodeOperator.setReceiveDate(rs.getString("RECEIVEDATE")); + nodeOperator.setReceiveTime(rs.getString("RECEIVETIME")); + nodeOperator.setRequestId(rs.getString("REQUESTID")); + nodeOperator.setIsStart(rs.getString("ISSTART")); + nodeOperator.setCreateDate(rs.getString("CREATEDATE")); + nodeOperator.setCreateTime(rs.getString("CREATETIME")); + nodeOperator.setIsbereject(Util.null2String(rs.getString("isbereject"))); + return nodeOperator; + } + return null; + } + + // 是否有必填字段 + public boolean hasNeccessryField(String nodeid) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select NODEID from workflow_nodeform where NODEID =" + nodeid + " and ISMANDATORY =1"); + if (rs.next()) { + return true; + } + return false; + } + + // 卡片通用参数 + private JSONArray getCardParam(List filedNameList,String requestName, NodeOperator nodeOperator){ + writeLog(">>>> get param "); + 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 = '" + nodeOperator.getWorkflowId() + "'"; + 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 = '" + nodeOperator.getRequestId() + "'"; + 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, nodeOperator.getLanguage()); + + 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); // 文件字段 + + writeLog("》》》 select item >> "+ JSON.toJSONString(selectItemMap)); + writeLog("》》》 liulanMap >> "+ JSON.toJSONString(liulanMap)); + + for (String tempname : filedNameList) { + String labelName = labelMap.getOrDefault(tempname,tempname); + String value = paramMap.getOrDefault(tempname, ""); + if (!"".equals(value)){ + writeLog(">>> for tempname >> "+tempname); + + if (selectItemMap.containsKey(tempname)){ // 选择框 + 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); + } + writeLog("> select item >> "+tempname+" >> "+valueList); + value = String.join(", ",valueList); + + } else if (checkSet.contains(tempname)){ // check字段 + writeLog("checkSet >> "+tempname+" >> "+value); + value= "1".equals(value) ? "Yes" : "No"; + + } else if (fileFieldSet.contains(tempname)){ // 附件字段 + 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); + writeLog("liulanMap >> "+tempname+" >> "+searchById); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + + for (String tempValue : valueArray){ + writeLog("liulanMap >> "+tempname+" >> "+searchById+" >> "+tempValue); + queryTemp.executeQuery(searchById,tempValue); + if (queryTemp.next()){ + String tempValueName = queryTemp.getString(1); + writeLog("query reuslt "); + valueList.add(tempValueName); + }else { + writeLog("query reuslt null"); + } + } + value = String.join(", ",valueList); + + } else if (commonLiuLanMap.containsKey(tempname)){ // 公共浏览框类型 + String fieldType = commonLiuLanMap.get(tempname); + 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"))); + } + 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"))); + } + 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"))); + } + writeLog("request list >> "+ JSON.toJSONString(valueList3)); + value = String.join(", ",valueList3); + break; + } + + } else { + value = value.replace(" ", " "); + value = value.replace("
", " "); + } + } + writeLog("value123:"+value); + value = StringEscapeUtils.unescapeHtml4(value); + writeLog("value234:"+value); + 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; + } + + // 流程创建人 + 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); + if (recordSet.next()){ + map.put("name",recordSet.getString("LASTNAME")); + map.put("code",recordSet.getString("WORKCODE")); + } + return map; + } + + // 转发发送人 + private Map getTransByUser(NodeOperator nodeOperator) { + Map map = new HashMap<>(); + RecordSet recordSet = new RecordSet(); + String sql = "select RECEIVEDPERSONIDS,h.LASTNAME, h.WORKCODE from workflow_requestlog a left join hrmresource h on h.id=a.OPERATOR " + + "where REQUESTID ="+nodeOperator.getRequestId()+" and logtype=7 and a.RECEIVEDPERSONIDS like '%"+nodeOperator.getUserId()+"%' and a.OPERATEDATE ='"+nodeOperator.getReceiveDate()+"' and a.OPERATETIME ='"+nodeOperator.getReceiveTime()+"'"; + recordSet.executeQuery(sql); + outerLoop: + while (recordSet.next()){ + String ids = Util.null2String(recordSet.getString("RECEIVEDPERSONIDS")); + String [] idArray = ids.split(","); + for(int i = 0; i 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; + } + + + // 获取退回操作人 + public Map getRejectUser(NodeOperator nodeOperator){ + Map map = new HashMap<>(); + + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select h.WORKCODE, h.LASTNAME from workflow_currentoperator a left join hrmresource h on h.id=a.USERID " + + "where REQUESTID ="+nodeOperator.getRequestId()+" and operatetype =3 and a.userid=a.processUser order by OPERATEDATE desc ,operatetime desc"); + if (recordSet.next()){ + map.put("name",recordSet.getString("LASTNAME")); + map.put("code",recordSet.getString("WORKCODE")); + } + return map; + } + + // 处理节点 + public void submit(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator,String warnMsg){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = null; + sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + String senderCode = sendUserMap.get("code"); + + if ("1".equals(nodeOperator.getIsbereject())){ +// sendUserMap = getRejectUser(nodeOperator); + Map rejectUser = getRejectUser(nodeOperator); + senderCode = rejectUser.get("code"); + } /*else {*/ +// } + + if ("1".equals(nodeOperator.getIsbereject())){ + cardJsonArray.add( +// new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getReceiveDate() + " " + nodeOperator.getReceiveTime()) + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + }else { + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + } + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("submit casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + if (null != warnMsg && !"".equals(warnMsg)){ + cardInfo.setWarnMsg(warnMsg); + } + + // 添加按钮 + List buttonInfos = new ArrayList<>(); + boolean flag = hasNeccessryField(nodeOperator.getNodeId());//是否有必填字段 + boolean isreject = "1".equals(nodeOperator.getIsReject());//是否可拒绝 + + if (isreject){ // 审批节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Confirmed"); + + buttonInfos.add(btn1); + } else { + + /*按钮2*/ + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", nodeOperator.getRequestId()); + callParam2.put("workflowid", nodeOperator.getWorkflowId()); + btn2.setCallParam(callParam2.toJSONString()); + btn2.setCallAuth(callAuth); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + + /*按钮1*/ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Confirmed"); + + buttonInfos.add(btn1); + + } + + } else { // 处理节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + }else{ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + } + } + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(senderCode, nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + + // 催办 + public void cuiban(String sendUserId, String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator,String warnMsg,String expandMsg){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = null; +// if ("1".equals(nodeOperator.getIsbereject())){ +// sendUserMap = getRejectUser(nodeOperator); +// } else { + sendUserMap = getRequestCreator(nodeOperator.getRequestId()); +// } + +// if ("1".equals(nodeOperator.getIsbereject())){ +// cardJsonArray.add( +// new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) +// ); +// }else { + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); +// } + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("submit casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + if (null != expandMsg && !"".equals(expandMsg)){ + expandMsg = expandMsg.replace(" "," "); + expandMsg = expandMsg.replace("

",""); + expandMsg = expandMsg.replace("

",""); + + + expandMsg = StringEscapeUtils.unescapeHtml4(expandMsg); + + cardInfo.setExpandMsg(expandMsg); + } + if (null != warnMsg && !"".equals(warnMsg)){ + cardInfo.setWarnMsg(warnMsg); + } + + // 添加按钮 + List buttonInfos = new ArrayList<>(); + boolean flag = hasNeccessryField(nodeOperator.getNodeId());//是否有必填字段 + boolean isreject = "1".equals(nodeOperator.getIsReject());//是否可拒绝 + + if (isreject){ // 审批节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + } else { + + /*按钮2*/ + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", nodeOperator.getRequestId()); + callParam2.put("workflowid", nodeOperator.getWorkflowId()); + btn2.setCallParam(callParam2.toJSONString()); + btn2.setCallAuth(callAuth); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + + /*按钮1*/ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Confirmed"); + + buttonInfos.add(btn1); + + } + + } else { // 处理节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + }else{ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + } + } + cardInfo.setButtonInfos(buttonInfos); + + if (null == nodeOperator.getId() || "".equals(nodeOperator.getId())){ + nodeOperator.setId(UUID.randomUUID().toString()); + } + if (null != sendUserId && !"".equals(sendUserId)){ + RecordSet rs=new RecordSet(); + rs.executeQuery("select WORKCODE, LASTNAME from hrmresource where id=?",sendUserId); + if (rs.next()){ + String senderCode = rs.getString("WORKCODE"); + if (null != senderCode && !"".equals(senderCode)){ + TodoCardService.createTodoCard(senderCode, nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + } + } + } + + // 抄送(需提交) + public void copySendNeedSubmit(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("copySendNeedSubmit casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + List buttonInfos = new ArrayList<>(); + + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setCallStatus("Submitted"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + btn1.setCallAuth(callAuth); + buttonInfos.add(btn1); + + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + // 传阅 + public void chuanyue(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("chuanyue casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + TodoCardService.createTodoCard(nodeOperator.getWorkCode(), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + // 抄送 抄送(不需提交) + public void copySend(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("copySend casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + // 评论催办类型 + public void shareCard(String sendUserId, String requestname,String icon, List fieldNameList, NodeOperator nodeOperator, String expandMsg,String warnMsg){ + writeLog("11>> share card expanmsg> "+expandMsg + " warmsgn > "+warnMsg); + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getReceiveDate() + " " + nodeOperator.getReceiveTime()) + ); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("copySend casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + if (null != expandMsg && !"".equals(expandMsg)){ + expandMsg = expandMsg.replace(" "," "); + expandMsg = StringEscapeUtils.unescapeHtml4(expandMsg); + cardInfo.setExpandMsg(expandMsg); // 附件信息 + } + if (null != warnMsg &&!"".equals(warnMsg)){ + cardInfo.setWarnMsg(warnMsg); + } + + String receiveCode = getCodeByUserid(nodeOperator.getUserId()); + + if (null == nodeOperator.getId() || "".equals(nodeOperator.getId())){ + nodeOperator.setId(UUID.randomUUID().toString()); + } + if (null != sendUserId && !"".equals(sendUserId)){ + RecordSet rs=new RecordSet(); + rs.executeQuery("select WORKCODE, LASTNAME from hrmresource where id=?",sendUserId); + if (rs.next()){ + String senderCode = rs.getString("WORKCODE"); + if (null != senderCode && !"".equals(senderCode)){ + TodoCardService.createTodoCard(senderCode, receiveCode, 1, nodeOperator.getId(), cardInfo); + } + } + } + } + + public String getCodeByUserid(String userid){ + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select WORKCODE from hrmresource where id ="+userid); + if (recordSet.next()){ + return recordSet.getString("WORKCODE"); + } + return ""; + } + + + // 转发卡片信息 + public void transformCardInfo(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getTransByUser(nodeOperator); + + Map createUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", createUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("transfer casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + List buttonInfos = new ArrayList<>(); + + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setCallStatus("Submitted"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + btn1.setCallAuth(callAuth); + buttonInfos.add(btn1); + + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + public void sendSignCardInfo(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getTransByUser(nodeOperator); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("transfer casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + List buttonInfos = new ArrayList<>(); + + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setCallStatus("Submitted"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + btn1.setCallAuth(callAuth); + buttonInfos.add(btn1); + + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + + +} diff --git a/src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java b/src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java new file mode 100644 index 00000000..2328ee29 --- /dev/null +++ b/src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java @@ -0,0 +1,145 @@ +package com.customization.wfTodoCard.impl; + +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.weaverboot.frame.ioc.anno.classAnno.WeaIocReplaceComponent; +import com.weaverboot.frame.ioc.anno.methodAnno.WeaReplaceAfter; +import com.weaverboot.frame.ioc.handler.replace.weaReplaceParam.impl.WeaAfterReplaceParam; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.workflow.request.RequestSignRelevanceWithMe; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.concurrent.CompletableFuture; + + +@WeaIocReplaceComponent +public class ReplaceZhuanBan extends BaseBean { + + /* + * 转办发送卡片数据 + * */ + @WeaReplaceAfter(value = "/api/workflow/reqform/remarkOperate",order = 1) + public String execute(WeaAfterReplaceParam weaAfterReplaceParam){ + HttpServletRequest request = weaAfterReplaceParam.getRequest(); + + //获取请求参数 + String requestid = Util.null2String(request.getParameter("requestid"),""); + String forwardflag = Util.null2String(request.getParameter("forwardflag"),""); // 转发标记=3 + if ("".equals(requestid) || "-1".equals(requestid) || !"3".equals(forwardflag)){ + return weaAfterReplaceParam.getData(); + } + + String isSendCard = Util.null2String(request.getParameter("isSendCard"),""); // 是否发送消息 + String field5 = Util.null2String(request.getParameter("field5"),""); // 接收人id + String remark; + if (isSendCard.equals("1")){ + remark = Util.null2String(request.getParameter("remark"),""); // 评论数据 + } else { + remark = ""; + } + + + if ("".equals(field5)){ + return weaAfterReplaceParam.getData(); + } + + User user = HrmUserVarify.getUser(request , weaAfterReplaceParam.getResponse()) ; + String shareuserid = String.valueOf(user.getUID()); + writeLog("shareuserid>> "+shareuserid); + + try { + CompletableFuture.runAsync(()->{ + try { + String sendMsg = ""; + if (!"".equals(remark)){ + Document doc = Jsoup.parse(remark); + // 选择所有的

标签 + Elements pTags = doc.select("p"); + + for (int i = 0; i < pTags.size(); i++) { + Element pTag = pTags.get(i); + // 获取

标签内的子节点列表 + List childNodes = pTag.clone().childNodes(); + // 按顺序将子节点插入到

标签的位置 + for (int j = childNodes.size() - 1; j >= 0; j--) { + pTag.after(childNodes.get(j)); + } + // 移除

标签 + pTag.remove(); + } + // 选择所有的 标签 + Elements aTags = doc.select("a"); + for (int i = 0; i < aTags.size(); i++) { + Element aTag = aTags.get(i); + // 获取 atsome-name 属性值作为人名 + String name = aTag.attr("atsome-name"); + if (!name.isEmpty()) { + // 创建文本节点 + TextNode textNode = new TextNode("@" + name, doc.baseUri()); + // 在 标签后面插入文本节点 + aTag.after(textNode); + // 移除 标签 + aTag.remove(); + } + } + sendMsg = doc.body().html(); + } + + writeLog("====》 shareuser id is ::: " + shareuserid); + RecordSet query = new RecordSet(); + query.executeQuery("select CREATER from workflow_requestbase a where REQUESTID =?", requestid); + String creator = ""; + if (query.next()) { + creator = query.getString("CREATER"); + } + String [] uids = field5.split(","); + for (String uid : uids) { + query.executeQuery("select id,NODEID, ISCOMPLETE from workflow_currentoperator where HANDLEFORWARDID is not null and ISLASTTIMES =1 and REQUESTID =? and USERID =?", requestid, uid); + if (query.next()) { + Integer cid = query.getInt("id"); + Integer nodeid = query.getInt("NODEID"); + String iscomplete = query.getString("ISCOMPLETE"); + String language = ""; + query.executeQuery("select systemlanguage from hrmresource h where id=?", uid); + if (query.next()) { + language = query.getString("systemlanguage"); + } + boolean complete = "1".equals(iscomplete); + new CheckSendCardService().checkSendRequestCardInfo(cid, Integer.parseInt(requestid), nodeid, Integer.parseInt(uid), "1", language, complete,false, true,sendMsg, shareuserid, null); + } + } + + RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); + List atResourceids = reqsignwm.parseRemark(remark); + + for (String atResourceid : atResourceids) { + new CheckSendCardService().sendShareCard(creator, atResourceid, String.valueOf(requestid),"",sendMsg,null); + } + + }catch (Exception e){ + writeLog("sync task send zhuanban error>> "+e.getMessage()); + } + }); + + + }catch (Exception e){ + writeLog("send zhuanban error >> "+e.getMessage(), e); + } + + //将原有接口报文返回 + return weaAfterReplaceParam.getData(); + + } + + +} diff --git a/src/com/customization/wfTodoCard/service/CardUserInfoService.java b/src/com/customization/wfTodoCard/service/CardUserInfoService.java new file mode 100644 index 00000000..b96010dd --- /dev/null +++ b/src/com/customization/wfTodoCard/service/CardUserInfoService.java @@ -0,0 +1,28 @@ +package com.customization.wfTodoCard.service; + +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +public class CardUserInfoService extends BaseBean { + + public User getUserById(Integer uid){ + RecordSet rs=new RecordSet(); + rs.executeSql("select id,LOGINID,LASTNAME,SYSTEMLANGUAGE,EMAIL,LOCATIONID,SECLEVEL, " + + "DEPARTMENTID, SUBCOMPANYID1 from hrmresource where id="+uid); + if (rs.next()){ + User user=new User(); + user.setUid(rs.getInt("id")); + user.setLoginid(rs.getString("LOGINID")); + user.setLastname(rs.getString("LASTNAME")); + user.setEmail(Util.null2String(rs.getString("EMAIL"))); + user.setLocationid(Util.null2String(rs.getString("LOCATIONID"))); + user.setSeclevel(Util.null2String(rs.getString("SECLEVEL"))); + user.setUserDepartment(rs.getInt("DEPARTMENTID")); + user.setUserSubCompany1(Integer.parseInt(Util.null2String(rs.getString("SUBCOMPANYID1"),"0"))); + return user; + }else return null; + } + +} diff --git a/src/com/customization/wfTodoCard/service/CheckSendCardService.java b/src/com/customization/wfTodoCard/service/CheckSendCardService.java new file mode 100644 index 00000000..4770f7f5 --- /dev/null +++ b/src/com/customization/wfTodoCard/service/CheckSendCardService.java @@ -0,0 +1,1227 @@ +package com.customization.wfTodoCard.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.*; +import com.customization.wfTodoCard.entity.NodeOperator; +import com.customization.wfTodoCard.handle.CardInfoHandler; +import org.apache.axis2.databinding.types.xsd.ID; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +// 检查是否发送消息 +public class CheckSendCardService extends BaseBean { + + // 本系统地址域名部分 + String oaHost = getPropValue("workflowTodoCard", "oahost"); + String oaAuthKey = getPropValue("workflowTodoCard", "oaAuthKey"); + + String detailPcUrl = getPropValue("workflowTodoCard", "detailPcUrl"); + String detailAppUrl = getPropValue("workflowTodoCard", "detailAppUrl"); + + private CardInfoHandler cardInfoHandler = new CardInfoHandler(); + + + // 验证是否需要发送创建卡片消息 + /* + * 默认字段: Title, Creator, Create Time + * @param requestid 请求id + * @param nodeid 节点id + * @param readonly 是否抄送 + * @param iscomplete 是否归档 + * @param cid 操作记录id + * */ + public void checkSendRequestCardInfo(Integer ccid, Integer requestid, Integer nodeid, Integer receiverId, String logintype, String language, boolean iscomplete, boolean isShare,boolean isCuiban, String expandMsg,String shareUserId, String warnMsg) { + writeLog("check send cardifno >> des: "+expandMsg); + if (null != expandMsg && !"".equals(expandMsg)){ + expandMsg = expandMsg.replaceAll("\\n$", ""); + expandMsg = expandMsg.replaceAll("<[^>]+>", ""); + } + RecordSet rd = new RecordSet(); + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) return; // 请求不存在 + + String workflowId = rd.getString("WORKFLOWID"); + String userid = rd.getString("CREATER"); + String requestName = rd.getString("REQUESTNAME"); + String createtime = rd.getString("CREATETIME"); + String createdate = rd.getString("CREATEDATE"); + + writeLog("cardifno >> workflowid = " + workflowId + " nodeid = " + nodeid); + rd.executeQuery("select id, WORKFLOWNAME, messageRemindScope, isMessageRemind,icon from workflow_base where id=?", workflowId); + rd.next(); + String isMessageRemind = rd.getString("isMessageRemind"); + if (!"1".equals(isMessageRemind)) { // 未开启消息提醒 + writeLog("workflow is not open message remind"); + return; + } + String icon = rd.getString("icon"); // 图标 + + String messageRemindScope = rd.getString("messageRemindScope"); + String ifMr = ""; // 是否默认配置 + String mainid=""; + if ("1".equals(messageRemindScope)){ // 指定点配置 + rd.executeQuery("select id, workflowid, nodeid, sfmr from uf_wftodocontent where workflowid =" + workflowId + " and nodeid =" + nodeid); + if (!rd.next()) { + writeLog("当前请求节点没有配置卡片消息, 去默认配置节点"); + return; + } + mainid = rd.getString("id"); + ifMr = rd.getString("sfmr"); + } else { // 走全局配置 + ifMr="1"; + } + + + if ("1".equals(ifMr)) { // 默认发送模板 + writeLog("use default send template"); + rd.executeQuery("select id from uf_wftodocontent where workflowid = '" + workflowId + "' and nodeid ='0'"); + if (!rd.next()) { + writeLog(">>>>>>>> no config node info , to default node >>>>>>>>>>>>>>>>>>>"); + sendDefault(ccid, workflowId, requestid, receiverId, logintype, language, iscomplete, isShare,isCuiban, expandMsg, shareUserId, warnMsg); + return; + } + writeLog(">>>>>>>>>>>>>> next 1"); + mainid = rd.getString("id"); + } + + List filedNameList = new ArrayList<>(); + rd.executeQuery("select fieldname from uf_wftodocontent_dt1 where mainid = '" + mainid + "' and selected =1 order by sort asc"); + while (rd.next()) { + String fieldname = rd.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", 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(); // 接口认证请求头 + + // 当前节点处理人,即卡片接收人 + + if (isShare){ // 分享转发使用 + // 获取当前日期和时间 + LocalDateTime currentDateTime = LocalDateTime.now(); + + // 定义日期格式 + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + // 定义时间格式 + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + + // 格式化日期 + String dateString = currentDateTime.format(dateFormatter); + // 格式化时间 + String timeString = currentDateTime.format(timeFormatter); + NodeOperator nodeOperator = new NodeOperator(); + nodeOperator.setId(UUID.randomUUID().toString()); + nodeOperator.setRequestId(String.valueOf(requestid)); + nodeOperator.setUserId(String.valueOf(receiverId)); + nodeOperator.setWorkflowId(workflowId); + nodeOperator.setReceiveDate(dateString); + nodeOperator.setReceiveTime(timeString); + RecordSet rs = new RecordSet(); + rs.executeQuery("select systemlanguage from hrmresource where id=?", receiverId); + if (rs.next()){ + nodeOperator.setLanguage(rs.getString("systemlanguage")); + } + writeLog(" 1 >> cardinfo share card >> "+expandMsg); + cardInfoHandler.shareCard(shareUserId, requestName, icon, filedNameList, nodeOperator, expandMsg, warnMsg); + + }else if (isCuiban){ + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(ccid); + if ("0".equals(nodeOperator.getIsremark())){ + cardInfoHandler.cuiban(shareUserId, requestName, icon, filedNameList, callAuthStr, nodeOperator, warnMsg, expandMsg); + } + + }else { + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(ccid); + + //0:未操作;1:转发;2:已操作;4:归档;5:超时;8:抄送(不需提交);9:抄送(需提交);11:传阅;6:自动审批(审批中) + switch (nodeOperator.getIsremark()) { + case "0": + writeLog("未操作"); + cardInfoHandler.submit(requestName, icon, filedNameList, callAuthStr, nodeOperator, warnMsg); + break; + case "1": // 转发 + writeLog("转发"); + cardInfoHandler.transformCardInfo(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "2": // 已操作 + writeLog("已操作"); + break; + case "4": // 归档 + writeLog("归档"); + cardInfoHandler.copySend(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "5": // 超时 + writeLog("超时"); + break; + case "8": // 抄送(不需提交) + writeLog("抄送(不需提交)"); + cardInfoHandler.copySend(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "9": // 抄送(需提交) + writeLog("抄送(需提交)"); + cardInfoHandler.copySendNeedSubmit(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "11": // 传阅 + writeLog("传阅"); + cardInfoHandler.chuanyue(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "6": // 自动审批(审批中) + writeLog("自动审批(审批中)"); + cardInfoHandler.chuanyue(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + } + + } + + } + + + public void checkSendRequestCardInfo2_bak(Integer cid, Integer requestid, Integer nodeid, Integer receiverId, String logintype, String language, boolean iscomplete) { + RecordSet rd = new RecordSet(); + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) return; // 没有开启提醒 + + String workflowId = rd.getString("WORKFLOWID"); + String userid = rd.getString("CREATER"); + String requestName = rd.getString("REQUESTNAME"); + String createtime = rd.getString("CREATETIME"); + String createdate = rd.getString("CREATEDATE"); + + writeLog("cardifno >> workflowid = " + workflowId + " nodeid = " + nodeid); + + String sql_workflow = "select isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + rd.executeQuery(sql_workflow); + rd.next(); + String isMessageRemind = rd.getString("isMessageRemind"); + if (!"1".equals(isMessageRemind)) { + writeLog("workflow is not open message remind"); + return; + } + String icon = rd.getString("icon"); // 图标 + + rd.executeQuery("select id, workflowid, nodeid, sfmr from uf_wftodocontent where workflowid =" + workflowId + " and nodeid =" + nodeid); + if (!rd.next()) { + writeLog("当前请求节点没有配置卡片消息, 去默认配置节点"); + sendDefault(cid, workflowId, requestid, receiverId, logintype, language, iscomplete, false,false,null, null,null); + return; + } + String mainid = rd.getString("id"); + String sfmr = rd.getString("sfmr"); + + List filedNameList = new ArrayList<>(); + + if ("1".equals(sfmr)) { // 默认发送模板 + writeLog("use default send template"); + rd.executeQuery("select id from uf_wftodocontent where workflowid = '" + workflowId + "' and nodeid ='0'"); + if (!rd.next()) { + sendDefault(cid, workflowId, requestid, receiverId, logintype, language, iscomplete,false, false,null, null,null); + return; + } + mainid = rd.getString("id"); + } + + rd.executeQuery("select fieldname from uf_wftodocontent_dt1 where mainid = '" + mainid + "' and selected =1 order by sort asc"); + while (rd.next()) { + String fieldname = rd.getString("fieldname"); + if (!fieldname.startsWith("sys_")) { + filedNameList.add(fieldname); + } + } + + // 发送人 + rd.executeQuery("select id, WORKCODE, LASTNAME from hrmresource where id='" + userid + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + String senduser = rd.getString("WORKCODE"); + String creatorName = rd.getString("LASTNAME"); + writeLog("发送人数据>> " + senduser); + + // 接收人 + String receiveUserCode = ""; + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + receiverId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + receiveUserCode = Util.null2String(rd.getString("WORKCODE")); + writeLog("receiver user is >> " + receiveUserCode + " receiverId = " + receiverId); + + /*会签类型:0-非会签;1-会签;2-依次逐个处理;3- 抄送不提交;4- 抄送提交*/ + String signordersql = "select b.SIGNORDER from workflow_currentoperator a left join workflow_groupdetail b on b.id=a.GROUPDETAILID " + + " where a.NODEID ='" + nodeid + "' and a.USERID ='" + receiverId + "' and a.REQUESTID =" + requestid; + rd.executeQuery(signordersql); + String signOrderType = "0"; + if (rd.next()) { + signOrderType = Util.null2String(rd.getString("SIGNORDER")); + } + + /*是否处理节点, 处理节点没有退回*/ + boolean isHandleNode = true; + String sqlHand = "select ISREJECT from workflow_nodebase where id=" + nodeid; + rd.executeQuery(sqlHand); + if (rd.next()) { + isHandleNode = !"1".equals(rd.getString("ISREJECT")); + } + + // 参数存储 + Map paramMap = new HashMap<>(); + + if (filedNameList.size() > 0) { + String queryTablesql = "select TABLENAME 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"); + + 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))); + } + } + } + } + + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + for (String tempname : filedNameList) { + cardJsonArray.add( + new JSONObject().fluentPut("name", tempname).fluentPut("value", paramMap.getOrDefault(tempname, "")) + ); + } + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", creatorName) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", createdate + " " + createtime) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("卡片消息:: " + cardData); + + /* 卡片参数组装 */ + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(requestName); + titleInfo.setColor(""); + 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); + + /*view detail*/ + cardInfo.setViewDetailInfo(getViewDetail(requestid)); + + if (!iscomplete && !"3".equals(signOrderType)) { // 3是抄送不需要提交的 + + // 按钮 + List buttonInfos = new ArrayList<>(); + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName((isHandleNode || "2".equals(signOrderType) || "4".equals(signOrderType)) ? "Submit" : "Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", requestid); + callParam.put("workflowid", workflowId); + btn1.setCallParam(callParam.toJSONString()); + + 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) + ); + btn1.setCallAuth(callAuth.toJSONString()); + if (isHandleNode || "4".equals(signOrderType)) { + btn1.setCallStatus("Submitted"); + } else { + btn1.setCallStatus("Confirmed"); + } + buttonInfos.add(btn1); + + if (!isHandleNode) { + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", requestid); + callParam2.put("workflowid", workflowId); + btn2.setCallParam(callParam2.toJSONString()); + JSONArray callAuth2 = new JSONArray(); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + btn2.setCallAuth(callAuth2.toJSONString()); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + } + + cardInfo.setButtonInfos(buttonInfos); + } + writeLog("cardinfo >>>> " + JSON.toJSONString(cardInfo)); + TodoCardService.createTodoCard(senduser, receiveUserCode, 1, cid + "", cardInfo); + } + + /* + * 默认发送卡片,默认字段: Title, Creator, Create Time + * @param isShare 是否抄送,抄送不需要按钮 + * @param baseParam 基础参数 + * @param requestid 请求id + * */ + public void sendDefault(Integer cid, String workflowId, Integer requestid, Integer receiverId, String logintype, String language, boolean complete, boolean isShare,boolean isCuiban, String expandMsg, String shareUserId, String warnMsg) { + RecordSet rd = new RecordSet(); + writeLog(".............. this is send default >>>>>"); + + String sql1 = "select id, WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + rd.executeQuery(sql1); + rd.next(); + String icon = rd.getString("icon"); + String isMessageRemind = rd.getString("isMessageRemind"); + if (!"1".equals(isMessageRemind)) { + writeLog("workflow is not open message remind"); + return; + } + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) { + writeLog(">>>> no request info return"); + return; + } + + String requestName = rd.getString("REQUESTNAME"); + String createDate = rd.getString("CREATEDATE"); + String createTime = rd.getString("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) + ); + String callAuthStr = callAuth.toJSONString(); // 接口认证请求头 + + // 当前节点处理人,即卡片接收人 + + writeLog(".... start handder, isshare > "+isShare); + + if (isShare){ +// NodeOperator nodeOperator = new NodeOperator(); +// nodeOperator.setRequestId(String.valueOf(requestid)); +// nodeOperator.setUserId(String.valueOf(receiverId)); +// nodeOperator.setWorkflowId(workflowId); +// cardInfoHandler.shareCard(shareUserId, requestName, icon, null, nodeOperator,expandMsg, warnMsg); + // 获取当前日期和时间 + LocalDateTime currentDateTime = LocalDateTime.now(); + + // 定义日期格式 + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + // 定义时间格式 + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + + // 格式化日期 + String dateString = currentDateTime.format(dateFormatter); + // 格式化时间 + String timeString = currentDateTime.format(timeFormatter); + NodeOperator nodeOperator = new NodeOperator(); + nodeOperator.setId(UUID.randomUUID().toString()); + nodeOperator.setRequestId(String.valueOf(requestid)); + nodeOperator.setUserId(String.valueOf(receiverId)); + nodeOperator.setWorkflowId(workflowId); + nodeOperator.setReceiveDate(dateString); + nodeOperator.setReceiveTime(timeString); + RecordSet rs = new RecordSet(); + rs.executeQuery("select systemlanguage from hrmresource where id=?", receiverId); + if (rs.next()){ + nodeOperator.setLanguage(rs.getString("systemlanguage")); + } + writeLog(" 1 >> cardinfo share card >> "+expandMsg); + cardInfoHandler.shareCard(shareUserId, requestName, icon, null, nodeOperator,expandMsg, warnMsg); + + }else if (isCuiban){ + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(cid); + if ("0".equals(nodeOperator.getIsremark())){ + cardInfoHandler.cuiban(shareUserId, requestName, icon, null, callAuthStr, nodeOperator, warnMsg, expandMsg); + } + }else { + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(cid); + writeLog("... start switch >> isremark is ::: "+nodeOperator.getIsremark()); + //0:未操作;1:转发;2:已操作;4:归档;5:超时;8:抄送(不需提交);9:抄送(需提交);11:传阅;6:自动审批(审批中) + switch (nodeOperator.getIsremark()) { + case "0": + writeLog("未操作"); + cardInfoHandler.submit(requestName, icon, null, callAuthStr, nodeOperator, warnMsg); + break; + case "1": // 转发 + writeLog("转发"); + cardInfoHandler.transformCardInfo(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "2": // 已操作 + writeLog("已操作"); + break; + case "4": // 归档 + writeLog("归档"); + cardInfoHandler.copySend(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "5": // 超时 + writeLog("超时"); + break; + case "8": // 抄送(不需提交) + writeLog("抄送(不需提交)"); + cardInfoHandler.copySend(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "9": // 抄送(需提交) + writeLog("抄送(需提交)"); + cardInfoHandler.copySendNeedSubmit(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "11": // 传阅 + writeLog("传阅"); + cardInfoHandler.chuanyue(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "6": // 自动审批(审批中) + writeLog("自动审批(审批中)"); + cardInfoHandler.chuanyue(requestName, icon, null, callAuthStr, nodeOperator); + break; + } + } + + + } + + public void sendDefault2(Integer cid, String workflowId, Integer requestid, Integer nodeid, Integer sendUserId, Integer receiverId, String logintype, String language, boolean complete) { + RecordSet rd = new RecordSet(); + + String sql1 = "select id, WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + rd.executeQuery(sql1); + rd.next(); + + String icon = rd.getString("icon"); + + // 发送人 + rd.executeQuery("select id, WORKCODE, LASTNAME from hrmresource where id='" + sendUserId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + writeLog("发送人没有workcode"); + return; + } + String senduser = rd.getString("WORKCODE"); + String creatorName = rd.getString("LASTNAME"); + writeLog("发送人数据>> " + senduser); + + // 接收人 + String receiveUserCode = ""; + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + receiverId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + receiveUserCode = Util.null2String(rd.getString("WORKCODE")); + writeLog("receiver user is >> " + receiveUserCode + " receiverId = " + receiverId); + + /*判断是否会签*/ + /*会签类型:0-非会签;1-会签;2-依次逐个处理;3- 抄送不提交;4- 抄送提交*/ + String signordersql = "select b.SIGNORDER from workflow_currentoperator a left join workflow_groupdetail b on b.id=a.GROUPDETAILID " + + " where a.NODEID ='" + nodeid + "' and a.USERID ='" + receiverId + "' and a.REQUESTID =" + requestid; + rd.executeQuery(signordersql); + String signOrderType = "0"; + if (rd.next()) { + signOrderType = Util.null2String(rd.getString("SIGNORDER")); + } + + /*是否处理节点*/ + boolean isHandleNode = true; + String sqlHand = "select ISREJECT from workflow_nodebase where id=" + nodeid; + rd.executeQuery(sqlHand); + if (rd.next()) { + isHandleNode = !"1".equals(rd.getString("ISREJECT")); + } + + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) { + return; + } + + String requestName = rd.getString("REQUESTNAME"); + String createDate = rd.getString("CREATEDATE"); + String createTime = rd.getString("CREATETIME"); + String dateTime = createDate + " " + createTime; + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(requestName); + titleInfo.setColor(""); + titleInfo.setIconName(icon); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + cardJsonArray.fluentAdd( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", creatorName) + ).fluentAdd( + new JSONObject().fluentPut("name", "CreateTime").fluentPut("value", dateTime) + ); + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("keyInfo"); + contentInfo.setOrder(1); + contentInfo.setData(cardJsonArray.toJSONString()); + + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + /*view detail*/ + cardInfo.setViewDetailInfo(getViewDetail(requestid)); + + if (!complete && !"3".equals(signOrderType)) { // 3是抄送不需要提交的 + + // 按钮 + List buttonInfos = new ArrayList<>(); + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName(isHandleNode || "2".equals(signOrderType) || "4".equals(signOrderType) ? "Submit" : "Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", requestid); + callParam.put("workflowid", workflowId); + btn1.setCallParam(callParam.toJSONString()); + + 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) + ); + btn1.setCallAuth(callAuth.toJSONString()); + if (isHandleNode || "4".equals(signOrderType)) { + btn1.setCallStatus("Submitted"); + } else { + btn1.setCallStatus("Confirmed"); + } + buttonInfos.add(btn1); + + if (!isHandleNode) { + + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", requestid); + callParam2.put("workflowid", workflowId); + btn2.setCallParam(callParam2.toJSONString()); + JSONArray callAuth2 = new JSONArray(); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + btn2.setCallAuth(callAuth2.toJSONString()); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + } + + cardInfo.setButtonInfos(buttonInfos); + } + writeLog("cardinfo >>>> " + JSON.toJSONString(cardInfo)); + TodoCardService.createTodoCard(senduser, receiveUserCode, 1, cid + "", cardInfo); + } + + + // 发送更新的卡片消息 + public void sendUpdateCardInfo(Integer cid, String requeststatus) { + RecordSet rs = new RecordSet(); + String sql = "select a.id,h.LASTNAME, h.WORKCODE,a.REQUESTID, a.WORKFLOWID, a.NODEID ,a.ISCOMPLETE , a.USERID , a.processUser, a.RECEIVEDATE, a.RECEIVETIME ,a.preisremark, a.isremark ,a.operatetype, a.HANDLEFORWARDID , wg.SIGNORDER , n.ISSTART, n.ISREJECT , n.ISEND " + + "from workflow_currentoperator a left join workflow_nodebase n on n.id=a.nodeid left join hrmresource h on h.id=a.USERID left join workflow_groupdetail wg on wg.id=a.GROUPDETAILID " + + "where a.id=" + cid; + // 假设您已经执行了查询并获得了ResultSet对象 + rs.executeQuery(sql); + // 检查是否有结果 + if (!rs.next()) return; + + // 使用getString方法获取字段值 + String id = Util.null2String(rs.getString("id")); + String lastName = Util.null2String(rs.getString("LASTNAME")); + String workCode = Util.null2String(rs.getString("WORKCODE")); + String requestId = Util.null2String(rs.getString("REQUESTID")); + String workflowId = Util.null2String(rs.getString("WORKFLOWID")); + String nodeId = Util.null2String(rs.getString("NODEID")); + String userId = Util.null2String(rs.getString("USERID")); + String processUser = Util.null2String(rs.getString("processUser")); + String receiveDate = Util.null2String(rs.getString("RECEIVEDATE")); + String receiveTime = Util.null2String(rs.getString("RECEIVETIME")); + String preisRemark = Util.null2String(rs.getString("preisremark")); + String isRemark = Util.null2String(rs.getString("isremark")); + String operateType = Util.null2String(rs.getString("operatetype")); + String handleForwardId = Util.null2String(rs.getString("HANDLEFORWARDID")); + String signOrder = Util.null2String(rs.getString("SIGNORDER")); // 0:非会签,1:会签,2:依次逐个签 3:抄送不需提交 4:抄送需提交 + String isStart = Util.null2String(rs.getString("ISSTART")); + String isReject = Util.null2String(rs.getString("ISREJECT")); + String isEnd = Util.null2String(rs.getString("ISEND")); + String iscomplete = Util.null2String(rs.getString("ISCOMPLETE")); + + + if ("1".equals(isStart) ){ // 开始节点 + return; + } + + RecordSet query = new RecordSet(); + query.executeQuery("select CURRENTNODEID, CURRENTNODETYPE, status from workflow_requestbase wr where REQUESTID =?",requestId); + if (!query.next()){ + return; + } + String currentType = Util.null2String(query.getString("CURRENTNODETYPE")); + String status = Util.null2String(query.getString("status")); + + // 类型是归档,判断是否强制归档 + if ("3".equals(currentType)){ + query.executeQuery("select OPERATETYPE from workflow_requestoperatelog where REQUESTID = ? and NODEID = ? and OPERATORID=? order by id desc", requestId, nodeId, processUser); + if (query.next()){ + String operateType1 = Util.null2String(query.getString("OPERATETYPE")); + if ("forceover".equals(operateType1)){ // 是强制收回 +// if ("1".equals(processUser)){ + TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by Administrator"); + +// }else { +// query.executeQuery("select LASTNAME from hrmresource where id=?", processUser); +// if (query.next()) { +// String processUserName = Util.null2String(query.getString("LASTNAME")); +// TodoCardService.updateTodoCard(workCode, String.valueOf(cid),"Processed by " + processUserName); +// } +// } + return; + } + } + } + + /*强制干预*/ + if (requeststatus.contains("特送至")){ +// if ("1".equals(processUser)){ + TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by Administrator"); +// }else{ +// query.executeQuery("select LASTNAME from hrmresource where id= ?", processUser); +// if (query.next()){ +// String processUserName = Util.null2String(query.getString("LASTNAME")); +// TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by "+processUserName); +// } +// } + return; + + } + + if ("8".equals(preisRemark) ||"6".equals(preisRemark) || "11".equals(preisRemark)){ + return; + } + + RecordSet rsTemp =new RecordSet(); + + if ("2".equals(isRemark)){ // 处理 + if (operateType.equals("3")){ // 退回 + if (userId.equals(processUser)){ + TodoCardService.updateTodoCard(workCode, cid + "", "Returned"); + } else { + rsTemp.executeQuery("select lastname from hrmresource where id="+processUser); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Returned by " + processUserName); + } + } + }else if (operateType.equals("4")){ // 撤回 + + rsTemp.executeQuery("select h.LASTNAME from workflow_requestbase a left join hrmresource h on h.id=a.CREATER where a.REQUESTID ="+requestId); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Recalled by "+processUserName); + } + + } else if ("".equals(processUser)){ // 没有处理人,判断是不是转办 + rsTemp.executeQuery("select h.LASTNAME from workflow_currentoperator a left join hrmresource h on h.id= a.USERID where HANDLEFORWARDID ="+id); + if (rsTemp.next()){ // 存在转办 + String name = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Transferred to "+name); + }else { + TodoCardService.updateTodoCard(workCode, cid + "", "Submitted"); + } + } else { // 正常提交处理 + if (!userId.equals(processUser)){ + /*判断是否有强制干预*/ + rsTemp.executeQuery("select LOGID from workflow_requestlog wr where REQUESTID ="+requestId+" and LOGTYPE ='i' and OPERATOR ="+processUser); + if (rsTemp.next()){ // 存在强制干预 + TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by Administrator"); + return; + } + } + + if ("1".equals(isReject)){ // 审批节点 + if (userId.equals(processUser)){ // 自己处理 + TodoCardService.updateTodoCard(workCode, cid + "", "Confirmed"); + + }else { // 他人处理 + rsTemp.executeQuery("select lastname from hrmresource where id="+processUser); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Confirmed by " + processUserName); + } + } + }else { // 处理节点 + if (userId.equals(processUser)){ // 自己处理 + TodoCardService.updateTodoCard(workCode, cid + "", "Submitted"); + + }else { // 他人处理 + rsTemp.executeQuery("select lastname from hrmresource where id="+processUser); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Submitted by " + processUserName); + } + } + } + } + } + } + + public void sendUpdateCardInfo_bak2(Integer cid) { + RecordSet rs = new RecordSet(); + + String sql = "select c.USERID,c.processUser,c.OPERATETIME, c.OPERATEDATE, c.REQUESTID , req.CURRENTNODEID , c.NODEID , c.isbereject, h.WORKCODE, h.LASTNAME , c.ISREJECT , node.ISREJECT nodereject, d.SIGNORDER " + + "from workflow_currentoperator c left join hrmresource h on h.id=c.USERID left join workflow_requestbase req on req.REQUESTID =c.REQUESTID left join workflow_nodebase node on node.id=c.NODEID left join workflow_groupdetail d on d.id=c.GROUPDETAILID " + + "where c.id=" + cid; + rs.executeQuery(sql); + if (!rs.next()) return; + + Integer userId = rs.getInt("USERID"); + Integer currentNodeId = rs.getInt("CURRENTNODEID"); + Integer nodeId = rs.getInt("NODEID"); + Integer processUser = rs.getInt("processUser"); + String userCode = Util.null2String(rs.getString("WORKCODE")); + String isreject = Util.null2String(rs.getString("ISREJECT")); + String nodeReject = Util.null2String(rs.getString("nodereject")); + String signorder = Util.null2String(rs.getString("SIGNORDER")); /*会签类型:0-非会签;1-会签;2-依次逐个处理;3- 抄送不提交;4- 抄送提交*/ + + if (currentNodeId.equals(nodeId)) { // 停留在当前节点 + String status = "Submitted"; + if (signorder.equals("3") || signorder.equals("4")) { + status = "Submitted"; + } else { + status = nodeReject.equals("1") ? "Confirmed" : "Submitted"; + } + TodoCardService.updateTodoCard(userCode, cid + "", status); + + } else { // 流转到下一个节点 + String status = ""; + if (userId.equals(processUser)) { // 处理人是自己 + + if ("1".equals(isreject)) { // 节点退回 + status = "Returned"; + } else { // 到下一节点 + status = nodeReject.equals("1") ? "Confirmed" : "Submitted"; + } + TodoCardService.updateTodoCard(userCode, cid + "", status); + + } else { // 处理人不是自己 + rs.executeQuery("select LASTNAME from hrmresource where id=" + processUser); + if (rs.next()) { + String proUsername = Util.null2String(rs.getString("LASTNAME")); + if ("1".equals(isreject)) { // 节点退回 + status = "Returned by " + proUsername; + } else { // 到下一节点 + status = nodeReject.equals("1") ? "Confirmed" : "Submitted"; + status = status + " by " + proUsername; + } + TodoCardService.updateTodoCard(userCode, cid + "", status); + } + } + } + } + + public ViewDetail getViewDetail(Integer requestid) { + RecordSet recordSet = new RecordSet(); + 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"); + return viewDetail; + } + return null; + } + + // 发送分享卡片消息 + public void sendShareCard(String sendUserId, String receiveUserIds, String requestid, String title, String description,String warnMsg) { + if (warnMsg != null && !"".equals(warnMsg)){ + warnMsg = warnMsg.replace(" "," "); + } + if (description != null && !"".equals(description)){ + description = description.replace(" "," "); + } + writeLog("send share card msg info >>>>> requestid = " + requestid + " title = " + title + " description = " + description + " sendUserId = " + sendUserId + " receiveUserIds = " + receiveUserIds); +// RecordSet recordSet = new RecordSet(); +// String sql = "select a.id, a.REQUESTID , a.WORKFLOWID ,a.NODEID, a.USERID " + +// "from workflow_currentoperator a left join hrmresource h on h.id=a.USERID where a.userid=? and a.REQUESTID =? " + +// "order by a.id desc"; + Integer nodeid = null; + RecordSet query = new RecordSet(); + query.executeQuery("select CURRENTNODEID from workflow_requestbase where REQUESTID = ?",requestid); + if (query.next()){ + nodeid = query.getInt("CURRENTNODEID"); + } + + String[] recIds = receiveUserIds.split(","); + for (String recId : recIds) { + /* recordSet.executeQuery(sql, recId, requestid); + if (recordSet.next()){ + Integer cid = recordSet.getInt("id"); + Integer REQUESTID = recordSet.getInt("REQUESTID"); + Integer NODEID = recordSet.getInt("NODEID"); + + this.checkSendRequestCardInfo(cid, REQUESTID, NODEID,Integer.parseInt(recId), null, null, false, true, description, sendUserId, warnMsg); + } else {*/ + this.checkSendRequestCardInfo(null, Integer.parseInt(requestid),nodeid,Integer.parseInt(recId), null, null, false, true, false,description, sendUserId, warnMsg); +// } + } + } + // 催办发送 + public void sendCuiban(String sendUserId, String receiveUserIds, String requestid, String title, String description,String warningMsg) { + writeLog("send share card msg info >>>>> requestid = " + requestid + " title = " + title + " description = " + description); + if (description != null && !"".equals(description)){ + description = description.replace(" "," "); + } + + String language = null; + RecordSet query = new RecordSet(); + query.executeQuery("select id, systemlanguage from hrmresource where id=?",sendUserId); + if (query.next()){ + language = Util.null2String(query.getString("systemlanguage")); + } + + RecordSet recordSet = new RecordSet(); + String sql = "select a.id, a.REQUESTID , a.WORKFLOWID ,a.NODEID, a.USERID " + + "from workflow_currentoperator a left join hrmresource h on h.id=a.USERID where a.userid=? and a.REQUESTID =? and a.isremark = 0 " + + "order by a.id desc"; + + String[] recIds = receiveUserIds.split(","); + for (String recId : recIds) { + recordSet.executeQuery(sql, recId, requestid); + if (recordSet.next()){ + Integer cid = recordSet.getInt("id"); + Integer REQUESTID = recordSet.getInt("REQUESTID"); + Integer NODEID = recordSet.getInt("NODEID"); + + writeLog("cuiban send cuiban >>> "+description); + this.checkSendRequestCardInfo(cid, REQUESTID, NODEID,Integer.parseInt(recId), null, language, false, false,true, description, sendUserId, warningMsg); + } + } + } + + + public void sendShareCard_bak(String sendUserId, String receiveUserIds, String requestid, String title, String description, String warnmsng) { + writeLog("send share card msg info >>>>> requestid = " + requestid + " title = " + title + " description = " + description); + RecordSet rd = new RecordSet(); + + rd.executeQuery("select a.REQUESTID, a.REQUESTNAME, b.WORKFLOWNAME, a.STATUS, b.icon, a.CREATER from workflow_requestbase a left join workflow_base b on a.WORKFLOWID =b.id " + + " where a.REQUESTID =" + requestid); + if (!rd.next()) { + writeLog("share card info > data is empty!!!"); + return; + } + + if (null == title || "".equals(title)){ + title = Util.null2String(rd.getString("REQUESTNAME")); + } + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(title); + titleInfo.setColor("#F4F5F7"); + titleInfo.setIconName(rd.getString("icon")); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("textInfo"); + contentInfo.setOrder(1); + contentInfo.setData( + new JSONArray().fluentAdd(description).toJSONString() + ); + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + // view detail + cardInfo.setViewDetailInfo(getViewDetail(Integer.parseInt(requestid))); + + writeLog("share card info>> " + JSON.toJSONString(cardInfo)); + + // 发送人 + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + sendUserId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + String senduser = rd.getString("WORKCODE"); + writeLog("分享:发送人数据>> " + senduser); + + String[] recIds = receiveUserIds.split(","); + for (String recId : recIds) { + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + recId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + continue; + } + String receiveUserCode = Util.null2String(rd.getString("WORKCODE")); + writeLog("接收人数据>> " + receiveUserCode); + TodoCardService.createTodoCard(senduser, receiveUserCode, 1, requestid, cardInfo); + } + + } + + + // 撤销 + public void sendDelCardInfo(Integer workflowid, String requestid, String cid, String userid,String requeststatus, Integer todoUserId, String receivedate, String receivetime) { + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select USERID from workflow_otheroperator wo where ISREMARK ='c' and REQUESTID ="+requestid+" order by id desc"); + if (recordSet.next()){ // 查询撤销操作 + String opeuserid = Util.null2String(recordSet.getString("USERID")); + if ("1".equals(opeuserid)){ // 管理员撤销 + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Processed by Administrator"); + } + } else { // 用户撤销 + recordSet.executeQuery("select LASTNAME from hrmresource where id="+opeuserid); + if (recordSet.next()){ + String usename = Util.null2String( recordSet.getString("LASTNAME")); + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Recalled by "+usename); + } + } + } + return; + } + + if (todoUserId>0){ // 判断是否是代理撤销 + recordSet.executeQuery("select AGENTID from workflow_agent where AGENTERID ="+userid+" and BEAGENTERID ="+todoUserId+" and WORKFLOWID ="+workflowid+ + " and backdate >='"+receivedate+"' and backtime >= '"+receivetime+"'"); + if (recordSet.next()){ + recordSet.executeQuery("select LASTNAME from hrmresource where id="+todoUserId); + /*String lastname = ""; + if (recordSet.next()){ + lastname =Util.null2String(recordSet.getString("LASTNAME")); + }*/ + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Recalled by Delegator"); + return; + } + } + } + + try { + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Processed by Administrator"); + } + }catch (Exception e){ + writeLog("del error "+e.getMessage(),e); + } + } + + // 补充撤销等操作,把抄送记录也变更掉 + public void checkCheXiao(String requestid){ + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select CURRENTSTATUS from workflow_requestbase wr where REQUESTID =?",requestid); // 当前状态查询, 1-撤销 + if (!recordSet.next()) return; + + String currentStatus = Util.null2String(recordSet.getString("CURRENTSTATUS")); + + if ("1".equals(currentStatus)) { // 撤销 + recordSet.executeQuery("select USERID, h.LASTNAME from workflow_otheroperator a left join hrmresource h on h.id=a.USERID where REQUESTID =? and ISREMARK ='c' order by a.id desc", requestid); + if (recordSet.next()){ + String userid = Util.null2String(recordSet.getString("USERID")); + if ("1".equals(userid)){ // 管理员撤销 + RecordSet rs2 = new RecordSet(); + rs2.executeQuery("select requestid, nodeid, bizid,receiver from temp_cardmsg where requestid =? and updatestatus ='' or updatestatus is null",requestid); + if (rs2.next()){ + String bizid = Util.null2String(rs2.getString("bizid")); + String receiver = Util.null2String(rs2.getString("receiver")); + try { + TodoCardService.updateTodoCard(receiver, bizid, "Recalled by Administrator"); + }catch (Exception e){ + writeLog("administrator chexiao error: "+e.getMessage(),e); + } + } + } else { // 非管理员撤销 + String username = Util.null2String(recordSet.getString("LASTNAME")); // 撤销人姓名 + RecordSet rs2 = new RecordSet(); + rs2.executeQuery("select requestid, nodeid, bizid,receiver from temp_cardmsg where requestid =? and updatestatus ='' or updatestatus is null",requestid); + if (rs2.next()){ + String bizid = Util.null2String(rs2.getString("bizid")); + String receiver = Util.null2String(rs2.getString("receiver")); + try { + TodoCardService.updateTodoCard(receiver, bizid, "Recalled By " + username); + }catch (Exception e){ + writeLog("撤销更新卡片异常 "+e.getMessage(),e); + } + } + } + } + } + } + + // 补充检查:撤回/强制收回是否还有遗漏 + public void checkWithdraw(String requestid,Integer nodeid){ + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select id from workflow_currentoperator where NODEID=? and operatetype =4",nodeid); + if (recordSet.next()){ // 存在撤回记录,补充查询其他未更新的撤回待办卡片 + recordSet.executeQuery("select OPERATOR from workflow_requestlog wr where REQUESTID = ? and LOGTYPE='r' order by LOGID desc",requestid); + String operator = ""; + if (recordSet.next()){ // 存在撤回记录 + operator = Util.null2String(recordSet.getString("OPERATOR")); // 撤回操作人 + }else return; + + // 查询当前节点 + recordSet.executeQuery("select CURRENTNODEID from workflow_requestbase wr where REQUESTID =?", requestid); + if (!recordSet.next()) return; + Integer currentNodeId = recordSet.getInt("CURRENTNODEID"); + + String opUserName = ""; + recordSet.executeQuery("select LASTNAME from hrmresource where id="+operator); + if (recordSet.next()){ + opUserName = Util.null2String(recordSet.getString("LASTNAME")); + } + + // 查询需要补充发送的待办记录 + recordSet.executeQuery("select bizid, receiver from temp_cardmsg where requestid =? and nodeid != ? and (updatestatus='' or updatestatus is null)", requestid, currentNodeId); + while (recordSet.next()){ + try { + String bizid = Util.null2String(recordSet.getString("bizid")); + String receiver = Util.null2String(recordSet.getString("receiver")); + TodoCardService.updateTodoCard(receiver, bizid, "Recalled By " + opUserName); + }catch (Exception e){ + writeLog("撤回更新卡片异常 "+e.getMessage(),e); + } + } + }else { + /*检查强制收回的操作*/ + String sql="select a.INVALIDID, h.LASTNAME from workflow_requestoperatelog a left join workflow_requestbase b on a.REQUESTID =b.REQUESTID and a.NODEID =b.CURRENTNODEID \n" + + "left join hrmresource h on h.id=a.INVALIDID where a.REQUESTID =? and a.ISINVALID =1"; + recordSet.executeQuery(sql, requestid); + if (recordSet.next()){ + String userId = Util.null2String(recordSet.getString("INVALIDID")); // 强制收回操作人id + String userName = Util.null2String(recordSet.getString("LASTNAME")); + + String sql2="select bizid, receiver from temp_cardmsg where requestid =? and nodeid=? and updatestatus =''"; + recordSet.executeQuery(sql2, requestid, nodeid); + while (recordSet.next()){ + try { + String bizid = Util.null2String(recordSet.getString("bizid")); + String receiver = Util.null2String(recordSet.getString("receiver")); + if ("1".equals(userId)){ + TodoCardService.updateTodoCard(receiver, bizid, "Processed by Administrator"); + }else{ + TodoCardService.updateTodoCard(receiver, bizid, "Recalled By " + userName); + } + }catch (Exception e){ + writeLog("强制收回更新卡片异常 "+e.getMessage(),e); + } + } + } + } + } + + // 更新撤销按钮状态 + public void updateCardRecalled(String cid, String operatorCode, String recallUserName) { + TodoCardService.updateTodoCard(operatorCode, cid, "Recalled by "+recallUserName); + } + +} diff --git a/src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java b/src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java new file mode 100644 index 00000000..2a56572d --- /dev/null +++ b/src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java @@ -0,0 +1,222 @@ +package com.customization.wfTodoCard.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.ofs.interfaces.SendRequestStatusDataInterfaces; +import weaver.workflow.request.todo.DataObj; + +import java.util.ArrayList; +import java.util.List; + +public class ListenSendRequestInfo extends BaseBean implements SendRequestStatusDataInterfaces{ + + /** + * 后台设置id + */ + public String id ; + /** + * 设置的系统编号 + */ + public String syscode ; + /** + * 服务器URL + */ + public String serverurl ; + /** + * 流程白名单 + */ + public ArrayList workflowwhitelist ; + /** + * 人员白名单 + */ + public ArrayList userwhitelist ; + + public String getId() { + return id; + } + public String getSyscode() { + return syscode; + } + public String getServerurl() { + return serverurl; + } + public ArrayList getWorkflowwhitelist() { + return workflowwhitelist; + } + public ArrayList getUserwhitelist() { + return userwhitelist; + } + + @Override + public void SendRequestStatusData(ArrayList arrayList) { +// String jsonStr = JSON.toJSONString(arrayList); + JSONArray array = JSON.parseArray(JSON.toJSONString(arrayList)); + String jsonData = array.toJSONString(); + writeLog("统一消息待办:"+jsonData); + if (array.size() > 0){ + for(int i = 0; i0; + + if (hasDond){ + List cids = new ArrayList<>(); + String nodeid=""; + for(int j=0; j0; + Integer todoUserid=0; // 是否是同一个人的待办 + if (hasTodo){ + for(int j = 0; j0; + if (hasDel){ + Integer delNodeid = null; + for (int j = 0; j cids){ + + Integer id1 = cids.get(0); + RecordSet rs = new RecordSet(); + String conditionSql = "select a.id,a.WORKFLOWID, a.REQUESTID, a.NODEID,a.RECEIVEDATE, a.RECEIVETIME, b.LASTOPERATOR, h.WORKCODE, h.LASTNAME " + + "from workflow_currentoperator a " + + "left join workflow_requestbase b on a.REQUESTID =b.REQUESTID " + + "left join hrmresource h on h.id=b.LASTOPERATOR " + + "where a.id = "+id1;; + rs.execute(conditionSql); + if (rs.next()){ + String requestid = rs.getString("REQUESTID"); + Integer nodeid = rs.getInt("NODEID"); + String receivedate = rs.getString("RECEIVEDATE"); + String receivetime = rs.getString("RECEIVETIME"); + String lastname = rs.getString("LASTNAME"); + + + rs.executeQuery( + "select a.id, h.WORKCODE " + + "from workflow_currentoperator a left join hrmresource h on h.id=a.USERID " + + "where a.REQUESTID="+requestid+" and a.NODEID = "+nodeid+" and a.RECEIVEDATE >='"+receivedate+"' and a.RECEIVETIME >='"+receivetime+"' and h.WORKCODE is not null" + ); + while (rs.next()){ + String id = rs.getString("id"); + String workcode1 = rs.getString("WORKCODE"); + new CheckSendCardService().updateCardRecalled(id, workcode1,lastname); + } + + } + } + + // 判断是否是转办 + public boolean isZhuanBan(Integer cid){ + RecordSet query = new RecordSet(); + query.executeQuery("select id from workflow_currentoperator where id=? and HANDLEFORWARDID is not null",cid); + return query.next(); + } + + +} diff --git a/src/com/customization/wfTodoCard/service/TodoCardService.java b/src/com/customization/wfTodoCard/service/TodoCardService.java new file mode 100644 index 00000000..41d68876 --- /dev/null +++ b/src/com/customization/wfTodoCard/service/TodoCardService.java @@ -0,0 +1,216 @@ +package com.customization.wfTodoCard.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.CardInfo; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.util.EntityUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import javax.net.ssl.*; +import java.nio.charset.StandardCharsets; + +import static weaver.file.Prop.getPropValue; + +public class TodoCardService { + + private static BaseBean baseBean = new BaseBean(); + private static String source = "OA" ; // + + /** + * 创建待办卡片 + * @param sender 卡片发送者UserCode + * @param receiver 卡片接收者UserCode或群聊groupId + * @param chatType 类型,1为单聊,2为群聊,默认为1 + * @param bizMsgId 业务侧Id + * @param cardInfo 卡片对象 + * @return 包含返回码和卡片Id的响应对象 + */ + public static String createTodoCard(String sender, String receiver, Integer chatType, String bizMsgId, CardInfo cardInfo) { + + baseBean.writeLog("start cretae todo card >>>>>>>>>>>, sender======>" + sender + " receiver======>" + receiver + " chatType======>" + chatType + " bizMsgId======>" + bizMsgId + " cardInfo======>" + cardInfo); + + addSendRecord(sender,receiver, bizMsgId,"", "待办", JSON.toJSONString(cardInfo)); + + String createUrl = getPropValue("workflowTodoCard", "createUrl"); + String tenantId = Util.null2String(getPropValue("workflowTodoCard", "tenantId")); + String appkey = Util.null2String(getPropValue("workflowTodoCard", "appkey")); + + + try { + SSLContext sslContext = SSLContextBuilder.create() + .loadTrustMaterial(new TrustSelfSignedStrategy()) + .build(); + + // 创建 HttpClient,跳过主机名验证 + SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory( + sslContext, + NoopHostnameVerifier.INSTANCE); + + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLSocketFactory(csf) + .build(); + + baseBean.writeLog("send card msg > createurl======>" + createUrl + " tenantId======>" + tenantId); + // 创建 HttpPost 请求 + HttpPost httpPost = new HttpPost(createUrl); + httpPost.setHeader("appkey",appkey); + httpPost.setHeader("Content-Type", "application/json"); +// httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); +// httpPost.setHeader("Content-Type", "application/json;charset=GBK"); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("tenantId",tenantId); + jsonObject.put("sender", sender); + jsonObject.put("receiver", receiver); + jsonObject.put("chatType", chatType); + jsonObject.put("bizMsgId", bizMsgId); + jsonObject.put("cardInfo", cardInfo); + jsonObject.put("source", source); + String jsonData = jsonObject.toString(); + +// baseBean.writeLog("card info json1: " + jsonData); +// jsonData = StringEscapeUtils.unescapeHtml4(jsonData); +// baseBean.writeLog("card info json2: " + jsonData); + + StringEntity entity = new StringEntity(jsonData,ContentType.create("application/json", "UTF-8")); + httpPost.setEntity(entity); + + + // 发送请求并获取响应 + HttpResponse response = httpClient.execute(httpPost); + + HttpEntity responseEntity = response.getEntity(); + String result = EntityUtils.toString(responseEntity); + baseBean.writeLog("send card msg > 4:: "+result); + + Header[] headers = response.getAllHeaders(); + for (Header header : headers) { + if (header.getName().equals("ITRACING_TRACE_ID")){ + baseBean.writeLog(">>ITRACING_TRACE_ID======>" + header.getValue()); + } + } + // 关闭 HttpClient + httpClient.close(); + + return result; + }catch (Exception e){ + baseBean.writeLog("send createCard error =======>" + e.getMessage(), e); + + } + return "error"; + } + + public static String updateTodoCard(String operator, String bizId, String status) { + + baseBean.writeLog("start update todo card >>>>>>>>>>>"); + if (status.endsWith("?")) status.replace("?",""); + + logUpdateStatus(bizId, status); + try { + + SSLContext sslContext = SSLContextBuilder.create() + .loadTrustMaterial(new TrustSelfSignedStrategy()) + .build(); + + // 创建 HttpClient,跳过主机名验证 + SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory( + sslContext, + NoopHostnameVerifier.INSTANCE); + + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLSocketFactory(csf) + .build(); + + String updateUrl = getPropValue("workflowTodoCard", "updateUrl"); + String tenantId = Util.null2String(getPropValue("workflowTodoCard", "tenantId")); + String appkey = Util.null2String(getPropValue("workflowTodoCard", "appkey")); + + // 创建 HttpPost 请求 + HttpPost httpPost = new HttpPost(updateUrl); + httpPost.setHeader("appkey",appkey); + httpPost.setHeader("Content-Type", ContentType.APPLICATION_JSON.getMimeType()); + httpPost.setHeader("Accept", "application/json"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("tenantId",tenantId); + jsonObject.put("source", source); + jsonObject.put("bizMsgId", bizId); + jsonObject.put("operator", operator); + jsonObject.put("status", status); + String jsonData2 = jsonObject.toString(); + baseBean.writeLog("update card jsonData2: " + jsonData2); + + baseBean.writeLog("update card info status: " + status); + + String jsonData = "{\"tenantId\":\"" + tenantId + "\",\"source\":\"" + source + "\",\"bizMsgId\":\"" + bizId + "\",\"operator\":\"" + operator + "\",\"status\":\"" + status + "\"}"; + + baseBean.writeLog("update card info json: " + jsonData); + + StringEntity entity = new StringEntity(jsonData, StandardCharsets.UTF_8); +// StringEntity entity = new StringEntity(jsonData); + entity.setContentType("application/json"); + + httpPost.setEntity(entity); + + // 发送请求并获取响应 + HttpResponse response = httpClient.execute(httpPost); + baseBean.writeLog("Response Code: " + response.getStatusLine().getStatusCode()); + + HttpEntity responseEntity = response.getEntity(); + String result = EntityUtils.toString(responseEntity); + baseBean.writeLog("send card msg > :: "+result); + + Header[] headers = response.getAllHeaders(); + for (Header header : headers) { + if (header.getName().equals("ITRACING_TRACE_ID")){ + baseBean.writeLog(">>ITRACING_TRACE_ID======>" + header.getValue()); + } + } + // 关闭 HttpClient + httpClient.close(); + + return result; + }catch (Exception e){ + baseBean.writeLog("send createCard error =======>" + e.getMessage(), e); + } + + return "error"; + } + + static void addSendRecord(String sender, String receiver, String bizMsgId, String status, String type,String param){ +// String sql="INSERT INTO temp_cardmsg(sender, receiver, bizid, ctype, updatestatus, param)VALUES(?,?,?,?,?,?)"; + RecordSet rs = new RecordSet(); + String checksql = "select id from workflow_currentoperator where id =?"; + rs.executeQuery(checksql, bizMsgId); + if (rs.next()){ + String sql = "INSERT INTO temp_cardmsg(requestid, nodeid,isremark,sender, receiver, bizid, ctype, updatestatus, param) " + + "select REQUESTID, NODEID,isremark, ?,?,?,?,?,? from workflow_currentoperator where id = ?"; + rs.executeUpdate(sql, sender, receiver, bizMsgId, type, status,param, bizMsgId); + } else { + String sql = "INSERT INTO temp_cardmsg(sender, receiver, bizid, ctype, updatestatus, param) values(?,?,?,?,?,?)" ; + rs.executeUpdate(sql,sender, receiver, bizMsgId, type, status,param); + } + } + + static void logUpdateStatus(String bizMsgId, String status){ + RecordSet rs = new RecordSet(); + String sql = "update temp_cardmsg set updatestatus=? where bizid=?"; + rs.executeUpdate(sql, status, bizMsgId); + } + + +} \ No newline at end of file diff --git a/src/com/engine/dito/hrm/HrmConvertAction.java b/src/com/engine/dito/hrm/HrmConvertAction.java new file mode 100644 index 00000000..4f3b2675 --- /dev/null +++ b/src/com/engine/dito/hrm/HrmConvertAction.java @@ -0,0 +1,197 @@ +package com.engine.dito.hrm; + +import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.dito.excel.service.ImportExcelService; +import com.engine.dito.excel.service.impl.ImportExcelServiceImpl; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.HashMap; +import java.util.Map; + +public class HrmConvertAction { + + @GET + @Path("/staffcode") + @Produces({MediaType.TEXT_PLAIN}) + public String staffcodeConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + BaseBean bb = new BaseBean(); + try{ + String staffcode = request.getParameter("staffcode"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(staffcode)){ + String sql = "select id from hrmresource where workcode = ? " +where ; + rs.executeQuery(sql,new Object[]{staffcode}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/loginid") + @Produces({MediaType.TEXT_PLAIN}) + public String loginidConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String loginid = request.getParameter("loginid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(loginid)){ + String sql = "select id from hrmresource where loginid = ? " + where; + rs.executeQuery(sql,new Object[]{loginid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/staffid") + @Produces({MediaType.TEXT_PLAIN}) + public String staffidConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String staffid = request.getParameter("staffid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(staffid)){ + String sql = " select id from cus_fielddata where "+cus_staff+" = ? and scope = ? and scopeid = ? and id in( select id from hrmresource where 1=1 " + where +") "; + rs.executeQuery(sql,new Object[]{staffid,scope,scopeid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/eid") + @Produces({MediaType.TEXT_PLAIN}) + public String eidConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String eid = request.getParameter("eid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + String cus_eid = PropBean.getUfPropValue("cus_eid") ; + + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(eid)){ + String sql = " select id from cus_fielddata where "+cus_eid+" = ? and scope = ? and scopeid = ? and id in( select id from hrmresource where 1=1 " + where +") "; + rs.executeQuery(sql,new Object[]{eid,scope,scopeid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/sysuserid") + @Produces({MediaType.TEXT_PLAIN}) + public String sysuseridConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String sysuserid = request.getParameter("sysuserid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + String cus_sysuserid = PropBean.getUfPropValue("cus_sysuserid") ; + + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(sysuserid)){ + String sql = " select id from cus_fielddata where "+cus_sysuserid+" = ? and scope = ? and scopeid = ? and id in( select id from hrmresource where 1=1 " + where +") "; + rs.executeQuery(sql,new Object[]{sysuserid,scope,scopeid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + +} diff --git a/src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java b/src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java new file mode 100644 index 00000000..f0d678e8 --- /dev/null +++ b/src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java @@ -0,0 +1,344 @@ +package com.engine.workflow.cmd.requestForm; + +import com.api.workflow.util.ServiceUtil; +import com.cloudstore.dev.api.util.Util_TableMap; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.workflow.biz.WorkflowTestBiz; +import com.engine.workflow.biz.publicApi.RequestOperateBiz; +import com.engine.workflow.biz.requestForm.RequestRemindBiz; +import com.engine.workflow.biz.requestForm.SubmitErrorMsgBiz; +import com.engine.workflow.biz.requestForm.TestWorkflowCheckBiz; +import com.engine.workflow.biz.requestList.RequestAttentionBiz; +import com.engine.workflow.biz.workflowOvertime.OvertimeBiz; +import com.engine.workflow.constant.RemindTypeEnum; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import weaver.conn.RecordSet; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.forceback.RequestForceBackUtil; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.agent.AgentManager; +import weaver.workflow.msg.MsgPushUtil; +import weaver.workflow.msg.entity.MsgEntity; +import weaver.workflow.request.RequestAnnexUpload; +import weaver.workflow.request.RequestOperationMsgManager; +import weaver.workflow.request.WFUrgerManager; +import weaver.workflow.workflow.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 功能管理 + * @author liuzy 2018/5/4 + */ +public class FunctionManageCmd extends AbstractCommonCommand>{ + + private HttpServletRequest request; + private HttpServletResponse response; + + public FunctionManageCmd(HttpServletRequest request, HttpServletResponse response, User user){ + this.request = request; + this.response = response; + this.user = user; + } + + public Map execute(CommandContext commandContext){ + Map apidatas = new HashMap(); + + Map resultmap = new HashMap(); + int logintype = Util.getIntValue(user.getLogintype()); + int requestid = Util.getIntValue(request.getParameter("requestid"), 0); + String flag = Util.null2String(request.getParameter("flag")); + WfFunctionManageUtil wffmu = new WfFunctionManageUtil(); + ArrayList requestidlist = new ArrayList(); + + int formid = Util.getIntValue(request.getParameter("formid"), 0); + int requestLogId = Util.getIntValue(request.getParameter("workflowRequestLogId"), 0); + String signdocids = Util.null2String(request.getParameter("signdocids")); + String signworkflowids = Util.null2String(request.getParameter("signworkflowids")); + String remark = Util.null2String(request.getParameter("remark")); + int workflowid = Util.getIntValue(request.getParameter("workflowid"), 0); + int nodeid = -1; + + + String isnew = new BaseBean().getPropValue("WorkflowOvertimeIsNew" , "isNew"); + boolean isnewFlag = "1".equals(isnew); + // 流程暂停 + if ("stop".equals(flag)) { + wffmu.setStopOperation(requestid, user); +// this.pushOperationMsg(requestid,user,flag); + if(isnewFlag) + OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务 + } + + // 流程撤销 + if ("cancel".equals(flag)) { + wffmu.setCancelOperation(requestid, user); +// this.pushOperationMsg(requestid,user,flag); + if(isnewFlag) + OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务 + } + + // 流程启用 + if ("restart".equals(flag)) { + wffmu.setRestartOperation(requestid, user); +// this.pushOperationMsg(requestid,user,flag); + if(isnewFlag) + OvertimeBiz.getInstance().addOvertimeTaskThread(requestid, workflowid, nodeid);//添加超时任务 + } + + + // 强制归档 + if ("ov".equals(flag)) { + WfForceOver wfo = new WfForceOver(); + String annexdocids = ""; + String fromflow = Util.null2String(request.getParameter("fromflow")); + String remarkLocation = Util.null2String(request.getParameter("remarkLocation")); + + int agentType = Util.getIntValue(Util.null2String(request.getParameter("agentType"))); + int agentorByAgentId = Util.getIntValue(Util.null2String(request.getParameter("agentorByAgentId"))); + if (agentType == 1) {//流程代理出去,本人强制归档,需先收回代理 + AgentManager agentManager = new AgentManager(user); + agentManager.agentBackRequest(agentorByAgentId, user.getUID(), workflowid + "", requestid); + Date currentDate = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); + SimpleDateFormat timeForamt = new SimpleDateFormat("HH:mm:ss"); + new RecordSet().executeUpdate("update workflow_currentoperator set operatedate = ? , operatetime = ? where userid = ? and requestid = ? and (operatedate is null or operatedate < ' ' ) ", + dateFormat.format(currentDate), timeForamt.format(currentDate), user.getUID(), requestid); + } + + if (fromflow.equals("1")) { + FileUpload fu = new FileUpload(request); + remark = Util.null2String(fu.getParameter("remark")); + workflowid = Util.getIntValue(fu.getParameter("workflowid"), -1); + nodeid = Util.getIntValue(fu.getParameter("nodeid"), -1); + + // 获取签字意见相关文档,相关流程 + + signdocids = Util.null2String(fu.getParameter("signdocids")); + signworkflowids = Util.null2String(fu.getParameter("signworkflowids")); + String ismode = Util.null2String(request.getParameter("ismode")); + if (!ismode.equals("1")) { + RequestAnnexUpload rau = new RequestAnnexUpload(); + rau.setRequest(fu); + rau.setUser(user); + annexdocids = rau.AnnexUpload(); + } else { + String hasSign = "0";// 模板中是否设置了签字 + RecordSet rs = new RecordSet(); + rs.executeSql("select * from workflow_modeview where formid=" + formid + " and nodeid=" + nodeid + " and fieldid=-4"); + if (rs.next()) + hasSign = "1"; + if ("1".equals(hasSign)) {// 模板中设置了签字 + annexdocids = Util.null2String(fu.getParameter("qianzi")); + } else {// 模板中没有设置签字,按普通方式上传签字意见的附件 + RequestAnnexUpload rau = new RequestAnnexUpload(); + rau.setRequest(fu); + rau.setUser(user); + annexdocids = rau.AnnexUpload(); + } + } + + + WFManager wfManager = new WFManager(); + wfManager.setWfid(workflowid); + try { + wfManager.getWfInfo(); + } catch (Exception e) { + e.printStackTrace(); + } + String isShowChart = Util.null2s(wfManager.getIsShowChart().trim(),"0"); + apidatas.put("isShowChart", isShowChart); + } + + wfo.setRemark(remark); + wfo.setAnnexdocids(annexdocids); + wfo.setSigndocids(signdocids); + wfo.setSignworkflowids(signworkflowids); + wfo.setRequestLogId(requestLogId); + wfo.setRemarkLocation(remarkLocation); + + WFUrgerManager wfum = new WFUrgerManager(); + if (wffmu.haveOtherOperationRight(requestid) && !wfo.isOver(requestid) && (wfo.isNodeOperator(requestid, user.getUID()) || wfum.getMonitorViewRight(requestid, user.getUID()))) { + requestidlist.add("" + requestid); + wfo.doForceOver(requestidlist, request, response, user); + apidatas.put("success",1); + if(isnewFlag) + OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务 + }else{ + apidatas.put("success",0); + } + //判断是否属于流程测试 + TestWorkflowCheckBiz testBiz = new TestWorkflowCheckBiz(); + boolean belongTest = testBiz.judgeBelongTest(request, false); + if(belongTest) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select nodeid from workflow_flownode where workflowid = ? and nodetype = 3",workflowid); + rs.next(); + WorkflowTestBiz.setWorkflowTestInfo(flag, requestid, nodeid, "", null,rs.getInt("nodeid")); + } + + this.doArchiveRemind(workflowid,requestid); + + new weaver.cpt.util.CptWfUtil().releaseFrozenCptnum(requestid+""); //清除资产冻结 + } + + // 强制收回 + if ("rb".equals(flag)) { + + BaseBean bb = new BaseBean(); + bb.writeLog("FunctionManageCmd:requestid:"+requestid); + List> remark89List = new ArrayList>(); + List> atList = new ArrayList>(); + List> forwardList = new ArrayList>(); + try { + RequestForceBackUtil requestForceBackUtil = new RequestForceBackUtil(); + remark89List = requestForceBackUtil.queryRequestRemark89ByForceBack(requestid+""); + requestForceBackUtil.queryRequestAtByForceBack(requestid+""); + requestForceBackUtil.queryRequestForwardByForceBack(requestid+""); + }catch (Exception e){ + e.printStackTrace(); + new BaseBean().writeLog(e); + } + bb.writeLog("FunctionManageCmd:remark89List:"+remark89List.size()+" atList:"+atList.size()); + + + WfForceDrawBack wfdb = new WfForceDrawBack(); + RequestForceDrawBack requestForceDrawBack = new RequestForceDrawBack(); + RequestOperationResultBean resultBean = new RequestOperationResultBean(); + if (wffmu.haveOtherOperationRight(requestid) && wfdb.isHavePurview(requestid, user.getUID(), logintype, -1, -1)) { + requestidlist.add("" + requestid); + // WfForceDrawBack.doForceDrawBack(requestidsArr, request, + // response, -1, -1); + // 使用新的收回方式 + String sessionkey = workflowid + "_" + nodeid + "_" + user.getUID() + "_" + System.currentTimeMillis(); + int result = requestForceDrawBack.foreceDrawBack(user, requestid, false, -1, -1); + if (!requestForceDrawBack.isAddInOperateSuccess()) {//强制收回附加操作执行失败,返回错误信息 + String message = requestForceDrawBack.getMessage(); + String messagecontent = requestForceDrawBack.getMessageContent(); + if("".equals(message) || requestid <= 0) { + message = "1"; + } + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,messagecontent)); + resultBean.setType(RequestExecuteType.FAILD); + Util_TableMap.setObjVal(Util.null2String(sessionkey), resultBean); + apidatas.put("success",false); + apidatas.put("msg",SystemEnv.getHtmlLabelNames("506175,83071",user.getLanguage())); + return apidatas; + } + if (result == RequestForceDrawBack.OLDDATA) { + wfdb.doForceDrawBack(requestidlist, request, response, -1, -1); + } + RequestOperateBiz.drawBackSpecialTreatment(formid, workflowid); + + /*E9打印登录超时报错(QC:527424)*/ + if(user == null) { + try { + response.sendRedirect(weaver.general.GCONST.getContextPath()+"/wui/index.html"); + return null; + } catch (IOException e) { + e.printStackTrace(); + } + } + //判断是否可以跳转到新的页面 + boolean reqRoute = ServiceUtil.isReqRoute(String.valueOf(requestid),user); + apidatas.put("reqRoute", reqRoute); + apidatas.put("success",result == RequestForceDrawBack.SUCCESS); + if(result == RequestForceDrawBack.SUCCESS){ + apidatas.put("msg",SystemEnv.getHtmlLabelName(83585,user.getLanguage())); + }else if(result == RequestForceDrawBack.FAIL){ + apidatas.put("msg",SystemEnv.getHtmlLabelName(389102,user.getLanguage())); + }else if(result == RequestForceDrawBack.NORIGHT){ + apidatas.put("msg",SystemEnv.getHtmlLabelName(18567,user.getLanguage())); + } + apidatas.put("sessionkey", sessionkey); + new BaseBean().writeLog("requestForceBack start"); + try { + + RequestForceBackUtil requestForceBackUtil = new RequestForceBackUtil(); + requestForceBackUtil.sendTodoDataByForceBack(requestid+""); + requestForceBackUtil.completeReamrkAtByForceBack(remark89List,atList,forwardList); + }catch (Exception e){ + e.printStackTrace(); + new BaseBean().writeLog(e); + } + + }else { + apidatas.put("success",false); + apidatas.put("msg",SystemEnv.getHtmlLabelName(18567,user.getLanguage())); + } + } + //自动取消 流程关注 + new RequestAttentionBiz().cancelAttention(requestid,flag); + return apidatas; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + + /** + * 暂停、撤销、启用消息数据 + * @param requestId + * @param user + * @param flag + */ + private boolean pushOperationMsg(int requestId,User user,String flag){ + + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = romm.getOperateMsgByReqId(String.valueOf(requestId),user,flag); + new MsgPushUtil().pushMsg(requestMsgEntity); + return true; + } + + + private void doArchiveRemind(int workflowid,int requestid){ + String src = Util.null2String(request.getParameter("src")); + String remindTypes = Util.null2String(request.getParameter("remindTypes")); //表单上提醒方式 + RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user); + //默认提醒 + WFManager wfManager = new WFManager(); + try{ + wfManager.setWfid(workflowid); + wfManager.getWfInfo(); + }catch (Exception e){} + + if("-1".equals(remindTypes)){ //老数据 + int messageType = Util.getIntValue(Util.null2String(request.getParameter("messageType")),-1); // 老短信提醒 + int mailMessageType = Util.getIntValue(Util.null2String(request.getParameter("chatsType")),-1); // 老邮件提醒 + if(messageType >=1) requestRemindBiz.requestRemind(requestid,workflowid,src, RemindTypeEnum.SMS,messageType); + //历史数据可能只有短信提醒,但是其实也开启了邮件提醒 + int _mailMessageType = Util.getIntValue(wfManager.getMailMessageType(),-1); + if(mailMessageType == 1 || _mailMessageType == 1) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + Set remindType = new HashSet<>(); + if(messageType >=1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,messageType); + } + if(mailMessageType == 1 || _mailMessageType == 1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + } + }else{ + + String isSmsRemind = remindTypes.indexOf(RemindTypeEnum.SMS.getCode()) > -1 ? "1" : "0"; + String isEmailRemind = remindTypes.indexOf(RemindTypeEnum.EMAIL.getCode()) > -1 ? "1" : "0"; + if("1".equals(isSmsRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,0); + if("1".equals(isEmailRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + } + requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src); + } + + public HttpServletRequest getRequest() { + return request; + } +} diff --git a/src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java b/src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java new file mode 100644 index 00000000..4b241131 --- /dev/null +++ b/src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java @@ -0,0 +1,1353 @@ +package com.engine.workflow.cmd.requestForm; + + +import com.api.workflow.service.RequestAuthenticationService; +import com.cloudstore.dev.api.util.Util_TableMap; +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.common.util.AttrSignatureUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.interceptor.CommandContext; +import com.engine.workflow.biz.GetNextNodeContentBiz; +import com.engine.workflow.biz.RobotNode.RobotNodeBiz; +import com.engine.workflow.biz.RobotNode.RobotNodeFlowBiz; +import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz; +import com.engine.workflow.biz.SecondAuthBiz; +import com.engine.workflow.biz.freeNode.FreeNodeBiz; +import com.engine.workflow.biz.operationMenu.MenuDefaultSignBiz; +import com.engine.workflow.biz.requestFlow.SaveFormDatasBiz; +import com.engine.workflow.biz.requestFlowLog.RequestFlowLogBiz; +import com.engine.workflow.biz.requestForm.*; +import com.engine.workflow.biz.requestSubmit.RequestFlowErrorLogBiz; +import com.engine.workflow.biz.requestSubmit.RequestOperationBiz; +import com.engine.workflow.constant.*; +import com.engine.workflow.constant.requestForm.PromptType; +import com.engine.workflow.constant.requestForm.RequestConstant; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import com.engine.workflow.entity.RequestFlowLogEntity; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import com.engine.workflow.service.RequestManagerService; +import com.engine.workflow.service.RequestSecondAuthService; +import com.engine.workflow.service.impl.RequestManagerServiceImpl; +import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl; +import com.engine.workflow.util.SecondAuthUtil; +import com.google.common.base.Strings; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONObject; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.cpt.util.CptWfUtil; +import weaver.docs.docs.DocCheckInOutUtil; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.agent.AgentManager; +import weaver.workflow.exceldesign.DetailOrderManager; +import weaver.workflow.logging.Logger; +import weaver.workflow.logging.LoggerFactory; +import weaver.workflow.msg.MsgPushUtil; +import weaver.workflow.msg.entity.MsgEntity; +import weaver.workflow.request.*; +import weaver.workflow.workflow.WFManager; +import weaver.workflow.workflow.WorkflowConfigComInfo; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.*; + +/** + * 流程提交 + */ +public class RequestSubmitCmd extends AbstractCommonCommand>{ + + private final static Logger log = LoggerFactory.getLogger(RequestManager.class); + + private HttpServletRequest request; + + private RequestFlowLogEntity requestFlowLogEntity; + + public HttpServletRequest getRequest() { + return request; + } + + public void setRequest(HttpServletRequest request) { + this.request = request; + } + + public RequestSubmitCmd(HttpServletRequest request, User user){ + this.request = request; + this.user = user; + initParams(); + } + + @Override + public Map execute(CommandContext commandContext){ + Map result = new HashMap(); + + //初始化流程流转日志对象 + requestFlowLogEntity = RequestFlowLogBiz.initRequestFlowLogEntity(user,RequestFlowLogSrcType.OTHER,request); + + try { + //校验token避免重复提交 + String tokenKey = ""; + boolean isCreate = "1".equals(request.getParameter("iscreate")); + int lastloginuserid = Util.getIntValue(request.getParameter("lastloginuserid")); + if(isCreate && lastloginuserid > 0 && lastloginuserid != user.getUID()) { + result.put("errorInfo",SystemEnv.getHtmlLabelName(515427,user.getLanguage())); + return result; + } + if(isCreate) + tokenKey = user.getUID()+"_"+Util.null2String(request.getParameter("workflowid"))+"_addrequest_submit_token"; + else + tokenKey = user.getUID()+"_"+Util.null2String(request.getParameter("requestid"))+"_request_submit_token"; + String tokenValue = Util.null2String(request.getParameter(tokenKey)); + String tokenValueCache = Util_TableMap.getVal(tokenKey); + if(!"".equals(tokenValueCache) && tokenValue.equals(tokenValueCache)){ + result.put("msg", ""+ SystemEnv.getHtmlLabelName(10005579,weaver.general.ThreadVarLanguage.getLang())+""); + result.put("errorType","repeatSubmit"); + return result; + }else{ + Util_TableMap.setVal(tokenKey, tokenValue, 120); + } + //前台联动超过时间未返回,未卡住提交情况记录日志 + String linkageUnFinishedKey = Util.null2String(request.getParameter("linkageUnFinishedKey")); + if(!"".equalsIgnoreCase(linkageUnFinishedKey)) + new BaseBean().writeLog(tokenKey+"--linkageUnFinishedKey--"+linkageUnFinishedKey); + //消息 + String src = Util.null2String(request.getParameter("src")); + int requestid = Util.getIntValue(request.getParameter("requestid"), -1); + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = null; + RequestOperationResultBean resultBean = this.getResult(); //插入操作日志 + result.put("data", resultBean); + //是否为提交需确认 + boolean isNeedConfirm = ("save".equals(src) && "1".equals(resultBean.getResultInfo().get("isaffirmance")) ); + //流程异常处理、出口提示不刷新表单,需要更新操作时间避免出现数据已更改异常 + if(resultBean.getType() == RequestExecuteType.WF_LINK_TIP || resultBean.getType() == RequestExecuteType.R_CHROSE_OPERATOR || isNeedConfirm) { + Util_TableMap.clearVal(tokenKey); //两次情况需要清空token + RecordSet recordSet = new RecordSet(); + if (requestid > 0) { + recordSet.execute("select lastOperator,lastOperateDate,lastOperateTime from workflow_Requestbase where requestid = " + requestid); + if(recordSet.next()){ + resultBean.getSubmitParams().put("lastOperator", Util.null2String(recordSet.getString("lastOperator"))); + resultBean.getSubmitParams().put("lastOperateDate", Util.null2String(recordSet.getString("lastOperateDate"))); + resultBean.getSubmitParams().put("lastOperateTime", Util.null2String(recordSet.getString("lastOperateTime"))); + } + } + } + //消息中心流程异步提交消息提醒 + if(resultBean.getType() == RequestExecuteType.ASYNC_SUBMIT && "0".equals(user.getLogintype())){ + + requestMsgEntity = romm.requestSubmitErrorMsg(String.valueOf(requestid),resultBean,user.getUID()); + } + if("reject".equals(src) && resultBean.getType()==RequestExecuteType.SUCCESS){ + String rejectNodeids = request.getParameter("RejectNodes"); + requestMsgEntity = romm.rejectNoticeMsg(String.valueOf(requestid),rejectNodeids); + } + boolean isaffirmance = "1".equals(request.getParameter("isaffirmance")); + if (isCreate && !isaffirmance && ( + resultBean.getType() == RequestExecuteType.SUCCESS && "save".equals(src) + || resultBean.getType() == RequestExecuteType.FAILD && "submit".equals(src))) { + requestid = Util.getIntValue(Util.null2String(resultBean.getSubmitParams().get("requestid")), -1); + requestMsgEntity = romm.createRequestMsg(requestid,user.getUID()); + } + + if (isCreate && (resultBean.getType() == RequestExecuteType.SUCCESS && "submit".equals(src) )) { + int nodeid = Util.getIntValue(request.getParameter("nodeid"), -1); + requestid = Util.getIntValue(Util.null2String(resultBean.getSubmitParams().get("requestid")), -1); + RequestFormBiz.updateLastViewDate(requestid,user.getUID(),nodeid); + } + if(requestMsgEntity != null){ + new MsgPushUtil().pushMsg(requestMsgEntity); + } + resultBean.getSubmitParams().put(tokenKey,System.currentTimeMillis()); + Util_TableMap.setObjVal(Util.null2String(resultBean.getResultInfo().get("sessionkey")), resultBean); + + //流程流转日志信息入库 + requestFlowLogEntity.getResultdata().putAll(result); + requestFlowLogEntity.setResult(resultBean.getType().toString()); + if(resultBean.getType() == RequestExecuteType.FAILD && resultBean.getMessageInfo()!=null &&resultBean.getMessageInfo().containsKey("detail")){ + requestFlowLogEntity.setMessageInfo(Util.null2String(resultBean.getMessageInfo().get("detail"))); + } + RequestFlowLogBiz.SaveRequestFlowLog(requestFlowLogEntity); + +// // 获取 at 的人员 id,发送卡片 +// String isSelectValue = Util.null2String(params.get("isSelectValue")); +// new BaseBean().writeLog("isSelectValue=======>" + isSelectValue); +// Map submitparam = requestFlowLogEntity.getSubmitparam(); +// String remark = submitparam.get("remark").toString(); +// if ("1".equals(isSelectValue) && null != remark && !"".equals(remark)) { +// new BaseBean().writeLog("remark=======>" + remark); +// +//// String newremark = Util.null2String(remark).replace("

", "").replace("

", ""); +//// String output = newremark.replaceAll("]*>.*?", "").replace(" ", " "); +// +// Document doc = Jsoup.parse(remark); +// // 选择所有的

标签 +// Elements pTags = doc.select("p"); +// +// String title = ""; +// Iterator pIt = pTags.iterator(); +// while(pIt.hasNext()) { +// Element element = pIt.next(); +// title += element.text(); +// } +// +// new BaseBean().writeLog("RequestSubmitCmd-title:" + title); +// if(StringUtils.isNotBlank(title)){ +// title = StringEscapeUtils.unescapeHtml4(title); +// } +// new BaseBean().writeLog("RequestSubmitCmd-title2:" + title); +//// for (int i = 0; i < pTags.size(); i++) { +//// Element pTag = pTags.get(i); +//// // 获取

标签内的子节点列表 +//// List childNodes = pTag.clone().childNodes(); +//// // 按顺序将子节点插入到

标签的位置 +//// for (int j = childNodes.size() - 1; j >= 0; j--) { +//// pTag.after(childNodes.get(j)); +//// } +//// // 移除

标签 +//// pTag.remove(); +//// } +//// // 选择所有的 标签 +//// Elements aTags = doc.select("a"); +//// for (int i = 0; i < aTags.size(); i++) { +//// Element aTag = aTags.get(i); +//// // 获取 atsome-name 属性值作为人名 +//// String name = aTag.attr("atsome-name"); +//// if (!name.isEmpty()) { +//// // 创建文本节点 +//// TextNode textNode = new TextNode("@" + name, doc.baseUri()); +//// // 在 标签后面插入文本节点 +//// aTag.after(textNode); +//// // 移除 标签 +//// aTag.remove(); +//// } +//// } +//// String html = doc.body().html(); +//// new BaseBean().writeLog("html=======>" + html); +//// new BaseBean().writeLog("title=======>" + title); +// +// RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); +// List atResourceids = reqsignwm.parseRemark(remark); +// for (String atResourceid : atResourceids) { +// new BaseBean().writeLog("RequestSubmitCmd-atResourceid:" + atResourceid); +//// new CheckSendCardService().checkSendRequestCardInfo(requestid, Integer.parseInt(atResourceid)); +// new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestid),"",title,"You have been tagged in a comment."); +// } +// } + + } catch (Exception e) { + e.printStackTrace(); + } + + return result; + } + + private RequestOperationResultBean getResult() throws Exception{ + boolean isPrintLogUser = RequestOperationBiz.isPrintLogUser(user); + long t1 = System.currentTimeMillis(); + t1 = writeTimeLog(isPrintLogUser,64,t1,"开始执行提交"); + RequestOperationResultBean resultBean = new RequestOperationResultBean(); + Map resultInfo = resultBean.getResultInfo(); + + //流程测试情况返回值 + TestWorkflowCheckBiz testBiz = new TestWorkflowCheckBiz(); + Map testParams = resultBean.getTestParams(); + boolean belongTest = testBiz.judgeBelongTest(request, false); + testParams.put("belongTest", belongTest); + if(belongTest){ + testParams.put("wfTestStr", Util.null2String(request.getParameter("wfTestStr"))); + } + HttpSession session = request.getSession(); + + RecordSet recordSet = new RecordSet(); + RequestManager requestManager = new RequestManager(); + requestManager.setRequestFlowLogEntity(requestFlowLogEntity); + String f_weaver_belongto_userid = request.getParameter("f_weaver_belongto_userid");// 需要增加的代码 + String f_weaver_belongto_usertype = request.getParameter("f_weaver_belongto_usertype");// 需要增加的代码 + resultInfo.put("f_weaver_belongto_userid", f_weaver_belongto_userid); + resultInfo.put("f_weaver_belongto_usertype", f_weaver_belongto_usertype); + String userid = "" + user.getUID(); + + String iscreate = Util.null2String(request.getParameter("iscreate")); + int requestid = Util.getIntValue(request.getParameter("requestid"), -1); + //验证是否有流程权限 + RequestAuthenticationService authService = new RequestAuthenticationService(); + authService.setUser(user); + if (!"1".equals(iscreate) && !authService.verify(request, requestid)) { + resultBean.getResultInfo().put("requestid",requestid); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } + + AttrSignatureUtil attrSignatureUtil = new AttrSignatureUtil(user.getUID(), request.getHeader("user-agent")); + String _attributesString = Util.null2String(request.getParameter(RequestConstant.SIGNATURE_ATTRIBUTES_STR)); + String _attributesSignature = Util.null2o(request.getParameter(RequestConstant.SIGNATURE_SECRET_KEY)); + attrSignatureUtil.verifySignature(_attributesString, _attributesSignature); + String comemessage = Util.null2String(request.getParameter("comemessage")); + String rands[] = Util.TokenizerString2(Util.null2String(request.getParameter("rand")), "+"); + String rand = ""; + boolean needout = false; + if (rands.length > 0) + rand = rands[0]; + if (rands.length > 1) + needout = true; + String needoutprint = Util.null2String(request.getParameter("needoutprint"));// 等于1,代表点的正文 + + String src = Util.null2String(request.getParameter("src")); + int workflowid = Util.getIntValue(request.getParameter("workflowid"), -1); + String workflowtype = Util.null2String(request.getParameter("workflowtype")); + int isremark = Util.getIntValue(request.getParameter("isremark"), -1); + int formid = Util.getIntValue(request.getParameter("formid"), -1); + int isbill = Util.getIntValue(request.getParameter("isbill"), -1); + int billid = Util.getIntValue(request.getParameter("billid"), -1); + int nodeid = Util.getIntValue(request.getParameter("nodeid"), -1); + String nodetype = Util.null2String(request.getParameter("nodetype")); + String requestname = Util.fromScreen3(request.getParameter("requestname"), user.getLanguage()); + String requestlevel = Util.fromScreen(request.getParameter("requestlevel"), user.getLanguage()); + String isFromEditDocument = Util.null2String(request.getParameter("isFromEditDocument")); + int SubmitToNodeid = Util.getIntValue(request.getParameter("SubmitToNodeid"),0); + String remark = Util.null2String(request.getParameter("remark")); + String needwfback = Util.null2String(request.getParameter("needwfback")); + int RejectToNodeid = Util.getIntValue(Util.null2String(request.getParameter("RejectToNodeid")),0); + int RejectToType = Util.getIntValue(Util.null2String(request.getParameter("RejectToType")),0); + boolean asyncSubmit = "1".equals(Util.null2String(request.getParameter("asyncSubmit")));//异步提交 + String eh_setoperator = Util.null2String(request.getParameter("eh_setoperator")); + String clientType = Util.null2String(request.getParameter("clientType"), SignSource.PC_BROWSER.getType()); + + String sessionkey = workflowid + "_" + nodeid + "_" + user.getUID() + "_" + System.currentTimeMillis(); + resultInfo.put("sessionkey", sessionkey); + + //判断是否有流程删除权限 + if("delete".equals(src) && !RequestDeleteUtils.verifyDelRight(requestid,user,false)) { + resultBean.getResultInfo().put("requestid",requestid); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } + + int agentType = Util.getIntValue(Util.null2String(request.getParameter("agentType"))); + int agentorByAgentId = Util.getIntValue(Util.null2String(request.getParameter("agentorByAgentId"))); + if (agentType == 1 && !src.equals("save")) {//流程代理出去,本人提交,需先收回代理 + AgentManager agentManager = new AgentManager(user); + agentManager.agentBackRequest(agentorByAgentId, user.getUID(), workflowid + "", requestid); + } + + //正在进行自动批准 + if(isAutoApproving(requestid,nodeid,resultBean)) { + return resultBean; + } + int index = remark.indexOf("

来自"); + String myremark = remark; + String remarkSuffix = ""; + if(index > -1){ + myremark = remark.substring(0, index); + remarkSuffix = remark.substring(index); + } + //设置默认意见 + myremark = Util.null2String(myremark).replace("

", "") + .replace("

", "") + .replace("\n", "") + .replace(" ", ""); + if("".equals(myremark.trim())) { + OperationMenuType type = null; + if("submit".equals(src)) { + type = SubmitToNodeid > 0 ? OperationMenuType.SUBMIT_DIRECT : OperationMenuType.SUBMIT; + } else if ("reject".equals(src)) { + type = OperationMenuType.REJECT; + } + if(type != null) { + remark = Util.null2String(MenuDefaultSignBiz.getMenuDefaultSignMap(workflowid,nodeid,type)) + remarkSuffix; + } + } + String method = Util.fromScreen(request.getParameter("method"), user.getLanguage()); // 作为新建文档时候的参数传递 + String remarkLocation = Util.null2String(request.getParameter("remarkLocation")); // 签字意见添加位置 + String topage = URLDecoder.decode(Util.null2String(request.getParameter("topage"))); // 返回的页面 + + String submitNodeId = Util.null2String(request.getParameter("submitNodeId")); + + // + String isFirstSubmit = Util.null2String(request.getParameter("isFirstSubmit")); + + //支持干预给客户 + String Intervenorid = Util.null2String(request.getParameter("Intervenorid")); + String Intervenorid_crm = Util.null2String(request.getParameter("Intervenorid_crm")); + String IntervenorType = ""; + String Intervenorid_temp = ""; + if(!"".equals(Intervenorid)){ + ArrayList intervenoridArr = Util.TokenizerString(Intervenorid,","); + for(String id : intervenoridArr) { + Intervenorid_temp += "," + id; + IntervenorType += ","+0; + } + } + if(!"".equals(Intervenorid_crm)){ + ArrayList intervenoridArr = Util.TokenizerString(Intervenorid_crm,","); + for(String id : intervenoridArr) { + Intervenorid_temp += "," + id; + IntervenorType += ","+1; + } + } + Intervenorid_temp = Intervenorid_temp.length() > 0 ? Intervenorid_temp.substring(1) : ""; + Intervenorid = Intervenorid_temp; + IntervenorType = IntervenorType.length() > 0 ? IntervenorType.substring(1) : ""; + + int SignType = Util.getIntValue(request.getParameter("SignType"), 0); + int enableIntervenor = Util.getIntValue(request.getParameter("enableIntervenor"), 1);// 是否启用节点及出口附加操作 + + int isovertime = Util.getIntValue(request.getParameter("isovertime"), 0); + int isagentCreater = Util.getIntValue((String) attrSignatureUtil.getAttribute("isagent")); + int beagenter = Util.getIntValue((String) attrSignatureUtil.getAttribute("beagenter"), 0); + RequestDoc requestDoc = new RequestDoc(); + boolean docFlag = requestDoc.haveDocFiled("" + workflowid, "" + nodeid); + int urger = Util.getIntValue((String) attrSignatureUtil.getAttribute("urger"), 0); + String isintervenor = Util.null2String((String) attrSignatureUtil.getAttribute("isintervenor")); + if (src.equals("") || workflowid == -1 || formid == -1 || isbill == -1 || nodeid == -1 || nodetype.equals("")) { + StringBuilder msg = new StringBuilder(""+ SystemEnv.getHtmlLabelName(10005635,weaver.general.ThreadVarLanguage.getLang())+"src:").append(src).append(",workflowid:").append(workflowid).append(",formid:").append(formid); + msg.append(",isbill:").append(isbill).append(",nodeid:").append(nodeid).append(",nodetype:").append(nodetype).append(",user:").append(user.getLastname()); + writeLog(msg.toString()); + resultBean.setType(RequestExecuteType.SEND_PAGE); + resultBean.setSendPage(weaver.general.GCONST.getContextPath()+"/notice/RequestError.jsp"); + return resultBean; + } + + String tempIsCanSubmit = Util.null2String(attrSignatureUtil.getAttribute("IsCanSubmit")); + String tempCoadCanSubmit = Util.null2String(attrSignatureUtil.getAttribute("coadCanSubmit")); + boolean IsCanSubmit = "true".equals(tempIsCanSubmit); + boolean coadCanSubmit = "true".equals(tempCoadCanSubmit); + boolean IsCanModify = "true".equals(attrSignatureUtil.getAttribute("IsCanModify")); + if("".equals(tempIsCanSubmit)){ + int usertype = "2".equals(user.getLogintype()) ? 1 : 0; + recordSet.executeSql("select isremark,isreminded,preisremark,id,groupdetailid,nodeid,takisremark,(CASE WHEN isremark=9 THEN 7.5 WHEN (isremark = 4 ) THEN 1.5 " + + "WHEN (isremark=1 and takisremark=2) THEN 0.9 WHEN (preisremark=1 and takisremark=2) " + + "THEN 0.9 ELSE isremark END) orderisremark from workflow_currentoperator where requestid=" + requestid + " and userid=" + userid + " and usertype=" + usertype + + " order by orderisremark, id "); + if(recordSet.next()){ + String isremarkForRM = Util.null2String(recordSet.getString("isremark")); + int wfcurrrid = Util.getIntValue(recordSet.getString("id")); + int groupdetailid = Util.getIntValue(recordSet.getString("groupdetailid"), 0); + + + WFForwardManager wfForwardManager = new WFForwardManager(); + wfForwardManager.init(); + wfForwardManager.setWorkflowid(workflowid); + wfForwardManager.setNodeid(nodeid); + wfForwardManager.setIsremark(isremarkForRM); + wfForwardManager.setRequestid(requestid); + wfForwardManager.setBeForwardid(wfcurrrid); + wfForwardManager.getWFNodeInfo(); + IsCanSubmit = wfForwardManager.getCanSubmit(); + WFCoadjutantManager wfCoadjutantManager = new WFCoadjutantManager(); + wfCoadjutantManager.getCoadjutantRights(groupdetailid); + String coadsigntype = wfCoadjutantManager.getSigntype(); + String coadismodify = wfCoadjutantManager.getIsmodify(); + coadCanSubmit = wfCoadjutantManager.getCoadjutantCanSubmit(requestid, wfcurrrid, isremarkForRM, coadsigntype); + IsCanModify = wfForwardManager.getCanModify(); + if (!IsCanModify && coadismodify.equals("1")) IsCanModify = true; + } + } + String IsBeForwardPending = Util.null2String((String) attrSignatureUtil.getAttribute("IsBeForwardPending")); + String coadispending = Util.null2String((String) attrSignatureUtil.getAttribute("coadispending")); + String coadsigntype = Util.null2String((String) attrSignatureUtil.getAttribute("coadsigntype")); + int ispending = -1; + if (isremark == 7 && coadispending.equals("1")) { + if (IsBeForwardPending.equals("1")) { + ispending = 2; + } else { + ispending = 1; + } + } else if (IsBeForwardPending.equals("1")) { + ispending = 0; + } + int wfcurrrid = Util.getIntValue((String) attrSignatureUtil.getAttribute("wfcurrrid"), 0); + int intervenorright = Util.getIntValue((String) attrSignatureUtil.getAttribute("intervenorright"), 0); + if (src.equals("supervise") || (src.equals("submit") && isremark == 5) || (src.equals("intervenor") && intervenorright > 0) || (belongTest && src.equals("intervenor"))) { + IsCanSubmit = true; + } + session.removeAttribute("errormsgid_" + user.getUID() + "_" + requestid); + session.removeAttribute("errormsg_" + user.getUID() + "_" + requestid); + if ((requestid > 0 && (!IsCanSubmit && !coadCanSubmit)) || requestManager.checkNodeOperatorComment(requestid, user.getUID(), nodeid)) { + if (needoutprint.equals("")) { + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,WorkflowRequestMessage.WF_REQUEST_ERROR_CODE_02,"")); + resultBean.setType(RequestExecuteType.FAILD); + } + resultBean.getResultInfo().put("requestid",requestid); + return resultBean; + } + String isMultiDoc = Util.null2String(request.getParameter("isMultiDoc")); // 多文档新建 + + /** 指定下一节点流转 **/ + boolean isSelectNextFlow = Util.null2String(request.getParameter("selectNextFlow")).equals("1") && src.equals("submit");//是否指定下一节点流转 + String selectNodeFlow_nodeIds = Util.null2String(request.getParameter("selectNodeFlow_nodeIds")); + SelectNextFlowMode selectNextFlowMode = SelectNextFlowMode.getModeType(Util.getIntValue(request.getParameter("selectNextFlowMode"))); + String selectNodeFlowNodeCanFlowNextNode = Util.null2String(request.getParameter("selectNodeFlowNodeCanFlowNextNode")); +// String selectNodeFlow_operator = Util.null2String(request.getParameter("selectNodeFlow_operator")); +// String ccOperator = Util.null2String(request.getParameter("ccOperator")); +// String canSubmit = Util.null2String(request.getParameter("canSubmit")); + /** 指定下一节点流转 **/ + + String isCAAuth = Util.null2String(request.getParameter("isCAAuth")); //是否是CA认证,主要是需要CA数据保护时会传此参数的值 + + requestManager.setIsMultiDoc(isMultiDoc); + requestManager.setSrc(src); + requestManager.setIscreate(iscreate); + requestManager.setRequestid(requestid); + requestManager.setWorkflowid(workflowid); + requestManager.setWorkflowtype(workflowtype); + requestManager.setIsremark(isremark); + requestManager.setFormid(formid); + requestManager.setIsbill(isbill); + requestManager.setBillid(billid); + requestManager.setNodeid(nodeid); + requestManager.setNodetype(nodetype); + + requestname = SaveFormDatasBiz.convertSlash(requestname); //mysql数据库单文本处理反斜杠 + requestManager.setRequestname(requestname); + requestManager.setRequestlevel(requestlevel); + requestManager.setRemark(remark); + requestManager.setOneVoteApprove("1".equals(request.getParameter("oneVoteApprove"))); + if(request instanceof weaver.filter.WeaverRequest) { + requestManager.setRequest(request); + } else { + FileUpload fu = new FileUpload(request); + requestManager.setRequest(fu); + } + requestManager.setSubmitNodeId(submitNodeId); + requestManager.setIntervenorid(Intervenorid); + requestManager.setIntervenoridType(IntervenorType); + requestManager.setSignType(SignType); + + String needConformCheck = Util.null2String(request.getParameter("needConformCheck"),"1"); + requestManager.setNeedConformCheck("1".equals(needConformCheck)); + + if("intervenor".equals(src) && !"".equals(Intervenorid)){//配合邮件,干预时set currentoperator属性 + ArrayList intervenoridArr = Util.TokenizerString(Intervenorid,","); + ArrayList intervenortypeArr = Util.TokenizerString(IntervenorType,","); + Hashtable operatorsht = new Hashtable(); + int tempgroupid = 1; + if(SignType == 1 || SignType == 2){//会签 + ArrayList tempoperators = new ArrayList(); + for(int i = 0;i < intervenoridArr.size();i++){ + String operator = intervenoridArr.get(i) + "_" + (intervenortypeArr.size() > i ? intervenortypeArr.get(i) : "0") + "_0_0";//userid_usertype_groupdetailid_signorder--参照requestnodeflow,signorder会签和非会签依次处理均给0 + tempoperators.add(operator); + if(SignType == 2){ + break; + } + } + operatorsht.put(tempgroupid+"",tempoperators); + }else{//非会签 + for(int i = 0;i < intervenoridArr.size();i++){ + String operator = intervenoridArr.get(i) + "_" + (intervenortypeArr.size() > i ? intervenortypeArr.get(i) : "0") + "_0_0";//userid_usertype_groupdetailid_signorder--参照requestnodeflow,signorder会签和非会签依次处理均给0 + ArrayList tempoperators = new ArrayList(); + tempoperators.add(operator); + operatorsht.put(tempgroupid+"",tempoperators); + tempgroupid++; + } + } + + requestManager.setCurrentOperator(operatorsht); + } + + requestManager.setIsFromEditDocument(isFromEditDocument); + requestManager.setUser(user); + requestManager.setIsagentCreater(isagentCreater); + requestManager.setBeAgenter(beagenter); + requestManager.setIsPending(ispending); + requestManager.setRequestKey(wfcurrrid); + requestManager.setCanModify(IsCanModify); + requestManager.setCoadsigntype(coadsigntype); + requestManager.setEnableIntervenor(enableIntervenor);// 是否启用节点及出口附加操作 + requestManager.setRemarkLocation(remarkLocation); + requestManager.setIsFirstSubmit(isFirstSubmit); + requestManager.setComeE9(true); + requestManager.setSelectNextFlow(isSelectNextFlow); + requestManager.setSelectNodeFlowNodeIds(selectNodeFlow_nodeIds); + requestManager.setSelectNextFlowMode(selectNextFlowMode); + //如果是指定流转,并且这个参数不是空,则赋值false,如果没有就是默认true + if(isSelectNextFlow==true&&!"".equals(selectNodeFlowNodeCanFlowNextNode)){ + requestManager.setSelectNodeFlowNodeCanFlowNextNode(Boolean.parseBoolean(selectNodeFlowNodeCanFlowNextNode)); + } +// requestManager.setSelectNodeFlowOperator(selectNodeFlow_operator); +// requestManager.setSelectNodeFlowCCOperator(ccOperator); +// requestManager.setSelectNodeCanSubmit(canSubmit); + requestManager.setClientType(clientType); + setEmSignInfo(requestManager); + // + + LocationFieldSaveBiz locationFieldSaveBiz = new LocationFieldSaveBiz(); + if(request instanceof weaver.filter.WeaverRequest) { + locationFieldSaveBiz.setRequest(request); + } else { + FileUpload fu = new FileUpload(request); + locationFieldSaveBiz.setRequest(fu); + } + locationFieldSaveBiz.setIsBill(isbill); + locationFieldSaveBiz.setFormId(formid); + locationFieldSaveBiz.setPosition(Util.null2String(request.getParameter("position"))); + locationFieldSaveBiz.setPositionName(Util.null2String(request.getParameter("address"))); + locationFieldSaveBiz.setEditFields(Util.null2String(request.getParameter("locationEditFields"))); + locationFieldSaveBiz.setSubmitSrc(src); + locationFieldSaveBiz.setRequestId(requestid); + locationFieldSaveBiz.setNodeid(nodeid); + locationFieldSaveBiz.setUserid(user.getUID()); + + //CA数据保护时,先做保存操作 + if ("1".equals(isCAAuth)) { + requestManager.setSrc("save"); + } + + boolean havaChage = false; + if (docFlag) { + requestDoc.setUser(user); + havaChage = requestDoc.haveChage("" + workflowid, "" + requestid, request); // 如果改变了发文目录 + } + WFManager wfManager = new WFManager(); + wfManager.setWfid(workflowid); + wfManager.getWfInfo(); + String isShowChart = Util.null2s(wfManager.getIsShowChart().trim(),"0"); + String stopInChart =Util.null2s( wfManager.getStopInChart().trim(),"0"); + String stopInForm = Util.null2s(wfManager.getStopInForm().trim(),"0"); + + boolean isShowFlowMessage = isShowChart.equals("3")&&(src.equals("submit")||src.equals("reject")||src.equals("intervenor")); + RequestManagerService requestManagerService = ServiceUtil.getService(RequestManagerServiceImpl.class, user); + boolean savestatus = true; + if (!"1".equals(isFirstSubmit)) { +// savestatus = requestManager.saveRequestInfo(); + //是否为提交需确认 + boolean isNeedConfirm = ("save".equals(src) && "1".equals(request.getParameter("isaffirmance")) ); + if(isNeedConfirm){ + //拿保存前明细表数据,如果requestid=-1,说明是第一次保存,之前没有数据,直接放空的list + Map> detailTableDatasId = new HashMap<>(); + List tablestmp = new ArrayList<>(); + RecordSet rs = new RecordSet(); + RecordSet rs1 = new RecordSet(); + String billDetailKey = RequestFormBiz.getBillDetailKeyField(formid); + String primaryKey = RequestFormBiz.getDetailTablePrimaryKey(formid); + DetailOrderManager detailOrderManager = new DetailOrderManager(); + String mainTablename = ""; + if(isbill == 0) + rs.executeQuery("select distinct groupid as tablename from workflow_formfield where formid=? and isdetail='1' order by groupid",formid); + else + rs.executeQuery("select a.tablename,b.tablename as maintable,a.orderid from workflow_billdetailtable a,workflow_bill b where a.billid = b.id and a.billid = ? order by a.orderid",formid); + int groupid = 1; + if(rs.getCounts() != 0){ + while(rs.next()){ + List datasIdtmp = new ArrayList<>(); + if(isbill == 0){ + if(requestid != -1){ + rs1.executeQuery("select "+primaryKey+" from workflow_formdetail t where requestid="+requestid+" and groupid="+(groupid-1)); + while(rs1.next()){ + datasIdtmp.add(rs1.getString("id")); + } + } + detailTableDatasId.put("workflow_formdetail_"+groupid,datasIdtmp); + tablestmp.add("workflow_formdetail_"+groupid); + }else{ + String detailTablename = rs.getString("tablename"); + mainTablename = rs.getString("maintable"); + if(requestid != -1){ + rs1.executeQuery("select id from "+detailTablename+" where mainid = (select id from "+mainTablename+" where requestid = ?)",requestid); + while(rs1.next()){ + datasIdtmp.add(rs1.getString("id")); + } + } + detailTableDatasId.put(detailTablename,datasIdtmp); + tablestmp.add(detailTablename); + } + groupid++; + } + } + + //保存 + savestatus = requestManagerService.saveRequestInfo(requestManager); + + //取保存后明细表数据 + Map> newDetailTableDatasId = new HashMap<>(); + requestid = requestManager.getRequestid(); + groupid = 1; + for(String tabletmp : tablestmp){ + List datasId = detailTableDatasId.get(tabletmp); + List datasIdtmp = new ArrayList<>(); + String orderSql = " t.id "; + if(isbill == 0){ + if(datasId.size() == 0){ + rs.executeQuery("select "+primaryKey+" from workflow_formdetail t where requestid="+requestid+" and groupid="+(groupid-1) +" order by " + orderSql); + }else{ + rs.executeQuery("select "+primaryKey+" from workflow_formdetail t where requestid="+requestid+" and groupid="+(groupid-1)+" and "+Util.getSubINClause(String.join(",",datasId), "id", "not in")+" order by " + orderSql); + } + + }else{ + if(datasId.size() == 0){ + rs.executeQuery("select "+primaryKey+" from "+tabletmp+" t where "+billDetailKey+" = (select id from "+mainTablename+" where requestid = ?) order by "+orderSql,requestid); + }else{ + rs.executeQuery("select "+primaryKey+" from "+tabletmp+" t where "+billDetailKey+" = (select id from "+mainTablename+" where requestid = ?) and "+Util.getSubINClause(String.join(",",datasId), "id", "not in")+" order by "+orderSql,requestid); + } + } + while(rs.next()){ + datasIdtmp.add(rs.getString(primaryKey)); + } + newDetailTableDatasId.put("detail_" + groupid,datasIdtmp); + groupid++; + } + resultBean.setInsertDetailDatasInfo(newDetailTableDatasId); + } else{ + //使用service来执行表单保存方法,使其支持代理开发 + savestatus = requestManagerService.saveRequestInfo(requestManager); + } + + } else if(!"n".equals(eh_setoperator)){//提交需确认、出口提示、异常处理等,用户点击确认提交后再存入位置信息 + locationFieldSaveBiz.save(); + } + t1 = writeTimeLog(isPrintLogUser,305,t1,"保存完成savestatus:"+savestatus); + requestid = requestManager.getRequestid(); + requestFlowLogEntity.setRequestid(requestid); //将requestid 计入流转日志对象 + requestFlowLogEntity.setNodeid(nodeid); + Map submitParams = resultBean.getSubmitParams(); + resultInfo.put("requestid", requestid); + if(belongTest){ //走过保存逻辑则更新workflow_requestbase为测试状态 + testBiz.updateRequestBaseDeleted(requestid); + } + String timestamp = Util.null2String(request.getParameter("timestamp")); + if(!"".equals(timestamp)) + submitParams.put("timestamp", timestamp); + if("1".equals(iscreate)){ + submitParams.put("isremark", requestManager.getIsremark()); + } + submitParams.put("requestid",requestid); + if(requestid > 0){ + submitParams.put("iscreate", "0"); + } + + //保存页面上选择的提醒方式 + String remindTypes = Util.null2String(request.getParameter("remindTypes")); + RequestRemindBiz.updateRemindTypes(remindTypes,requestid); + + if ("save".equals(src)) { + session.setAttribute("needwfback_" + user.getUID() + "_" + requestid, needwfback); + resultInfo.put("isaffirmance", Util.null2String(request.getParameter("isaffirmance"))); + resultInfo.put("selectNextFlow", Util.null2String(request.getParameter("selectNextFlow"))); + if("1".equals(Util.null2String(request.getParameter("isaffirmance")))){ + SubmitConfirmInfoBiz confirmService = new SubmitConfirmInfoBiz(); + if(agentType == 1) { + //代理出去已办提交,取代理人身份计算下一节点 + confirmService.setUser(new User(agentorByAgentId)); + } else { + confirmService.setUser(user); + } + confirmService.setRequestid(requestid); + confirmService.setWorkflowid(workflowid); + confirmService.setNodeid(nodeid); + confirmService.setFormid(formid); + confirmService.setIsbill(isbill); + confirmService.setWfcurrrid(wfcurrrid); + confirmService.setIsremark(isremark); + confirmService.setSrc("".equals(Util.null2String(request.getParameter("isaffirmanceSrc")))? "submit":request.getParameter("isaffirmanceSrc")); + confirmService.setSubmitNodeId(submitNodeId); + confirmService.setRejectToNodeid(RejectToNodeid); + confirmService.setRejectToType(RejectToType); + confirmService.setFlowToNextFreeNode("1".equals(request.getParameter("flowToNextFreeNode"))); + confirmService.setNewRejectNodeIds(request.getParameter("newRejectNodeIds")); + confirmService.setFreeNodeOperators(Util.null2String(request.getParameter("operatorids"))); + confirmService.setIsToNewAddSign(Util.getIntValue(request.getParameter("isToNewAddSign"))); + confirmService.setCountersignAttribute(Util.getIntValue(request.getParameter("countersignAttribute"))); + + String isaffirmanceSrc =Util.null2String(request.getParameter("isaffirmanceSrc")); + submitParams.put("needwfback", needwfback); + submitParams.put("flowToNextFreeNode", request.getParameter("flowToNextFreeNode")); + //退回确认 + if("reject".equals(isaffirmanceSrc)){ + submitParams.put("RejectNodes",request.getParameter("RejectNodes")); + submitParams.put("RejectToNodeid",request.getParameter("RejectToNodeid")); + submitParams.put("RejectToType",request.getParameter("RejectToType")); + submitParams.put("isSubmitDirect", request.getParameter("isSubmitDirect")); + submitParams.put("newRejectNodeIds",request.getParameter("newRejectNodeIds")); + resultInfo.put("isaffirmanceSrc", "reject"); + } + if(SubmitToNodeid > 0 || FreeNodeBiz.isFreeNode(SubmitToNodeid)){ + submitParams.put("SubmitToNodeid", SubmitToNodeid); + confirmService.setSubmitToNodeid(SubmitToNodeid); + } + + //提交需确认,返回位置信息到前台 + resultInfo.put("position", Util.null2String(request.getParameter("position"))); + String addressKey = "address_" + UUID.randomUUID().toString(); + Util_TableMap.setObjVal(addressKey, Util.null2String(request.getParameter("address"))); + resultInfo.put("address", addressKey); + + resultBean.setMessageInfo(this.generateConfirmInfo(confirmService, "reject".equals(isaffirmanceSrc))); + } + } else if ("submit".equals(src)) { + needwfback = Util.null2String((String) request.getParameter("needwfback")); + String needwfback_s = Util.null2String((String) session.getAttribute("needwfback_" + user.getUID() + "_" + requestid)); + if ("1".equals(needwfback) && "0".equals(needwfback_s)) { + requestManager.setNeedwfback("0"); + } + session.removeAttribute("needwfback_" + user.getUID() + "_" + requestid); + } + // 保存失败(错误提示) + if (!savestatus) { + String message = requestManager.getMessage(); + String messagecontent = requestManager.getMessagecontent(); + if("".equals(message) || requestid <= 0) + message = "1"; + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,messagecontent)); + resultBean.setType(RequestExecuteType.FAILD); + resultBean.setConflictFieldInfo(requestManager.getConflictFieldInfo()); + RequestFlowErrorLogBiz.addDataInQueue(requestManager); + // saveRequestInfo失败后未处理requestnamenew标题需要处理下 + new SetNewRequestTitle().getAllRequestName(new RecordSet(),requestid+"",requestname,workflowid+"",nodeid+"",formid,isbill,user.getLanguage()); + return resultBean; + } + + /**======================流程数据加密处理========================*/ + String CAKey = Util.null2String(request.getParameter("CAKey")); //缓存提交时的数据的key,主要是需要CA认证时的参数 + int protectType = Util.getIntValue(Util.null2String(request.getParameter("protectType")), 0); //二次认证认证成功后的参数,数据保护的方式 + int secondAuthType = Util.getIntValue(Util.null2String(request.getParameter("secondAuthType")), 0); //二次认证认证成功后的参数,二次认证的方式 + int qysSignWay = Util.getIntValue(Util.null2String(request.getParameter("qysSignWay")), 0); //契约锁认证的方式,1:ukey,2:契约锁服务 + String uuidStr = ""; + boolean isNeedUpdate = false; + RequestSecondAuthService requestSecondAuthService = ServiceUtil.getService(RequestSecondAuthServiceImpl.class, user); + if (savestatus) { + if ("1".equals(isCAAuth)) { //需要CA认证,保存后不提交流程,直接返回 + //先保存签字意见 + requestManager.saveRequestLog2(); + + resultBean.setType(RequestExecuteType.SUCCESS); + resultInfo.put("isCAAuth", isCAAuth); + resultInfo.put("CAKey", CAKey); + return resultBean; + } else { + if (protectType == SecondAuthType.QYS.getId() && qysSignWay == 2) { //契约锁数据保护 + String tempRemark = requestManager.getRemark(); + Map protectResult = requestSecondAuthService.protectDatas(requestid, workflowid, formid, isbill, nodeid, tempRemark); + String protectSuccess = Util.null2String(protectResult.get("success")); + if ("0".equals(protectSuccess)) { //说明数据保护失败 + resultBean.setType(RequestExecuteType.FAILD); + + String protectMsg = Util.null2String(protectResult.get("message")); + resultBean.setMessageInfo(SecondAuthUtil.getErrorMsg(user, protectMsg)); + return resultBean; + } else if ("1".equals(protectSuccess)) { + isNeedUpdate = true; + uuidStr = Util.null2String(protectResult.get("uuid")); + } + } + } + } + + /** Save Detail end* */ + boolean flowstatus = true; + if (!"save".equals(src) || isremark != 1) { + if ("n".equals(eh_setoperator)) { // 异常处理窗口未选择操作者,以提交失败处理 + flowstatus = false; + JSONObject msgjson = new JSONObject(); + String ehnextnodeid = Util.null2String(request.getParameter("ehnextnodeid")); + String bottom = "" + SystemEnv.getHtmlLabelName(126560, user.getLanguage()) + "," + SystemEnv.getHtmlLabelName(126554, user.getLanguage()) + + " " + SystemEnv.getHtmlLabelName(126555, user.getLanguage()) + " " + SystemEnv.getHtmlLabelName(126561, user.getLanguage()) + + ""; + msgjson.put("details", bottom); + requestManager.setMessagecontent(msgjson.toString()); + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,WorkflowRequestMessage.WF_REQUEST_ERROR_CODE_07,requestManager.getMessagecontent())); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } else { + if ("y".equals(eh_setoperator)) { + // 异常处理选择了操作者,拼装操作者信息 + requestManager.createEh_operatorMap_pc(); + } + + if(belongTest && RobotNodeBiz.isRobotNode(nodetype)){ + RobotNodeFlowBiz robotNodeFlowBiz = new RobotNodeFlowBiz(); + Map robotFlowResult = robotNodeFlowBiz.robotNodeFlow(new RobotNodeServiceBiz().getRobotNodeSet(nodeid),requestid, workflowid, nodeid, true); + flowstatus = (Boolean) robotFlowResult.get("flowResult"); + if(robotFlowResult.get("requestmanager") != null) requestManager = (RequestManager) robotFlowResult.get("requestmanager"); + }else { + //使用service来执行向下流转方法,使其支持代理开发 + flowstatus = requestManagerService.flowNextNode(requestManager); + } + + if(!flowstatus) {//流程提交失败,回滚位置信息 + requestManager.rollbackLocationFieldValue(); + if (locationFieldSaveBiz.isSaved()) { + locationFieldSaveBiz.rollback(); + } + RequestFlowErrorLogBiz.addDataInQueue(requestManager); + // 流程提交失败 更新requestnamenew标题 + new SetNewRequestTitle().getAllRequestName(new RecordSet(),requestid+"",requestname,workflowid+"",nodeid+"",formid,isbill,user.getLanguage()); + } + + t1 = writeTimeLog(isPrintLogUser,445,t1,"流转下一节点flowstatus:"+flowstatus); + // 出口提示 + if (!flowstatus && (WorkflowRequestMessage.WF_CUSTOM_LINK_TIP).equals(requestManager.getMessage())) { + String ismode = Util.null2String(request.getParameter("ismode")); + String divcontent = Util.null2String(request.getParameter("divcontent")); + String content = Util.null2String(request.getParameter("content")); + resultInfo.put("divcontent", divcontent); + resultInfo.put("content", content); + + Map detailRowPerInfo = new HashMap(); + Set keyset = requestManager.getNewAddDetailRowPerInfo().keySet(); + Iterator it1 = keyset.iterator(); + while (it1.hasNext()) { + String rowid = it1.next(); + int rowno = requestManager.getNewAddDetailRowPerInfo().get(rowid); + detailRowPerInfo.put(rowid, rowno); + it1.remove(); + } + resultInfo.put("detailRowPerInfo", detailRowPerInfo); + resultInfo.put("msgcontent", requestManager.getMessagecontent()); + resultBean.setType(RequestExecuteType.WF_LINK_TIP); + return resultBean; + } + + if (!flowstatus && requestManager.isNeedChooseOperator()) { // 流转异常处理,找不到操作者且后台设置了提交至指定人员 + resultInfo.put("needChooseOperator", "y"); + resultInfo.put("ehnextnodeid", requestManager.getNextNodeid()); + submitParams.put("needwfback", needwfback); + resultBean.setType(RequestExecuteType.R_CHROSE_OPERATOR); + return resultBean; + } + + + if(flowstatus&&isShowFlowMessage){ + GetNextNodeContentBiz getNextNodeContentBiz = new GetNextNodeContentBiz(user); + getNextNodeContentBiz.getNextNodeContent(resultBean,nodeid,requestManager.getRequestid(),submitNodeId,src); + resultInfo.put("isShowChart", isShowChart); + } + } + } else { + // 被转发人保存 + RequestLog requestLog = new RequestLog(); + if(request instanceof weaver.filter.WeaverRequest) { + requestManager.setRequest(request); + } else { + FileUpload fu = new FileUpload(request); + requestManager.setRequest(fu); + requestLog.setRequest(fu); + } + requestLog.saveLog(workflowid, requestid, nodeid, "1", remark, user); + } + + if (flowstatus) { //流转成功,更新保护数据跟签字意见的关系 + String authKey = Util.null2String(request.getParameter("authKey")); + String isProtectSuccess = Util.null2String(request.getParameter("isProtectSuccess")); + String isAuthSuccess = Util.null2String(request.getParameter("isAuthSuccess")); + + if (protectType == SecondAuthType.QYS.getId()&&qysSignWay == 2) { //契约锁数据保护 + if (isNeedUpdate && !"".equals(uuidStr)) { //契约锁服务签署 + requestSecondAuthService.updateProtectDatas(requestid, workflowid, nodeid, uuidStr); + } + } else if (protectType == SecondAuthType.CAAuth.getId()|| + (protectType == SecondAuthType.QYS.getId()&&qysSignWay == 1)) { //CA数据保护 + if ("1".equals(isProtectSuccess) && !"".equals(authKey)) { + requestSecondAuthService.updateProtectDatas(requestid, workflowid, nodeid, authKey); + } + } + + //契约锁二次认证或者契约锁数据保护 + if ((secondAuthType == SecondAuthType.QYS.getId() && "1".equals(isAuthSuccess)) || + (protectType == SecondAuthType.QYS.getId() && (isNeedUpdate || (qysSignWay == 1 && "1".equals(isProtectSuccess))))) { + String sealId = Util.null2String(request.getParameter("qysSealId")); + String sealImg = Util.null2String(request.getParameter("qysSealImg")); + String certDetails = Util.null2String(request.getParameter("qysCertDetails")); + + //查询本次操作插入的日志的id + int logId = SecondAuthBiz.getLogId(requestid, workflowid, nodeid, user); + + //保存契约锁验证的盖章信息 + Map authParam = new HashMap(); + authParam.put("sealId", sealId); + authParam.put("sealImg", sealImg); + authParam.put("certDetails", certDetails); + authParam.put("logid", logId); + authParam.put("requestId", requestid); + SecondAuthBiz.saveQYSSignature(authParam, user); + } + } + + if (!flowstatus) { + String message = requestManager.getMessage(); + if (!message.equals("")) { + resultInfo.put("isintervenor", isintervenor); + } else { + message = "2"; + } + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,requestManager.getMessagecontent())); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } + + //判断下一节点操作者是否为当前处理人 正在自动流转也关闭窗口 + boolean isNextNodeOperator = false; + if(("reject".equals(src) || "submit".equals(src)) && "0".equals(isShowChart) && requestManager.getNodeInfoCache().size()==0){ + String logintype = user.getLogintype(); //当前用户类型 1: 类别用户 2:外部用户 + int usertype = 0; + if(logintype.equals("1")) usertype = 0; + if(logintype.equals("2")) usertype = 1; + recordSet.executeSql("select requestid,isremark from workflow_currentoperator where userid="+userid+" and usertype="+usertype+" and requestid="+requestid + " and isremark in ('0','8','9','6')"); + while(recordSet.next()) { + isNextNodeOperator = true; + if("6".equals(Util.null2String(recordSet.getString("isremark")))){ + isNextNodeOperator = false; + break; + } + } + resultInfo.put("isNextNodeOperator", isNextNodeOperator); + } + + if("1".equals(comemessage) && !"save".equals(src) && !isNextNodeOperator){ + resultBean.setType(RequestExecuteType.SEND_PAGE); + resultBean.setSendPage(weaver.general.GCONST.getContextPath()+"/spa/workflow/index_mobx.jsp#/main/workflow/listDoing"); + return resultBean; + } + /**** 至此处代表流程提交成功,流程测试串需换成下一节点操作者信息,覆盖原串信息 ****/ + if(belongTest){ + String wfTestStrNew = testBiz.calculateNextOperator(request.getSession(), workflowid, requestid, requestManager.getNextNodeid()); + testParams.put("requestid", requestid); + testParams.put("wfTestStr", wfTestStrNew); + } + + if(!belongTest) this.isNeedRemind(resultInfo,recordSet,requestManager); //流程提醒 + + new Thread(new CptWfUtil(requestManager, "freezeCptnum")).start(); + String fromPDA = Util.null2String((String) attrSignatureUtil.getAttribute("loginPAD")); + if (method.equals("")) { + if (docFlag) { + DocCheckInOutUtil dcou = new DocCheckInOutUtil(); + dcou.docCheckInWhenRequestOperation(user, requestid, request); + RequestDoc requestDocNew = new RequestDoc(); + requestDocNew.setUser(user); + requestDocNew.changeDocFiled("" + workflowid, "" + requestid, request, user.getLanguage(), havaChage); // 如果改变了发文目录 + } + if (!topage.equals("")) { + + } else { + String pcUrl = wfManager.getShowChartUrl(); + String mobileUrl = wfManager.getMobileUrl(); + + if (iscreate.equals("1")) { + resultBean.setType(RequestExecuteType.SUCCESS); + if(!"save".equals(src)){ + if(isShowChart.equals("1")) { + WorkflowConfigComInfo workflowConfigComInfo = new WorkflowConfigComInfo(); + String mobile_showchart = Util.null2String(workflowConfigComInfo.getValue("mobile_showchart")); + resultInfo.put("pcUrl", pcUrl); + resultInfo.put("mobileUrl", mobileUrl); + resultInfo.put("stopInChart", stopInChart); + resultInfo.put("mobile_showchart", mobile_showchart); + } + resultInfo.put("isShowChart", isShowChart); + } + } else { + if ("delete".equals(src) && savestatus && flowstatus) { + resultBean.setType(RequestExecuteType.DELETE); + resultInfo.put("label", SystemEnv.getHtmlLabelName(20461, user.getLanguage())); + } else { + String docFlags = Util.null2String((String) attrSignatureUtil.getAttribute("requestAdd" + requestid)); // 流程建文档相关 + + // String isShowPrompt = "true"; + if (docFlags.equals("1")) { + resultBean.setType(RequestExecuteType.SUCCESS); + } else { + if (fromPDA.equals("1")) { + resultBean.setType(RequestExecuteType.SUCCESS); + } else { + if(isShowChart.equals("1")) { + WorkflowConfigComInfo workflowConfigComInfo = new WorkflowConfigComInfo(); + String mobile_showchart = Util.null2String(workflowConfigComInfo.getValue("mobile_showchart")); + resultInfo.put("pcUrl", pcUrl); + resultInfo.put("mobileUrl", mobileUrl); + resultInfo.put("stopInChart", stopInChart); + resultInfo.put("mobile_showchart", mobile_showchart); + } + resultInfo.put("isShowChart", isShowChart); + resultBean.setType(RequestExecuteType.SUCCESS); + } + } + } + } + } + }else{ + String adddocfieldid = method.substring(7) ; + String addMethod=method.substring(0,7) ; + if(adddocfieldid.indexOf("_")>0) + { + String docrowindex = Util.null2String(requestManager.getDocrowindex()); + if(!docrowindex.equals("")) + adddocfieldid = adddocfieldid.substring(0,adddocfieldid.indexOf("_"))+"_"+docrowindex; + } + + //新建文档 + if(("docnew_"+isMultiDoc).equals(method)){ + resultInfo.put("isToCreateDocPage", "1"); + String notencoderToPage = weaver.general.GCONST.getContextPath()+"/workflow/request/ViewRequestForwardSPA.jsp?f_weaver_belongto_userid="+userid+"&f_weaver_belongto_usertype="+f_weaver_belongto_usertype+"&requestid="+requestid+"&docfileid="+adddocfieldid+"&topage="+topage+"&urger="+urger+"&isintervenor="+isintervenor; + topage = URLEncoder.encode(notencoderToPage); + resultBean.setSendPage(weaver.general.GCONST.getContextPath()+"/docs/docs/DocList.jsp?hasTab=1&workflowid="+workflowid+"&isOpenNewWind=0&topage="+topage); + resultBean.setType(RequestExecuteType.SUCCESS); + }else{ + resultBean.setType(RequestExecuteType.SUCCESS); + } + } + t1 = writeTimeLog(isPrintLogUser,582,t1,"提交结束"); + return resultBean; + } + + + @Override + public BizLogContext getLogContext() { + return null; + } + + private Map generateConfirmInfo(SubmitConfirmInfoBiz confirmService,boolean isReject){ + Map msgInfo = new HashMap(); + String title = isReject ? SystemEnv.getHtmlLabelName(386334, user.getLanguage()) + ":" : SystemEnv.getHtmlLabelName(386336, user.getLanguage()) + ":"; + msgInfo.put("prompttype", PromptType.CONFIRMINFO.getType()); + msgInfo.put("title", title); + boolean isSuccess = false; //是否获取成功 + String titlesuffix = ""; + String nodeNameValue = ""; + String nodeIds = ""; + try { + if(confirmService.getIsToNewAddSign() == 0) { + confirmService.setFlowToNextFreeNode(true); + } + Map result = confirmService.getRequestoperator(); + if (result == null || result.isEmpty()) + throw new Exception("Empty Result"); + msgInfo.put("hasPassThisNode", result.get("hasPassThisNode")); + if (result.containsKey("isWaitMerge")) { + isSuccess = true; + titlesuffix = SystemEnv.getHtmlLabelName(21399, user.getLanguage()); + nodeNameValue = SystemEnv.getHtmlLabelName(21399, user.getLanguage()); + } else if(result.containsKey("simpleModeAddFreeNode")) { + titlesuffix = SystemEnv.getHtmlLabelName(83284, user.getLanguage()); + nodeNameValue = SystemEnv.getHtmlLabelName(83284, user.getLanguage()); + isSuccess = true; + msgInfo.put("operators", result.get("operatorlist")); + } else { + isSuccess = true; + this.removeRepeat(result);//去除重复 + msgInfo.put("operators", result.get("operatorlist")); + titlesuffix = Util.null2String(result.get("nodename")); + nodeNameValue = Util.null2String(result.get("nodenameValue")); + nodeIds = Util.null2String(result.get("nodeid")); + } + + } catch (Exception e) { + e.printStackTrace(); + //抛异常全部当获取失败处理 + isSuccess = false; + } + if(!isSuccess && "".equals(titlesuffix)) + titlesuffix = SystemEnv.getHtmlLabelName(127889, user.getLanguage()); + msgInfo.put("isSuccess", isSuccess); + msgInfo.put("titlesuffix", titlesuffix); + msgInfo.put("nodeNameValue", nodeNameValue); + msgInfo.put("nodeIds", nodeIds); + return msgInfo; + } + + private long writeTimeLog(boolean isPrintLogUser,int linenum,long t1,String msg){ + if(isPrintLogUser) { + writeLog(linenum + "----------userid:" + user.getUID() + ",requestid:"+Util.null2String(request.getParameter("requestid")) + ",time:" +(System.currentTimeMillis() - t1)/1000 +"--" + msg); + } + return System.currentTimeMillis(); + } + + + /** + * 去除重复 + * @param result + */ + private void removeRepeat(Map result){ + List> operatorlist = (List>)result.get("operatorlist"); + if(operatorlist != null && operatorlist.size() > 0){ + Iterator> iterator = operatorlist.iterator(); + Set sets = new HashSet<>(); + while(iterator.hasNext()){ + Map operator = iterator.next(); + String jsonStr = com.alibaba.fastjson.JSONObject.toJSONString(operator); + if(sets.contains(jsonStr)){ + iterator.remove(); + } else { + sets.add(jsonStr); + } + } + } + } + + //判断是否正在进行自动批准 + private boolean isAutoApproving(int requestid,int nodeid,RequestOperationResultBean resultBean){ + RecordSet rs = new RecordSet(); + rs.executeQuery("select isremark from workflow_currentoperator where requestid = ? and nodeid = ? and userid = ? and isremark = '6' ",requestid,nodeid,user.getUID()); + if(rs.next()) { + resultBean.setType(RequestExecuteType.FAILD); + Map resultInfo = resultBean.getResultInfo(); + resultInfo.put("requestid", requestid); + Map errorMsg = new HashMap <>(); + errorMsg.put("prompttype", PromptType.ERRORMSG.getType()); + errorMsg.put("title", ""+ SystemEnv.getHtmlLabelName(10005636,weaver.general.ThreadVarLanguage.getLang())+""); + resultBean.setMessageInfo(errorMsg); + return true; + } + return false; + } + + //设置移动端保存参数 + public void setEmSignInfo(RequestManager requestManager){ + int speechAttachment = Util.getIntValue(request.getParameter("speechAttachment")); + String handWrittenSign = Util.null2String(request.getParameter("handWrittenSign")); + requestManager.setSpeechAttachment(speechAttachment); + requestManager.setHandWrittenSign(handWrittenSign); + } + + /** + * 流程提交-提醒 + * 根据提醒字段判断是否是老提醒,老提醒根据提醒字段做提醒 + * 不是老提醒,判断提交后是否需要自主选择提醒接收人,需要则返回标识, + * 不需要则读取默认提醒设置做提醒 + * @param resultInfo + * @param recordSet + * @param requestManager + */ + private void isNeedRemind(Map resultInfo,RecordSet recordSet,RequestManager requestManager){ + String isaffirmance = Util.null2String(resultInfo.get("isaffirmance")); + if(RobotNodeBiz.isRobotNode(requestManager.getNextNodetype()) || "1".equals(isaffirmance)){ + return ; + } + + resultInfo.put("needRemind", false); + //前端表单用户选择的提醒方式,E8历史数据该参数值默认为 -1 + String remindTypes = Util.null2String(request.getParameter("remindTypes")); + + String src = Util.null2String(request.getParameter("src")); + if (!("submit".equals(src) || "reject".equals(src) || "intervenor".equals(src))) return; + + //自动审批的节点不需要提醒,如果都自动审批掉了,这次提交就不需提醒了,直接去提醒自动审批提交后的节点 + Set remindNodes = this.remindNodes(requestManager); + if (remindNodes.isEmpty()) return ; + + int requestid = requestManager.getRequestid(); + int workflowid = Util.getIntValue(request.getParameter("workflowid"), -1); + WFManager wfManager = new WFManager(); + try { + wfManager.setWfid(workflowid); + wfManager.getWfInfo(); + } catch (Exception e){ e.printStackTrace(); } + + //E8提醒设置兼容 + if ("-1".equals(remindTypes)) { + this.doRemindWithE8(wfManager,requestid,workflowid,src); + return; + } + + //E9 + if (!RequestRemindBiz.isOpenRemind(wfManager)) return; + recordSet.executeQuery("select remindscope from workflow_base where id = ? ", workflowid); + recordSet.next(); + int remindscope = Util.getIntValue(recordSet.getString("remindscope"),0); + + boolean isflowNext = RequestRemindBiz.isflowNext(requestid,src,user.getUID()); + + if("1".equals(wfManager.getIsChoseReminder())) { + String nodetype = Util.null2String(request.getParameter("nodetype")); + if (!"intervenor".equals(src) && isflowNext && remindscope !=1 && !Strings.isNullOrEmpty(remindTypes) && !"4".equals(nodetype)) { + resultInfo.put("needRemind", true); + return ; + } + } + + this.doRemindWithE9(requestid,workflowid,src,remindTypes,isflowNext); + return ; + } + + private void doRemindWithE9(int requestid, int workflowid,String src,String remindTypes, boolean isflowNext){ + RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user,requestid,workflowid,src); + String isSmsRemind = remindTypes.indexOf(RemindTypeEnum.SMS.getCode()) > -1 ? "1" : "0"; + String isEmailRemind = remindTypes.indexOf(RemindTypeEnum.EMAIL.getCode()) > -1 ? "1" : "0"; + if (isflowNext) { + if("1".equals(isSmsRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,0); + if("1".equals(isEmailRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + RequestRemindBiz.updateRemindTypes("",requestid); + } else { + requestRemindBiz.doRemind(requestid,user.getUID(),workflowid,src,isSmsRemind,isEmailRemind); + } + requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src); + } + + /** + * E8数据流程提醒 + * @param wfManager + * @param requestid + * @param workflowid + * @param src + */ + private void doRemindWithE8(WFManager wfManager,int requestid, int workflowid,String src){ + + RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user,requestid,workflowid,src); + int messageType = Util.getIntValue(Util.null2String(request.getParameter("messageType")),-1); // 老短信提醒 + int mailMessageType = Util.getIntValue(Util.null2String(request.getParameter("chatsType")),-1); // 老邮件提醒 + //历史数据可能只有短信提醒,但是其实也开启了邮件提醒 + int _mailMessageType = Util.getIntValue(wfManager.getMailMessageType(),-1); + boolean isflowNext = RequestRemindBiz.isflowNext(requestid,src,user.getUID()); + if (isflowNext) { + if(messageType >=1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,messageType); + } + if(mailMessageType == 1 || _mailMessageType == 1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + } + } else { + String isSmsRemind = messageType >=1 ? "1" : "0"; + String isEmailRemind = (mailMessageType == 1 || _mailMessageType == 1) ? "1" : "0"; + requestRemindBiz.doRemind(requestid,user.getUID(),workflowid,src,isSmsRemind,isEmailRemind); + } + requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src); + return; + } + /** + * 下一节点中,除去自动审批的节点(自动审批节点不需要提醒) + * @param requestManager + * @return + */ + private Set remindNodes(RequestManager requestManager){ + + List nextNodeids = requestManager.getNextnodeids(); + Map nodeInfoCache = requestManager.getNodeInfoCache(); + Set nodeInfoCacheKey = nodeInfoCache.keySet(); + + Set nodeIds = new HashSet<>(); + for(Object id : nextNodeids){ + int intId = Util.getIntValue((String)id); + boolean exists = false; + for(Integer cacheId : nodeInfoCacheKey){ + if(cacheId == intId){ exists = true; } + } + if(!exists){ + nodeIds.add(intId); + } + } + + return nodeIds; + } + + + private void initParams() { + String[] initParamsKeys = {"requestid","workflowid","formid","isbill","remark","iscreate","isremark","f_weaver_belongto_userid", + "f_weaver_belongto_usertype","src","workflowtype","nodeid","nodetype","creater","creatertype","SubmitToNodeid","RejectToNodeid"}; + this.params = new HashMap<>(); + for(String paramKey : initParamsKeys) { + params.put(paramKey,request.getParameter(paramKey)); + } + } +} diff --git a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java index 63f6582a..62f85658 100644 --- a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java +++ b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java @@ -1,19 +1,33 @@ package com.engine.workflow.cmd.requestForm.communication; +import com.alibaba.fastjson.JSON; import com.customization.qc2563600.CCOperatorUtil; +import com.customization.wfTodoCard.service.CheckSendCardService; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; import com.engine.core.interceptor.CommandContext; import com.engine.workflow.biz.WorkflowCommunicationBiz; import com.engine.workflow.entity.requestForm.communication.Content; +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.safety.Whitelist; +import org.jsoup.select.Elements; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.dito.comInfo.PropBean; - +import weaver.workflow.request.RequestSignRelevanceWithMe; import java.lang.reflect.Method; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -43,6 +57,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> int communicationId = Util.getIntValue(Util.null2String(params.get("communicationId")), 0); int requestId = Util.getIntValue(Util.null2String(params.get("requestid"))); + String requestName = ""; String nodeid = Util.null2String(params.get("nodeid")); //没有传交流id,补偿一下 if (communicationId == 0) { @@ -56,11 +71,16 @@ public class DoSaveContentCmd extends AbstractCommonCommand> rs.next(); communicationId = WorkflowCommunicationBiz.getOrNewCommunicationId(refRequestId, Util.getIntValue(rs.getString("workflowid"))); requestId = refRequestId; + requestName = Util.null2String(rs.getString("REQUESTNAME")); }else{ communicationId = WorkflowCommunicationBiz.getOrNewCommunicationId(requestId, workflowId); } } + + String remark = Util.null2String(params.get("remark")); + new BaseBean().writeLog("DoSaveContentCmd-remark1:"+remark); + String quouteRemark = Util.null2String(params.get("quouteRemark")); int quoteContentId = Util.getIntValue(Util.null2String(params.get("contentId")), -1); String quoteType = Util.null2String(params.get("quote_type")); @@ -132,12 +152,117 @@ public class DoSaveContentCmd extends AbstractCommonCommand> WorkflowCommunicationBiz.resetNewCommunicationReadLog(communicationId, user, remark); } + // 获取 at 的人员 id,发送卡片 + String isSelectValue = Util.null2String(params.get("isSelectValue")); + new BaseBean().writeLog("isSelectValue=======>" + isSelectValue); + if ("1".equals(isSelectValue) || "true".equals(isSelectValue)) { +// String newremark = Util.null2String(remark).replace("

", "").replace("

", ""); +// String output = newremark.replaceAll("]*>.*?", "").replace(" ", " "); + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + Document doc = Jsoup.parse(remark); + List result = new ArrayList(); + String title = ""; + + 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 pTags = doc.select("p"); + + Iterator pIt = pTags.iterator(); + while(pIt.hasNext()) { + Element element = pIt.next(); + title += element.text(); + } + new BaseBean().writeLog("DoSaveContentCmd-title11:"+title); + try{ + if(title.contains("ñ")){ + + title = StringEscapeUtils.unescapeHtml4(title); + new BaseBean().writeLog("DoSaveContentCmd-title22:"+title); + } + if(title.contains("ñ")){ + + title = title.replace("ñ", "ñ"); + new BaseBean().writeLog("DoSaveContentCmd-title33:"+title); + } + new BaseBean().writeLog("DoSaveContentCmd-title44:"+title); + }catch (Exception e){ + new BaseBean().writeLog("e1:"+e); + } + + if(result.size() > 0){ + for(int i= 0;i 标签 +// Elements aTags = doc.select("a"); +// for (int i = 0; i < aTags.size(); i++) { +// Element aTag = aTags.get(i); +// // 获取 atsome-name 属性值作为人名 +// String name = aTag.attr("atsome-name"); +// if (!name.isEmpty()) { +// // 创建文本节点 +// TextNode textNode = new TextNode("@" + name, doc.baseUri()); +// // 在 标签后面插入文本节点 +// aTag.after(textNode); +// // 移除 标签 +// aTag.remove(); +// } +// } +// String html = doc.body().html(); +// new BaseBean().writeLog("html=======>" + html); + + RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); + List atResourceids = reqsignwm.parseRemark(remark); + if (atResourceids.size() > 0){ + new BaseBean().writeLog("html2====>"+ JSON.toJSONString(atResourceids)); + for (String atResourceid : atResourceids) { + new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestId),requestName,title,"You have been tagged in a comment."); + } + }else{ + new BaseBean().writeLog("atResourceids====> is empty <<< "); + } + } + + //抄送(不需提交)给@的人员 new BaseBean().writeLog("qc2563600===>>开始执行抄送(不需提交)给@的人员,remark:" + remark); CctoAtUser(nodeid,requestId,remark,user); + new BaseBean().writeLog("test222"); + //发送给门户抄送不需提交,待阅 toMenhuDaiyue(requestId+"",nodeid,remark); + new BaseBean().writeLog("test3333"); apidatas.put("result", contentId != -1); @@ -151,7 +276,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> * @param remark */ private void CctoAtUser(String nodeid, int requestid, String remark,User user) { - + new BaseBean().writeLog("CctoAtUser"); String pattern = "(?i)atsome=\\\"\\@[0-9]*"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(remark); @@ -169,6 +294,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> } private void toMenhuDaiyue(String reqid,String nodeid,String remark){ + new BaseBean().writeLog("toMenhuDaiyue"); List> todolist = new ArrayList(); RecordSet rs = new RecordSet(); RecordSet rs1 = new RecordSet(); @@ -220,6 +346,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> String passwd = PropBean.getUfPropValue("passwd"); String center = PropBean.getUfPropValue("center"); String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + new BaseBean().writeLog("bpm_workflowurl22:"+bpm_workflowurl); Class clazz = Class.forName("com.customization.dito.sendtodo.SendPortalAtAddTodoCmd"); if(clazz.getMethod("sendTodoDataByNode",new Class[]{String.class,List.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class}) != null) { diff --git a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java index afde960c..debf2033 100644 --- a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java +++ b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java @@ -1,16 +1,27 @@ package com.engine.workflow.cmd.requestForm.communication; import com.customization.qc2563600.CCOperatorUtil; +import com.customization.wfTodoCard.service.CheckSendCardService; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; import com.engine.core.interceptor.CommandContext; import com.engine.workflow.biz.WorkflowCommunicationBiz; import com.engine.workflow.entity.requestForm.communication.Reply; +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.nodes.Node; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; import weaver.conn.RecordSet; +import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.dito.comInfo.PropBean; +import weaver.workflow.request.RequestSignRelevanceWithMe; import java.lang.reflect.Method; import java.text.DateFormat; @@ -120,6 +131,128 @@ public class DoSaveReply extends AbstractCommonCommand> { toMenhuDaiyue(communicationId,requestid,nodeid,remark); } + + // 获取 at 的人员 id,发送卡片 + String isSelectValue = Util.null2String(params.get("isSelectValue")); + new BaseBean().writeLog("isSelectValue=======>" + isSelectValue); + if ("1".equals(isSelectValue)) { + + RecordSet rs = new RecordSet(); + rs.executeQuery("select requestid from workflow_communicationbase where id = ?", communicationId); + rs.next(); + String requestId = rs.getString("requestid"); + new BaseBean().writeLog("requestId=======>" + requestId); + rs.executeQuery("select * from workflow_requestbase where requestid = ?",requestId); + rs.next(); + String requestName = Util.null2String(rs.getString("REQUESTNAME")); + new BaseBean().writeLog("requestName=======>" + requestName); + +// String newremark = Util.null2String(remark).replace("

", "").replace("

", ""); +// String output = newremark.replaceAll("]*>.*?", "").replace(" ", " "); + + BaseBean bb = new BaseBean(); + Document doc = Jsoup.parse(remark); + + List result = new ArrayList(); + String title = ""; + + 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 pTags = doc.select("p"); + +// for (int i = 0; i < pTags.size(); i++) { +// Element pTag = pTags.get(i); +// // 获取

标签内的子节点列表 +// List childNodes = pTag.clone().childNodes(); +// // 按顺序将子节点插入到

标签的位置 +// for (int j = childNodes.size() - 1; j >= 0; j--) { +// pTag.after(childNodes.get(j)); +// } +// // 移除

标签 +// pTag.remove(); +// } +// // 选择所有的 标签 +// Elements aTags = doc.select("a"); +// for (int i = 0; i < aTags.size(); i++) { +// Element aTag = aTags.get(i); +// // 获取 atsome-name 属性值作为人名 +// String name = aTag.attr("atsome-name"); +// if (!name.isEmpty()) { +// // 创建文本节点 +// TextNode textNode = new TextNode("@" + name, doc.baseUri()); +// // 在 标签后面插入文本节点 +// aTag.after(textNode); +// // 移除 标签 +// aTag.remove(); +// } +// } + + Iterator pIt = pTags.iterator(); + while(pIt.hasNext()) { + Element element = pIt.next(); + title += element.text(); + } + + new BaseBean().writeLog("DoSaveReply-title11:"+title); + try{ + if(title.contains("ñ")){ + + title = StringEscapeUtils.unescapeHtml4(title); + new BaseBean().writeLog("DoSaveReply-title22:"+title); + } + if(title.contains("ñ")){ + + title = title.replace("ñ", "ñ"); + new BaseBean().writeLog("DoSaveReply-title33:"+title); + } + new BaseBean().writeLog("DoSaveReply-title44:"+title); + }catch (Exception e){ + new BaseBean().writeLog("e1:"+e); + } + + if(result.size() > 0){ + for(int i= 0;i" + html); + + RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); + List atResourceids = reqsignwm.parseRemark(remark); + for (String atResourceid : atResourceids) { + new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestId),requestName,title,"You have been tagged in a comment."); + } + } + apidatas.put("result", insertReplyId > 0); return apidatas; diff --git a/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java b/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java index 4b619051..4590ebf5 100644 --- a/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java +++ b/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java @@ -14,6 +14,7 @@ import weaver.conn.RecordSet; import weaver.cpt.util.CptWfUtil; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.interfaces.dito.overtime.SendPortalOverTimeSubmitUtil; import weaver.workflow.msg.MsgPushUtil; import weaver.workflow.msg.entity.MsgEntity; @@ -88,33 +89,12 @@ public class DoHandle_CommonProcessCmd extends AbstractCommonCommand { String userid = StringUtils.join(userlist, ","); bb.writeLog("DoHandle_CommonProcessCmd-userid:"+userid); - String className = "weaver.interfaces.dito.overtime.SendPortalOverTimeSubmitUtil" ; - String methodName = "sendOverTimeSubmit" ; - - Class clazz = Class.forName(className); - bb.writeLog("DoHandle_CommonProcessCmd-requestid1:"+requestid); - - Method method = clazz.getMethod(methodName,String.class,String.class); - bb.writeLog("DoHandle_CommonProcessCmd-requestid2:"+requestid); - - Object newInstance = clazz.newInstance(); - bb.writeLog("DoHandle_CommonProcessCmd-requestid3:"+requestid); - - method.invoke(newInstance,requestid+"",userid); - bb.writeLog("DoHandle_CommonProcessCmd-result:"); + SendPortalOverTimeSubmitUtil sendPortalOverTimeSubmitUtil = new SendPortalOverTimeSubmitUtil(); + sendPortalOverTimeSubmitUtil.sendOverTimeSubmit(requestid+"",userid); } - }catch (ClassNotFoundException | NoSuchMethodException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("DoHandle_CommonProcessCmd-ClassNotFoundException:"+e); - } catch (IllegalAccessException e) { - e.printStackTrace(); - bb.writeLog("DoHandle_CommonProcessCmd-IllegalAccessException:"+e); - } catch (InstantiationException e) { - e.printStackTrace(); - bb.writeLog("DoHandle_CommonProcessCmd-InstantiationException:"+e); - } catch (InvocationTargetException e) { - e.printStackTrace(); - bb.writeLog("DoHandle_CommonProcessCmd-InvocationTargetException:"+e); } } } diff --git a/src/com/engine/workflow/web/RequestFormAction.java b/src/com/engine/workflow/web/RequestFormAction.java index c5eb88bb..28a0991e 100644 --- a/src/com/engine/workflow/web/RequestFormAction.java +++ b/src/com/engine/workflow/web/RequestFormAction.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.api.browser.bean.SearchConditionOption; -import com.customization.dito.sendtodo.SendPortalTodoDeleteUtil; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import com.engine.workflow.biz.freeNode.FreeNodeAsyncSubmitBiz; @@ -30,6 +29,7 @@ import weaver.general.Util; import weaver.general.WorkFlowTransMethod; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; +import weaver.interfaces.dito.form.SendPortalFormLoadUtil; import weaver.workflow.request.WFAutoApproveThreadPoolUtil; import weaver.workflow.workflow.WorkflowConfigComInfo; @@ -107,14 +107,24 @@ public class RequestFormAction { response.setCharacterEncoding("utf-8"); BaseBean bb = new BaseBean(); - List> remark8List = new ArrayList>(); - List> atList = new ArrayList>(); - User user = HrmUserVarify.getUser(request, response); +// List> remark8List = new ArrayList>(); +// List> remark9List = new ArrayList>(); +// List> atList = new ArrayList>(); + + Map remark9Map = new HashMap(); + List> atList = new ArrayList>(); + String requestids = request.getParameter("requestid"); try{ - String requestid = request.getParameter("requestid"); - int userid = user.getUID(); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.queryWorkflowRemark8AtByLoadForm(requestid,userid+"",remark8List,atList); + bb.writeLog("loadForm-requestids"+requestids); + if(StringUtils.isNotEmpty(requestids) && !"null".equals(requestids) && requestids !=null){ + User user = HrmUserVarify.getUser(request, response); + int userid = user.getUID(); + SendPortalFormLoadUtil sendPortalFormLoadUtil = new SendPortalFormLoadUtil(); + remark9Map = sendPortalFormLoadUtil.queryWorkflowRemark9ByLoadForm(requestids,userid+""); + + atList = sendPortalFormLoadUtil.queryWorkflowRemarkAtByLoadForm(requestids,userid+""); + } + bb.writeLog("loadForm-remark9Map"+remark9Map.size()); }catch (Exception e){ e.printStackTrace(); bb.writeLog("loadForm-e:"+e); @@ -127,9 +137,15 @@ public class RequestFormAction { result = result.substring(0, result.length() - 1) + ",\"durationTime\":" + duration + "}"; try{ - String loginid = user.getLoginid(); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.completeReamrk8AtByLoadForm(loginid,remark8List,atList); + bb.writeLog("loadForm-requestids2"+requestids); + if(StringUtils.isNotEmpty(requestids) && !"null".equals(requestids) && requestids !=null){ + SendPortalFormLoadUtil sendPortalFormLoadUtil = new SendPortalFormLoadUtil(); + User user = HrmUserVarify.getUser(request, response); + int userid = user.getUID(); + String logind = user.getLoginid(); + bb.writeLog("loadForm-logind"+logind); + sendPortalFormLoadUtil.completeRequestByLoadForm(requestids,userid+"",remark9Map,logind,atList); + } }catch (Exception e){ e.printStackTrace(); bb.writeLog("loadForm2-e:"+e); @@ -174,18 +190,17 @@ public class RequestFormAction { @Produces(MediaType.TEXT_PLAIN) public String updateReqInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { - try{ - BaseBean bb = new BaseBean(); - User user = HrmUserVarify.getUser(request, response); - String requestid = request.getParameter("requestid"); - int userid = user.getUID(); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - List> list = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid+""); - bb.writeLog("updateReqInfo--list2:"+list.size()); - }catch (Exception e){ - - } - +// try{ +// BaseBean bb = new BaseBean(); +// User user = HrmUserVarify.getUser(request, response); +// String requestid = request.getParameter("requestid"); +// int userid = user.getUID(); +// SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); +// List> list = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid+""); +// bb.writeLog("updateReqInfo--list2:"+list.size()); +// }catch (Exception e){ +// +// } RequestFormServiceImpl formService = getFormService(request, response); Map apidatas = formService.updateReqInfo(request); diff --git a/src/com/engine/workflow/web/RequestMonitorListAction.java b/src/com/engine/workflow/web/RequestMonitorListAction.java index 12b34058..8d323cc9 100644 --- a/src/com/engine/workflow/web/RequestMonitorListAction.java +++ b/src/com/engine/workflow/web/RequestMonitorListAction.java @@ -1,7 +1,5 @@ package com.engine.workflow.web; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -27,6 +25,14 @@ import weaver.hrm.User; import com.alibaba.fastjson.JSONObject; import com.engine.workflow.service.RequestMonitorListService; import com.engine.common.util.ServiceUtil; +import weaver.interfaces.dito.archiving.RequestArchingCompleteForwardUtil; +import weaver.interfaces.dito.archiving.RequestArchingCompleteRemark89Util; +import weaver.interfaces.dito.archiving.RequestArchingSendPortalUtil; +import weaver.interfaces.dito.archiving.RequestArchvingQueryUtil; +import weaver.interfaces.dito.delete.RequestDeleteQueryPortalUtil; +import weaver.interfaces.dito.delete.RequestDeleteSendPortalUtil; +import weaver.interfaces.dito.monitor.SendPortalMonitorRepossessedUtil; +import weaver.interfaces.dito.monitor.SendPortalMonitorUtil; /** * 流程监控入口(action) @@ -176,137 +182,42 @@ public class RequestMonitorListAction { BaseBean bb = new BaseBean(); - List> copyList = new ArrayList>(); - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "queryWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - copyList = (List>) method.invoke(newInstance,requestid); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - List> forwardList = new ArrayList>(); - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "queryWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - forwardList = (List>) method.invoke(newInstance,requestid); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - List> atList = new ArrayList>(); + List> baseList = new ArrayList>(); try{ String requestid = Util.null2String(request.getParameter("multiRequestIds")); bb.writeLog("deleteRequestById-requestid"+requestid); if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "queryWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - atList = (List>) method.invoke(newInstance,requestid); + + RequestDeleteQueryPortalUtil requestDeleteQueryPortalUtil = new RequestDeleteQueryPortalUtil(); + copyList = requestDeleteQueryPortalUtil.queryRequestReamrk89ByDelete(requestid); + forwardList = requestDeleteQueryPortalUtil.queryRequestForwardByDelete(requestid); + atList = requestDeleteQueryPortalUtil.queryRequestAtByDelete(requestid); + baseList = requestDeleteQueryPortalUtil.queryRequestDataByDelete(requestid); } - }catch (ClassNotFoundException | NoSuchMethodException e){ + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("deleteRequestById-1:"+e); } apidatas = monitorService.deleteRequestById(request, user); - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); String userid = user.getUID()+"" ; - bb.writeLog("deleteRequestById-requestid"+requestid); - bb.writeLog("deleteRequestById-userid"+userid); - - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorDelete" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestid,userid); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - String notes = ""; - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("copyList:"+copyList.size()); - if(copyList.size() >0){ - notes = "流程监控删除,删除流程所有未读的抄送数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,copyList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("forwardList:"+forwardList.size()); - if(forwardList.size() >0){ - notes = "流程监控删除,删除流程所有未读的转发数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,forwardList,loginid,notes); + if(baseList.size()>0){ + requestDeleteSendPortalUtil.monitorDelete(userid,baseList); } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("atList:"+atList.size()); - if(atList.size() >0){ - notes = "流程监控删除,删除流程所有未读@的数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,atList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ + String notes = "流程监控页面,"; + requestDeleteSendPortalUtil.completeRemark89ForwardAtByDelete(user,copyList,forwardList,atList,notes); + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("deleteRequestById-4:"+e); } - - - }catch(Exception e){ e.printStackTrace(); apidatas.put("api_status", false); @@ -331,97 +242,68 @@ public class RequestMonitorListAction { BaseBean bb = new BaseBean(); - List> userList = new ArrayList>(); - try{ - bb.writeLog("deleteRequestById-requestid"+requestids); - - if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryRequestUserDataByArchving" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - userList = (List>) method.invoke(newInstance,requestids); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } + // 流程的待办的处理人 +// List> userList = new ArrayList>(); +// try{ +// bb.writeLog("deleteRequestById-requestid"+requestids); +// +// if(StringUtils.isNotEmpty(requestids)){ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// userList = sendPortalMonitorArchvingUtil.queryRequestUserDataByArchving(requestids); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-1:"+e); +// } - List> copyList = new ArrayList>(); + List> remarkList = new ArrayList>(); List> forwardList = new ArrayList>(); - List> atList = new ArrayList>(); +// List> atList = new ArrayList>(); - if(!userList.isEmpty() && userList.size() > 0){ - // 获取 抄送、转发、@ 的数据 +// if(!userList.isEmpty() && userList.size() > 0){ +// // 获取 抄送、转发、@ 的数据 try{ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowRemarkByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - copyList = (List>) method.invoke(newInstance,userList); - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + RequestArchvingQueryUtil requestArchvingQueryUtil = new RequestArchvingQueryUtil(); + Map nodeMap = requestArchvingQueryUtil.queryRequestNodeIdByArchving(requestids); + remarkList = requestArchvingQueryUtil.queryWorkflowRemarkByRequestid(requestids,nodeMap); + forwardList = requestArchvingQueryUtil.queryWorkflowForwardByRequestid(requestids,nodeMap); + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + bb.writeLog("archivingRequestById-2:"+e); } - - - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - forwardList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } - - - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - atList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } - } - +// +// try{ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// forwardList = sendPortalMonitorArchvingUtil.queryWorkflowForwardByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-3:"+e); +// } +// +// try{ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// atList = sendPortalMonitorArchvingUtil.queryWorkflowAtByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-4:"+e); +// } +// } // 执行智能预测接口 - User user = HrmUserVarify.getUser(request, response); try{ String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 + bb.writeLog("智能预测:"+requestids); if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "doSimpleModeDataByMonitor" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,User.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,user); + RequestArchingSendPortalUtil requestArchingSendPortalUtil = new RequestArchingSendPortalUtil(); + requestArchingSendPortalUtil.doSimpleModeDataByMonitor(requestids,user); } }catch (Exception e){ - + bb.writeLog("archivingRequestById-5:"+e); } //强制归档接口 @@ -437,74 +319,58 @@ public class RequestMonitorListAction { apidatas.put("api_errormsg", "catch exception : " + e.getMessage()); } - // 完成转发、抄送、@的数据 + // 流程强制归档,调用门户接口生产归档节点的数据 try{ String userid = user.getUID()+"" ; -// addClassInterface2Monitor(requestids,userid); if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorArchived" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,userid); + RequestArchingSendPortalUtil requestArchingSendPortalUtil = new RequestArchingSendPortalUtil(); + requestArchingSendPortalUtil.monitorArchived(requestids,userid); } }catch (Exception e){ bb.writeLog("archivingRequestById-ClassNotFoundException"+e); } - + // 完成转发、抄送、@的数据 String notes = ""; try{ - - String loginid = user.getLoginid()+"" ; - bb.writeLog("copyList:"+copyList.size()); - if(copyList.size() >0){ - notes = "流程监控删除,删除流程所有未读的抄送数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,copyList,loginid,notes); + bb.writeLog("remarkList:"+remarkList.size()); + if(remarkList.size() >0){ + notes = "流程监控强制归档,完成流程所有未读的抄送数据"; + RequestArchingCompleteRemark89Util requestArchingCompleteRemark89Util = new RequestArchingCompleteRemark89Util(); + requestArchingCompleteRemark89Util.monitorCompleteRequestRemark89(remarkList,notes,user); } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } - try{ String loginid = user.getLoginid()+"" ; bb.writeLog("forwardList:"+forwardList.size()); if(forwardList.size() >0){ - notes = "流程监控删除,删除流程所有未读的转发数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,forwardList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("atList:"+atList.size()); - if(atList.size() >0){ - notes = "流程监控删除,删除流程所有未读@的数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,atList,loginid,notes); + notes = "流程监控强制归档,完成流程所有未读的转发数据"; + RequestArchingCompleteForwardUtil requestArchingCompleteForwardUtil = new RequestArchingCompleteForwardUtil(); + requestArchingCompleteForwardUtil.monitorCompleteRequestForward(forwardList,notes,user); + } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } +// +// try{ +// String loginid = user.getLoginid()+"" ; +// bb.writeLog("atList:"+atList.size()); +// if(atList.size() >0){ +// notes = "流程监控强制归档,完成流程所有未读@的数据"; +// +// SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); +// sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); +// +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("deleteRequestById-ClassNotFoundException"+e); +// } return JSONObject.toJSONString(apidatas); } @@ -660,73 +526,34 @@ public class RequestMonitorListAction { BaseBean bb = new BaseBean(); String requestids = Util.null2String(request.getParameter("multiRequestIds")); - List> userList = new ArrayList>(); - try{ - bb.writeLog("deleteRequestById-requestid"+requestids); - if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryRequestUserDataByArchving" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - userList = (List>) method.invoke(newInstance,requestids); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } List> copyList = new ArrayList>(); - List> forwardList = new ArrayList>(); - List> atList = new ArrayList>(); - if(!userList.isEmpty() && userList.size() > 0){ + if(StringUtils.isNotBlank(requestids)){ // 获取 抄送、转发、@ 的数据 try{ - - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowRemarkByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - copyList = (List>) method.invoke(newInstance,userList); - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } - - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - forwardList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + SendPortalMonitorRepossessedUtil sendPortalMonitorRepossessedUtil = new SendPortalMonitorRepossessedUtil(); + copyList = sendPortalMonitorRepossessedUtil.queryWorkflowRemark89ByArchving(requestids); + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + bb.writeLog("repossessedRequestById-1:"+e); } - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); +// try{ +// SendPortalMonitorRepossessedUtil sendPortalMonitorRepossessedUtil = new SendPortalMonitorRepossessedUtil(); +// forwardList = sendPortalMonitorRepossessedUtil.queryWorkflowForwardByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-2:"+e); +// } - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - atList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } +// try{ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// atList = sendPortalMonitorArchvingUtil.queryWorkflowAtByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-3:"+e); +// } } User user = HrmUserVarify.getUser(request, response); @@ -749,14 +576,11 @@ public class RequestMonitorListAction { bb.writeLog("repossessedRequestById-userid"+userid); if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorPossessed" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,userid); + + SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); + sendPortalMonitorUtil.monitorPossessed(requestids,userid); } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("repossessedRequestById-ClassNotFoundException"+e); } @@ -766,55 +590,41 @@ public class RequestMonitorListAction { String loginid = user.getLoginid()+"" ; bb.writeLog("copyList:"+copyList.size()); if(copyList.size() >0){ - notes = "流程监控删除,删除流程所有未读的抄送数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,copyList,loginid,notes); + notes = "流程监控强制收回,完成流程所有未读的抄送数据"; + SendPortalMonitorRepossessedUtil sendPortalMonitorRepossessedUtil = new SendPortalMonitorRepossessedUtil(); + sendPortalMonitorRepossessedUtil.monitorRequestRemark89ByArchving(copyList,loginid,notes); } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - - String loginid = user.getLoginid()+"" ; - bb.writeLog("forwardList:"+forwardList.size()); - if(forwardList.size() >0){ - notes = "流程监控删除,删除流程所有未读的转发数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,forwardList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("atList:"+atList.size()); - if(atList.size() >0){ - notes = "流程监控删除,删除流程所有未读@的数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,atList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("repossessedRequestById-5:"+e); } +// try{ +// String loginid = user.getLoginid()+"" ; +// bb.writeLog("forwardList:"+forwardList.size()); +// if(forwardList.size() >0){ +// notes = "流程监控强制收回,完成流程所有未读的转发数据"; +// SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); +// sendPortalMonitorDeleteUtil.monitorFinishedWorkflowForwardByRequestid(forwardList,loginid,notes); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-6:"+e); +// } +// try{ +// String loginid = user.getLoginid()+"" ; +// bb.writeLog("atList:"+atList.size()); +// if(atList.size() >0){ +// notes = "流程监控强制收回,完成流程所有未读@的数据"; +// SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); +// sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); +// +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-7:"+e); +// } return JSONObject.toJSONString(apidatas); } diff --git a/src/com/engine/workflow/web/WorkflowPAAction.java b/src/com/engine/workflow/web/WorkflowPAAction.java new file mode 100644 index 00000000..28149758 --- /dev/null +++ b/src/com/engine/workflow/web/WorkflowPAAction.java @@ -0,0 +1,1030 @@ +package com.engine.workflow.web; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.customization.wfTodoCard.service.CardUserInfoService; +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.engine.common.util.ServiceUtil; +import com.engine.workflow.biz.publicApi.RequestOperateBiz; +import com.engine.workflow.constant.PAResponseCode; +import com.engine.workflow.entity.publicApi.*; +import com.engine.workflow.publicApi.*; +import com.engine.workflow.publicApi.impl.*; +import com.engine.workflow.util.CommonUtil; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.paservice.SubmitRequestRemarkUtil; +import weaver.interfaces.dito.paservice.SubmitRequestUtil; +import weaver.workflow.logging.Logger; +import weaver.workflow.logging.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.io.BufferedReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +public class WorkflowPAAction { + + private final static Logger log = LoggerFactory.getLogger(WorkflowPAAction.class); + + private WorkflowRequestInfoPA getRequestInfoPA() { + return (WorkflowRequestInfoPAImpl) ServiceUtil.getService(WorkflowRequestInfoPAImpl.class); + } + + private WorkflowRequestOperatePA getRequestOperatePA() { + return (WorkflowRequestOperatePAImpl) ServiceUtil.getService(WorkflowRequestOperatePAImpl.class); + } + + private WorkflowPA getWorkflowPA(){ + return (WorkflowPAImpl) ServiceUtil.getService(WorkflowPAImpl.class); + } + + private WorkflowRequestHandledPA getWorkflowRequestHandledPA(){ + return (WorkflowRequestHandledPAImpl) ServiceUtil.getService(WorkflowRequestHandledPAImpl.class); + } + + private WorkflowRequestMinePA getWorkflowRequestMinePA(){ + return (WorkflowRequestMinePAImpl) ServiceUtil.getService(WorkflowRequestMinePAImpl.class); + } + + private WorkflowRequestTodoPA getWorkflowTodoPA(){ + return (WorkflowRequestListPAImpl) ServiceUtil.getService(WorkflowRequestListPAImpl.class); + } + + @POST + @Path("/getCustomTabRequestList") + @Produces("text/plain;charset=utf-8") + public String getCustomRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA requestPA = getWorkflowPA(); + // 获取相关条件 + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toDoRequestList = requestPA.getRequestListCmd(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (int) params.get("pageNo"), (int) params.get("pageSize"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestList); + } + @POST + @Path("/getCustomTabRequestCount") + @Produces("text/plain;charset=utf-8") + public String getCustomRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA requestPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toDoRequestCount = requestPA.getRequestCountCmd(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestCount); + } + + @POST + @Path("/getToDoRequestList") + @Produces("text/plain;charset=utf-8") + public String getToDoRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + // 获取相关条件 + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toDoRequestList = requestTodoPA.getToDoRequestList(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (int) params.get("pageNo"), (int) params.get("pageSize"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestList); + } + @POST + @Path("/getToDoRequestCount") + @Produces("text/plain;charset=utf-8") + public String getToDoRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toDoRequestCount = requestTodoPA.getToDoRequestCount(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestCount); + } + + @POST + @Path("/getCreateWorkflowList") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List workflowList = workflowPA.getCreateWorkflowListCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(workflowList); + } + + @POST + @Path("/getCreateWorkflowCount") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long count = workflowPA.getCreateWorkflowCountCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(count); + } + + @POST + @Path("/getCreateWorkflowTypeCount") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowTypeCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long count = workflowPA.getCreateWorkflowTypeCountCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(count); + } + + @POST + @Path("/getCreateWorkflowTypeList") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowTypeList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List workflowTypeList = workflowPA.getCreateWorkflowTypeListCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(workflowTypeList); + } + + @POST + @Path("/getWorkflowRequestLogs") + @Produces("text/plain;charset=utf-8") + public String getWorkflowRequestLogs(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List workflowRequestLogs = workflowPA.getWorkflowRequestLogsCmd((String) params.get("workflowId"), (String) params.get("requestId"), user, (int) params.get("pageSize"), (int) params.get("endId"), (Map) params.get("conditions")); + return JSONObject.toJSONString(workflowRequestLogs); + } + + @POST + @Path("/getHandledWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getHandledRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long handledWorkflowRequestCount = requestHandledPA.getHandledWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow")); + return JSONObject.toJSONString(handledWorkflowRequestCount); + } + + @POST + @Path("/getHandledWorkflowRequestCount4Ofs") + @Produces("text/plain;charset=utf-8") + public String getHandledWorkflowRequestCount4Ofs(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long handledWorkflowRequestCount4Ofs = requestHandledPA.getHandledWorkflowRequestCount4Ofs(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(handledWorkflowRequestCount4Ofs); + } + + @POST + @Path("/getHandledWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String gethandledWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List handledWorkflowRequestList = requestHandledPA.getHandledWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow")); + return JSONObject.toJSONString(handledWorkflowRequestList); + } + + @POST + @Path("/getHandledWorkflowRequestList4Ofs") + @Produces("text/plain;charset=utf-8") + public String gethandledWorkflowRequestList4Ofs(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List handledWorkflowRequestList4Ofs = requestHandledPA.getHandledWorkflowRequestList4Ofs((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(handledWorkflowRequestList4Ofs); + } + + @POST + @Path("/getProcessedWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getProcessedWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long processedWorkflowRequestCount = requestHandledPA.getProcessedWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(processedWorkflowRequestCount); + } + + @POST + @Path("/getProcessedWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getProcessedWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user ==null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List processedWorkflowRequestList = requestHandledPA.getProcessedWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(processedWorkflowRequestList); + } + + @POST + @Path("/getMyWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getMyWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestMinePA requestMinePA = getWorkflowRequestMinePA(); + User user = getTargetUser(request, response); + if(user ==null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long myWorkflowRequestCount = requestMinePA.getMyWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(myWorkflowRequestCount); + } + + @POST + @Path("/getMyWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getMyWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestMinePA requestMinePA = getWorkflowRequestMinePA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List myWorkflowRequestList = requestMinePA.getMyWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(myWorkflowRequestList); + } + + @POST + @Path("/getBeRejectWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getBeRejectWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List beRejectWorkflowRequestList = requestTodoPA.getBeRejectWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(beRejectWorkflowRequestList); + } + + @POST + @Path("/getBeRejectWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getBeRejectWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long beRejectWorkflowReqeustCount = requestTodoPA.getBeRejectWorkflowReqeustCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(beRejectWorkflowReqeustCount); + } + + @POST + @Path("/getCCWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getCCWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List ccWorkflowRequestList = requestTodoPA.getCCWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(ccWorkflowRequestList); + } + + @POST + @Path("/getCCWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getCCWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long ccWorkflowRequestCount = requestTodoPA.getCCWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(ccWorkflowRequestCount); + } + + @POST + @Path("/getDoingWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getDoingWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List doingWorkflowRequestList = requestTodoPA.getDoingWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(doingWorkflowRequestList); + } + + @POST + @Path("/getDoingWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getDoingWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long doingWorkflowReqeustCount = requestTodoPA.getDoingWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(doingWorkflowReqeustCount); + } + + @POST + @Path("/getForwardWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getForwardWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List forwardWorkflowRequestList = requestTodoPA.getForwardWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(forwardWorkflowRequestList); + } + + @POST + @Path("/getForwardWorkflowRequestCount") + @Produces("text/plain;chatset=utf-8") + public String getForwardWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long forwardWorkflowRequestCount = requestTodoPA.getForwardWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(forwardWorkflowRequestCount); + } + + @POST + @Path("/getToBeReadWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getToBeReadWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toBeReadWorkflowRequestList = requestTodoPA.getToBeReadWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toBeReadWorkflowRequestList); + } + + @POST + @Path("/getToBeReadWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getToBeReadWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toBeReadWorkflowReqeustCount = requestTodoPA.getToBeReadWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toBeReadWorkflowReqeustCount); + } + + @POST + @Path("/getToDoWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getToDoWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toDoWorkflowRequestList = requestTodoPA.getToDoWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoWorkflowRequestList); + } + + @POST + @Path("/getToDoWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getToDoWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toDoWorkflowRequestCount = requestTodoPA.getToDoWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoWorkflowRequestCount); + } + + @POST + @Path("/getAllWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getAllWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List allWorkflowRequestList = requestTodoPA.getAllWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(allWorkflowRequestList); + } + + @POST + @Path("/getAllWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getAllWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long allWorkflowRequestCount = requestTodoPA.getAllWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(allWorkflowRequestCount); + } + + // 获取要查询列表的用户 需要需要查客户信息,可添加userType参数 + public User getTargetUser(HttpServletRequest request, HttpServletResponse response){ + User user = CommonUtil.getUserByRequest(request, response); + /*int userId = Util.getIntValue(request.getParameter("userId"),0); + //int userType = Util.getIntValue(request.getParameter("userType"),0); + if(userId != 0 ){ + user = User.getUser(userId,0); + }*/ + return user; + } + + // 获取参数信息 + private Map getParams(HttpServletRequest request) { + Map params = new HashMap(); + // tabIds,conditions,pageNo,pageSize,isMergeShow,isNeedOs + params.put("tabIds", Util.null2String(request.getParameter("tabIds"),"0")); + if(request.getParameter("conditions") != null && !"".equals(request.getParameter("conditions").trim())){ + params.put("conditions", JSONObject.parseObject(request.getParameter("conditions"),new TypeReference>(){})); + }else { + params.put("conditions",new HashMap()); + } + String requestId = request.getParameter("requestId"); + String workflowId = request.getParameter("workflowId"); + if(requestId == null || "".equals(requestId.trim())){ + requestId = "0"; + } + if(workflowId == null || "".equals(workflowId.trim())){ + workflowId = "0"; + } + params.put("pageNo", Util.getIntValue(request.getParameter("pageNo"),1)); + params.put("pageSize", Util.getIntValue(request.getParameter("pageSize"),10)); + params.put("isMergeShow", "true".equals(Util.null2String(request.getParameter("isMergeShow")))); + params.put("isNeedOs", "true".equals(Util.null2String(request.getParameter("isNeedOs")))); + params.put("requestId",requestId); + params.put("workflowId",workflowId); + params.put("endId",Util.getIntValue(request.getParameter("endId"),0)); + return params; + } + + @GET + @Path("/getRequestResources") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestResources(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestResources接口报文~~~~userId:"+(user==null?null:user.getUID())); + int requestid = Util.getIntValue(request.getParameter("requestid")); + if(requestid <= 0) requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getRequestResources(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getRequestOperatorInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestOperatorInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestOperatorInfo接口报文~~~~userId:"+(user==null?null:user.getUID())); + int requestid = Util.getIntValue(request.getParameter("requestid")); + if(requestid <= 0) requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getRequestOperatorInfo(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/getRequestFlowChart") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestFlowChart(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestFlowChart接口报文~~~~userId:"+(user==null?null:user.getUID())); + int requestid = Util.getIntValue(request.getParameter("requestid")); + if(requestid <= 0) requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getRequestFlowChart(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/doCreateRequest") + @Produces(MediaType.TEXT_PLAIN) + public String doCreateRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doCreateRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doCreateRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 流程撤回 + * @param request + * @param response + * @return + */ + @POST + @Path("/withdrawRequest") + @Produces(MediaType.TEXT_PLAIN) + public String withdrawRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~withdrawRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.withdrawRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/submitRequest") + @Produces(MediaType.TEXT_PLAIN) + public String submitRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~submitRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.submitRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/submitRequest2") + @Produces(MediaType.APPLICATION_JSON) + public JSONObject submitRequest2(@Context HttpServletRequest request, @Context HttpServletResponse response) { + String userid=Util.null2String(request.getHeader("weaver_userid")); + String usertoken=Util.null2String(request.getHeader("usertoken")); + String authtoken = new BaseBean().getPropValue("workflowTodoCard", "oaAuthKey"); + String usertype = Util.null2String(request.getHeader("weaver_usertype")); + String language = Util.null2String(request.getHeader("weaver_userlanguage")); + + BaseBean baseBean = new BaseBean(); + baseBean.writeLog( "requestflow submit>>>>> userid = " + userid + " usertoken = " + usertoken); + + if ("".equals(userid)){ + baseBean.writeLog("error>> "+"userid "); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少用户信息"); + } + if ("".equals(usertoken) || !authtoken.equals(usertoken)){ + baseBean.writeLog("error >> "+"user token error"); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少 usertoken"); + } + + StringBuilder stringBuilder = new StringBuilder(); + try (BufferedReader bufferedReader = request.getReader()) { + String line; + while ((line = bufferedReader.readLine()) != null) { + stringBuilder.append(line); + } + }catch (Exception e){ + baseBean.writeLog("获取参数错误" +e.getMessage(), e); + } + + // 此时 stringBuilder.toString() 包含整个请求体的内容 + String requestBody = stringBuilder.toString(); + baseBean.writeLog("requestBody submit request 》》 "+requestBody); + ReqOperateRequestEntity entity = null; + try { + if (!"".equals(requestBody)){ + if (requestBody.startsWith("'") && requestBody.endsWith("'")){ + requestBody = requestBody.substring(1,requestBody.length()-1); + } + entity=JSON.parseObject(requestBody, ReqOperateRequestEntity.class); + entity.setUserId(Integer.parseInt(userid)); + } + }catch (Exception e){ + baseBean.writeLog("submit request : parse request body error>>" + e.getMessage()); + } + User user = new CardUserInfoService().getUserById(Integer.parseInt(userid)); + user.setLogintype(usertype); + if (null != language && !"".equals(language)){ + user.setLanguage(Integer.parseInt(language)); + } + new BaseBean().writeLog("param entity 》》 "+JSON.toJSONString(entity)); + + ReqOperateRequestEntity requestParam = RequestOperateBiz.request2Entity(request); + int subRequestid = entity.getRequestId(); + + baseBean.writeLog("subRequestid:"+subRequestid); + List> copyList = new ArrayList>(); + List> forwardList = new ArrayList>(); + List> atList = new ArrayList>(); + String submitnodeid = ""; + if(subRequestid > 0){ + SubmitRequestRemarkUtil submitRequestRemarkUtil = new SubmitRequestRemarkUtil(); + copyList = submitRequestRemarkUtil.queryWorkflowCopyToByRequestid(subRequestid+"",userid); + forwardList = submitRequestRemarkUtil.queryWorkflowForwardByRequestid(subRequestid+"",userid); + atList = submitRequestRemarkUtil.queryWorkflowAtByRequestid(subRequestid+"",userid); + submitnodeid = submitRequestRemarkUtil.queryCurrentNodeIdByRequestid(subRequestid+""); + } + + baseBean.writeLog("copyList:"+copyList.size()); + baseBean.writeLog("forwardList:"+forwardList.size()); + baseBean.writeLog("atList:"+atList.size()); + + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + PAResponseEntity apidatas = operatePA.submitRequest(user,entity); + + baseBean.writeLog("submit request >> apidatas >> "+ JSON.toJSONString(apidatas)); + + JSONObject rjson = new JSONObject(); +// boolean flag = false; + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SUCCESS.getStatusCode()) + .fluentPut("msg","").toJSONString(); + /*if (apidatas.getCode().getStatusCode() == PAResponseCode.SUCCESS.getStatusCode()){ + try { + flag=true; + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SUCCESS.getStatusCode()) + .fluentPut("msg","").toJSONString(); + }catch (Exception e){ + baseBean.writeLog("error>> "+e.getMessage()); + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",e.getMessage()).toJSONString(); + } + } else { + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",apidatas.getErrMsg()).toJSONString(); + }*/ + baseBean.writeLog(">>> submit request end >>>" + rjson.toJSONString()); +// if (flag ){ + Integer requestid = entity.getRequestId(); + if (null != requestid){ + CompletableFuture.runAsync(()->{ + try { + String queryPrcUser = "select id, nodeid, isremark, preisremark, HANDLEFORWARDID, OPERATEDATE, OPERATETIME from workflow_currentoperator where REQUESTID =? and processUser =? and userid =? order by id desc"; + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery(queryPrcUser, requestid, userid, userid); + if (recordSet.next()){ + String nodeid = Util.null2String(recordSet.getString("nodeid")); + + String sql2 ="select id, USERID, processUser, isremark, preisremark from workflow_currentoperator where REQUESTID =? and NODEID =? and processUser =?"; + recordSet.executeQuery(sql2, requestid, nodeid, userid); + while (recordSet.next()){ + String id = Util.null2String(recordSet.getString("id")); + String isremark = Util.null2String(recordSet.getString("isremark")); + + if ("2".equals(isremark)){ + new CheckSendCardService().sendUpdateCardInfo(Integer.parseInt(id), ""); + } + } + } + }catch (Exception e){ + baseBean.writeLog("update opuser remark error>> "+e.getMessage()); + } + }); + } +// } + + baseBean.writeLog("getStatusCode:"+apidatas.getCode().getStatusCode()); + baseBean.writeLog("getStatusCode2:"+PAResponseCode.SUCCESS.getStatusCode()); + if(apidatas.getCode().getStatusCode() == PAResponseCode.SUCCESS.getStatusCode() ){ + + Map otherParams = requestParam.getOtherParams(); + String src = Util.null2String(otherParams.get("src")); + baseBean.writeLog("src:"+src); + if(src.equals("")){ + src = "submit"; + } + baseBean.writeLog("src2:"+src); + //若有代理则收回代理 + if(src.equals("submit")) { + baseBean.writeLog("subRequestid:"+subRequestid); + if(subRequestid > 0){ + + baseBean.writeLog("sendTodoDataByNode:"+subRequestid); + + SubmitRequestUtil submitRequestUtil = new SubmitRequestUtil(); + submitRequestUtil.sendTodoDataByNode(subRequestid+"",user,submitnodeid); + + baseBean.writeLog("operate3typeByList:"+subRequestid); + String notes = "流程对外接口提交"; + SubmitRequestRemarkUtil submitRequestRemarkUtil = new SubmitRequestRemarkUtil(); + submitRequestRemarkUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + } + } + } + return rjson; + } + + @POST + @Path("/rejectRequest") + @Produces(MediaType.TEXT_PLAIN) + public String rejectRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~rejectRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.rejectRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/rejectRequest2") + @Produces(MediaType.APPLICATION_JSON) + public JSONObject rejectRequest2(@Context HttpServletRequest request, @Context HttpServletResponse response) { + BaseBean baseBean = new BaseBean(); + String userid=Util.null2String(request.getHeader("weaver_userid")); + String usertoken=Util.null2String(request.getHeader("usertoken")); + String authtoken = new BaseBean().getPropValue("workflowTodoCard", "oaAuthKey"); + String usertype = Util.null2String(request.getHeader("weaver_usertype")); + String language = Util.null2String(request.getHeader("weaver_userlanguage")); + + baseBean.writeLog( "requestflow reject>>>>> userid = " + userid + " usertoken = " + usertoken); + if ("".equals(userid)){ + baseBean.writeLog("error>> "+"userid "); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少用户信息"); + } + if ("".equals(usertoken) || !authtoken.equals(usertoken)){ + baseBean.writeLog("error >> "+"user token error"); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少 usertoken"); + + } + + JSONObject rjson = new JSONObject(); + + User user = new CardUserInfoService().getUserById(Integer.parseInt(userid)); + user.setLogintype(usertype); + if (null != language && !"".equals(language)){ + user.setLanguage(Integer.parseInt(language)); + } + StringBuilder stringBuilder = new StringBuilder(); + try (BufferedReader bufferedReader = request.getReader()) { + String line; + while ((line = bufferedReader.readLine()) != null) { + stringBuilder.append(line); + } + }catch (Exception e){ + baseBean.writeLog("获取参数错误" +e.getMessage(), e); + } + + // 此时 stringBuilder.toString() 包含整个请求体的内容 + String requestBody = stringBuilder.toString(); + baseBean.writeLog("requestBody reject request 》》 "+requestBody); + ReqOperateRequestEntity entity = null; + try { + if (!"".equals(requestBody)){ + if (requestBody.startsWith("'") && requestBody.endsWith("'")){ + requestBody = requestBody.substring(1,requestBody.length()-1); + } + entity=JSON.parseObject(requestBody, ReqOperateRequestEntity.class); + } + }catch (Exception e){ + baseBean.writeLog("reject request : parse request body error>>" + e.getMessage()); + } + new BaseBean().writeLog("param entity 》》 "+JSON.toJSONString(entity)); + + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + PAResponseEntity apidatas = operatePA.rejectRequest(user,entity); + baseBean.writeLog("reject request >> apidatas >> "+ JSON.toJSONString(apidatas)); + + if (apidatas.getCode().getStatusCode() == PAResponseCode.SUCCESS.getStatusCode()){ + try { + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SUCCESS.getStatusCode()) + .fluentPut("msg","").toJSONString(); + }catch (Exception e){ + baseBean.writeLog("update reject card info is error>>" + e.getMessage()); + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",e.getMessage()).toJSONString(); + } + } else { + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",apidatas.getErrMsg()).toJSONString(); + } + baseBean.writeLog(">>> reject request end >>>" + rjson.toJSONString()); + return rjson; + } + + @POST + @Path("/forwardRequest") + @Produces(MediaType.TEXT_PLAIN) + public String forwardRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~forwardRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.forwardRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/saveRequestLog") + @Produces(MediaType.TEXT_PLAIN) + public String saveRequestLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~saveRequestLog接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.saveRequestLog(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/deleteRequest") + @Produces(MediaType.TEXT_PLAIN) + public String deleteRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~deleteRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.deleteRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/doForceDrawBack") + @Produces(MediaType.TEXT_PLAIN) + public String doForceDrawBack(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doForceDrawBack接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doForceDrawBack(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/doForceOver") + @Produces(MediaType.TEXT_PLAIN) + public String doForceOver(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doForceOver接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doForceOver(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 干预流程 + * @param request + * @param response + * @return + */ + @POST + @Path("/doIntervenor") + @Produces(MediaType.TEXT_PLAIN) + public String doIntervenor(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doIntervenor接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doIntervenor(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getRequestLog") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestLog接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(infoPA.getRequestLogs(user,RequestOperateBiz.request2Entity(request))); + } + + @GET + @Path("/getWorkflowRequest") + @Produces(MediaType.TEXT_PLAIN) + public String getWorkflowRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getWorkflowRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + int requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getWorkflowRequest(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getCreateWorkflowRequestInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getCreateWorkflowRequestInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getCreateWorkflowRequestInfo接口报文~~~~userId:"+(user==null?null:user.getUID())); + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + int workflowId = Util.getIntValue(request.getParameter("workflowId")); + Object apidatas = infoPA.getCreateWorkflowRequestInfo(user, workflowId, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getRequestStatus") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestStatus(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestStatus接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(infoPA.getRequestStatus(user,RequestOperateBiz.request2Entity(request))); + } + + private Map getOtherParms(HttpServletRequest request) { + Map otherParams = JSON.parseObject(request.getParameter("otherParams")); + if (otherParams == null) otherParams = new HashMap<>(); + return otherParams; + } + + @GET + @Path("/getNodeOperator") + @Produces(MediaType.TEXT_PLAIN) + public String getNodeOperator(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getNodeOperator接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(operatePA.getNodeOperator(user,RequestOperateBiz.request2Entity(request))); + } + + @GET + @Path("/getNodeMenu") + @Produces(MediaType.TEXT_PLAIN) + public String getHandleNodeMenu(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getNodeMenu接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(operatePA.getNodeMenu(user,RequestOperateBiz.request2Entity(request))); + } + + @GET + @Path("/getCanRejectNodes") + @Produces(MediaType.TEXT_PLAIN) + public String getCanRejectNodes(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getCanRejectNodes接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(operatePA.getCanRejectNodes(user,RequestOperateBiz.request2Entity(request))); + } +} diff --git a/src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java b/src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java new file mode 100755 index 00000000..a1f93835 --- /dev/null +++ b/src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java @@ -0,0 +1,253 @@ +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.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 weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; +import java.net.URLEncoder; + +/** + * @author + * @date 2024/10/28 + * 采购申请单 归档接口 + */ +public class RequestForceRecycle2PortalAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + BaseBean bb = new BaseBean(); + bb.writeLog("----RequestForceRecycle2PortalAction------"); + String requestid = requestInfo.getRequestid(); + + try{ + String resultCode = sendTodoDataByForceRecycle(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 sendTodoDataByForceRecycle(String 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.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 cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String terminal = "1" ; + String taskType = "0"; + try { + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + String currentNodeId = "" ; + String currentNodeName = "" ; + + String requestname = "" ; + String workflowname = "" ; + + String currentnodeid = "" ; + String currentnodetype = "" ; + + String createrLoginId = ""; + String createrLastName = ""; + String basesql =" 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("sendTodoDataByForceRecycle:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + currentnodetype = Util.null2String(rs.getString("currentnodetype")); + + requestname = Util.null2String(rs.getString("requestname")) ; + workflowname = Util.null2String(rs.getString("workflowname")) ; + currentNodeId = Util.null2String(rs.getString("nodeid")) ; + currentNodeName = Util.null2String(rs.getString("nodeName")) ; + + createrLoginId = Util.null2String(rs.getString("loginid")) ; + createrLastName = Util.null2String(rs.getString("lastname")) ; + } + + + 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("sendTodoDataByForceRecycle-currentnodeid:"+currentnodeid); + bb.writeLog("sendTodoDataByForceRecycle-currentnodetype:"+currentnodetype); + + if("3".equals(currentnodetype)){ + message += ",流程状态为归档"; + String actionType = "3" ; + try { + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + 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",currentNodeName); + requestObject.put("ticketType",workflowname); + + String auth = username + ":" + passwd; + bb.writeLog("sendTodoDataByForceRecycle-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceRecycle-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByForceRecycle:"+e); + } + }else{ + String actionType = "2"; + String objectAction = "0" ; + String objectType = "0"; + + + JSONObject requestObject = new JSONObject(); + + requestObject.put("creator",createrLoginId); + requestObject.put("center",center); + requestObject.put("title",requestname); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("nodeId",currentNodeId); + requestObject.put("taskType",taskType); + 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",currentNodeName); + requestObject.put("ticketType",workflowname); + + JSONArray taskObjectList = new JSONArray(); + String 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.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByForceRecycle--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); + } + + requestObject.put("actionType",actionType); + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceRecycle--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,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + +} diff --git a/src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java b/src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java new file mode 100644 index 00000000..e8b53ce8 --- /dev/null +++ b/src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java @@ -0,0 +1,802 @@ +package weaver.interfaces.dito.forceback; + +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.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 RequestForceBackUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + /*** + * 流程强制收回 + * @param requestid + */ + public String sendTodoDataByForceBack(String 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.forceback.RequestForceBackUtil.sendTodoDataByForceBack" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + RecordSet rs = new RecordSet(); + + String message = "流程页面强制收回操作"; + BaseBean bb = new BaseBean(); + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + 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"); + } + + 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("sendTodoDataByForceBack-currentNodeId:"+currentNodeId); + bb.writeLog("sendTodoDataByForceBack-currentnodetype:"+currentnodetype); + + if("3".equals(currentnodetype)){ + message += ",流程状态为归档"; + String actionType = "3" ; + 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("sendTodoDataByForceBack-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByForceBack:"+e); + } + }else{ + String actionType = "2"; + String objectAction = "0" ; + String objectType = "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("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 =" 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.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByForceBack--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); + } + + requestObject.put("actionType",actionType); + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack--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,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + public List> queryRequestRemark89ByForceBack(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestRemark89ByForceBack-requestid:"+requestid); + List> remark89List = new ArrayList>(); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String currentnodeid = ""; + String sql = " select currentnodeid from workflow_requestbase where requestid = "+requestid; + rs.executeQuery(sql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + + if(StringUtils.isNotBlank(currentnodeid)){ + 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.preisremark in (8,9)\n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryRequestRemarkAtByForceBack-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 = 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); + + remark89List.add(map); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkAtByForceBack-e:"+e); + } + + return remark89List; + } + + + public List> queryRequestAtByForceBack(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> atList = new ArrayList>(); + bb.writeLog("queryRequestRemarkAtByForceBack-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String currentnodeid = ""; + String sql = " select currentnodeid from workflow_requestbase where requestid = "+requestid; + rs.executeQuery(sql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + + if(StringUtils.isNotBlank(currentnodeid)){ + 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.preisremark in (18)\n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryRequestRemarkAtByForceBack-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); + atList.add(map); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkAtByForceBack-e:"+e); + } + + return atList; + } + + public List> queryRequestForwardByForceBack(String requestid){ + List> forwardList = new ArrayList>(); + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestRemarkAtByForceBack-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String currentnodeid = ""; + String sql = " select currentnodeid from workflow_requestbase where requestid = "+requestid; + rs.executeQuery(sql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + + if(StringUtils.isNotBlank(currentnodeid)){ + 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.preisremark = 1 \n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryRequestRemarkAtByForceBack-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 = 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); + forwardList.add(map); + } + } + + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkAtByForceBack-e:"+e); + } + return forwardList; + } + + /*** + * + * @param remarkList + * @param atList + */ + public void completeReamrkAtByForceBack(List> remarkList, List> atList,List> forwardList){ + + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("completeReamrkAtByForceBack--remark8List999:"+remarkList.size()); + if(remarkList.size() >0){ + String notes = "流程页面强制收回,完成抄送(需提交、不需提交)的数据"; + finishedReuqestRemarkByForceBack(remarkList,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completeReamrkAtByForceBack-e:"+e); + } + + try{ + bb.writeLog("completeReamrkAtByForceBack--atList999:"+atList.size()); + if(atList.size() >0){ + String notes = "流程页面强制收回,完成@的数据"; + finishedWorkflowAtByForceBack(atList,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completeReamrkAtByForceBack-e:"+e); + } + + + + try{ + bb.writeLog("completeReamrkAtByForceBack--forwardList000:"+forwardList.size()); + if(forwardList.size() >0){ + String notes = "流程页面强制收回,完成转发数据"; + finishedWorkflowForwardByForceBack(forwardList,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completeReamrkAtByForceBack-e:"+e); + } + } + + + public void finishedReuqestRemarkByForceBack(List> list,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")); + + bb.writeLog("finishedReuqestCopyToByForceBack-userid:"+userid); + bb.writeLog("finishedReuqestCopyToByForceBack-nodeid:"+nodeid); + bb.writeLog("finishedReuqestCopyToByForceBack-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + finishedRquestRemarkByRequest(requestid,userid,nodeid,workflowname,requestname,nodename,notes); + } + } + } + + + private void finishedRquestRemarkByRequest(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("finishedRquestRemarkByRequest-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.forceback.RequestForceBackUtil.finishedRquestRemarkByRequest" ; + + 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"); + } + + 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 ; + + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("finishedRquestRemarkByRequest:createrLoginId:"+createrLoginId); + + 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("finishedRquestRemarkByRequest-requestObject:"+requestObject.toJSONString()); + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("finishedRquestRemarkByRequest-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(); + } + } + + + + + public void finishedWorkflowAtByForceBack(List> list,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")); + + bb.writeLog("finishedWorkflowAtByForceBack-userid:"+userid); + bb.writeLog("finishedWorkflowAtByForceBack-nodeid:"+nodeid); + bb.writeLog("finishedWorkflowAtByForceBack-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + finishedRequestAtByRequest(requestid,userid,nodeid,workflowname,requestname,nodename,notes); + } + + } + } + + + /*** + * 完成@数据 + * @param requestid + * @param userid + * @param nodeid + * @param workflowname + * @param requestname + * @param nodename + */ + private void finishedRequestAtByRequest(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("finishedRequestAtByRequest-requestid:"+requestid); + + 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.forceback.RequestForceBackUtil.finishedRequestAtByRequest" ; + + 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"); + } + + 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 ; + + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("finishedRequestAtByRequest-createrLoginId:"+createrLoginId); + + 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("finishedRequestAtByRequest--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("finishedRequestAtByRequest-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(); + } + } + + + /** + * + * @param list + * @param notes + */ + public void finishedWorkflowForwardByForceBack(List> list,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")); + + bb.writeLog("finishedWorkflowForwardByForceBack-userid:"+userid); + bb.writeLog("finishedWorkflowForwardByForceBack-nodeid:"+nodeid); + bb.writeLog("finishedWorkflowForwardByForceBack-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + finishedRequestForwardByRequest(requestid,userid,nodeid,workflowname,requestname,nodename,notes); + } + + } + } + + + /*** + * 完成@数据 + * @param requestid + * @param userid + * @param nodeid + * @param workflowname + * @param requestname + * @param nodename + */ + private void finishedRequestForwardByRequest(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("finishedWorkflowForwardByForceBack-requestid:"+requestid); + + 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.forceback.RequestForceBackUtil.finishedRequestForwardByRequest" ; + + 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"); + } + + 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 ; + + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("finishedWorkflowForwardByForceBack-createrLoginId:"+createrLoginId); + + 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+"_zf_"+ userid); + + String auth = username + ":" + passwd; + bb.writeLog("finishedWorkflowForwardByForceBack--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("finishedWorkflowForwardByForceBack-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/monitor/SendPortalMonitorArchvingUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java index 6060c435..172a4eca 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java @@ -1,6 +1,5 @@ package weaver.interfaces.dito.monitor; -import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; @@ -13,6 +12,8 @@ import java.util.Map; public class SendPortalMonitorArchvingUtil { /*** + * 流程强制归档,查询流程的待办是数据 + * * * @param requestids * @return @@ -28,7 +29,6 @@ public class SendPortalMonitorArchvingUtil { " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid \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 in("+requestids+") "; @@ -54,6 +54,8 @@ public class SendPortalMonitorArchvingUtil { /** + * 流程强制归档,查询流程所有未完成的抄送数据 + * 流程强制收回,查询流程所有未完成的抄送数据 * * @param userList * @return @@ -75,7 +77,7 @@ public class SendPortalMonitorArchvingUtil { " 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.preisremark in (18)\n" + " and t.requestid in("+requestid +") and t.userid in("+current_userid+") " ; rs.executeQuery(sql); @@ -106,6 +108,9 @@ public class SendPortalMonitorArchvingUtil { /*** + * 流程强制归档,查询流程所有转发的数据 + * 流程强制收回,查询流程所有转发的数据 + * * * @param userList * @return @@ -159,6 +164,8 @@ public class SendPortalMonitorArchvingUtil { /*** + * 流程强制归档,查询流程所有@的数据 + * 流程强制收回,查询流程所有@的数据 * * @param userList * @return diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java index dcc151a1..55b3f0ee 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java @@ -21,6 +21,8 @@ import java.util.Map; public class SendPortalMonitorDeleteUtil { /** + * 流程监控删除,获取未完成的抄送需提交、抄送不需提交的数据 + * * * @param requestid */ @@ -68,6 +70,10 @@ public class SendPortalMonitorDeleteUtil { } /** + * 流程监控删除,完成流程所有未完成的抄送数据的门户调用 + * 流程监控强制归档,完成流程所有未完成的抄送数据的门户调用 + * 流程监控强制收回,完成流程所有未完成的抄送数据的门户调用 + * 点击流程抄送需提交的按钮,完成抄送流程的门户调用 * * @param list * @param loginid @@ -94,6 +100,8 @@ public class SendPortalMonitorDeleteUtil { } + + /*** * * @param requestid @@ -108,7 +116,7 @@ public class SendPortalMonitorDeleteUtil { private void monitorFinishedWorkflowCopyToByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ BaseBean bb = new BaseBean(); bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestid:"+requestid); - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowCopyToByUserid" ; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByUserid" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); @@ -126,15 +134,10 @@ public class SendPortalMonitorDeleteUtil { String terminal = "1" ; String taskType = "1"; //0 – 待办 1 –待阅 -// String objectAction = "0" ; -// String objectType = "0"; -// String objectId = "" ; + RecordSet rs = new RecordSet(); - JSONObject requestObject = new JSONObject(); try { - - String createdate = TimeUtil.getCurrentDateString(); - String createtime = TimeUtil.getCurrentTimeString(); + 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", ""); @@ -145,35 +148,36 @@ public class SendPortalMonitorDeleteUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - requestObject.put("center",center); + 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("monitorFinishedWorkflowCopyToByUserid:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("creator",loginid); - requestObject.put("taskCode", requestid+"_cs_"+userid); + 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",createdate+" "+createtime); + requestObject.put("createDate",processTime); requestObject.put("messageTitle",requestname); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodename); - requestObject.put("ticketType",workflowname); - -// JSONArray taskObjectList = new JSONArray(); -// 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",objectId); -// taskObject.put("operatorCode",operatorCode); -// taskObjectList.add(taskObject); -// requestObject.put("taskObjectList",taskObjectList); bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); @@ -187,6 +191,8 @@ public class SendPortalMonitorDeleteUtil { if("0".equals(resultCode)){ sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + // 抄送不需提交的话,处理本人、本节点所有OA中抄送不需提交的数据 +// updateCurrentOperatorRemark(requestid); }else{ String resultmsg = msgObject.getString("resultMsg"); sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); @@ -201,6 +207,8 @@ public class SendPortalMonitorDeleteUtil { /*** + * 流程监控删除,获取未完成的转发的数据 + * * * @param requestid */ @@ -252,6 +260,9 @@ public class SendPortalMonitorDeleteUtil { /*** + * 流程监控删除,完成流程所有转发数据的门户调用 + * 流程监控强制归档,完成流程所有转发数据的门户调用 + * 流程监控强制收回,完成流程所有转发数据的门户调用 * * @param list * @param loginid @@ -270,19 +281,18 @@ public class SendPortalMonitorDeleteUtil { String requestname = Util.null2String(dataMap.get("requestname")); String workflowname = Util.null2String(dataMap.get("workflowname")); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-requestid:"+requestid); if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ monitorFinishedWorkflowForwardByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); } - } } /*** - * + * 完成 转发 数据 * @param requestid * @param userid * @param nodeid @@ -295,12 +305,11 @@ public class SendPortalMonitorDeleteUtil { BaseBean bb = new BaseBean(); bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestid:"+requestid); -// String notes = "流程页面删除后,删除未读的转发数据"; - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowForwardByUserId" ; - String resultCode = "" ; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil.monitorFinishedWorkflowForwardByUserId" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + RecordSet rs = new RecordSet(); 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"); @@ -313,34 +322,10 @@ public class SendPortalMonitorDeleteUtil { String actionType = "3" ; String terminal = "1" ; String taskType = "1"; //0 – 待办 1 –待阅 - String objectAction = "0" ; - String objectType = "0"; - String objectId = "" ; - String nextNodeUserIds = ""; - JSONObject requestObject = new JSONObject(); try { - String createdate = TimeUtil.getCurrentDateString(); - String createtime = TimeUtil.getCurrentTimeString(); - -// String workcode = ""; -// if(StringUtils.isNotBlank(forwardNodeUserId)){ -// String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + forwardNodeUserId + "'"; -// rs.executeQuery(sql); -// while (rs.next()) { -// workcode = Util.null2String(rs.getString("loginid")); -// } -// } -// bb.writeLog("monitorFinishedWorkflowForwardByUserId-workcode:"+workcode); -// String forwardNodeName = "" ; -// if(StringUtils.isNotBlank(forwardNodeId)){ -// rs.executeQuery(" select nodename from workflow_nodebase where id = ?",forwardNodeId); -// if (rs.next()){ -// forwardNodeName = Util.null2String(rs.getString("nodename")); -// } -// } -// bb.writeLog("monitorFinishedWorkflowForwardByUserId-forwardNodeName:"+forwardNodeName); + 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", ""); @@ -352,35 +337,36 @@ public class SendPortalMonitorDeleteUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - requestObject.put("center",center); + 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("monitorFinishedWorkflowForwardByUserId:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("creator",workcode); - requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); + 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",createdate+" "+createtime); + requestObject.put("createDate",processTime); requestObject.put("messageTitle",requestname); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodename); - requestObject.put("ticketType",workflowname); - -// JSONArray taskObjectList = new JSONArray(); -// JSONObject taskObject = new JSONObject(); -// String objectCode = workcode ; -// String operatorCode = workcode ; -// taskObject.put("objectAction",objectAction); -// taskObject.put("objectType",objectType); -// taskObject.put("objectCode",objectCode); -// taskObject.put("objectId",objectId); -// taskObject.put("operatorCode",operatorCode); -// taskObjectList.add(taskObject); -// requestObject.put("taskObjectList",taskObjectList); -// bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestObject:"+requestObject.toJSONString()); String auth = username + ":" + passwd; String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); @@ -388,14 +374,13 @@ public class SendPortalMonitorDeleteUtil { if(StringUtils.isNotEmpty(msgdata)){ JSONObject msgObject = JSONObject.parseObject(msgdata); if(msgObject.containsKey("resultCode")){ - resultCode = msgObject.getString("resultCode"); + String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,notes); + 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,nextNodeUserIds,notes); - + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } @@ -406,7 +391,10 @@ public class SendPortalMonitorDeleteUtil { /*** - * @ + * 流程监控删除,获取未完成的@数据 + * + * + * * @param requestid */ public List> queryWorkflowAtByRequestid(String requestid) { @@ -450,15 +438,21 @@ public class SendPortalMonitorDeleteUtil { map.put("lcid",lcid); list.add(map); } - bb.writeLog("queryWorkflowAtByRequestid-list:" + list.size()); } - return list; } - + /*** + * 流程监控删除,完成流程所有@数据的门户调用 + * 流程监控强制归档,完成流程所有@数据的门户调用 + * 流程监控强制收回,完成流程所有@数据的门户调用 + * + * @param list + * @param loginid + * @param notes + */ public void monitorFinishedWorkflowAtByRequestid(List> list,String loginid,String notes){ BaseBean bb = new BaseBean(); @@ -473,18 +467,19 @@ public class SendPortalMonitorDeleteUtil { String requestname = Util.null2String(dataMap.get("requestname")); String workflowname = Util.null2String(dataMap.get("workflowname")); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-requestid:"+requestid); if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ monitorFinishedWorkflowAtByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); } + } } /*** - * + * 完成@数据 * @param requestid * @param userid * @param nodeid @@ -496,6 +491,7 @@ public class SendPortalMonitorDeleteUtil { private void monitorFinishedWorkflowAtByUserId(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); bb.writeLog("monitorFinishedWorkflowAtByUserId-requestid:"+requestid); // String notes = "流程监控删除后,删除未读的@数据"; @@ -507,7 +503,7 @@ public class SendPortalMonitorDeleteUtil { String center = Constants.center; String bpm_app_requesturl = Constants.bpm_app_requesturl; - String zhjkbs = "com.customization.dito.sendtodo.SendPortalWithDeleteUtil.completeRequestAtToReadData" ; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByUserId" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); @@ -521,6 +517,7 @@ public class SendPortalMonitorDeleteUtil { 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; @@ -530,44 +527,144 @@ public class SendPortalMonitorDeleteUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } + 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("monitorFinishedWorkflowAtByUserId:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("createrLoginId:"+createrLoginId); + + 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("title", requestname); requestObject.put("taskType", taskType); requestObject.put("actionType", actionType); requestObject.put("createDate", processTime); requestObject.put("messageTitle",requestname); - requestObject.put("messageContent", requestname); requestObject.put("terminal", terminal); requestObject.put("urlPc", urlPc); requestObject.put("urlDing", urlDing); - requestObject.put("ticketType", workflowname); - requestObject.put("creator",loginid); requestObject.put("urlApp",urlApp); - requestObject.put("nodeName",nodename); - requestObject.put("nodeId",nodeid); requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid); String auth = username + ":" + passwd; - bb.writeLog("completeRequestAtToReadData--requestObject:" + requestObject.toJSONString()); + bb.writeLog("monitorFinishedWorkflowAtByUserId--requestObject:" + requestObject.toJSONString()); String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); - bb.writeLog("completeRequestAtToReadData-msgdata:" + msgdata); + 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); + + // updateCurrentOperatorAt(requestid); + }else{ String resultmsg = msgObject.getString("resultMsg"); sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); } } } - } catch (Exception e) { e.printStackTrace(); } } + + /*** + * + * @param requestid + */ + public void updateCurrentOperatorAt(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorAt-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (18) "; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + + public void updateCurrentOperatorRemark(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorRemark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (8) "; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + + /** + * 流程打开页面后,更新当前用户未完成的@的状态为2 + * @param requestid + * @param nodeid + * @param userid + */ + public void updateCurrentOperatorAtByNode(String requestid,String nodeid,String userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorremark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (18) and nodeid = "+nodeid +" and userid="+userid; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + /** + * 流程打开页面后,更新当前用户抄送不需要提交的抄送的状态为2 + * @param requestid + * @param nodeid + * @param userid + */ + public void updateCurrentOperatorRemarkByNode(String requestid,String nodeid,String userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorRemark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (8) and nodeid = "+nodeid +" and userid="+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/monitor/SendPortalMonitorRepossessedUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorRepossessedUtil.java new file mode 100644 index 00000000..c65bca7c --- /dev/null +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorRepossessedUtil.java @@ -0,0 +1,209 @@ +package weaver.interfaces.dito.monitor; + +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SendPortalMonitorRepossessedUtil { + + + /** + * 流程强制收回,查询流程所有未完成的抄送数据 + * + * @return + */ + public List> queryWorkflowRemark89ByArchving(String requestids){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> list = new ArrayList>(); + String[] requestidArray = 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 = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowRemark89ByArchving-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 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("queryWorkflowRemark89ByArchving-list:"+list.size()); + return list; + } + + + public void monitorRequestRemark89ByArchving(List> list,String loginid,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-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("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + monitorRequestRemark89ByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + } + } + + + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + */ + private void monitorRequestRemark89ByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorRequestRemark89ByUserid-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorRepossessedUtil.monitorRequestRemark89ByUserid" ; + + 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"); + } + + 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("monitorRequestRemark89ByUserid:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + 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("monitorRequestRemark89ByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorRequestRemark89ByUserid-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); + + // 抄送不需提交的话,处理本人、本节点所有OA中抄送不需提交的数据 +// updateCurrentOperatorRemark(requestid); + }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/monitor/SendPortalMonitorUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java index 3d5bbdd1..982434f5 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java @@ -2,7 +2,7 @@ package weaver.interfaces.dito.monitor; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import weaver.general.TimeUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.HttpRequestUtil; import com.customization.dito.sendtodo.SendPortalErrorUtil; @@ -16,9 +16,7 @@ import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /*** @@ -26,8 +24,9 @@ import java.util.Map; */ public class SendPortalMonitorUtil { + RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); /*** - * 流程删除 + * 流程监控,完成流程删除的门户接口的调用 * @param requestids * @param userid */ @@ -45,7 +44,7 @@ public class SendPortalMonitorUtil { } /*** - * 流程删除 + * 流程监控,完成流程删除的门户接口的调用 * @param requestid * @param userid */ @@ -65,16 +64,13 @@ public class SendPortalMonitorUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorDelete4Requestid:"+requestid); + bb.writeLog("monitorDelete4Requestid:"+requestid); String terminal = "1" ; String taskType = "0"; String actionType = "3" ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - try { String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -87,42 +83,32 @@ public class SendPortalMonitorUtil { } bb.writeLog("monitorDelete4Requestid-urlDing", urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorDelete4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } + 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"); - requestObject.put("center",center); + 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("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("monitorDelete4Requestid---requestObject:"+requestObject.toJSONString()); @@ -136,10 +122,10 @@ public class SendPortalMonitorUtil { String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } @@ -149,114 +135,6 @@ public class SendPortalMonitorUtil { } - /*** - * 删除失败后,延迟second秒后,再流程删除 - * @param requestid - * @param second - */ -// public void againMonitorDelete(String requestid,String userid,int second){ -// String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.againMonitorDelete" ; -// -// 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; -// -// try { -// if(second > 0){ -// Thread.sleep(second); -// } -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// -// SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); -// HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); -// String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); -// JSONObject requestObject = new JSONObject(); -// RecordSet rs = new RecordSet(); -// BaseBean bb = new BaseBean(); -// bb.writeLog("SendPortalMonitorUtil--againMonitorDelete"); -// String terminal = "1" ; -// String taskType = "0"; -// 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"); -// } -// bb.writeLog("againMonitorDelete-urlDing", urlDing); -// -// String requestname = "" ; -// String workflowname = "" ; -// String nodeId = "" ; -// String nodeName = "" ; -// String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + -// " from workflow_requestbase t1\n" + -// " inner join workflow_base t3 on t1.workflowid = t3.id\n" + -// " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ -// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and t1.requestid = "+requestid ; -// -// bb.writeLog("againMonitorDelete--sql2:"+sql); -// -// rs.executeQuery(sql); -// if (rs.next()){ -// requestname = Util.null2String(rs.getString("requestname")) ; -// workflowname = Util.null2String(rs.getString("workflowname")) ; -// nodeId = Util.null2String(rs.getString("nodeid")) ; -// nodeName = Util.null2String(rs.getString("nodeName")) ; -// } -// -// requestObject.put("center",center); -// requestObject.put("title",requestname); -// requestObject.put("taskCode","weaver"+requestid); -// requestObject.put("nodeId",nodeId); -// requestObject.put("taskType",taskType); -// requestObject.put("actionType",actionType); -// requestObject.put("createDate",processTime); -// requestObject.put("messageTitle",getShortMessageTitle(requestname)); -// requestObject.put("messageContent",requestname); -// requestObject.put("terminal",terminal); -// requestObject.put("urlPc",urlPc); -// requestObject.put("urlApp",urlApp); -// requestObject.put("urlDing",urlDing); -// requestObject.put("nodeName",nodeName); -// requestObject.put("ticketType",workflowname); -// -// String auth = username + ":" + passwd; -// bb.writeLog("againMonitorDelete---requestObject:"+requestObject.toJSONString()); -// String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); -// bb.writeLog("againMonitorDelete-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.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,""); -// }else{ -// String resultmsg = msgObject.getString("resultMsg"); -// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); -// } -// } -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } - /*** * 流程强制归档 */ @@ -270,12 +148,12 @@ public class SendPortalMonitorUtil { * @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 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1','5','7','11')) \n" + -// " and t2.islasttimes = 1\n" + -// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + -// " and t2.requestid = "+requestid ; -// -// bb.writeLog("monitorArchivedByTodo--countSql:"+countSql); -// rs.executeQuery(countSql); -// while (rs.next()){ -// count++; -// } -// bb.writeLog("monitorArchivedByTodo--count:"+count); -// if(count >0){ - - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorArchivedByTodo4Requestid--sql2:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - } - 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",currentNodeName); - requestObject.put("ticketType",workflowname); + 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(); -// sql = " select t2.userid,h1.loginid,h1.lastname,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 = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1','5','7','11')) \n" + -// " and t2.islasttimes = 1 \n" + -// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + -// " and t2.requestid = "+requestid ; -// -// rs.executeQuery(sql); -// while (rs.next()) { -// String creator = rs.getString("loginid"); -// String staffid = rs.getString("staffid"); -// bb.writeLog("monitorArchived:"+requestid+" creator:"+creator); -// if ("sysadmin".equals(creator)) { -// creator = "Admin"; -// } -// -// JSONObject taskObject = new JSONObject(); -// taskObject.put("objectAction", "0"); -// taskObject.put("objectType", "0"); -// taskObject.put("objectCode", creator); -// taskObject.put("objectId", staffid); -// taskObject.put("operatorCode", creator); -// taskObjectList.add(taskObject); -// } -// requestObject.put("taskObjectList",taskObjectList); + 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); - String auth = username + ":" + passwd; - bb.writeLog("monitorArchivedByTodo4Requestid---requestObject:"+requestObject.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + 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 (!"".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,""); - } + 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(); } @@ -479,7 +292,7 @@ public class SendPortalMonitorUtil { RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorArchivedByToRead4Rquestid"); + bb.writeLog("monitorArchivedByToRead4Rquestid"); String terminal = "1" ; String taskType = "1"; String actionType = "0" ; @@ -501,40 +314,26 @@ public class SendPortalMonitorUtil { urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - bb.writeLog("monitorArchivedByToRead4Rquestid-urlDing", urlDing); - - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String currentnodetype = "" ; - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,t1.currentnodetype \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorArchivedByToRead4Rquestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; - } + + 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(); - 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 where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.id \n" ; + 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()) { @@ -542,10 +341,6 @@ public class SendPortalMonitorUtil { String staffid = rs.getString("staffid"); String userid = rs.getString("userid"); - bb.writeLog("monitorArchivedByToRead4Rquestid:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("staffid", staffid); taskObject.put("creator",creator); @@ -561,21 +356,24 @@ public class SendPortalMonitorUtil { String creator = dataObject.getString("creator"); JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode", requestid+"_cs_"+userid); + 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",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",currentNodeName); - requestObject.put("ticketType",workflowname); + JSONObject taskObject = new JSONObject(); String objectCode = creator ; @@ -652,10 +450,8 @@ public class SendPortalMonitorUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorPossessed4Requestid"); String terminal = "1" ; String taskType = "0"; String actionType = "2" ; @@ -682,90 +478,56 @@ public class SendPortalMonitorUtil { } bb.writeLog("monitorPossessed4Requestid-urlDing", urlDing); - int count = 0 ; - String countSql=" select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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("monitorArchived--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid); bb.writeLog("monitorPossessed4Requestid--count:"+count); if(count >0){ - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; + 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 sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; + JSONObject requestObject = new JSONObject(); - bb.writeLog("monitorPossessed4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - } + 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("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",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,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 = '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 ; + String sql =" select t2.userid,h1.loginid,h1.lastname,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.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid ; rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 String creator = rs.getString("loginid"); String staffid = rs.getString("staffid"); - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; - - bb.writeLog("monitorPossessed4Requestid:"+requestid+" creator:"+creator); - - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("objectAction", objectAction); @@ -831,12 +593,14 @@ public class SendPortalMonitorUtil { 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()); } } @@ -859,7 +623,11 @@ public class SendPortalMonitorUtil { monitorInterventionByUserId(requestid,currentUserId); } - + /*** + * 流程干预 + * @param requestid + * @param currentUserId + */ public void monitorInterventionByUserId(String requestid,String currentUserId){ String portal_todourl = Constants.portal_todourl; @@ -875,7 +643,7 @@ public class SendPortalMonitorUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); + RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); bb.writeLog("SendPortalMonitorUtil--monitorIntervention"); @@ -883,9 +651,6 @@ public class SendPortalMonitorUtil { String taskType = "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 ; @@ -899,48 +664,37 @@ public class SendPortalMonitorUtil { } bb.writeLog("monitorIntervention-urlDing", urlDing); - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String currentNodeType = "" ; - - - String sql =" select t1.requestname,t1.currentnodeid,d1.nodename,t3.workflowname,t1.currentnodetype \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorIntervention--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("currentnodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - currentNodeType = Util.null2String(rs.getString("currentNodeType")) ; - } + 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)){ + if("3".equals(currentnodetype)){ String actionType = "3" ; - requestObject.put("center",center); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("monitorIntervention---requestObject:"+requestObject.toJSONString()); @@ -962,70 +716,43 @@ public class SendPortalMonitorUtil { String actionType = "2" ; String nextNodeUserIds = ""; - int count = 0 ; - String countSql = " select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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("monitorIntervention--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid) ; + bb.writeLog("monitorIntervention--count:"+count); if(count >0){ - requestObject.put("center",center); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,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 = '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 ; - + String sql = requestBaseInfoUtil.getTodoSql(requestid); rs.executeQuery(sql); while (rs.next()) { - String creator = rs.getString("loginid"); + String loginid = rs.getString("loginid"); String staffid = rs.getString("staffid") ; - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; - bb.writeLog("monitorIntervention:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("objectAction", "0"); taskObject.put("objectType", "0"); - taskObject.put("objectCode", creator); + taskObject.put("objectCode", loginid); taskObject.put("objectId", staffid); - taskObject.put("operatorCode", creator); + taskObject.put("operatorCode", loginid); taskObjectList.add(taskObject); } requestObject.put("taskObjectList",taskObjectList); diff --git a/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java b/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java index bc2ede51..dd32df51 100644 --- a/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java +++ b/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java @@ -22,6 +22,10 @@ public class HrmRocketmqRunnable implements Runnable { private String cus_eid; private JSONObject datasObject; + private String modedatacreatedate; + + private String modedatacreatetime; + public HrmRocketmqRunnable(String personno, String managerno, String personid, String managerid, String cus_eid, JSONObject datasObject) { this.personno = personno.trim(); this.managerno = managerno; @@ -29,6 +33,9 @@ public class HrmRocketmqRunnable implements Runnable { this.managerid = managerid; this.cus_eid = cus_eid; this.datasObject = datasObject; + this.modedatacreatedate = modedatacreatedate; + this.modedatacreatetime = modedatacreatetime; + } @Override @@ -118,7 +125,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("zxyj", sql); dataMap.put("zxcs", HrmRocketmqUtil.convertObject2String(objects)); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } else { if (StringUtils.isNotBlank(personid) && StringUtils.isBlank(managerid)) { @@ -150,7 +157,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("zxyj", sql); dataMap.put("zxcs", managerid + "," + personid); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } else if (StringUtils.isBlank(personid) && StringUtils.isNotBlank(managerid)) { @@ -161,7 +168,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("systable", "cus_fielddata"); dataMap.put("errmessage", "入参参数personno未空在cus_fielddata查询为空"); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } else if (StringUtils.isBlank(personid) && StringUtils.isBlank(managerid)) { Map dataMap = new HashMap(); @@ -171,7 +178,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("systable", "cus_fielddata"); dataMap.put("errmessage", "入参参数personno、managerno未空在cus_fielddata查询为空"); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } } diff --git a/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java b/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java index e3410923..dc669e03 100644 --- a/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java +++ b/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java @@ -12,10 +12,7 @@ import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.dito.comInfo.PropBean; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -34,16 +31,25 @@ public class HrmRocketmqUtil { String cus_eid = PropBean.getUfPropValue("cus_eid") ; + SimpleDateFormat modesdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 + SimpleDateFormat modesdf2 = new SimpleDateFormat("HH:mm:ss"); + String modedatacreatedate = modesdf1.format(new Date()); + String modedatacreatetime = modesdf2.format(new Date()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String nowDateTime = sdf.format(new Date()); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + String nowDate = sdf2.format(new Date()); JSONObject jsonObject = JSONObject.parseObject(data); bb.writeLog("updateOrgData---jsonObject:"+jsonObject.toJSONString()); + if(jsonObject.containsKey("masterInfo")) { JSONObject masterInfoObject = jsonObject.getJSONObject("masterInfo"); bb.writeLog("updateOrgData---masterInfoObject:"+masterInfoObject.toJSONString()); if(masterInfoObject.containsKey("datas")){ + List> notEffList = new ArrayList>(); JSONArray datasArray = masterInfoObject.getJSONArray("datas"); for(int i=0;i dataMap = new HashMap(); + if((startdate.compareTo(nowDate) <=0 && enddate.compareTo(nowDate) >=0) || (startdate.compareTo(nowDate) <=0 && StringUtils.isBlank(enddate))){ - String sql = " update hrmresource set managerid = ? where id = ? "; + Map dataMap = new HashMap(); + String sql = " update hrmresource set managerid = ? where id = ? "; + Object[] objects = new Object[]{managerid,personid} ; + boolean flag = rs.executeUpdate(sql,objects); + bb.writeLog("flag:"+flag); + if(flag){ + dataMap.put("errmessage","人员更新SQL执行成功"); + dataMap.put("zxjg","true"); - Object[] objects = new Object[]{managerid,personid} ; + ResourceComInfo resComInfo; + try { + resComInfo = new ResourceComInfo(); + resComInfo.removeResourceCache(); + } catch (Exception e) { + bb.writeLog(e); + } + }else{ + errcount++; + dataMap.put("errmessage","人员更新SQL执行错误,managerid:"+managerid+"、personid:"+personid); + dataMap.put("zxjg","false"); + } - boolean flag = rs.executeUpdate(sql,objects); - bb.writeLog("flag:"+flag); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("reqobject",datasObject.toJSONString()); + dataMap.put("systable","hrmresource"); + dataMap.put("zxyj",sql); + dataMap.put("zxcs",convertObject2String(objects)); + dataMap.put("personno",personno); + dataMap.put("errmessage","当前日期:"+nowDate+"在:"+startdate+"-"+enddate+"范围内 "); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); - if(!flag){ - errcount++; - dataMap.put("errmessage","人员更新SQL执行错误,managerid:"+managerid+"、personid:"+personid); - dataMap.put("zxjg","false"); }else{ - dataMap.put("errmessage","人员更新SQL执行成功"); - dataMap.put("zxjg","true"); + + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("reqobject",datasObject.toJSONString()); + dataMap.put("systable","hrmresource"); + dataMap.put("errmessage","当前日期:"+nowDate+"不在:"+startdate+"-"+enddate+"范围内,写入建模表"); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); + } - dataMap.put("syndate",nowDateTime); - dataMap.put("reqmessage",jsonObject.toJSONString()); - dataMap.put("reqobject",datasObject.toJSONString()); - dataMap.put("systable","hrmresource"); - dataMap.put("zxyj",sql); - dataMap.put("zxcs",convertObject2String(objects)); - dataMap.put("personno",personno); - recordErrorData(dataMap); + Map notEffMap = new HashMap(); + notEffMap.put("personno",personno); + notEffMap.put("managerno",managerno); + notEffMap.put("startdate",startdate); + notEffMap.put("enddate",enddate); + notEffMap.put("personid",personid); + notEffMap.put("managerid",managerid); + notEffList.add(notEffMap); + }else{ if(StringUtils.isNotBlank(personid) && StringUtils.isBlank(managerid)){ Map dataMap = new HashMap(); - String sql = " update hrmresource set managerid = null where id = "+personid; boolean flag = rs.executeUpdate(sql); bb.writeLog("flag:"+flag); @@ -133,7 +164,7 @@ public class HrmRocketmqUtil { dataMap.put("zxyj",sql); dataMap.put("zxcs",managerid+","+personid); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); }else if(StringUtils.isBlank(personid) && StringUtils.isNotBlank(managerid)){ @@ -144,7 +175,7 @@ public class HrmRocketmqUtil { dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数personno未空在cus_fielddata查询为空"); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); updateManagerByRunner(personno,managerno,personid,managerid,cus_eid,datasObject); @@ -156,7 +187,7 @@ public class HrmRocketmqUtil { dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数personno、managerno未空在cus_fielddata查询为空"); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); updateManagerByRunner(personno,managerno,personid,managerid,cus_eid,datasObject); } @@ -168,9 +199,10 @@ public class HrmRocketmqUtil { dataMap.put("reqmessage",jsonObject.toJSONString()); dataMap.put("reqobject",datasObject.toJSONString()); dataMap.put("systable","hrmresource"); - dataMap.put("errmessage","入参参数personno、managerno未空"); - recordErrorData(dataMap); + dataMap.put("errmessage","入参参数personno、managerno为空"); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } + }else{ Map dataMap = new HashMap(); @@ -180,17 +212,12 @@ public class HrmRocketmqUtil { dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数status不为1"); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } } - ResourceComInfo resComInfo; - try { - resComInfo = new ResourceComInfo(); - resComInfo.removeResourceCache(); - } catch (Exception e) { - bb.writeLog(e); - } + recordNotEffectiveData(notEffList,modedatacreatedate,modedatacreatetime); + }else{ Map dataMap = new HashMap(); @@ -198,8 +225,7 @@ public class HrmRocketmqUtil { dataMap.put("reqmessage",jsonObject.toJSONString()); dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数缺少datas"); - recordErrorData(dataMap); - + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } }else{ @@ -208,8 +234,7 @@ public class HrmRocketmqUtil { dataMap.put("reqmessage",jsonObject.toJSONString()); dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数缺少masterInfo"); - recordErrorData(dataMap); - + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } }catch (Exception e){ bb.writeLog("e:"+e); @@ -219,23 +244,25 @@ public class HrmRocketmqUtil { return errcount; } + + public void updateHrmResourceManager(){ + + } /*** * */ - public void recordErrorData(Map dataMap){ + public void recordErrorData(Map dataMap,String modedatacreatedate,String modedatacreatetime){ String uftable = "uf_managermq" ; RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); ModeRightInfo mode=new ModeRightInfo(); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 - SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss"); + int formmodeid = 0 ; String modedatacreater = "1" ; String modedatacreatertype = "0" ; - String modedatacreatedate = sdf1.format(new Date()); - String modedatacreatetime = sdf2.format(new Date()); + String uuid = UUID.randomUUID().toString(); try { @@ -365,5 +392,89 @@ public class HrmRocketmqUtil { return managerid ; } + /** + * + * @param notEffList + * @param modedatacreatedate + * @param modedatacreatetime + * @return + */ + public String recordNotEffectiveData(List> notEffList,String modedatacreatedate,String modedatacreatetime){ + String dataid = ""; + String uftable = "uf_managerunenforced" ; + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + ModeRightInfo mode=new ModeRightInfo(); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 + SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss"); + + int formmodeid = 0 ; + String modedatacreater = "1" ; + String modedatacreatertype = "0" ; + String uuid = UUID.randomUUID().toString(); + + try { + + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = ? " ; + rs.executeQuery(sql,new Object[]{uftable}); + if(rs.next()){ + formmodeid = Util.getIntValue(Util.null2String(rs.getString("id"))); + } + + String userids = ""; + for(int i=0;i notEffMap = notEffList.get(i); + String personid = Util.null2String(notEffMap.get("personid")); + if(StringUtils.isNotEmpty(personid)){ + userids += StringUtils.isBlank(userids) ? personid : ","+personid ; + } + } + bb.writeLog(" recordNotEffectiveData-userids:"+userids); + + if(StringUtils.isNotEmpty(userids)){ + sql = " update "+uftable+" set sfsx = 1 where personid in("+userids+") "; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog(sql+" isTrue:"+isTrue); + } + + for(int i=0;i dataMap = notEffList.get(i); + String personno = Util.null2String(dataMap.get("personno")); + String managerno = Util.null2String(dataMap.get("managerno")); + String startdate = Util.null2String(dataMap.get("startdate")); + String enddate = Util.null2String(dataMap.get("enddate")); + String personid = Util.null2String(dataMap.get("personid")); + String managerid = Util.null2String(dataMap.get("managerid")); + bb.writeLog("personid:"+personid+" managerid:"+managerid); + + int bool = 0; + if(StringUtils.isNotEmpty(enddate)){ + sql =" insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,enddate,personid,managerid,sfsx,sfgx)" + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)" ; + boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,enddate,personid,managerid,"0","0"}); + bb.writeLog("sql1;"+sql); + if(flag){ + bool++; + } + }else{ + sql =" insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,personid,managerid,sfsx,sfgx)" + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?)" ; + boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,personid,managerid,"0","0"}); + bb.writeLog("sql2;"+sql); + if(flag){ + bool++; + } + } + bb.writeLog("bool;"+bool); + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + + return dataid; + } + } diff --git a/src/weaver/interfaces/dito/mq/RocketmqUtil.java b/src/weaver/interfaces/dito/mq/RocketmqUtil.java index e94b399a..25411dff 100644 --- a/src/weaver/interfaces/dito/mq/RocketmqUtil.java +++ b/src/weaver/interfaces/dito/mq/RocketmqUtil.java @@ -62,7 +62,7 @@ public class RocketmqUtil { if("organization".equals(tableName)){ updasteSysOrgData(jsonArray,tableName); }else if("system_user".equals(tableName)){ -// updateSysUserData(jsonArray,tableName); + updateSysUserData(jsonArray,tableName); }else if("system_roles".equals(tableName)){ updasteSysRoleData(jsonArray,tableName); }else if("system_post".equals(tableName)){ @@ -653,7 +653,7 @@ public class RocketmqUtil { // "updateStaff":"1"}],"tableName":"system_user_role","primaryKey":"sysUserRoleId"}],"key":"svcCont"} /*** - * + * 按sysUserId来判断 * @param jsonArray */ public void updateSystemUserRoleData(JSONArray jsonArray, String tableName) { @@ -931,7 +931,7 @@ public class RocketmqUtil { // "primaryKey":"sysUserPostId"}],"key":"svcCont"} /*** - * + * 改成 sysUserId * @param jsonArray */ public void updateSystemUserPostData(JSONArray jsonArray, String tableName) { @@ -1696,6 +1696,11 @@ public class RocketmqUtil { // "staffName":"fanweiceshi12","actType":"A","sysUserId":20102,"partyId":"-1","staffId":"22061", // "createDate":"2022-08-09 09:47:54","updateStaff":"1"}],"tableName":"staff","primaryKey":"staffId"}],"key":"svcCont"} + /** + * 按staffid为唯一标识 outkey + * @param jsonArray + * @param tableName + */ public void updateStaffData(JSONArray jsonArray, String tableName){ RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); @@ -1740,7 +1745,7 @@ public class RocketmqUtil { String orgCode = Util.null2String(jsonObject.get("orgCode")); String staffName = Util.null2String(jsonObject.get("staffName")); - String staffCode = Util.null2String(jsonObject.get("staffCode")); + String staffCode = Util.null2String(jsonObject.get("staffCode")).trim(); bb.writeLog("staffCode:"+staffCode); String actType = Util.null2String(jsonObject.get("actType")); String email = "" ; diff --git a/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java b/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java index cf4e9738..1d9235b1 100644 --- a/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java +++ b/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java @@ -2,6 +2,7 @@ package weaver.interfaces.dito.overtime; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.HttpRequestUtil; @@ -12,12 +13,14 @@ import weaver.general.BaseBean; import weaver.general.Util; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; +import java.util.Map; /*** * */ public class SendPortalOverTimeSubmitUtil { + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); public void sendOverTimeSubmit(String requestid,String userids){ BaseBean bb = new BaseBean(); bb.writeLog("SendPortalOverTimeSubmitUtil"); @@ -49,7 +52,6 @@ public class SendPortalOverTimeSubmitUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); bb.writeLog("SendPortalOverTimeSubmitUtil--sendOverTimeSubmitBytoDo"); String terminal = "1" ; String taskType = "0"; @@ -58,9 +60,6 @@ public class SendPortalOverTimeSubmitUtil { String currentUserId= "1"; 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 ; @@ -74,48 +73,29 @@ public class SendPortalOverTimeSubmitUtil { } bb.writeLog("monitorArchived-urlDing", urlDing); - int count = 0 ; - String countSql=" select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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 ; + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid); - bb.writeLog("sendOverTimeSubmitBytoDo--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + 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"); message +=",待办数量为"+count ; bb.writeLog("sendOverTimeSubmitBytoDo--count:"+count); if(count >0){ - String actionType = "2" ; - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendOverTimeSubmitBytoDo--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - } + 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("title",requestname); @@ -135,29 +115,14 @@ public class SendPortalOverTimeSubmitUtil { JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,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 = '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 ; - + String sql = requestBaseInfoUtil.getTodoSql(requestid); + bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 String creator = rs.getString("loginid"); String staffid = rs.getString("staffid"); - bb.writeLog("sendOverTimeSubmitBytoDo:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } - JSONObject taskObject = new JSONObject(); taskObject.put("objectAction",objectAction); taskObject.put("objectType", objectType); @@ -208,42 +173,24 @@ public class SendPortalOverTimeSubmitUtil { message += ",执行actionType=3" ; String actionType = "3" ; - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorDelete4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } + 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("title",requestname); requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("sendTodoDataByNode-3-requestObject:"+requestObject.toJSONString()); @@ -258,15 +205,13 @@ public class SendPortalOverTimeSubmitUtil { if(msgObject.containsKey("resultCode")){ String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); } } } - }else{ - } } } catch (Exception e) { @@ -322,43 +267,27 @@ public class SendPortalOverTimeSubmitUtil { } bb.writeLog("sendOverTimeSubmitBytoRead-urlDing"+ urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendOverTimeSubmitBytoRead--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } - - bb.writeLog("sendOverTimeSubmitBytoRead--nodeId:"+nodeId); - bb.writeLog("sendOverTimeSubmitBytoRead--nodeName:"+nodeName); + 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(); - 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')\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid + - " "; + 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')\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid +" and t2.nodeid = "+currentNodeId ; + bb.writeLog("sendOverTimeSubmitBytoRead--sql:"+sql); rs.executeQuery(sql); while (rs.next()) { @@ -367,11 +296,6 @@ public class SendPortalOverTimeSubmitUtil { String staffid = rs.getString("staffid"); String userid = rs.getString("userid"); - bb.writeLog("sendOverTimeSubmitBytoRead:"+requestid+" creator:"+creator+" staffid:"+staffid); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } - JSONObject taskObject = new JSONObject(); taskObject.put("creator", creator); taskObject.put("staffid", staffid); @@ -382,36 +306,38 @@ public class SendPortalOverTimeSubmitUtil { for(int i=0;i> atList = new ArrayList>(); Map map = null; - String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark \n" + + int remark9count = 0; + + 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.preisremark in (8,18) \n" + + " and t.preisremark in (8,9,18) \n" + " and t.requestid ="+requestid + " and t.userid="+userid+" and t.nodeid = "+current_nodeid; @@ -56,14 +58,29 @@ public class completeRequestRemark8AtUtil { remark8List.add(map); }else if("18".equals(preisremark)){ atList.add(map); + }else if("9".equals(preisremark)){ + remark9count++; } } - bb.writeLog("OpenRequestRemark8AtCmd-remark8List:"+remark8List.size()); bb.writeLog("OpenRequestRemark8AtCmd-atList:"+atList.size()); + bb.writeLog("remark9count:"+remark9count); + + if(remark9count > 0){ + + List> remark8List2 = new ArrayList>(); + List> remark9List2 = new ArrayList>(); + OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List2,remark9List2,atList); + new Thread(openRequestRemarkAtRunnable).start(); + + }else{ + bb.writeLog("OpenRequestRemark8AtCmd-remark8List:"+remark8List.size()); + bb.writeLog("OpenRequestRemark8AtCmd-atList:"+atList.size()); + OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List,remark9List,atList); + new Thread(openRequestRemarkAtRunnable).start(); + } + - OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List,remark9List,atList); - new Thread(openRequestRemarkAtRunnable).start(); } } } diff --git a/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java b/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java index e7913de5..ad6b7a12 100644 --- a/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java +++ b/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java @@ -2,6 +2,7 @@ package weaver.interfaces.dito.robot; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.HttpRequestUtil; @@ -9,15 +10,17 @@ import com.customization.dito.sendtodo.SendPortalErrorUtil; import com.time.util.DateUtil; import weaver.conn.RecordSet; import weaver.general.BaseBean; -import weaver.general.Util; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; +import java.util.Map; /*** * */ public class SendPortalRobotSubmitUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); public void sendRobotsubmit(String requestid,String nodeid){ BaseBean bb = new BaseBean(); bb.writeLog("SendPortalRobotSubmitUtil"); @@ -49,7 +52,6 @@ public class SendPortalRobotSubmitUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); bb.writeLog("SendPortalRobotSubmitUtil--sendRobotSubmitByTodo"); String terminal = "1" ; String taskType = "0"; @@ -59,118 +61,91 @@ public class SendPortalRobotSubmitUtil { try { - String userids = "" ; - 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(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + if(StringUtils.isNotEmpty(mobileJumpUrl)){ urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } bb.writeLog("sendRobotSubmitByTodo-urlDing", urlDing); - int count = 0 ; - String countSql=" select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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("sendRobotSubmitByTodo--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } +// int count = 0 ; +// String countSql=" select t2.userid \n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\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 ; + + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid+""); +// bb.writeLog("sendRobotSubmitByTodo--countSql:"+countSql); +// rs.executeQuery(countSql); +// while (rs.next()){ +// count++; +// } bb.writeLog("sendRobotSubmitByTodo--count:"+count); if(count >0){ - String currentUserId= "1"; - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String createrLoginid = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) 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("sendRobotSubmitByTodo--sql2:"+sql); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginid = Util.null2String(rs.getString("loginid")); - } + 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"); - requestObject.put("creator",createrLoginid); - requestObject.put("center",center); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); + 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("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,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 = '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 ; - +// String sql =" select t2.userid,h1.loginid,h1.lastname,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.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid ; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 - String creator = rs.getString("loginid"); + String loginid = rs.getString("loginid"); String staffid = rs.getString("staffid"); - String userid = rs.getString("userid"); - - userids += StringUtils.isEmpty(userids) ? userid : ","+userid ; - - bb.writeLog("sendRobotSubmitByTodo:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("objectAction",objectAction); taskObject.put("objectType", objectType); - taskObject.put("objectCode", creator); + taskObject.put("objectCode", loginid); taskObject.put("objectId", staffid); - taskObject.put("operatorCode", creator); + taskObject.put("operatorCode", loginid); taskObjectList.add(taskObject); } @@ -184,10 +159,10 @@ public class SendPortalRobotSubmitUtil { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,userids); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,""); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userids); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); } } } @@ -228,10 +203,6 @@ public class SendPortalRobotSubmitUtil { String objectAction = "0" ; String objectType = "0"; try { - String currentUserId= "1"; - 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 ; @@ -239,67 +210,46 @@ public class SendPortalRobotSubmitUtil { String urlDing = replace+bpm_app_requesturl+requestid; String urlApp = replace+bpm_app_requesturl+requestid; - if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + if(StringUtils.isNotEmpty(mobileJumpUrl)){ urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } bb.writeLog("sendRobotSubmitByToRead-urlDing"+ urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String createrLoginid = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) 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("sendRobotSubmitByToRead--sql2:"+sql); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginid = Util.null2String(rs.getString("loginid")); - } + 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"); - bb.writeLog("sendRobotSubmitByToRead--nodeId:"+nodeId); - bb.writeLog("sendRobotSubmitByToRead--nodeName:"+nodeName); JSONArray taskObjectList = new JSONArray(); - 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')\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid + - " "; +// 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')\n" + +// " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid + +// " "; + String sql = requestBaseInfoUtil.getRemark89Sql(requestid); bb.writeLog("sendRobotSubmitByToRead--sql:"+sql); rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 - String creator = rs.getString("loginid"); + String loginid = rs.getString("loginid"); String staffid = rs.getString("staffid"); String userid = rs.getString("userid"); - bb.writeLog("sendRobotSubmitByToRead:"+requestid+" creator:"+creator+" staffid:"+staffid); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } - JSONObject taskObject = new JSONObject(); - taskObject.put("creator", creator); + taskObject.put("creator", loginid); taskObject.put("staffid", staffid); taskObject.put("userid", userid); taskObjectList.add(taskObject); @@ -322,24 +272,23 @@ public class SendPortalRobotSubmitUtil { taskArray.add(taskObject); 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("creator",createrLoginid); requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("taskCode", requestid+"_cs_"+userid); - - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); requestObject.put("taskObjectList",taskArray); String auth = username + ":" + passwd; @@ -350,10 +299,10 @@ public class SendPortalRobotSubmitUtil { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,userid); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); } } } @@ -415,7 +364,6 @@ public class SendPortalRobotSubmitUtil { sendRobotSubmitByToRead(requestid,nodeid); } - }