同步本地代码

master
rengp 1 year ago
parent eed0970f0b
commit 21a4b5e9b4

@ -250,7 +250,7 @@ public class LoginUtil extends BaseBean {
if("1".equals(isrsaopen)){
decriptList.add(login_id) ;
decriptList.add(user_password) ;
List<String> resultList = rsa.decryptList(request,decriptList) ;
List<String> resultList = rsa.decryptList(request,decriptList,true) ;
login_id = resultList.get(0) ;
user_password = resultList.get(1) ;
@ -2022,7 +2022,7 @@ public class LoginUtil extends BaseBean {
if ("1".equals(isrsaopen)) {
decriptList.add(login_id);
decriptList.add(user_password);
List<String> resultList = rsa.decryptList(request, decriptList);
List<String> resultList = rsa.decryptList(request, decriptList,true);
login_id = resultList.get(0);
user_password = resultList.get(1);
@ -2244,7 +2244,8 @@ public class LoginUtil extends BaseBean {
if (imsgid == 184) {
errorMsg[2] = SystemEnv.getErrorMsgName(imsgid, languageid);
} else {
errorMsg[2] = (String) resObj.get("msg");
// errorMsg[2] = (String) resObj.get("msg");
errorMsg[2] = "账号或密码错误";
}
}
bb.writeLog("最后返回的msg"+errorMsg);

@ -0,0 +1,14 @@
package com.api.nsyh.opinion;
import com.weavernorth.nsyh.opinion.web.WfOpinionAction;
import javax.ws.rs.Path;
/**
* @Author :
* @Date : 2022/3/1 9:39
* @Version 1.0
*/
@Path("/nsyh/opinion")
public class WfOpinion extends WfOpinionAction {
}

@ -1,43 +1,26 @@
package com.customization.ProxyRequestForm;
package com.customization.doReadItProxy.ProxyRequestFormService;
import com.alibaba.fastjson.JSONObject;
import com.engine.core.cfg.annotation.CommandDynamicProxy;
import com.engine.core.cfg.annotation.ServiceDynamicProxy;
import com.engine.core.cfg.annotation.ServiceMethodDynamicProxy;
import com.engine.core.impl.aop.AbstractServiceProxy;
import com.engine.core.interceptor.AbstractCommandProxy;
import com.engine.core.interceptor.Command;
import com.engine.workflow.cmd.requestForm.GetRightMenuCmd;
import com.engine.workflow.constant.menu.SystemMenuType;
import com.engine.workflow.constant.requestForm.RequestMenuType;
import com.engine.workflow.entity.requestForm.AutoApproveEntity;
import com.engine.workflow.entity.requestForm.RightMenu;
import com.engine.workflow.service.RequestFormService;
import com.engine.workflow.service.RequestService;
import com.engine.workflow.service.impl.RequestFormServiceImpl;
import com.wbi.util.ParamUtil;
import lombok.extern.log4j.Log4j;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.systeminfo.SystemEnv;
import weaver.workflow.request.RequestManager;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
/**
* <Description> <br>
* @author han.mengyu <br>
* @version 1.0 <br>
* @createDate 2021/12/29 <br>
*
*/
@ServiceDynamicProxy(target = RequestFormServiceImpl.class, desc = "移动端小号拦截小红点")
@Slf4j
@ -45,20 +28,32 @@ public class ProxyRequestFormServiceImpl extends AbstractServiceProxy implements
@Override
@ServiceMethodDynamicProxy(desc="移动端小号拦截小红点")
@ServiceMethodDynamicProxy(desc="移动端小号拦截未读标记,OA系统流程")
public Map<String, Object> updateReqInfo(HttpServletRequest httpServletRequest) {
RecordSet rs = new RecordSet();
String isOpen = rs.getPropValue("updateUnread", "isOpen");
//为空默认不开启,1开启,0不开启
try {
if (StringUtil.isEmpty(isOpen) || "0".equals(isOpen)){
return (Map<String, Object>)executeMethod(httpServletRequest);
}else if ("1".equals(isOpen)) {
String loginidweaver = getCookie(httpServletRequest, "loginidweaver");
log.info("loginidweaver==>{}",loginidweaver);
Map paramMap = ParamUtil.request2Map(httpServletRequest);
log.info("paramMap==>{}",paramMap);
//此id为小号//不请求已读接口
if(loginidweaver.length() == 8 && "1".equals(paramMap.get("ismobile"))){
return null;
return new HashMap<>();
}else {
executeMethod(httpServletRequest);
return (Map<String, Object>)executeMethod(httpServletRequest);
}
return null;
}
}catch (Exception e){
e.printStackTrace();
log.error(e.getMessage());
return (Map<String, Object>) executeMethod(httpServletRequest);
}
return new HashMap<>();
}
private String getCookie(HttpServletRequest request,String name){

@ -0,0 +1,142 @@
package com.customization.doReadItProxy.proxyRequestListService;
import com.engine.core.cfg.annotation.ServiceDynamicProxy;
import com.engine.core.cfg.annotation.ServiceMethodDynamicProxy;
import com.engine.core.impl.aop.AbstractServiceProxy;
import com.engine.workflow.service.RequestListService;
import com.engine.workflow.service.impl.RequestListServiceImpl;
import com.wbi.util.ParamUtil;
import lombok.extern.slf4j.Slf4j;
import weaver.conn.RecordSet;
import weaver.general.StringUtil;
import weaver.general.Util;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@ServiceDynamicProxy(target = RequestListServiceImpl.class, desc = "移动端小号拦截小红点")
@Slf4j
public class ProxyRequestListServiceImpl extends AbstractServiceProxy implements RequestListService {
@Override
@ServiceMethodDynamicProxy(desc="移动端小号拦截未读标记,异构系统待办")
public Map<String, Object> doReadIt(HttpServletRequest httpServletRequest) {
RecordSet rs = new RecordSet();
String isOpen = rs.getPropValue("updateUnread", "isOpen");
if (StringUtil.isEmpty(isOpen) || "0".equals(isOpen)){
return (Map<String, Object>)executeMethod(httpServletRequest);
}else if ("1".equals(isOpen)) {
String loginidweaver = getCookie(httpServletRequest, "loginidweaver");
log.info("loginidweaver==>{}",loginidweaver);
Map paramMap = ParamUtil.request2Map(httpServletRequest);
log.info("paramMap==>{}",paramMap);
String ua = Util.null2String(paramMap.get("request_header_user_agent"));
//此id为小号//不请求已读接口
if(loginidweaver.length() == 8 && ua.contains("E-Mobile7")){
return new HashMap<String, Object>();
}else {
return (Map<String, Object>)executeMethod(httpServletRequest);
}
}
return new HashMap<String, Object>();
}
private String getCookie(HttpServletRequest request,String name){
try {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if(name.equals(cookie.getName())){
return Util.null2String(cookie.getValue());
}
}
}
}catch (Exception e){
log.error("getCookieError:{}",e.getMessage());
e.printStackTrace();
}
return "";
}
@Override
public Map<String, Object> doingBaseInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> doingCountInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> doneBaseInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> doneCountInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> mineBaseInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> mineCountInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> splitPageKey(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> getDoingNewCount(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> doSaveData(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> getDefaultList(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> getUnoperators(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> getWfListParams(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> getHendledReqIds(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> continnuationProcessInfo(HttpServletRequest httpServletRequest) {
return null;
}
@Override
public Map<String, Object> judgeReloadList(HttpServletRequest httpServletRequest) {
return null;
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,31 @@
package com.engine.custom.archives.corn;
import com.engine.custom.archives.service.PushArchivesCornService;
import lombok.extern.slf4j.Slf4j;
import weaver.interfaces.schedule.BaseCronJob;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
@Slf4j
public class PushArchivesCorn extends BaseCronJob {
public String filePath = "/opt/weaver/filesys/test";
public String Url = "http://14.1.206.240:18080/fcscloud/composite/upload";
public String templatePath = "/opt/weaver/filesys/template.docx";
public String reqid = "";
PushArchivesCornService service = new PushArchivesCornService();
@Override
public void execute() {
log.info("PushArchivesCorn====Begin========");
HashMap<String, String> param = new HashMap<>();
param.put("filePath",filePath);
param.put("Url",Url);
param.put("requestid",reqid);
param.put("templatePath",templatePath);
service.setProp(param);
service.pushArchives(param);
}
}

@ -0,0 +1,84 @@
package com.engine.custom.archives.entity;
import cn.afterturn.easypoi.excel.annotation.Excel;
public class Dept {
@Excel(name = "组织id")
private String id;
@Excel(name = "组织名称")
private String name;
@Excel(name = "组织类型")
private String type;
@Excel(name = "父组织id")
private String parentId;
@Excel(name = "组织全路径")
private String allName;
public Dept() {
}
public Dept(String id, String name, String type, String parentId, String allName) {
this.id = id;
this.name = name;
this.type = type;
this.parentId = parentId;
this.allName = allName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getAllName() {
return allName;
}
public void setAllName(String allName) {
this.allName = allName;
}
@Override
public String toString() {
return "Dept{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", type='" + type + '\'' +
", parentId='" + parentId + '\'' +
", allName='" + allName + '\'' +
'}';
}
}

@ -0,0 +1,19 @@
package com.engine.custom.archives.service;
import weaver.hrm.User;
import java.util.Map;
public interface HtmlToPdfServiceCus {
public Map<String, Object> getHtml(Map<String,Object> params, User user);
/*
* htmlpdf
*/
public Map<String, Object> getFormDatas(Map<String,Object> params);
/*
* 线html
*/
public Map<String, Object> getFormInfoForWM(Map<String,Object> params);
}

@ -0,0 +1,226 @@
package com.engine.custom.archives.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.core.impl.Service;
import com.engine.custom.archives.service.HtmlToPdfServiceCus;
import com.engine.custom.archives.workflow.cmd.requestLog.LoadRequestLogDataCusCmd;
import com.engine.workflow.biz.RequestLogBiz;
import com.engine.workflow.biz.requestForm.LayoutInfoBiz;
import com.engine.workflow.cmd.requestForm.*;
import com.engine.workflow.entity.requestForm.TableInfo;
import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.workflow.request.RequestManagerForTipsinfo;
import weaver.workflow.request.WFLinkInfo;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HtmlToPdfServiceCusImpl extends Service implements HtmlToPdfServiceCus {
@Override
public Map<String, Object> getHtml(Map<String, Object> reqpParams, User user) {
return null;
}
@Override
public Map<String, Object> getFormDatas(Map<String, Object> reqpParams) {
Map<String, Object> apidatas = new HashMap<String, Object>();
Map<String, Object> result =new HashMap<String, Object>();
String requestid = Util.null2String(reqpParams.get("requestid"));
String modeid = Util.null2String(reqpParams.get("modeid"));
//只需要转换html
int onlyHtml = Util.getIntValue(Util.null2String(reqpParams.get("onlyHtml")),0);
//用wktohtml转换
int useWk = Util.getIntValue(Util.null2String(reqpParams.get("useWk")),0);
int useItext7 = Util.getIntValue(Util.null2String(reqpParams.get("useItext7")),0);
//底部签字意见列表显示的数量
int pageSize = Util.getIntValue(Util.null2String(reqpParams.get("pageSize")),100);
//pdf或html目录
String path = Util.null2String(reqpParams.get("path"));
String filename = Util.null2String(reqpParams.get("filename"));
int isTest = Util.getIntValue(Util.null2String(reqpParams.get("isTest")));
int keepsign = Util.getIntValue(Util.null2String(reqpParams.get("keepsign")));
boolean onlinehtml = reqpParams.containsKey("onlinehtml") && (boolean) reqpParams.get("onlinehtml");
Map<String, Object> requestMap = new HashMap<>();
requestMap.put("requestid",requestid);
requestMap.put("modeid",modeid);
requestMap.put("limitauth",Util.null2String(reqpParams.get("limitauth")));
requestMap.put("forceNoPaging",1); //明细强制不分页
new BaseBean().writeLog("HtmltoPdfServiceimpl ---requestid:"+requestid+"-----modeid:"+modeid);
long start2 = System.currentTimeMillis();
//第一步:获取基础信息参数
Map<String, Object> params = commandExecutor.execute(new GetPdfParamsCmd(requestMap,user));
apidatas.put("params",params);
params.put("onlyHtml",onlyHtml);
params.put("useWk",useWk);
params.put("useItext7",useItext7);
params.put("path",path);
params.put("filename",filename);
params.put("isTest",isTest);
params.put("keepsign",keepsign);
params.put("onlinehtml",onlinehtml);
int ismode = Util.getIntValue(Util.null2String(params.get("ismode")), 0);
int layoutversion = Util.getIntValue(Util.null2String(params.get("layoutversion")), 0);
//生成普通模式模板布局信息
Map<String, Object> commonLayout = new HashMap<String, Object>();
if (ismode == 0) {
commonLayout = commandExecutor.execute(new GenerateCommonLayoutCmd(params, user));
}
//加载表单信息,包括字段信息、明细信息等
Map<String, Object> forminfo = commandExecutor.execute(new FormInfoCmd(requestMap, user, params, commonLayout));
apidatas.putAll(forminfo);
//联动配置
apidatas.put("linkageCfg", commandExecutor.execute(new LinkageCfgCmd(params,user)));
//加载主表数据
Map<String, Object> maindata = commandExecutor.execute(new FormDataCmd(requestMap, user, params, (Map<String, TableInfo>) forminfo.get("tableInfo")));
apidatas.put("maindata", maindata.get("datas"));
//明细表数据
Map<String, TableInfo> tableinfomap = (Map<String, TableInfo>)forminfo.get("tableInfo");
List<String> detailmark = new ArrayList<String> ();
for (String key:tableinfomap.keySet()){
if (key.contains("detail_")){
detailmark.add(key);
}
}
if (detailmark.size()>0){
String isprint = Util.null2String(params.get("isprint"));
requestMap.put("reqParams",JSON.toJSONString(params));
requestMap.put("ismode",ismode);
requestMap.put("ismonitor","0");
requestMap.put("isprint",isprint);
requestMap.put("modeid",modeid);
requestMap.put("detailmark", StringUtils.join(detailmark.toArray(), ","));
Map<String, Object> detaildata = commandExecutor.execute(new FormDataCmd(requestMap, user));
apidatas.put("detaildata", detaildata);
}
//第五步:模板布局
if (ismode == 0 || (ismode == 2 && layoutversion == 2)) {
String layoutStr = "";
if (ismode == 0) { //普通模式
layoutStr = Util.null2String(commonLayout.get("layoutStr"));
} else if (ismode == 2) { //html模式
int layoutid = Util.getIntValue(Util.null2String(params.get("modeid")), 0);
layoutStr = new LayoutInfoBiz().getLayoutStr(layoutid);
}
apidatas.put("datajson",layoutStr);
}else {
result.put("unsupported",""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005682,weaver.general.ThreadVarLanguage.getLang())+"");
return result;
}
RecordSet recordSet = new RecordSet();
//获取签字意见可查看的nodeid
String viewLogIdstr = RequestLogBiz.getViewLogIds(Util.getIntValue(requestid),user.getUID(),(int)params.get("workflowid"));
String src = Util.null2String(reqpParams.get("src"));
if ("intervenor".equals(src) ) {
List <String> canViewIds = new ArrayList <String>();
String tempNodeId = "-1";
recordSet.executeSql("select nodeid from workflow_flownode where workflowid= " + params.get("workflowid") + " and exists(select 1 from workflow_nodebase where id=workflow_flownode.nodeid and (requestid is null or requestid=" + requestid + "))");
while (recordSet.next()) {
tempNodeId = recordSet.getString("nodeid");
if (!canViewIds.contains(tempNodeId)) {
canViewIds.add(tempNodeId);
}
}
viewLogIdstr = String.join(",", canViewIds);
}
//获取签字意见
HttpServletRequest request = null;
int workflowid = (int) params.get("workflowid");
int nodeid =(int) params.get("nodeid");
String isFormSignature = "";
recordSet.executeSql("select isFormSignature from workflow_flownode where workflowId=" + workflowid + " and nodeId=" + nodeid);
if (recordSet.next()) {
isFormSignature = Util.null2String(recordSet.getString("isFormSignature"));
}
boolean isOldWf =false;
RequestManagerForTipsinfo requestManagerForTipsinfo = new RequestManagerForTipsinfo();
isOldWf = requestManagerForTipsinfo.isOldOrNewFlag(Util.getIntValue(requestid));
String maxrequestlogid = "";
params.put("requestid",requestid);
params.put("viewLogIds",viewLogIdstr);
params.put("creatorNodeId",WFLinkInfo.getCreatNodeId(workflowid+""));
params.put("isHideInput","1");
params.put("isFormSignature",isFormSignature);
params.put("pgnumber",1);
params.put("wfsignlddtcnt",pageSize); //底部签字意见一页的数量
params.put("orderbytype","desc");
params.put("isOldWf",isOldWf);
params.put("maxrequestlogid",maxrequestlogid);
params.put("isSubrequest",reqpParams.get("isSubrequest"));
Map<String,Object> requestlog =commandExecutor.execute(new LoadRequestLogDataCusCmd(request, user, params,"topdf"));
apidatas.put("requestLog",requestlog);
new BaseBean().writeLog(JSONObject.toJSONString(apidatas));
long end2 = System.currentTimeMillis()-start2;
BaseBean baseBean = new BaseBean();
baseBean.writeLog("loadform接口+底部签字意见+detail耗时"+end2);
//是否开启水印
apidatas.put("isOpenWaterMark",reqpParams.get("isOpenWaterMark"));
//转html/pdf
Map<String,Object> html = commandExecutor.execute(new HtmlToPdfCmd(apidatas,user));
result.putAll(html);
long end = System.currentTimeMillis()-start2;
baseBean.writeLog("【pdf】 总耗时:"+end);
return html;
}
@Override
public Map<String, Object> getFormInfoForWM(Map<String, Object> reqpParams) {
Map<String, Object> apidatas = new HashMap<String, Object>();
Map<String, Object> result =new HashMap<String, Object>();
String requestid = Util.null2String(reqpParams.get("requestid"));
String modeid = Util.null2String(reqpParams.get("modeid"));
Map<String, Object> requestMap = new HashMap<>();
requestMap.put("requestid",requestid);
requestMap.put("modeid",modeid);
requestMap.put("limitauth",Util.null2String(reqpParams.get("limitauth")));
requestMap.put("forceNoPaging",1); //明细强制不分页
long start2 = System.currentTimeMillis();
//第一步:获取基础信息参数
Map<String, Object> params = commandExecutor.execute(new GetPdfParamsCmd(requestMap,user));
apidatas.put("params",params);
int ismode = Util.getIntValue(Util.null2String(params.get("ismode")), 0);
int layoutversion = Util.getIntValue(Util.null2String(params.get("layoutversion")), 0);
//生成普通模式模板布局信息
Map<String, Object> commonLayout = new HashMap<String, Object>();
if (ismode == 0) {
commonLayout = commandExecutor.execute(new GenerateCommonLayoutCmd(params, user));
}
//加载表单信息,包括字段信息、明细信息等
Map<String, Object> forminfo = commandExecutor.execute(new FormInfoCmd(requestMap, user, params, commonLayout));
apidatas.putAll(forminfo);
//加载主表数据
Map<String, Object> maindata = commandExecutor.execute(new FormDataCmd(requestMap, user, params, (Map<String, TableInfo>) forminfo.get("tableInfo")));
apidatas.put("maindata", maindata.get("datas"));
return apidatas;
}
}

@ -0,0 +1,571 @@
/*
* Created on 2008-06-13
* Copyright (c) 2001-2008
*
*
*/
package com.engine.custom.archives.workflow.biz.requestForm;
import com.engine.workflow.biz.requestForm.WfToDocBiz;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.resource.ResourceComInfo;
import weaver.workflow.request.RequestManager;
import weaver.workflow.workflow.WorkflowComInfo;
import java.util.HashMap;
import java.util.Map;
/**
* Description:
* @author
* @date 2008-6-13
*
*/
public class RequestDocPropManagerCus extends BaseBean {
//private RecordSet rs;//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
//private RecordSet rsTwo;//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
private char flag = Util.getSeparator();
private WorkflowComInfo workflowComInfo;
private WfToDocBizCus wfToDocBiz;
/**
*
*/
public RequestDocPropManagerCus() {
//rs = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
//rsTwo = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
try {
workflowComInfo=new WorkflowComInfo();
} catch (Exception ex) {
}
}
public RequestDocPropManagerCus(WfToDocBizCus wfToDocBiz) {
this.wfToDocBiz = wfToDocBiz;
try {
workflowComInfo=new WorkflowComInfo();
} catch (Exception ex) {
}
}
/**
*
*
* @param requestManager RequestManager
*
* @param docIds id
*
*/
public void changeDocProp(RequestManager requestManager,String docIds) throws Exception{
RecordSet rs = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
RecordSet rsTwo = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
int requestId=requestManager.getRequestid();
int workflowId=requestManager.getWorkflowid();
int creater=requestManager.getCreater();
//创建人分部
int subCompanyId = 0;
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
subCompanyId = Util.getIntValue(resourceComInfo.getSubCompanyID("" + creater), 0);
} catch (Exception ex) {
ex.printStackTrace();
}
//安全性检查
if(requestId<=0
||workflowId<=0
||docIds==null
||docIds.trim().equals("")
){
return ;
}
String requestName=Util.null2String(requestManager.getRequestname());
// //2、根据workflowId获取创建文档字段、确定文件存放目录的字段
// RequestDoc requestDoc=new RequestDoc();
// ArrayList flowDoc=requestDoc.getDocFiled(""+workflowId);
// if(flowDoc==null||flowDoc.size()==0){
// return ;
// }
//writeLog("2");
// int flowDocField=Util.getIntValue((String)flowDoc.get(1),-1);//创建文档字段
// int flowDocCatField=Util.getIntValue((String)flowDoc.get(3),-1);// 确定文件存放目录的字段
// //创建文档字段必须选择
// if(flowDocField<=0){
// return ;
// }
int formId=Util.getIntValue(workflowComInfo.getFormId(""+workflowId),0);
String isBill=Util.null2String(workflowComInfo.getIsBill(""+workflowId));
if(!isBill.equals("1")){
isBill="0";
}
// //3、由创建文档字段、确定文件存放目录的字段获取文档id确定文件存放目录的字段值。
// String flowDocFieldName=null;
// String flowDocCatFieldName=null;
//
// String tableName="workflow_form";
// String sql=null;
// if(isBill.equals("1")){
// rs.executeSql("select tablename from workflow_bill where id = " + formId); // 查询工作流单据表的信息
// if (rs.next()){
// tableName = Util.null2String(rs.getString("tablename")); // 获得单据的主表
// }
// sql="select a.fieldname from workflow_billfield a where a.id="+flowDocField ;
// }else{
// sql="select a.fieldname from workflow_formdict a where a.id="+flowDocField ;
// }
// rs.executeSql(sql);
// if(rs.next()){
// flowDocFieldName=Util.null2String(rs.getString(1));
// }
//
// if(isBill.equals("1")){
// sql="select a.fieldname from workflow_billfield a where a.id="+flowDocCatField ;
// }else{
// sql="select a.fieldname from workflow_formdict a where a.id="+flowDocCatField ;
// }
// rs.executeSql(sql);
// if(rs.next()){
// flowDocCatFieldName=Util.null2String(rs.getString(1));
// }
//
// int docId=0;
// int selectItemId=-1;
// if(flowDocCatFieldName!=null&&!flowDocCatFieldName.trim().equals("")){
// sql="select "+flowDocFieldName+","+flowDocCatFieldName+" from "+tableName+" where requestId="+requestId;
// }else{
// sql="select "+flowDocFieldName+",-1 from "+tableName+" where requestId="+requestId;
// }
// rs.executeSql(sql);
// if(rs.next()){
// docId=Util.getIntValue(rs.getString(1),-1);
// selectItemId=Util.getIntValue(rs.getString(2),-1);
// }
// if(docId<=0||(","+docIds+",").indexOf(","+docId+",")<0){
// return ;
// }
//存文文档优化-根据选择框值设置存放目录
String wfdocpathfieldvalue = ""; //表单中存放目录的选择框字段值
String wfdocpathtype = "";
String wfdocpathfieldid = "";
String isAccordToSubCom = "";
if (wfToDocBiz!=null){
wfdocpathtype = Util.null2String(wfToDocBiz.getWfdocpathtype());
if (wfdocpathtype.equals("2")){
wfdocpathfieldvalue = Util.null2String(wfToDocBiz.getWfdocpathfieldvalue());
wfdocpathfieldid = Util.null2String(wfToDocBiz.getWfdocpathfieldid());
isAccordToSubCom = Util.null2String(wfToDocBiz.getIsAccordToSubCom());
}
}
//4、根据文档id获取文档所在的子目录
int docId=Util.getIntValue(docIds,0);
int secCategoryId=-1;
rs.executeSql("select secCategory from DocDetail where id="+docId);
if(rs.next()){
secCategoryId=Util.getIntValue(rs.getString("secCategory"),-1);
}
if(secCategoryId<=0){
return ;
}
//5、根据workflowId、selectItemId、secCategoryId获取docPropId
int docPropId=-1;
if (wfdocpathtype.equals("2")&&!wfdocpathfieldvalue.equals("")){
String sql = "select id from WorkflowToDocProp where workflowId=? and secCategoryId= ? and selectitemid =? and selectfieldid =? ";
if(isAccordToSubCom.equals("2"))
sql = sql+ " objid="+subCompanyId;
rs.executeQuery(sql,workflowId,secCategoryId,wfdocpathfieldvalue,wfdocpathfieldid);
if(rs.next()){
docPropId=Util.getIntValue(rs.getString("id"),-1);
}
}else {
rs.executeSql("select id from WorkflowToDocProp where workflowId="+workflowId+" and secCategoryId="+secCategoryId +" and selectitemid is null");
if(rs.next()){
docPropId=Util.getIntValue(rs.getString("id"),-1);
}
}
if(docPropId<=0){
return ;
}
//6、根据docPropId获取WorkflowToDocPropDetail中数据workflowFieldId要求大于0
int docPropFieldId=-1;
int workflowFieldId=-1;
String workflowFieldName=null;
String strDocPropFieldId="";
String strWorkflowFieldName="";
Map workflowFieldIdByDocPropFieldIdMap=new HashMap();
rs.executeSql("select docPropFieldId,workflowFieldId from WorkflowToDocPropDetail where docPropId="+docPropId+" and (workflowFieldId>=0 or workflowFieldId=-3 or workflowFieldId=-99) order by id asc");
while(rs.next()){
docPropFieldId=Util.getIntValue(rs.getString("docPropFieldId"),-1);
workflowFieldId=Util.getIntValue(rs.getString("workflowFieldId"),-1);
workflowFieldIdByDocPropFieldIdMap.put(""+docPropFieldId,""+workflowFieldId);
strDocPropFieldId+=","+docPropFieldId;
}
if(strDocPropFieldId.equals("")){
return ;
}
strDocPropFieldId=strDocPropFieldId.substring(1);
Map mainFieldValueMap=this.getValueOfField(requestManager,workflowId);
String workflowFieldValue=null;
String workflowFieldShowName=null;
//7、获得DocDetail、cus_fielddata的更新语句。
boolean isEditCustomData=false;
rs.executeSql("select id from cus_fielddata where scope='DocCustomFieldBySecCategory' and scopeid=" + secCategoryId
+ " and id=" + docId);
if (rs.next()) {
isEditCustomData=true;
}
String docDetailSql="update DocDetail set ";
String docDetailSetStr="";
String cusFieldDataSql=null;
if(isEditCustomData){
cusFieldDataSql="update cus_fielddata set ";
}else{
cusFieldDataSql="insert into cus_fielddata";
}
String cusFieldDataSetStr="";
String cusFieldDataNameStr="";
String cusFieldDataValueStr="";
int docPropertyId=-1;
int docPropertyType=-1;
int fieldId=-1;
String fieldDbType= null;
String fieldHtmlType=null;
String type=null;
Map cusFieldValueMap=new HashMap();
int fieldLength=0;
rs.executeSql("select id as fieldId,fieldDbType,fieldHtmlType,type from cus_formdict");
while(rs.next()){
fieldId=Util.getIntValue(rs.getString("fieldId"),-1);
fieldDbType=Util.null2String(rs.getString("fieldDbType"));
fieldHtmlType=Util.null2String(rs.getString("fieldHtmlType"));
type=Util.null2String(rs.getString("type"));
cusFieldValueMap.put("fieldDbType"+fieldId,""+fieldDbType);
cusFieldValueMap.put("fieldHtmlType"+fieldId,""+fieldHtmlType);
cusFieldValueMap.put("type"+fieldId,""+type);
}
StringBuffer sb=new StringBuffer();
sb.append(" select id as docPropertyId,type as docPropertyType,fieldId ")
.append(" from DocSecCategoryDocProperty")
.append(" where secCategoryId=").append(secCategoryId)
.append(" and id in(").append(strDocPropFieldId).append(") ")
.append(" order by viewIndex ")
;
rs.executeSql(sb.toString());
while(rs.next()){
docPropertyId=Util.getIntValue(rs.getString("docPropertyId"),-1);
docPropertyType=Util.getIntValue(rs.getString("docPropertyType"),-1);
fieldId=Util.getIntValue(rs.getString("fieldId"),-1);
fieldDbType=Util.null2String((String)cusFieldValueMap.get("fieldDbType"+fieldId));
fieldHtmlType=Util.null2String((String)cusFieldValueMap.get("fieldHtmlType"+fieldId));
workflowFieldId=Util.getIntValue((String)workflowFieldIdByDocPropFieldIdMap.get(""+docPropertyId),0);
if (workflowFieldId==-99)//requestid
workflowFieldValue = requestId+"";
else
workflowFieldValue=Util.null2String((String)mainFieldValueMap.get("field"+workflowFieldId));
if(docPropertyType==1&&docDetailSetStr.indexOf(",docSubject=")<0&&!workflowFieldValue.trim().equals("")){//文档标题,docSubject,varchar(200)
docDetailSetStr += ",docSubject='"+interceptString(workflowFieldValue,200)+"'";
}else if(docPropertyType==2&&docDetailSetStr.indexOf(",docCode=")<0){//文档编号,docCode,varchar(200)
docDetailSetStr += ",docCode='"+interceptString(workflowFieldValue,200)+"'";
}else if(docPropertyType==3&&docDetailSetStr.indexOf(",docPublishType=")<0){//发布,docPublishType,char(1)
docDetailSetStr += ",docPublishType='"+interceptString(workflowFieldValue,1)+"'";
}else if(docPropertyType==4&&docDetailSetStr.indexOf(",docedition=")<0){//文档版本,docedition,int
docDetailSetStr += ",docedition="+Util.getIntValue(workflowFieldValue,-1);
}else if(docPropertyType==5&&docDetailSetStr.indexOf(",docStatus=")<0){//文档状态,docStatus,int
docDetailSetStr += ",docStatus="+Util.getIntValue(workflowFieldValue,-1);
}else if(docPropertyType==9&&docDetailSetStr.indexOf(",docDepartmentId=")<0){//部门,docDepartmentId,int
docDetailSetStr += ",docDepartmentId="+Util.getIntValue(workflowFieldValue,-1);
}else if(docPropertyType==12&&docDetailSetStr.indexOf(",keyword=")<0){//关键字,keyword,varchar(255)
docDetailSetStr += ",keyword='"+interceptString(workflowFieldValue,255)+"'";
}else if(docPropertyType==19&&docDetailSetStr.indexOf(",mainDoc=")<0){//主文档,mainDoc,int
docDetailSetStr += ",mainDoc="+Util.getIntValue(workflowFieldValue,docId);
}else if(docPropertyType==21&&docDetailSetStr.indexOf(",ownerId=")<0){//文档所有者,ownerId,int
docDetailSetStr += ",ownerId="+Util.getIntValue(workflowFieldValue,-1);
}else if(docPropertyType==22&&docDetailSetStr.indexOf(",invalidationDate=")<0){//失效时间,invalidationDate,char(10)
docDetailSetStr += ",invalidationDate='"+interceptString(workflowFieldValue,10)+"'";
}else if(docPropertyType==25&&docDetailSetStr.indexOf(",canPrintedNum=")<0){//可打印份数,canPrintedNum,int
docDetailSetStr += ",canPrintedNum="+Util.getIntValue(workflowFieldValue,0);
}else if(docPropertyType==0){//自定义字段
String cusfieldname="";
rsTwo.executeSql("select fieldname from cus_formdict where id="+fieldId);
if(rsTwo.next()){
cusfieldname=Util.null2String(rsTwo.getString("fieldname"));
}
if(isEditCustomData&&cusFieldDataSetStr.indexOf(",field" + fieldId + "=")<0){
cusFieldDataSetStr += ",field" + fieldId + "=";
if (fieldDbType.startsWith("text") || fieldDbType.startsWith("char")
|| fieldDbType.startsWith("varchar")|| fieldDbType.startsWith("browser")) {
if(fieldDbType.indexOf("(")>=0&&fieldDbType.indexOf(")")>fieldDbType.indexOf("(")+1){
fieldLength=Util.getIntValue(fieldDbType.substring(fieldDbType.indexOf("(")+1,fieldDbType.indexOf(")")),0);
}
if(fieldLength>0){
cusFieldDataSetStr += "'" + interceptString(workflowFieldValue,fieldLength) + "'";
}else{
cusFieldDataSetStr += "'" + workflowFieldValue + "'";
}
} else {
if(fieldHtmlType.equals("5")){
workflowFieldShowName=(String)mainFieldValueMap.get("fieldShowName"+workflowFieldId);
workflowFieldValue=this.getNewSelectValue(workflowFieldShowName,workflowFieldValue,fieldId);
}
if(fieldHtmlType.equals("1")){
cusFieldDataSetStr += Util.getDoubleValue(workflowFieldValue,0);
}else{
cusFieldDataSetStr += Util.getIntValue(workflowFieldValue,0);
}
}
}else if((cusFieldDataNameStr+",").indexOf("," + cusfieldname+",")<0){
cusFieldDataNameStr += "," + cusfieldname;
if (fieldDbType.startsWith("text") || fieldDbType.startsWith("char")
|| fieldDbType.startsWith("varchar")|| fieldDbType.startsWith("browser")) {
if(fieldDbType.indexOf("(")>=0&&fieldDbType.indexOf(")")>fieldDbType.indexOf("(")+1){
fieldLength=Util.getIntValue(fieldDbType.substring(fieldDbType.indexOf("(")+1,fieldDbType.indexOf(")")),0);
}
if(fieldLength>0){
cusFieldDataValueStr += ",'" + interceptString(workflowFieldValue,fieldLength) + "'";
}else{
cusFieldDataValueStr += ",'" + workflowFieldValue + "'";
}
} else {
if(fieldHtmlType.equals("5")){
workflowFieldShowName=(String)mainFieldValueMap.get("fieldShowName"+workflowFieldId);
workflowFieldValue=this.getNewSelectValue(workflowFieldShowName,workflowFieldValue,fieldId);
}
if(fieldHtmlType.equals("1")){
cusFieldDataValueStr += "," +Util.getDoubleValue(workflowFieldValue,0);
}else{
cusFieldDataValueStr += "," +Util.getIntValue(workflowFieldValue,0);
}
}
}
}
}
if (!docDetailSetStr.equals("")) {
docDetailSetStr = docDetailSetStr.substring(1);
docDetailSql += docDetailSetStr + " where id=" + docId;
//writeLog("docDetailSql:"+docDetailSql);
rs.executeSql(docDetailSql);
}
if(isEditCustomData){
if (!cusFieldDataSetStr.equals("")) {
cusFieldDataSetStr = cusFieldDataSetStr.substring(1);
cusFieldDataSql += cusFieldDataSetStr + " where scope='DocCustomFieldBySecCategory' and scopeid=" + secCategoryId + " and id=" + docId;
rs.executeSql(cusFieldDataSql);
}
}else{
if (!cusFieldDataNameStr.equals("")) {
cusFieldDataNameStr = cusFieldDataNameStr.substring(1);
cusFieldDataValueStr = cusFieldDataValueStr.substring(1);
cusFieldDataSql += "(scope,scopeid,id," + cusFieldDataNameStr + ") values('DocCustomFieldBySecCategory'," + secCategoryId + "," + docId
+ "," + cusFieldDataValueStr + ")";
rs.executeSql(cusFieldDataSql);
}
}
}
/**
*
* @param initString
* @param byteLength
* @return String
*/
private static String interceptString(String initString,int byteLength) {
try{
int counterOfDoubleByte = 0;
byte[] b = initString.getBytes("UTF-8");
if(b.length <= byteLength)
return initString;
for(int i = 0; i < byteLength; i++){
if(b[i] < 0)
counterOfDoubleByte++;
}
if(counterOfDoubleByte % 2 == 0)
return new String(b, 0, byteLength, "UTF-8");
else
return new String(b, 0, byteLength - 1, "UTF-8");
}catch(Exception ex){
return "";
}
}
/**
*
*
* @param mainRequest
* @param workflowId id
*
* @return Map fieldid
* fieldHtmlTypeid
* typeid
* fieldShowNameid
*/
private Map getValueOfField(RequestManager mainRequest,int workflowId){
RecordSet rs = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
RecordSet rsTwo = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
Map mainFieldValueMap=new HashMap();
//获取字段值
//根据主流程的id获得相关信息
String formId="";
String isBill="";
rs.executeSql(" select formId,isBill from workflow_base where id="+workflowId);
if(rs.next()){
formId=rs.getString(1);
isBill=rs.getString(2);
}
if(!"1".equals(isBill)){
isBill="0";
}
int requestId=mainRequest.getRequestid();
mainFieldValueMap.put("field-2",""+requestId);
mainFieldValueMap.put("field-3",mainRequest.getRequestname());
mainFieldValueMap.put("field-4",mainRequest.getRequestlevel());
mainFieldValueMap.put("field-5",mainRequest.getMessageType());
//获得主流程人力资源相关字段的值和页面类型、详细类型
String fieldId="";//字段id
String fieldName="";//字段名称
String fieldValue="";//字段值
String fieldHtmlType="";//页面类型
String type="";//详细类型
//String billId="0";
String tableName="workflow_form";
Map tempmap=new HashMap();
String fieldnames="";
int cols=0;
String sql="";
if("0".equals(isBill)){//如果不为单据,即为表单
sql="select b.id,b.fieldName,b.fieldHtmlType,b.type from workflow_formfield a,workflow_formdict b where a.fieldId=b.id and (a.isdetail<>'1' or a.isdetail is null) and a.formId="+formId;
}else{//否则为单据
//rs.executeSql(" select tableName from workflow_bill where id="+billId);
rs.executeSql(" select tableName from workflow_bill where id="+formId);
if(rs.next()){
tableName=Util.null2String(rs.getString("tableName"));
}
//sql="select id,fieldName,fieldHtmlType,type from workflow_billfield where (viewtype is null or viewtype<>1) and billId="+fieldId;
sql="select id,fieldName,fieldHtmlType,type from workflow_billfield where (viewtype is null or viewtype<>1) and billId="+formId;
}
rs.executeSql(sql);
while(rs.next()){
fieldId=Util.null2String(rs.getString("id"));
fieldName=Util.null2String(rs.getString("fieldName"));
fieldHtmlType=Util.null2String(rs.getString("fieldHtmlType"));
type=Util.null2String(rs.getString("type"));
if(!fieldName.equals("")){
if(fieldnames.equals("")){
fieldnames=fieldName;
}else{
fieldnames+=","+fieldName;
}
tempmap.put("col"+cols,fieldId);
cols++;
}
mainFieldValueMap.put("fieldHtmlType"+fieldId,fieldHtmlType);
mainFieldValueMap.put("type"+fieldId,type);
}
if(fieldnames.equals("")||tableName.equals("")){
return mainFieldValueMap;
}
String fieldShowName="";
sql="select "+fieldnames+" from "+tableName+" where requestid= "+requestId;
rs.executeSql(sql);
while(rs.next()){
for(int i=0;i<cols;i++){
fieldValue=Util.null2String(rs.getString(i+1));
//mainFieldValueMap.put("field"+tempmap.get("col"+i),fieldValue);
fieldId=Util.null2String((String)tempmap.get("col"+i));
fieldHtmlType=Util.null2String((String)mainFieldValueMap.get("fieldHtmlType"+fieldId));
if(fieldHtmlType.equals("5")&&!"".equals(fieldValue)){
rsTwo.executeSql(" select selectName from workflow_selectitem where fieldId="+fieldId+" and isBill="+isBill+" and selectValue="+fieldValue);
if(rsTwo.next()){
fieldShowName=Util.null2String(rsTwo.getString("selectName"));
mainFieldValueMap.put("fieldShowName"+fieldId,fieldShowName);
}
}
mainFieldValueMap.put("field"+fieldId,fieldValue);
}
}
return mainFieldValueMap;
}
/**
*
*
* @param workflowFieldShowName
* @param workflowFieldValue
* @param fieldId id
*
* @return String
*/
private String getNewSelectValue(String workflowFieldShowName, String workflowFieldValue,int fieldId) {
RecordSet rsTwo = new RecordSet();//277481: [90]集成中心-解决代码质量问题修复--操作数据库的对象不能作为成员变量
try{
String newSelectValue="";
workflowFieldShowName=Util.null2String(workflowFieldShowName);
rsTwo.executeSql("select selectValue from cus_selectitem where fieldId="+fieldId+" and selectName='"+Util.toHtml100(workflowFieldShowName)+"'");
if(rsTwo.next()){
newSelectValue=Util.null2String(rsTwo.getString("selectValue"));
}
if(newSelectValue.equals("")){
newSelectValue=workflowFieldValue;
}
return newSelectValue;
}catch(Exception ex){
return workflowFieldValue;
}
}
}

@ -0,0 +1,882 @@
package com.engine.custom.archives.workflow.biz.requestForm;
import com.api.doc.detail.util.DocSecretLevelUtil;
import com.engine.hrm.biz.HrmClassifiedProtectionBiz;
import com.engine.workflow.biz.requestForm.RequestSecLevelBiz;
import com.engine.workflow.biz.requestForm.WfToDocBiz;
import oracle.sql.CLOB;
import weaver.conn.ConnStatement;
import weaver.conn.RecordSet;
import weaver.docs.DocDetailLog;
import weaver.docs.category.DocTreeDocFieldComInfo;
import weaver.docs.docs.DocManager;
import weaver.docs.docs.DocViewer;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.workflow.request.RequestManager;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Map;
public class SaveDocDetailBizCus extends BaseBean {
private int docid;
private int maincategory;
private int subcategory;
private int seccategory;
private int doclangurage;
private String docapprovable;
private String docreplyable;
private String isreply;
private int replydocid;
private String docsubject;
private String docpublishtype;
private int itemid;
private int itemmaincategoryid;
private int hrmresid;
private int crmid;
private int projectid;
private int financeid;
private int doccreaterid;
private int docdepartmentid;
private String doccreatedate;
private String doccreatetime;
private int doclastmoduserid;
private String doclastmoddate;
private String doclastmodtime;
private int docapproveuserid;
private String docapprovedate;
private String docapprovetime;
private int docarchiveuserid;
private String docarchivedate;
private String docarchivetime;
private String docstatus;
private String parentids;
private int assetid;
private int ownerid;
private String keyword;
private int accessorycount; //附件总数
private int replaydoccount;
private String usertype;
private int doctype;
private String cancopy;
private String canremind;
private String orderable;
private String docextendname;
private String doccode;
private int docedition;
private int docsmalledition;
private int doceditionid;
private int ishistory;
private int approveType;
private int maindoc;
private int readoptercanprint;
private int docvaliduserid;
private String docvaliddate;
private String docvalidtime;
private String invalidationdate;
private String docCreaterType;
private String docLastModUserType;
private String docApproveUserType;
private String docValidUserType;
private String docInvalUserType;
private String docArchiveUserType;
private String docCancelUserType;
private String docPubUserType;
private String docReopenUserType;
private String ownerType;
private int canPrintedNum;
private String fromworkflow;
private String doccontent = "";
private int docowner;
private String clientIp;
public void setDocsmalledition(int docsmalledition) {
this.docsmalledition = docsmalledition;
}
public void setDocid(int docid) {
this.docid = docid;
}
public void setMaincategory(int maincategory) {
this.maincategory = maincategory;
}
public void setSubcategory(int subcategory) {
this.subcategory = subcategory;
}
public void setSeccategory(int seccategory) {
this.seccategory = seccategory;
}
public void setDoclangurage(int doclangurage) {
this.doclangurage = doclangurage;
}
public void setDocapprovable(String docapprovable) {
this.docapprovable = docapprovable;
}
public void setDocreplyable(String docreplyable) {
this.docreplyable = docreplyable;
}
public void setIsreply(String isreply) {
this.isreply = isreply;
}
public void setReplydocid(int replydocid) {
this.replydocid = replydocid;
}
public void setDocsubject(String docsubject) {
this.docsubject = docsubject;
}
public void setDocpublishtype(String docpublishtype) {
this.docpublishtype = docpublishtype;
}
public void setItemid(int itemid) {
this.itemid = itemid;
}
public void setItemmaincategoryid(int itemmaincategoryid) {
this.itemmaincategoryid = itemmaincategoryid;
}
public void setHrmresid(int hrmresid) {
this.hrmresid = hrmresid;
}
public void setCrmid(int crmid) {
this.crmid = crmid;
}
public void setProjectid(int projectid) {
this.projectid = projectid;
}
public void setFinanceid(int financeid) {
this.financeid = financeid;
}
public void setDoccreaterid(int doccreaterid) {
this.doccreaterid = doccreaterid;
}
public void setDocdepartmentid(int docdepartmentid) {
this.docdepartmentid = docdepartmentid;
}
public void setDoccreatedate(String doccreatedate) {
this.doccreatedate = doccreatedate;
}
public void setDoccreatetime(String doccreatetime) {
this.doccreatetime = doccreatetime;
}
public void setDoclastmoduserid(int doclastmoduserid) {
this.doclastmoduserid = doclastmoduserid;
}
public void setDoclastmoddate(String doclastmoddate) {
this.doclastmoddate = doclastmoddate;
}
public void setDoclastmodtime(String doclastmodtime) {
this.doclastmodtime = doclastmodtime;
}
public void setDocapproveuserid(int docapproveuserid) {
this.docapproveuserid = docapproveuserid;
}
public void setDocapprovedate(String docapprovedate) {
this.docapprovedate = docapprovedate;
}
public void setDocapprovetime(String docapprovetime) {
this.docapprovetime = docapprovetime;
}
public void setDocarchiveuserid(int docarchiveuserid) {
this.docarchiveuserid = docarchiveuserid;
}
public void setDocarchivedate(String docarchivedate) {
this.docarchivedate = docarchivedate;
}
public void setDocarchivetime(String docarchivetime) {
this.docarchivetime = docarchivetime;
}
public void setDocstatus(String docstatus) {
this.docstatus = docstatus;
}
public void setParentids(String parentids) {
this.parentids = parentids;
}
public void setAssetid(int assetid) {
this.assetid = assetid;
}
public void setOwnerid(int ownerid) {
this.ownerid = ownerid;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public void setAccessorycount(int accessorycount) {
this.accessorycount = accessorycount;
}
public void setReplaydoccount(int replaydoccount) {
this.replaydoccount = replaydoccount;
}
public void setUsertype(String usertype) {
this.usertype = usertype;
}
public void setDoctype(int doctype) {
this.doctype = doctype;
}
public void setCancopy(String cancopy) {
this.cancopy = cancopy;
}
public void setCanremind(String canremind) {
this.canremind = canremind;
}
public void setOrderable(String orderable) {
this.orderable = orderable;
}
public void setDocextendname(String docextendname) {
this.docextendname = docextendname;
}
public void setDoccode(String doccode) {
this.doccode = doccode;
}
public void setDocedition(int docedition) {
this.docedition = docedition;
}
public void setDoceditionid(int doceditionid) {
this.doceditionid = doceditionid;
}
public void setIshistory(int ishistory) {
this.ishistory = ishistory;
}
public void setApproveType(int approveType) {
this.approveType = approveType;
}
public void setMaindoc(int maindoc) {
this.maindoc = maindoc;
}
public void setReadoptercanprint(int readoptercanprint) {
this.readoptercanprint = readoptercanprint;
}
public void setDocvaliduserid(int docvaliduserid) {
this.docvaliduserid = docvaliduserid;
}
public void setDocvaliddate(String docvaliddate) {
this.docvaliddate = docvaliddate;
}
public void setDocvalidtime(String docvalidtime) {
this.docvalidtime = docvalidtime;
}
public void setInvalidationdate(String invalidationdate) {
this.invalidationdate = invalidationdate;
}
public void setDocCreaterType(String docCreaterType) {
this.docCreaterType = docCreaterType;
}
public void setDocLastModUserType(String docLastModUserType) {
this.docLastModUserType = docLastModUserType;
}
public void setDocApproveUserType(String docApproveUserType) {
this.docApproveUserType = docApproveUserType;
}
public void setDocValidUserType(String docValidUserType) {
this.docValidUserType = docValidUserType;
}
public void setDocInvalUserType(String docInvalUserType) {
this.docInvalUserType = docInvalUserType;
}
public void setDocArchiveUserType(String docArchiveUserType) {
this.docArchiveUserType = docArchiveUserType;
}
public void setDocCancelUserType(String docCancelUserType) {
this.docCancelUserType = docCancelUserType;
}
public void setDocPubUserType(String docPubUserType) {
this.docPubUserType = docPubUserType;
}
public void setDocReopenUserType(String docReopenUserType) {
this.docReopenUserType = docReopenUserType;
}
public void setOwnerType(String ownerType) {
this.ownerType = ownerType;
}
public void setCanPrintedNum(int canPrintedNum) {
this.canPrintedNum = canPrintedNum;
}
public void setFromworkflow(String fromworkflow) {
this.fromworkflow = fromworkflow;
}
public void setDoccontent(String doccontent) {
this.doccontent = doccontent;
}
public void setDocowner(int docowner) {
this.docowner = docowner;
}
public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
/*
* docid
*/
public int saveDoc(String requestid, RequestManager requestManager, WfToDocBizCus wfbiz, String userid) {
ConnStatement statement = new ConnStatement();
DocDetailLog dlog = new DocDetailLog();
boolean isoracle = Util.null2String(statement.getOrgindbtype()).equals("oracle");
String sql = "";
if (isoracle) {
sql = "insert into DocDetail("
+ "id,maincategory,subcategory,seccategory,doclangurage,"
+ "docapprovable,docreplyable,isreply,replydocid,docsubject,"
+ "docpublishtype,itemid,itemmaincategoryid,hrmresid,crmid,"
+ "projectid,financeid,doccreaterid,docdepartmentid,doccreatedate,"
+ "doccreatetime,doclastmoduserid,doclastmoddate,doclastmodtime,docapproveuserid,"
+ "docapprovedate,docapprovetime,docarchiveuserid,docarchivedate,docarchivetime,"
+ "docstatus,parentids,assetid,ownerid,keyword,"
+ "accessorycount,replaydoccount,usertype,doctype,cancopy,"
+ "canremind,orderable,docextendname"
+
",doccode,docedition,doceditionid,ishistory,approveType,maindoc,"
+ "readoptercanprint,docvaliduserid,docvaliddate,docvalidtime,invalidationdate"
+
",docCreaterType,docLastModUserType,docApproveUserType,docValidUserType,docInvalUserType"
+ ",docArchiveUserType,docCancelUserType,docPubUserType,docReopenUserType,ownerType"
+ ",canPrintedNum,fromworkflow,docsmalledition" +
") values(" + "?,?,?,?,?,?,?,?,?,?,"
+ "?,?,?,?,?,?,?,?,?,?," + "?,?,?,?,?,?,?,?,?,?,"
+ "?,?,?,?,?,?,?,?,?,?," + "?,?,?" +
",?,?,?,?,?,?" + ",?,?,?,?,?" +
",?,?,?,?,?" + ",?,?,?,?,?" + ",?,?,?" +
")";
try {
statement.setStatementSql(sql);
statement.setInt(1, docid);
statement.setInt(2, maincategory);
statement.setInt(3, subcategory);
statement.setInt(4, seccategory);
statement.setInt(5, doclangurage);
statement.setString(6, docapprovable);
statement.setString(7, docreplyable);
statement.setString(8, isreply);
statement.setInt(9, replydocid);
statement.setString(10, docsubject);
statement.setString(11, docpublishtype);
statement.setInt(12, itemid);
statement.setInt(13, itemmaincategoryid);
statement.setInt(14, hrmresid);
statement.setInt(15, crmid);
statement.setInt(16, projectid);
statement.setInt(17, financeid);
statement.setInt(18, doccreaterid);
statement.setInt(19, docdepartmentid);
statement.setString(20, doccreatedate);
statement.setString(21, doccreatetime);
statement.setInt(22, doclastmoduserid);
statement.setString(23, doclastmoddate);
statement.setString(24, doclastmodtime);
statement.setInt(25, docapproveuserid);
statement.setString(26, docapprovedate);
statement.setString(27, docapprovetime);
statement.setInt(28, docarchiveuserid);
statement.setString(29, docarchivedate);
statement.setString(30, docarchivetime);
statement.setString(31, docstatus);
statement.setString(32, parentids);
statement.setInt(33, assetid);
statement.setInt(34, ownerid);
statement.setString(35, keyword);
statement.setInt(36, accessorycount);
statement.setInt(37, replaydoccount);
statement.setString(38, docCreaterType);
statement.setInt(39, doctype);
statement.setString(40, cancopy);
statement.setString(41, canremind);
statement.setString(42, orderable);
statement.setString(43, docextendname);
statement.setString(44, doccode);
statement.setInt(45, docedition);
statement.setInt(46, doceditionid);
statement.setInt(47, ishistory);
statement.setInt(48, approveType);
statement.setInt(49, maindoc);
statement.setInt(50, readoptercanprint);
statement.setInt(51, docvaliduserid);
statement.setString(52, docvaliddate);
statement.setString(53, docvalidtime);
statement.setString(54, invalidationdate);
statement.setString(55, docCreaterType);
statement.setString(56, docLastModUserType);
statement.setString(57, docApproveUserType);
statement.setString(58, docValidUserType);
statement.setString(59, docInvalUserType);
statement.setString(60, docArchiveUserType);
statement.setString(61, docCancelUserType);
statement.setString(62, docPubUserType);
statement.setString(63, docReopenUserType);
statement.setString(64, ownerType);
statement.setInt(65, canPrintedNum);
statement.setString(66, fromworkflow);
statement.setInt(67, docsmalledition);
statement.executeUpdate();
sql = "insert into DocDetailContent (docid, doccontent) values(?,empty_clob()) ";
statement.setStatementSql(sql);
statement.setInt(1, docid);
statement.executeUpdate();
sql = "select doccontent from DocDetailContent where docid = "
+ docid;
statement.setStatementSql(sql, false);
statement.executeQuery();
statement.next();
CLOB theclob = statement.getClob(1);
String doccontenttemp = doccontent;
char[] contentchar = doccontenttemp.toCharArray();
Writer contentwrite = theclob.getCharacterOutputStream();
contentwrite.write(contentchar);
contentwrite.flush();
contentwrite.close();
dlog.resetParameter();
dlog.setDocId(docid);
dlog.setDocSubject(docsubject);
dlog.setOperateType("1");
dlog.setOperateUserid(docowner);
dlog.setUsertype(docCreaterType);
dlog.setClientAddress(clientIp);
dlog.setDocCreater(docowner);
dlog.setCreatertype(docCreaterType);
dlog.setDocLogInfo();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
statement.close();
} catch (Exception ex) {
}
}
} else if((statement.getDBType()).equals("postgresql")||(statement.getDBType()).equals("mysql")||Util.null2String(statement.getOrgindbtype()).equals("dm")||Util.null2String(statement.getOrgindbtype()).equals("st")||Util.null2String(statement.getOrgindbtype()).equals("jc")||Util.null2String(statement.getOrgindbtype()).equals("gs")){
sql = "insert into DocDetail("
+ "id,maincategory,subcategory,seccategory,doclangurage,"
+ "docapprovable,docreplyable,isreply,replydocid,docsubject,"
+ "docpublishtype,itemid,itemmaincategoryid,hrmresid,crmid,"
+ "projectid,financeid,doccreaterid,docdepartmentid,doccreatedate,"
+ "doccreatetime,doclastmoduserid,doclastmoddate,doclastmodtime,docapproveuserid,"
+ "docapprovedate,docapprovetime,docarchiveuserid,docarchivedate,docarchivetime,"
+ "docstatus,parentids,assetid,ownerid,keyword,"
+ "accessorycount,replaydoccount,usertype,doctype,cancopy,"
+ "canremind,orderable,docextendname"
+
",doccode,docedition,doceditionid,ishistory,approveType,maindoc,"
+ "readoptercanprint,docvaliduserid,docvaliddate,docvalidtime,invalidationdate"
+
",docCreaterType,docLastModUserType,docApproveUserType,docValidUserType,docInvalUserType"
+ ",docArchiveUserType,docCancelUserType,docPubUserType,docReopenUserType,ownerType"
+ ",canPrintedNum,fromworkflow,docsmalledition" +
") values(" + "?,?,?,?,?,?,?,?,?,?,"
+ "?,?,?,?,?,?,?,?,?,?," + "?,?,?,?,?,?,?,?,?,?,"
+ "?,?,?,?,?,?,?,?,?,?," + "?,?,?" +
",?,?,?,?,?,?" + ",?,?,?,?,?" +
",?,?,?,?,?" + ",?,?,?,?,?" + ",?,?,?" +
")";
try {
statement.setStatementSql(sql);
statement.setInt(1, docid);
statement.setInt(2, maincategory);
statement.setInt(3, subcategory);
statement.setInt(4, seccategory);
statement.setInt(5, doclangurage);
statement.setString(6, docapprovable);
statement.setString(7, docreplyable);
statement.setString(8, isreply);
statement.setInt(9, replydocid);
statement.setString(10, docsubject);
statement.setString(11, docpublishtype);
statement.setInt(12, itemid);
statement.setInt(13, itemmaincategoryid);
statement.setInt(14, hrmresid);
statement.setInt(15, crmid);
statement.setInt(16, projectid);
statement.setInt(17, financeid);
statement.setInt(18, doccreaterid);
statement.setInt(19, docdepartmentid);
statement.setString(20, doccreatedate);
statement.setString(21, doccreatetime);
statement.setInt(22, doclastmoduserid);
statement.setString(23, doclastmoddate);
statement.setString(24, doclastmodtime);
statement.setInt(25, docapproveuserid);
statement.setString(26, docapprovedate);
statement.setString(27, docapprovetime);
statement.setInt(28, docarchiveuserid);
statement.setString(29, docarchivedate);
statement.setString(30, docarchivetime);
statement.setString(31, docstatus);
statement.setString(32, parentids);
statement.setInt(33, assetid);
statement.setInt(34, ownerid);
statement.setString(35, keyword);
statement.setInt(36, accessorycount);
statement.setInt(37, replaydoccount);
statement.setString(38, docCreaterType);
statement.setInt(39, doctype);
statement.setString(40, cancopy);
statement.setString(41, canremind);
statement.setString(42, orderable);
statement.setString(43, docextendname);
statement.setString(44, doccode);
statement.setInt(45, docedition);
statement.setInt(46, doceditionid);
statement.setInt(47, ishistory);
statement.setInt(48, approveType);
statement.setInt(49, maindoc);
statement.setInt(50, readoptercanprint);
statement.setInt(51, docvaliduserid);
statement.setString(52, docvaliddate);
statement.setString(53, docvalidtime);
statement.setString(54, invalidationdate);
statement.setString(55, docCreaterType);
statement.setString(56, docLastModUserType);
statement.setString(57, docApproveUserType);
statement.setString(58, docValidUserType);
statement.setString(59, docInvalUserType);
statement.setString(60, docArchiveUserType);
statement.setString(61, docCancelUserType);
statement.setString(62, docPubUserType);
statement.setString(63, docReopenUserType);
statement.setString(64, ownerType);
statement.setInt(65, canPrintedNum);
statement.setString(66, fromworkflow);
statement.setInt(67, docsmalledition);
statement.executeUpdate();
sql = "insert into DocDetailContent (docid, doccontent) values(?,?) ";
statement.setStatementSql(sql);
statement.setInt(1, docid);
statement.setString(2, doccontent);
statement.executeUpdate();
dlog.resetParameter();
dlog.setDocId(docid);
dlog.setDocSubject(docsubject);
dlog.setOperateType("1");
dlog.setOperateUserid(docowner);
dlog.setUsertype(docCreaterType);
dlog.setClientAddress(clientIp);
dlog.setDocCreater(docowner);
dlog.setCreatertype(docCreaterType);
dlog.setDocLogInfo();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
statement.close();
} catch (Exception ex) {
}
}
}else{
sql = "insert into DocDetail("
+ "id,maincategory,subcategory,seccategory,doclangurage,"
+ "docapprovable,docreplyable,isreply,replydocid,docsubject,"
+ "doccontent,docpublishtype,itemid,itemmaincategoryid,hrmresid,"
+ "crmid,projectid,financeid,doccreaterid,docdepartmentid,"
+ "doccreatedate,doccreatetime,doclastmoduserid,doclastmoddate,doclastmodtime,"
+ "docapproveuserid,docapprovedate,docapprovetime,docarchiveuserid,docarchivedate,"
+ "docarchivetime,docstatus,parentids,assetid,ownerid,"
+ "keyword,accessorycount,replaydoccount,usertype,doctype,"
+ "cancopy,canremind,orderable,docextendname"
+
",doccode,docedition,doceditionid,ishistory,approveType,maindoc,"
+ "readoptercanprint,docvaliduserid,docvaliddate,docvalidtime,invalidationdate"
+
",docCreaterType,docLastModUserType,docApproveUserType,docValidUserType,docInvalUserType"
+ ",docArchiveUserType,docCancelUserType,docPubUserType,docReopenUserType,ownerType"
+ ",canPrintedNum,fromworkflow,docsmalledition" +
") values(" + "?,?,?,?,?,?,?,?,?,?,"
+ "?,?,?,?,?,?,?,?,?,?," + "?,?,?,?,?,?,?,?,?,?,"
+ "?,?,?,?,?,?,?,?,?,?," + "?,?,?,?" +
",?,?,?,?,?,?" + ",?,?,?,?,?" +
",?,?,?,?,?" + ",?,?,?,?,?" + ",?,?,?" +
")";
try {
statement.setStatementSql(sql);
statement.setInt(1, docid);
statement.setInt(2, maincategory);
statement.setInt(3, subcategory);
statement.setInt(4, seccategory);
statement.setInt(5, doclangurage);
statement.setString(6, docapprovable);
statement.setString(7, docreplyable);
statement.setString(8, isreply);
statement.setInt(9, replydocid);
statement.setString(10, docsubject);
statement.setString(11, doccontent);
statement.setString(12, docpublishtype);
statement.setInt(13, itemid);
statement.setInt(14, itemmaincategoryid);
statement.setInt(15, hrmresid);
statement.setInt(16, crmid);
statement.setInt(17, projectid);
statement.setInt(18, financeid);
statement.setInt(19, doccreaterid);
statement.setInt(20, docdepartmentid);
statement.setString(21, doccreatedate);
statement.setString(22, doccreatetime);
statement.setInt(23, doclastmoduserid);
statement.setString(24, doclastmoddate);
statement.setString(25, doclastmodtime);
statement.setInt(26, docapproveuserid);
statement.setString(27, docapprovedate);
statement.setString(28, docapprovetime);
statement.setInt(29, docarchiveuserid);
statement.setString(30, docarchivedate);
statement.setString(31, docarchivetime);
statement.setString(32, docstatus);
statement.setString(33, parentids);
statement.setInt(34, assetid);
statement.setInt(35, ownerid);
statement.setString(36, keyword);
statement.setInt(37, accessorycount);
statement.setInt(38, replaydoccount);
statement.setString(39, docCreaterType);
statement.setInt(40, doctype);
statement.setString(41, cancopy);
statement.setString(42, canremind);
statement.setString(43, orderable);
statement.setString(44, docextendname);
statement.setString(45, doccode);
statement.setInt(46, docedition);
statement.setInt(47, doceditionid);
statement.setInt(48, ishistory);
statement.setInt(49, approveType);
statement.setInt(50, maindoc);
statement.setInt(51, readoptercanprint);
statement.setInt(52, docvaliduserid);
statement.setString(53, docvaliddate);
statement.setString(54, docvalidtime);
statement.setString(55, invalidationdate);
statement.setString(56, docCreaterType);
statement.setString(57, docLastModUserType);
statement.setString(58, docApproveUserType);
statement.setString(59, docValidUserType);
statement.setString(60, docInvalUserType);
statement.setString(61, docArchiveUserType);
statement.setString(62, docCancelUserType);
statement.setString(63, docPubUserType);
statement.setString(64, docReopenUserType);
statement.setString(65, ownerType);
statement.setInt(66, canPrintedNum);
statement.setString(67, fromworkflow);
statement.setInt(68, docsmalledition);
statement.executeUpdate();
dlog.resetParameter();
dlog.setDocId(docid);
dlog.setDocSubject(docsubject);
dlog.setOperateType("1");
dlog.setOperateUserid(docowner);
dlog.setUsertype(docCreaterType);
dlog.setClientAddress(clientIp);
dlog.setDocCreater(docowner);
dlog.setCreatertype(docCreaterType);
dlog.setDocLogInfo();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
statement.close();
} catch (Exception ex) {
}
}
}
// 保存文档属性
saveDocProp(docid,requestid,requestManager,wfbiz);
try {
//保存文档信息至虚拟目录
RecordSet rsDummyDoc = new RecordSet();
String dummycata = "";
String strSql="select defaultDummyCata from DocSecCategory where id="+seccategory;
rsDummyDoc.executeSql(strSql);
if(rsDummyDoc.next()) dummycata = Util.null2String(rsDummyDoc.getString("defaultDummyCata"));
if(dummycata!=null && !"".equals(dummycata)){
ArrayList dummyCataList=Util.TokenizerString(dummycata,",");
for(int i=0;i<dummyCataList.size();i++){
String strDummy=(String)dummyCataList.get(i);
int intDummy = Util.getIntValue(strDummy, -1);
if(!"".equals(strDummy) && intDummy > 0){
String importdate= TimeUtil.getCurrentDateString();
String importtime=TimeUtil.getOnlyCurrentTimeString();
DocTreeDocFieldComInfo ddfc = new DocTreeDocFieldComInfo();
if(!ddfc.isHaveSameOne(strDummy,""+docid)) {
strSql="insert into DocDummyDetail(catelogid,docid,importdate,importtime) values ("+strDummy+","+docid+",'"+importdate+"','"+importtime+"')";
rsDummyDoc.executeSql(strSql);
}
}
}
}
}catch(Exception ex) {
writeLog("添加文档信息至虚拟目录出错:" + ex);
}
//更新文档密级
if (HrmClassifiedProtectionBiz.isOpenClassification()) {
Map<String, Object> secInfo = new RequestSecLevelBiz().getSecInfoByRequestId(Util.getIntValue(requestid));
String secLevel = Util.null2String(secInfo.get("secLevel"));
String secValidity = Util.null2String(secInfo.get("secValidity"));
new DocSecretLevelUtil().modifyDocSecretLevel(docid+"", secLevel, secValidity);
}
// 添加文档共享信息
DocManager DocManager = new DocManager();
DocManager.setIsreply("0");
DocManager.setId(docid);
DocManager.setSeccategory(seccategory);
DocManager.setUserid(docowner);
DocManager.setUsertype("1");
try {
DocManager.AddShareInfo();
} catch (Exception e) {
writeLog("添加文档共享信息出错:" + e);
}
try {
new DocViewer().setDocShareByDoc("" + docid);
} catch (Exception e) {
writeLog("添加文档共享信息出错:" + e);
}
return docid;
}
/**
*
* @param docid
* @return
*/
public boolean saveDocProp(int docid, String requestid, RequestManager requestManager, WfToDocBizCus wfbiz){
boolean success = true;
String docids = docid+"";
try{
writeLog("saveDocProp:" + docid +" "+requestid);
RequestDocPropManagerCus requestDocPropManager=new RequestDocPropManagerCus(wfbiz);
requestDocPropManager.changeDocProp(requestManager,docids);
}catch (Exception e) {
success = false;
writeLog("RequestDocPropManagerCus Error:requestid="+requestid+"###docids="+docids);
writeLog(e);
}
writeLog("success:"+success);
return success;
}
}

@ -0,0 +1,457 @@
package com.engine.custom.archives.workflow.biz.requestForm;
import com.engine.common.util.ServiceUtil;
import com.engine.custom.archives.service.HtmlToPdfServiceCus;
import com.engine.custom.archives.service.impl.HtmlToPdfServiceCusImpl;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.entity.freeNode.FreeNodeEntity;
import weaver.conn.RecordSet;
import weaver.docs.share.DocShareUtil;
import weaver.file.FileSecurityUtil;
import weaver.file.FileUpload;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import weaver.system.SystemComInfo;
import weaver.workflow.exceldesign.HtmlLayoutOperate;
import weaver.workflow.workflow.WorkflowConfigComInfo;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class WfToDocBizCus extends BaseBean {
//底部签字意见列表显示数量
private int pageSize =100;
//是否用wk转换
private String useWk="";
private int keepsign;
private User user;
private String docfiles;
Map<String,Object> pathMap;
private LinkedHashMap<String,String> fileids;
private boolean isOpenWaterMark; //是否生成水印
private String useModeid ;
/* ---这些参数给到workflowtodoc获取 避免查多次数据库 -- start*/
private String wfdocpathtype ="1";
private String wfdocpath = "";
private String wfdocpathfieldid = "";
private String wfdocpathfieldvalue ="";
private String isAccordToSubCom = "";
/* --- end ----*/
String OnlineHtmlMethod; //生成在线文档
private Map<String,Object> otherParamsMap;
public Map<String, Object> getOtherParamsMap() {
return otherParamsMap;
}
public void setOtherParamsMap(Map<String, Object> otherParamsMap) {
this.otherParamsMap = otherParamsMap;
}
public void setOnlineHtmlMethod(String onlineHtmlMethod) {
OnlineHtmlMethod = onlineHtmlMethod;
}
public Map<String, Object> getPathMap() {
return pathMap;
}
public void setPathMap(Map<String, Object> pathMap) {
this.pathMap = pathMap;
}
public String getWfdocpathtype() {
return wfdocpathtype;
}
public void setWfdocpathtype(String wfdocpathtype) {
this.wfdocpathtype = wfdocpathtype;
}
public String getWfdocpath() {
return wfdocpath;
}
public void setWfdocpath(String wfdocpath) {
this.wfdocpath = wfdocpath;
}
public String getWfdocpathfieldid() {
return wfdocpathfieldid;
}
public void setWfdocpathfieldid(String wfdocpathfieldid) {
this.wfdocpathfieldid = wfdocpathfieldid;
}
public String getWfdocpathfieldvalue() {
return wfdocpathfieldvalue;
}
public void setWfdocpathfieldvalue(String wfdocpathfieldvalue) {
this.wfdocpathfieldvalue = wfdocpathfieldvalue;
}
public String getIsAccordToSubCom() {
return isAccordToSubCom;
}
public void setIsAccordToSubCom(String isAccordToSubCom) {
this.isAccordToSubCom = isAccordToSubCom;
}
public WfToDocBizCus(User user, int pageSize, int keepsign, String docfiles){
this.pageSize = pageSize;
this.keepsign = keepsign;
this.user = user;
this.docfiles = docfiles;
this.fileids = new LinkedHashMap<>();
}
public WfToDocBizCus(User user, int pageSize, int keepsign, String docfiles, String useModeid){
this.pageSize = pageSize;
this.keepsign = keepsign;
this.user = user;
this.docfiles = docfiles;
this.fileids = new LinkedHashMap<>();
this.useModeid=useModeid;
}
public WfToDocBizCus(User user, int pageSize, int keepsign, String docfiles, String useModeid, boolean isOpenWaterMark){
this.pageSize = pageSize;
this.keepsign = keepsign;
this.user = user;
this.docfiles = docfiles;
this.fileids = new LinkedHashMap<>();
this.useModeid=useModeid;
this.isOpenWaterMark = isOpenWaterMark;
}
public WfToDocBizCus(){
}
/*
* htmlpdf
*/
public void generatepdfandhtml(String requestid, String filename, String temppath, String src, int reqType){
int onlyHtml =0;
if (docfiles.contains("2")&&!docfiles.contains("3")){ //只选了生成离线html 没选pdf
onlyHtml =1;
}else if (docfiles.contains("3")&&docfiles.contains("2")){ //选了pdf和html
onlyHtml =2;
}else if (docfiles.contains("3")&&!docfiles.contains("2")){ //只选了pdf
onlyHtml =0;
}
Map<String,Object> params = new HashMap<>();
params.put("requestid",requestid);
params.put("onlyHtml", onlyHtml);
params.put("pageSize", pageSize);
params.put("path", temppath);
params.put("filename", filename);
params.put("keepsign", keepsign);
params.put("limitauth", "0");
params.put("src",src);
params.put("modeid",useModeid);
params.put("isSubrequest",reqType == 1);
//是否使用wk,在config表中读配置
WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo();
useWk = Util.null2String(configComInfo.getValue("htmltopdf_usewk"));
new BaseBean().writeLog("jymjym……useWk ="+useWk);
//是否使用Itext7
String useItext7 = Util.null2String(configComInfo.getValue("workflowtodoc_useitext7"));
params.put("useItext7", useItext7);
if (!"".equals(useWk)){
params.put("useWk", useWk);
}
params.put("isOpenWaterMark",isOpenWaterMark);
params.put("onlinehtml",OnlineHtmlMethod.equals("1")&&docfiles.contains("1")); //在线htmlE9
if (this.otherParamsMap!=null)
params.putAll(this.otherParamsMap);
HtmlToPdfServiceCus htmlToPdfService = (HtmlToPdfServiceCus) ServiceUtil.getService(HtmlToPdfServiceCusImpl.class,user);
pathMap = (htmlToPdfService != null) ? htmlToPdfService.getFormDatas(params) : new HashMap<>();
}
public LinkedHashMap<String,String> getfileids(String requestname, String filename,String temppath){
int onlyHtml =0;
if (docfiles.contains("2")&&!docfiles.contains("3")){ //只选了生成离线html 没选pdf
onlyHtml =1;
}else if (docfiles.contains("3")&&docfiles.contains("2")){ //选了pdf和html
onlyHtml =2;
}else if (docfiles.contains("3")&&!docfiles.contains("2")){ //只选了pdf
onlyHtml =0;
}
String htmlname="";
String truefilename ="";
if (OnlineHtmlMethod.equals("1")&&docfiles.contains("1")){ //在线html
htmlname = temppath + Util.null2String(pathMap.get("onlinehtmlfilename"));
truefilename = requestname +"_online.html";
String fileid = saveAsFile(htmlname,truefilename);
if (!"".equals(fileid)){
fileids.put("online_html",fileid);
}
}
if (docfiles.contains("2")){ //选了生成离线html
if(onlyHtml ==1){ //只选了生成离线html 没选pdf
htmlname = temppath + Util.null2String(pathMap.get("filename"));
}else if(onlyHtml ==2){
htmlname = temppath + Util.null2String(pathMap.get("htmlfilename"));
}
truefilename = requestname +"_offline_html.zip";
String fileid = saveAsFile(htmlname,truefilename);
if (!"".equals(fileid)){
fileids.put("offline_html",fileid+"");
}
}
if (docfiles.contains("3")){ //只要选了pdf
if(onlyHtml ==0){ //只选了pdf
htmlname = temppath + Util.null2String(pathMap.get("filename"));
}else if(onlyHtml ==2){
htmlname = temppath + Util.null2String(pathMap.get("pdffilename"));
}
truefilename = requestname + "_offline_pdf.pdf";
String fileid = saveAsFile(htmlname,truefilename);
if (!"".equals(fileid)){
fileids.put("offline_pdf",fileid);
}
}
return fileids;
}
//保存为附件
public String saveAsFile(String htmlname,String truefilename){
truefilename = Util.formatMultiLang(truefilename,user.getLanguage()+"");
InputStream in = null;
byte[] buffer = null;
File file = new File(htmlname);
if (file.exists()){
try {
in = new FileInputStream(file);
buffer = new byte[(int) file.length()];
in.read(buffer);
in.close();
}catch (Exception e){
e.printStackTrace();
}
}
ImageFileManager imageFileManager = new ImageFileManager();
imageFileManager.setComefrom("WorkflowToDoc");
imageFileManager.setData(buffer);
imageFileManager.setImagFileName(truefilename);
int fileid = imageFileManager.saveImageFile();
if (fileid <= 0) {
writeLog("保存离线HTML/PDF文件失败");
return "";
}
FileSecurityUtil.deleteFile(file);
return fileid+"";
}
/**
*
*
* @return
*/
public String getFileSavePath() {
SystemComInfo syscominfo = new SystemComInfo();
String createdir = FileUpload.getCreateDir(syscominfo.getFilesystem());
return createdir;
}
//获取存文档的路径
public String getWfDocPath(String workflowid,String requestid){
String doccategory = "";
RecordSet rs = new RecordSet();
rs.executeQuery("select * from workflow_base where id = ?",workflowid);
if (rs.next()){
this.wfdocpathtype = Util.null2String(rs.getString("wfdocpathtype"));
this.wfdocpath = Util.null2String(rs.getString("wfdocpath"));
this.wfdocpathfieldid = Util.null2String(rs.getString("wfdocpathfieldid"));
int isbill = Util.getIntValue(rs.getString("isbill"), 0);
int formid = Util.getIntValue(rs.getString("formid"), 0);
if (wfdocpathtype.equals("1")||wfdocpathtype.equals("")){ //历史数据为空则默认用固定目录
doccategory = wfdocpath;
}else if (wfdocpathtype.equals("2")){ //选择框字段值对应路径
//先获取表单字段值
String fieldvalue = ""; //表单字段值
String tablename = " workflow_form ";
String fieldname = "";
String sql = "";
if(isbill == 1){
sql = "select tablename from workflow_bill where id="+formid;
rs.executeQuery(sql);
if(rs.next()){
tablename = Util.null2String(rs.getString(1));
}
sql = "select fieldname from workflow_billfield where billid="+formid+" and id="+wfdocpathfieldid;
}else{
sql = "select fieldname from workflow_formdictdetail where id="+wfdocpathfieldid;
}
rs.executeQuery(sql);
if(rs.next()){
fieldname = Util.null2String(rs.getString(1));
if(!"".equals(tablename) && !"".equals(fieldname)){
sql = "select "+fieldname+" from "+tablename+" where requestid="+requestid;
rs.executeQuery(sql);
if(rs.next()){
fieldvalue = Util.null2String(rs.getString(1));
}
}
}
this.wfdocpathfieldvalue = fieldvalue;
if (!fieldvalue.equals("")){
rs.executeQuery("select doccategory,isAccordToSubCom from workflow_selectitem t where fieldid="
+ wfdocpathfieldid + " and selectvalue=" + fieldvalue);
if (rs.next()) {
doccategory = rs.getString("doccategory");
isAccordToSubCom = Util.null2String(rs.getString("isAccordToSubCom"));
}
if (isAccordToSubCom.equals("1")) {
int creater = 0;
rs.executeQuery("select creater from workflow_requestbase where requestId=" + requestid);
if (rs.next()) {
creater = Util.getIntValue(rs.getString("creater"), 0);
}
int subCompanyId = 0;
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
subCompanyId = Util.getIntValue(resourceComInfo.getSubCompanyID("" + creater), 0);
} catch (Exception ex) {
ex.printStackTrace();
}
rs.executeQuery("SELECT docCategory FROM Workflow_SelectitemObj where fieldid="
+ wfdocpathfieldid + " and selectvalue=" + fieldvalue + " and isBill=" + isbill
+ " and objType='1' and objId= " + subCompanyId);
if (rs.next()) {
doccategory = Util.null2String(rs.getString("docCategory"));
}
}
}
}
}
return doccategory;
}
/*
*id
*/
public String getModeid(int workflowid,int requestid,int nodeid){
RecordSet rs = new RecordSet();
int modeid = -1;
FreeNodeEntity nodeEntity = FreeNodeBiz.getCurrentFreeNodeEntity(requestid,nodeid);
if(nodeEntity != null) { //如果为自由节点
nodeid = nodeEntity.getExtendnodeid();
}
String wfdocsource ="";
rs.executeQuery("select * from workflow_base where id = ?",workflowid);
if (rs.next()){
wfdocsource = Util.null2String(rs.getString("wfdocsource")); //附件来源 1显示模板 2打印模板
}
HtmlLayoutOperate htmlLayoutOperate = new HtmlLayoutOperate();
if (wfdocsource.equals("2")) { //打印模板 获取开启的第一个打印模板 如果没有开启的打印模板,则取显示模板,如果没有打印模板 则取显示模板
rs.executeQuery("select * from workflow_printset where nodeid = ? and type =1 and printenable =1 order by orderid",nodeid);
if (rs.next()){
modeid = Util.getIntValue(rs.getString("modeid"),-1);
}else {
modeid = htmlLayoutOperate.getActiveHtmlLayout(workflowid, nodeid, 0); //获取当前显示模板的活动模板
}
}else { //否则就取当前显示模板
rs.executeQuery("select ismode from workflow_flownode where workflowid=? and nodeid=?",workflowid,nodeid);
if (rs.next()){
String ismode = Util.null2String(rs.getString("ismode"));
if (ismode.equals("2")){ //如果不是
modeid = htmlLayoutOperate.getActiveHtmlLayout(workflowid, nodeid, 0); //获取当前显示模板的活动模板
}else{
modeid = -1;
}
}
}
return modeid+"";
}
/*
*
* docid id
* requestid id
* docowner
*
*/
public static void docShare(String docids,String requestid,int docowner){
RecordSet rs = new RecordSet();
//选择流程的所有操作人
String sql = "select distinct userid,usertype,isremark,agentorbyagentid,agenttype from workflow_currentoperator where requestid ="+requestid;
rs.executeQuery(sql);
String userids = "";
String usertypes = "";
String agentids = "";
String agenttypes = "";
while (rs.next()){
int opertor = rs.getInt("userid");
int beagentorid=rs.getInt("agentorbyagentid");
int usertype = rs.getInt("usertype");
int isremark=Util.getIntValue(rs.getString("isremark"),-1);
int agenttype=Util.getIntValue(rs.getString("agenttype"),-1);
//用户相关客户一次性共享
userids += "," + opertor;
usertypes += "," + usertype;
if (beagentorid > 0) {
agentids += "," + beagentorid;
agenttypes += ",0";
}
}
//修正数据
if (userids.length() > 0) {
userids = userids.substring(1);
usertypes = usertypes.substring(1);
}
if (agentids.length() > 0) {
agentids = agentids.substring(1);
agenttypes = agenttypes.substring(1);
}
new BaseBean().writeLog("docShare------userids="+userids+"-------agentids="+agentids+"-----docid="+docids);
User user = new User(docowner);
//文档共享
DocShareUtil dsu = new DocShareUtil();
//共享
dsu.addDocShare(user, docids, usertypes, userids, 1);
if (agentids.length() > 0) {
//共享
dsu.addDocShare(user, docids, agenttypes, agentids, 1);
}
}
}

@ -0,0 +1,799 @@
package com.engine.custom.archives.workflow.biz.requestLog;
import com.alibaba.fastjson.JSONObject;
import com.api.doc.detail.util.DocDownloadCheckUtil;
import com.engine.workflow.biz.RobotNode.RobotNodeBiz;
import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.biz.workflowCore.WorkflowBaseBiz;
import com.engine.workflow.constant.RequestLogType;
import com.engine.workflow.constant.SignSource;
import com.engine.workflow.constant.node.NodeType;
import com.engine.workflow.entity.core.NodeInfoEntity;
import com.engine.workflow.entity.requestLog.RequestLogEntity;
import com.engine.workflow.util.CollectionUtil;
import org.apache.commons.lang.StringUtils;
import weaver.conn.ConnStatement;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.workflow.logging.Logger;
import weaver.workflow.logging.LoggerFactory;
import weaver.workflow.request.RequestOperationMsgManager;
import weaver.workflow.request.RequestSignRelevanceWithMe;
import weaver.workflow.request.WFLinkInfo;
import weaver.workflow.request.WorkflowSpeechAppend;
import weaver.workflow.workflow.WorkflowVersion;
import java.util.*;
/**
*
* Created by jhy on 2018/11/7.
*/
public class RequestLogCusBiz {
private final static Logger log = LoggerFactory.getLogger(RequestLogCusBiz.class);
/**
*
*
* @param requestid
* @param workflowid
* @param viewLogIds
* @return
*/
public static int getRequestLogTotalCount(int requestid, int workflowid, String viewLogIds, String sqlwhere) {
RecordSet rs = new RecordSet();
String thisviewLogIds = getViewLogIds(viewLogIds, requestid, workflowid);
//需要排除不留痕的机器人节点的id
String robotNodeid = getRobotNodeid(thisviewLogIds);
String sql = "select count(t1.logid) from workflow_requestlog t1 " +
" where t1.requestid=" + requestid + " and t1.logtype != '1' " +
" and " + Util.getSubINClause(thisviewLogIds, "t1.nodeid", "in") + " " + sqlwhere;
ArrayList unshowlogids = forkStartLogids(requestid, workflowid);
if (unshowlogids.size() > 0) {
sql += " and " + Util.getSubINClause(StringUtils.join(unshowlogids, ","), "t1.logid", "not in");
}
if(!"".equals(robotNodeid)){
sql += " and logid not in (select logid from workflow_requestlog where "+Util.getSubINClause(robotNodeid, "t1.nodeid", "in")+" and operator = '0' and isRobotNode='1')";
}
rs.executeSql(sql);
int logcount = 0;
if (rs.next()) logcount = rs.getInt(1);
return logcount;
}
//得到不留痕的机器人节点的id
public static String getRobotNodeid(String thisviewLogIds){
//需要排除不留痕的机器人节点的id
String robotNodeid = "";
String[] thisviewLogIdsArr = thisviewLogIds.split(",");
for (String viewLogId : thisviewLogIdsArr) {
int viewnodeid = Util.getIntValue(viewLogId,-1);
NodeInfoEntity nodeInfoEntity = WorkflowBaseBiz.getNodeInfo(viewnodeid);
if(NodeType.WAIT.getValue().equals(nodeInfoEntity.getNodetype()+"") || NodeType.AUTOPROCESS.getValue().equals(nodeInfoEntity.getNodetype()+"")){
String remarkOperation = new RobotNodeServiceBiz().getRobotNodeSet(viewnodeid).getRemarkOperation();
if("0".equals(remarkOperation)){
robotNodeid += "," + viewLogId;
}
}
}
if(robotNodeid.startsWith(",")){
robotNodeid = robotNodeid.substring(1);
}
return robotNodeid;
}
/**
*
*
* @param requestid
* @param workflowid
* @param viewLogIds
* @return
*/
public static ArrayList getRequestLog(int requestid, int workflowid, String viewLogIds, String orderby, int pageSize, int pagenumber, String sqlwhere , boolean isSubrequest) {
ArrayList logs = new ArrayList();
RecordSet rs = new RecordSet();
int min = (pagenumber - 1) * pageSize;
int max = pagenumber * pageSize;
String sql = getLogSql(requestid, workflowid, viewLogIds, orderby, sqlwhere ,isSubrequest);
System.out.println("requestlogsql==>"+ sql);
StringBuffer splitinertSql = new StringBuffer();
if ("sqlserver".equals(rs.getDBType())) {
splitinertSql.append(" select * from ( select");
splitinertSql.append(" row_number() over(order by tbl.operatedate ").append(orderby).append(",tbl.operatetime ").append(orderby).append(", tbl.logid ").append(orderby).append(") as rn,* from (");
splitinertSql.append(sql).append(" ) tbl ");
splitinertSql.append(") t where rn > ").append(min).append(" and rn <= ").append(max);
} else if ("mysql".equals(rs.getDBType())) {
splitinertSql.append(sql).append(" limit ").append(min).append(",").append(pageSize);
}
else if ("postgresql".equals(rs.getDBType())) {
splitinertSql.append(sql).append(" limit ").append(pageSize).append(" offset ").append(min);
}
else {
splitinertSql.append(" select t1.* from (");
splitinertSql.append(" select t.*,rownum rn from (" + sql + ") t ");
splitinertSql.append(" ) t1 where rn >").append(min).append(" and rn <=").append(max);
}
rs.execute(splitinertSql.toString());
while (rs.next()) {
Hashtable hashtable = addLogItem(rs);
if(hashtable != null) logs.add(hashtable);
}
//对log中的重复数据进行清除
logs = uniqLogs(logs);
return logs;
}
public static String getLogSql(int requestid, int workflowid, String viewLogIds, String orderby, String sqlwhere, boolean isSubrequest) {
RecordSet rs = new RecordSet();
String mainAndSubRequestId = getMainOrSubRequest(requestid,isSubrequest);
if (orderby == null || orderby.trim().equals("")) orderby = "desc";
String mssqlTopflg = "";
if ("sqlserver".equals((rs.getDBType()))) {
mssqlTopflg = " top 100 percent ";
}
String thisviewLogIds = getViewLogIds(viewLogIds, requestid, workflowid);
String robotNodeid = getRobotNodeid(thisviewLogIds);
String selectfields = " nodeid,destnodeid,operatedate,operatetime,logtype,remark,isMobile,logid,operatortype,operator," +
"agenttype,agentorbyagentid,receivedPersonids,requestLogId,annexdocids,operatorDept,signdocids," +
"signworkflowids,fulltextannotation,HandWrittenSign,SpeechAttachment,speechAttachmente9,remarkLocation,isRobotNode";
if ("sqlserver".equals(rs.getDBType())) {
selectfields += ",left(substring(receivedPersons,0,2000),240) as receivedPersons ";
} else if ("oracle".equalsIgnoreCase(rs.getDBType())) {
selectfields += ",substr(receivedPersons,0,240) as receivedPersons ";
} else if ("mysql".equalsIgnoreCase(rs.getDBType())) {
selectfields += ",left(receivedPersons,240) as receivedPersons ";
} else {
selectfields += ",receivedPersons";
}
String sql = "select " + mssqlTopflg + selectfields + " from workflow_requestlog t1 " +
" where t1.requestid in ( " + mainAndSubRequestId + ") and t1.logtype != '1' " ;
// " and " + Util.getSubINClause(thisviewLogIds, "t1.nodeid", "in");
if (sqlwhere != null && !sqlwhere.equals("")) {
sql = sql + sqlwhere;
}
ArrayList unshowlogids = forkStartLogids(requestid, workflowid);
if (unshowlogids.size() > 0) {
sql += " and " + Util.getSubINClause(StringUtils.join(unshowlogids, ","), "t1.logid", "not in");
}
if(!"".equals(robotNodeid)){
sql += " and logid not in (select logid from workflow_requestlog where "+Util.getSubINClause(robotNodeid, "t1.nodeid", "in")+" and operator = '0' and isRobotNode='1')";
}
sql = sql + " order by t1.operatedate " + orderby + ",t1.operatetime " + orderby + ",t1.logtype " + orderby + ",t1.logid " + orderby;
return sql;
}
private static String getMainOrSubRequest(int requestid, boolean isSubrequest) {
if (isSubrequest){
// RecordSet rs = new RecordSet();
// ArrayList<String> results = new ArrayList<>();
// String mainSql = "select mainrequestid from workflow_requestbase where requestid = ? ";
// String mainRequestId = "";
// rs.executeQuery(mainSql,requestid);
// if (rs.next()){
// mainRequestId = Util.null2String(rs.getString("mainrequestid"));
// }else {
// return Util.null2String(requestid);
// }
// // results.add(requestid+"");
// String subSql = "select requestid from workflow_requestbase where mainrequestid = ? ";
// rs.executeQuery(subSql , mainRequestId);
// while (rs.next()){
// results.add(rs.getString("requestid"));
// }
List<String> reqids = new ArrayList<>();
RecordSet rs = new RecordSet();
String ids = requestid+"";
// reqids.add(requestid);
for (int i = 0; i < 5; i++) {
ArrayList<String> idList = new ArrayList<>();
String sql = "select requestid , workflowid from workflow_requestbase where mainrequestid in ( " + ids + " )";
log.error("subrequestSql:{}" + sql);
rs.executeQuery(sql);
while (rs.next()) {
String subrequestid = Util.null2String(rs.getString("requestid"));
// String workflowid = Util.null2String(rs.getString("workflowid"));
idList.add(subrequestid);
reqids.add(subrequestid);
// 使用map自动去重,一种流程类型只取一个requestid
}
ids = String.join(",", idList);
if (ids.length() == 0) {
break;
}
}
log.error("子流程的id:"+String.join(",", reqids));
return String.join(",", reqids);
}else {
List<String> reqids = new ArrayList<>();
RecordSet rs = new RecordSet();
String ids = requestid+"";
reqids.add(requestid+"");
for (int i = 0; i < 5; i++) {
ArrayList<String> idList = new ArrayList<>();
String sql = "select requestid , workflowid from workflow_requestbase where mainrequestid in ( " + ids + " )";
log.error("subrequestSql:{}" + sql);
rs.executeQuery(sql);
while (rs.next()) {
String subrequestid = Util.null2String(rs.getString("requestid"));
// String workflowid = Util.null2String(rs.getString("workflowid"));
idList.add(subrequestid);
reqids.add(subrequestid);
// 使用map自动去重,一种流程类型只取一个requestid
}
ids = String.join(",", idList);
if (ids.length() == 0) {
break;
}
}
log.error("子流程的id:"+String.join(",", reqids));
return String.join(",", reqids);
}
}
public static String getLogCountSql(int requestid, int workflowid, String viewLogIds, String orderby, String sqlwhere){
String thisviewLogIds = getViewLogIds(viewLogIds, requestid, workflowid);
String sql = "select count(*) as count from workflow_requestlog t1 " +
" where t1.requestid=" + requestid + " and t1.logtype != '1' " +
" and " + Util.getSubINClause(thisviewLogIds, "t1.nodeid", "in");
if (sqlwhere != null && !sqlwhere.equals("")) {
sql = sql + sqlwhere;
}
ArrayList unshowlogids = forkStartLogids(requestid, workflowid);
if (unshowlogids.size() > 0) {
sql += " and " + Util.getSubINClause(StringUtils.join(unshowlogids, ","), "t1.logid", "not in");
}
return sql;
}
/**
*
*
*/
public static boolean isEndLog(int requestid, int workflowid, String viewLogIds, String orderby, int pageSize, int pagenumber, String sqlwhere) {
RecordSet rs = new RecordSet();
int max = pagenumber * pageSize;
String sql =getLogCountSql(requestid, workflowid, viewLogIds, orderby, sqlwhere);
rs.executeQuery(sql);
int count = 0;
if(rs.next()){
count = rs.getInt("count");
}
if(count<=max){
return true;
}else{
return false;
}
}
private static Hashtable addLogItem(RecordSet rs) {
int log_nodeid = rs.getInt("nodeid");
int log_destnodeid = rs.getInt("destnodeid");
String operatedate = Util.null2String(rs.getString("operatedate"));
String operatetime = Util.null2String(rs.getString("operatetime"));
String log_logtype = Util.null2String(rs.getString("logtype"));
String isRobotNode = Util.null2String(rs.getString("isRobotNode"));
Hashtable htlog = new Hashtable();
String remarkHtml = rs.getString("remark");
String isMobile = Util.null2String(rs.getString("isMobile"));
htlog.put("nodeid", "" + log_nodeid);
htlog.put("isRobotNode", "" + isRobotNode);
NodeInfoEntity nodeInfoEntity = WorkflowBaseBiz.getNodeInfo(log_nodeid);
String operator = rs.getString("operator");
if(operator.equals(RobotNodeBiz.operatorid) && (NodeType.WAIT.getValue().equals(nodeInfoEntity.getNodetype()+"") || NodeType.AUTOPROCESS.getValue().equals(nodeInfoEntity.getNodetype()+""))){
//机器人节点
String remarkOperation = new RobotNodeServiceBiz().getRobotNodeSet(log_nodeid).getRemarkOperation();
if("0".equals(remarkOperation) && "1".equals(isRobotNode)){
return null;
}
}
htlog.put("nodeattribute", nodeInfoEntity.getNodeAttribute());
htlog.put("nodename", nodeInfoEntity.getNodename());
htlog.put("destnodeid", "" + log_destnodeid);
htlog.put("iframeId", "FCKsigniframe" + rs.getInt("logid"));
htlog.put("operatortype", rs.getString("operatortype"));
htlog.put("operator", rs.getString("operator"));
htlog.put("agenttype", rs.getString("agenttype"));
htlog.put("agentorbyagentid", rs.getString("agentorbyagentid"));
htlog.put("operatedate", operatedate);
htlog.put("operatetime", operatetime);
htlog.put("logtype", log_logtype);
htlog.put("receivedPersons", rs.getString("receivedPersons"));
htlog.put("receivedPersonids", rs.getString("receivedPersonids"));
htlog.put("logid", rs.getString("requestLogId"));
htlog.put("tmpLogId", rs.getString("logid"));
htlog.put("annexdocids", rs.getString("annexdocids"));
htlog.put("operatorDept", rs.getString("operatorDept"));
htlog.put("signdocids", rs.getString("signdocids"));
htlog.put("signworkflowids", rs.getString("signworkflowids"));
htlog.put("fulltextannotation", rs.getString("fulltextannotation"));
htlog.put("isMobile", isMobile);
htlog.put("handwrittensignid", Util.null2String(rs.getString("HandWrittenSign"), ""));
htlog.put("speechattachmentid", Util.getIntValue(rs.getString("SpeechAttachment"), 0));
htlog.put("speechAttachmente9", rs.getString("speechAttachmente9"));
htlog.put("remarkLocation", rs.getString("remarkLocation"));
htlog.put("id", rs.getString("logid"));
//处理手机版中所添加的来源的后缀。
String mobileSuffix = null;
//处理历史数据
SignSource signSource = SignSource.getSignSource(isMobile);
if (signSource != null) {
mobileSuffix = WorkflowSpeechAppend.getMobileSuffix(remarkHtml);
if (mobileSuffix != null) {
remarkHtml = remarkHtml.substring(0, remarkHtml.lastIndexOf(mobileSuffix));
}
}
//获取签字意见中的电子签章部分。
String eletriSignature = WorkflowSpeechAppend.getElectrSignatrue(remarkHtml);
if (eletriSignature != null) {
remarkHtml = remarkHtml.substring(0, remarkHtml.lastIndexOf(eletriSignature));
}
//获取并设置手写签批和语音附件内容
String attachmentID = Util.null2String(rs.getString("HandWrittenSign"), "");
if (!"".equals(attachmentID)) {
String[] attachmentids = attachmentID.split(",");
for (int i = 0; i < attachmentids.length; i++) {
int attachmentid = Util.getIntValue(attachmentids[i]);
if (attachmentid > 0) {
String attachmentidAes = DocDownloadCheckUtil.checkPermission(String.valueOf(attachmentid), null);
remarkHtml += "<BR/><img name=\"handWrittenSign\" src=\""+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + attachmentidAes + "\" />";
}
}
}
//全文批注
String fulltextannotation = Util.null2String(rs.getString("fulltextannotation")).trim();
if (!"".equals(fulltextannotation)) {
String[] fulltextannotationIds = Util.splitString(fulltextannotation, ",");
for (String fulltextannotationId : fulltextannotationIds) {
int __fulltextannoationid = Util.getIntValue(fulltextannotationId);
if (__fulltextannoationid <= 0) continue;
remarkHtml += "<BR/><img name=\"fulltextannotation\" src=\""+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + __fulltextannoationid + "\" />";
}
}
int attachmentID1 = Util.getIntValue(rs.getString("SpeechAttachment"), 0);
if (attachmentID1 > 0) {
remarkHtml += "<BR/><embed name=\"speechAttachment\" height=\"25px\" width=\"300px\" name=\"speechPlayer\" src=\"audioPlayer.swf?audioUrl="+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + attachmentID1 + "\" type=\"application/x-shockwave-flash\"/>";
}
//再加上电子签章和来源信息。
if (eletriSignature != null) {
remarkHtml += eletriSignature;
}
if (mobileSuffix != null) {
remarkHtml += mobileSuffix;
}
htlog.put("remarkHtml", remarkHtml);
htlog.put("isbranche", "1".equals(nodeInfoEntity.getNodeAttribute()) ? "1" : "0");
return htlog;
}
private static String getViewLogIds(String viewLogIds, int requestid, int workflowid) {
if ("".equals(viewLogIds)) {
viewLogIds = "-1";
}
if (viewLogIds.lastIndexOf(",") == viewLogIds.length() - 1) {
viewLogIds = viewLogIds.substring(0, viewLogIds.length() - 1);
}
//查找可查看节点发起的自由节点
String _freenodeids = getFreeNodeidsByNodeids(requestid + "", viewLogIds);
if (!"".equals(viewLogIds) && !"".equals(_freenodeids)) {
viewLogIds += "," + _freenodeids;
}
String thisrequestnodeid = getAllNodeids4Request(requestid, workflowid);
return checkNodeids(thisrequestnodeid, viewLogIds);
}
public static String getFreeNodeidsByNodeids(String requestid, String nodeids) {
String result = "";
if (nodeids == null || "".equals(nodeids)) return result;
if (nodeids.endsWith(",")) {
nodeids = nodeids.substring(0, nodeids.lastIndexOf(","));
}
String sql = "select id from workflow_nodebase where isfreenode=1 and requestid=" + requestid + " and " + Util.getSubINClause(nodeids, "startnodeid", "in");
RecordSet rs = new RecordSet();
rs.executeSql(sql);
while (rs.next()) {
result += "," + Util.null2String(rs.getString(1));
}
if (result.length() > 1) {
result = result.substring(1);
}
return result;
}
/**
* ID
*
* @param requestid
* @param workflowid
* @return
*/
public static String getAllNodeids4Request(int requestid, int workflowid) {
StringBuffer sb = new StringBuffer();
try {
String allWfId = WorkflowVersion.getAllVersionStringByWFIDs(String.valueOf(workflowid));
RecordSet recordSet = new RecordSet();
recordSet.execute("select nb.id from workflow_nodebase nb left join workflow_flownode fn on nb.id=fn.nodeid where (nb.IsFreeNode is null or nb.IsFreeNode!='1' or (nb.IsFreeNode='1' and nb.requestid=" + requestid + ")) and " + Util.getSubINClause(allWfId, "fn.workflowid"," in"));
while (recordSet.next()) {
int id_tmp = Util.getIntValue(recordSet.getString(1));
sb.append("," + id_tmp);
}
sb.append(",");
} catch (Exception e) {
//
}
return sb.toString();
}
/**
* IDworkflowid
*
* @param thisnodeids:requestidworkflowidrequestid
* @param nodeids:
* @return
*/
public static String checkNodeids(String thisnodeids, String nodeids) {
StringBuffer sb = new StringBuffer();
nodeids = Util.null2String(nodeids);
thisnodeids = Util.null2String(thisnodeids);
if (!"".equals(nodeids) && !"".equals(thisnodeids)) {
try {
String[] nodeid_sz = nodeids.split(",");
for (int cx = 0; cx < nodeid_sz.length; cx++) {
int nodeid_tmp = Util.getIntValue(Util.null2String(nodeid_sz[cx]).trim());
//E9新版自由流程
if (nodeid_tmp < -1) {
sb.append(nodeid_tmp + ",");
} else {
if (("," + thisnodeids + ",").indexOf("," + nodeid_tmp + ",") > -1) {
sb.append(nodeid_tmp + ",");
}
}
}
if (sb.length() > 0) {
sb.delete(sb.length() - 1, sb.length());
}
} catch (Exception e) {
//
}
}
if (sb.length() == 0) {
sb.append("-1");
}
return sb.toString();
}
/**
* ,
*
* @param requestid
* @param workflowid
* @return
*/
public static ArrayList forkStartLogids(int requestid, int workflowid) {
ArrayList logids = new ArrayList();
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
String c_sql = "";
rs.executeSql("select 1 from workflow_flownode f ,workflow_nodebase n where f.workflowid=" + workflowid + " and f.nodeid=n.id and n.nodeattribute=1");//通过分叉起始节点判断是否为分叉流程
if (rs.next()) {
//rs.executeSql("select nodeid,nodename from workflow_flownode f,workflow_nodebase n WHERE workflowid="+workflowid+" AND n.id=f.nodeid and (n.IsFreeNode is null or n.IsFreeNode!='1') ");
rs.executeSql("select nodeid,nodename from workflow_flownode f,workflow_nodebase n WHERE workflowid=" + workflowid + " AND n.id=f.nodeid and (n.IsFreeNode is null or n.IsFreeNode!='1') and n.nodeattribute not in ('2') and exists (select 1 from workflow_requestlog l where l.requestid=" + requestid + " and l.nodeid=f.nodeid and l.logtype in ('0','2','3') group by l.logid having(l.logid)>1) ");
while (rs.next()) {
String nodeid = rs.getString("nodeid");
String nodename = rs.getString("nodename");
c_sql = "SELECT a.LOGID FROM workflow_requestLog a WHERE requestid=" + requestid + " and a.logtype in ('0','2','3','t') and a.nodeid=" + nodeid + " AND a.logid NOT IN (SELECT MAX(b.logid) FROM workflow_requestlog b WHERE a.requestid=b.requestid AND a.workflowid=b.workflowid AND a.nodeid=b.nodeid AND a.operatedate=b.operatedate AND a.operatetime=b.operatetime AND a.operator=b.operator AND a.logtype=b.logtype)";
rs1.executeSql(c_sql);
while (rs1.next()) {
logids.add(Util.getIntValue(rs1.getString(1)));
}
}
}
return logids;
}
public static ArrayList uniqLogs(ArrayList logs) {
ArrayList tmpLogs = new ArrayList();
ArrayList logIds = new ArrayList();
for (int i = 0; i < logs.size(); i++) {
Hashtable ht = (Hashtable) logs.get(i);
int logid = -1;
try {
// System.out.println(ht.get("tmpLogId"));
logid = Integer.parseInt((String) ht.get("tmpLogId"));
} catch (Exception e) {
e.printStackTrace();
}
if (logIds.indexOf(logid) < 0) {
tmpLogs.add(ht);
logIds.add(logid);
}
}
return tmpLogs;
}
/**
*
*/
public static String removeRemarkSource(String remark) {
if (remark != null) {
remark = remark.replaceAll("来自[a-zA-Z]{3,10}客户端|来自[a-zA-Z]{3,10}手机版|来自企业微信|来自微信企业号", "");
remark = remark.replaceAll("<br/><br/><span style='font-size:11px;color:#666;'></span>", "");
} else
remark = "";
return remark;
}
public static void loadNodeCanViewNodeIds(int viewNodeId, int workflowid, List<String> canViewIds, int requestid) {
loadNodeCanViewNodeIds(viewNodeId, workflowid, canViewIds, requestid, false);
}
/**
*
*
* @param viewNodeId
* @param workflowid
* @param canViewIds
*/
public static void loadNodeCanViewNodeIds(int viewNodeId, int workflowid, List<String> canViewIds, int requestid, boolean isViewAllNodeLog) {
RecordSet rs = new RecordSet();
String singleViewLogIds = "";
if (isViewAllNodeLog) {
singleViewLogIds = "-1";
} else {
rs.executeQuery("select viewnodeids from workflow_flownode where workflowid= ? and nodeid= ? ",workflowid,viewNodeId);
if (rs.next()) {
singleViewLogIds = rs.getString("viewnodeids");
}
}
if ("-1".equals(singleViewLogIds)) {// 全部查看
rs.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 (rs.next()) {
String tempNodeId = rs.getString("nodeid");
if (!canViewIds.contains(tempNodeId)) {
canViewIds.add(tempNodeId);
}
}
} else if (singleViewLogIds == null || "".equals(singleViewLogIds)) {// 全部不能查看
} else {// 查看部分
String tempidstrs[] = Util.TokenizerString2(singleViewLogIds, ",");
for (int i = 0; i < tempidstrs.length; i++) {
if (!canViewIds.contains(tempidstrs[i])) {
canViewIds.add(tempidstrs[i]);
}
}
}
}
/**
* id
*
* @param requestid
* @param workflowid
* @return
*/
public static String getViewLogIds(int requestid, int userid, int workflowid) {
List<String> canViewIds = new ArrayList<String>();
RecordSet recordSet = new RecordSet();
//节点操作者
recordSet.executeSql("select nodeid from workflow_currentoperator where requestid=" + requestid + " and userid=" + userid + " order by receivedate desc ,receivetime desc");
if (recordSet.next()) {
int viewnodeid = FreeNodeBiz.getExtendNodeId(requestid, Util.getIntValue(recordSet.getString("nodeid")));
RequestLogCusBiz.loadNodeCanViewNodeIds(viewnodeid, workflowid, canViewIds, requestid);
}
//加载自由节点
FreeNodeBiz.loadViewLogFreeNodeIds(requestid, canViewIds);
return CollectionUtil.list2String(canViewIds, ",");
}
/**
* requestlogId
*
* @param logEntity
* @param user
* @return
*/
public static int saveRequestLog(RequestLogEntity logEntity, User user, boolean istest) {
int logid = -1;
if (logEntity == null) return logid;
int operatorDept1 = user.getUserDepartment();
int operatorSub = user.getUserSubCompany1();
int operatorJob = Util.getIntValue(user.getJobtitle(), 0);
String seclevel = Util.getIntValue(user.getSeclevel(), 0) + "";
ConnStatement logstatement = null;
String remarknew = logEntity.getRemark();
RequestLogType logType = logEntity.getLogType();
if (logType == RequestLogType.SAVE && !"".equals(Util.null2String(logEntity.getRemarkquote()))) {
remarknew = logEntity.getRemarkquote();
}
logEntity.setRemarkquote("");
logEntity.setOperator(user.getUID());
logEntity.setOperatortype("1".equals(user.getLogintype()) ? 0 : 1);
try {
RecordSet rs = new RecordSet();
boolean insertLog = true;
if (logType == RequestLogType.SAVE) {
String logsql = " SELECT logid FROM workflow_requestlog WHERE requestid= ? AND nodeid= ? AND logtype=? AND OPERATOR = ? AND operatortype = ?";
rs.executeQuery(logsql, logEntity.getRequestid(), logEntity.getNodeid(), logType.getKey(), user.getUID(), logEntity.getOperatortype());
if (rs.next()) {
logid = rs.getInt("logid");
insertLog = false;
String updatelogsql = " UPDATE workflow_requestlog SET operatedate= ?,operatetime= ?," +
" remark= ?, clientip= ?, destnodeid= ?, annexdocids= ?, " +
" requestLogId= ?, signdocids= ?, signworkflowids= ?, isMobile= ?," +
" SpeechAttachment= ?, HandWrittenSign= ?, remarkLocation=?,remarkquote=?,fulltextannotation = ?,speechAttachmente9 = ? where requestid=" + logEntity.getRequestid() +
" AND nodeid=" + logEntity.getNodeid() + " AND logtype='" + logType.getKey() + "' AND OPERATOR = " + user.getUID() +
" AND operatortype = " + logEntity.getOperatortype();
logstatement = new ConnStatement();
logstatement.setStatementSql(updatelogsql);
logstatement.setString(1, logEntity.getOperatedate());
logstatement.setString(2, logEntity.getOperatetime());
logstatement.setString(3, logEntity.getRemark());
logstatement.setString(4, logEntity.getClientip());
logstatement.setInt(5, logEntity.getDestnodeid());
logstatement.setString(6, logEntity.getAnnexdocids());
logstatement.setInt(7, logEntity.getRequestLogId());
logstatement.setString(8, logEntity.getSigndocids());
logstatement.setString(9, logEntity.getSignworkflowids());
logstatement.setString(10, logEntity.getIsMobile());
logstatement.setInt(11, logEntity.getSpeechAttachment());
logstatement.setString(12, String.valueOf(logEntity.getHandWrittenSign()));
logstatement.setString(13, logEntity.getRemarkLocation());
logstatement.setString(14, logEntity.getRemarkquote());
logstatement.setString(15, logEntity.getFulltextannotation());
logstatement.setString(16, logEntity.getSpeechAttachmente9());
logstatement.executeUpdate();
}
} else {
String deletelogsql = " DELETE from workflow_requestlog WHERE requestid= ? AND nodeid= ? AND (logtype='1') AND OPERATOR = ? AND operatortype = ?";
rs.executeUpdate(deletelogsql, logEntity.getRequestid(), logEntity.getNodeid(), user.getUID(), logEntity.getOperatortype());
}
//插入意見
if (insertLog) {
String uuid = UUID.randomUUID().toString();
String insertlogsql = " INSERT INTO workflow_requestlog (requestid,workflowid,nodeid,logtype, operatedate, " +
" operatetime,OPERATOR, remark,clientip,operatortype,destnodeid,receivedPersons, " +
" agentorbyagentid,agenttype,showorder,annexdocids,requestLogId,operatorDept, " +
" signdocids,signworkflowids,isMobile,HandWrittenSign,SpeechAttachment,receivedPersonids,remarkLocation,remarkquote,fulltextannotation,speechAttachmente9,uuid,operatorSub, operatorJob, seclevel) " +
" VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
logstatement = new ConnStatement();
logstatement.setStatementSql(insertlogsql);
logstatement.setInt(1, logEntity.getRequestid());
logstatement.setInt(2, logEntity.getWorkflowid());
logstatement.setInt(3, logEntity.getNodeid());
logstatement.setString(4, logType.getKey());
logstatement.setString(5, logEntity.getOperatedate());
logstatement.setString(6, logEntity.getOperatetime());
logstatement.setInt(7, user.getUID());
logstatement.setString(8, remarknew);
logstatement.setString(9, logEntity.getClientip());
logstatement.setInt(10, logEntity.getOperatortype());
logstatement.setInt(11, logEntity.getDestnodeid());
logstatement.setString(12, logEntity.getReceivedPersons());
logstatement.setInt(13, logEntity.getAgentorbyagentid());
logstatement.setString(14, logEntity.getAgenttype());
logstatement.setInt(15, logEntity.getShoworder());
logstatement.setString(16, logEntity.getAnnexdocids());
logstatement.setInt(17, logEntity.getRequestLogId());
logstatement.setString(18, String.valueOf(operatorDept1));
logstatement.setString(19, logEntity.getSigndocids());
logstatement.setString(20, logEntity.getSignworkflowids());
logstatement.setString(21, logEntity.getSignSource().getType());
logstatement.setString(22, String.valueOf(logEntity.getHandWrittenSign()));
logstatement.setInt(23, Util.getIntValue(logEntity.getSpeechAttachment(), 0));
logstatement.setString(24, logEntity.getReceivedpersonids());
logstatement.setString(25, logEntity.getRemarkLocation());
logstatement.setString(26, logEntity.getRemarkquote());
logstatement.setString(27, logEntity.getFulltextannotation());
logstatement.setString(28, logEntity.getSpeechAttachmente9());
logstatement.setString(29, uuid);
logstatement.setInt(30, operatorSub);
logstatement.setInt(31, operatorJob);
logstatement.setString(32, seclevel);
logstatement.executeUpdate();
logstatement.close();
rs.executeQuery("select logid from workflow_requestlog where requestid = ? and uuid = ?", logEntity.getRequestid(), uuid);
if (rs.next()) {
logid = rs.getInt("logid");
}
}
/**
* ,(s)
*
*/
if (logType != RequestLogType.SAVE) {
rs.executeQuery("select currentnodeid,currentnodetype from workflow_requestbase where requestid = ?", logEntity.getRequestid());
int curnodeid = 0;
int curnodetype = -1;
if (rs.next()) {
curnodeid = rs.getInt("currentnodeid");
curnodetype = rs.getInt("currentnodetype");
}
NodeInfoEntity nodeInfoEntity = WorkflowBaseBiz.getNodeInfo(curnodeid);
Set<String> branchNodeSet = new HashSet<String>();
if ("2".equals(nodeInfoEntity.getNodeAttribute())) { //分支中间节点
WFLinkInfo wflinkinfo = new WFLinkInfo();
String branchnodes = wflinkinfo.getNowNodeids(logEntity.getRequestid());
if (!"".equals(branchnodes)) {
String[] strs = branchnodes.split(",");
for (int k = 0; k < strs.length; k++) {
String nodestr = strs[k];
if (!"-1".equals(nodestr)) {
branchNodeSet.add(nodestr);
}
}
}
}
//流程的非归档节点,且插入日志的节点仍然是流程的当前节点,则需要日志权限控制
if (!"3".equals(curnodetype) && (curnodeid == logEntity.getNodeid() || branchNodeSet.contains(String.valueOf(logEntity.getNodeid())))) {
int loguserid = user.getUID();
if (logType == RequestLogType.SUPERVISE) { // 督办所有人有权限
loguserid = -1;
}
String rightSql = "insert into workflow_logviewusers (logid,userid) values (? , ?)";
rs.executeUpdate(rightSql, logid, loguserid);
}
RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe();
reqsignwm.inertRelevanceInfo(String.valueOf(logEntity.getWorkflowid()), String.valueOf(logEntity.getRequestid()), String.valueOf(logEntity.getNodeid()),
logType.getKey(), logEntity.getOperatedate(), logEntity.getOperatetime(), String.valueOf(user.getUID()), remarknew);
//提醒
List<String> atResourceids = reqsignwm.parseRemark(remarknew);
if (atResourceids.size() > 0) {
RequestOperationMsgManager romm = new RequestOperationMsgManager();
romm.remarkAtMsg(String.valueOf(logEntity.getRequestid()), String.valueOf(user.getUID()), atResourceids);
}
}
} catch (Exception e) {
log.info(new StringBuilder().append("~requestlog~rstlogpara:").append(JSONObject.toJSONString(logEntity)).append(",remark:").append(remarknew).toString());
e.printStackTrace();
} finally {
if (logstatement != null) logstatement.close();
}
return logid;
}
/**
*
* @return
*/
public static String getCustomSourceCondition(String source,Map<String,Object> params){
String result = "";
if("wfCenter".equals(source)){
if(!"".equals(Util.null2String(params.get("logids")))){
result += " and logid in(" + Util.null2String(params.get("logids")) + ") ";
}
}
return result;
}
}

@ -258,6 +258,8 @@ public class Test {
if (matcher.find()) {
return matcher.group(1); // 返回匹配的第一个分组,即中文内容
}
//birthdayReminders
return input;
}
}

@ -1,5 +1,7 @@
package com.engine.tjbankSocket;
import java.util.Map;
public interface SocketExecute {
public String execute(String param);
public String execute(Map<String, String> param);
}

@ -20,8 +20,8 @@ import java.util.*;
*/
public class CWGLSocketExecute extends BaseBean implements SocketExecute {
@Override
public String execute(String param) {
Map<String, String> paramMap = XMLUtils.parseXMLToMap(param);
public String execute(Map<String, String> param) {
Map<String, String> paramMap = param;
writeLog("paramMap==="+paramMap);
String oaTrvlBnsExpnsAcctNo = Util.null2String(paramMap.get("oaTrvlBnsExpnsAcctNo"));
String apprvrNo = Util.null2String(paramMap.get("apprvrNo"));

@ -3,10 +3,12 @@ package com.engine.tjbankSocket.impl;
import com.engine.tjbankSocket.SocketExecute;
import com.engine.web.tjbk.TJBKWorkFlow;
import java.util.Map;
public class GetToCountSocketExecute implements SocketExecute {
TJBKWorkFlow tjbkWorkFlow = new TJBKWorkFlow();
@Override
public String execute(String param) {
return tjbkWorkFlow.getToDoCount(param.toString());
public String execute(Map<String, String> param) {
return tjbkWorkFlow.getToDoCount(param);
}
}

@ -0,0 +1,116 @@
package com.engine.util;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import java.io.*;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
//发送SocketUtil
public class SocketClientUtil {
private int port = 8090;
private String host = "14.1.209.146";
// private BaseBean bs = new BaseBean();
public SocketClientUtil(String host ,int port) {
this.port = port;
this.host = host;
}
public String send(String request) throws Exception {
// bs.writeLog("Client Start...");
Socket socket = null;
try {
//创建一个流套接字并将其连接到指定主机上的指定端口号
socket = new Socket(host,port);
// String str = "00000612<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157060000081243</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20230905104426</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>13</SvcScn><BnkSrlNo>015720230905060000081243</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount</method><args><entry><key>userNum</key><value>10913026任广鹏是个大刷币</value></entry></args></request></Service_Body></Service>";
// System.out.println(str);
//读取服务器端数据
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
//向服务器端发送数据
// PrintStream out = new PrintStream(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8),true);
out.println(request);
char[] datalen=new char[8];//报文前八位为报文体总长度
input.read(datalen,0,8);
String lendata=new String (datalen);
System.out.println(lendata);
int length=Integer.parseInt(lendata);
// new BaseBean().writeLog("报文长度"+length);
char[] data=new char[length];
int datalength = input.read(data,0,length);
String requestData = new String(data);
// new BaseBean().writeLog("requestData",requestData);
// String ret = input.readLine();
System.out.println("服务器端返回过来的是: " + requestData);
// bs.writeLog("服务器端返回过来的是: " + requestData);
// 如接收到 "OK" 则断开连接
if (!StringUtil.isEmpty(requestData)) {
// bs.writeLog("客户端将关闭连接");
// System.out.println("客户端将关闭连接: " + requestData);
Thread.sleep(500);
}
out.close();
input.close();
return requestData;
} catch (Exception e) {
System.out.println("客户端异常:" + e.getMessage());
throw e;
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
socket = null;
// bs.writeLog("客户端 finally 异常:" + e.getMessage());
}
}
}
// return "-1";
}
static class UpdateLogThread extends Thread {
@Override
public void run() {
try {
Thread.sleep(3000);
System.out.println("33333333");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception {
for (int i = 0; i < 5000; i++) {
new Thread(){
@Override
public void run(){
SocketClientUtil socket = new SocketClientUtil("14.1.209.146", 8090);
try {
socket.send("00000597<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157060000065445</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20240315092648</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>12</SvcScn><BnkSrlNo>015720240315060000065445</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount2</method><args><entry><key>userNum</key><value>10110047</value></entry></args></request></Service_Body></Service>");
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
public static String cece(){
System.out.println("1111");
UpdateLogThread updateLogThread = new UpdateLogThread();
updateLogThread.start();
return "222";
}
}

@ -0,0 +1,379 @@
package com.engine.util;
import com.alibaba.druid.util.StringUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import weaver.general.BaseBean;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class XMLUtils {
//构建返回值
public static String count2XML(Map<String,String> headerParam,Integer todocount , Integer toreadcount ) {
try {
// 创建文档对象
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
// 创建根节点
Element rootElement = doc.createElement("Service");
doc.appendChild(rootElement);
addServiceHeader(doc,rootElement,headerParam);
// 创建Service_Body节点
Element serviceBodyElement = doc.createElement("Service_Body");
rootElement.appendChild(serviceBodyElement);
// 创建response节点
Element responseElement = doc.createElement("response");
serviceBodyElement.appendChild(responseElement);
// 创建todo节点
Element todoElement = doc.createElement("todo");
responseElement.appendChild(todoElement);
// 创建count节点并设置值
if(todocount != null) {
Element countElement = doc.createElement("count");
countElement.setTextContent(todocount + "");
todoElement.appendChild(countElement);
}
if(toreadcount != null){
Element countOneElement = doc.createElement("countOne");
countOneElement.setTextContent(toreadcount+"");
todoElement.appendChild(countOneElement);
}
// 将文档对象转换为XML字符串
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); // 设置不包含XML声明
DOMSource source = new DOMSource(doc);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
StreamResult result = new StreamResult(outputStream);
transformer.transform(source, result);
// 将XML结果转换为字符串
String xmlString = outputStream.toString("UTF-8");
//System.out.println(xmlString);
return xmlString;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
private static void addServiceHeader(Document doc, Element rootElement, Map<String, String> headerParam) {
// 创建Service_Body节点
Element serviceHeaderElement = doc.createElement("Service_Header");
rootElement.appendChild(serviceHeaderElement);
//service_sn ESB服务流水号
if (!StringUtils.isEmpty(headerParam.get("service_sn"))){
Element serviceSnElement = doc.createElement("service_sn");
serviceSnElement.setTextContent(headerParam.get("service_sn"));
serviceHeaderElement.appendChild(serviceSnElement);
}
if (!StringUtils.isEmpty(headerParam.get("service_id"))){
Element serviceIdElement = doc.createElement("service_id");
serviceIdElement.setTextContent(headerParam.get("service_id"));
serviceHeaderElement.appendChild(serviceIdElement);
}
if (!StringUtils.isEmpty(headerParam.get("system_id"))){
Element systemIdElement = doc.createElement("system_id");
systemIdElement.setTextContent(headerParam.get("system_id"));
serviceHeaderElement.appendChild(systemIdElement);
}
if (!StringUtils.isEmpty(headerParam.get("requester_id"))){
Element requesterIdElement = doc.createElement("requester_id");
requesterIdElement.setTextContent(headerParam.get("requester_id"));
serviceHeaderElement.appendChild(requesterIdElement);
}
if (!StringUtils.isEmpty(headerParam.get("branch_id"))){
Element branchIdElement = doc.createElement("branch_id");
branchIdElement.setTextContent(headerParam.get("branch_id"));
serviceHeaderElement.appendChild(branchIdElement);
}
if (!StringUtils.isEmpty(headerParam.get("channel_id"))){
Element channelIdElement = doc.createElement("channel_id");
channelIdElement.setTextContent(headerParam.get("channel_id"));
serviceHeaderElement.appendChild(channelIdElement);
}
if (!StringUtils.isEmpty(headerParam.get("service_time"))){
Element serviceTimeElement = doc.createElement("requester_id");
serviceTimeElement.setTextContent(headerParam.get("service_time"));
serviceHeaderElement.appendChild(serviceTimeElement);
}
if (!StringUtils.isEmpty(headerParam.get("BnkSrlNo"))){
Element BnkSrlNoElement = doc.createElement("BnkSrlNo");
BnkSrlNoElement.setTextContent(headerParam.get("BnkSrlNo"));
serviceHeaderElement.appendChild(BnkSrlNoElement);
}
// if (!StringUtils.isEmpty(headerParam.get("FileFlg"))){
Element FileFlgElement = doc.createElement("FileFlg");
FileFlgElement.setTextContent("0");
serviceHeaderElement.appendChild(FileFlgElement);
// }
if (!StringUtils.isEmpty(headerParam.get("SvcCd"))){
Element SvcCdElement = doc.createElement("SvcCd");
SvcCdElement.setTextContent(headerParam.get("SvcCd"));
serviceHeaderElement.appendChild(SvcCdElement);
}
if (!StringUtils.isEmpty(headerParam.get("SvcScn"))){
Element SvcScnElement = doc.createElement("SvcScn");
SvcScnElement.setTextContent(headerParam.get("SvcScn"));
serviceHeaderElement.appendChild(SvcScnElement);
}
// 响应码
Element service_responseElement = doc.createElement("service_response");
serviceHeaderElement.appendChild(service_responseElement);
if (!StringUtils.isEmpty(headerParam.get("status"))){
Element statusElement = doc.createElement("status");
statusElement.setTextContent(headerParam.get("status"));
service_responseElement.appendChild(statusElement);
}
if (!StringUtils.isEmpty(headerParam.get("code"))){
Element codeElement = doc.createElement("code");
codeElement.setTextContent(headerParam.get("code"));
service_responseElement.appendChild(codeElement);
}
if (!StringUtils.isEmpty(headerParam.get("desc"))){
Element descElement = doc.createElement("desc");
descElement.setTextContent(headerParam.get("desc"));
service_responseElement.appendChild(descElement);
}
}
public static Map<String, String> parseXMLToMap2(String xmlString) {
Map<String, String> resultMap = new HashMap<>();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new ByteArrayInputStream(xmlString.getBytes()));
Element rootElement = document.getDocumentElement();
extractValues(rootElement, resultMap);
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
private static void extractValues(Element element, Map<String, String> resultMap) {
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
if (childNodes.item(i) instanceof Element) {
Element childElement = (Element) childNodes.item(i);
String nodeName = childElement.getNodeName();
String nodeValue = childElement.getTextContent();
resultMap.put(nodeName, nodeValue);
extractValues(childElement, resultMap);
}
}
}
public static String CW2XML(Map<String, String> headerParam, String retCd, String errorMessage) {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("Service");
doc.appendChild(rootElement);
addServiceHeader(doc, rootElement, headerParam);
Element serviceBodyElement = doc.createElement("Service_Body");
rootElement.appendChild(serviceBodyElement);
Element responseElement = doc.createElement("response");
serviceBodyElement.appendChild(responseElement);
Element countOneElement;
if (retCd != null) {
countOneElement = doc.createElement("retCd");
countOneElement.setTextContent(retCd + "");
responseElement.appendChild(countOneElement);
}
if (errorMessage != null) {
countOneElement = doc.createElement("errorMessage");
countOneElement.setTextContent(errorMessage + "");
responseElement.appendChild(countOneElement);
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty("omit-xml-declaration", "no");
DOMSource source = new DOMSource(doc);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
StreamResult result = new StreamResult(outputStream);
transformer.transform(source, result);
String xmlString = outputStream.toString("UTF-8");
String length = String.format("%08d", xmlString.length());
return length + xmlString;
} catch (Exception var16) {
var16.printStackTrace();
return "";
}
}
// public static Map<String, String> parseXMLToMap(String xmlString) {
// Map<String, String> resultMap = new HashMap<>();
// try {
// DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// DocumentBuilder builder = factory.newDocumentBuilder();
// Document document = builder.parse(new ByteArrayInputStream(xmlString.getBytes(StandardCharsets.UTF_8)));
//
// Element rootElement = document.getDocumentElement();
// // 直接从根元素开始处理
// NodeList children = rootElement.getChildNodes();
// for (int i = 0; i < children.getLength(); i++) {
// if (children.item(i).getNodeType() == Node.ELEMENT_NODE) {
// Element child = (Element) children.item(i);
// extractValues(child, resultMap);
// }
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// return resultMap;
// }
//
// private static void extractValues(Element element, Map<String, String> resultMap) {
// // 检查是否有子元素
// boolean hasChildElement = false;
// NodeList childNodes = element.getChildNodes();
// for (int i = 0; i < childNodes.getLength(); i++) {
// if (childNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {
// hasChildElement = true;
// break;
// }
// }
//
// // 如果有子元素,只处理子元素
// if (hasChildElement) {
// for (int i = 0; i < childNodes.getLength(); i++) {
// Node node = childNodes.item(i);
// if (node.getNodeType() == Node.ELEMENT_NODE) {
// Element childElement = (Element) node;
// String nodeName = childElement.getNodeName();
// // 去除前后空白字符
// String nodeValue = childElement.getTextContent().trim();
// resultMap.put(nodeName, nodeValue);
// // 不再递归调用以避免重复添加
// }
// }
// }
// }
public static void main(String[] args) {
System.out.println(new Date());
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Service_Header><service_sn>1010157060000065445</service_sn><system_id>0258</system_id><requester_id>0157</requester_id><branch_id>010231100</branch_id><channel_id>01</channel_id><service_time>20240315092648</service_time><need_request>true</need_request><SvcCd>500130004</SvcCd><SvcScn>12</SvcScn><BnkSrlNo>015720240315060000065445</BnkSrlNo><FileFlg>0</FileFlg></Service_Header><Service_Body><request><path>todo</path><method>getCount2</method><args><entry><key>userNum</key><value>10110707</value></entry></args></request></Service_Body></Service>";
for (int i = 0; i < 2000; i++) {
new Thread() {
@Override
public void run() {
// System.out.println(parseXMLToMap2(xml));
parseXMLToMap(xml);
parseXMLToMap(xml);
parseXMLToMap(xml);
parseXMLToMap(xml);
printMemoryUsage();
}
}.start();
printMemoryUsage();
}
System.out.println(new Date());
}
public static Map<String, String> parseXMLToMap(String xmlString) {
new BaseBean().writeLog("XMLUtils:xmlString==>"+xmlString);
Map<String, String> resultMap = new HashMap<>();
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
InputStream xmlInput = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
saxParser.parse(xmlInput, new SAXHandler(resultMap));
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
private static class SAXHandler extends DefaultHandler {
private Map<String, String> resultMap;
private Stack<String> elementStack = new Stack<>();
private StringBuilder elementValue = new StringBuilder();
public SAXHandler(Map<String, String> resultMap) {
this.resultMap = resultMap;
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
elementStack.push(qName);
elementValue.setLength(0); // 清空字符缓存
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
String value = elementValue.toString().trim();
if (!value.isEmpty()) {
// 如果当前元素有值且没有子元素则将其添加到结果Map中
if (elementStack.size() > 1) {
resultMap.put(elementStack.peek(), value);
}
}
elementStack.pop();
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
elementValue.append(ch, start, length);
}
}
public static void printMemoryUsage() {
Runtime runtime = Runtime.getRuntime();
long totalMemory = runtime.totalMemory(); // JVM总内存
long freeMemory = runtime.freeMemory(); // JVM空闲内存
long usedMemory = totalMemory - freeMemory; // 已使用内存
// System.out.println("Total Memory: " + totalMemory + " bytes");
// System.out.println("Free Memory: " + freeMemory + " bytes");
System.out.println("Used Memory: " + usedMemory + " bytes");
}
}

@ -68,7 +68,7 @@ public class TJBKWorkFlow {
}
}
public String getToDoCount(String param) {
public String getToDoCount(Map<String, String> param) {
// new BaseBean().writeLog("请求参数为" + param);
// if (StringUtil.isEmpty(requestBody)) {
@ -80,7 +80,8 @@ public class TJBKWorkFlow {
try {
// String substring = param.substring(8, param.length());
// new BaseBean().writeLog("xml报文"+substring);
paramMap = XMLUtils.parseXMLToMap(param);
// paramMap = XMLUtils.parseXMLToMap(param);
paramMap = param;
String path = paramMap.get("path");
String method = paramMap.get("method");

@ -16,6 +16,8 @@ import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TjbkServerSocket implements ServletContextListener {
private SocketThread socketThread;
@ -47,6 +49,7 @@ class SocketThread extends Thread {
private ServletContext servletContext;
private ServerSocket serverSocket;
private ExecutorService executorService; // 线程池
public SocketThread(ServerSocket serverSocket, ServletContext servletContext) {
this.servletContext = servletContext;
@ -55,6 +58,9 @@ class SocketThread extends Thread {
if (serverSocket == null) {
try {
this.serverSocket = new ServerSocket(Integer.parseInt(port));
// 创建固定大小的线程池
this.executorService = Executors.newFixedThreadPool(10);
} catch (IOException e) {
e.printStackTrace();
}
@ -69,7 +75,8 @@ class SocketThread extends Thread {
new BaseBean().writeLog("SocketThread线程启动");
Socket socket = serverSocket.accept();
if (socket != null) {
new ProcessSocketData(socket, this.servletContext).start();
// new ProcessSocketData(socket, this.servletContext).start();
executorService.submit(new ProcessSocketData(socket, servletContext));
}
} catch (IOException e) {
e.printStackTrace();
@ -81,6 +88,7 @@ class SocketThread extends Thread {
try {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
executorService.shutdown();
}
} catch (IOException e) {
e.printStackTrace();
@ -88,7 +96,7 @@ class SocketThread extends Thread {
}
}
class ProcessSocketData extends Thread {
class ProcessSocketData implements Runnable {
private Socket socket;
private ServletContext servletContext;
@ -106,7 +114,7 @@ class ProcessSocketData extends Thread {
public void run() {
try {
// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new BaseBean().writeLog("ServerSocket线程启动");
new BaseBean().writeLog("ServerSocket线程启动"+Thread.currentThread().getName());
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8);
PrintWriter pw = new PrintWriter(outputStreamWriter);
@ -160,7 +168,9 @@ class ProcessSocketData extends Thread {
socketExecute = new CWGLSocketExecute();
new BaseBean().writeLog(this.getClass().getName()+":CWGLSocketExecute");
}
String execute = socketExecute.execute(XMLparam);
String execute = socketExecute.execute(paramMap);
return execute;
}
}

@ -0,0 +1,65 @@
package com.weavernorth.nsyh.opinion.cmd;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.*;
/**
* @Author :
* @Date : 2022/3/1 9:58
* @Version 1.0
*/
public class GetNodesCmd extends AbstractCommonCommand<Map<String,Object>> {
public GetNodesCmd(User user, Map<String,Object> params) {
this.user = user;
this.params = params;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> apidatas = new HashMap<String, Object>();
if (null == user){
apidatas.put("hasRight", false);
apidatas.put("msg", "用户信息不存在");
return apidatas;
}
try {
// int workflowid = Util.getIntValue(Util.null2String(params.get("workflowid")),0);
// if(workflowid==0){
// apidatas.put("hasRight", false);
// apidatas.put("msg", "参数不足");
// return apidatas;
// }
RecordSet rs = new RecordSet();
List<Map<String,String>> nodeList = new ArrayList<>();
rs.executeQuery("select workflowid,nodename from uf_ycqzyjxx where zt = 0 ");
while (rs.next()){
String workflowid = Util.null2String(rs.getString("workflowid"));
String nodeid = Util.null2String(rs.getString("nodename"));
if(!"".equals(workflowid)&&!"".equals(nodeid)){
Map<String,String> nodemap = new HashMap<>();
nodemap.put("workflowid",workflowid);
nodemap.put("nodeid",nodeid);
nodeList.add(nodemap);
}
}
apidatas.put("nodelist",nodeList);
apidatas.put("hasRight", true);
} catch (Exception e) {
apidatas.put("hasRight", false);
apidatas.put("msg", "Exception WorkflowTodoCmd"+e);
}
return apidatas;
}
}

@ -0,0 +1,15 @@
package com.weavernorth.nsyh.opinion.service;
import java.util.Map;
/**
* @Author :
* @Date : 2022/3/1 9:47
* @Version 1.0
*/
public interface WfOpinionService {
//根据流程id获取需要隐藏签字意见相关信息的节点id
Map<String,Object> getNodes(Map<String, Object> params);
}

@ -0,0 +1,19 @@
package com.weavernorth.nsyh.opinion.service.impl;
import com.weavernorth.nsyh.opinion.cmd.GetNodesCmd;
import com.weavernorth.nsyh.opinion.service.WfOpinionService;
import com.engine.core.impl.Service;
import java.util.Map;
/**
* @Author :
* @Date : 2022/3/1 9:49
* @Version 1.0
*/
public class WfOpinionServiceImpl extends Service implements WfOpinionService {
@Override
public Map<String, Object> getNodes(Map<String, Object> params) {
return commandExecutor.execute(new GetNodesCmd(user,params));
}
}

@ -0,0 +1,55 @@
package com.weavernorth.nsyh.opinion.web;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.weavernorth.nsyh.opinion.service.WfOpinionService;
import com.weavernorth.nsyh.opinion.service.impl.WfOpinionServiceImpl;
import weaver.general.BaseBean;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
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;
/**
* @Author :
* @Date : 2022/3/1 9:40
* @Version 1.0
*/
public class WfOpinionAction extends BaseBean {
private WfOpinionService getService(User user) {
return (WfOpinionServiceImpl) ServiceUtil.getService(WfOpinionServiceImpl.class, user);
}
/**
* idid
* @param request
* @param response
* @return
*/
@GET
@Path("/getNodes")
@Produces({MediaType.TEXT_PLAIN})
public String getNodes(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String, Object> apidatas = new HashMap<String, Object>();
try {
User user = HrmUserVarify.getUser(request, response);
apidatas.putAll(getService(user).getNodes(ParamUtil.request2Map(request)));
apidatas.put("api_status", true);
} catch (Exception e) {
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,80 @@
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.io.FileInputStream" %>
<%@ page import="java.io.File" %>
<%@ page import="org.apache.poi.ss.usermodel.Workbook" %>
<%@ page import="org.apache.poi.xssf.usermodel.XSSFWorkbook" %>
<%@ page import="org.apache.poi.ss.usermodel.Sheet" %>
<%@ page import="org.apache.poi.ss.usermodel.Row" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="com.engine.custom.archives.entity.Dept" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%
List<Dept> depts = readExcelFile("/opt/weaver/filesys/zzxx.xlsx");
// 输出或处理dept列表
out.println(depts.size());
out.println(JSONObject.toJSONString(depts));
RecordSet recordSet = new RecordSet();
String comSql = "update hrmsubcompanydefined set DAPYBH = ? where SUBCOMID = (select id from hrmsubcompany where SUBCOMPANYNAME = ? )";
// String deptByDeptSql = "update hrmdepartmentdefined set DAPYBH = ? where SUBCOMPANYNAME = ? and SUPDEPID = (select * from hrmdepartmentdefined where DAPYBH = ? )";
// String deptByComSql = "update hrmdepartmentdefined set DAPYBH = ? where SUBCOMPANYNAME = ? and SUPDEPID = (select * from SUBCOMPANYID1 where DAPYBH = ? )";
String deptSql = "update hrmdepartmentdefined set DAPYBH = ? where deptid in (select id from hrmdepartment where DEPARTMENTNAME = ? ) and deptid in (select id from hrmdepartment where SUBCOMPANYID1 = (select SUBCOMID from hrmsubcompanydefined where DAPYBH = ? ) or SUPDEPID = (select DEPTID from hrmdepartmentdefined where DAPYBH = ? ) )";
for (Dept dept : depts) {
if ("zgs".equals(dept.getType())) {
continue;
}
if ("zonghang".equals(dept.getType())) {
recordSet.executeUpdate(comSql, dept.getId(), dept.getName());
}
if ("zhih".equals(dept.getType()) || "fh".equals(dept.getType())) {
if ("10".equals(dept.getParentId())) {
recordSet.executeUpdate(comSql, dept.getId(), dept.getName());
} else {
recordSet.executeUpdate(deptSql, dept.getId(), dept.getName(), dept.getParentId(), dept.getParentId());
}
}
if ("ld".equals(dept.getType()) || "bm".equals(dept.getType())) {
recordSet.executeUpdate(deptSql, dept.getId(), dept.getName(), dept.getParentId(), dept.getParentId());
}
}
%>
<%!
public static List<Dept> readExcelFile(String filePath) {
List<Dept> dept = new ArrayList<>();
try (FileInputStream fis = new FileInputStream(new File(filePath));
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
if (rowIterator.hasNext()) {
rowIterator.next(); // 跳过标题行
}
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Dept Dept = new Dept();
Dept.setId(row.getCell(0).getStringCellValue());
Dept.setName(row.getCell(1).getStringCellValue());
Dept.setType(row.getCell(2).getStringCellValue());
Dept.setParentId(row.getCell(3).getStringCellValue());
Dept.setAllName(row.getCell(4).getStringCellValue());
// 假设第一列是姓名,第二列是年龄
dept.add(Dept);
}
} catch (Exception e) {
e.printStackTrace();
}
return dept;
}
%>

@ -1,64 +1,811 @@
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="java.util.regex.Pattern" %>
<%@ page import="java.util.regex.Matcher" %>
<%@ page import="org.apache.poi.xwpf.usermodel.XWPFDocument" %>
<%@ page import="cn.afterturn.easypoi.word.WordExportUtil" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.io.*" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="com.engine.workflow.cmd.requestForm.StatusDataCmd" %>
<%@ page import="com.engine.core.interceptor.CommandContext" %>
<%@ page import="com.api.workflow.service.RequestAuthenticationService" %>
<%@ page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %>
<%@ page import="org.apache.http.impl.client.HttpClients" %>
<%@ page import="org.apache.http.client.methods.HttpPost" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="org.apache.http.entity.StringEntity" %>
<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %>
<%@ page import="org.apache.http.HttpStatus" %>
<%@ page import="org.apache.http.HttpEntity" %>
<%@ page import="org.apache.http.util.EntityUtils" %>
<%@ page import="org.apache.http.client.ClientProtocolException" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.net.HttpURLConnection" %>
<%@ page import="org.apache.http.HttpException" %>
<%@ page import="org.apache.http.client.HttpClient" %>
<%@ page import="org.apache.commons.httpclient.methods.PostMethod" %>
<%@ page import="org.apache.commons.httpclient.params.HttpMethodParams" %>
<%@ page import="org.apache.http.NameValuePair" %>
<%@ page import="org.apache.http.message.BasicNameValuePair" %>
<%@ page import="org.apache.http.client.entity.UrlEncodedFormEntity" %>
<%@ page import="weaver.rsa.security.RSA" %>
<%@ page import="java.security.interfaces.RSAPublicKey" %>
<%@ page import="java.security.KeyFactory" %>
<%@ page import="java.security.spec.X509EncodedKeySpec" %>
<%@ page import="javax.crypto.Cipher" %>
<%@ page import="org.apache.commons.codec.binary.Base64" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="org.apache.http.impl.client.HttpClientBuilder" %>
<%@ page import="org.apache.http.client.methods.HttpGet" %>
<%@ page import="com.engine.common.util.ParamUtil" %>
<%@ page import="com.wbi.util.StringUtil" %>
<%@ page import="org.json.JSONException" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="weaver.workflow.monitor.Monitor" %>
<%@ page import="weaver.workflow.workflow.WorkflowConfigComInfo" %>
<%@ page import="weaver.hrm.resource.ResourceComInfo" %>
<%@ page import="weaver.crm.Maint.CustomerInfoComInfo" %>
<%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz" %>
<%@ page import="weaver.general.TimeUtil" %>
<%@ page import="com.api.workflow.util.ServiceUtil" %>
<%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeBiz" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="java.nio.charset.Charset" %>
<%@ page import="weaver.rtx.ChangeCharset" %>
<%
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("loginidweaver".equals(cookie.getName())) {
String cookieValue = cookie.getValue();
// 使用cookieValue
out.print(cookieValue);
out.print("");
response.setCharacterEncoding("utf-8");
HashMap<String, Object> params = new HashMap<>();
params.put("requestid", "727734");
params.put("desremark", "all");
params.put("pageSize", "50");
params.put("isfirst", "true");
params.put("request", request);
Map<String, Object> data = execute(params, new User(23));
Map<String, Object> datas = (Map<String, Object>) data.get("datas");
List<Map.Entry<String, Object>> entries = new ArrayList<>(datas.entrySet());
entries.sort(new Comparator<Map.Entry<String, Object>>() {
@Override
public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
Integer key1 = Util.getIntValue((Util.null2String(o1.getKey())).replace("key", ""));
Integer key2 = Util.getIntValue((Util.null2String(o2.getKey())).replace("key", ""));
return key1 - key2;
}
}); // 自然顺序
ArrayList<Map<String,String>> results = new ArrayList<>();
// out.print(JSONObject.toJSONString(entries));
for (Map.Entry<String, Object> entry : entries) {
Map value = (Map)entry.getValue();
List<Map<String, Object>> list = (List)value.get("list");
for (Map<String, Object> item : list) {
String operator = (String)item.get("operator");
String operatorid = (String)item.get("operatorid");
String operatortype = (String)item.get("operatortype");
String operatedate = (String)item.get("operatedate");
String nodename = (String)value.get("nodename");
HashMap<String, String> itemMap = new HashMap<>();
itemMap.put("operator",operator);
itemMap.put("operatorid",operatorid);
itemMap.put("operatortype",operatortype);
itemMap.put("operatedate",operatedate);
itemMap.put("nodename",nodename);
results.add(itemMap);
}
}
String encoding = System.getProperty("file.encoding");
out.print(encoding);
try {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("users", results); // 将用户列表添加到数据映射中
// dataMap.put("name", results); // 将用户列表添加到数据映射中
// 加载模板并填充数据
String templatePath = "/opt/weaver/filesys/template.docx"; // 模板文件路径
String templatePath2 = "/opt/weaver/filesys/xinxi2.docx"; // 模板文件路径
File file = new File(templatePath);
File file2 = new File(templatePath2);
// out.print(file.exists());
// out.print(file2.exists());
System.out.println(dataMap);
XWPFDocument doc = WordExportUtil.exportWord07(templatePath, dataMap);
// 导出Word文档
String lastname = new User(6473).getLastname();
String outputPath = "/opt/weaver/filesys/"+lastname+".docx"; // 输出文件路径
// byte[] gbks = outputPath.getBytes("gbk");
System.out.print(outputPath);
String outputPath1 = new String( outputPath.getBytes("UTF-8"),"ISO-8859-1");
String outputPath2 = new String( outputPath1.getBytes("ISO-8859-1"),"UTF-8");
// ChangeCharset changeCharset = new ChangeCharset();
// String outputPath1 = changeCharset.toUTF_8(outputPath);
System.out.print(outputPath1);
System.out.print(outputPath2);
outputPath = new String(outputPath.getBytes("ISO8859_1"), "UTF-8");
File file11 = new File(outputPath1);
File file22 = new File(outputPath2);
// if(!file1.exists()){
file11.createNewFile();
file22.createNewFile();
// }
FileOutputStream fos = new FileOutputStream(outputPath) ;
doc.write(fos);
fos.close();
} catch (Exception e) {
System.out.println("errorerrorerror");
System.out.println(e.getMessage());
out.print(e.getMessage()+"123");
e.printStackTrace();
}
%>
<%!
private void test1(ArrayList<Map<String,String>> results) {
try {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("users", results); // 将用户列表添加到数据映射中
// 加载模板并填充数据
String templatePath = "/opt/weaver/filesys/xinxi.docx"; // 模板文件路径
String templatePath2 = "/opt/weaver/filesys/xinxi2.docx"; // 模板文件路径
File file = new File(templatePath);
File file2 = new File(templatePath2);
// out.print(file.exists());
// out.print(file2.exists());
System.out.println(dataMap);
XWPFDocument doc = WordExportUtil.exportWord07(templatePath, dataMap);
// 导出Word文档
String lastname = new User(22).getLastname();
String outputPath = "/opt/weaver/filesys/"+lastname+".docx"; // 输出文件路径
// byte[] gbks = outputPath.getBytes("gbk");
String outputPath1 = new String( outputPath.getBytes("UTF-8"));
// outputPath = new String(outputPath.getBytes("ISO8859_1"), "UTF-8");
File file1 = new File(outputPath1);
if(!file1.exists()){
file1.createNewFile();
}
// FileOutputStream fos = new FileOutputStream(outputPath) ;
// doc.write(fos);
// fos.close();
} catch (Exception e) {
System.out.println("errorerrorerror");
System.out.println(e.getMessage());
// out.print(e.getMessage()+"123");
e.printStackTrace();
}
}
public Map<String, Object> execute(Map<String, Object> params, User user) {
Map<String, Object> result = new HashMap<String, Object>();
RequestAuthenticationService authService = new RequestAuthenticationService();
authService.setUser(user);
long date1 = new Date().getTime();
try {
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
int pageSize = Util.getIntValue(Util.null2String(params.get("pageSize")), 30);
int desrequestid = Util.getIntValue(Util.null2String(params.get("desrequestid")), 0);
String isfirst = Util.null2String(params.get("isfirst"));
String isurger = Util.null2String(params.get("isurger"));
String desremark = Util.null2String(params.get("desremark"));
int desremarkIndex = desremark.indexOf("_");
boolean isAdSearch = false;//是否有过滤条件
if (desremarkIndex > -1) {
isAdSearch = true;
desremark = desremark.substring(0, desremarkIndex);
}
String parameter = Util.null2String(params.get("parameter"));
int selectedNode = Util.getIntValue(Util.null2String(params.get("selectedNode")), -1);//选中的节点
String selectedOperator = Util.null2String(params.get("selectedOperator"));//选中的操作者
int requestid = Util.getIntValue(Util.null2String(params.get("requestid")), 0);
int workflowid = -1;
rs.executeQuery("select workflowid from workflow_requestbase where requestid=" + requestid);
if (rs.next())
workflowid = Util.getIntValue(rs.getString("workflowid"));
// 将json字符串转换成jsonObject
int currentMaxId = 0;
int currentMinId = 0;
int currentId = 0;
int currentId2 = 0;
int lastNodeId = 0;
String viewlogids = "";
int index = 0;
try {
if (!"true".equals(isfirst)) {
Map<String, String> parameterMap = JSON.parseObject(parameter, Map.class);//Weibo类在下边定义
currentMaxId = Util.getIntValue(parameterMap.get("currentMaxId"), 0);
currentMinId = Util.getIntValue(parameterMap.get("currentMinId"), 0);
String currentId12 = Util.null2String(parameterMap.get("currentId"));
if (currentId12.contains("_")) {
String[] currentId12Arr = currentId12.split("_");
currentId = Util.getIntValue(currentId12Arr[0]);
currentId2 = Util.getIntValue(currentId12Arr[1]);
} else {
currentId = Util.getIntValue(currentId12);
}
viewlogids = Util.null2String(parameterMap.get("viewlogids"));
index = Util.getIntValue(parameterMap.get("nodeindex"), 0);
lastNodeId = Util.getIntValue(parameterMap.get("lastNodeId"), 0);
}
} catch (Exception e) {
e.printStackTrace();
}
Map<String, String> putpara = new HashMap<String, String>();
Monitor monitor = new Monitor();
// String joinStr = ("oracle".equalsIgnoreCase(rs.getDBType()) || "mysql".equalsIgnoreCase(rs.getDBType())) ? " left join " : " left hash join ";
String joinStr = " left join ";
// if (isurger.equals("true") || monitor.hasMonitor(requestid+"", user.getUID() + "")) {
// StringBuffer sqlsb = new StringBuffer();
// sqlsb.append(" select a.id,a.nodeid, ");
// sqlsb.append(" b.nodename, ");
// sqlsb.append(" a.userid, ");
// sqlsb.append(" a.isremark, ");
// sqlsb.append(" a.lastisremark, ");
// sqlsb.append(" a.usertype, ");
// sqlsb.append(" a.agentorbyagentid, ");
// sqlsb.append(" a.agenttype, ");
// sqlsb.append(" a.receivedate, ");
// sqlsb.append(" a.receivetime, ");
// sqlsb.append(" a.operatedate, ");
// sqlsb.append(" a.operatetime, ");
// sqlsb.append(" a.viewtype, ");
// sqlsb.append(" a.nodetype ");
// sqlsb.append(" ,a.operator ");
// sqlsb.append(" from (SELECT distinct top ").append(pageSize);
// sqlsb.append(" o.id, " );
// sqlsb.append(" o.requestid, " );
// sqlsb.append(" o.userid, ");
// sqlsb.append(" o.workflowid, ");
// sqlsb.append(" o.workflowtype, ");
// sqlsb.append(" o.isremark, ");
// sqlsb.append(" o.lastisremark, ");
// sqlsb.append(" o.usertype, ");
// sqlsb.append(" o.nodeid, ");
// sqlsb.append(" o.agentorbyagentid, ");
// sqlsb.append(" o.agenttype, ");
// sqlsb.append(" o.receivedate, ");
// sqlsb.append(" o.receivetime, ");
// sqlsb.append(" o.viewtype, ");
// sqlsb.append(" o.iscomplete, ");
// sqlsb.append(" o.operatedate, ");
// sqlsb.append(" o.operatetime, ");
// sqlsb.append(" nodetype ");
// sqlsb.append(" ,wr.operator ");
// sqlsb.append(" FROM workflow_currentoperator o ");
//
// sqlsb.append(" left join workflow_requestlog wr");
// sqlsb.append(" on wr.requestid=o.requestid");
// sqlsb.append(" and wr.nodeid=o.nodeid");
// sqlsb.append(" and wr.operator = o.userid");
// sqlsb.append(" and wr.logtype <> '1'");
//
// sqlsb.append(" , workflow_flownode ");
//
// sqlsb.append(" where o.nodeid = ");
// sqlsb.append(" workflow_flownode.nodeid ");
// if(desremark ==1){//1:已提交
// sqlsb.append(" AND o.isremark='2' AND wr.operator IS NOT null ");
// }else if(desremark == 2){//2未提交
// sqlsb.append(" and ((o.isremark = '0' and (o.takisremark is null or o.takisremark=0)) or o.isremark in ('1','5','7','8','9') )");
// }else if(desremark == 3){//3:已查看
// sqlsb.append(" and (((o.isremark = '2' AND wr.operator IS NULL) or o.isremark in ('0','1','4','5','7','8','9')) AND o.viewtype IN (-1,-2)) ");
// }else if(desremark == 4){//4:未查看
// sqlsb.append(" AND o.viewtype = 0 ");
// }
// sqlsb.append(" and o.id > ").append(currentId);
// sqlsb.append(" and o.requestid = " + requestid + ") a, ");
// sqlsb.append(" workflow_nodebase b ");
// sqlsb.append(" where a.nodeid = b.id ");
// sqlsb.append(" and a.requestid = " + requestid + " ");
// sqlsb.append(" and a.agenttype <> 1 ");
// sqlsb.append(" order by a.id ");
// //System.out.println("20170309 =====> sqlsb.toString() = "+sqlsb.toString());
// rs.executeSql(sqlsb.toString());
//
// } else {
// 处理相关流程的查看权限
// if ("".equals(viewlogids)) {
// viewlogids = this.getViewLogids();
// }
StringBuffer sqlsb = new StringBuffer();
if ("sqlserver".equalsIgnoreCase(rs.getDBType())) { // sqlserver 排序提到这里
sqlsb.append(" select top ").append(pageSize).append(" a.id,a.nodeid, ");
} else {
sqlsb.append(" select a.id,a.nodeid, ");
}
sqlsb.append("(CASE WHEN a.nodeid < -1 THEN (SELECT nodename FROM workflow_freenode t WHERE t.id = a.nodeid) ELSE (SELECT nodename FROM workflow_nodebase t1 WHERE t1.id = a.nodeid) END) AS nodename,");
sqlsb.append(" a.userid, ");
sqlsb.append(" a.isremark, ");
sqlsb.append(" a.preisremark, ");
sqlsb.append(" a.lastisremark, ");
sqlsb.append(" a.usertype, ");
sqlsb.append(" a.agentorbyagentid, ");
sqlsb.append(" a.agenttype, ");
sqlsb.append(" a.receivedate, ");
sqlsb.append(" a.receivetime, ");
sqlsb.append(" a.operatedate, ");
sqlsb.append(" a.operatetime, ");
sqlsb.append(" a.processuser, ");
sqlsb.append(" a.viewtype, ");
sqlsb.append(" a.nodetype ");
sqlsb.append(" ,a.operator ");
sqlsb.append(" ,a.tab ");
//if("true".equals(isfirst)){
/*if("oracle".equals(rs.getDBType()) || "mysql".equals(rs.getDBType())){
sqlsb.append(" from (SELECT distinct ");
}else{
sqlsb.append(" from (SELECT distinct top ").append(pageSize); // sqlserver排序提到外层查询
}*/
sqlsb.append(" from (SELECT distinct ");
// }else{
// sqlsb.append(" from (SELECT distinct ");
// }
sqlsb.append(" o.id, ");
sqlsb.append(" o.requestid, ");
sqlsb.append(" o.userid, ");
sqlsb.append(" o.workflowid, ");
sqlsb.append(" o.workflowtype, ");
//workflow_otheroperator表中isremark为字符型这里转下字符
if (rs.getDBType().toLowerCase().equals("oracle") || rs.getDBType().toLowerCase().equals("postgresql")) {
sqlsb.append(" to_char(o.isremark) as isremark, ");
sqlsb.append(" to_char(o.preisremark) AS preisremark, ");
sqlsb.append(" to_char(o.lastisremark) AS lastisremark, ");
} else if (rs.getDBType().toLowerCase().equals("mysql")) {
sqlsb.append(" o.isremark, ");
sqlsb.append(" o.preisremark, ");
sqlsb.append(" o.lastisremark, ");
} else {
sqlsb.append(" cast(o.isremark as varchar) as isremark, ");
sqlsb.append(" cast(o.preisremark as varchar) as preisremark, ");
sqlsb.append(" cast(o.lastisremark as varchar) as lastisremark, ");
}
sqlsb.append(" o.usertype, ");
sqlsb.append(" o.nodeid, ");
sqlsb.append(" o.agentorbyagentid, ");
sqlsb.append(" o.agenttype, ");
sqlsb.append(" o.receivedate, ");
sqlsb.append(" o.receivetime, ");
sqlsb.append(" o.viewtype, ");
sqlsb.append(" o.iscomplete, ");
sqlsb.append(" o.operatedate, ");
sqlsb.append(" o.operatetime, ");
sqlsb.append(" o.processuser, ");
sqlsb.append("(case when o.nodeid < -1 then (select nodetype from workflow_freenode t where t.id = o.nodeid) else (select nodetype from workflow_flownode t1 where t1.nodeid = o.nodeid) end) as nodetype ");
sqlsb.append(" ,wr.operator ");
sqlsb.append(" ,1 as tab ");
sqlsb.append(" FROM workflow_currentoperator o ");
sqlsb.append(" " + joinStr + " workflow_requestlog wr");
sqlsb.append(" on wr.requestid=o.requestid");
sqlsb.append(" and wr.nodeid=o.nodeid");
sqlsb.append(" and wr.operator = o.userid");
sqlsb.append(" and wr.logtype <> '1'");
sqlsb.append(" and o.operatedate = wr.operatedate");
sqlsb.append(" and o.operatetime = wr.operatetime");//再通过时间关联一下,防止流程状态操作状态显示错误
sqlsb.append(" where o.id > ").append(currentId);
if ("submit".equals(desremark)) {//1:已提交----isremark等于4preisremark=11实际对应已提交数据
sqlsb.append(" AND (o.isremark='2' or (o.isremark=4 and o.preisremark=11)) AND (wr.operator IS NOT null or o.userid = o.processuser)");
} else if ("nosubmit".equals(desremark)) {//2未提交
sqlsb.append(" AND( (o.isremark != '2' AND o.isremark != '4') OR (o.isremark = '4' AND o.viewtype = 0 and o.preisremark != 11) ) ");
} else if ("view".equals(desremark)) {//3:已查看
sqlsb.append(" and ((o.isremark = '2' AND wr.operator IS NULL) or o.isremark in ('0','1','5','7','8','9','11') or (o.isremark=4 and o.preisremark!=11)) AND o.viewtype IN (-1,-2) ");
} else if ("noview".equals(desremark)) {//4:未查看
sqlsb.append(" AND o.viewtype=0 AND (o.isremark IN ('0','1','5','7','8','9','11') or (o.isremark = '2' AND wr.operator IS NULL) or (o.isremark=4 and o.preisremark!=11)) ");
}
sqlsb.append(" and o.requestid = " + requestid);
sqlsb.append(" union ");
sqlsb.append(" SELECT DISTINCT ");
sqlsb.append(" o.id, ");
sqlsb.append(" o.requestid, ");
sqlsb.append(" o.userid, ");
sqlsb.append(" o.workflowid, ");
sqlsb.append(" 0 as workflowtype, ");
sqlsb.append(" o.isremark, ");
sqlsb.append(" o.isremark as preisremark, ");
sqlsb.append(" o.isremark as lastisremark, ");
sqlsb.append(" o.usertype, ");
sqlsb.append(" o.nodeid, ");
sqlsb.append(" 0 as agentorbyagentid, ");
sqlsb.append(" '0' as agenttype, ");
sqlsb.append(" o.receivedate, ");
sqlsb.append(" o.receivetime, ");
sqlsb.append(" o.viewtype, ");
sqlsb.append(" 1 as iscomplete, ");
sqlsb.append(" o.operatedate, ");
sqlsb.append(" o.operatetime, ");
sqlsb.append(" wr.operator as processuser, ");
sqlsb.append("(case when o.nodeid < -1 then (select nodetype from workflow_freenode t where t.id = o.nodeid) else (select nodetype from workflow_flownode t1 where t1.nodeid = o.nodeid) end) as nodetype, ");
sqlsb.append(" wr.operator ");
sqlsb.append(" ,2 as tab ");
sqlsb.append(" FROM workflow_otheroperator o LEFT JOIN workflow_requestlog wr ON wr.requestid = o.requestid ");
sqlsb.append(" AND wr.nodeid = o.nodeid ");
sqlsb.append(" AND wr.operator = o.userid ");
sqlsb.append(" AND wr.logtype <> '1' ");
sqlsb.append(" WHERE o.requestid = " + requestid + " ");
sqlsb.append(" and o.id > ").append(currentId2);
sqlsb.append(" ) a ");
sqlsb.append(" where a.requestid = " + requestid + " ");
sqlsb.append(" and a.agenttype <> 1 ");
if (!"".equals(viewlogids)) {
sqlsb.append(" and a.nodeid in (" + viewlogids + ") ");
}
if (selectedNode != -1) {
sqlsb.append(" AND a.nodeid = " + selectedNode + " ");
}
if (!"".equals(selectedOperator)) {
sqlsb.append(" AND a.userid = " + selectedOperator + " ");
}
WorkflowConfigComInfo configComInfo = new WorkflowConfigComInfo();
boolean showdelFreeNodeInfo = "1".equals(configComInfo.getValue("showdelete_freenode_info"));
sqlsb.append(" and (a.nodeid > -1 or (a.nodeid < -1 and exists (select id from workflow_freenode where id = a.nodeid and requestid = " + requestid + (showdelFreeNodeInfo ? "" : " and groupid > 0 ") + " ))) ");
//搜索时返回状态
if (isAdSearch && "true".equals(isfirst)) {
rs.executeQuery("select count(id) as count from (" + sqlsb.toString().replace("top " + pageSize, "") + ") t");
result.put("countTime", new Date().getTime() - date1);
if (rs.next()) {
result.put("count", Util.null2String(rs.getString("count")));
}
}
sqlsb.append(" order by a.receivedate, a.receivetime,a.id , a.nodetype");
//System.out.println("20170309 =====> sqlsb.toString() = "+sqlsb.toString());
if ("oracle".equals(rs.getDBType())) { //必须排序后再限制rownum
String sql_oracle = sqlsb.toString();
sqlsb.setLength(0);
sqlsb.append("select * from (" + sql_oracle + ") where rownum < ").append(pageSize);
} else if ("mysql".equals(rs.getDBType())) {
sqlsb.append(" LIMIT " + pageSize);
} else if ("postgresql".equals(rs.getDBType())) {
sqlsb.append(" LIMIT " + pageSize);
}
if (requestid > 0) {
rs.executeSql(sqlsb.toString());
}
result.put("dataTime", new Date().getTime() - date1);
// }
List<Map<String, String>> statuslist = new ArrayList<Map<String, String>>();
int tmpnodeid = 0;
while (rs.next()) {
int tab = rs.getInt("tab");
if (tab == 1) {
currentId = rs.getInt("id");
} else {
currentId2 = rs.getInt("id");
}
tmpnodeid = rs.getInt("nodeid");
String tmpnodename = rs.getString("nodename");
Map<String, String> nodekv = null;
if (statuslist.size() == 0) {
currentMinId = currentId;
nodekv = new HashMap<String, String>();
statuslist.add(nodekv);
} else {
Map<String, String> temmap = statuslist.get(statuslist.size() - 1);
int tnodeid = Util.getIntValue(temmap.get("nodeid"), 0);
if (tnodeid == tmpnodeid) {
nodekv = temmap;
} else {
currentMinId = currentId;
nodekv = new HashMap<String, String>();
statuslist.add(nodekv);
}
}
nodekv.put("nodeid", tmpnodeid + "");
nodekv.put("nodename", tmpnodename + "");
}
int nextlistcount = 0;
int nextsubmitCount = 0;
int nextviewCount = 0;
int nextnoviewCount = 0;
if ("all".equals(desremark) && !isAdSearch) {
currentMaxId = currentId;
String maxsql = " select a.id,a.nodeid from workflow_currentoperator a where a.id > " + currentId + " and a.requestid=" + requestid + " order by a.id ,a.receivedate, a.receivetime";
rs1.executeSql(maxsql);
while (rs1.next()) {
int currentid = rs1.getInt("id");
int currentnodeid = rs1.getInt("nodeid");
if (currentnodeid == tmpnodeid) {
currentMaxId = currentid;
} else {
break;
}
}
String listcountsql = " select count(id) num from workflow_currentoperator where id > " + currentId + " and id <= " + currentMaxId + " and requestid=" + requestid + " and nodeid=" + tmpnodeid + " and agenttype <> 1 and usertype <> 1 ";
//String submitCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid +" and agenttype <> 1 and usertype <> 1 and isremark = 2 and exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and workflow_requestlog.operator=workflow_currentoperator.userid )";
//String viewCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid + " and agenttype <> 1 and usertype <> 1 and (viewtype = -1 or viewtype=-2) and ((isremark = '0' and (takisremark is null or takisremark=0)) or isremark in ('1','5','7','8','9') or (isremark = '2' and not exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and (workflow_requestlog.operator is null or workflow_requestlog.operator ='' )))) ";
//String noviewCountsql = " select count(id) num from workflow_currentoperator where id > "+currentId +" and id <= "+currentMaxId+" and requestid="+requestid +" and nodeid="+tmpnodeid + " and agenttype <> 1 and usertype <> 1 AND viewtype=0 AND (isremark IN ('0','1','4','5','7','8','9') or (isremark = '2' and not exists (select 1 from workflow_requestlog where workflow_requestlog.requestid = workflow_currentoperator.requestid and workflow_currentoperator.nodeid=workflow_requestlog.nodeid and (workflow_requestlog.operator is null or workflow_requestlog.operator ='' )))) ";
String submitCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.isremark = 2 and wr.operator is NOT null ";
String viewCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.viewtype IN (-1,-2) and ((wc.isremark = '2' AND wr.operator IS NULL) or wc.isremark in ('0','1','4','5','7','8','9')) ";
String noviewCountsql = " SELECT Count(distinct wc.id) num FROM workflow_currentoperator wc " + joinStr + " workflow_requestlog wr ON wr.requestid = wc.requestid AND wc.nodeid = wr.nodeid AND wr.operator = wc.userid WHERE wc.id > " + currentId + " AND wc.id <= " + currentMaxId + " AND wc.requestid = " + requestid + " AND wc.nodeid = " + tmpnodeid + " AND wc.agenttype <> 1 AND wc.usertype <> 1 AND wc.viewtype=0 AND (wc.isremark IN ('0','1','4','5','7','8','9','11') or (wc.isremark = '2' and wr.operator is null )) ";
rs1.executeSql(listcountsql);
while (rs1.next()) {
nextlistcount = rs1.getInt("num");
}
rs1.executeSql(submitCountsql);
while (rs1.next()) {
nextsubmitCount = rs1.getInt("num");
}
rs1.executeSql(viewCountsql);
while (rs1.next()) {
nextviewCount = rs1.getInt("num");
}
rs1.executeSql(noviewCountsql);
while (rs1.next()) {
nextnoviewCount = rs1.getInt("num");
}
}
Map<String, Object> allstatusmap = new HashMap<String, Object>();
Map<String, Object> submitstatusmap = new HashMap<String, Object>();
Map<String, Object> nosubmitstatusmap = new HashMap<String, Object>();
Map<String, Object> viewstatusmap = new HashMap<String, Object>();
Map<String, Object> noviewstatusmap = new HashMap<String, Object>();
//提交节点信息--滚动加载到当前currentoperator对应最大id
//数字统计转到新接口count中
ResourceComInfo resourceComInfo = new ResourceComInfo();
CustomerInfoComInfo customerInfoComInfo = new CustomerInfoComInfo();
Map<String, Object> all_nodemap = new HashMap<String, Object>();
Map<String, Object> submit_nodemap = new HashMap<String, Object>();
Map<String, Object> nosubmit_nodemap = new HashMap<String, Object>();
Map<String, Object> view_nodemap = new HashMap<String, Object>();
Map<String, Object> noview_nodemap = new HashMap<String, Object>();
rs.beforFirst();
int currentnum = 0;
for (Iterator<Map<String, String>> it = statuslist.iterator(); it.hasNext(); index++) {
Map<String, String> nodekv = it.next();
int fnodeid = Util.getIntValue(nodekv.get("nodeid"));
String namename = nodekv.get("nodename");
int submitCount = 0;
int viewCount = 0;
int noviewCount = 0;
int listcount = 0;
if ("false".equals(isfirst) && currentnum == 0 && lastNodeId == fnodeid) {
index -= 1;
}
if (tmpnodeid == fnodeid && currentnum == (statuslist.size() - 1)) {
submitCount = nextsubmitCount;
viewCount = nextviewCount;
noviewCount = nextnoviewCount;
listcount = nextlistcount;
}
currentnum++;
Map<String, Object> all_nodemap_in = new HashMap<String, Object>();
all_nodemap_in.put("nodeid", fnodeid);
all_nodemap_in.put("nodename", namename);
Map<String, Object> submit_nodemap_in = new HashMap<String, Object>();
Map<String, Object> nosubmit_nodemap_in = new HashMap<String, Object>();
Map<String, Object> view_nodemap_in = new HashMap<String, Object>();
Map<String, Object> noview_nodemap_in = new HashMap<String, Object>();
List<Map<String, String>> nodeallstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodesubmitstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodenosubmitstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodeviewstatuslist = new ArrayList<Map<String, String>>();
List<Map<String, String>> nodenoviewstatuslist = new ArrayList<Map<String, String>>();
if ("submit".equals(desremark)) {//1:已提交
//提交节点信息
submit_nodemap_in.putAll(all_nodemap_in);
submitstatusmap.put("datas", submit_nodemap);
submit_nodemap.put("key" + index, submit_nodemap_in);
submit_nodemap_in.put("list", nodesubmitstatuslist);
} else if ("nosubmit".equals(desremark)) {//2未提交
nosubmit_nodemap_in.putAll(all_nodemap_in);
nosubmitstatusmap.put("datas", nosubmit_nodemap);
nosubmit_nodemap.put("key" + index, nosubmit_nodemap_in);
nosubmit_nodemap_in.put("list", nodenosubmitstatuslist);
} else if ("view".equals(desremark)) {//3:已查看
view_nodemap_in.putAll(all_nodemap_in);
viewstatusmap.put("datas", view_nodemap);
view_nodemap.put("key" + index, view_nodemap_in);
view_nodemap_in.put("list", nodeviewstatuslist);
} else if ("noview".equals(desremark)) {//4:未查看
noview_nodemap_in.putAll(all_nodemap_in);
noviewstatusmap.put("datas", noview_nodemap);
noview_nodemap.put("key" + index, noview_nodemap_in);
noview_nodemap_in.put("list", nodenoviewstatuslist);
} else {
//所有节点信息
allstatusmap.put("datas", all_nodemap);
all_nodemap.put("key" + index, all_nodemap_in);
all_nodemap_in.put("list", nodeallstatuslist);
}
boolean islight = false;
RobotNodeServiceBiz robotNodeServiceBiz = new RobotNodeServiceBiz();
while (rs.next()) {
int tmpnodeid1 = rs.getInt("nodeid");
if (tmpnodeid1 != fnodeid) {
rs.previous();
break;
}
//String tmpnodename = rs.getString("nodename");
int tmpcurrid = rs.getInt("id");
String tmpuserid = rs.getString("userid");
String tmpisremark = Util.null2String(rs.getString("isremark"));
if (tmpisremark.equals("")) {
tmpisremark = Util.null2String(rs.getString("lastisremark"));
}
int tmpusertype = rs.getInt("usertype");
String tmpagentorbyagentid = rs.getString("agentorbyagentid");
int tmpagenttype = rs.getInt("agenttype");
String tmpreceivedate = rs.getString("receivedate");
String tmpreceivetime = rs.getString("receivetime");
String tmpoperatedate = rs.getString("operatedate");
String tmpoperatetime = rs.getString("operatetime");
String viewtype = rs.getString("viewtype");
String nodetype = rs.getString("nodetype");
int preisremark = rs.getInt("preisremark");
String processuser = rs.getString("processuser");
boolean flags = false;
String tmpIntervel = "";
// 如果tmpisremark=2 判断时候在日志表里有该人确定是否是由非会签得到的isremark=2
String operator = rs.getString("operator");
if (operator != null && !"".equals(operator)) {
flags = true;
}
if ((tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && tmpoperatedate != null && !tmpoperatedate.equals("")) {
tmpIntervel = TimeUtil.timeInterval2(tmpreceivedate + " " + tmpreceivetime, tmpoperatedate + " " + tmpoperatetime, user.getLanguage());
}
islight = !islight;
Map<String, String> _statusmap = new HashMap<String, String>();
// 操作人
String _statususername = "";
String _operatorid = "";
String _beagentid = "";
String _beagentname = "";
String _operatortype = "0";
if (tmpusertype == 0) {
_operatorid = tmpuserid;
_statususername = ServiceUtil.convertChar(resourceComInfo.getResourcename(tmpuserid));
if (tmpagenttype == 2) { //代理情况
_beagentid = tmpagentorbyagentid;
_beagentname = ServiceUtil.convertChar(resourceComInfo.getResourcename(tmpagentorbyagentid));
}
_statusmap.put("operatorImg", resourceComInfo.getMessagerUrls(tmpuserid));
_statusmap.put("operatorImgDefName", _statususername);
} else if (RobotNodeBiz.operatortype.equals(tmpusertype + "")) {
_statususername = Util.formatMultiLang(robotNodeServiceBiz.getRobotNodeSet(tmpnodeid1).getOperatorName());
_operatorid = tmpuserid;
_operatortype = "2";
} else {
_operatorid = tmpuserid;
_operatortype = "1";
_statususername = ServiceUtil.convertChar(customerInfoComInfo.getCustomerInfoname(tmpuserid));
}
// 查看状态 1:未查看, 2:以查看, 3已提交 4:暂停, 5:撤销, 6:启用 7:已查阅 8:退回 9:被撤回
int _statusCode = 0;
if (preisremark != 8 && (tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && (flags || tmpuserid.equals(processuser))) {
_statusCode = 3;
submitCount++;
if ("4".equals(nodetype) && preisremark == 0) {
_statusCode = 7;
}
} else if (tmpisremark.equals("0") || tmpisremark.equals("1") || tmpisremark.equals("5") || tmpisremark.equals("4") || tmpisremark.equals("8") || tmpisremark.equals("9") || tmpisremark.equals("7") || tmpisremark.equals("11") || (tmpisremark.equals("2") && !flags)) {
if (viewtype.equals("-2") || (viewtype.equals("-1") && !tmpoperatedate.equals(""))) {
_statusCode = 2;
viewCount++;
} else {
_statusCode = 1;
noviewCount++;
}
} else if ("s".equals(tmpisremark)) {
_statusCode = 4;
} else if ("r".equals(tmpisremark)) {
_statusCode = 6;
} else if ("c".equals(tmpisremark)) {
_statusCode = 5;
} else if (preisremark == 8 && viewtype.equals("-2") && tmpisremark.equals("2")) {
_statusCode = 2;
viewCount++;
}
RecordSet recordSet = new RecordSet();
recordSet.executeQuery("select operatetype from workflow_currentoperator where id=?", tmpcurrid);
if (recordSet.next()) {
int operatetype = recordSet.getInt(1);
if (operatetype == 3) {//退回
_statusCode = 8;
} else if (operatetype == 4) {//被撤回
_statusCode = 9;
}
}
listcount++;
if ("view".equals(desremark)) {//3:已查看
if (processuser.equals(tmpuserid) && ("2".equals(tmpisremark) || "4".equals(tmpisremark))) {
listcount--;
}
}
String _receivedate = "";
String _operatedate = "";
String _intervel = "";
if (!tmpisremark.equals("s") && !tmpisremark.equals("c") && !tmpisremark.equals("r")) {
_receivedate = Util.toScreen(tmpreceivedate, user.getLanguage()) + " " + Util.toScreen(tmpreceivetime, user.getLanguage());
}
_operatedate = Util.toScreen(tmpoperatedate, user.getLanguage()) + " " + Util.toScreen(tmpoperatetime, user.getLanguage());
_intervel = Util.toScreen(tmpIntervel, user.getLanguage());
_statusmap.put("statuscode", String.valueOf(_statusCode));
_statusmap.put("operator", _statususername);
_statusmap.put("receivedate", _receivedate);
_statusmap.put("operatedate", _operatedate);
_statusmap.put("intervel", _intervel);
_statusmap.put("operatorid", _operatorid);
_statusmap.put("operatortype", _operatortype);
_statusmap.put("beagentid", _beagentid);
_statusmap.put("beagentname", _beagentname);
_statusmap.put("nodetype", nodetype);
//所有节点
nodeallstatuslist.add(_statusmap);
//查看状态 1:未查看, 2:以查看, 3已提交 4:暂停, 5:撤销, 6:启用 7:已查阅
if ((tmpisremark.equals("2") || (tmpisremark.equals("4") && preisremark == 11)) && (flags || tmpuserid.equals(processuser))) {
nodesubmitstatuslist.add(_statusmap);
} else if (tmpisremark.equals("0") || tmpisremark.equals("1") || tmpisremark.equals("5") || tmpisremark.equals("4") || tmpisremark.equals("8") || tmpisremark.equals("9") || tmpisremark.equals("7") || tmpisremark.equals("11") || (tmpisremark.equals("2") && !flags)) {
if (viewtype.equals("-2") || (viewtype.equals("-1") && !tmpoperatedate.equals(""))) {
nodeviewstatuslist.add(_statusmap);
} else if (viewtype.equals("0")) {
nodenoviewstatuslist.add(_statusmap);
}
}
if ((!tmpisremark.equals("2") && !tmpisremark.equals("4")) || (tmpisremark.equals("4") && viewtype.equals("0"))) {
if (!tmpisremark.equals("s") && !tmpisremark.equals("s") && !tmpisremark.equals("c") && !tmpisremark.equals("r")) {
nodenosubmitstatuslist.add(_statusmap);
}
}
}
//--已提交、已查看、未查看
all_nodemap_in.put("submitCount", submitCount);//--已提交
all_nodemap_in.put("viewCount", viewCount);//--已查看
all_nodemap_in.put("noviewCount", noviewCount);//--未查看
if ("submit".equals(desremark)) {//1:已提交
//提交节点信息
submit_nodemap_in.put("listcount", listcount);
result.putAll(submitstatusmap);
} else if ("nosubmit".equals(desremark)) {//2未提交
nosubmit_nodemap_in.put("listcount", listcount);
result.putAll(nosubmitstatusmap);
} else if ("view".equals(desremark)) {//3:已查看
view_nodemap_in.put("listcount", listcount);
result.putAll(viewstatusmap);
} else if ("noview".equals(desremark)) {//4:未查看
noview_nodemap_in.put("listcount", listcount);
result.putAll(noviewstatusmap);
} else {
//所有节点信息
all_nodemap_in.put("listcount", listcount);
result.putAll(allstatusmap);
}
lastNodeId = fnodeid;
}
// if(maxid == currentMaxId){
// isfinish = 1;
// }
putpara.put("nodeindex", index + "");
putpara.put("currentMaxId", currentMaxId + "");
putpara.put("currentMinId", currentMinId + "");
putpara.put("currentId", currentId + "_" + currentId2);
putpara.put("lastNodeId", lastNodeId + "");
putpara.put("viewlogids", viewlogids + "");
result.put("parameter", putpara);
result.put("otherTime", new Date().getTime() - date1);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
%>

@ -0,0 +1,99 @@
<%@ page import="java.io.*" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="java.util.*" %>
<%@ page import="freemarker.template.Configuration" %>
<%@ page import="freemarker.template.TemplateExceptionHandler" %>
<%@ page import="freemarker.template.Template" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%
String TemplatePath = "/opt/weaver/filesys/";
//String TemplateName = "html模版.ftl";
String TemplateName = "qwer.ftl";
Map<String, Object> root = new HashMap<>();
// root.put("title", "期末成绩表");
ArrayList<Map> list = new ArrayList<>();
Map<String, String> map = new HashMap<>();
map.put("lastname",new User(22).getLastname() );
map.put("subject", new User(22).getLastname() );
map.put("achievement", "98");
list.add(map);
Map<String, String> map2 = new HashMap<>();
map2.put("lastname", new User(22).getLastname() );
map2.put("subject", new User(22).getLastname());
map2.put("achievement", "97");
list.add(map2);
list.add(map2);
list.add(map2);
list.add(map2);
list.add(map2);
ArrayList<Map> lists = new ArrayList<Map>();
root.put("achievementList", list);
lists.add(root);
lists.add(root);
lists.add(root);
Map<String, Object> roots = new HashMap<String, Object>();
System.out.println(lists.size());
roots.put("testlist",lists);
//generate(TemplatePath, TemplateName, root, "shengcheng.html");
generate(TemplatePath, TemplateName, roots, "shengcheng1.docx");
%>
<%!
/**
* @param TemplatePath 模版存放目录
* @param TemplateName 模版名
* @param root 填充的数据
* @param GenerateFilename 生成文件名
* @throws Exception
*/
public static void generate(String TemplatePath, String TemplateName, Map<String, Object> root, String GenerateFilename) throws Exception {
Configuration cfg = new Configuration();
//指定模板文件的来源目录
cfg.setDirectoryForTemplateLoading(new File(TemplatePath));
cfg.setDefaultEncoding("UTF-8");
//设置错误的显示方式(日志)
//在生产系统中TemplateExceptionHandler.RETHROW_HANDLER 默认值
//在开发HTML模板期间TemplateExceptionHandler.HTML_DEBUG_HANDLER
//在开发非HTML模板期间TemplateExceptionHandler.DEBUG_HANDLER
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
//获取模板文件
Template temp = cfg.getTemplate(TemplateName);
//合并模板和数据模型
File file = new File(TemplatePath + "new-built");
//如果文件夹不存在,则创建文件夹
if (!file.exists()) {
//file.mkdirs();//多级目录
file.mkdir();//只创建一级目录
}
//Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(TemplatePath + "new-built/" + GenerateFilename)));//输出文件
// FileWriter out = new FileWriter(TemplatePath + "new-built/" + GenerateFilename);
//Writer out = new OutputStreamWriter(System.out);//输出控制台
//StringWriter out = new StringWriter();//输出为字符串,可作为接口动态返回
FileOutputStream fos = new FileOutputStream(TemplatePath + "new-built/" + GenerateFilename);
Writer out = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
temp.process(root, out);
out.flush();//可不手动调用
}
public static String codeUtf8(String text) {
String ISOtext = null;
ISOtext = new String(text.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
return new String(ISOtext.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
}
%>

@ -0,0 +1,52 @@
<%@ page import="org.apache.poi.xwpf.usermodel.XWPFDocument" %>
<%@ page import="cn.afterturn.easypoi.word.WordExportUtil" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.io.*" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="com.engine.workflow.cmd.requestForm.StatusDataCmd" %>
<%@ page import="com.engine.core.interceptor.CommandContext" %>
<%@ page import="com.api.workflow.service.RequestAuthenticationService" %>
<%@ page import="java.util.*" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page import="weaver.workflow.monitor.Monitor" %>
<%@ page import="weaver.workflow.workflow.WorkflowConfigComInfo" %>
<%@ page import="weaver.hrm.resource.ResourceComInfo" %>
<%@ page import="weaver.crm.Maint.CustomerInfoComInfo" %>
<%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz" %>
<%@ page import="weaver.general.TimeUtil" %>
<%@ page import="com.api.workflow.util.ServiceUtil" %>
<%@ page import="com.engine.workflow.biz.RobotNode.RobotNodeBiz" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="java.nio.charset.Charset" %>
<%@ page import="weaver.rtx.ChangeCharset" %>
<%@ page import="weaver.soa.workflow.request.RequestService" %>
<%@ page import="weaver.soa.workflow.request.RequestInfo" %>
<%@ page import="weaver.interfaces.workflow.action.WorkflowToDoc" %>
<%@ page import="weaver.workflow.request.RequestManager" %>
<%@ page import="com.engine.custom.archives.action.WorkflowToDocCus" %>
<%@ page import="okhttp3.*" %>
<%@ page import="weaver.docs.docs.DocRecycleManager" %>
<%
response.setCharacterEncoding("utf-8");
String requestid = "607615";
RequestService requestService = new RequestService();
RequestInfo requestInfo = requestService.getRequest(Util.getIntValue(requestid), 100);
out.print(JSONObject.toJSONString(requestInfo));
%>
<%!
public static void deleteDocByid(String docid){
DocRecycleManager docRecycleManager=new DocRecycleManager();
User user = new User(1);
docRecycleManager.moveDocToRecycle(user.getUID(), user.getLogintype(), Util.getIntValue(docid), "127.0.0.1");
docRecycleManager.deleteDocFromRecycle(user.getUID(), user.getLogintype(), weaver.general.Util.getIntValue(docid), "127.0.0.1");
}
%>

@ -0,0 +1,99 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="java.util.*" %>
<%@ page import="com.engine.common.util.ParamUtil" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="java.sql.Array" %>
<%@ page import="com.wbi.util.Util" %>
<%@ page import="java.math.BigDecimal" %>
<%@ page import="tebie.applib.api.O" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
Map<String, Object> param = ParamUtil.request2Map(request);
String[] yffieldArr = {"y4","y5","y6","y7","y8","y9","y10","y11","y12","y1","y2","y3"};
List<String> yffieldList = new ArrayList<>(Arrays.asList(yffieldArr));
// out.print(JSONObject.toJSONString(param));
String sql = "select zx. *,kyb.ky ,jz.syry from " +
"uf_axyssjzx zx " +
"left join (select a.budget,ISNULL(nky,0)-ISNULL(am,0) as ky from " +
"(select sum(budgetAmount) nky, depart,subject,budget,year ,departMemberId,subjectMemberId,budgetMemberId,yearMemberId " +
"from FnaMultiBudgetAX_3 " +
"group by depart,subject,budget,year ,departMemberId,subjectMemberId,budgetMemberId,yearMemberId) a " +
"left join (select sum(amount) am,budgetMember_1, budgetMember_2 , budgetMember_3 ,budgetMember_4 from FnaExpenseInfo_3_2 " +
"where expenseStaus= 1 or expenseStaus= 0 group by budgetMember_1, budgetMember_2 , budgetMember_3 ,budgetMember_4 ) b " +
"on a.budget = b.budgetMember_3 where a.budget is not null and a.budget != 'null') kyb " +
"on zx.id = kyb.budget " +
"left join matrixtable_33 jz " +
"on zx.YSBMYSBS = jz.ysbm " +
"WHERE zx.zt = 0";
String data = (String) param.get("data");
String sxyf = "y"+(String) param.get("sxyf");
int index = yffieldList.indexOf(sxyf);
// out.print("sxyf=====>"+sxyf);
// out.print("<br/>");
// out.print("index=====>"+index);
// out.print("<br/>");
List<String> subList = new ArrayList<>();
if (index != -1) {
subList = yffieldList.subList(index , yffieldList.size());
System.out.println(subList); // 打印剩余元素
}
// out.print("subList=====>"+subList);
// out.print("<br/>");
RecordSet recordSet = new RecordSet();
JSONArray objects = JSONObject.parseArray(data);
ArrayList<String> ids = new ArrayList<>();
for (int i = 0; i <objects.size(); i++) {
// out.print((Map)objects.get(i));
Map map = (Map)objects.get(i);
String bh = (String)map.get("bh");
ids.add(bh);
}
sql = sql + " AND zx.id in ("+String.join(",",ids)+" )";
// out.print(sql);
recordSet.executeQuery(sql);
HashMap<String, String> ysMap = new HashMap<>();
while (recordSet.next()){
// out.print(recordSet.getString("YSBHYSFH"));
// out.print("----------");
// out.print(recordSet.getString("YSKMBH"));
// out.print("<br/>");
ysMap.put(Util.null2String(recordSet.getString("id")),Util.null2String(recordSet.getString("ky")));
}
ArrayList<String> errorList = new ArrayList<>();
String errorTxt = "";
for (int i = 0; i <objects.size(); i++) {
// out.print((Map)objects.get(i));
Map map = (Map)objects.get(i);
String bh = (String)map.get("bh");
BigDecimal sum = new BigDecimal("0");
for (String yf : subList) {
// out.print(yf+"------"+Util.null2String(map.get(yf)));
BigDecimal yfy = new BigDecimal(Util.null2String(map.get(yf)));
sum = sum.add(yfy);
}
// out.print(bh+">>>>>>"+sum.toString());
BigDecimal kyys = new BigDecimal(ysMap.get(bh));
// out.print(">>>>>>"+kyys.toString());
// out.print("<br/>");
if (sum.compareTo(kyys)>0){
errorList.add(bh);
String bhName = (String)map.get("bhName");
errorTxt = errorTxt + " " + bhName;
}
}
HashMap<String, Object> result = new HashMap<>();
result.put("errList",errorList);
result.put("errTxt",errorTxt);
out.print(JSONObject.toJSONString(result));
%>
<%!
%>

@ -0,0 +1,75 @@
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="java.util.*" %>
<%@ page import="com.engine.common.util.ParamUtil" %>
<%@ page import="com.alibaba.fastjson.JSONArray" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="java.sql.Array" %>
<%@ page import="com.wbi.util.Util" %>
<%@ page import="java.math.BigDecimal" %>
<%@ page import="tebie.applib.api.O" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="javax.xml.parsers.SAXParserFactory" %>
<%@ page import="javax.xml.parsers.SAXParser" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="java.io.ByteArrayInputStream" %>
<%@ page import="com.engine.util.XMLUtils" %>
<%@ page import="org.xml.sax.helpers.DefaultHandler" %>
<%@ page import="org.xml.sax.Attributes" %>
<%@ page import="org.xml.sax.SAXException" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%
%>
<%!
public static Map<String, String> parseXMLToMap(String xmlString) {
new BaseBean().writeLog("XMLUtils:xmlString==>"+xmlString);
Map<String, String> resultMap = new HashMap<>();
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
InputStream xmlInput = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
saxParser.parse(xmlInput, new XMLUtils.SAXHandler(resultMap));
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
private static class SAXHandler extends DefaultHandler {
private Map<String, String> resultMap;
private Stack<String> elementStack = new Stack<>();
private StringBuilder elementValue = new StringBuilder();
public SAXHandler(Map<String, String> resultMap) {
this.resultMap = resultMap;
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
elementStack.push(qName);
elementValue.setLength(0); // 清空字符缓存
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
String value = elementValue.toString().trim();
if (!value.isEmpty()) {
// 如果当前元素有值且没有子元素则将其添加到结果Map中
if (elementStack.size() > 1) {
resultMap.put(elementStack.peek(), value);
}
}
elementStack.pop();
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
elementValue.append(ch, start, length);
}
}
%>

File diff suppressed because one or more lines are too long

Binary file not shown.

@ -0,0 +1,33 @@
<%@ page import="weaver.integration.entrance.bean.OutterLoginBean" %>
<%@ page import="weaver.integration.entrance.service.EntranceService" %>
<%@ page import="weaver.integration.entrance.service.IEntranceService" %>
<%@ page import="weaver.integration.entrance.service.IOutterSysServer" %>
<%@ page import="weaver.integration.entrance.service.impl.QQMailServer" %>
<%@ page import="weaver.integration.entrance.service.permission.IPermissionService" %>
<%@ page import="weaver.integration.entrance.service.permission.PermissionService" %>
<%@ page language="java" contentType="text/html; charset=GBK" %>
<%--<%@ include file="/systeminfo/init.jsp"%>--%>
<%@ page import="weaver.general.Util" %>
<%@ page import="java.util.Objects" %>
<%@ page import="java.util.Map" %>
<jsp:useBean id="EntranceQQEmail" class="weaver.interfaces.email.EntranceQQEmail" scope="page"/>
<jsp:useBean id="RecordSet" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="ResourceComInfo" class="weaver.hrm.resource.ResourceComInfo" scope="page" />
<%
IPermissionService permissionService=new PermissionService();
String operationType = permissionService.getOperationType(request);
String sysid = Util.null2String(request.getParameter("id"));// ϵͳ±êʶ
IEntranceService entranceService = new EntranceService();
IOutterSysServer qqMailServer = new QQMailServer();
OutterLoginBean loginBean = entranceService.getLoginBean(qqMailServer, sysid, operationType, request, response);
Map<String, Object> qqMap = entranceService.getUrl(qqMailServer, loginBean, operationType, request, response);
if (Objects.nonNull(qqMap)){
if (Objects.nonNull(qqMap.get("isRedirect")) && "true".equals(qqMap.get("isRedirect"))){
response.sendRedirect(qqMap.get("redirectUrl").toString());
}
}
%>

File diff suppressed because it is too large Load Diff

@ -1,38 +1,31 @@
<%@ page import="weaver.integration.entrance.bean.OutterLoginBean" %>
<%@ page import="weaver.integration.entrance.service.EntranceService" %>
<%@ page import="weaver.integration.entrance.service.IEntranceService" %>
<%@ page import="weaver.integration.entrance.service.IOutterSysServer" %>
<%@ page import="weaver.integration.entrance.service.impl.NcServer" %>
<%@ page import="weaver.integration.entrance.service.permission.IPermissionService" %>
<%@ page import="weaver.integration.entrance.service.permission.PermissionService" %>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%--<%@ include file="/systeminfo/init_wev8.jsp" %>--%>
<%@ page import="weaver.integration.logging.LoggerFactory" %>
<%@ page import="weaver.integration.logging.Logger" %>
<%@ page import="weaver.general.Util" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Objects" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.hrm.User" %>
<%@ page import="weaver.hrm.HrmUserVarify" %>
<%@ page import="weaver.interfaces.encode.AES_IV" %>
<%@ page import="com.engine.common.util.ParamUtil" %>
<%@ page import="com.icbc.api.internal.apache.http.impl.cookie.S" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="com.wbi.util.StringUtil" %>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="RecordSet" class="weaver.conn.RecordSet" scope="page" />
<jsp:useBean id="RecordSet1" class="weaver.conn.RecordSet" scope="page" />
<%
Logger integration_logger = LoggerFactory.getLogger();
BaseBean bb = new BaseBean();
String mhurlId = "";
String mhurl = "";
String encodeResultStr = "";
try {
User user = HrmUserVarify.getUser(request,response);
String loginid = user.getLoginid();
Map<String, Object> paramMap = ParamUtil.request2Map(request);
mhurl = (String) paramMap.get("mhurl");
mhurlId = (String) paramMap.get("mhurlId");
mhurl = getSysUrl(mhurlId);
AES_IV aesIV = new AES_IV();
// AES的密钥长度最好是16位(不是必须)
String password = "ecology_nsh_2021";
@ -43,10 +36,39 @@
// 加密
encodeResultStr = aesIV.encode(loginid);
// out.println(mhurl);
response.sendRedirect(mhurl+"?loginid="+encodeResultStr);
response.sendRedirect(mhurl+"loginid="+encodeResultStr);
}catch (Exception E){
bb.writeLog("mhxxerror====>"+E.getMessage());
if (StringUtil.isBlank(mhurl)){
out.print("跳转失败:未查询到系统ID对应的跳转链接(02002)");
}else {
response.sendRedirect(mhurl);
}
}
%>
<%!
public static String getSysUrl(String sysid){
RecordSet rs = new RecordSet();
String url = "-1";
//查询建模
rs.executeQuery("select * from uf_otherSysInfo where id = ?" ,sysid);
if (rs.next()){
url = Util.null2String(rs.getString("xtdz"));
}else {
return "-1";
}
url = url.trim();
if (!StringUtil.isBlank(url)){
//判断是否带?号
if (url.indexOf("?") == -1){
url = url+"?";
}else{
url = url+"&";
}
};
return url;
}
%>

@ -13,6 +13,7 @@
<%@ page import="org.apache.commons.lang3.StringUtils" %>
<%@ page import="com.alibaba.fastjson.JSONObject" %>
<%@ page import="weaver.interfaces.sso.cas.CASLoginUtil" %>
<%@ page import="com.wbi.util.ParamUtil" %>
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%
@ -58,12 +59,29 @@
String toURL = todoDataUtils.getURL("app".equalsIgnoreCase(type)? "1":"0" , ofsSysInfo , todoData , request , paramMap) ;
log.warn("跳转URL:" + toURL);
//添加判断,是否为小号,为小号则不更新未读标记
String loginidweaver = getCookie(request, "loginidweaver");
log.info("loginidweaver==>"+loginidweaver);
log.info("paramMap==>{}"+ParamUtil.request2Map(request));
String ua = Util.null2String(ParamUtil.request2Map(request).get("request_header_user_agent"));
log.info("loginidweaver.length()=={}"+(loginidweaver.length() == 8));
log.info(" ua.contains(E-Mobile7) == [}"+ua);
log.info(" ua.contains(E-Mobile7) == [}"+ua.contains("E-Mobile7") );
if(loginidweaver.length() == 8 && ua.contains("E-Mobile7") ){
log.info("update no eceute ==>"+loginidweaver);
}else {
log.info("update viewtype=1 ==>"+loginidweaver);
rs.executeUpdate("update ofs_todo_data set viewtype=1 where requestid=? and userid=? and islasttimes=1" , requestId , userId);
rs.executeUpdate("update ofs_done_data set viewtype=1 where requestid=? and userid=? " , requestId , userId);
rs.executeUpdate("delete from SysPoppupRemindInfoNew where userid = ? and requestid = ?", userId, requestId);
}
%>
<script type="text/javascript">
@ -157,4 +175,25 @@
return null;
}
}
//根据名称获取cookie的值
private String getCookie(HttpServletRequest request,String name){
try {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if(name.equals(cookie.getName())){
return Util.null2String(cookie.getValue());
}
}
}
}catch (Exception e){
log.error("getCookieError"+e.getMessage());
e.printStackTrace();
}
return "";
}
//
%>

Binary file not shown.

@ -3,8 +3,10 @@ package weaver.filter;
import com.weaver.file.Prop;
import weaver.general.BaseBean;
import weaver.general.StringUtil;
import weaver.general.Util;
import javax.servlet.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -29,8 +31,10 @@ public class LoginEMFilter implements Filter {
new BaseBean().writeLog("请求地址====>getRequestURL" + url);
//内网请求
if(url.indexOf("14.1.209.146:8080") == -1){
String currentDateTime = request.getHeader("currentDateTime");
String MdToken = request.getHeader("MdToken");
// String currentDateTime = request.getHeader("currentDateTime");
// String MdToken = request.getHeader("MdToken");
String currentDateTime = getCookie(request,"currentDateTime");
String MdToken = getCookie(request,"MdToken");
new BaseBean().writeLog("请求地址====>currentDateTime" + currentDateTime);
new BaseBean().writeLog("请求地址====>MdToken" + MdToken);
if (StringUtil.isEmpty(currentDateTime)||StringUtil.isEmpty(MdToken)){
@ -49,7 +53,7 @@ public class LoginEMFilter implements Filter {
new BaseBean().writeLog("请求地址====>toMD5(password)" + toMD5(password));
if (!(toMD5(password).toLowerCase().equals(MdToken))){
new BaseBean().writeLog("请求地址====>密码错误" +MdToken);
new BaseBean().writeLog("请求地址====>签名错误" +MdToken);
((HttpServletResponse) servletResponse).sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Internal Server Error");
return;
}else {
@ -106,7 +110,7 @@ public class LoginEMFilter implements Filter {
Date currentDate = new Date();
long difference = currentDate.getTime() - parsedDate.getTime();
if (difference > 5 * 1000) { // 10分钟 = 10 * 60 * 1000 毫秒
if (difference > 2 * 60 * 1000) { // 10分钟 = 10 * 60 * 1000 毫秒
return true;
} else {
return false;
@ -118,6 +122,26 @@ public class LoginEMFilter implements Filter {
}
}
private String getCookie(HttpServletRequest request,String name){
try {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if(name.equals(cookie.getName())){
return Util.null2String(cookie.getValue());
}
}
}
}catch (Exception e){
new BaseBean().writeLog("getCookieError:"+e.getMessage());
e.printStackTrace();
}
return "";
}
public static void main(String[] args) {
String originalString = "tq33q#LzDw$98HwEA@";
String md5String = toMD5(originalString);

@ -6,6 +6,7 @@ import com.engine.custom.sl.entity.*;
// import com.engine.util.SocketClientUtil;
import com.engine.util.SocketClientUtil;
import com.engine.util.XMLUtils;
import com.icbc.api.internal.apache.http.impl.cookie.S;
import com.weaver.general.Util;
import org.jsoup.Jsoup;
import weaver.conn.RecordSet;
@ -18,6 +19,7 @@ import weaver.soa.workflow.request.RequestInfo;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
@ -185,6 +187,7 @@ public class Action20231015024217 extends BaseBean implements Action {
//附件张数
toEsbBean.setAcsryNums(Util.null2String(rs.getString("fjzs")));
toEsbBean.setCostDeptCode((Util.null2String(rs.getString("cbzxbm"))));
//报销金额
toEsbBean.setExpnsAmt(multiply100(Util.null2String(rs.getString("bxjedwf"))));
//报销事由 Jsoup.parse(htmlContent).text()

@ -3,6 +3,7 @@ package weaver.interfaces.workflow.action.javacode;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.bean.MessageType;
import com.cloudstore.dev.api.util.Util_Message;
import com.wbi.util.Util;
import weaver.conn.RecordSet;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
@ -23,7 +24,6 @@ public class Action20231113045722 extends BaseBean implements Action {
public String execute(RequestInfo request) {
String requestId = request.getRequestid();
@ -44,8 +44,17 @@ public class Action20231113045722 extends BaseBean implements Action {
//移动端链接 纯文本就传空字符串
String linkMobileUrl = rs.getString("applj");
//codeid codeid
int codeid = Util.getIntValue(rs.getString("codeid"));
if (codeid <= 0) {
request.getRequestManager().setMessageid("90001");
request.getRequestManager().setMessagecontent("codeid异常");
return Action.FAILURE_AND_CONTINUE;
}
//消息来源(见文档第四点补充)
MessageType messageType = MessageType.newInstance(1542);
MessageType messageType = MessageType.newInstance(codeid);
//接收人id
Set<String> userIdList = convertToHashSet(fsr);

@ -0,0 +1,68 @@
package weaver.interfaces.workflow.action.javacode;
import com.engine.kq.biz.KQFormatBiz;
import com.wbi.util.Util;
import org.jsoup.helper.StringUtil;
import weaver.conn.RecordSet;
import weaver.interfaces.workflow.action.Action;
import weaver.general.BaseBean;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashSet;
import java.util.Random;
/**
* Online custom action interface
*/
public class Action20240312101859 extends BaseBean implements Action {
/**
* After selecting aciton after the process path node, this method will be executed after the node is submitted.
*/
@Override
public String execute(RequestInfo request) {
try {
String requestId = request.getRequestid();
String tablename = request.getRequestManager().getBillTableName();
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
String sql = "select ry , dd,rq,sj,lx from " + tablename + "_dt1 dt left join " +
tablename + " main on dt.mainid = main.id " +
"where main.requestid = ? ";
String dmlsql = "insert into " +
"hrmschedulesign(userid,usertype,signtype,signdate,signtime,isincom,clientaddress,signfrom,addr) \n" +
"values(?,1,?,?,?,1,'60.30.92.222','e9mobile',?) ";
rs.executeQuery(sql, requestId);
KQFormatBiz kqFormatBiz = new KQFormatBiz();
HashSet<String> rqSet = new HashSet<>();
String mainry = "";
while (rs.next()) {
String ry = Util.null2String(rs.getString("ry"));
String dd = Util.null2String(rs.getString("dd"));
String rq = Util.null2String(rs.getString("rq"));
String sj = Util.null2String(rs.getString("sj"));
String lx = Util.null2String(rs.getString("lx"));
mainry = ry;
Random random = new Random();
int randomNumber = random.nextInt(60) + 1; // 生成1到60的随机数
rs1.executeUpdate(dmlsql, ry, lx, rq, sj + ":" + randomNumber, dd);
rqSet.add(rq);
}
System.out.println("mainry:"+mainry);
if (!StringUtil.isBlank(mainry)) {
for (String rq : rqSet) {
System.out.println("执行更新考勤数据:"+mainry+"---"+rq);
kqFormatBiz.formatDate(mainry, rq);
}
}
return Action.SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Action.FAILURE_AND_CONTINUE;
}
}
}

@ -0,0 +1,67 @@
package weaver.interfaces.workflow.action.javacode;
import com.engine.kq.biz.KQFormatBiz;
import com.wbi.util.Util;
import org.jsoup.helper.StringUtil;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashSet;
import java.util.Random;
/**
* Online custom action interface
*/
public class Action20240312103913 extends BaseBean implements Action {
/**
* After selecting aciton after the process path node, this method will be executed after the node is submitted.
*/
@Override
public String execute(RequestInfo request) {
try {
String requestId = request.getRequestid();
String tablename = request.getRequestManager().getBillTableName();
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
String sql = "select ry , dd,rq,sj,lx from " + tablename + "_dt1 dt left join " +
tablename + " main on dt.mainid = main.id " +
"where main.requestid = ? ";
String dmlsql = "insert into " +
"hrmschedulesign(userid,usertype,signtype,signdate,signtime,isincom,clientaddress,signfrom,addr) " +
"values(?,1,?,?,?,1,'60.30.92.222','e9mobile',?) ";
rs.executeQuery(sql, requestId);
KQFormatBiz kqFormatBiz = new KQFormatBiz();
HashSet<String> rqSet = new HashSet<>();
String mainry = "";
while (rs.next()) {
String ry = Util.null2String(rs.getString("ry"));
String dd = Util.null2String(rs.getString("dd"));
String rq = Util.null2String(rs.getString("rq"));
String sj = Util.null2String(rs.getString("sj"));
String lx = Util.null2String(rs.getString("lx"));
mainry = ry;
Random random = new Random();
int randomNumber = random.nextInt(60) + 1; // 生成1到60的随机数
rs1.executeUpdate(dmlsql, ry, lx, rq, sj + ":" + randomNumber, dd);
rqSet.add(rq);
}
System.out.println("mainry:"+mainry);
if (!StringUtil.isBlank(mainry)) {
for (String rq : rqSet) {
System.out.println("执行更新考勤数据:"+mainry+"---"+rq);
kqFormatBiz.formatDate(mainry, rq);
}
}
return Action.SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Action.FAILURE_AND_CONTINUE;
}
}
}
Loading…
Cancel
Save