|
|
package com.engine.custom.archives.workflow.cmd.requestLog;
|
|
|
|
|
|
import com.api.doc.detail.service.DocViewPermission;
|
|
|
import com.api.doc.detail.util.DocDownloadCheckUtil;
|
|
|
import com.api.odoc.util.OdocFileUtil;
|
|
|
import com.api.workflow.constant.RequestAuthenticationConstant;
|
|
|
import com.api.workflow.service.RequestAuthenticationService;
|
|
|
import com.api.workflow.util.ServiceUtil;
|
|
|
import com.engine.common.biz.AbstractCommonCommand;
|
|
|
import com.engine.common.constant.ParamConstant;
|
|
|
import com.engine.common.entity.BizLogContext;
|
|
|
import com.engine.common.util.AttrSignatureUtil;
|
|
|
import com.engine.core.interceptor.CommandContext;
|
|
|
import com.engine.custom.archives.workflow.biz.requestLog.RequestLogCusBiz;
|
|
|
import com.engine.hrm.biz.OrganizationShowSetBiz;
|
|
|
import com.engine.workflow.biz.QysSignatureCominfo;
|
|
|
|
|
|
import com.engine.workflow.biz.RobotNode.RobotNodeBiz;
|
|
|
import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz;
|
|
|
import com.engine.workflow.biz.SecondAuthBiz;
|
|
|
import com.engine.workflow.biz.WorkflowCommunicationBiz;
|
|
|
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
|
|
|
import com.engine.workflow.biz.requestForm.RequestFormBiz;
|
|
|
import com.engine.workflow.constant.SecondAuthType;
|
|
|
import com.engine.workflow.constant.SignSource;
|
|
|
import com.engine.workflow.constant.menu.SystemMenuType;
|
|
|
import com.engine.workflow.constant.requestForm.RequestConstant;
|
|
|
import com.engine.workflow.entity.requestForm.RightMenu;
|
|
|
import com.engine.workflow.service.RequestSecondAuthService;
|
|
|
import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl;
|
|
|
import com.engine.workflow.util.MenuOrderSetUtil;
|
|
|
import com.google.common.base.Strings;
|
|
|
import weaver.conn.RecordSet;
|
|
|
import weaver.crm.Maint.CustomerInfoComInfo;
|
|
|
import weaver.dateformat.DateTransformer;
|
|
|
import weaver.dateformat.UnifiedConversionInterface;
|
|
|
import weaver.docs.category.SecCategoryComInfo;
|
|
|
import weaver.docs.docs.DocImageManager;
|
|
|
import weaver.docs.webservices.DocAttachment;
|
|
|
import weaver.general.BaseBean;
|
|
|
import weaver.general.Util;
|
|
|
import weaver.hrm.User;
|
|
|
import weaver.hrm.company.DepartmentComInfo;
|
|
|
import weaver.hrm.resource.ResourceComInfo;
|
|
|
import weaver.systeminfo.SystemEnv;
|
|
|
import weaver.workflow.request.RequestLogOperateName;
|
|
|
import weaver.workflow.request.RequestRemarkRight;
|
|
|
import weaver.workflow.request.WFLinkInfo;
|
|
|
import weaver.workflow.request.WorkflowSpeechAppend;
|
|
|
import weaver.workflow.workflow.WorkflowAllComInfo;
|
|
|
import weaver.workflow.workflow.WorkflowConfigComInfo;
|
|
|
import weaver.workflow.workflow.WorkflowRequestComInfo;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
|
* 获取签字意见列表数据
|
|
|
* Created by jhy on 2018/4/10.
|
|
|
*/
|
|
|
public class LoadRequestLogDataCusCmd extends AbstractCommonCommand<Map<String, Object>> {
|
|
|
|
|
|
/***方便使用参数***/
|
|
|
private int requestid;
|
|
|
private int workflowid;
|
|
|
private int nodeid;
|
|
|
private int desrequestid;
|
|
|
private int isrequest;
|
|
|
private boolean isprint;
|
|
|
private boolean isworkflowhtmldoc;
|
|
|
private String f_weaver_belongto_userid;
|
|
|
private String f_weaver_belongto_usertype;
|
|
|
private String source=""; //添加参数,用于转pdf复用此cmd
|
|
|
|
|
|
private AttrSignatureUtil attrSignatureUtil;
|
|
|
private String authSignatureInfo;
|
|
|
private String authStr;
|
|
|
private String authSignatureStr;
|
|
|
|
|
|
private ResourceComInfo ResourceComInfo;
|
|
|
private DepartmentComInfo DepartmentComInfo;
|
|
|
private CustomerInfoComInfo CustomerInfoComInfo;
|
|
|
|
|
|
private HttpServletRequest request;
|
|
|
|
|
|
public LoadRequestLogDataCusCmd(HttpServletRequest request, User user, Map<String, Object> params) {
|
|
|
this.request = request;
|
|
|
this.user = user;
|
|
|
this.params = params;
|
|
|
}
|
|
|
public LoadRequestLogDataCusCmd(HttpServletRequest request, User user, Map<String, Object> params, String source) {
|
|
|
this.request = request;
|
|
|
this.user = user;
|
|
|
this.params = params;
|
|
|
this.source =source;
|
|
|
}
|
|
|
|
|
|
public LoadRequestLogDataCusCmd(User user, Map<String, Object> params, String source) {
|
|
|
this.user = user;
|
|
|
this.params = params;
|
|
|
this.source =source;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public BizLogContext getLogContext() {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> execute(CommandContext commandContext) {
|
|
|
return executeTransfer();
|
|
|
}
|
|
|
|
|
|
public Map<String, Object> executeTransfer(){
|
|
|
requestid = Util.getIntValue(Util.null2String(params.get("requestid")));
|
|
|
f_weaver_belongto_userid = Util.null2String(params.get("f_weaver_belongto_userid"));
|
|
|
f_weaver_belongto_usertype = Util.null2String(params.get("f_weaver_belongto_usertype"));
|
|
|
attrSignatureUtil = new AttrSignatureUtil(user.getUID(), Util.null2String(params.get(ParamConstant.REQUEST_HEADER_USER_AGENT)));
|
|
|
String _attributesString = Util.null2String(params.get(RequestConstant.SIGNATURE_ATTRIBUTES_STR));
|
|
|
String _attributesSignature = Util.null2String(params.get(RequestConstant.SIGNATURE_SECRET_KEY));
|
|
|
Map<String, Object> apidatas = new HashMap<String, Object>();
|
|
|
if ("".equals(source)){
|
|
|
attrSignatureUtil.verifySignature(_attributesString, _attributesSignature);
|
|
|
//校验本次请求的requestid是否是当前用户打开的流程
|
|
|
RequestAuthenticationService authService = new RequestAuthenticationService();
|
|
|
authService.setUser(user);
|
|
|
if (!authService.verify(request, requestid)) {
|
|
|
new BaseBean().writeLog("被拦截:LoadRequestLogDataCusCmd;requestid:" + requestid);
|
|
|
apidatas.put(Util.null2String(requestid),"被拦截:LoadRequestLogDataCusCmd");
|
|
|
return apidatas;
|
|
|
}
|
|
|
authStr = authService.getAuthString();
|
|
|
authSignatureStr= authService.getAuthSignatureString();
|
|
|
authSignatureInfo = "&authStr=" + authService.getAuthString()+ "&authSignatureStr=" + authService.getAuthSignatureString();
|
|
|
} else {
|
|
|
authStr = Util.null2String(params.get(RequestAuthenticationConstant.AUTHORITY_STRING));
|
|
|
authSignatureStr= Util.null2String(params.get(RequestAuthenticationConstant.AUTHORITY_SIGNATURESTRING));
|
|
|
authSignatureInfo = "&authStr=" + Util.null2String(params.get(RequestAuthenticationConstant.AUTHORITY_STRING)) + "&authSignatureStr=" + Util.null2String(params.get(RequestAuthenticationConstant.AUTHORITY_SIGNATURESTRING));
|
|
|
}
|
|
|
|
|
|
workflowid = Util.getIntValue(Util.null2String(params.get("workflowid")), 0);
|
|
|
nodeid = Util.getIntValue(Util.null2String(params.get("nodeid")), 0);
|
|
|
isworkflowhtmldoc = "1".equals(Util.null2String(attrSignatureUtil.getAttribute("isworkflowhtmldoc" + requestid)));
|
|
|
desrequestid = Util.getIntValue(Util.null2String(attrSignatureUtil.getAttribute("desrequestid")));
|
|
|
isrequest = Util.getIntValue(Util.null2String(attrSignatureUtil.getAttribute("isrequest")));
|
|
|
isprint = "1".equals(Util.null2String(params.get("isprint")));
|
|
|
try {
|
|
|
ResourceComInfo = new ResourceComInfo();
|
|
|
DepartmentComInfo = new DepartmentComInfo();
|
|
|
CustomerInfoComInfo = new CustomerInfoComInfo();
|
|
|
apidatas = getRequestLogData();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
apidatas.put("error", "1");
|
|
|
}
|
|
|
return apidatas;
|
|
|
}
|
|
|
|
|
|
public Map<String, Object> getRequestLogData() throws Exception {
|
|
|
RecordSet recordSet = new RecordSet();
|
|
|
WorkflowAllComInfo wfComInfo = new WorkflowAllComInfo();
|
|
|
boolean isFromWfForm = "1".equals(params.get("isFromWfForm"));
|
|
|
long start = System.currentTimeMillis();
|
|
|
int userid = user.getUID();
|
|
|
boolean isdebug = (userid == 8 || userid == 80 || userid == 1215 || userid == 1348 || userid == 3724 || userid == 4548);
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-121-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
start = System.currentTimeMillis();
|
|
|
Map<String, Object> resultDatas = new HashMap<String, Object>();
|
|
|
|
|
|
boolean issplitload = Util.null2String(params.get("loadmethod")).equals("split"); //是否分页加载
|
|
|
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-122-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
start = System.currentTimeMillis();
|
|
|
boolean loadbyuser = Boolean.parseBoolean(Util.null2String(params.get("loadbyuser")));
|
|
|
String viewLogIds = Util.null2String(params.get("viewLogIds"));
|
|
|
int creatorNodeId = Util.getIntValue(Util.null2String(params.get("creatorNodeId")));
|
|
|
String isHideInput = Util.null2String(params.get("isHideInput"));
|
|
|
|
|
|
// 是否流程督办
|
|
|
int urger = Util.getIntValue(Util.null2String(attrSignatureUtil.getAttribute("urger")));
|
|
|
// 是否流程干预
|
|
|
int isintervenor = Util.getIntValue(Util.null2String(attrSignatureUtil.getAttribute("isintervenor")));
|
|
|
|
|
|
// 转发引用权限
|
|
|
int forward = Util.getIntValue(Util.null2String(params.get("forward")), 0);
|
|
|
int submit = Util.getIntValue(Util.null2String(params.get("submit")), 0);
|
|
|
|
|
|
// 页面是否有表单签章,有的话,取消引用按钮
|
|
|
String isFormSignature = Util.null2String(params.get("isFormSignature"));
|
|
|
boolean isFromMobile = "1".equals(Util.null2String(params.get("isFromMobile")));
|
|
|
|
|
|
String pgflag = Util.null2String(params.get("pgnumber"));
|
|
|
String maxrequestlogid = Util.null2String(params.get("maxrequestlogid"));
|
|
|
int wfsignlddtcnt = Util.getIntValue(Util.null2String(params.get("wfsignlddtcnt")), 0);
|
|
|
String orderbytype = Util.null2String(params.get("orderbytype"));
|
|
|
boolean isOldWf = "true".equals(Util.null2String(params.get("isOldWf")));
|
|
|
boolean isshowsrc = "1".equals(Util.null2String(wfComInfo.getShowSrc(String.valueOf(workflowid))));
|
|
|
boolean isOpenCommunication = false;
|
|
|
|
|
|
recordSet.executeQuery("select orderbytype, isOpenCommunication from workflow_base where id = ?",workflowid);
|
|
|
if(recordSet.next()){
|
|
|
orderbytype = Util.null2String(recordSet.getString(1));
|
|
|
isOpenCommunication = recordSet.getInt(2) == 1;
|
|
|
}
|
|
|
if (loadbyuser) {
|
|
|
recordSet.executeSql("SELECT nodeid FROM workflow_currentoperator WHERE requestid=" + requestid + " AND userid=" + user.getUID() + " ORDER BY receivedate desc,receivetime DESC");
|
|
|
if (recordSet.next()) {
|
|
|
String viewNodeId = recordSet.getString("nodeid");
|
|
|
recordSet.executeSql("SELECT viewnodeids FROM workflow_flownode WHERE workflowid=" + workflowid + " AND nodeid=" + viewNodeId);
|
|
|
String viewnodeids = "-1";
|
|
|
if (recordSet.next()) {
|
|
|
viewnodeids = recordSet.getString("viewnodeids");
|
|
|
}
|
|
|
if ("-1".equals(viewnodeids)) {// 全部查看
|
|
|
recordSet.executeSql("SELECT nodeid FROM workflow_flownode WHERE workflowid= " + workflowid + " AND EXISTS(SELECT 1 FROM workflow_nodebase WHERE id=workflow_flownode.nodeid AND (requestid IS NULL OR requestid=" + requestid + "))");
|
|
|
while (recordSet.next()) {
|
|
|
viewLogIds += "," + recordSet.getString("nodeid");
|
|
|
}
|
|
|
} else if (viewnodeids == null || "".equals(viewnodeids)) {// 全部不能查看
|
|
|
} else {// 查看部分
|
|
|
viewLogIds += "," + viewnodeids;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int pgnumber = Util.getIntValue(pgflag);
|
|
|
String orderby = "desc";
|
|
|
if ("2".equals(orderbytype)) {
|
|
|
orderby = "asc";
|
|
|
}
|
|
|
|
|
|
WFLinkInfo wfLinkInfo = new WFLinkInfo();
|
|
|
wfLinkInfo.setRequest(request);
|
|
|
wfLinkInfo.setIsprint(isprint);
|
|
|
ArrayList log_loglist = null;
|
|
|
// 获取高级查询的条件
|
|
|
|
|
|
String sqlwhere = Util.null2String(params.get("sqlWhere"));
|
|
|
if(!"".equals(sqlwhere)) writeLog("requestid:"+requestid+",userid:"+userid+",sqlwhere:"+sqlwhere);
|
|
|
if ("".equals(source)){
|
|
|
sqlwhere += wfLinkInfo.getRequestLogSearchConditionStr();
|
|
|
}
|
|
|
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-123-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
// 节点签字意见权限控制
|
|
|
RequestRemarkRight remarkRight = new RequestRemarkRight();
|
|
|
String sqlcondition = remarkRight.getRightCondition(requestid, workflowid, user.getUID());
|
|
|
sqlcondition += RequestLogCusBiz.getCustomSourceCondition(source,params);//添加source自定义条件
|
|
|
sqlwhere += sqlcondition;
|
|
|
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-124-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
|
|
|
StringBuffer sbfmaxrequestlogid = new StringBuffer(maxrequestlogid);
|
|
|
//分页加载重新计算当前页最大logid
|
|
|
if (issplitload) {
|
|
|
//sbfmaxrequestlogid = wfLinkInfo.getMaxLogid(requestid, workflowid, viewLogIds, orderby, wfsignlddtcnt, pgnumber, sqlwhere);
|
|
|
}
|
|
|
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-125-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
if (pgflag == null || pgflag.equals("")) {
|
|
|
log_loglist = wfLinkInfo.getRequestLog(requestid, workflowid, viewLogIds, "asc", sqlcondition);
|
|
|
} else {
|
|
|
//log_loglist = wfLinkInfo.getRequestLog(requestid, workflowid, viewLogIds, orderby, wfsignlddtcnt, sbfmaxrequestlogid, sqlwhere);
|
|
|
boolean isSubrequest = (boolean)params.get("isSubrequest");
|
|
|
log_loglist = RequestLogCusBiz.getRequestLog(requestid,workflowid,viewLogIds,"asc",wfsignlddtcnt,pgnumber,sqlwhere,isSubrequest);
|
|
|
if(RequestLogCusBiz.isEndLog(requestid,workflowid,viewLogIds,"asc",wfsignlddtcnt,pgnumber,sqlwhere)){///判断此次加载是否是最后一页
|
|
|
resultDatas.put("isEnd", true);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
resultDatas.put("maxrequestlogid", sbfmaxrequestlogid.toString());
|
|
|
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-126-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
|
|
|
int tempRequestLogId = 0;
|
|
|
int tempImageFileId = 0;
|
|
|
|
|
|
int languageidfromrequest = user.getLanguage();
|
|
|
RecordSet recordSetlog3 = new RecordSet();
|
|
|
WorkflowRequestComInfo wfrequestcominfo = new WorkflowRequestComInfo();
|
|
|
DocImageManager DocImageManager = new DocImageManager();
|
|
|
SecCategoryComInfo SecCategoryComInfo1 = new SecCategoryComInfo();
|
|
|
RequestLogOperateName RequestLogOperateName = new RequestLogOperateName();
|
|
|
String initUser = "";
|
|
|
List<Map<String, Object>> loglistnew = new ArrayList<Map<String, Object>>();
|
|
|
|
|
|
//签字意见相关流程
|
|
|
String signrequestids = "";
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-127-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
start = System.currentTimeMillis();
|
|
|
|
|
|
//二次认证,数据保护的验证
|
|
|
Map<String, Object> checkMap = SecondAuthBiz.getProtectedLogs(requestid);
|
|
|
Map<String, String> logIdMap = (HashMap<String, String>) checkMap.get("logIdMap");
|
|
|
int checkLogId = Util.getIntValue(Util.null2String(checkMap.get("logId")), -1);
|
|
|
checkMap.remove("logIdMap");
|
|
|
RequestSecondAuthService requestSecondAuthService = com.engine.common.util.ServiceUtil.getService(RequestSecondAuthServiceImpl.class, user);
|
|
|
//批量获取契约锁认证的信息
|
|
|
Map<String, Object> qysSignInfoMap = SecondAuthBiz.getMultiQYSSignInfo(requestid);
|
|
|
|
|
|
DateTransformer dft = new DateTransformer();
|
|
|
UnifiedConversionInterface uci = new UnifiedConversionInterface();
|
|
|
QysSignatureCominfo signatureCominfo = new QysSignatureCominfo();
|
|
|
|
|
|
int tempnodeid = FreeNodeBiz.getExtendNodeId(requestid,nodeid);
|
|
|
Map<String, String> operateNameMap = getOperateMenuName(tempnodeid, user.getLanguage());
|
|
|
String forwardMenuName = operateNameMap.get("forwardName");
|
|
|
|
|
|
for (int i = 0; i < log_loglist.size(); i++) {
|
|
|
Hashtable htlog = (Hashtable) log_loglist.get(i);
|
|
|
Map<String, Object> logmap = new HashMap<String, Object>();
|
|
|
int log_nodeid = Util.getIntValue((String) htlog.get("nodeid"), 0);
|
|
|
int log_destnodeid = Util.getIntValue((String) htlog.get("destnodeid"), 0);
|
|
|
int log_nodeattribute = Util.getIntValue((String) htlog.get("nodeattribute"), 0);
|
|
|
String log_nodename = Util.null2String((String) htlog.get("nodename"));
|
|
|
String log_remark = RequestFormBiz.manageCssPollute(Util.null2String((String) htlog.get("remark")));
|
|
|
String log_operator = Util.null2String((String) htlog.get("operator"));
|
|
|
String log_operatedate = Util.null2String((String) htlog.get("operatedate"));
|
|
|
String log_operatetime = Util.null2String((String) htlog.get("operatetime"));
|
|
|
String isRobotNode = Util.null2String((String) htlog.get("isRobotNode"));
|
|
|
if(uci.getTimeZoneStatus()) {
|
|
|
//开启多时区
|
|
|
String[] tempoperatetime = dft.getLocaleDateAndTime(log_operatedate,log_operatetime);
|
|
|
log_operatedate = tempoperatetime[0];
|
|
|
log_operatetime = tempoperatetime[1];
|
|
|
}
|
|
|
|
|
|
String log_logtype = Util.null2String((String) htlog.get("logtype"));
|
|
|
String log_receivedPersons = Util.null2String((String) htlog.get("receivedPersons"));
|
|
|
String log_receivedPersonIds = Util.null2String((String) htlog.get("receivedPersonids"));
|
|
|
tempRequestLogId = Util.getIntValue((String) htlog.get("logid"), 0);
|
|
|
String log_annexdocids = Util.null2String((String) htlog.get("annexdocids"));
|
|
|
String log_signdocids = Util.null2String((String) htlog.get("signdocids"));
|
|
|
String log_signworkflowids = Util.null2String((String) htlog.get("signworkflowids"));
|
|
|
String tmpLogId = Util.null2String(htlog.get("tmpLogId"));
|
|
|
String remarkLocation = Util.null2String(htlog.get("remarkLocation"));
|
|
|
String ismobile = Util.null2String(htlog.get("isMobile"));
|
|
|
|
|
|
String remarkHtml = Util.null2String((String) htlog.get("remarkHtml"));
|
|
|
SignSource signSource = "t".equals(log_logtype) ? null : SignSource.getSignSource(ismobile);
|
|
|
String mobileSuffix = "";
|
|
|
if(signSource != null && (isshowsrc || signSource == SignSource.AUTO_APPROVE || signSource == SignSource.AUTO_SUBMIT)) {
|
|
|
remarkHtml += SignSource.getSignSourceHtml(signSource,user.getLanguage());
|
|
|
//不显示意见来源,处理历史数据
|
|
|
} else if (!isshowsrc) {
|
|
|
remarkHtml = RequestLogCusBiz.removeRemarkSource(remarkHtml);
|
|
|
}else if(isshowsrc){
|
|
|
String remarktemp = remarkHtml;
|
|
|
remarkHtml = RequestLogCusBiz.removeRemarkSource(remarktemp);
|
|
|
int index = remarktemp.indexOf("<span style='font-size:11px;color:#666;'>来自微信企业号");
|
|
|
if (index > 0) {
|
|
|
int index2 = remarktemp.indexOf("</span>", index);
|
|
|
remarkHtml += "<br>" + remarktemp.substring(index, index2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
logmap.put("forwardMenuName", forwardMenuName);
|
|
|
|
|
|
logmap.put("remarkLocation",remarkLocation);
|
|
|
|
|
|
String log_remarkHtml = RequestFormBiz.manageCssPollute(remarkHtml);
|
|
|
|
|
|
String log_iframeId = Util.null2String((String) htlog.get("iframeId"));
|
|
|
|
|
|
int requestLogId = Util.getIntValue(Util.null2String(htlog.get("id")), 0);
|
|
|
|
|
|
String log_operatortype = Util.null2String((String) htlog.get("operatortype"));
|
|
|
|
|
|
//验证数据
|
|
|
//if (!isprint) {
|
|
|
logmap.put("isProtected", "0");
|
|
|
logmap.put("checkSuccess", "-1");
|
|
|
if (requestLogId > 0) {
|
|
|
if (logIdMap.containsKey(String.valueOf(tmpLogId))) { //有契约锁数据保护
|
|
|
int protectType = Util.getIntValue(Util.null2String(logIdMap.get(tmpLogId)), 0);
|
|
|
logmap.put("isProtected", "1");
|
|
|
logmap.put("protectType", protectType);
|
|
|
|
|
|
if (protectType == SecondAuthType.QYS.getId()) { //契约锁数据保护
|
|
|
//add by fmj 2019-08-27 因为契约锁数据保护,也会先进行契约锁认证,因此此处先取认证时选择的印章,
|
|
|
//String qysSignatureId = SecondAuthBiz.getQYSSignatureId(Util.getIntValue(tmpLogId, 0));
|
|
|
String qysSignatureId = "";
|
|
|
Map<String, Object> certDetails = new HashMap<String, Object>();
|
|
|
if (qysSignInfoMap.containsKey(tmpLogId)) {
|
|
|
Map<String, Object> signInfoMap = (Map<String, Object>) qysSignInfoMap.get(tmpLogId);
|
|
|
if (signInfoMap != null) {
|
|
|
qysSignatureId = Util.null2String(signInfoMap.get("signatureId"));
|
|
|
certDetails = (Map<String, Object>) signInfoMap.get("certDetails");
|
|
|
}
|
|
|
}
|
|
|
int signatureId = Util.getIntValue(qysSignatureId, 0);
|
|
|
|
|
|
//没有认证时选择的印章,再取从契约锁同步过来的个人签名
|
|
|
if (signatureId <= 0) {
|
|
|
qysSignatureId = signatureCominfo.getSignatureid(log_operator);
|
|
|
signatureId = Util.getIntValue(qysSignatureId, 0);
|
|
|
}
|
|
|
if (signatureId > 0) {
|
|
|
String signIdCode = DocDownloadCheckUtil.EncodeFileid(signatureId + "",user);
|
|
|
logmap.put("qys_signature_id", signIdCode);
|
|
|
|
|
|
//添加印章的尺寸
|
|
|
// Map<String, Object> certDetails = SecondAuthBiz.getCertDetails(Util.getIntValue(tmpLogId, 0));
|
|
|
int qyswidth = (int)Util.getDoubleValue(Util.null2String(certDetails.get("qyswidth")),0);
|
|
|
int qysheight = (int)Util.getDoubleValue(Util.null2String(certDetails.get("qysheight")),0);
|
|
|
logmap.put("qyswidth",qyswidth);
|
|
|
logmap.put("qysheight",qysheight);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//数据保护默认所有的都是验证通过的,只对最后一条签字意见做特殊处理,需要验证数据有效性
|
|
|
logmap.put("checkSuccess", 1);
|
|
|
logmap.put("clickCheck", 0);
|
|
|
} else { //没有契约锁数据保护
|
|
|
//String qysSignatureId = SecondAuthBiz.getQYSSignatureId(Util.getIntValue(tmpLogId, 0));
|
|
|
String qysSignatureId = "";
|
|
|
Map<String, Object> certDetails = new HashMap<String, Object>();
|
|
|
if (qysSignInfoMap.containsKey(tmpLogId)) {
|
|
|
Map<String, Object> signInfoMap = (Map<String, Object>) qysSignInfoMap.get(tmpLogId);
|
|
|
if (signInfoMap != null) {
|
|
|
qysSignatureId = Util.null2String(signInfoMap.get("signatureId"));
|
|
|
certDetails = (Map<String, Object>) signInfoMap.get("certDetails");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int signatureId = Util.getIntValue(qysSignatureId, 0);
|
|
|
if (signatureId > 0) {
|
|
|
String signIdCode = DocDownloadCheckUtil.EncodeFileid(signatureId + "",user);
|
|
|
logmap.put("qys_signature_id", signIdCode);
|
|
|
//添加印章的尺寸
|
|
|
//Map<String, Object> certDetails = SecondAuthBiz.getCertDetails(Util.getIntValue(tmpLogId, 0));
|
|
|
int qyswidth = (int)Util.getDoubleValue(Util.null2String(certDetails.get("qyswidth")),0);
|
|
|
int qysheight = (int)Util.getDoubleValue(Util.null2String(certDetails.get("qysheight")),0);
|
|
|
logmap.put("qyswidth",qyswidth);
|
|
|
logmap.put("qysheight",qysheight);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (requestLogId == checkLogId) { //最后一条签字意见,验证数据保护
|
|
|
Map<String, Object> checkResult = requestSecondAuthService.checkProtectDatas(checkMap);
|
|
|
String checkSuccess = Util.null2String(checkResult.get("success"));
|
|
|
logmap.put("checkSuccess", checkSuccess);
|
|
|
logmap.put("clickCheck", 1);
|
|
|
}
|
|
|
}
|
|
|
// }
|
|
|
|
|
|
if (pgflag == null || pgflag.equals("")) {
|
|
|
if (log_loglist.size() > 10) {
|
|
|
if (i < 10) {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
tempImageFileId = 0;
|
|
|
if (tempRequestLogId > 0) {
|
|
|
recordSet.executeSql("select imageFileId from Workflow_FormSignRemark where requestLogId=" + tempRequestLogId);
|
|
|
if (recordSet.next()) {
|
|
|
tempImageFileId = Util.getIntValue(recordSet.getString("imageFileId"), 0);
|
|
|
}
|
|
|
}
|
|
|
logmap.put("logid", Util.null2String((String) htlog.get("id")));
|
|
|
|
|
|
//是否有相关交流引用
|
|
|
if (isOpenCommunication) {
|
|
|
logmap.put("hasCommunicationQuote", WorkflowCommunicationBiz.requestLogQuoteCheck(Util.getIntValue(Util.null2String(logmap.get("logid")))));
|
|
|
}
|
|
|
|
|
|
String img_path = "0".equals(log_operatortype) ? ResourceComInfo.getMessagerUrls(log_operator) : "/messager/images/icon_m_wev8.jpg";
|
|
|
img_path = RobotNodeBiz.operatortype.equals(log_operatortype) ? "/messager/images/robot.png" : img_path;
|
|
|
// 人员头像
|
|
|
logmap.put("img_path", img_path);
|
|
|
|
|
|
int showimg = Util.getIntValue(recordSet.getPropValue("WFSignatureImg", "showimg"), 0);
|
|
|
int signnaturImgHeight = Util.getIntValue(recordSet.getPropValue("WFSignatureImg", "imgheight"));
|
|
|
recordSet.execute("select * from DocSignature where hrmresid=" + log_operator + " and sealtype = 1 order by markid");
|
|
|
String userimg = "";
|
|
|
// 表单签章
|
|
|
if (showimg == 1 && recordSet.next() && true && "0".equals(log_operatortype)) {
|
|
|
String markpath = Util.null2String(recordSet.getString("markpath"));
|
|
|
if (!markpath.equals("")) {
|
|
|
OdocFileUtil odocfileutil = new OdocFileUtil();
|
|
|
String useridrandom = odocfileutil.changeParamToBase64Str(Util.getIntValue(log_operator,-1)+"");
|
|
|
userimg = "/weaver/weaver.file.ImgFileDownload?userid=" + useridrandom+"&sealType=1";
|
|
|
}
|
|
|
}
|
|
|
logmap.put("userimg", userimg);
|
|
|
logmap.put("signnaturImgHeight", signnaturImgHeight);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.loadOperatorInfo(isOldWf, htlog, creatorNodeId, recordSetlog3, logmap);
|
|
|
|
|
|
// 签字意见内容
|
|
|
if (!log_logtype.equals("t")) {
|
|
|
// 表单签章
|
|
|
if (tempRequestLogId > 0 && tempImageFileId > 0) {
|
|
|
log_remarkHtml += "<img src=\"/weaver/weaver.file.FileDownload?fileid="+tempImageFileId+"\"></img>";
|
|
|
} else {
|
|
|
Pattern pattern0 = Pattern.compile("(\\/workflow\\/request\\/ViewRequest(ForwardSPA)?\\.jsp\\?)");
|
|
|
Matcher m0 = pattern0.matcher(log_remarkHtml);
|
|
|
if(m0.find()) {
|
|
|
log_remarkHtml = m0.replaceAll("/workflow/request/ViewRequestForwardSPA.jsp?f_weaver_belongto_userid=" + f_weaver_belongto_userid + authSignatureInfo + "&desrequestid=" + requestid + "&");
|
|
|
}
|
|
|
Pattern pattern1 = Pattern.compile("(\\/docs\\/docs\\/DocDsp.jsp\\?)");
|
|
|
Matcher m1 = pattern1.matcher(log_remarkHtml);
|
|
|
if (m1.find()) {
|
|
|
log_remarkHtml = m1.replaceAll(ServiceUtil.docViewUrl + "?f_weaver_belongto_userid=" + f_weaver_belongto_userid + authSignatureInfo + "&desrequestid=" + requestid + "&");
|
|
|
}
|
|
|
// 流程签字意见内容中附件
|
|
|
if(log_remarkHtml.indexOf("desrequestid=0")>-1)
|
|
|
log_remarkHtml = log_remarkHtml.replace("desrequestid=0", "desrequestid=" + desrequestid);
|
|
|
if(log_remarkHtml.indexOf("requestid=-1")>-1)
|
|
|
log_remarkHtml = log_remarkHtml.replace("requestid=-1", "requestid=" + requestid);
|
|
|
|
|
|
// if (log_remarkHtml.indexOf("<img") > -1 && !isFromMobile) {
|
|
|
// String begin_logRemark = "";
|
|
|
// String new_logRemark = "";
|
|
|
// String end_logRemark = "";
|
|
|
// String cycleString = log_remarkHtml;
|
|
|
// int f = 0;
|
|
|
// while (cycleString.indexOf("<img") > -1) {
|
|
|
// f++;
|
|
|
// int b = cycleString.indexOf("<img");
|
|
|
// begin_logRemark = cycleString.substring(0, b);
|
|
|
// new_logRemark += begin_logRemark;
|
|
|
// cycleString = cycleString.substring(b);
|
|
|
// String imgString = "";
|
|
|
// int e = cycleString.indexOf("/>");
|
|
|
// imgString = cycleString.substring(0, e);
|
|
|
// if (isworkflowhtmldoc) {
|
|
|
// new_logRemark += "<a>" + imgString + " onload=\"image_resize(this,'" + log_iframeId + "');\" onresize=\"image_resize(this,'" + log_iframeId + "');\" /> </a>";
|
|
|
// } else {
|
|
|
// new_logRemark += "<div class=\"small_pic\"><a pichref=\"pic_one" + f + "\">" + imgString
|
|
|
// + " style=\"max-width:100%;\" "+(isprint ? "onload" : "original-onload")+"=\"image_resize(this,'" + log_iframeId + "');\" "+(isprint ? "onresize" : "original-onresize")+"=\"image_resize(this,'" + log_iframeId + "');\" /> </a></div><div id=\"pic_one" + f + "\" style=\"display:none;\">" + imgString + " style=\"max-width:100%;\" class=\"maxImg\" /></div>";
|
|
|
// }
|
|
|
// cycleString = cycleString.substring(e + 2);
|
|
|
// end_logRemark = cycleString;
|
|
|
// }
|
|
|
// new_logRemark += end_logRemark;
|
|
|
// log_remarkHtml = new_logRemark;
|
|
|
// }
|
|
|
|
|
|
if(!isprint && isFromWfForm)
|
|
|
log_remarkHtml= RequestFormBiz.manageImgLazyLoad(log_remarkHtml); //图片懒加载处理
|
|
|
|
|
|
if (isprint && log_remark.indexOf("<img") > -1) { // 打印使用的是log_remark,也需要处理img
|
|
|
// /////////
|
|
|
String begin_logRemark = "";
|
|
|
String new_logRemark = "";
|
|
|
String end_logRemark = "";
|
|
|
String cycleString = log_remark;
|
|
|
int f = 0;
|
|
|
while (cycleString.indexOf("<img") > -1) {
|
|
|
f++;
|
|
|
int b = cycleString.indexOf("<img");
|
|
|
begin_logRemark = cycleString.substring(0, b);
|
|
|
new_logRemark += begin_logRemark;
|
|
|
cycleString = cycleString.substring(b);
|
|
|
String imgString = "";
|
|
|
int e = cycleString.indexOf("/>");
|
|
|
imgString = cycleString.substring(0, e);
|
|
|
new_logRemark += "<div class=\"small_pic\">" + imgString + " onload=\"image_resize(this,'" + log_iframeId + "');\" onresize=\"image_resize(this,'" + log_iframeId + "');\" /></div><div id=\"pic_one" + f + "\" style=\"display:none;\">" + imgString
|
|
|
+ " class=\"maxImg\" /></div>";
|
|
|
cycleString = cycleString.substring(e + 2);
|
|
|
end_logRemark = cycleString;
|
|
|
}
|
|
|
new_logRemark += end_logRemark;
|
|
|
log_remark = new_logRemark;
|
|
|
}
|
|
|
|
|
|
String tempremark = log_remark;
|
|
|
tempremark = Util.StringReplace(tempremark, "<br>", "<br>");
|
|
|
if (!"".equals(tempremark) && isprint) {
|
|
|
tempremark += "<br>";
|
|
|
}
|
|
|
logmap.put("tempremark", tempremark);
|
|
|
logmap.put("pgflag", Util.null2String(pgflag));
|
|
|
|
|
|
}
|
|
|
}
|
|
|
try {
|
|
|
String appendData = log_remarkHtml;
|
|
|
if(appendData.indexOf("handwritten_xzl")>-1){
|
|
|
int start1 = appendData.indexOf("handwritten_xzl")+21;
|
|
|
String tempStr = appendData.substring(start1);
|
|
|
int end = tempStr.indexOf("src")-2;
|
|
|
String fileId= tempStr.substring(0,end);
|
|
|
|
|
|
String new_img="";
|
|
|
String attachmentidAes = DocDownloadCheckUtil.checkPermission(String.valueOf(fileId), null);
|
|
|
new_img += "<BR/><img class=\'handwritten_xzl\' style=\'width:50%\' name=\"handWrittenSign\" src=\"/weaver/weaver.file.FileDownload?fileid=" + attachmentidAes + "\" />";
|
|
|
|
|
|
String begin_logRemark = "";
|
|
|
String new_logRemark = "";
|
|
|
String end_logRemark = "";
|
|
|
String cycleString = appendData;
|
|
|
if (cycleString.indexOf("<img class=\"handwritten_xzl\"") > -1) {
|
|
|
int b = cycleString.indexOf("<img class=\"handwritten_xzl\"");
|
|
|
begin_logRemark = cycleString.substring(0, b);
|
|
|
new_logRemark += begin_logRemark;
|
|
|
cycleString = cycleString.substring(b);
|
|
|
int e = cycleString.indexOf("/>");
|
|
|
new_logRemark += new_img;
|
|
|
cycleString = cycleString.substring(e + 2);
|
|
|
end_logRemark = cycleString;
|
|
|
}
|
|
|
new_logRemark += end_logRemark;
|
|
|
log_remarkHtml = new_logRemark;
|
|
|
}
|
|
|
}catch(Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
logmap.put("log_remarkHtml", ServiceUtil.convertChar(log_remarkHtml));
|
|
|
|
|
|
if(isrequest==-1){
|
|
|
isrequest = Util.getIntValue(Util.null2String(params.get("isrequest")))==-1?1:Util.getIntValue(Util.null2String(params.get("isrequest")));
|
|
|
}
|
|
|
|
|
|
// 相关文件
|
|
|
if (!log_annexdocids.equals("") || !log_signdocids.equals("") || !log_signworkflowids.equals("")) {
|
|
|
// 相关文档
|
|
|
if (!log_signdocids.equals("")) {
|
|
|
recordSetlog3.executeSql("select id,docsubject,accessorycount,SecCategory from docdetail where id in(" + log_signdocids + ") order by id asc");
|
|
|
List<Map<String, String>> signdocs = new ArrayList<Map<String, String>>();
|
|
|
while (recordSetlog3.next()) {
|
|
|
Map<String, String> map = new HashMap<String, String>();
|
|
|
String showid = Util.null2String(recordSetlog3.getString(1));
|
|
|
String tempshowname = Util.toScreen(recordSetlog3.getString(2), languageidfromrequest);
|
|
|
|
|
|
map.put("showid", showid);
|
|
|
map.put("authStr", authStr);
|
|
|
map.put("authSignatureStr", authSignatureStr);
|
|
|
map.put("tempshowname", tempshowname);
|
|
|
map.put("filelink", ServiceUtil.docViewUrl + "?f_weaver_belongto_userid=" + user.getUID() + "&f_weaver_belongto_usertype=" + f_weaver_belongto_usertype + "&id=" + showid + "&isrequest="+isrequest+"&requestid=" + requestid + authSignatureInfo);
|
|
|
|
|
|
signdocs.add(map);
|
|
|
}
|
|
|
|
|
|
logmap.put("signdocs", signdocs);
|
|
|
}
|
|
|
|
|
|
int tempnum = Util.getIntValue(String.valueOf(attrSignatureUtil.getAttribute("slinkwfnum")));
|
|
|
// if(tempnum <= 0){
|
|
|
// tempnum = Util.getIntValue(String.valueOf(session.getAttribute("slinkwfnum")));
|
|
|
// }
|
|
|
// 相关流程
|
|
|
if (!log_signworkflowids.equals("")) {
|
|
|
List<Map<String, Object>> signwfs = new ArrayList<Map<String, Object>>();
|
|
|
ArrayList<String> tempwflists = Util.TokenizerString(log_signworkflowids, ",");
|
|
|
for (int k = 0; k < tempwflists.size(); k++) {
|
|
|
tempnum++;
|
|
|
//session.setAttribute("resrequestid" + tempnum, "" + tempwflists.get(k));
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
map.put("isrequest", "1");
|
|
|
map.put("requestid", tempwflists.get(k));
|
|
|
//map.put("wflinkno", tempnum + "");
|
|
|
map.put("desrequestid", requestid);
|
|
|
map.put("authSignatureInfo",authSignatureInfo);
|
|
|
map.put("authStr",authStr);
|
|
|
map.put("authSignatureStr",authSignatureStr);
|
|
|
map.put("f_weaver_belongto_userid", f_weaver_belongto_userid);
|
|
|
map.put("f_weaver_belongto_usertype", f_weaver_belongto_usertype);
|
|
|
map.put("title", wfrequestcominfo.getRequestName((String) tempwflists.get(k)));
|
|
|
signwfs.add(map);
|
|
|
signrequestids += tempwflists.get(k) + ",";
|
|
|
}
|
|
|
|
|
|
logmap.put("signwfs", signwfs);
|
|
|
}
|
|
|
|
|
|
//session.setAttribute("slinkwfnum", "" + tempnum);
|
|
|
//session.setAttribute("haslinkworkflow", "1");
|
|
|
attrSignatureUtil.setAttribute("haslinkworkflow", "1");
|
|
|
|
|
|
// 相关附件
|
|
|
if (!log_annexdocids.equals("")) {
|
|
|
recordSetlog3.executeSql("select id,docsubject,accessorycount,SecCategory from docdetail where id in(" + log_annexdocids + ") order by id asc");
|
|
|
List<Map<String, Object>> annexdocs = new ArrayList<Map<String, Object>>();
|
|
|
while (recordSetlog3.next()) {
|
|
|
|
|
|
String showid = Util.null2String(recordSetlog3.getString(1));
|
|
|
String tempshowname = Util.toScreen(recordSetlog3.getString(2), languageidfromrequest);
|
|
|
int accessoryCount = recordSetlog3.getInt(3);
|
|
|
String SecCategory = Util.null2String(recordSetlog3.getString(4));
|
|
|
DocImageManager.resetParameter();
|
|
|
DocImageManager.setDocid(Util.getIntValue(showid));
|
|
|
DocImageManager.selectDocImageInfo();
|
|
|
|
|
|
String docImagefilename = "";
|
|
|
String fileExtendName = "";
|
|
|
String docImagefileid = "";
|
|
|
int versionId = 0;
|
|
|
long docImagefileSize = 0;
|
|
|
if (DocImageManager.next()) {
|
|
|
// DocImageManager会得到doc第一个附件的最新版本
|
|
|
|
|
|
docImagefilename = DocImageManager.getImagefilename();
|
|
|
fileExtendName = docImagefilename.substring(docImagefilename.lastIndexOf(".") + 1).toLowerCase();
|
|
|
docImagefileid = DocImageManager.getImagefileid();
|
|
|
docImagefileSize = DocImageManager.getImageFileSize(Util.getIntValue(docImagefileid));
|
|
|
versionId = DocImageManager.getVersionId();
|
|
|
}
|
|
|
if (accessoryCount > 1) {
|
|
|
fileExtendName = "htm";
|
|
|
}
|
|
|
//String imgSrc = AttachFileUtil.getImgStrbyExtendName(fileExtendName, 16);
|
|
|
boolean nodownload = SecCategoryComInfo1.getNoDownload(SecCategory).equals("1") ? true : false;
|
|
|
String filelink = "";
|
|
|
|
|
|
//打开文档判断是否在线预览,文档处已经做了全部的处理。所以这边直接走else逻辑
|
|
|
if (false && accessoryCount == 1 && (fileExtendName.equalsIgnoreCase("xls") || fileExtendName.equalsIgnoreCase("doc") || fileExtendName.equalsIgnoreCase("xlsx") || fileExtendName.equalsIgnoreCase("docx") || fileExtendName.equalsIgnoreCase("pdf"))) {
|
|
|
filelink = ServiceUtil.docViewUrl + "?f_weaver_belongto_userid=" + user.getUID() + "&f_weaver_belongto_usertype=" + f_weaver_belongto_usertype + "&id=" + showid + "&imagefileId=" + docImagefileid + "&isFromAccessory=true&isrequest="+isrequest+"&requestid=" + requestid + "&desrequestid=" + desrequestid + authSignatureInfo;
|
|
|
} else {
|
|
|
filelink = ServiceUtil.docViewUrl + "?f_weaver_belongto_userid=" + user.getUID() + "&f_weaver_belongto_usertype=" + f_weaver_belongto_usertype + "&id=" + showid + "&isrequest="+isrequest+"&requestid=" + requestid + "&desrequestid=" + desrequestid + authSignatureInfo;
|
|
|
}
|
|
|
String downloadlink = "";
|
|
|
if (accessoryCount == 1 && !isprint && ((!fileExtendName.equalsIgnoreCase("xls") && !fileExtendName.equalsIgnoreCase("doc")) || !nodownload)) {
|
|
|
downloadlink = weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + docImagefileid + "&download=1&requestid=" + requestid + "&desrequestid=" + desrequestid + authSignatureInfo;
|
|
|
}
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
map.put("showid", showid); //附件ID
|
|
|
map.put("docImagefilename", docImagefilename); //附件名称
|
|
|
map.put("fileExtendName", fileExtendName); //附件后缀名
|
|
|
map.put("docImagefileid", docImagefileid);
|
|
|
map.put("versionId", versionId);
|
|
|
map.put("docImagefileSize", docImagefileSize);
|
|
|
map.put("nodownload", nodownload);
|
|
|
map.put("tempshowname", tempshowname);
|
|
|
map.put("filelink", filelink);
|
|
|
map.put("downloadlink", downloadlink);
|
|
|
map.put("authStr",authStr);
|
|
|
map.put("authSignatureStr",authSignatureStr);
|
|
|
boolean docright = true;
|
|
|
if("1".equals(new WorkflowConfigComInfo().getValue("file_download_use_docright"))){
|
|
|
DocViewPermission docViewPermission = new DocViewPermission();
|
|
|
docright = docViewPermission.getShareLevel(Util.getIntValue(showid), user, false).get(DocViewPermission.DOWNLOAD);
|
|
|
new BaseBean().writeLog("流程附件下载权限走知识组权限:docright:"+docright+";showid:"+showid);
|
|
|
}
|
|
|
map.put("showdownload", docright && (!Strings.isNullOrEmpty(downloadlink)) );
|
|
|
annexdocs.add(map);
|
|
|
}
|
|
|
//需要按照存放顺序显示,存放顺序即log_annexdocids的顺序
|
|
|
String [] idssort = log_annexdocids.split(",");
|
|
|
List<Map<String, Object>> annexdocssort = new ArrayList<Map<String, Object>>();
|
|
|
for(String sort: idssort) {
|
|
|
for(int si = 0;si<annexdocs.size();si++){
|
|
|
if(sort.trim().equals(annexdocs.get(si).get("showid").toString().trim())){
|
|
|
annexdocssort.add(annexdocs.get(si));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(annexdocs.size() != annexdocssort.size()){
|
|
|
annexdocssort = annexdocs;//防止循环导致数据丢失
|
|
|
}
|
|
|
logmap.put("annexdocs", annexdocssort);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 接收人 默认显示10个接收人
|
|
|
int showCount = isFromMobile ? 40: 20;
|
|
|
String[] initUsers = null;
|
|
|
// 流程退回 || 流程分叉节点提交
|
|
|
if("3".equals(log_logtype) || (1 == log_nodeattribute && (log_logtype.equals("0") || log_logtype.equals("2") || log_logtype.equals("3") || log_logtype.equals("t")))) {
|
|
|
//if (((log_nodeattribute != 2) && (log_logtype.equals("0") || log_logtype.equals("2") || log_logtype.equals("3") || log_logtype.equals("t")))) {// 分叉起始或者主干退回到分叉
|
|
|
String[] _log_receivedPersons = wfLinkInfo.getForkStartReceivers(requestid, tempRequestLogId, log_nodeid, log_operatedate, log_operatetime, log_logtype, log_destnodeid);
|
|
|
log_receivedPersons = _log_receivedPersons[0];
|
|
|
}
|
|
|
if (log_receivedPersons.length() > 0 && log_receivedPersons.trim().endsWith(",")) {
|
|
|
log_receivedPersons = log_receivedPersons.substring(0, log_receivedPersons.length() - 1);
|
|
|
}
|
|
|
|
|
|
initUsers = log_receivedPersons.split(",");
|
|
|
initUser = "";
|
|
|
if (initUsers.length > showCount) {
|
|
|
for (int j = 0; j < showCount; j++) {
|
|
|
initUser += "," + initUsers[j];
|
|
|
}
|
|
|
if (initUser.length() > 1) {
|
|
|
initUser = initUser.substring(1);
|
|
|
}
|
|
|
} else {
|
|
|
initUser = log_receivedPersons;
|
|
|
}
|
|
|
|
|
|
loadMobileInfo(htlog,logmap);
|
|
|
// 如果是打印页面,则不隐藏接收人
|
|
|
|
|
|
logmap.put("receiveUser", ServiceUtil.convertChar(initUser));
|
|
|
logmap.put("receiveUserCount", Util.splitString2List(log_receivedPersonIds,",").size());
|
|
|
|
|
|
//判断是否需要显示意见接收人栏的加载更多按钮
|
|
|
boolean showMoreReceiveBtn = log_receivedPersonIds.split(",").length > log_receivedPersons.split(",").length ? true : false;
|
|
|
logmap.put("showMoreReceiveBtn", showMoreReceiveBtn);
|
|
|
|
|
|
// 操作时间
|
|
|
logmap.put("log_operatedate", Util.toScreen(log_operatedate, languageidfromrequest));
|
|
|
logmap.put("log_operatetime", Util.toScreen(log_operatetime, languageidfromrequest));
|
|
|
|
|
|
|
|
|
// 节点信息
|
|
|
logmap.put("log_nodename", Util.toScreen(log_nodename, languageidfromrequest));
|
|
|
String logtype = log_logtype;
|
|
|
String operationname = "";
|
|
|
if("1".equals(isRobotNode)){
|
|
|
operationname = Util.formatMultiLang(new RobotNodeServiceBiz().getRobotNodeSet(Util.getIntValue(log_nodeid)).getOperateTypeName(), languageidfromrequest + "");
|
|
|
}
|
|
|
if("".equals(operationname)){
|
|
|
operationname = RequestLogOperateName.getOperateName("" + workflowid, "" + requestid, "" + log_nodeid, logtype, log_operator, languageidfromrequest,log_operatedate,log_operatetime);
|
|
|
}
|
|
|
|
|
|
logmap.put("operationname", operationname);
|
|
|
|
|
|
// 引用按钮
|
|
|
boolean isReference = (!isHideInput.equals("1") && ((isintervenor == 1 || urger == 1 || submit == 1) && !isFormSignature.equals("1")) && !log_logtype.equals("t") && (log_remarkHtml != null && !"".equals(log_remarkHtml.trim())));
|
|
|
|
|
|
logmap.put("isReference", isReference);
|
|
|
|
|
|
logmap.put("displaytype", log_operatortype);
|
|
|
|
|
|
// 转发
|
|
|
logmap.put("forward", forward);
|
|
|
logmap.put("logtype",log_logtype);
|
|
|
|
|
|
loglistnew.add(logmap);
|
|
|
}
|
|
|
if (isdebug) {
|
|
|
System.out.println("requestlog-128-requestid-" + requestid + "-userid-" + userid + "-" + (System.currentTimeMillis() - start));
|
|
|
start = System.currentTimeMillis();
|
|
|
}
|
|
|
resultDatas.put("totalCount", RequestLogCusBiz.getRequestLogTotalCount(requestid, workflowid, viewLogIds, sqlwhere));
|
|
|
|
|
|
//相关请求增加session信息
|
|
|
//ServiceUtil.addRelatedWfSession(request, this.requestid, signrequestids);
|
|
|
|
|
|
resultDatas.put("loglist", loglistnew);
|
|
|
return resultDatas;
|
|
|
}
|
|
|
|
|
|
//支持手机端
|
|
|
private void loadMobileInfo(Hashtable htlog,Map<String, Object> logmap){
|
|
|
//设置手写签批
|
|
|
String attenchmentID = Util.null2String(htlog.get("handwrittensignid"));
|
|
|
new BaseBean().writeLog("handwrittensignid123:"+attenchmentID);
|
|
|
List<DocAttachment> docAttachments = new ArrayList<>();
|
|
|
String[] attenchmentids = attenchmentID.split(",");
|
|
|
if(!"".equals(attenchmentID)) {
|
|
|
for (int i = 0; i < attenchmentids.length; i++) {
|
|
|
int attenchmentid = Util.getIntValue(attenchmentids[i]);
|
|
|
if (attenchmentid > 0) {
|
|
|
String strData = WorkflowSpeechAppend.getAppend(attenchmentid);
|
|
|
logmap.put("handWrittenSign", "data:image/png;base64," + strData);
|
|
|
//获取手写签章详细信息
|
|
|
DocAttachment docAttObj = WorkflowSpeechAppend.getAttachment(attenchmentid);
|
|
|
docAttachments.add(docAttObj);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
logmap.put("handWrittenSignDoc", docAttachments);
|
|
|
//设置语音附件
|
|
|
int attenchmentID1 = Util.getIntValue(Util.null2String(htlog.get("speechattachmentid")));
|
|
|
String speechAttachmente9 = Util.null2String(htlog.get("speechAttachmente9"));
|
|
|
if(attenchmentID1 > 0){
|
|
|
if(!"".equals(speechAttachmente9)) {
|
|
|
speechAttachmente9 += "," + attenchmentID1;
|
|
|
} else {
|
|
|
speechAttachmente9 = attenchmentID1 + "";
|
|
|
}
|
|
|
}
|
|
|
List<String> speechAttachmetnDatas = new ArrayList <>();
|
|
|
if(!"".equals(speechAttachmente9)) {
|
|
|
String[] speechIds = Util.splitString(speechAttachmente9,",");
|
|
|
for(String speechid : speechIds) {
|
|
|
int _speechid = Util.getIntValue(speechid);
|
|
|
if(_speechid > 0) {
|
|
|
DocAttachment attenchmentDoc = WorkflowSpeechAppend.getAttachment(_speechid);
|
|
|
String fileType = attenchmentDoc.getFiletype();
|
|
|
if(fileType.indexOf("/") >=0){
|
|
|
fileType = fileType.substring(fileType.indexOf("/") + 1);
|
|
|
}
|
|
|
speechAttachmetnDatas.add("data:audio/" + fileType + ";base64," + WorkflowSpeechAppend.getAppend(_speechid));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
logmap.put("speechAttachmetnDatas",speechAttachmetnDatas);
|
|
|
|
|
|
//电子签章
|
|
|
String remark = Util.null2String(logmap.get("log_remarkHtml"));
|
|
|
String eletriSignature = WorkflowSpeechAppend.getElectrSignatrue(remark);
|
|
|
if (eletriSignature != null && !"".equals(eletriSignature)){
|
|
|
Pattern pattern = Pattern.compile("/weaver/weaver\\.file\\.SignatureDownLoad\\?markId=\\d+");
|
|
|
Matcher matcher = pattern.matcher(eletriSignature);
|
|
|
if(matcher.find()){
|
|
|
String tempurl = matcher.group();
|
|
|
logmap.put("eletriSignature", tempurl);
|
|
|
}else{
|
|
|
writeLog(String.format("The eletriSignature URL of '%1$s' is null.", eletriSignature));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 加载节点操作者信息
|
|
|
*
|
|
|
* @param isOldWf
|
|
|
* @param htlog
|
|
|
* @param creatorNodeId
|
|
|
* @param recordSetlog3
|
|
|
*/
|
|
|
private void loadOperatorInfo(boolean isOldWf, Hashtable htlog, int creatorNodeId, RecordSet recordSetlog3, Map<String, Object> logmap) {
|
|
|
int languageidfromrequest = user.getLanguage();
|
|
|
|
|
|
boolean isexsAgent = false;
|
|
|
boolean isinneruser = true;
|
|
|
String displayid = "";
|
|
|
String displayname = "";
|
|
|
String displaydepid = "";
|
|
|
String displaydepname = "";
|
|
|
String displaybyagentid = "";
|
|
|
String displaybyagentname = "";
|
|
|
|
|
|
String log_operatortype = Util.null2String((String) htlog.get("operatortype"));
|
|
|
String log_operatorDept = Util.null2String((String) htlog.get("operatorDept"));
|
|
|
String log_operator = Util.null2String((String) htlog.get("operator"));
|
|
|
String log_agenttype = Util.null2String((String) htlog.get("agenttype"));
|
|
|
String log_agentorbyagentid = Util.null2String((String) htlog.get("agentorbyagentid"));
|
|
|
int log_nodeid = Util.getIntValue((String) htlog.get("nodeid"), 0);
|
|
|
if (log_operatortype.equals("0") && !"0".equals(Util.null2String(log_operatorDept)) && !"".equals(Util.null2String(log_operatorDept))) {
|
|
|
displaydepid = Util.toScreen(log_operatorDept, languageidfromrequest);
|
|
|
OrganizationShowSetBiz orgShowBiz = new OrganizationShowSetBiz();
|
|
|
displaydepname = Util.toScreen(orgShowBiz.getDepartmentShow("workflow", log_operatorDept), languageidfromrequest);
|
|
|
}
|
|
|
|
|
|
String robotNodeName = new RobotNodeServiceBiz().getRobotNodeSet(log_nodeid).getOperatorName();
|
|
|
if (isOldWf) {
|
|
|
if (log_operatortype.equals("0")) {
|
|
|
if (isprint == false) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(ResourceComInfo.getLastname(log_operator), languageidfromrequest);
|
|
|
} else {
|
|
|
displayname = Util.toScreen(ResourceComInfo.getLastname(log_operator), languageidfromrequest);
|
|
|
}
|
|
|
} else if (log_operatortype.equals("1")) {
|
|
|
isinneruser = false;
|
|
|
if (isprint == false) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(CustomerInfoComInfo.getCustomerInfoname(log_operator), languageidfromrequest);
|
|
|
} else {
|
|
|
displayname = Util.toScreen(CustomerInfoComInfo.getCustomerInfoname(log_operator), languageidfromrequest);
|
|
|
}
|
|
|
} else if (log_operatortype.equals(RobotNodeBiz.operatortype)){
|
|
|
if (isprint == false) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(robotNodeName, languageidfromrequest);
|
|
|
} else {
|
|
|
displayname = Util.toScreen(robotNodeName, languageidfromrequest);
|
|
|
}
|
|
|
}else {
|
|
|
displayname = SystemEnv.getHtmlLabelName(468, languageidfromrequest);
|
|
|
}
|
|
|
} else {
|
|
|
if (log_operatortype.equals("0")) {
|
|
|
if (isprint == false) {
|
|
|
if (!log_agenttype.equals("2")) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(ResourceComInfo.getLastname(log_operator), languageidfromrequest);
|
|
|
} else if (log_agenttype.equals("2") || log_agenttype.equals("1")) {
|
|
|
isexsAgent = true;
|
|
|
displaybyagentid = log_agentorbyagentid;
|
|
|
displaybyagentname = Util.toScreen(ResourceComInfo.getLastname(log_agentorbyagentid), languageidfromrequest);
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(ResourceComInfo.getLastname(log_operator), languageidfromrequest);
|
|
|
} else {
|
|
|
}
|
|
|
} else {
|
|
|
if (!log_agenttype.equals("2")) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(ResourceComInfo.getLastname(log_operator), languageidfromrequest);
|
|
|
} else if (log_agenttype.equals("2")) {
|
|
|
isexsAgent = true;
|
|
|
displayid = log_operator;
|
|
|
displaybyagentname = Util.toScreen(ResourceComInfo.getLastname(log_agentorbyagentid), languageidfromrequest);
|
|
|
displayname = Util.toScreen(ResourceComInfo.getLastname(log_operator), languageidfromrequest);
|
|
|
} else {
|
|
|
}
|
|
|
}
|
|
|
} else if (log_operatortype.equals("1")) {
|
|
|
isinneruser = false;
|
|
|
if (isprint == false) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(CustomerInfoComInfo.getCustomerInfoname(log_operator), languageidfromrequest);
|
|
|
} else {
|
|
|
displayname = Util.toScreen(CustomerInfoComInfo.getCustomerInfoname(log_operator), languageidfromrequest);
|
|
|
}
|
|
|
} else if (log_operatortype.equals(RobotNodeBiz.operatortype)){
|
|
|
if (isprint == false) {
|
|
|
displayid = log_operator;
|
|
|
displayname = Util.toScreen(robotNodeName, languageidfromrequest);
|
|
|
} else {
|
|
|
displayname = Util.toScreen(robotNodeName, languageidfromrequest);
|
|
|
}
|
|
|
} else {
|
|
|
displayname = SystemEnv.getHtmlLabelName(468, languageidfromrequest);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 节点操作者有代理 显示的格式为 bagenter->agenter
|
|
|
logmap.put("isexsAgent", isexsAgent);
|
|
|
logmap.put("log_agentorbyagentid", log_agentorbyagentid);
|
|
|
logmap.put("displaybyagentname", displaybyagentname);
|
|
|
|
|
|
// 节点操作者
|
|
|
logmap.put("isinneruser", isinneruser);
|
|
|
logmap.put("displayid", displayid);
|
|
|
logmap.put("displayname", displayname);
|
|
|
|
|
|
// 操作者部门
|
|
|
logmap.put("displaydepid", displaydepid);
|
|
|
logmap.put("displaydepname", displaydepname);
|
|
|
}
|
|
|
|
|
|
public HttpServletRequest getRequest() {
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
public void setRequest(HttpServletRequest request) {
|
|
|
this.request = request;
|
|
|
}
|
|
|
|
|
|
public Map<String, String> getOperateMenuName(int tempnodeid, int language){
|
|
|
Map<String, String> operateNmae = new HashMap<>();
|
|
|
|
|
|
RightMenu rightMenu = new RightMenu();
|
|
|
rightMenu.setSystemMenuType(SystemMenuType.FORWARD);
|
|
|
rightMenu.setSystemSmallType(2);
|
|
|
String forwardName = MenuOrderSetUtil.getLogName(Util.getIntValue(workflowid),tempnodeid,language,rightMenu);
|
|
|
operateNmae.put("forwardName",forwardName);
|
|
|
return operateNmae;
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args){
|
|
|
String value = "2020-10-11 11:22:0.00";
|
|
|
value = value.substring(0,10);
|
|
|
System.out.println("value2222:"+value);
|
|
|
}
|
|
|
}
|