package weaver.general;

import com.api.browser.bean.BrowserValueInfo;
import com.api.browser.service.BrowserValueInfoService;
import com.engine.common.util.ServiceUtil;
import com.engine.workflow.biz.SelectNextFlowBiz;
import com.engine.workflow.biz.WorkflowBaseBiz;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.biz.requestList.RequestAttentionBiz;
import com.engine.workflow.biz.requestList.RequestListBiz;
import com.engine.workflow.constant.SecondAuthType;
import com.engine.workflow.entity.freeNode.FreeNodeEntity;
import com.engine.workflow.service.RequestSecondAuthService;
import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl;
import com.engine.workflow.util.ChuanyueUtil;
import com.weaver.cssRenderHandler.JsonUtils;
import org.apache.commons.lang.StringUtils;
import weaver.conn.ConnectionPool;
import weaver.conn.RecordSet;
import weaver.cpt.capital.CapitalComInfo;
import weaver.crm.Maint.CustomerInfoComInfo;
import weaver.docs.docs.DocComInfo;
import weaver.docs.docs.DocImageManager;
import weaver.docs.senddoc.DocReceiveUnitComInfo;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.workflow.browser.Browser;
import weaver.interfaces.workflow.browser.BrowserBean;
import weaver.ofs.manager.utils.OfsTodoDataUtils;
import weaver.proj.Maint.ProjectInfoComInfo;
import weaver.rtx.RTXConfig;
import weaver.system.RequestDefaultComInfo;
import weaver.systeminfo.SystemEnv;
import weaver.systeminfo.setting.HrmUserSettingComInfo;
import weaver.workflow.field.BrowserComInfo;
import weaver.workflow.monitor.Monitor;
import weaver.workflow.monitor.MonitorDTO;
import weaver.workflow.request.*;
import weaver.workflow.request.todo.OfsSettingObject;
import weaver.workflow.request.todo.RequestUtil;
import weaver.workflow.workflow.*;

import java.text.DecimalFormat;
import java.util.*;

/*
 * Created on 2006-05-18
 * Copyright (c) 2001-2006 泛微软件
 * 泛微协同商务系统，版权所有。
 *
 */

/**
 * 流程列表页数据库值和显示名的转化
 *
 * @author xwj
 * @version10.
 */
public class WorkFlowTransMethod extends BaseBean {
    private ResourceComInfo rc = null;
    private CustomerInfoComInfo cci = null;
    private WorkflowBillComInfo wcInfo = null;

    private WorkflowComInfo wf = null;
    private WorkflowComInfo WorkflowComInfo = null;
    private DepartmentComInfo DepartmentComInfo1 = null;
    private JobTitlesComInfo JobTitlesComInfo1 = null;
    private ProjectInfoComInfo ProjectInfoComInfo1 = null;
    private DocComInfo DocComInfo1 = null;
    private BrowserComInfo BrowserComInfo = null;
    private DocImageManager DocImageManager = null;
    private WorkflowRequestComInfo WorkflowRequestComInfo1 = null;
    private CapitalComInfo CapitalComInfo1 = null;
    private RequestDefaultComInfo RequestDefaultComInfo = null;
    private ResourceConditionManager rcm = null;
    private DocReceiveUnitComInfo duc = null;
    private WorkflowComInfo wci = null;
    private RequestUtil ru = null;
    public int count = 0;
    private RequestBaseUtil rbu = null;
    private static final String STYLE_STR = "<span style=\"display:inline-block; width:100%;\">";       // 返回的的returnStr包含 <img> 主次账号图标时需要使用此样式包裹
    private String contextPath = "";//系统路径

    public WorkFlowTransMethod() {
        try {
            cci = new CustomerInfoComInfo();
            rc = new ResourceComInfo();
            wcInfo = new WorkflowBillComInfo();
            wf = new WorkflowComInfo();
            RequestDefaultComInfo = new RequestDefaultComInfo();
            DocComInfo1 = new DocComInfo();
            ProjectInfoComInfo1 = new ProjectInfoComInfo();
            BrowserComInfo = new BrowserComInfo();
            DepartmentComInfo1 = new DepartmentComInfo();
            JobTitlesComInfo1 = new JobTitlesComInfo();
            DocImageManager = new DocImageManager();
            WorkflowRequestComInfo1 = new WorkflowRequestComInfo();
            CapitalComInfo1 = new CapitalComInfo();
            rcm = new ResourceConditionManager();
            duc = new DocReceiveUnitComInfo();
            wci = new WorkflowComInfo();
            ru = new RequestUtil();
            rbu = new RequestBaseUtil();
            contextPath = Util.null2String(GCONST.getContextPath());
        } catch (Exception ex) {
            writeLog(ex);
        }
    }

    /**
     * 判断当前请求节点设置了必须新增明细后，明细中有没有数据
     *
     * @param workflowid
     * @param requestid
     * @return 返回false-表示明细没有数据
     */
    public boolean haveDetailMustAdd(String workflowid, int requestid) {
        boolean flag = true;
        String sql = "";
        int isbill = 0;
        int formid = 0;
        int nodeid = 0;
        int groupid = 0;
        RecordSet rs = new RecordSet();
        RecordSet rs1 = new RecordSet();
        sql = "select formid,isbill from workflow_base where id=" + workflowid;
        rs.executeSql(sql);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);
        }
        sql = "select currentnodeid from workflow_requestbase where requestid=" + requestid;
        rs.executeSql(sql);
        if (rs.next()) {
            nodeid = rs.getInt(1);
        }
        //检查当前节点 是否设置了 必须新增明细
        sql = "select groupid from workflow_NodeFormGroup where isneed=1 and nodeid=" + nodeid;
        rs.executeSql(sql);
        while (rs.next()) {
            groupid = rs.getInt(1);
            //判断是新表单还是老表单，明细表不一样
            if (formid > 0 && isbill == 0) {//老表单
                //检查明细是否有数据
                sql = "select id from workflow_formdetail where requestid=" + requestid + " and groupid=" + groupid;
                rs1.executeSql(sql);
                if (rs1.next()) {

                } else {
                    return false;
                }
            }
            if (formid < 0 && isbill == 1) {//新表单
                int dt = groupid + 1;
                int mainT = -formid;
                //检查明细是否有数据
                sql = "select id from formtable_main_" + mainT + "_dt" + dt + " where mainid=(select id from formtable_main_" + mainT + " where requestid=" + requestid + ")";
                rs1.executeSql(sql);
                if (rs1.next()) {

                } else {
                    return false;
                }
            }
        }
        return flag;
    }

    /**
     * 重写，加上当前节点id
     * 判断当前请求节点设置了必须新增明细后，明细中有没有数据
     *
     * @param workflowid
     * @param requestid
     * @param nodeid
     * @return 返回false-表示明细没有数据
     */
    public boolean haveDetailMustAdd(String workflowid, int requestid, int nodeid) {
        boolean flag = true;
        String sql = "";
        String checksql = "";
        int isbill = 0;
        int formid = 0;
        int groupid = 0;
        int checks = 0;
        RecordSet rs = new RecordSet();
        RecordSet rs1 = new RecordSet();
        RecordSet rs2 = new RecordSet();
        sql = "select formid,isbill from workflow_base where id=" + workflowid;
        rs.executeSql(sql);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);
        }
        //修改，主要是针对客户复制了明细表，然后直接删除了明细字段
        if (formid > 0 && isbill == 0) { //老表单
            checksql = "SELECT count(fieldid) FROM workflow_formfield WHERE formid=" + formid + " and isdetail is not null";
            rs.executeSql(checksql);
            if (rs.next()) {
                checks = rs.getInt(1);
            }
            if (checks > 0) {
                //检查当前节点 是否设置了 必须新增明细
                sql = "select groupid from workflow_NodeFormGroup where isneed=1 and nodeid=" + nodeid;
                rs1.executeSql(sql);
                while (rs1.next()) {
                    groupid = rs1.getInt(1);
                    //判断是新表单还是老表单，明细表不一样
                    if (formid > 0 && isbill == 0) {//老表单
                        //检查明细是否有数据
                        sql = "select id from workflow_formdetail where requestid=" + requestid + " and groupid=" + groupid;
                        rs2.executeSql(sql);
                        if (rs2.next()) {

                        } else {
                            return false;
                        }
                    }
                    if (formid < 0 && isbill == 1) {//新表单
                        int dt = groupid + 1;
                        int mainT = -formid;
                        //检查明细是否有数据
                        rs2.executeQuery("select 1 from WORKFLOW_BILLDETAILTABLE where billid = ? and tablename='formtable_main_" + mainT + "_dt" + dt + "'", formid);
                        if (!rs2.next()) {
                            continue;
                        }
                        //检查明细是否有数据
                        sql = "select id from formtable_main_" + mainT + "_dt" + dt + " where mainid=(select id from formtable_main_" + mainT + " where requestid=" + requestid + ")";
                        rs2.executeSql(sql);
                        if (rs2.next()) {

                        } else {
                            return false;
                        }
                    }
                }
            } else {

            }
        }
        if (formid < 0 && isbill == 1) {//新表单
            checksql = "select COUNT(id) from workflow_billfield where billid=" + formid + "  AND viewtype =1";
            rs.executeSql(checksql);
            if (rs.next()) {
                checks = rs.getInt(1);
            }

            List<String> detailNames = new ArrayList<>();
            rs.executeQuery("select tablename from workflow_billdetailtable where billid = ?", formid);
            while (rs.next()) {
                detailNames.add(rs.getString("tablename"));
            }

            if (checks > 0) {
                //检查当前节点 是否设置了 必须新增明细
                sql = "select groupid from workflow_NodeFormGroup where isneed=1 and nodeid=" + nodeid;
                rs1.executeSql(sql);
                while (rs1.next()) {
                    groupid = rs1.getInt(1);
                    //判断是新表单还是老表单，明细表不一样
                    if (formid > 0 && isbill == 0) {//老表单
                        //检查明细是否有数据
                        sql = "select id from workflow_formdetail where requestid=" + requestid + " and groupid=" + groupid;
                        rs2.executeSql(sql);
                        if (rs2.next()) {

                        } else {
                            return false;
                        }
                    }
                    if (formid < 0 && isbill == 1) {//新表单
                        int dt = groupid + 1;
                        int mainT = -formid;
                        if (detailNames.indexOf("formtable_main_" + mainT + "_dt" + dt) == -1) {
                            continue;
                        }
                        //检查明细是否有数据
                        sql = "select id from formtable_main_" + mainT + "_dt" + dt + " where mainid=(select id from formtable_main_" + mainT + " where requestid=" + requestid + ")";
                        rs2.executeSql(sql);
                        if (rs2.next()) {

                        } else {
                            return false;
                        }
                    }
                }
            } else {

            }
        }
        return flag;
    }

    /**
     * 是否在列表显示选择筐 待审批显示复选框
     *
     * @param request 流程ID
     * @return true/false
     */
    public String getOpUserResultCheckBox(String request) {
        String[] tempStr = Util.splitString(request, "+");
        String requestid = Util.null2String(tempStr[0]);
        String userid = Util.null2String(tempStr[1]);
        RecordSet rs = new RecordSet();
        rs.executeSql("select distinct userid from workflow_currentoperator where (isremark in ('0','1') or (isremark='4' and viewtype=0))  and requestid =" + requestid + " and userid=" + userid);
        return "" + rs.next();
    }


    /**
     * 将流程删除人id转为name
     *
     * @param id   创建人ID
     * @param type 内部/外部
     * @return 显示中文名
     */
    public String getDelResultName(String id, String type) {
        String returnStr = "";
        if ("1".equals(type) || "1.0".equals(type)) { //外部
            returnStr =cci.getCustomerInfoname(id);
        } else { //内部
            returnStr =rc.getResourcename(id);
        }
        return returnStr;
    }

    /**
     * 把流程创建人由ID转为显示中文名
     *
     * @param id   创建人ID
     * @param type 内部/外部
     * @return 显示中文名
     */
    public String getWFSearchResultName(String id, String type) {
        String returnStr = "";
        if ("1".equals(type) || "1.0".equals(type)) { //外部
            returnStr =
                    "<a target=\"_blank\" href=\"/spa/crm/static/index.html#/main/crm/customerView?customerId=" + id + "\">"
                            + cci.getCustomerInfoname(id)
                            + "</a>";
        } else { //内部
            returnStr =
                    "<a href=\"javaScript:openhrm("
                            + id
                            + ");\" onclick='pointerXY(event);'>"
                            + rc.getResourcename(id)
                            + "</a>";
        }
        return returnStr;
    }

    /**
     * 把流程名称和流程ID作为流程名称一起显示
     *
     * @param requestname 流程名称
     * @param para1
     * @return 显示名
     */
    public String getWFSearchResultFlowName(String requestname, String para1) {
        RecordSet rs = new RecordSet();
        String returnStr = "";
        String[] tempStr = Util.splitString(para1, "+");
        String requestid = Util.null2String(tempStr[0]);
        int isview = Util.getIntValue(tempStr[1], 0);

        int workflowid = Util.getIntValue(Util.null2String(tempStr[2]), 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[3]), 7);
        int isbill = 0;
        int formid = 0;
        ////根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);

        }

        requestname = rbu.formatRequestname(requestname, workflowid + "", requestid, isbill, formid, userlang);
        returnStr = requestname + "(" + requestid + ")";
        if (isview == 1) {
            returnStr = "<a href=\"javaScript:openFullWindowHaveBar(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&ismonitor=1\')\">" + returnStr + "</a>";
        }
        return returnStr;
    }

    /**
     * 把流程紧急程度由代码转为显示中文名
     *
     * @param urgencyType 流程紧急程度
     * @return 显示中文名
     */
    public String getWFSearchResultUrgencyDegree(String urgencyType, String userLanguage) {
        String returnStr = "";
        if("".equals(Util.null2String(urgencyType).trim())){//sqlserver、mysql默认会对数字型列做空串转数字处理，例如urgencyType等于空的情况下会查到表中id等于0的数据
            return returnStr;
        }
        String sql = "SELECT id, defaultname, customname FROM workflow_customlevel where id=?";
        RecordSet rs = new RecordSet();
        rs.executeQuery(sql, urgencyType);
        if (rs.next()) {
            String customname = Util.null2String(rs.getString("customname"));
            String defaultname = Util.null2String(rs.getString("defaultname"));
            returnStr = "".equals(customname) ? SystemEnv.getHtmlLabelNames(defaultname, Integer.parseInt(userLanguage)) : customname;
        }
		/*if ("0".equals(urgencyType)) {
			returnStr = SystemEnv.getHtmlLabelName(225,Integer.parseInt(userLanguage));
		} else if ("1".equals(urgencyType)) {
			returnStr = SystemEnv.getHtmlLabelName(15533,Integer.parseInt(userLanguage));
		} else if ("2".equals(urgencyType)) {
			returnStr = SystemEnv.getHtmlLabelName(2087,Integer.parseInt(userLanguage));
		} else {

		}*/
        return returnStr;
    }

    /**
     * 格式化显示创建时间
     *
     * @param day  日期
     * @param time 时间
     * @return 日期+ " " + 时间
     */
    public String getWFSearchResultCreateTime(String day, String time) {
        return day + " " + time;
    }


    /**
     * 是否在列表显示选择筐
     *
     * @param workflowid 流程ID
     * @return true/false
     */
    public String getWFSearchResultCheckBox(String workflowid) {
        RecordSet RecordSet = new RecordSet();
        String[] tempStr = Util.splitString(workflowid, "+");
        String wfid = Util.null2String(tempStr[0]);
        String isremark = Util.null2String(tempStr[1]);
        int requestid = Util.getIntValue(tempStr[2]);
        int nodeid = Util.getIntValue(tempStr[3]);
        int userid = Util.getIntValue(tempStr[4]);
        /**
         * 是否是手机端的checkbox
         */
        boolean isFromMobile = false;
        if (tempStr.length > 5) {
            isFromMobile = "1".equals(Util.null2String(tempStr[5]).trim());
        }

        int Forwardid = 0;
        int takisremark = -1;
        boolean canSubmit = true;
        // System.out.println("---266--sql-"+"select
        // isremark,isreminded,preisremark,id,groupdetailid,nodeid from
        // workflow_currentoperator where requestid="+requestid+" and
        // userid="+userid+" and nodeid="+nodeid+" order by isremark,id");
        if ("1".equals(isremark)) {
            RecordSet
                    .executeSql("select takisremark,isremark,isreminded,preisremark,id,groupdetailid,nodeid from workflow_currentoperator where requestid="
                            + requestid
                            + " and userid="
                            + userid
                            + " and nodeid=" + nodeid + " and islasttimes = 1 order by isremark,id");
            while (RecordSet.next()) {
                Forwardid = Util.getIntValue(RecordSet.getString("id"));
                takisremark = Util.getIntValue(RecordSet
                        .getString("takisremark"));
            }

            String wfSQL = "select * from workflow_Forward where requestid="
                    + requestid + " and BeForwardid=" + Forwardid;
            RecordSet.executeSql(wfSQL);
            if (RecordSet.next()) {
                String IsFromWFRemark_T = Util.null2String(RecordSet
                        .getString("IsFromWFRemark")); // 待办提交后被转发人是否可提交意见
                String IsSubmitedOpinion = Util.null2String(RecordSet
                        .getString("IsSubmitedOpinion")); // 待办提交后被转发人是否可提交意见
                String IsBeForwardTodo = Util.null2String(RecordSet
                        .getString("IsBeForwardTodo")); // 待办可转发
                String IsBeForwardSubmitAlready = Util.null2String(RecordSet
                        .getString("IsBeForwardSubmitAlready")); // 允许已办被转发人可提交意见
                String IsBeForwardAlready = Util.null2String(RecordSet
                        .getString("IsBeForwardAlready")); // 已办被转发人可转发
                String IsBeForwardSubmitNotaries = Util.null2String(RecordSet
                        .getString("IsBeForwardSubmitNotaries")); // 允许办结被转发人可提交意见
                String IsBeForward = Util.null2String(RecordSet
                        .getString("IsBeForward")); // 办结被转发人是否可转发
                if (takisremark != 2) {
                    if (("0".equals(IsFromWFRemark_T) && "1"
                            .equals(IsSubmitedOpinion))
                            || ("1".equals(IsFromWFRemark_T) && "1"
                            .equals(IsBeForwardSubmitAlready))
                            || ("2".equals(IsFromWFRemark_T) && "1"
                            .equals(IsBeForwardSubmitNotaries))) {
                        canSubmit = true;
                    } else {
                        canSubmit = false;
                    }
                }
                if (takisremark == 2) {
                    canSubmit = true;
                }
            }
        }
        String flag = "false";
        if (isremark.equals("0")) {
            if ("1".equals(getWFMultiSubmit(wfid, nodeid, isremark, takisremark)))
                flag = "true";
            if (flag.equals("true")) {
                boolean needJudgeMustInput = true;
                int extendnodeid = nodeid;
                if (FreeNodeBiz.isFreeNode(nodeid)) {
                    FreeNodeEntity nodeEntity = FreeNodeBiz.getCurrentFreeNodeEntity(requestid, nodeid);
                    if (nodeEntity != null) {
                        if (!nodeEntity.isAllowModify()) {
                            needJudgeMustInput = false;
                        }
                        extendnodeid = nodeEntity.getExtendnodeid();
                    }
                }
                if (needJudgeMustInput) {
                    if (flag.equals("true") && haveMustInput(requestid, extendnodeid)) {
                        flag = "false";
                    } else {
                        if (haveDetailMustAdd(wfid, requestid, extendnodeid)) {
                            flag = "true";
                        } else {
                            flag = "false";
                        }
                    }
                }
            }
            //查阅类型暂不支持批量提交
            if (flag.equals("true")) {
                if (FreeNodeBiz.isFreeNode(nodeid)) {
                    FreeNodeEntity nodeEntity = FreeNodeBiz.getCurrentFreeNodeEntity(requestid, nodeid);
                    if (nodeEntity != null && nodeEntity.getNodetype() == 4) {
                        flag = "false";
                    }
                }
            }
        } else if (isremark.equals("9")) {
            if ("1".equals(getWFMultiSubmit(wfid, nodeid, isremark, takisremark))) {
                flag = "true";
            }
        } else if (isremark.equals("11")) {
            if ("1".equals(getWFMultiSubmit(wfid, nodeid, isremark, takisremark)) && ChuanyueUtil.isSubmitSignByRequestId(Util.getIntValue(wfid),requestid,nodeid,userid,"1".equals(new User(userid).getLogintype()) ? 0 : 1,11+"",true)) {
                flag = "true";
            }
        } else if (isremark.equals("1")) {
            if (canSubmit && "1".equals(getWFMultiSubmit(wfid, nodeid, isremark, takisremark))) {

                flag = "true";
            } else {

                flag = "false";
            }
        } else if ("8".equals(isremark)) {
            //要判断一下是否有传阅的记录，如果有则要验证传阅能否批示，不能才返回false
            RecordSet.executeQuery("select isremark from workflow_currentoperator where isremark=11 and requestid=? and userid=?", requestid, userid);
            if (RecordSet.next() && "1".equals(getWFMultiSubmit(wfid, nodeid, isremark, takisremark))) {
                flag = "true";
            } else {
                flag = "false";
            }
        }


        User user = new User(userid);
        RequestSecondAuthService service = ServiceUtil.getService(RequestSecondAuthServiceImpl.class, user);
        Map<String, Object> params = new HashMap<String, Object>();

        int extendnodeid = nodeid;
        if(FreeNodeBiz.isFreeNode(extendnodeid)) {
            extendnodeid = FreeNodeBiz.getExtendNodeId(nodeid);
        }

        params.put("workflowid", wfid);
        params.put("nodeid", extendnodeid + "");

        Map<String, Object> result = service.getSecondAuthConfig4Checkbox(params);
        String isEnableAuth = Util.null2String(result.get("isEnableAuth"));
        String isEnableProtect = Util.null2String(result.get("isEnableProtect"));
        int protectType = Util.getIntValue(Util.null2String(result.get("protectType")));    //数据保护的方式
        int secondAuthType = Util.getIntValue(Util.null2String(result.get("secondAuthType")));    //二次认证的方式
        int qysSignWay = Util.getIntValue(Util.null2String(result.get("qysSignWay")));	//2 契约锁服务 或者 1 契约锁单体

        //移动端，如果开启二次密码校验，不显示check框(手机端参数为6个)
        if ("true".equals(flag)) {
            if (isFromMobile) {
                if ("1".equals(isEnableAuth) || "1".equals(isEnableProtect)) {
                    flag = "false";
                }
            } else {
                //因为CA暂没有批量数据签名的接口，因此流程开启了CA数据保护时，PC端不允许批量提交
                if (("1".equals(isEnableProtect) && protectType == SecondAuthType.CAAuth.getId())
                        || ("1".equals(isEnableProtect) && protectType == SecondAuthType.QYS.getId() && qysSignWay == 1)
                        || ("1".equals(isEnableAuth) && secondAuthType == SecondAuthType.RealIDAuth.getId())) {
                    flag = "false";
                }
            }
        }

        if ("true".equals(flag) && SelectNextFlowBiz.hasSelectNextFlow(nodeid)) {//开启了指定流转，不允许批量提交
            flag = "false";
        }

        return flag;
    }


    /**
     * 是否在列表显示选择筐,批量标记为已读
     *
     * @param otherInfo 流程ID
     * @return true/false
     */
    public String getWFSearchRstCkBoxForMsg(String otherInfo) {
        String isread = "false";
        boolean isprocessed;
        String[] otherInfos = Util.splitString(otherInfo, "+");
        String viewtype = Util.null2String(otherInfos[0]);
        String isremark_tmp = Util.null2String(otherInfos[1]);
        String isprocessed_tmp = Util.null2String(otherInfos[2]);
        if ((isremark_tmp.equals("0") && !isprocessed_tmp.equals("1")) || isremark_tmp.equals("5")) {
            isprocessed = true;
        } else {
            isprocessed = false;
        }
        if (viewtype.equals("0")) {
            //if(isprocessed){
            isread = "true";
            //}
        }
        return isread;
    }

    /**
     * 流程操作按钮判断
     * add by Dracula @2014-1-15
     *
     * @param
     * @param otherInfo
     * @return
     */
    public List<String> getWFSearchResultOperation(String requestid, String otherInfo, String userInfo) {
        String showMarkReadBtn = "false";    //显示标记为已读
        String showRansmitBtn = "false";    //显示转发按钮
        //String showtakingOpBtn = "false";	//显示转办按钮
        //String showHandlForBtn = "false";	//显示意见征询按钮
        String showPrintBtn = "false";        //显示打印按钮
        String showNewflowBtn = "false";    //显示新建流程按钮
        String showNewMessageBtn = "false";    //显示新建短信按钮
        String showFormLogBtn = "false";    //显示表单日志按钮

        boolean isread = false;
        boolean canransmit = false;
        //boolean cantakingOp = false;
        //boolean canHandlFor = false;
        boolean canprint = true;        //打印是无论如何都会出现，不管有没有打印模板
        boolean cannewflow = false;
        boolean cannewmessage = false;
        boolean canseelog = false;
        List<String> result = new ArrayList<String>();
        String currentType = getCurrentType(requestid);

        String[] otherInfos = null;
        boolean isNeedBack = false;
        if(otherInfo.startsWith("S")){
            String[] tempStr_tmp = Util.splitString(otherInfo, "+");
            otherInfos = Arrays.copyOfRange(tempStr_tmp,9,tempStr_tmp.length);
            isNeedBack = isNeedBack(Arrays.copyOfRange(tempStr_tmp,1,8),Util.null2String(otherInfos[0]));
        }else{
            otherInfos = Util.splitString(otherInfo, "+");
        }
        String viewtype = Util.null2String(otherInfos[0]);
        String isremark_tmp = Util.null2String(otherInfos[1]);
        String isprocessed_tmp = Util.null2String(otherInfos[2]);
        String nodeid_tmp = Util.null2String(otherInfos[3]);
        String workflowid_tmp = Util.null2String(otherInfos[4]);
        String scope = Util.null2String(otherInfos[5]);
        String userid = Util.null2String(otherInfos[6]);

        String[] userInfos = Util.splitString(userInfo, "_");
        String userid_tmp = Util.null2String(userInfos[0]);
        String usertype_tmp = Util.null2String(userInfos[1]);

        List<String> belogtoids = new ArrayList<>();
        if (!"".equals(userid_tmp) && "0".equals(usertype_tmp)) {
            HrmUserSettingComInfo userSetting = new HrmUserSettingComInfo();
            boolean belongtoshow = "1".equals(userSetting.getBelongtoshowByUserId(userid_tmp));//是否开启
            belogtoids.add(userid_tmp);
            if (belongtoshow) {
                User user = User.getUser(Util.getIntValue(userid_tmp), 0);
                belogtoids.addAll(Util.splitString2List(user.getBelongtoids(), ","));
            }
        } else {
            belogtoids.add(userid_tmp);
        }

        String haswfrm = "";//是否使用新建流程按钮
        String hassmsrm = "";//是否使用新建短信按钮
        //判断是否已读===========
        boolean isprocessed;
        if ((isremark_tmp.equals("0") && !isprocessed_tmp.equals("1")) || isremark_tmp.equals("5")) {
            isprocessed = true;
        } else {
            isprocessed = false;
        }
        if (viewtype.equals("0") || viewtype.equals("-1") || isNeedBack) {//未读和反馈流程都加上标记为已读按钮
            //if(isprocessed){
//        		BDNew//新的
            isread = true;
            //}
        }
        //其他按钮逻辑查询
        String isremarkForRM = "";
        int preisremark = -1;
        RecordSet RecordSet = new RecordSet();
        RecordSet _rs = new RecordSet();
        int wfcurtid = 0;
        int wfcurnodeid = 0;
        int takisremark = -1;
        int handleforwardid = -1;
        String wfcurnodetype = "";
        _rs.executeQuery(com.api.workflow.util.ServiceUtil.calculateCurrentNodeSql(requestid+"", Util.getIntValue(userid_tmp), Util.getIntValue(usertype_tmp)));
        //_rs.executeSql("select handleforwardid,takisremark,isremark,isreminded,preisremark,id,groupdetailid,nodeid,(CASE WHEN isremark=9 THEN 7.5 ELSE isremark END) orderisremark from workflow_currentoperator where requestid=" + requestid + " and userid in (" + CollectionUtil.list2String(belogtoids, ",") + ") and usertype=" + usertype_tmp + " order by orderisremark,id ");
        while (_rs.next()) {
            String isremark = Util.null2String(_rs.getString("isremark"));
            wfcurtid = Util.getIntValue(Util.null2String(_rs.getString("id")));
            isremarkForRM = isremark;
            preisremark = Util.getIntValue(_rs.getString("preisremark"), 0);
            takisremark = Util.getIntValue(_rs.getString("takisremark"), 0);
            handleforwardid = Util.getIntValue(_rs.getString("handleforwardid"), -1);
            int tmpnodeid = Util.getIntValue(_rs.getString("nodeid"));

            /*if (isremark.equals("1") || isremark.equals("9")) {
                wfcurnodeid = tmpnodeid;
                WFLinkInfo wfLinkInfo = new WFLinkInfo();
                wfcurnodetype = wfLinkInfo.getNodeType(wfcurnodeid);
                break;
            }*/

            if (isremark.equals("1") || isremark.equals("5") || isremark.equals("7") || isremark.equals("8") || isremark.equals("9") || (isremark.equals("0") && !wfcurnodetype.equals("3")) || isremark.equals("11")) {
                wfcurnodeid = tmpnodeid;
                WFLinkInfo wfLinkInfo = new WFLinkInfo();
                wfcurnodetype = wfLinkInfo.getNodeType(wfcurnodeid);
                break;
            }

            /*
            if( isremark.equals("1")||isremark.equals("5") || isremark.equals("7")|| isremark.equals("9") ||(isremark.equals("0")  && !currentType.equals("3")) ) {
                  wfcurnodeid=tmpnodeid;
                  WFLinkInfo wfLinkInfo = new WFLinkInfo();
                  wfcurnodetype=wfLinkInfo.getNodeType(wfcurnodeid);
                  break;
            }
            if(isremark.equals("8")){
                break;
            }
            */
        }
        _rs.executeSql("select * from workflow_requestbase where requestid=" + requestid);
        while (_rs.next()) {
            wfcurnodetype = Util.null2String(_rs.getString("currentnodetype"));

        }

        int extendnodeid = FreeNodeBiz.getExtendNodeId(Util.getIntValue(requestid), Util.getIntValue(nodeid_tmp));
        WFForwardManager wfmange = new WFForwardManager();
        wfmange.init();
        wfmange.setWorkflowid(Util.getIntValue(workflowid_tmp, 0));
        wfmange.setNodeid(extendnodeid);
        wfmange.setRequestid(Util.getIntValue(requestid, 0));
        wfmange.setIsremark(isremark_tmp);
        wfmange.setBeForwardid(wfcurtid);
        wfmange.getWFNodeInfo();
        //转发=============
        String IsPendingForward = Util.null2String(wfmange.getIsPendingForward());//允许代办事宜转发
        String IsBeForwardTodo = Util.null2String(wfmange.getIsBeForwardTodo());
        String IsBeForwardSubmitAlready = Util.null2String(wfmange.getIsBeForwardSubmitAlready());
        String IsBeForwardSubmitNotaries = Util.null2String(wfmange.getIsBeForwardSubmitNotaries());
        String IsFromWFRemark_T = Util.null2String(wfmange.getIsFromWFRemark());
        String IsBeForwardAlready = Util.null2String(wfmange.getIsBeForwardAlready());  // 已办转发
        String IsAlreadyForward = Util.null2String(wfmange.getIsAlreadyForward());  // 已办转发
        String IsSubmitForward = Util.null2String(wfmange.getIsSubmitForward());  // 归档转发
        String IsTakingOpinions = Util.null2String(wfmange.getIsTakingOpinions());
        String IsHandleForward = Util.null2String(wfmange.getIsHandleForward());
        String IsBeForward = Util.null2String(wfmange.getIsBeForward());
        String isformprint = Util.null2String(wfmange.getIsformprint());


        boolean canForwd = false;
        if (isremark_tmp.equals("1") || isremark_tmp.equals("9")) {
            if (("0".equals(IsFromWFRemark_T) && "1".equals(IsBeForwardTodo)) || "1".equals(IsFromWFRemark_T) && "1".equals(IsBeForwardAlready) || ("2".equals(IsFromWFRemark_T) && "1".equals(IsBeForward)))
                canForwd = true;
            if ((isremark_tmp.equals("1") && canForwd) || (isremark_tmp.equals("9") && IsPendingForward.equals("1"))) {
                canransmit = true;
            }
        }
        if (IsPendingForward.equals("1") && (!isremark_tmp.equals("2") && !isremark_tmp.equals("4")) && takisremark != -2) {
            canransmit = true;
        }

        if (IsAlreadyForward.equals("1") && takisremark == -2 && isremark_tmp.equals("0")) {
            canransmit = true;

        }
        if (!"3".equals(wfcurnodetype) && IsAlreadyForward.equals("1") && isremark_tmp.equals("2") && (preisremark == 0 || preisremark == 2 || preisremark == 4 || preisremark == 8 || preisremark == 9 || preisremark == 11 || (preisremark == 1 && takisremark == 2))) {
            canransmit = true;
        }
        if ("3".equals(wfcurnodetype) && IsSubmitForward.equals("1") && (isremark_tmp.equals("2") || isremark_tmp.equals("4")) && (preisremark == 0  || preisremark == 2 || preisremark == 4 || preisremark == 8 || preisremark == 9 || (preisremark == 1 && takisremark == 2))) {
            canransmit = true;
        }

	/*	  if(IsTakingOpinions.equals("1") && isremark_tmp.equals("0")){
        	cantakingOp = true;
    	}
		  if(IsHandleForward.equals("1")  && isremark_tmp.equals("0")){
        	canHandlFor = true;
    	}
*/
        if (handleforwardid < 0 && takisremark != 2 && preisremark == 1 && isremark_tmp.equals("2") && otherInfos.length > 5) {//是否是被转发 已办
            int Forwardid = 0;

            RecordSet.executeSql("select isremark,isreminded,preisremark,id,groupdetailid,nodeid from workflow_currentoperator where requestid=" + requestid + " and userid=" + userid_tmp + " and usertype=" + usertype_tmp + " order by isremark,id");
            while (RecordSet.next()) {
                Forwardid = Util.getIntValue(RecordSet.getString("id"));
            }
            String wfSQL = "select * from workflow_Forward where requestid=" + requestid + " and BeForwardid=" + Forwardid;
            RecordSet.executeSql(wfSQL);
            if (RecordSet.next()) {
                IsFromWFRemark_T = Util.null2String(RecordSet.getString("IsFromWFRemark"));     //待办提交后被转发人是否可提交意见
//IsSubmitedOpinion=Util.null2String(RecordSet.getString("IsSubmitedOpinion"));     //待办提交后被转发人是否可提交意见
                IsBeForwardTodo = Util.null2String(RecordSet.getString("IsBeForwardTodo"));    //待办可转发

//IsBeForwardSubmitAlready =Util.null2String(RecordSet.getString("IsBeForwardSubmitAlready"));    //允许已办被转发人可提交意见

                IsBeForwardAlready = Util.null2String(RecordSet.getString("IsBeForwardAlready"));        //已办被转发人可转发

//IsBeForwardSubmitNotaries =Util.null2String(RecordSet.getString("IsBeForwardSubmitNotaries"));    //允许办结被转发人可提交意见

                IsBeForward = Util.null2String(RecordSet.getString("IsBeForward"));            //办结被转发人是否可转发

            }
            if (("0".equals(IsFromWFRemark_T) && "1".equals(IsBeForwardTodo)) || "1".equals(IsFromWFRemark_T) && "1".equals(IsBeForwardAlready) || ("2".equals(IsFromWFRemark_T) && "1".equals(IsBeForward)))
                canForwd = true;
            if ((preisremark == 1 && canForwd)) {
                canransmit = true;
            }
        }
        /*
         * 转发功能补充，前面逻辑不改动，增加查看已办，办结事宜时，分页控件是否显示转发按钮
         */
        if (preisremark != 1 && !isremark_tmp.equals("1") && !isremark_tmp.equals("2") && otherInfos.length > 5) {
            String IsAreadyForward = Util.null2String(wfmange.getIsAlreadyForward());//允许已办事宜转发
            //String IsSubmitForward=Util.null2String(wfmange.getIsSubmitForward());//允许办结事宜转发
		/*	if(scope.equals("doing")&&IsTakingOpinions.equals("1")){
				cantakingOp = true;
			}else{
				cantakingOp = false;
			}
			if(scope.equals("doing")&&IsHandleForward.equals("1")){
				canHandlFor = true;
			}else{
				canHandlFor = false;
			}*/
            if ((scope.equals("done") && IsAreadyForward.equals("1") && !"3".equals(wfcurnodetype))
                    || IsSubmitForward.equals("1") && "3".equals(wfcurnodetype)
                    || (scope.equals("doing") && IsPendingForward.equals("1")) || canForwd || ("mine".equals(scope) && canransmit)) {
                canransmit = true;
            } else {
                canransmit = false;
            }
        }


        if (handleforwardid < 0 && takisremark != 2 && isremark_tmp.equals("1") && otherInfos.length > 5) {//是否是被转发
            //IsBeForwardTodo  //待办被转发人可转发
            //IsBeForwardAlready //已办被转发人可转发
            //IsBeForward //是否允许已办及办结事宜转发
			/*if(scope.equals("doing")&&IsTakingOpinions.equals("1")){
				cantakingOp = true;
			}else{
				cantakingOp = false;
			}
			if(scope.equals("doing")&&IsHandleForward.equals("1")){
				canHandlFor = true;
			}else{
				canHandlFor = false;
			}*/
            if (canForwd) {
                canransmit = true;
            } else {
                canransmit = false;
            }
        }
        //==============
        //新建流程、新建短信==========
        String sqlselectName = "select * from workflow_nodecustomrcmenu where wfid=" + workflowid_tmp + " and nodeid=" + nodeid_tmp;
        if (isremark_tmp.equals("0")) {
            RecordSet.executeSql("select nodeid from workflow_currentoperator c where c.requestid=" + requestid + " and c.userid in(" + userid_tmp + ") and c.usertype=" + usertype_tmp + " and c.isremark='" + isremark_tmp + "' ");
            String tmpnodeid = "";
            if (RecordSet.next()) {
                tmpnodeid = Util.null2String(RecordSet.getString("nodeid"));
            }
            sqlselectName = "select * from workflow_nodecustomrcmenu where wfid=" + workflowid_tmp + " and nodeid=" + tmpnodeid;

            if (!"".equals(tmpnodeid)) {
                RecordSet.executeSql(sqlselectName);
                if (RecordSet.next()) {
                    haswfrm = Util.null2String(RecordSet.getString("haswfrm"));
                    hassmsrm = Util.null2String(RecordSet.getString("hassmsrm"));
                }
            }
        }

        //是否拥有新建流程功能
        if ("1".equals(haswfrm)) {
            RequestCheckUser rcu = new RequestCheckUser();
            rcu.setUserid(Util.getIntValue(userid_tmp, 0));
            rcu.setWorkflowid(Util.getIntValue(workflowid_tmp));
            rcu.setLogintype(usertype_tmp);
            try {
                rcu.checkUser();
                int t_hasright = rcu.getHasright();
                if (t_hasright == 1) {
                    cannewflow = true;
                }
            } catch (Exception e) {
                cannewflow = false;
            }
        }
        //是否拥有发短信按钮
        RTXConfig rtxconfig = new RTXConfig();
        String temV = rtxconfig.getPorp(rtxconfig.CUR_SMS_SERVER_IS_VALID);
        boolean valid = false;
        if (temV != null && temV.equalsIgnoreCase("true")) {
            valid = true;
        } else {
            valid = false;
        }
        User user = getUser(Util.getIntValue(userid_tmp, 0));
        if (valid == true && "1".equals(hassmsrm) && HrmUserVarify.checkUserRight("CreateSMS:View", user)) {
            cannewmessage = true;
        }

        //表单日志
        String isModifyLog = "";
        RecordSet.executeSql("select t1.isShowModifyLog,t2.currentstatus from workflow_base t1, workflow_requestbase t2 where t1.id=t2.workflowid and t2.requestid=" + requestid);
        if (RecordSet.next()) {
            isModifyLog = RecordSet.getString("isShowModifyLog");
        }
        if ("1".equals(isModifyLog)) {
            canseelog = true;
        }
        if (ru.getOfsSetting().getIsuse() == 1 && Util.getIntValue(requestid) < 0) {
            canransmit = false;
            canprint = false;
            cannewflow = false;
            cannewmessage = false;
            canseelog = false;
        }
        //System.out.println("--534-canHandlFor---"+canHandlFor);
        //System.out.println("--534-cantakingOp---"+cantakingOp);
        if (isread)    //标记为已读
            showMarkReadBtn = "true";
        if (canransmit)    //转发
            showRansmitBtn = "true";
        if (canprint)    //打印
            showPrintBtn = "true";
        if (cannewflow)//新建流程
            showNewflowBtn = "false";
        if (cannewmessage)//新建短信
            showNewMessageBtn = "false";
        if (canseelog)    //表单日志
            showFormLogBtn = "true";

        /*if (Util.getIntValue(requestid) < 0) {
            showMarkReadBtn = "false";
        }*/

        if (!"1".equals(isformprint)) {
            showPrintBtn = "false";
        }

        result.add(showMarkReadBtn);
        result.add(showRansmitBtn);
        result.add(showPrintBtn);
        result.add(showNewflowBtn);
        result.add(showNewMessageBtn);
        result.add(showFormLogBtn);

        //增加督办菜单的权限
        result.addAll(RequestListBiz.getSuperviseBtns(userid, requestid, scope));

        String showAttentionBtn = new RequestAttentionBiz().showAttention(scope) ? "true" : "false";
        result.add(showAttentionBtn);

        return result;
    }


    /**
     * 代理流程收回菜单判断
     * add by lsj @2014-1-22
     *
     * @param
     * @param
     * @return
     */
    public List<String> getWFAgentBackOperation(String agentid, String outparaminfo) {
        List<String> res = new ArrayList<String>();
        String[] params = outparaminfo.split("_");
        String userid = params[0];
        String agentinfo = params[1];
        if ("0".equals(agentinfo)) {
            res.add("true");

        } else if ("1".equals(agentinfo)) {
            User user = getUser(Util.getIntValue(userid, 0));
            boolean hasRights = HrmUserVarify.checkUserRight("WorkflowAgent:All", user);
            res.add(hasRights + "");
        }
        return res;
    }

    /**
     * 得到当前节点的类型
     *
     * @param requestid
     * @return 当前节点的类型
     */
    public String getCurrentType(String requestid) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        rs.executeSql("SELECT * FROM workflow_Requestbase WHERE requestid  = '" + requestid + "'");
        if (rs.next()) {
            returnStr = rs.getString("currentnodetype");
        }
        return returnStr;
    }

    /**
     * 代理流程收回check判断是否显示
     * add by lsj @2014-1-22
     *
     * @param
     * @param
     * @return
     */
    public String getWFAgentBackOperationCheckBox(String outparaminfo) {
        String rs = "false";
        String[] params = outparaminfo.split("_");
        String userid = params[0];
        String agentinfo = params[1];
        if ("0".equals(agentinfo)) {
            rs = "true";

        } else if ("1".equals(agentinfo)) {
            User user = getUser(Integer.parseInt(userid));
            boolean hasRights = HrmUserVarify.checkUserRight("WorkflowAgent:All", user);
            rs = hasRights + "";
        }
        return rs;
    }

    /**
     * 督办标记已读
     *
     * @param requestname 流程标题
     * @param para2       流程ID+，+显示类型+，+用户语言
     * @return "true" or "false"
     */
    public List<String> getWfUrgerNewOperation(String requestname, String para2) {
        RecordSet rs = new RecordSet();
        List<String> rsdata = new ArrayList<String>();
        String[] tempStr = Util.splitString(para2, "+");
        int requestid = Util.getIntValue(Util.null2String(tempStr[0]));
        int userid = Util.getIntValue(Util.null2String(tempStr[2]), 0);
        int usertype = Util.getIntValue(Util.null2String(tempStr[3]), 0);
        String isnew = "false";

        String newsql = "select b.lastoperatedate,b.lastoperatetime,b.creater,b.lastoperator, b.lastoperatortype from workflow_requestbase b where b.requestid = "
                + requestid;
        String requestdate = "";
        String viewdate = "";
        rs.execute(newsql);
        if (rs.next()) {
            if (userid != rs.getInt(4) || usertype != rs.getInt(5)) {
                if ("".equals(Util.null2String(rs.getString(1))) || "".equals(Util.null2String(rs.getString(2)))) {
                    if (rs.getInt(3) != userid) {
                        newsql = "select w.viewdate from workflow_requestviewlog w where w.viewer="
                                + userid + " and id=" + requestid;
                        rs.execute(newsql);
                        if (!rs.next()) {
                            isnew = "true";
                        }
                    }
                } else {
                    requestdate = rs.getString(1) + rs.getString(2);
                    newsql = "select max(w.viewdate) as viewdate,max(w.viewtime) as viewtime from workflow_requestviewlog w where w.viewer="
                            + userid + " and id=" + requestid + " group by id";
                    rs.execute(newsql);
                    if (rs.next()) {
                        viewdate = rs.getString(1) + rs.getString(2);
                        if (viewdate.compareTo(requestdate) < 0) {
                            isnew = "true";
                        }
                    } else {
                        isnew = "true";
                    }
                }
            }
        }
        rsdata.add(isnew);
        return rsdata;
    }

    /**
     * 督办标记已读(checkbox)
     *
     * @param
     * @param para2 流程ID+，+显示类型+，+用户语言
     * @return "true" or "false"
     */
    public String getWfUrgerNewOperationCheckBox(String para2) {
        RecordSet rs = new RecordSet();
        String[] tempStr = Util.splitString(para2, "+");
        int requestid = Util.getIntValue(Util.null2String(tempStr[0]));
        int userid = Util.getIntValue(Util.null2String(tempStr[2]), 0);
        int usertype = Util.getIntValue(Util.null2String(tempStr[3]), 0);
        String isnew = "false";

        String newsql = "select b.lastoperatedate,b.lastoperatetime,b.creater,b.lastoperator, b.lastoperatortype from workflow_requestbase b where b.requestid = "
                + requestid;
        String requestdate = "";
        String viewdate = "";
        rs.execute(newsql);
        if (rs.next()) {
            if (userid != rs.getInt(4) || usertype != rs.getInt(5)) {
                if ("".equals(Util.null2String(rs.getString(1))) || "".equals(Util.null2String(rs.getString(2)))) {
                    if (rs.getInt(3) != userid) {
                        newsql = "select w.viewdate from workflow_requestviewlog w where w.viewer="
                                + userid + " and id=" + requestid;
                        rs.execute(newsql);
                        if (!rs.next()) {
                            isnew = "true";
                        }
                    }
                } else {
                    requestdate = rs.getString(1) + rs.getString(2);
                    newsql = "select max(w.viewdate) as viewdate,max(w.viewtime) as viewtime from workflow_requestviewlog w where w.viewer="
                            + userid + " and id=" + requestid + " group by id";
                    rs.execute(newsql);
                    if (rs.next()) {
                        viewdate = rs.getString(1) + rs.getString(2);
                        if (viewdate.compareTo(requestdate) < 0) {
                            isnew = "true";
                        }
                    } else {
                        isnew = "true";
                    }
                }
            }
        }
        return isnew;
    }


    private User getUser(int userid) {
        User user = new User();
        try {
            ResourceComInfo rc = new ResourceComInfo();
            DepartmentComInfo dc = new DepartmentComInfo();

            user.setUid(userid);
            user.setLoginid(rc.getLoginID("" + userid));
            user.setFirstname(rc.getFirstname("" + userid));
            user.setLastname(rc.getLastname("" + userid));
            user.setLogintype("1");
            // user.setAliasname(rc.getAssistantID(""+userid));
            // user.setTitle(rs.getString("title"));
            // user.setTitlelocation(rc.getLocationid(""+userid));
            user.setSex(rc.getSexs("" + userid));
            user.setLanguage(7);
            // user.setTelephone(rc);
            // user.setMobile(rc.getm);
            // user.setMobilecall(rs.getString("mobilecall"));
            user.setEmail(rc.getEmail("" + userid));
            // user.setCountryid();
            user.setLocationid(rc.getLocationid("" + userid));
            user.setResourcetype(rc.getResourcetype("" + userid));
            // user.setStartdate(rc.gets);
            // user.setEnddate(rc.gete);
            // user.setContractdate(rc.getc);
            user.setJobtitle(rc.getJobTitle("" + userid));
            // user.setJobgroup(rs.getString("jobgroup"));
            // user.setJobactivity(rs.getString("jobactivity"));
            user.setJoblevel(rc.getJoblevel("" + userid));
            user.setSeclevel(rc.getSeclevel("" + userid));
            user.setUserDepartment(Util.getIntValue(rc.getDepartmentID("" + userid), 0));
            user.setUserSubCompany1(Util.getIntValue(dc.getSubcompanyid1(user.getUserDepartment() + ""), 0));
            // user.setUserSubCompany2(Util.getIntValue(rs.getString("subcompanyid2"),0));
            // user.setUserSubCompany3(Util.getIntValue(rs.getString("subcompanyid3"),0));
            // user.setUserSubCompany4(Util.getIntValue(rs.getString("subcompanyid4"),0));
            user.setManagerid(rc.getManagerID("" + userid));
            user.setAssistantid(rc.getAssistantID("" + userid));
            // user.setPurchaselimit(rc.getPropValue(""+userid));
            // user.setCurrencyid(rc.getc);
            // user.setLastlogindate(rc.get);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }

    /**
     * 判断当前请求当前节点是否有必填项没有填写
     *
     * @param requestid
     * @return
     */
    public boolean haveMustInput(int requestid) {
        boolean flag = false;
        String sql = "select currentnodeid,workflowid from workflow_requestbase where requestid=" + requestid;
        ////System.out.println("查询当前流程节点:"+sql);
        RecordSet rs = new RecordSet();
        RecordSet rs1 = new RecordSet();
        rs.executeSql(sql);
        if (rs.next()) {
            int nodeid = rs.getInt(1);
            int workflowid = rs.getInt(2);
            sql = "select ismode,showdes,printdes,toexcel from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid;
            //System.out.println("查询当前流程模式:"+sql);
            rs.executeSql(sql);
            if (rs.next()) {
                String ismode = Util.null2String(rs.getString("ismode"));
                int showdes = Util.getIntValue(Util.null2String(rs.getString("showdes")), 0);
                int modeid = 0;
                int isbill = 0;
                int formid = 0;
                String sqlwhere = "";
                String viewtablename = "workflow_nodeform";
                sql = "select formid,isbill from workflow_base where id=" + workflowid;
                //System.out.println("查询当前流程formid:"+sql);
                rs.executeSql(sql);
                if (rs.next()) {
                    formid = rs.getInt(1);
                    isbill = rs.getInt(2);
                }
                if (ismode.equals("1") && showdes != 1) {
                    sql = "select id from workflow_nodemode where isprint='0' and workflowid=" + workflowid + " and nodeid=" + nodeid;
                    rs.executeSql(sql);
                    if (rs.next()) {
                        modeid = rs.getInt("id");
                    } else {
                        sql = "select id from workflow_formmode where isprint='0' and formid=" + formid + " and isbill=" + isbill;
                        rs.executeSql(sql);
                        if (rs.next()) {
                            modeid = rs.getInt("id");
                        }
                    }
                }
                //模板模式
                if (modeid > 0) {
                    viewtablename = "workflow_modeview";
                }
                //System.out.println("formid:"+formid+",isbill="+isbill);
                //表单
                if (isbill == 0) {
                    //主字段
                    sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_formdict ff where nf.fieldid=ff.id and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 ";
                    rs.executeSql(sql);
                    while (rs.next()) {
                        String fielddbtype = Util.null2String(rs.getString(2));
                        if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                            if (sqlwhere.equals(""))
                                sqlwhere = rs.getString(1) + " is null";
                            else
                                sqlwhere += " or " + rs.getString(1) + " is null";
                        } else {
                            if (rs.getDBType().equals("sqlserver")) {
                                String _t = " convert(varchar," + rs.getString(1) + ") ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                else
                                    sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                            } else {
                                if (sqlwhere.equals("")) {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere = rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0";
                                        } else
                                            sqlwhere = rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0";
                                    } else {
                                        sqlwhere = rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                } else {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere += " or (" + rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0)";
                                        } else
                                            sqlwhere += " or (" + rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0)";
                                    } else {
                                        sqlwhere += " or " + rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                }
                            }
                        }
                    }
                    if (!sqlwhere.equals("")) {
                        sql = "select requestid from workflow_form where requestid=" + requestid + " and (" + sqlwhere + ")";
                        rs.executeSql(sql);
                        if (rs.next()) {
                            return true;
                        }
                    }
                    //明细字段
                    sqlwhere = "";
                    sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_formdictdetail ff where nf.fieldid=ff.id and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 ";
                    //System.out.println("查询明细字段"+sql);
                    rs.executeSql(sql);
                    while (rs.next()) {
                        String fielddbtype = Util.null2String(rs.getString(2));
                        if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                            if (sqlwhere.equals(""))
                                sqlwhere = rs.getString(1) + " is null";
                            else
                                sqlwhere += " or " + rs.getString(1) + " is null";
                        } else {
                            if (rs.getDBType().equals("sqlserver")) {
                                String _t = " convert(varchar," + rs.getString(1) + ") ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                else
                                    sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                            } else {
                                if (sqlwhere.equals("")) {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere = rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0";
                                        } else
                                            sqlwhere = rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0";
                                    } else {
                                        sqlwhere = rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                } else {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere += " or (" + rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0)";
                                        } else
                                            sqlwhere += " or (" + rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0)";
                                    } else {
                                        sqlwhere += " or " + rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                }
                            }
                        }
                    }
                    if (!sqlwhere.equals("")) {
                        sql = "select requestid from workflow_formdetail where requestid=" + requestid + " and (" + sqlwhere + ")";
                        //System.out.println("284查询是否可以进行批量提交"+sql);
                        rs.executeSql(sql);
                        if (rs.next()) {
                            return true;
                        }
                    }
                } else if (isbill == 1) {   //单据
                    //主字段
                    String maintablename = "";
                    String detailkey = "";
                    sql = "select tablename,detailkeyfield from workflow_bill where id=" + formid;
                    //System.out.println("295:"+sql);
                    rs.executeSql(sql);
                    if (rs.next()) {
                        maintablename = rs.getString(1);
                        detailkey = Util.null2String(rs.getString(2));
                    }
                    if (detailkey.equals("")) detailkey = "mainid";
                    sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_billfield ff where (ff.viewtype is null or ff.viewtype=0) and nf.fieldid=ff.id and ff.billid=" + formid + " and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 ";
                    //System.out.println("303:"+sql);
                    rs.executeSql(sql);
                    while (rs.next()) {
                        String fielddbtype = Util.null2String(rs.getString(2));
                        if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                            if (sqlwhere.equals(""))
                                sqlwhere = rs.getString(1) + " is null";
                            else
                                sqlwhere += " or " + rs.getString(1) + " is null";
                        } else {
                            if (rs.getDBType().equals("sqlserver")) {
                                String _t = " convert(varchar," + rs.getString(1) + ") ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                else
                                    sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                            } else {
                                if (sqlwhere.equals("")) {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere = rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0";
                                        } else
                                            sqlwhere = rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0";
                                    } else {
                                        sqlwhere = rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                } else {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere += " or (" + rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0)";
                                        } else
                                            sqlwhere += " or (" + rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0)";
                                    } else {
                                        sqlwhere += " or " + rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                }
                            }
                        }
                    }
                    if (!sqlwhere.equals("")) {
                        sql = "select requestid from " + maintablename + " where requestid=" + requestid + " and (" + sqlwhere + ")";
                        rs.executeSql(sql);
                        if (rs.next()) {
                            return true;
                        }
                    }
                    //明细字段
                    sql = "select tablename from workflow_billdetailtable where billid=" + formid;
                    //System.out.println("336:"+sql);
                    rs1.executeSql(sql);
                    while (rs1.next()) {
                        String detailtablename = rs1.getString(1);
                        sqlwhere = "";
                        sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_billfield ff where ff.viewtype=1 and nf.fieldid=ff.id and ff.billid=" + formid + " and ff.detailtable='" + detailtablename + "' and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 order by ff.detailtable ";
                        //System.out.println("342:"+sql);
                        rs.executeSql(sql);
                        while (rs.next()) {
                            String fielddbtype = Util.null2String(rs.getString(2));
                            if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                                if (sqlwhere.equals(""))
                                    sqlwhere = detailtablename + "." + rs.getString(1) + " is null";
                                else
                                    sqlwhere += " or " + detailtablename + "." + rs.getString(1) + " is null";
                            } else {
                                if (rs.getDBType().equals("sqlserver")) {
                                    String _t = " convert(varchar," + detailtablename + "." + rs.getString(1) + ") ";
                                    if (sqlwhere.equals(""))
                                        sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                    else
                                        sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                } else {
                                    String _t = " " + detailtablename + "." + rs.getString(1) + " ";
                                    if (sqlwhere.equals("")) {
                                        if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                            if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                                sqlwhere = _t + " is null or getlength(" + _t + ") = 0";
                                            } else
                                                sqlwhere = _t + " is null or dbms_lob.getlength(" + _t + ") = 0";
                                        } else {
                                            sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                        }
                                    } else {
                                        if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                            if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                                sqlwhere += " or (" + _t + " is null or getlength(" + _t + ") = 0)";
                                            } else
                                                sqlwhere += " or (" + _t + " is null or dbms_lob.getlength(" + _t + ") = 0)";
                                        } else {
                                            sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                        }
                                    }
                                }
                            }
                        }
                        if (!sqlwhere.equals("")) {
                            sql = "select " + maintablename + ".requestid from " + maintablename + "," + detailtablename + " where " + maintablename + ".id=" + detailtablename + "." + detailkey + " and " + maintablename + ".requestid=" + requestid + " and (" + sqlwhere + ")";
                            //System.out.println("366:"+sql);
                            rs.executeSql(sql);
                            if (rs.next()) {
                                return true;
                            }
                        }
                    }
                    if (rs1.getCounts() < 1) {
                        sql = "select detailtablename from workflow_bill where id=" + formid;
                        //////System.out.println("375:"+sql);
                        rs.executeSql(sql);
                        if (rs.next()) {
                            String detailtablename = rs.getString(1);
                            sqlwhere = "";
                            sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf , workflow_billfield ff where ff.viewtype=1 and nf.fieldid=ff.id and ff.billid=" + formid + " and ff.detailtable='" + detailtablename + "' and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 order by ff.detailtable ";
                            //System.out.println("380:"+sql);
                            rs.executeSql(sql);
                            while (rs.next()) {
                                String fielddbtype = Util.null2String(rs.getString(2));
                                if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                                    if (sqlwhere.equals(""))
                                        sqlwhere = detailtablename + "." + rs.getString(1) + " is null";
                                    else
                                        sqlwhere += " or " + detailtablename + "." + rs.getString(1) + " is null";
                                } else {
                                    if (rs.getDBType().equals("sqlserver")) {
                                        String _t = " convert(varchar," + detailtablename + "." + rs.getString(1) + ") ";
                                        if (sqlwhere.equals(""))
                                            sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                        else
                                            sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                    } else {
                                        String _t = " " + detailtablename + "." + rs.getString(1) + " ";
                                        if (sqlwhere.equals("")) {
                                            if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                                if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                                    sqlwhere = _t + " is null or getlength(" + _t + ") = 0";
                                                } else
                                                    sqlwhere = _t + " is null or dbms_lob.getlength(" + _t + ") = 0";
                                            } else {
                                                sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                            }
                                        } else {
                                            if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                                if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                                    sqlwhere += " or (" + _t + " is null or getlength(" + _t + ") = 0)";
                                                } else
                                                    sqlwhere += " or (" + _t + " is null or dbms_lob.getlength(" + _t + ") = 0)";
                                            } else {
                                                sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                            }
                                        }
                                    }
                                }
                            }
                            if (!sqlwhere.equals("")) {
                                sql = "select " + maintablename + ".requestid from " + maintablename + "," + detailtablename + " where " + maintablename + ".id=" + detailtablename + "." + detailkey + " and " + maintablename + ".requestid=" + requestid + " and (" + sqlwhere + ")";
                                //System.out.println("400查询是否可以进行批量提交"+sql);
                                rs.executeSql(sql);
                                if (rs.next()) {
                                    return true;
                                }
                            }
                        }
                    }
                }
            }
        }
        return flag;
    }

    /**
     * 重写，加上当前节点id
     * 判断当前请求当前节点是否有必填项没有填写
     *
     * @param requestid
     * @param nodeid
     * @return
     */
    public boolean haveMustInput(int requestid, int nodeid) {
        boolean flag = false;
        String sql = "select currentnodeid,workflowid from workflow_requestbase where requestid=" + requestid;
        ////System.out.println("查询当前流程节点:"+sql);
        RecordSet rs = new RecordSet();
        RecordSet rs1 = new RecordSet();
        rs.executeSql(sql);
        if (rs.next()) {
            //int nodeid = rs.getInt(1);
            int workflowid = rs.getInt(2);
            sql = "select ismode,showdes,printdes,toexcel from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid;
            //System.out.println("查询当前流程模式:"+sql);
            rs.executeSql(sql);
            if (rs.next()) {
                String ismode = Util.null2String(rs.getString("ismode"));
                int showdes = Util.getIntValue(Util.null2String(rs.getString("showdes")), 0);
                int modeid = 0;
                int isbill = 0;
                int formid = 0;
                String sqlwhere = "";
                String viewtablename = "workflow_nodeform";
                sql = "select formid,isbill from workflow_base where id=" + workflowid;
                //System.out.println("查询当前流程formid:"+sql);
                rs.executeSql(sql);
                if (rs.next()) {
                    formid = rs.getInt(1);
                    isbill = rs.getInt(2);
                }
                if (ismode.equals("1") && showdes != 1) {
                    sql = "select id from workflow_nodemode where isprint='0' and workflowid=" + workflowid + " and nodeid=" + nodeid;
                    rs.executeSql(sql);
                    if (rs.next()) {
                        modeid = rs.getInt("id");
                    } else {
                        sql = "select id from workflow_formmode where isprint='0' and formid=" + formid + " and isbill=" + isbill;
                        rs.executeSql(sql);
                        if (rs.next()) {
                            modeid = rs.getInt("id");
                        }
                    }
                }
                //模板模式
                if (modeid > 0) {
                    viewtablename = "workflow_modeview";
                }
                //System.out.println("formid:"+formid+",isbill="+isbill);
                //表单
                if (isbill == 0) {
                    //主字段
                    sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_formdict ff where nf.fieldid=ff.id and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 ";
                    rs.executeSql(sql);
                    while (rs.next()) {
                        String fielddbtype = Util.null2String(rs.getString(2));
                        if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                            if (sqlwhere.equals(""))
                                sqlwhere = rs.getString(1) + " is null";
                            else
                                sqlwhere += " or " + rs.getString(1) + " is null";
                        } else {
                            if (rs.getDBType().equals("sqlserver")) {
                                String _t = " convert(varchar," + rs.getString(1) + ") ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                else
                                    sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                            } else {
                                if (sqlwhere.equals("")) {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere = rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0";
                                        } else
                                            sqlwhere = rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0";
                                    } else {
                                        sqlwhere = rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                } else {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere += " or (" + rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0)";

                                        } else

                                            sqlwhere += " or (" + rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0)";
                                    } else {
                                        sqlwhere += " or " + rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                }
                            }
                        }
                    }
                    if (!sqlwhere.equals("")) {
                        sql = "select requestid from workflow_form where requestid=" + requestid + " and (" + sqlwhere + ")";
                        rs.executeSql(sql);
                        if (rs.next()) {
                            return true;
                        }
                    }
                    //明细字段
                    sqlwhere = "";
                    sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_formdictdetail ff where nf.fieldid=ff.id and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 ";
                    //System.out.println("查询明细字段"+sql);
                    rs.executeSql(sql);
                    while (rs.next()) {
                        String fielddbtype = Util.null2String(rs.getString(2));
                        if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                            if (sqlwhere.equals(""))
                                sqlwhere = rs.getString(1) + " is null";
                            else
                                sqlwhere += " or " + rs.getString(1) + " is null";
                        } else {
                            if (rs.getDBType().equals("sqlserver")) {
                                String _t = " convert(varchar," + rs.getString(1) + ") ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                else
                                    sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                            } else {
                                if (sqlwhere.equals("")) {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
                                        if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())) {
                                            sqlwhere = rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0";
                                        } else
                                            sqlwhere = rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0";
                                    } else {
                                        sqlwhere = rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                } else {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
										if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
											sqlwhere += " or (" + rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0)";
										}else

										sqlwhere += " or (" + rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0)";
                                    } else {
                                        sqlwhere += " or " + rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                }
                            }
                        }
                    }
                    if (!sqlwhere.equals("")) {
                        sql = "select requestid from workflow_formdetail where requestid=" + requestid + " and (" + sqlwhere + ")";
                        //System.out.println("284查询是否可以进行批量提交"+sql);
                        rs.executeSql(sql);
                        if (rs.next()) {
                            return true;
                        }
                    }
                } else if (isbill == 1) {   //单据
                    //主字段
                    String maintablename = "";
                    String detailkey = "";
                    sql = "select tablename,detailkeyfield from workflow_bill where id=" + formid;
                    //System.out.println("295:"+sql);
                    rs.executeSql(sql);
                    if (rs.next()) {
                        maintablename = rs.getString(1);
                        detailkey = Util.null2String(rs.getString(2));
                    }
                    if (detailkey.equals("")) detailkey = "mainid";
                    sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_billfield ff where (ff.viewtype is null or ff.viewtype=0) and nf.fieldid=ff.id and ff.billid=" + formid + " and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 ";
                    //System.out.println("303:"+sql);
                    rs.executeSql(sql);
                    while (rs.next()) {
                        String fielddbtype = Util.null2String(rs.getString(2));
                        if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                            if (sqlwhere.equals(""))
                                sqlwhere = rs.getString(1) + " is null";
                            else
                                sqlwhere += " or " + rs.getString(1) + " is null";
                        } else {
                            if (rs.getDBType().equals("sqlserver")) {
                                String _t = " convert(varchar," + rs.getString(1) + ") ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                else
                                    sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                            } else {
                                if (sqlwhere.equals("")) {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
										if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
											sqlwhere = rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0";
										}else
										sqlwhere = rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0";
                                    } else {
                                        sqlwhere = rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                } else {
                                    if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
										if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
											sqlwhere += " or (" + rs.getString(1) + " is null or getlength(" + rs.getString(1) + ") = 0)";
										}else

										sqlwhere += " or (" + rs.getString(1) + " is null or dbms_lob.getlength(" + rs.getString(1) + ") = 0)";
                                    } else {
                                        sqlwhere += " or " + rs.getString(1) + " is null or " + rs.getString(1) + "='' or " + rs.getString(1) + "=' '";
                                    }
                                }
                            }
                        }
                    }
                    if (!sqlwhere.equals("")) {
                        sql = "select requestid from " + maintablename + " where requestid=" + requestid + " and (" + sqlwhere + ")";
                        rs.executeSql(sql);
                        if (rs.next()) {
                            return true;
                        }
                    }
                    //明细字段
                    sql = "select tablename from workflow_billdetailtable where billid=" + formid;
                    //System.out.println("336:"+sql);
                    rs1.executeSql(sql);
                    while (rs1.next()) {
                        String detailtablename = rs1.getString(1);
                        sqlwhere = "";
                        sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf ,workflow_billfield ff where ff.viewtype=1 and nf.fieldid=ff.id and ff.billid=" + formid + " and ff.detailtable='" + detailtablename + "' and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 order by ff.detailtable ";
                        //System.out.println("342:"+sql);
                        rs.executeSql(sql);
                        while (rs.next()) {
                            String fielddbtype = Util.null2String(rs.getString(2));
                            if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                                String _t = " " + detailtablename + "." + rs.getString(1) + " ";
                                if (sqlwhere.equals(""))
                                    sqlwhere = _t + " is null";
                                else
                                    sqlwhere += " or " + _t + " is null";
                            } else {
                                if (rs.getDBType().equals("sqlserver")) {
                                    String _t = " convert(varchar," + detailtablename + "." + rs.getString(1) + ") ";
                                    if (sqlwhere.equals(""))
                                        sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                    else
                                        sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                } else {
                                    String _t = " " + detailtablename + "." + rs.getString(1) + " ";
                                    if (sqlwhere.equals("")) {
                                        if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
											if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
												sqlwhere = _t + " is null or getlength(" + _t + ") = 0";
											}else
												sqlwhere = _t + " is null or dbms_lob.getlength(" + _t + ") = 0";
                                        } else {
                                            sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                        }
                                    } else {
                                        if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
											if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
												sqlwhere += " or (" + _t + " is null or getlength(" + _t + ") = 0)";
											}else
												sqlwhere += " or (" + _t + " is null or dbms_lob.getlength(" + _t + ") = 0)";
                                        } else {
                                            sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                        }
                                    }
                                }
                            }
                        }
                        if (!sqlwhere.equals("")) {
                            sql = "select " + maintablename + ".requestid from " + maintablename + "," + detailtablename + " where " + maintablename + ".id=" + detailtablename + "." + detailkey + " and " + maintablename + ".requestid=" + requestid + " and (" + sqlwhere + ")";
                            //System.out.println("366:"+sql);
                            rs.executeSql(sql);
                            if (rs.next()) {
                                return true;
                            }
                        }
                    }
                    if (rs1.getCounts() < 1) {
                        sql = "select detailtablename from workflow_bill where id=" + formid;
                        //////System.out.println("375:"+sql);
                        rs.executeSql(sql);
                        if (rs.next()) {
                            String detailtablename = rs.getString(1);
                            sqlwhere = "";
                            sql = "select ff.fieldname,ff.fielddbtype from " + viewtablename + " nf , workflow_billfield ff where ff.viewtype=1 and nf.fieldid=ff.id and ff.billid=" + formid + " and ff.detailtable='" + detailtablename + "' and nf.nodeid=" + nodeid + " and nf.ismandatory='1' and nf.fieldid>0 order by ff.detailtable ";
                            //System.out.println("380:"+sql);
                            rs.executeSql(sql);
                            while (rs.next()) {
                                String fielddbtype = Util.null2String(rs.getString(2));
                                if (fielddbtype.toLowerCase().indexOf("int") > -1 || fielddbtype.toLowerCase().indexOf("float") > -1 || fielddbtype.toLowerCase().indexOf("number") > -1 || fielddbtype.toLowerCase().indexOf("decimal") > -1) {
                                    String _t = " " + detailtablename + "." + rs.getString(1) + " ";
                                    if (sqlwhere.equals(""))
                                        sqlwhere = _t + " is null";
                                    else
                                        sqlwhere += " or " + _t + " is null";
                                } else {
                                    if (rs.getDBType().equals("sqlserver")) {
                                        String _t = " convert(varchar," + detailtablename + "." + rs.getString(1) + ") ";
                                        if (sqlwhere.equals(""))
                                            sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                        else
                                            sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                    } else {
                                        String _t = " " + detailtablename + "." + rs.getString(1) + " ";
                                        if (sqlwhere.equals("")) {
                                            if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
												if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
													sqlwhere = _t + " is null or getlength(" + _t + ") = 0";
												}else
												sqlwhere = _t + " is null or dbms_lob.getlength(" + _t + ") = 0";
                                            } else {
                                                sqlwhere = _t + " is null or " + _t + "='' or " + _t + "=' '";
                                            }
                                        } else {
                                            if (fielddbtype.toLowerCase().indexOf("clob") > -1) {
												if ("jc".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype()) || "gs".equalsIgnoreCase(ConnectionPool.getInstance().getOrgindbtype())){
													sqlwhere += " or (" + _t + " is null or getlength(" + _t + ") = 0)";

												}else

												sqlwhere += " or (" + _t + " is null or dbms_lob.getlength(" + _t + ") = 0)";
                                            } else {
                                                sqlwhere += " or " + _t + " is null or " + _t + "='' or " + _t + "=' '";
                                            }
                                        }
                                    }
                                }
                            }
                            if (!sqlwhere.equals("")) {
                                sql = "select " + maintablename + ".requestid from " + maintablename + "," + detailtablename + " where " + maintablename + ".id=" + detailtablename + "." + detailkey + " and " + maintablename + ".requestid=" + requestid + " and (" + sqlwhere + ")";
                                //System.out.println("400查询是否可以进行批量提交"+sql);
                                rs.executeSql(sql);
                                if (rs.next()) {
                                    return true;
                                }
                            }
                        }
                    }
                }
            }
        }
        return flag;
    }

    /**
     * 是否可以进行批量提交处理(EXT)
     *
     * @param workflowid 流程ID
     * @param isremark
     * @return true/false
     */
    public String getCanMultiSubmitExt(String workflowid, String isremark, String requestid) {
        String flag = "false";
        if (isremark.equals("0")) {
            if ("1".equals(wf.getMultiSubmit(workflowid))) flag = "true";
            if (flag.equals("true") && haveMustInput(Util.getIntValue(requestid))) {
                flag = "false";
            }
        }
        return flag;
    }

    /**
     * 流程标题显示样式
     *
     * @param requestname 流程标题
     * @param requestid   请求id
     * @return 流程标题显示样式
     */
    public String getWfOnlyNewLink(String requestname, String requestid) {
        return "<a href=javaScript:showModalDialog(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "\','','dialogTop:0;dialogWidth:'+(window.screen.availWidth)+'px;DialogHeight='+(window.screen.availHeight)+'px')>" + requestname + "</a>";
    }

    /**
     * 流程标题显示样式。只查看，不跳转到编辑页面
     *
     * @param requestname 流程标题
     * @param requestid   请求id
     * @return 流程标题显示样式
     */
    public String getWfOnlyViewLink(String requestname, String requestid) {
        return "<a href=javaScript:showModalDialog(\'/workflow/request/ViewRequestForwardSPA.jsp?isonlyview=1&requestid=" + requestid + "\','','dialogTop:0;dialogWidth:'+(window.screen.availWidth)+'px;DialogHeight='+(window.screen.availHeight)+'px')>" + requestname + "</a>";
    }

    /**
     * 流程标题显示样式（是否加图片等）
     *
     * @param requestname 流程标题
     * @param para2       流程ID+，+显示类型+，+是否超时
     * @return 流程标题显示样式
     */
    public String getWfNewLink(String requestname, String para2) {
        String returnStr = "";
        RecordSet rs = new RecordSet();

        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        int isbill = 0;
        int formid = 0;
        ////根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);

        }
        requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);

        boolean isprocessed = false;
        rs.executeSql("select isprocessed from workflow_currentoperator where ((isremark='0' and (isprocessed='0' or isprocessed='3' or isprocessed='2'))  or isremark='5') and requestid = " + requestid);
        if (rs.next()) {
            isprocessed = true;
        }
        if(isovertime == -8){//批量打印进来的
            isovertime = 0;
            isprocessed = false;
        }
        if (viewtype.equals("0")) {
            //新流程,粗体链接加图片
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                        + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this);>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDOut_wev8.gif\' align=absbottom></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                        + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this);>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDNew_wev8.gif\' align=absbottom></span>";
            }
        } else if (viewtype.equals("-1")) {
            //旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                        + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this);>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDOut_wev8.gif\' align=absbottom></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                        + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this);>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDNew2_wev8.gif\' align=absbottom></spna>";
            }
        } else {
            //旧流程,普通链接
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                        + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this);>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src='"+contextPath+"/images/BDOut_wev8.gif' align=absbottom></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                        + "\'," + requestid + ")>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'></span>";
            }
        }
        return returnStr;
    }

    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 流程标题
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid + 操作人类性isremark+用户id userID+ 代理人/被代理人ID + 代理/被代理类型
     * @return 流程标题显示样式
     */
    public String getWfNewLinkWithTitle(String requestname, String para2) {
        return this.getWfNewLinkWithTitle(requestname, para2, true);
    }

    public String getWfNewLinkWithTitle_AttentionTag(String requestname, String para2) {
        return this.getWfNewLinkWithTitle_AttentionTag(requestname, para2, true, true);
    }

    public String getWfNewLinkWithTitle(String requestname, String para2, boolean needFormat) {
        return this.getWfNewLinkWithTitle(requestname, para2, needFormat, "");
    }

    public String getWfNewLinkWithTitle_AttentionTag(String requestname, String para2, boolean needFormat) {
        return this.getWfNewLinkWithTitle(requestname, para2, needFormat, "", true);
    }

    public String getWfNewLinkWithTitle_AttentionTag(String requestname, String para2, boolean needFormat, boolean showAttentionTag) {
        return this.getWfNewLinkWithTitle(requestname, para2, needFormat, "", showAttentionTag);
    }

    public String getWfNewLinkWithTitle(String requestname, String para2, boolean needFormat, String urlParams) {
        return getWfNewLinkWithTitle(requestname, para2, needFormat, urlParams, false);
    }

    /**
     * 增加urlParams作为一些特殊场景自动携带一些参数：比如默认携带监控参数，主要用在后台的权限转移，其他入口进来urlParams默认是空  luosy 2019/1/17
     *
     * @param requestname
     * @param para2
     * @param needFormat
     * @param urlParams
     * @return
     */
    public String getWfNewLinkWithTitle(String requestname, String para2, boolean needFormat, String urlParams, boolean showAttentionTag) {
        String[] tempStr = null;
        boolean isNeedBack = false;
        if (para2.startsWith("S")) {
            String[] tempStr_tmp = Util.splitString(para2, "+");
            tempStr = Arrays.copyOfRange(tempStr_tmp, 9, tempStr_tmp.length);
            isNeedBack = isNeedBack(Arrays.copyOfRange(tempStr_tmp, 1, 8), Util.null2String(tempStr[2]));
        } else {
            tempStr = Util.splitString(para2, "+");
        }
        RecordSet rs = new RecordSet();
        String returnStr = "";
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String agentorbyagentid = "";
        String agenttype = "";
        String workflowtype = "";

        if (tempStr.length >= 10) {
            agenttype = Util.null2String(tempStr[9]);
        }
        String paramstr = "";
        if (tempStr.length >= 13 && Util.getIntValue(requestid) < 0) {
            String _userid = Util.null2String(tempStr[11]);
            String myrequest = Util.null2String(tempStr[12]);
            String creater = Util.null2String(tempStr[13]);
            String syscode = Util.null2String(tempStr[14]);
            workflowtype = Util.null2String(tempStr[15]);
        }
        paramstr = "&_workflowid=" + workflowid + "&_workflowtype=" + workflowtype;//方便异构系统使用
        String nodetitle = "";
        if (needFormat) {
            int isbill = 0;
            int formid = 0;
            // //根据后台设置在MAIL标题后加上流程中重要的字段
            rs.execute("select formid,isbill from workflow_base where id="
                    + workflowid);
            if (rs.next()) {
                formid = rs.getInt(1);
                isbill = rs.getInt(2);

            }
            requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);
        }

        int autoReloadWfListTime = RequestListBiz.getAutoReloadWfListTime(requestid,"0");
        boolean isprocessed = false;
        boolean canContinue = false;
        //新增是否显示[退回][代理]前缀显示
        boolean hasAgentTip = false;
        boolean hasRejectTip = false;
        rs.executeSql("select isprocessed, isremark, userid, nodeid,islasttimes,agenttype,isbereject,takisremark from workflow_currentoperator where requestid = "
                + requestid
                + " and userid=" + userID
                + " order by receivedate desc, receivetime desc");
        while (rs.next()) {
            String isbereject = Util.null2String(rs.getString("isbereject"));
            String islasttimes = Util.null2String(rs.getString("islasttimes"));
            String takisremark = Util.null2String(rs.getString("takisremark"));
            String agenttype1 = Util.null2String(rs.getString("agenttype"));
            String isremark_tmp = Util.null2String(rs.getString("isremark"));
            String isprocessed_tmp = Util.null2String(rs.getString("isprocessed"));
            String userid_tmp = Util.null2String(rs.getString("userid"));
            if ((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp.equals("3") || isprocessed_tmp.equals("2")))
                    || isremark_tmp.equals("5")) {
                isprocessed = true;
            }
            //判断是否显示【退回】【代理】标识
            if ("1".equals(islasttimes) && "2".equals(agenttype1) && (("0".equals(isremark) && !"-2".equals(takisremark)) || "1".equals(isremark) || "7".equals(isremark) || "8".equals(isremark) || "9".equals(isremark) || "11".equals(isremark))) {
                hasAgentTip = true;
            }
            if ("1".equals(islasttimes) && "1".equals(isbereject) && ("0".equals(isremark) && !"-2".equals(takisremark))) {
                hasRejectTip = true;
            }
            // 如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
            if (("8".equals(isremark) || "9".equals(isremark) || "1"
                    .equals(isremark))
                    && userID.equals(userid_tmp)
                    && "0".equals(isremark_tmp)
                    && canContinue == false) {
                int nodeid_tmp = Util.getIntValue(rs.getString("nodeid"), 0);
                if (nodeid_tmp != 0) {
                    isremark = isremark_tmp;
                    nodeid = "" + nodeid_tmp;
                    canContinue = true;
                }
            }
            if (isprocessed == true && canContinue == true) {
                break;
            }
        }
        // 改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs
                    .executeSql("select nodetitle from workflow_flownode where workflowid="
                            + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }
        if (hasAgentTip) {
            requestname = SystemEnv.getHtmlLabelName(390272, userlang) + requestname;
        }
        if (hasRejectTip) {
            requestname = SystemEnv.getHtmlLabelName(390271, userlang) + requestname;
        }

        String attentionTag = "";
        if (showAttentionTag)
            attentionTag = new RequestAttentionBiz().getAttentionTag(Util.getIntValue(requestid), Util.getIntValue(userID), 0, userlang);

        if (viewtype.equals("0")) {
            // 新流程,粗体链接加图片
            if (isprocessed) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>" + attentionTag;
            } else if ("1".equals(agenttype)) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19154, userlang)
                        + "'/></span>";
            } else {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19154, userlang)
                        + "'/></span>" + attentionTag;
            }
        } else if (viewtype.equals("-1") || isNeedBack) {
            // 旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessed) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>" + attentionTag;
            } else {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(20288, userlang)
                        + "'/></span>" + attentionTag;
            }
        } else {
            // 旧流程,普通链接
            if (isprocessed) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>" + attentionTag;
            } else {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ","+autoReloadWfListTime
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'></span>" + attentionTag;
            }
        }
        return returnStr;
    }

    public String getTitle4Mobile(String requestname, String para2) {
        RecordSet rs = new RecordSet();
        String returnStr = "";
        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String agentorbyagentid = "";
        String agenttype = "";
        String workflowtype = "";

        if (tempStr.length >= 10) {
            agenttype = Util.null2String(tempStr[9]);
        }
        String paramstr = "";
        if (tempStr.length >= 13 && Util.getIntValue(requestid) < 0) {
            String _userid = Util.null2String(tempStr[11]);
            String myrequest = Util.null2String(tempStr[12]);
            String creater = Util.null2String(tempStr[13]);
            String syscode = Util.null2String(tempStr[14]);
            workflowtype = Util.null2String(tempStr[15]);
        }
        paramstr = "&_workflowid=" + workflowid + "&_workflowtype=" + workflowtype;//方便异构系统使用
        String nodetitle = "";
        if (true) {
            int isbill = 0;
            int formid = 0;
            // //根据后台设置在MAIL标题后加上流程中重要的字段
            rs.execute("select formid,isbill from workflow_base where id="
                    + workflowid);
            if (rs.next()) {
                formid = rs.getInt(1);
                isbill = rs.getInt(2);

            }
            requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);
        }

        boolean isprocessed = false;
        boolean canContinue = false;
        if ("0".equals(isremark)) {
            isprocessed = false;
        } else if ("5".equals(isremark)) {
            isprocessed = true;
        } else {
            rs.executeSql("select isprocessed, isremark, userid, nodeid from workflow_currentoperator where requestid = "
                    + requestid
                    + " and userid=" + userID
                    + " order by receivedate desc, receivetime desc");
            while (rs.next()) {
                String isremark_tmp = Util.null2String(rs.getString("isremark"));
                String isprocessed_tmp = Util.null2String(rs
                        .getString("isprocessed"));
                String userid_tmp = Util.null2String(rs.getString("userid"));
                if ((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp
                        .equals("3") || isprocessed_tmp.equals("2")))
                        || isremark_tmp.equals("5")) {
                    isprocessed = true;
                }
                // 如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
                if (("8".equals(isremark) || "9".equals(isremark) || "1"
                        .equals(isremark))
                        && userID.equals(userid_tmp)
                        && "0".equals(isremark_tmp)
                        && canContinue == false) {
                    int nodeid_tmp = Util.getIntValue(rs.getString("nodeid"), 0);
                    if (nodeid_tmp != 0) {
                        isremark = isremark_tmp;
                        nodeid = "" + nodeid_tmp;
                        canContinue = true;
                    }
                }
                if (isprocessed == true && canContinue == true) {
                    break;
                }
            }
        }
        // 改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs
                    .executeSql("select nodetitle from workflow_flownode where workflowid="
                            + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }
        if (true)
            return requestname;
        if (viewtype.equals("0")) {
            // 新流程,粗体链接加图片
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>";
            } else if ("1".equals(agenttype)) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19154, userlang)
                        + "'/></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19154, userlang)
                        + "'/></span>";
            }
        } else if (viewtype.equals("-1")) {
            // 旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(20288, userlang)
                        + "'/></span>";
            }
        } else {
            // 旧流程,普通链接
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid + paramstr
                        + "&isovertime="
                        + isovertime
                        + "\',"
                        + requestid
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'></span>";
            }
        }
        return returnStr;
    }

    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 流程标题
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid + 操作人类性isremark+用户id userID+ 代理人/被代理人ID + 代理/被代理类型
     * @return 流程标题显示样式
     * @throws Exception
     */

    public String getWfNewLinkWithTitle2(String requestname, String para2) throws Exception {
        return getWfNewLinkWithTitle2(requestname, para2, 2);
    }

    public String getWfNewLinkWithTitle2(String requestname, String para2, int flag) throws Exception {
        return getWfNewLinkWithTitle2(requestname, para2, flag, true);
    }

    public String getWfNewLinkWithTitle2(String requestname, String para2, int flag, boolean needFormat) throws Exception {
        return getWfNewLinkWithTitle2(requestname, para2, flag, needFormat, false);
    }

    public String getWfNewLinkWithTitle_AttentionTag2(String requestname, String para2, int flag, boolean needFormat) throws Exception {
        return getWfNewLinkWithTitle2(requestname, para2, flag, needFormat, true);
    }

    public String getWfNewLinkWithTitle_AttentionTag2(String requestname, String para2, int flag, boolean needFormat, boolean showAttentionTag) throws Exception {
        return getWfNewLinkWithTitle2(requestname, para2, flag, needFormat, showAttentionTag);
    }

    public String getWfNewLinkWithTitle2(String requestname, String para2, int flag, boolean needFormat, boolean showAttentionTag)
            throws Exception {
        String[] tempStr = null;
        boolean isNeedBack = false;
        boolean isAgent0 = false;//根据scope告知transmethod，代理--交办他人流程列表f_weaver_belongto_userid应取被代理人id,agentFlag=0:交办他人流程列表，agentFlag=1代他人处理流程列表
        if(para2.indexOf("scope_") > -1 && para2.indexOf("_scope") > -1) {
            String scope = "";
            scope = para2.substring(para2.indexOf("scope_"), para2.indexOf("_scope"));
            isAgent0 = "agent0".equals(scope.replace("scope_", ""));
        }
        if (para2.startsWith("S")) {
            String[] tempStr_tmp = Util.splitString(para2, "+");
            tempStr = Arrays.copyOfRange(tempStr_tmp, 9, tempStr_tmp.length);
            isNeedBack = isNeedBack(Arrays.copyOfRange(tempStr_tmp, 1, 8), Util.null2String(tempStr[2]));
        } else {
            tempStr = Util.splitString(para2, "+");
        }
        DepartmentComInfo dc = new DepartmentComInfo();
        JobTitlesComInfo jc = new JobTitlesComInfo();
        String returnStr = "";
        RecordSet rs = new RecordSet();
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String userid3 = Util.null2String(tempStr[11]);
        String username = rc.getResourcename(userid3);
        String ownDepid = rc.getDepartmentID(userid3);
        String depName = dc.getDepartmentname(ownDepid);
        String jobName = jc.getJobTitlesname(rc.getJobTitle(userid3));
        String agentorbyagentid = Util.null2String(tempStr[8]);//前面的userid3已经取到11了
        String agenttype = "";
        String realUser = userID;
        if (userID != userid3) {
            realUser = userid3;
        }

        if (tempStr.length >= 10) {
            agenttype = Util.null2String(tempStr[9]);
        }

        /*String eid = "";
        String ebaseid = "";

        if (tempStr.length >= 13) {
            eid = Util.null2String(tempStr[12]);
        }
        if (tempStr.length >= 14) {
            ebaseid = Util.null2String(tempStr[13]);
        }*/

        String workflowtype = "";
        if (tempStr.length >= 16 && Util.getIntValue(requestid) < 0) {
            workflowtype = Util.null2String(tempStr[15]);
        }
        String paramstr = "&_workflowid=" + workflowid + "&_workflowtype=" + workflowtype;//方便异构系统使用

        String nodetitle = "";
        if (needFormat) {
            int isbill = 0;
            int formid = 0;
            // //根据后台设置在MAIL标题后加上流程中重要的字段
            rs.execute("select formid,isbill from workflow_base where id="
                    + workflowid);
            if (rs.next()) {
                formid = rs.getInt(1);
                isbill = rs.getInt(2);

            }
            requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);
        }

        //获取次账号id
        String userIDAll = userID;
        rs.executeQuery("select belongtoshow from HrmUserSetting where resourceId = " + userID);
        String belongtoshow = "";
        if (rs.next()) {
            belongtoshow = rs.getString("belongtoshow");
        }
        if ("1".equals(belongtoshow)) {
            String Belongtoids = getUser(Util.getIntValue(userID, 0)).getBelongtoids();
            if (!"".equals(Belongtoids))
                userIDAll = userIDAll + "," + Belongtoids;
        }

        int autoReloadWfListTime = RequestListBiz.getAutoReloadWfListTime(requestid,"0");
        boolean isprocessed = false;
        boolean canContinue = false;
        //新增是否显示[退回][代理]前缀显示
        boolean hasAgentTip = false;
        boolean hasRejectTip = false;
        rs.executeSql("select userid,isprocessed, isremark, userid, nodeid,islasttimes,agenttype,isbereject,takisremark from workflow_currentoperator where requestid = "
                + requestid
                + " and userid =" + realUser
                + " order by receivedate desc, receivetime desc");
        while (rs.next()) {
            String isbereject = Util.null2String(rs.getString("isbereject"));
            String islasttimes = Util.null2String(rs.getString("islasttimes"));
            String takisremark = Util.null2String(rs.getString("takisremark"));
            String agenttype1 = Util.null2String(rs.getString("agenttype"));
            String isremark_tmp = Util.null2String(rs.getString("isremark"));
            String userid_temp = Util.null2String(rs.getString("userid"));
            String isprocessed_tmp = Util.null2String(rs
                    .getString("isprocessed"));
            String userid_tmp = Util.null2String(rs.getString("userid"));
            if (((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp
                    .equals("3") || isprocessed_tmp.equals("2")))
                    || isremark_tmp.equals("5"))) {
                isprocessed = true;
            }
            //判断是否显示【退回】【代理】标识
            if ("1".equals(islasttimes) && "2".equals(agenttype1) && (("0".equals(isremark) && !"-2".equals(takisremark)) || "1".equals(isremark) || "7".equals(isremark) || "8".equals(isremark) || "9".equals(isremark) || "11".equals(isremark))) {
                hasAgentTip = true;
            }
            if ("1".equals(islasttimes) && "1".equals(isbereject) && ("0".equals(isremark) && !"-2".equals(takisremark))) {
                hasRejectTip = true;
            }
            // 如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
            if ((("8".equals(isremark) || "9".equals(isremark) || "1"
                    .equals(isremark))
                    && "0".equals(isremark_tmp)
                    && canContinue == false)) {
                int nodeid_tmp = Util.getIntValue(rs.getString("nodeid"), 0);
                if (nodeid_tmp != 0) {
                    isremark = isremark_tmp;
                    nodeid = "" + nodeid_tmp;
                    canContinue = true;
                }
            }
            if (isprocessed == true && canContinue == true) {
                break;
            }
        }
        // 改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs
                    .executeSql("select nodetitle from workflow_flownode where workflowid="
                            + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }
        if (hasAgentTip) {
            requestname = SystemEnv.getHtmlLabelName(390272, userlang) + requestname;
        }
        if (hasRejectTip) {
            requestname = SystemEnv.getHtmlLabelName(390271, userlang) + requestname;
        }
        /*if (!"".equals(eid) && !"".equals(ebaseid)) {
            String prefix = "<font class=font><span class='reqname'  onclick='javaScript:setWorkFlowRefresh(" + eid + "," + ebaseid + ")' >";
            String suffix = "</span></font>";
            requestname = prefix + requestname + suffix;
        }*/
        String attentionTag = "";
        if (showAttentionTag)
            attentionTag = new RequestAttentionBiz().getAttentionTag(Util.getIntValue(requestid), Util.getIntValue(userID), 0, userlang);
        if (flag == 2) {
            if (!userID.equals(userid3)) {
                rs
                        .executeSql("select * from workflow_currentoperator where userid="
                                + userid3
                                + " and workflowid="
                                + workflowid
                                + " and nodeid="
                                + nodeid
                                + " and requestid="
                                + requestid);

                if (rs.next() || Util.getIntValue(requestid) < 0) {//次账号的异构系统流程
                    if (viewtype.equals("0")) {
                        // 新流程,粗体链接加图片
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081, userlang)
                                    + "'/></span>" + attentionTag;
                        } else if ("1".equals(agenttype)) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ") >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19154, userlang)
                                    + "'/></span>" + attentionTag;
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19154, userlang)
                                    + "'/></span>" + attentionTag;
                        }
                    } else if (viewtype.equals("-1") || isNeedBack) {
                        // 旧流程,有新的提交信息未查看,普通链接加图片
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081, userlang)
                                    + "'/></span>" + attentionTag;
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(20288, userlang)
                                    + "'/></span>" + attentionTag;
                        }
                    } else {
                        // 旧流程,普通链接
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081, userlang)
                                    + "'/></span>" + attentionTag;
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ") >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid + "span\'></span>" + attentionTag;
                        }
                    }

                }
            } else {

                // System.out.println("--usrid2-1615-"+usrid2);

                if (viewtype.equals("0")) {
                    // 新流程,粗体链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154, userlang)
                                + "'/></span>" + attentionTag;
                    }
                } else if (viewtype.equals("-1") || isNeedBack) {
                    // 旧流程,有新的提交信息未查看,普通链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(20288, userlang)
                                + "'/></span>" + attentionTag;
                    }
                } else {
                    // 旧流程,普通链接
                    if (isprocessed) {

                        // System.out.println("--usrid2-1615-"+usrid2);

                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>" + attentionTag;

                    } else {

                        // System.out.println("--usrid2-1615-"+usrid2);

                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ") >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid + "span\'></span>" + attentionTag;

                    }
                }
            }
        }
        if (flag == 1) {
            if (!userID.equals(userid3)) {
                rs
                        .executeSql("select * from workflow_currentoperator where userid="
                                + userid3
                                + " and workflowid="
                                + workflowid
                                + " and nodeid="
                                + nodeid
                                + " and requestid="
                                + requestid);

                if (rs.next() || Util.getIntValue(requestid) < 0) {//次账号的异构系统流程
                    if (viewtype.equals("0")) {
                        // 新流程,粗体链接加图片
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this);  target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081, userlang)
                                    + "'/></span>" + attentionTag;
                        } else if ("1".equals(agenttype)) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ")  target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19154, userlang)
                                    + "'/></span>" + attentionTag;
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this);  target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19154, userlang)
                                    + "'/></span>" + attentionTag;
                        }
                    } else if (viewtype.equals("-1") || isNeedBack) {
                        // 旧流程,有新的提交信息未查看,普通链接加图片
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081, userlang)
                                    + "'/></span>" + attentionTag;
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(20288, userlang)
                                    + "'/></span>" + attentionTag;
                        }
                    } else {
                        // 旧流程,普通链接
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081, userlang)
                                    + "'/></span>" + attentionTag;
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + (isAgent0 ? agentorbyagentid : userid3)
                                    + "&f_weaver_belongto_usertype=0"
                                    + "\',"
                                    + requestid
                                    + ","+autoReloadWfListTime
                                    + ") target='_self'>"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid + "span\'></span>" + attentionTag;
                        }
                    }

                }
            } else {

                // System.out.println("--usrid2-1615-"+usrid2);

                if (viewtype.equals("0")) {
                    // 新流程,粗体链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); target='_self'>"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>";
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); target='_self'>"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154, userlang)
                                + "'/></span>" + attentionTag;
                    }
                } else if (viewtype.equals("-1") || isNeedBack) {
                    // 旧流程,有新的提交信息未查看,普通链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); target='_self' >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); target='_self'>"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(20288, userlang)
                                + "'/></span>" + attentionTag;
                    }
                } else {
                    // 旧流程,普通链接
                    if (isprocessed) {

                        // System.out.println("--usrid2-1615-"+usrid2);

                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); target='_self'>"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>" + attentionTag;

                    } else {

                        // System.out.println("--usrid2-1615-"+usrid2);

                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + (isAgent0 ? agentorbyagentid : userID)
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ","+autoReloadWfListTime
                                + ") target='_self'>"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid + "span\'></span>" + attentionTag;

                    }
                }
            }
        }
        //System.out.println("--returnStr-1956-" + returnStr);
        returnStr = STYLE_STR + returnStr + "</span>";
        return returnStr;

    }


    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 流程标题
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid + 操作人类性isremark+用户id userID+ 代理人/被代理人ID + 代理/被代理类型
     * @return 流程标题显示样式
     */

    public String getWfShareLinkWithTitle(String requestname, String para2) {
        return getWfShareLinkWithTitle(requestname, para2, false, null);
    }

    public String getWfShareLinkWithTitle(String requestname, String para2, String paraNeedBack) {
        return getWfShareLinkWithTitle(requestname, para2, false, paraNeedBack);
    }

    public String getWfShareLinkWithTitle(String requestname, String para2, boolean showAttentionTag, String paraNeedBack) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);

        boolean isNeedBack = false;
        if (paraNeedBack != null) {
            isNeedBack = isNeedBack(paraNeedBack, viewtype);
        }

        String agentorbyagentid = "";
        String agenttype = "";
        String currentid = "";


        if (tempStr.length >= 12) {
            agenttype = Util.null2String(tempStr[9]);
            currentid = Util.null2String(tempStr[11]);
        }

        String workflowtype = "";
        String paramstr = "";
        try {
            workflowtype = Util.null2String(tempStr[13]);
        } catch (Exception e) {

        }
        String creater = "";
        try {
            String _userid = Util.null2String(tempStr[12]);
            creater = Util.null2String(tempStr[14]);
            /*
            if(!_userid.equals(userID)&&Util.getIntValue(requestid,0)<0){
	            viewtype = "1";
            }
            */
        } catch (Exception e) {

        }
        paramstr = "&_workflowid=" + workflowid + "&_workflowtype=" + workflowtype;//方便异构系统使用
        String nodetitle = "";
        int isbill = 0;
        int formid = 0;
        ////根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);

        }
        requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);

        boolean isprocessed = false;
        boolean canContinue = false;
        //新增是否显示[退回][代理]前缀显示
        boolean hasAgentTip = false;
        boolean hasRejectTip = false;
        rs.executeSql("select isprocessed, isremark, userid, nodeid,islasttimes,agenttype,isbereject,takisremark from workflow_currentoperator where requestid = " + requestid + " and userid=" + userID + " order by receivedate desc, receivetime desc");
        while (rs.next()) {
            String isbereject = Util.null2String(rs.getString("isbereject"));
            String islasttimes = Util.null2String(rs.getString("islasttimes"));
            String takisremark = Util.null2String(rs.getString("takisremark"));
            String agenttype1 = Util.null2String(rs.getString("agenttype"));
            String isremark_tmp = Util.null2String(rs.getString("isremark"));
            String isprocessed_tmp = Util.null2String(rs.getString("isprocessed"));
            String userid_tmp = Util.null2String(rs.getString("userid"));
            if ((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp.equals("3") || isprocessed_tmp.equals("2"))) || isremark_tmp.equals("5")) {
                isprocessed = true;
            }
            //判断是否显示【退回】【代理】标识
            if ("1".equals(islasttimes) && "2".equals(agenttype1) && (("0".equals(isremark) && !"-2".equals(takisremark)) || "1".equals(isremark) || "7".equals(isremark) || "8".equals(isremark) || "9".equals(isremark) || "11".equals(isremark))) {
                hasAgentTip = true;
            }
            if ("1".equals(islasttimes) && "1".equals(isbereject) && ("0".equals(isremark) && !"-2".equals(takisremark))) {
                hasRejectTip = true;
            }
            //如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
            if (("8".equals(isremark) || "9".equals(isremark) || "1".equals(isremark)) && userID.equals(userid_tmp) && "0".equals(isremark_tmp) && canContinue == false) {
                int nodeid_tmp = Util.getIntValue(rs.getString("nodeid"), 0);
                if (nodeid_tmp != 0) {
                    isremark = isremark_tmp;
                    nodeid = "" + nodeid_tmp;
                    canContinue = true;
                }
            }
            if (isprocessed == true && canContinue == true) {
                break;
            }
        }
        //改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs.executeSql("select nodetitle from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }
        if (hasAgentTip) {
            requestname = SystemEnv.getHtmlLabelName(390272, userlang) + requestname;
        }
        if (hasRejectTip) {
            requestname = SystemEnv.getHtmlLabelName(390271, userlang) + requestname;
        }

        String allrequestids = "";
        if (!"".equals(currentid) && !"".equals(currentid.trim())) {
            rs.executeSql("select requestid from workflow_currentoperator where id in(" + currentid + ")");
            while (rs.next()) {
                if ("".equals(allrequestids)) {
                    allrequestids = Util.null2String(rs.getString("requestid"));
                } else {
                    allrequestids += "," + Util.null2String(rs.getString("requestid"));
                }
            }
        }

        boolean checkwfshare = false;
        if (!"".equals(allrequestids)) {
            String checkquestids = "," + allrequestids + ",";
            if (checkquestids.indexOf(requestid) > -1) {
                checkwfshare = true;
            }
        }

        String attentionTag = "";
        if (showAttentionTag)
            attentionTag = new RequestAttentionBiz().getAttentionTag(Util.getIntValue(requestid), Util.getIntValue(userID), 0, userlang);

        if (checkwfshare) {
            returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                    + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'></span>" + attentionTag;
        } else {
            if (viewtype.equals("0")) {
                //新流程,粗体链接加图片
                if (isprocessed) {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this); >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='" + SystemEnv.getHtmlLabelName(19081, userlang) + "'/></span>" + attentionTag;
                } else if ("1".equals(agenttype)) {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='" + SystemEnv.getHtmlLabelName(19154, userlang) + "'/></span>" + attentionTag;
                } else {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this); >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='" + SystemEnv.getHtmlLabelName(19154, userlang) + "'/></span>" + attentionTag;
                }
            } else if (viewtype.equals("-1") || isNeedBack) {
                //旧流程,有新的提交信息未查看,普通链接加图片
                if (isprocessed) {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this); >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='" + SystemEnv.getHtmlLabelName(19081, userlang) + "'/></span>" + attentionTag;
                } else {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this); >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='" + SystemEnv.getHtmlLabelName(20288, userlang) + "'/></span>" + attentionTag;
                }
            } else {
                //旧流程,普通链接
                if (isprocessed) {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ");doReadIt(" + requestid + ",\"\",this); >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='" + SystemEnv.getHtmlLabelName(19081, userlang) + "'/></span>" + attentionTag;
                } else {
                    returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                            + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'></span>" + attentionTag;
                }
            }
        }
        return returnStr;
    }


    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 流程标题
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid + 操作人类性isremark+用户id userID+ 代理人/被代理人ID + 代理/被代理类型
     * @return 流程标题显示样式
     * @throws Exception
     */
    public String getWfShareLinkWithTitle2(String requestname, String para2)
            throws Exception {
        return getWfShareLinkWithTitle2(requestname, para2, false, null);
    }

    public String getWfShareLinkWithTitle2(String requestname, String para2, String paraNeedBack)
            throws Exception {
        return getWfShareLinkWithTitle2(requestname, para2, false, paraNeedBack);
    }

    public String getWfShareLinkWithTitle2(String requestname, String para2, boolean showAttentionTag, String paraNeedBack)
            throws Exception {
        RecordSet rs = new RecordSet();
        String returnStr = "";
        ResourceComInfo rc = new ResourceComInfo();
        DepartmentComInfo dc = new DepartmentComInfo();
        JobTitlesComInfo jc = new JobTitlesComInfo();
        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);

        boolean isNeedBack = false;
        if (paraNeedBack != null) {
            isNeedBack = isNeedBack(paraNeedBack, viewtype);
        }
        String agentorbyagentid = "";
        String agenttype = "";
        String currentid = "";
        String nowuserid = "";
        if (tempStr.length >= 12) {
            agenttype = Util.null2String(tempStr[9]);
            currentid = Util.null2String(tempStr[11]);
            nowuserid = Util.null2String(tempStr[12]);
        }

        String workflowtype = "";
        String paramstr = "";
        try {
            workflowtype = Util.null2String(tempStr[13]);
        } catch (Exception e) {

        }
        paramstr = "&_workflowid=" + workflowid + "&_workflowtype=" + workflowtype;//方便异构系统使用

        String username = rc.getResourcename(nowuserid);
        String ownDepid = rc.getDepartmentID(nowuserid);
        String depName = dc.getDepartmentname(ownDepid);
        String jobName = jc.getJobTitlesname(rc.getJobTitle(nowuserid));

        String nodetitle = "";
        int isbill = 0;
        int formid = 0;
        // //根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id="
                + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);

        }
        requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);

        //获取次账号id
        String userIDAll = userID;
        rs.executeQuery("select belongtoshow from HrmUserSetting where resourceId = " + userID);
        String belongtoshow = "";
        if (rs.next()) {
            belongtoshow = rs.getString("belongtoshow");
        }
        if ("1".equals(belongtoshow)) {
            String Belongtoids = getUser(Util.getIntValue(userID, 0)).getBelongtoids();
            if (!"".equals(Belongtoids))
                userIDAll = userIDAll + "," + Belongtoids;
        }
        List<String> useridAllList = Util.splitString2List(userIDAll, ",");
        boolean isprocessed = false;
        boolean canContinue = false;
        //新增是否显示[退回][代理]前缀显示
        boolean hasAgentTip = false;
        boolean hasRejectTip = false;
        rs.executeSql("select isprocessed, isremark, userid, nodeid,islasttimes,agenttype,isbereject,takisremark from workflow_currentoperator where requestid = "
                + requestid
                + " order by receivedate desc, receivetime desc");
        while (rs.next()) {
            String isbereject = Util.null2String(rs.getString("isbereject"));
            String islasttimes = Util.null2String(rs.getString("islasttimes"));
            String takisremark = Util.null2String(rs.getString("takisremark"));
            String agenttype1 = Util.null2String(rs.getString("agenttype"));
            String isremark_tmp = Util.null2String(rs.getString("isremark"));
            String isprocessed_tmp = Util.null2String(rs
                    .getString("isprocessed"));
            String userid_tmp = Util.null2String(rs.getString("userid"));
            if ((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp
                    .equals("3") || isprocessed_tmp.equals("2")))
                    || isremark_tmp.equals("5")) {
                isprocessed = true;
            }
            //判断是否显示【退回】【代理】标识
            if (useridAllList.contains(userid_tmp) && "1".equals(islasttimes) && "2".equals(agenttype1) && (("0".equals(isremark) && !"-2".equals(takisremark)) || "1".equals(isremark) || "7".equals(isremark) || "8".equals(isremark) || "9".equals(isremark) || "11".equals(isremark))) {
                hasAgentTip = true;
            }
            if (useridAllList.contains(userid_tmp) && "1".equals(islasttimes) && "1".equals(isbereject) && ("0".equals(isremark_tmp) && !"-2".equals(takisremark))) {
                hasRejectTip = true;
            }
            // 如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
            if (("8".equals(isremark) || "9".equals(isremark) || "1"
                    .equals(isremark))
                    && userID.equals(userid_tmp)
                    && "0".equals(isremark_tmp)
                    && canContinue == false) {
                int nodeid_tmp = Util.getIntValue(rs.getString("nodeid"), 0);
                if (nodeid_tmp != 0) {
                    isremark = isremark_tmp;
                    nodeid = "" + nodeid_tmp;
                    canContinue = true;
                }
            }
            if (isprocessed == true && canContinue == true) {
                break;
            }
        }
        // 改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs
                    .executeSql("select nodetitle from workflow_flownode where workflowid="
                            + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }
        if (hasAgentTip) {
            requestname = SystemEnv.getHtmlLabelName(390272, userlang) + requestname;
        }
        if (hasRejectTip) {
            requestname = SystemEnv.getHtmlLabelName(390271, userlang) + requestname;
        }
        String allrequestids = "";
        if (!"".equals(currentid)) {
            rs
                    .executeSql("select requestid from workflow_currentoperator where id in("
                            + currentid + ")");
            while (rs.next()) {
                if ("".equals(allrequestids)) {
                    allrequestids = Util.null2String(rs.getString("requestid"));
                } else {
                    allrequestids += ","
                            + Util.null2String(rs.getString("requestid"));
                }
            }
        }

        boolean checkwfshare = false;
        if (!"".equals(allrequestids)) {
            String checkquestids = "," + allrequestids + ",";
            if (checkquestids.indexOf(requestid) > -1) {
                checkwfshare = true;
            }
        }

        String attentionTag = "";
        if (showAttentionTag)
            attentionTag = new RequestAttentionBiz().getAttentionTag(Util.getIntValue(requestid), Util.getIntValue(userID), 0, userlang);
        if (!userID.equals(nowuserid)) {

            if (checkwfshare) {
                returnStr = "<span></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + "&f_weaver_belongto_userid="
                        + nowuserid
                        + "&f_weaver_belongto_usertype=0"
                        + "\',"
                        + requestid
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid + "span\'></span>" + attentionTag;
            } else {
                if (viewtype.equals("0")) {
                    // 新流程,粗体链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + nowuserid
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081,
                                userlang) + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + nowuserid
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154,
                                userlang) + "'/></span>" + attentionTag;
                    }
                } else if (viewtype.equals("-1") || isNeedBack) {
                    // 旧流程,有新的提交信息未查看,普通链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + nowuserid
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081,
                                userlang) + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + nowuserid
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(20288,
                                userlang) + "'/></span>" + attentionTag;
                    }
                } else {
                    // 旧流程,普通链接
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + nowuserid
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081,
                                userlang) + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + nowuserid
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ") >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid + "span\'></span>" + attentionTag;
                    }
                }

            }
        } else {
            if (checkwfshare) {
                returnStr = "<span></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + "\',"
                        + requestid
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'></span>" + attentionTag;
            } else {
                if (viewtype.equals("0")) {
                    // 新流程,粗体链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081,
                                userlang) + "'/></span>" + attentionTag;
                    } else if ("1".equals(agenttype)) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ") >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154,
                                userlang) + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154,
                                userlang) + "'/></span>" + attentionTag;
                    }
                } else if (viewtype.equals("-1") || isNeedBack) {
                    // 旧流程,有新的提交信息未查看,普通链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081,
                                userlang) + "'/></span>" + attentionTag;
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(20288,
                                userlang) + "'/></span>" + attentionTag;
                    }
                } else {
                    // 旧流程,普通链接
                    if (isprocessed) {

                        // System.out.println("--usrid2-1615-"+usrid2);

                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081,
                                userlang) + "'/></span>" + attentionTag;

                    } else {

                        // System.out.println("--usrid2-1615-"+usrid2);

                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userID
                                + "&f_weaver_belongto_usertype=0"
                                + "\',"
                                + requestid
                                + ") >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid + "span\'></span>" + attentionTag;

                    }
                }
            }
        }
        returnStr = STYLE_STR + returnStr + "</span>";
        return returnStr;
    }


    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 主次账号图标
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid +
     *                    操作人类性isremark+用户id userID+ 代理人/被代理人ID + 代理/被代理类型
     * @return 流程标题显示样式
     * @throws Exception
     */
    public String getWfMainSubPic(String requestname, String para2)
            throws Exception {
        ResourceComInfo rc = new ResourceComInfo();
        DepartmentComInfo dc = new DepartmentComInfo();
        JobTitlesComInfo jc = new JobTitlesComInfo();
        RecordSet rs = new RecordSet();
        String returnStr = "";

        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String usrid2 = Util.null2String(tempStr[11]);
        String[] arr2 = null;
        ArrayList<String> userlist = new ArrayList();
        int Belongtoid = 0;
        if (!"".equals(usrid2)) {
            arr2 = usrid2.split(",");
            for (int i = 0; i < arr2.length; i++) {
                Belongtoid = Util.getIntValue(arr2[i]);
                userlist.add(Belongtoid + "");
            }
        }

        for (int k = 0; k < userlist.size(); k++) {
            String userid2 = Util.null2String((String) userlist.get(k));
            String username = rc.getResourcename((String) userlist.get(k));
            String ownDepid = rc.getDepartmentID((String) userlist.get(k));
            String depName = dc.getDepartmentname(ownDepid);
            String jobName = jc.getJobTitlesname(rc
                    .getJobTitle((String) userlist.get(k)));
            // System.out.println("-----1393----workflowtm---jobName==="+jobName);
            String agentorbyagentid = "";
            String agenttype = "";

            if (tempStr.length >= 10) {
                agenttype = Util.null2String(tempStr[9]);
            }

            String nodetitle = "";
            int isbill = 0;
            int formid = 0;
            // //根据后台设置在MAIL标题后加上流程中重要的字段
            rs.execute("select formid,isbill from workflow_base where id="
                    + workflowid);
            if (rs.next()) {
                formid = rs.getInt(1);
                isbill = rs.getInt(2);

            }
            requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);

            boolean isprocessed = false;
            boolean canContinue = false;
            rs
                    .executeSql("select isprocessed, isremark, userid, nodeid from workflow_currentoperator where requestid = "
                            + requestid
                            + " order by receivedate desc, receivetime desc");
            while (rs.next()) {
                String isremark_tmp = Util
                        .null2String(rs.getString("isremark"));
                String isprocessed_tmp = Util.null2String(rs
                        .getString("isprocessed"));
                String userid_tmp = Util.null2String(rs.getString("userid"));
                if ((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp
                        .equals("3") || isprocessed_tmp.equals("2")))
                        || isremark_tmp.equals("5")) {
                    isprocessed = true;
                }
                // 如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
                if (("8".equals(isremark) || "9".equals(isremark) || "1"
                        .equals(isremark))
                        && userID.equals(userid_tmp)
                        && "0".equals(isremark_tmp) && canContinue == false) {
                    int nodeid_tmp = Util
                            .getIntValue(rs.getString("nodeid"), 0);
                    if (nodeid_tmp != 0) {
                        isremark = isremark_tmp;
                        nodeid = "" + nodeid_tmp;
                        canContinue = true;
                    }
                }
                if (isprocessed == true && canContinue == true) {
                    break;
                }
            }
            // 改为按要求显示自定义流程标题的前缀信息
            if ("0".equals(isremark)) {
                rs
                        .executeSql("select nodetitle from workflow_flownode where workflowid="
                                + workflowid + " and nodeid=" + nodeid);
                if (rs.next()) {
                    nodetitle = Util.null2String(rs.getString("nodetitle"));
                }
            }
            if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
                nodetitle = "（" + nodetitle + "）";
                requestname = nodetitle + requestname;
            }

            if (!userID.equals(userid2)) {
                rs
                        .executeSql("select * from workflow_currentoperator where userid="
                                + userid2
                                + " and workflowid="
                                + workflowid
                                + " and nodeid="
                                + nodeid
                                + " and requestid="
                                + requestid);
                if (rs.next()) {

                    if (viewtype.equals("0")) {
                        // 新流程,粗体链接加图片
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081,
                                    userlang) + "'/></span>";
                        } else if ("1".equals(agenttype)) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ") >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19154,
                                    userlang) + "'/></span>";
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19154,
                                    userlang) + "'/></span>";
                        }
                    } else if (viewtype.equals("-1")) {
                        // 旧流程,有新的提交信息未查看,普通链接加图片
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081,
                                    userlang) + "'/></span>";
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(20288,
                                    userlang) + "'/></span>";
                        }
                    } else {
                        // 旧流程,普通链接
                        if (isprocessed) {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ");doReadIt("
                                    + requestid
                                    + ",\"\",this); >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid
                                    + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                    + SystemEnv.getHtmlLabelName(19081,
                                    userlang) + "'/></span>";
                        } else {
                            returnStr = "<span><img src='"+contextPath+"/images/ecology8/subwf_wev8.png' title='"
                                    + depName
                                    + "/"
                                    + jobName
                                    + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                    + requestid
                                    + "&f_weaver_belongto_userid="
                                    + userid2
                                    + "&f_weaver_belongto_usertype=0&isovertime="
                                    + isovertime
                                    + "\',"
                                    + requestid
                                    + ") >"
                                    + requestname
                                    + "</a><span id=\'wflist_"
                                    + requestid + "span\'></span>";
                        }
                    }

                }
            } else {
                if (viewtype.equals("0")) {
                    // 新流程,粗体链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>";
                    } else if ("1".equals(agenttype)) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ") >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154, userlang)
                                + "'/></span>";
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19154, userlang)
                                + "'/></span>";
                    }
                } else if (viewtype.equals("-1")) {
                    // 旧流程,有新的提交信息未查看,普通链接加图片
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>";
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(20288, userlang)
                                + "'/></span>";
                    }
                } else {
                    //旧流程,普通链接
                    if (isprocessed) {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ");doReadIt("
                                + requestid
                                + ",\"\",this); >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid
                                + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                                + SystemEnv.getHtmlLabelName(19081, userlang)
                                + "'/></span>";
                    } else {
                        returnStr = "<span><img src='"+contextPath+"/images/ecology8/mainwf_wev8.png' title='"
                                + depName
                                + "/"
                                + jobName
                                + "' /></span><a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                                + requestid
                                + "&f_weaver_belongto_userid="
                                + userid2
                                + "&f_weaver_belongto_usertype=0&isovertime="
                                + isovertime
                                + "\',"
                                + requestid
                                + ") >"
                                + requestname
                                + "</a><span id=\'wflist_"
                                + requestid + "span\'></span>";
                    }
                }
            }
        }
        return returnStr;
    }


    /**
     * 返回正文
     *
     * @param
     * @param
     * @return
     */
    public String getContentNewLinkWithTitle(String requestid, String para2) {
        String returnStr = "";
        String[] tempStr = Util.splitString(para2, "+");
        RecordSet rs = new RecordSet();
        //String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String docids = "";
        rs.executeSql("select docids from workflow_requestbase where requestid=" + requestid);
        if (rs.next()) {
            docids = Util.null2String(rs.getString(1));
        }
        if (!docids.equals("") && !docids.equals("0")) {
            if (docids.indexOf(",") == -1) {//只有一个文档，直接算为正文
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?viewdoc=1&isworkflowdoc=1&seeflowdoc=1&requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + DocComInfo1.getDocname(docids) + "</a>";
            } else {//多个文档，需要查找到哪个字段是正文字段
                rs.executeSql("select flowDocField from workflow_createdoc where workflowid=" + workflowid + " order by id desc");
                if (rs.next()) {
                    int fieldid = Util.getIntValue(rs.getString(1), -1);
                    if (fieldid > 0) {
                        int isbill = 0;
                        int formid = 0;
                        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
                        if (rs.next()) {
                            formid = rs.getInt(1);
                            isbill = rs.getInt(2);

                        }
                        if (isbill == 1) {//新表单或者单据
                            rs.executeSql("select fieldname from workflow_billfield where id=" + fieldid + " and billid=" + formid);
                            if (rs.next()) {
                                String fieldname = Util.null2String(rs.getString(1));
                                if (!fieldname.equals("")) {
                                    if (formid < 0) {//新表单
                                        rs.executeSql("select " + fieldname + " from formtable_main_" + (formid * -1) + " where requestid=" + requestid);
                                        if (rs.next()) {
                                            returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?viewdoc=1&isworkflowdoc=1&seeflowdoc=1&requestid=" + requestid + "&isovertime=" + isovertime
                                                    + "\'," + requestid + ") >" + DocComInfo1.getDocname("" + Util.getIntValue(rs.getString(1), 0)) + "</a>";
                                        }
                                    } else {//单据
                                        rs.executeSql("select tablename from workflow_bill where id=" + formid);
                                        if (rs.next()) {
                                            String tablename = Util.null2String(rs.getString(1));
                                            if (!tablename.equals("")) {
                                                rs.executeSql("select " + fieldname + " from " + tablename + " where requestid=" + requestid);
                                                if (rs.next()) {
                                                    returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?viewdoc=1&isworkflowdoc=1&seeflowdoc=1&requestid=" + requestid + "&isovertime=" + isovertime
                                                            + "\'," + requestid + ") >" + DocComInfo1.getDocname("" + Util.getIntValue(rs.getString(1), 0)) + "</a>";
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        } else {//老表单
                            rs.executeSql("select fieldname from workflow_formdict where id=" + fieldid);
                            if (rs.next()) {
                                String fieldname = Util.null2String(rs.getString(1));
                                if (!fieldname.equals("")) {
                                    rs.executeSql("select " + fieldname + " from workflow_form where requestid=" + requestid);
                                    if (rs.next()) {
                                        returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?viewdoc=1&isworkflowdoc=1&seeflowdoc=1&requestid=" + requestid + "&isovertime=" + isovertime
                                                + "\'," + requestid + ") >" + DocComInfo1.getDocname("" + Util.getIntValue(rs.getString(1), 0)) + "</a>";
                                    }
                                }
                            }
                        }
                    }

                }
            }
        }
        return returnStr;
    }

    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 流程标题
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid + 操作人类性isremark
     * @return 流程标题显示样式
     */
    public String getWfNewLinkWithTitleExt(String requestname, String para2) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String nodetitle = "";
        int isbill = 0;
        int formid = 0;
        ////根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);

        }
        requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);
        boolean isprocessed = false;
        boolean canContinue = false;
        rs.executeSql("select isprocessed, isremark, userid, nodeid from workflow_currentoperator where requestid = " + requestid + " order by receivedate desc, receivetime desc");
        while (rs.next()) {
            String isremark_tmp = Util.null2String(rs.getString("isremark"));
            String isprocessed_tmp = Util.null2String(rs.getString("isprocessed"));
            String userid_tmp = Util.null2String(rs.getString("userid"));
            if ((isremark_tmp.equals("0") && (isprocessed_tmp.equals("0") || isprocessed_tmp.equals("3") || isprocessed_tmp.equals("2"))) || isremark_tmp.equals("5")) {
                isprocessed = true;
            }
            //如果是被抄送或转发，判断是否正是某节点的操作人，取最后一次
            if (("8".equals(isremark) || "9".equals(isremark) || "1".equals(isremark)) && userID.equals(userid_tmp) && "0".equals(isremark_tmp) && canContinue == false) {
                int nodeid_tmp = Util.getIntValue(rs.getString("nodeid"), 0);
                if (nodeid_tmp != 0) {
                    isremark = isremark_tmp;
                    nodeid = "" + nodeid_tmp;
                    canContinue = true;
                }
            }
            if (isprocessed == true && canContinue == true) {
                break;
            }
        }
        //改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs.executeSql("select nodetitle from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }

        if (viewtype.equals("0")) {
            //新流程,粗体链接加图片

            returnStr = "<a href=javaScript:openWfToTab(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                    + "','" + Util.toHtmlForCpt(requestname) + "')  >" + requestname + "</a>";

        } else if (viewtype.equals("-1")) {
            //旧流程,有新的提交信息未查看,普通链接加图片

            returnStr = "<a href=javaScript:openWfToTab(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                    + "','" + Util.toHtmlForCpt(requestname) + "')  >" + requestname + "</a>";

        } else {

            returnStr = "<a href=javaScript:openWfToTab(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                    + "','" + Util.toHtmlForCpt(requestname) + "')  >" + requestname + "</a>";


        }
        return returnStr;
    }

    public String getWfViewTypeExt(String viewtype, String requestid) {
        boolean isprocessed = false;
        RecordSet rs = new RecordSet();
        rs.executeSql("select isprocessed from workflow_currentoperator where ((isremark='0' and (isprocessed='0' or isprocessed='3' or isprocessed='2'))  or isremark='5') and requestid = " + requestid);
        if (rs.next()) {
            isprocessed = true;
        }
        String returnStr = "";
        if (viewtype.equals("0")) {
            //新流程,粗体链接加图片
            if (isprocessed) {
                returnStr = "<IMG src=\'/images/BDOut_wev8.gif\' align=absbottom>";
            } else {
                returnStr = "<IMG src=\'/images/BDNew_wev8.gif\' align=absbottom>";
            }
        } else if (viewtype.equals("-1")) {
            //旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessed) {
                returnStr = "<IMG src=\'/images/BDOut_wev8.gif\' align=absbottom>";
            } else {
                returnStr = "<IMG src=\'/images/BDNew2_wev8.gif\' align=absbottom>";
            }
        } else {
            //旧流程,普通链接
            if (isprocessed) {
                returnStr = "<IMG src='"+contextPath+"/images/BDOut_wev8.gif' align=absbottom>";
            } else {
                returnStr = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
            }
        }
        return returnStr;
    }

    /**
     * 请求状态图标
     *
     * @param viewtype 请求状态
     * @param para2    请求ID + 代理人/被代理人ID + 代理/被代理类型
     * @return 请求状态图标
     */
    public String getWfViewTypeExtIncludeAgent(String viewtype, String para2) {

        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String agentorbyagentid = Util.null2String(tempStr[1]);
        String agenttype = Util.null2String(tempStr[2]);

        RecordSet rs = new RecordSet();
        boolean isprocessed = false;
        rs.executeSql("select isprocessed from workflow_currentoperator where ((isremark='0' and (isprocessed='0' or isprocessed='3' or isprocessed='2'))  or isremark='5') and requestid = " + requestid);
        if (rs.next()) {
            isprocessed = true;
        }
        String returnStr = "";
        if (viewtype.equals("0")) {
            //新流程,粗体链接加图片
            if (isprocessed) {
                returnStr = "<IMG src=\'/images/BDOut_wev8.gif\' align=absbottom>";
            } else if ("1".equals(agenttype)) {
                returnStr = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
            } else {
                returnStr = "<IMG src=\'/images/BDNew_wev8.gif\' align=absbottom>";
            }
        } else if (viewtype.equals("-1")) {
            //旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessed) {
                returnStr = "<IMG src=\'/images/BDOut_wev8.gif\' align=absbottom>";
            } else {
                returnStr = "<IMG src=\'/images/BDNew2_wev8.gif\' align=absbottom>";
            }
        } else {
            //旧流程,普通链接
            if (isprocessed) {
                returnStr = "<IMG src='"+contextPath+"/images/BDOut_wev8.gif' align=absbottom>";
            } else {
                returnStr = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
            }
        }
        return returnStr;
    }

    /**
     * 得到未操作者
     *
     * @param requestid 流程ID
     * @return 未操作者
     */
    public String getUnOperators(String requestid, String para) {
        if(requestid == null){
            return "";//走微搜时，微搜可能会返回已删除的数据
        }
        String[] tempStr = Util.splitString(para, "+");

        String userLanguage = Util.null2String(tempStr[0]);
        RecordSet rs = new RecordSet();
        String userid = Util.null2String(tempStr[1]);
        String mainsubuserid = Util.null2String(tempStr[2]);
        String returnStr = "<div id='" + mainsubuserid + requestid + "div'>";
        String divid = mainsubuserid + requestid + "div";
        returnStr += "<span style='cursor:hand;text-decoration: underline' onClick=showallreceived('" + requestid + "','" + divid + "') >" + SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage)) + "</span>";
        //returnStr=SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage));
        returnStr += "</div>";
        String showoperators = "";
        try {

            showoperators = "0".equals(RequestDefaultComInfo.getShowoperator("" + userid)) ? "0" : "1";
        } catch (Exception eshows) {
        }
        if (showoperators.equals("1")) {
            if (requestid.indexOf("-") == -1) {
                returnStr = "";
                rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid,isremark,showorder,id,groupid from workflow_currentoperator where (isremark in ('0','1','5','7','8','9','11') or (isremark='4' and viewtype=0))  and requestid = " + requestid + " order by isremark,groupid,showorder asc ,id asc");
                Set<String> unOperators = new HashSet<>();
                while (rs.next()) {
                    //去除重复
                    String key = rs.getString("userid") + ":" + rs.getString("usertype") + ":" + rs.getString("agenttype") + ":" + rs.getString("agentorbyagentid");
                    if (unOperators.contains(key)) {
                        continue;
                    } else {
                        unOperators.add(key);
                    }
                    if (returnStr.equals("")) {
                        if (rs.getInt("usertype") == 0) {
                            //if(rs.getInt("agenttype")==2)
                            //	returnStr +=  rc.getResourcename(rs.getString("agentorbyagentid"))+"->"+rc.getResourcename(rs.getString("userid"));
                            //else
                            //	returnStr +=  rc.getResourcename(rs.getString("userid"));
                            if (rs.getInt("agenttype") == 2) {
                                returnStr += rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                                //判断是否被代理者,如果是，则不显示该记录
                            } else if (rs.getInt("agenttype") == 1 && rs.getInt("isremark") == 4) {
                                continue;
                            } else {
                                returnStr += rc.getResourcename(rs.getString("userid"));
                            }
                        } else {
                            returnStr += cci.getCustomerInfoname(rs.getString("userid"));
                        }
                    } else {
                        if (rs.getInt("usertype") == 0) {
                            //if(rs.getInt("agenttype")==2)
                            //	returnStr +=  ","+rc.getResourcename(rs.getString("agentorbyagentid"))+"->"+rc.getResourcename(rs.getString("userid"));
                            //else
                            //	returnStr +=  ","+rc.getResourcename(rs.getString("userid"));
                            if (rs.getInt("agenttype") == 2) {
                                returnStr += "," + rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                                //判断是否被代理者,如果是，则不显示该记录
                            } else if (rs.getInt("agenttype") == 1 && rs.getInt("isremark") == 4) {
                                continue;
                            } else {
                                returnStr += "," + rc.getResourcename(rs.getString("userid"));
                            }
                        } else {
                            //TD11591(人力资源与客户同时存在时、加','处理)
                            returnStr += "," + cci.getCustomerInfoname(rs.getString("userid"));
                        }
                    }
                }
            } else {
                returnStr = "";
                rs.executeSql("select distinct userid from ofs_todo_data where requestid=" + requestid + " and isremark in(0,8,9) ");
                while (rs.next()) {
                    returnStr += rc.getResourcename(rs.getString("userid")) + ",";
                }
                if (returnStr.endsWith(",")) {
                    returnStr = returnStr.substring(0, returnStr.length() - 1);
                }
            }
        }
        return returnStr;
    }


    /**
     * 得到未操作者
     *
     * @param requestid 流程ID
     * @return 未操作者
     */
    public String getUnOperators2(String requestid, String para) {
        String[] tempStr = Util.splitString(para, "+");
        RecordSet rs = new RecordSet();
        String userLanguage = Util.null2String(tempStr[0]);

        String userid = Util.null2String(tempStr[1]);
        //String mainsubuserid = Util.null2String(tempStr[2]);
        String returnStr = "<div id='" + userid + requestid + "div'>";
        String divid = userid + requestid + "div";
        returnStr += "<span style='cursor:hand;text-decoration: underline' onClick=showallreceived('" + requestid + "','" + divid + "') >" + SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage)) + "</span>";
        //returnStr=SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage));
        returnStr += "</div>";
        String showoperators = "";
        try {

            showoperators = "0".equals(RequestDefaultComInfo.getShowoperator("" + userid)) ? "0" : "1";
        } catch (Exception eshows) {
        }
        if (showoperators.equals("1")) {
            returnStr = "";
            rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);
            Set<String> operatorSets = new HashSet<>();
            while (rs.next()) {
                String key = rs.getString("userid") + "_" + rs.getInt("usertype") + "_" + rs.getInt("agenttype") + "_" + rs.getString("agentorbyagentid");
                if (operatorSets.contains(key)) {
                    continue;
                }
                if (returnStr.equals("")) {
                    if (rs.getInt("usertype") == 0) {
                        if (rs.getInt("agenttype") == 2)
                            returnStr += rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                        else
                            returnStr += rc.getResourcename(rs.getString("userid"));
                    } else {
                        returnStr += cci.getCustomerInfoname(rs.getString("userid"));
                    }
                } else {
                    if (rs.getInt("usertype") == 0) {
                        if (rs.getInt("agenttype") == 2)
                            returnStr += "," + rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                        else
                            returnStr += "," + rc.getResourcename(rs.getString("userid"));
                    } else {
                        //TD11591(人力资源与客户同时存在时、加','处理)
                        returnStr += "," + cci.getCustomerInfoname(rs.getString("userid"));
                    }
                }
            }

        }
        return returnStr;
    }


    /**
     * 得到未操作者
     *
     * @param requestid 流程ID
     * @return 未操作者
     */
    public String getMUnOperators(String requestid, String para) {
        String[] tempStr = Util.splitString(para, "+");

        String userLanguage = Util.null2String(tempStr[0]);
        RecordSet rs = new RecordSet();
        String userid = Util.null2String(tempStr[1]);
        String returnStr = "<div id='" + requestid + "div'>";
        String divid = requestid + "div";
        returnStr += "<span style='cursor:hand;text-decoration: underline' onClick=showallreceived('" + requestid + "','" + divid + "') >" + SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage)) + "</span>";
        //returnStr=SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage));
        returnStr += "</div>";
        String showoperators = "";
        try {

            showoperators = "0".equals(RequestDefaultComInfo.getShowoperator("" + userid)) ? "0" : "1";
        } catch (Exception eshows) {
        }
        if (showoperators.equals("1")) {
            returnStr = "";
            rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);

            while (rs.next()) {
                if (returnStr.equals("")) {
                    if (rs.getInt("usertype") == 0) {
                        if (rs.getInt("agenttype") == 2)
                            returnStr += rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                        else
                            returnStr += rc.getResourcename(rs.getString("userid"));
                    } else {
                        returnStr += cci.getCustomerInfoname(rs.getString("userid"));
                    }
                } else {
                    if (rs.getInt("usertype") == 0) {
                        if (rs.getInt("agenttype") == 2)
                            returnStr += "," + rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                        else
                            returnStr += "," + rc.getResourcename(rs.getString("userid"));
                    } else {
                        //TD11591(人力资源与客户同时存在时、加','处理)
                        returnStr += "," + cci.getCustomerInfoname(rs.getString("userid"));
                    }
                }
            }

        }
        return returnStr;
    }

    /**
     * 得到流程报表未操作者
     *
     * @param requestid 流程ID
     * @return 未操作者
     */
    public String getUnOptInRep(String requestid) {

        String returnStr = "";
        RecordSet rs = new RecordSet();
        //returnStr ="<a href=\"javaScript:openhrm("+ id+ ");\" onclick='pointerXY(event);'>"+ rc.getResourcename(id)+ "</a>";

        rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);

        String usid = "";
        String usname = "";
        while (rs.next()) {
            if (returnStr.equals("")) {
                if (rs.getInt("usertype") == 0) {
                    if (rs.getInt("agenttype") == 2) {
                        usid = rs.getString("agentorbyagentid");
                        usname = rc.getResourcename(usid);
                        returnStr += "<a href=\"javaScript:openhrm(" + usid + ");\" onclick='pointerXY(event);'>" + usname + "</a>->";
                        returnStr += "<a href=\"javaScript:openhrm(" + rs.getString("userid") + ");\" onclick='pointerXY(event);'>" + rc.getResourcename("userid") + "</a>";
                        //returnStr +=  rc.getResourcename(rs.getString("agentorbyagentid"))+"->"+rc.getResourcename(rs.getString("userid"));
                    } else {
                        usid = rs.getString("userid");
                        usname = rc.getResourcename(usid);
                        returnStr += "<a href=\"javaScript:openhrm(" + usid + ");\" onclick='pointerXY(event);'>" + usname + "</a>";
                    }
                } else {
                    usid = rs.getString("userid");
                    usname = cci.getCustomerInfoname(usid);
                    returnStr += "<a href=\"javaScript:openhrm(" + usid + ");\" onclick='pointerXY(event);'>" + usname + "</a>";
                    //returnStr +=  cci.getCustomerInfoname(rs.getString("userid"));
                }
            } else {
                if (rs.getInt("usertype") == 0) {
                    if (rs.getInt("agenttype") == 2) {
                        usid = rs.getString("agentorbyagentid");
                        usname = rc.getResourcename(usid);
                        returnStr += ",<a href=\"javaScript:openhrm(" + usid + ");\" onclick='pointerXY(event);'>" + usname + "</a>->";
                        returnStr += "<a href=\"javaScript:openhrm(" + rs.getString("userid") + ");\" onclick='pointerXY(event);'>" + rc.getResourcename("userid") + "</a>";
                        //returnStr +=  ","+rc.getResourcename(rs.getString("agentorbyagentid"))+"->"+rc.getResourcename(rs.getString("userid"));
                    } else {
                        usid = rs.getString("userid");
                        usname = rc.getResourcename(usid);
                        returnStr += ",<a href=\"javaScript:openhrm(" + usid + ");\" onclick='pointerXY(event);'>" + usname + "</a>";
                        //returnStr +=  ","+rc.getResourcename(rs.getString("userid"));
                    }
                } else {
                    //TD11591(人力资源与客户同时存在时、加','处理)
                    usid = rs.getString("userid");
                    usname = cci.getCustomerInfoname(usid);
                    returnStr += ",<a href=\"javaScript:openhrm(" + usid + ");\" onclick='pointerXY(event);'>" + usname + "</a>";
                    //returnStr +=  ","+cci.getCustomerInfoname(rs.getString("userid"));
                }
            }
        }

        return returnStr;
    }

    /**
     * 得到流程报表导出未操作者
     *
     * @param requestid 流程ID
     * @return 未操作者
     */
    public String getUnOptOutPutExcel(String requestid) {

        String returnStr = "";
        RecordSet rs = new RecordSet();
        //returnStr ="<a href=\"javaScript:openhrm("+ id+ ");\" onclick='pointerXY(event);'>"+ rc.getResourcename(id)+ "</a>";

        rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);

        String usid = "";
        String usname = "";
        while (rs.next()) {
            if (returnStr.equals("")) {
                if (rs.getInt("usertype") == 0) {
                    if (rs.getInt("agenttype") == 2) {
                        usid = rs.getString("agentorbyagentid");
                        usname = rc.getResourcename(usid);
                        returnStr += usname + "->";
                        returnStr += rc.getResourcename(Util.null2String(rs.getString("userid")));
                        //returnStr +=  rc.getResourcename(rs.getString("agentorbyagentid"))+"->"+rc.getResourcename(rs.getString("userid"));
                    } else {
                        usid = rs.getString("userid");
                        usname = rc.getResourcename(usid);
                        returnStr += usname;
                    }
                } else {
                    usid = rs.getString("userid");
                    usname = cci.getCustomerInfoname(usid);
                    returnStr += usname;
                    //returnStr +=  cci.getCustomerInfoname(rs.getString("userid"));
                }
            } else {
                if (rs.getInt("usertype") == 0) {
                    if (rs.getInt("agenttype") == 2) {
                        usid = rs.getString("agentorbyagentid");
                        usname = rc.getResourcename(usid);
                        returnStr += "," + usname + "->";
                        returnStr += rc.getResourcename(Util.null2String(rs.getString("userid")));
                        //returnStr +=  ","+rc.getResourcename(rs.getString("agentorbyagentid"))+"->"+rc.getResourcename(rs.getString("userid"));
                    } else {
                        usid = rs.getString("userid");
                        usname = rc.getResourcename(usid);
                        returnStr += "," + usname;
                        //returnStr +=  ","+rc.getResourcename(rs.getString("userid"));
                    }
                } else {
                    //TD11591(人力资源与客户同时存在时、加','处理)
                    usid = rs.getString("userid");
                    usname = cci.getCustomerInfoname(usid);
                    returnStr += "," + usname;
                    //returnStr +=  ","+cci.getCustomerInfoname(rs.getString("userid"));
                }
            }
        }

        return returnStr;
    }

    public String getUnOperatorsExt(String requestid, String para) {
        String[] tempStr = Util.splitString(para, "+");
        String userLanguage = Util.null2String(tempStr[0]);
        RecordSet rs = new RecordSet();
        String userid = Util.null2String(tempStr[1]);
        String returnStr = "<div id='" + requestid + "div'>";
        String divid = requestid + "div";
        returnStr += "<span style='cursor:hand;color: blue; text-decoration: underline' onClick=showallreceived('" + requestid + "','" + divid + "',this) >" + SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage)) + "</span>";
        //returnStr=SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage));
        returnStr += "</div>";

        String showoperators = "";
        try {

            showoperators = "0".equals(RequestDefaultComInfo.getShowoperator("" + userid)) ? "0" : "1";
        } catch (Exception eshows) {
        }
        if (showoperators.equals("1")) {
            returnStr = "";
            rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1') or (isremark='4' and viewtype=0))  and requestid = " + requestid);

            while (rs.next()) {
                if (returnStr.equals("")) {
                    if (rs.getInt("usertype") == 0) {
                        if (rs.getInt("agenttype") == 2)
                            returnStr += rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                        else
                            returnStr += rc.getResourcename(rs.getString("userid"));
                    } else {
                        returnStr += cci.getCustomerInfoname(rs.getString("userid"));
                    }
                } else {
                    if (rs.getInt("usertype") == 0) {
                        if (rs.getInt("agenttype") == 2)
                            returnStr += "," + rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                        else
                            returnStr += "," + rc.getResourcename(rs.getString("userid"));
                    } else {
                        //TD11591(人力资源与客户同时存在时、加','处理)
                        returnStr += "," + cci.getCustomerInfoname(rs.getString("userid"));
                    }
                }
            }

        }

        return returnStr;
    }

    /**
     * 得到流程报表签字意见
     *
     * @param reqid      流程ID
     * @param languageid 语言id
     * @param isExport   是否导出
     * @return 签字意见
     */
    public String getRequestLogInRep(String reqid, int languageid, boolean isExport) {
        String logStr = "";
        String title = "";
        int requestid = Util.getIntValue(Util.null2String(reqid), 0);

        RequestLogOperateName requestLogOperateName = new RequestLogOperateName();
        RecordSet rs = new RecordSet();
        String separator = isExport ? "\n" : "&nbsp;";
        String titleSeparator = "&lt;br&gt;"; // <br>
        String remarkSeparator = "</P>";
        String remarkSeparator2 = "<br>";

        int workflowid = 0;
        String orderby = "";
        rs.executeSql("select * from workflow_base where id = (select workflowid from workflow_requestbase where requestid=" + requestid + ")");
        if (rs.next()) {
            workflowid = Util.getIntValue(Util.null2String(rs.getString("id")), 0);
            if ("2".equals(Util.null2String(rs.getString("orderbytype")))) {
                orderby = "asc";
            }
        }

        String viewNodeIds = "-1";
        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()) {
            viewNodeIds += "," + Util.getIntValue(Util.null2String(rs.getString("nodeid")), -1);
        }

        WFLinkInfo wfLinkInfo = new WFLinkInfo();
        wfLinkInfo.setIsprint(true);
        ArrayList logs = wfLinkInfo.getRequestLog(requestid, workflowid, viewNodeIds, orderby);
        for (int i = 0; i < logs.size(); i++) {
            Hashtable log = (Hashtable) logs.get(i);
            String operatedate = Util.null2String(log.get("operatedate"));
            String operatetime = Util.null2String(log.get("operatetime"));
            String nodename = Util.null2String(log.get("nodename"));
            int nodeid = Util.getIntValue(Util.null2String(log.get("nodeid")), 0);
            String logtype = Util.null2String(log.get("logtype"));
            String operator = Util.null2String(log.get("operator"));
            String operatortype = Util.null2String(log.get("operatortype"));
            String agenttype = Util.null2String(log.get("agenttype"));
            String agentorbyagentid = Util.null2String(log.get("agentorbyagentid"));
            String remark = Util.null2String(log.get("remark")).replace("</p>", remarkSeparator).trim();
            remark = remark.replace("</DIV>", remarkSeparator).replace("</div>", remarkSeparator);
            remark = remark.replace("<BR>", remarkSeparator2).replace("<br/>", remarkSeparator2).replace("<BR/>", remarkSeparator2).replace("<br />", remarkSeparator2).replace("<BR />", remarkSeparator2);

            String operatorName = "";
            if ("0".equals(operatortype)) {
                if ("2".equals(agenttype)) {
                    operatorName = Util.null2String(rc.getResourcename(agentorbyagentid)) + " -&gt; ";
                }
                operatorName += Util.null2String(rc.getResourcename(operator));
            } else if ("1".equals(operatortype)) {
                operatorName = Util.null2String(cci.getCustomerInfoname(operator));
            } else {
                operatorName = SystemEnv.getHtmlLabelName(468, languageid);
            }

            String operateName = requestLogOperateName.getOperateName("" + workflowid, "" + requestid, "" + nodeid, logtype, operator, languageid);

            logStr += "[" + nodename + " / " + operateName + "]" + separator;
            title += "&lt;span style='color: #0099FF;'&gt;[" + nodename + " / " + operateName + "]&lt;/span&gt;" + titleSeparator;
            if (!"".equals(remark)) {
                String remark0 = "";
                String remark1 = remark;
                do {
                    int index = -1;
                    int length = 0;
                    int index1 = remark1.indexOf(remarkSeparator);
                    int index2 = remark1.indexOf(remarkSeparator2);
                    if (index1 > -1 || index2 > -1) {
                        if (index1 > -1 && (index2 == -1 || index1 <= index2)) {
                            index = index1;
                            length = remarkSeparator.length();
                        } else {
                            index = index2;
                            length = remarkSeparator2.length();
                        }
                    }
                    if (index > -1) {
                        remark0 = remark1.substring(0, index);
                        remark1 = remark1.substring(index + length);
                    } else {
                        remark0 = remark1;
                        remark1 = "";
                    }
                    remark0 = Util.delHtml(remark0).trim();
                    remark0 = remark0.replace("&amp;", "&");
                    remark0 = remark0.replace("\"", "%quot;");
                    if (!"".equals(remark0)) {
                        logStr += remark0 + separator;
                        title += "&lt;span&gt;" + remark0 + "&lt;/span&gt;" + titleSeparator;
                    }
                } while (!"".equals(remark1));
            }
            logStr += operatorName + " " + operatedate + " " + operatetime + separator + separator;
            title += "&lt;span style='color: #999999;'&gt;" + operatorName + " " + operatedate + " " + operatetime + "&lt;/span&gt;" + titleSeparator + titleSeparator;

        }
        if (isExport) {
            if (!"".equals(logStr)) {
                logStr = logStr.substring(0, (logStr.length() - (separator.length() * 2)));
            }
        } else {
            logStr = "<span class=\"e8tips\" title=\"" + title + "\">" + logStr + "</span>";
        }

        return logStr;
    }

    public String getWfMonLink(String requestname, String requestid) {
        String returnStr = "<a href='/workflow/request/ViewRequestForwardSPA.jsp?ismonitor=y&requestid=" + requestid + "' target='_newworks'>" + requestname + "</a>";
        return returnStr;
    }

    public String getFlowPendingLink(String requestname, String requestid) {
        String returnStr = "<a href='/workflow/request/ViewRequestForwardSPA.jsp?isfromflowreport=1&reportid=-2&requestid=" + requestid + "' target='_newworks'>" + requestname + "</a>";
        return returnStr;
    }

    public String getFlowDocLink(String requestname, String requestid) {
        String returnStr = "<a href='/workflow/request/ViewRequestForwardSPA.jsp?isfromflowreport=1&reportid=-6&requestid=" + requestid + "' target='_newworks'>" + requestname + "</a>";
        return returnStr;
    }

    /**
     * 得到当前节点的显示名
     *
     * @param currentnodeid 节点ID
     * @return 当前节点的显示名
     */
    public String getCurrentNode(String currentnodeid) {
        return WorkflowBaseBiz.getWorkflowNodeName(Util.getIntValue(currentnodeid));
    }


    /**
     * 展示流程监控列表操作菜单
     * add by 黄宝 @2014-1-15
     *
     * @param
     * @param
     * @return
     */
    @Deprecated
    public List<String> getWFMonitorListOperation(String workflowid_rs, String para2) {
        String showDeleteBtn = "false";    //显示删除按钮
        String showStopBtn = "false";    //显示暂停按钮
        String showCancelBtn = "false";        //显示撤销按钮
        String showRestartBtn = "false";    //显示启用按钮
        String showOvmBtn = "false";    //显示强制归档按钮
        String showRbmBtn = "false"; //显示强制收回按钮
        String showInterventionBtn = "false";    //显示流程干预按钮
        RecordSet rs = new RecordSet();
        //记录返回结果
        List<String> result = new ArrayList<String>();


        String[] tempStr = Util.splitString(para2, "+");
        String workflowid = "";
        int formid = 0;
        int isbill = 0;
        String requestid = Util.null2String(tempStr[0]);
        int userid = Integer.parseInt(Util.null2String(tempStr[1]));
        int usertype = Integer.parseInt(Util.null2String(tempStr[2]));
        int userlang = Integer.parseInt(Util.null2String(tempStr[3]));
        int currentstatus = Util.getIntValue((Util.null2String(tempStr[4])), -1);
        int creater = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        int currentnodetype = Util.getIntValue((Util.null2String(tempStr[6])), -1);
//        String isNew = "";
//        try{
//        	isNew = Util.null2String(tempStr[4]);
//        }catch(Exception e){
//        }

        boolean isForceDrawBack = false;
        boolean isForceOver = false;
        boolean issooperator = false;
        //rs.executeSql("select isForceDrawBack,isForceOver,issooperator from workflow_monitor_bound where monitorhrmid="+userid+" and EXISTS(select 1 from workflow_requestbase where currentnodetype!='3' and workflowid=workflow_monitor_bound.workflowid and requestid="+requestid+")");
        rs.executeSql("select isForceDrawBack,isForceOver,issooperator from workflow_monitor_bound where monitorhrmid=" + userid + " and EXISTS(select 1 from workflow_requestbase where currentnodetype!='3' and workflowid=workflow_monitor_bound.workflowid and requestid=" + requestid + ")");
        while (rs.next()) {
            if (!isForceDrawBack)
                isForceDrawBack = Util.getIntValue(rs.getString("isForceDrawBack")) == 1 ? true : false;
            if (!isForceOver)
                isForceOver = Util.getIntValue(rs.getString("isForceOver")) == 1 ? true : false;
            if (!issooperator)
                issooperator = Util.getIntValue(rs.getString("issooperator")) == 1 ? true : false;
        }
        rs.executeSql("select workflowid from workflow_requestbase where requestid=" + requestid);
        if (rs.next()) {
            workflowid = rs.getString("workflowid");
        }
        WfFunctionManageUtil wfFunctionManageUtil = new WfFunctionManageUtil();

        User user = new User();
        user.setUid(userid);
        WfFunctionManageUtil WfFunctionManageUtil = new WfFunctionManageUtil();
        boolean haveStopright = WfFunctionManageUtil.haveStopright(currentstatus, creater, user, "" + currentnodetype, -1, issooperator);//流程不为暂停或者撤销状态，当前用户为流程发起人或者系统管理员，并且流程状态不为创建和归档
        boolean haveCancelright = WfFunctionManageUtil.haveCancelright(currentstatus, creater, user, "" + currentnodetype, -1, issooperator);//流程不为撤销状态，当前用户为流程发起人，并且流程状态不为创建和归档
        boolean haveRestartright = WfFunctionManageUtil.haveRestartright(currentstatus, creater, user, "" + currentnodetype, -1, issooperator);//流程为暂停或者撤销状态，当前用户为系统管理员，并且流程状态不为创建和归档

        haveStopright = haveStopright && !((formid == 158 || formid == 156) && isbill == 1);
        haveCancelright = haveCancelright && !((formid == 158 || formid == 156) && isbill == 1);
        haveRestartright = haveRestartright && !((formid == 158 || formid == 156) && isbill == 1);
        //判断是否有删除权限
        String delStr = workflowid + "+" + userid + "+" + usertype;
        boolean haveDelright = getWFMonitorCheckBox(delStr).equals("true") ? true : false;

        if (haveDelright) {
            showDeleteBtn = "true";
        }

        ////System.out.println("haveStopright : "+haveStopright+" haveCancelright : "+haveCancelright+" haveRestartright : "+haveRestartright+" currentstatus : "+currentstatus+" currentnodetype : "+currentnodetype+" creater : "+creater+" userid : "+userid);
        if (haveStopright) {
            //returnStr+="</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('"+requestid+"','stop')\">"+SystemEnv.getHtmlLabelName(20387, userlang)+"</a>";
            showStopBtn = "true";

        }
        if (haveCancelright) {
            //returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('"+requestid+"','cancel')\">"+SystemEnv.getHtmlLabelName(16210, userlang)+"</a>";
            showCancelBtn = "true";
        }
        if (haveRestartright) {
            //returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('"+requestid+"','restart')\">"+SystemEnv.getHtmlLabelName(18095, userlang)+"</a>";
            showRestartBtn = "true";
        }
        if (!haveRestartright || ((formid == 158 || formid == 156) && isbill == 1)) {
            HashMap map = wfFunctionManageUtil.wfFunctionMonitorByNodeid(workflowid, userid + "");
            String ov = (String) map.get("ov");
            String rb = (String) map.get("rb");
            WfForceOver wfForceOver = new WfForceOver();
            if (isForceOver && "1".equals(ov) && !wfForceOver.isOver(Integer.parseInt(requestid))) {
                //      	returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:window.location='/workflow/workflow/wfFunctionManageLink.jsp?flag=ovm&requestid="+requestid+"&isNew="+isNew+"'\">"+SystemEnv.getHtmlLabelName(18360, userlang)+"</a>";
                //returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('"+requestid+"','ovm')\">"+SystemEnv.getHtmlLabelName(18360, userlang)+"</a>";
                //ishead=false;
                showOvmBtn = "true";//强制归档
            }
            int tempuser = 1;
            int tempusertype = 0;
            rs.executeSql("select userid,usertype from workflow_currentoperator where requestid = " + requestid + " and isremark = '2' order by operatedate desc ,operatetime desc");
            if (rs.next()) {
                tempuser = rs.getInt("userid");
                tempusertype = rs.getInt("usertype");
            }
            int nodecounts = 0;//流程没有真正流转，没有强制收回
            rs.executeSql("select count(distinct nodeid) as nodecounts from workflow_currentoperator where requestid=" + requestid);
            if (rs.next()) {
                nodecounts = rs.getInt("nodecounts");
            }
            WfForceDrawBack wfForceDrawBack = new WfForceDrawBack();
            //现改为查看后也能收回，条件是对该流程有监控权限、不在发起与归档节点、在后台设置强制收回权限
            //if(nodecounts>1&&isForceDrawBack&&!"0".equals(rb) && wfForceDrawBack.isHavePurview(Integer.parseInt(requestid),userid,usertype,tempuser,tempusertype)){
            if (nodecounts > 1 && isForceDrawBack && !"0".equals(rb)) {
                //returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('"+requestid+"','rbm')\">"+SystemEnv.getHtmlLabelName(18359, userlang)+"</a>";
                showRbmBtn = "true"; //强制收回
            }
            if (GCONST.getWorkflowIntervenorByMonitor()) {
                rs.executeSql("select workflowid from workflow_monitor_bound where monitorhrmid=" + userid + " and isintervenor='1' and EXISTS(select 1 from workflow_requestbase where currentnodetype!='3' and workflowid=workflow_monitor_bound.workflowid and requestid=" + requestid + ")");
                if (rs.next()) {
                    //returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:openFullWindowHaveBar('/workflow/request/ViewRequestForwardSPA.jsp?isintervenor=1&requestid="+requestid+"')\">"+SystemEnv.getHtmlLabelName(18913, userlang)+"</a>";
                    showInterventionBtn = "true";//流程干预
                }
            }
        }


        result.add(showDeleteBtn);
        result.add(showStopBtn);
        result.add(showCancelBtn);
        result.add(showRestartBtn);
        result.add(showOvmBtn);
        result.add(showRbmBtn);
        result.add(showInterventionBtn);

        return result;
    }


    /**
     * 表格中显示强制归档和强制回收
     *
     * @param workflowid_rs
     * @param para2         流程id+用户ID+用户类型+用户显示语言
     * @return 强制归档和强制回收显示
     */
    public String getMonitorLink(String workflowid_rs, String para2) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        String[] tempStr = Util.splitString(para2, "+");
        String workflowid = "";
        int formid = 0;
        int isbill = 0;
        String requestid = Util.null2String(tempStr[0]);
        int userid = Integer.parseInt(Util.null2String(tempStr[1]));
        int usertype = Integer.parseInt(Util.null2String(tempStr[2]));
        int userlang = Integer.parseInt(Util.null2String(tempStr[3]));
        int currentstatus = Util.getIntValue((Util.null2String(tempStr[4])), -1);
        int creater = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        int currentnodetype = Util.getIntValue((Util.null2String(tempStr[6])), -1);
//        String isNew = "";
//        try{
//        	isNew = Util.null2String(tempStr[4]);
//        }catch(Exception e){
//        }

        returnStr = "";
        boolean ishead = true;
        boolean isForceDrawBack = false;
        boolean isForceOver = false;
        boolean issooperator = false;
        rs.executeSql("select workflowid from workflow_requestbase where requestid=" + requestid);
        if (rs.next()) {
            workflowid = rs.getString("workflowid");
        }
        Monitor monitor = new Monitor();
        MonitorDTO monitorInfo = monitor.getMonitorInfo(userid + "", creater + "", workflowid);
        isForceDrawBack = monitorInfo.getIsforcedrawback();
        isForceOver = monitorInfo.getIsforceover();
        issooperator = monitorInfo.getIssooperator();

        WfFunctionManageUtil wfFunctionManageUtil = new WfFunctionManageUtil();

        User user = new User();
        user.setUid(userid);
        WfFunctionManageUtil WfFunctionManageUtil = new WfFunctionManageUtil();
        boolean haveStopright = WfFunctionManageUtil.haveStopright(currentstatus, creater, user, "" + currentnodetype, -1, issooperator);//流程不为暂停或者撤销状态，当前用户为流程发起人或者系统管理员，并且流程状态不为创建和归档
        boolean haveCancelright = WfFunctionManageUtil.haveCancelright(currentstatus, creater, user, "" + currentnodetype, -1, issooperator);//流程不为撤销状态，当前用户为流程发起人，并且流程状态不为创建和归档
        boolean haveRestartright = WfFunctionManageUtil.haveRestartright(currentstatus, creater, user, "" + currentnodetype, -1, issooperator);//流程为暂停或者撤销状态，当前用户为系统管理员，并且流程状态不为创建和归档

        haveStopright = haveStopright && !((formid == 158 || formid == 156) && isbill == 1);
        haveCancelright = haveCancelright && !((formid == 158 || formid == 156) && isbill == 1);
        haveRestartright = haveRestartright && !((formid == 158 || formid == 156) && isbill == 1);

        ////System.out.println("haveStopright : "+haveStopright+" haveCancelright : "+haveCancelright+" haveRestartright : "+haveRestartright+" currentstatus : "+currentstatus+" currentnodetype : "+currentnodetype+" creater : "+creater+" userid : "+userid);
        if (haveStopright) {
            if (ishead) {
                returnStr += "<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','stop')\">" + SystemEnv.getHtmlLabelName(20387, userlang) + "</a>";
                ishead = false;
            } else {
                returnStr += "</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','stop')\">" + SystemEnv.getHtmlLabelName(20387, userlang) + "</a>";
                ishead = false;
            }

        }
        if (haveCancelright) {
            if (ishead) {
                returnStr += "<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','cancel')\">" + SystemEnv.getHtmlLabelName(16210, userlang) + "</a>";
                ishead = false;
            } else {
                returnStr += "</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','cancel')\">" + SystemEnv.getHtmlLabelName(16210, userlang) + "</a>";
                ishead = false;
            }
        }
        if (haveRestartright) {
            if (ishead) {
                returnStr += "<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','restart')\">" + SystemEnv.getHtmlLabelName(18095, userlang) + "</a>";
                ishead = false;
            } else {
                returnStr += "</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','restart')\">" + SystemEnv.getHtmlLabelName(18095, userlang) + "</a>";
                ishead = false;
            }
        }
        if (!haveRestartright || ((formid == 158 || formid == 156) && isbill == 1)) {
            HashMap map = wfFunctionManageUtil.wfFunctionManageAsMonitor(Integer.parseInt(workflowid_rs));
            String ov = (String) map.get("ov");
            String rb = (String) map.get("rb");
            WfForceOver wfForceOver = new WfForceOver();
            if (isForceOver && "1".equals(ov) && !wfForceOver.isOver(Integer.parseInt(requestid))) {
                //      	returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:window.location='/workflow/workflow/wfFunctionManageLink.jsp?flag=ovm&requestid="+requestid+"&isNew="+isNew+"'\">"+SystemEnv.getHtmlLabelName(18360, userlang)+"</a>";
                returnStr += "<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','ovm')\">" + SystemEnv.getHtmlLabelName(18360, userlang) + "</a>";
                ishead = false;
            }
            int tempuser = 1;
            int tempusertype = 0;
            rs.executeSql("select userid,usertype from workflow_currentoperator where requestid = " + requestid + " and isremark = '2' order by operatedate desc ,operatetime desc");
            if (rs.next()) {
                tempuser = rs.getInt("userid");
                tempusertype = rs.getInt("usertype");
            }
            int nodecounts = 0;//流程没有真正流转，没有强制收回
            rs.executeSql("select count(distinct nodeid) as nodecounts from workflow_currentoperator where requestid=" + requestid);
            if (rs.next()) {
                nodecounts = rs.getInt("nodecounts");
            }
            WfForceDrawBack wfForceDrawBack = new WfForceDrawBack();
            if (nodecounts > 1 && isForceDrawBack && !"0".equals(rb) && wfForceDrawBack.isHavePurview(Integer.parseInt(requestid), userid, usertype, tempuser, tempusertype)) {
                if (ishead) {
                    //                 returnStr+="<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:window.location='/workflow/workflow/wfFunctionManageLink.jsp?flag=rbm&requestid="+requestid+"&isNew="+isNew+"'\">"+SystemEnv.getHtmlLabelName(18359, userlang)+"</a>";
                    returnStr += "<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','rbm')\">" + SystemEnv.getHtmlLabelName(18359, userlang) + "</a>";
                    ishead = false;
                } else {
                    //                 returnStr+="</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:window.location='/workflow/workflow/wfFunctionManageLink.jsp?flag=rbm&requestid="+requestid+"&isNew="+isNew+"'\">"+SystemEnv.getHtmlLabelName(18359, userlang)+"</a>";
                    returnStr += "</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:doMonitorRequestSignle('" + requestid + "','rbm')\">" + SystemEnv.getHtmlLabelName(18359, userlang) + "</a>";
                    ishead = false;
                }
            }
            if (GCONST.getWorkflowIntervenorByMonitor()) {
                if (monitorInfo.getIsintervenor() && currentnodetype != 3) {
                    if (ishead) {
                        returnStr += "<table><tr><td height=20><a href=\"#\" onclick=\"javaScript:openFullWindowHaveBar('/workflow/request/ViewRequestForwardSPA.jsp?isintervenor=1&requestid=" + requestid + "')\">" + SystemEnv.getHtmlLabelName(18913, userlang) + "</a>";
                        ishead = false;
                    } else {
                        returnStr += "</td></tr><tr><td height=20><a href=\"#\" onclick=\"javaScript:openFullWindowHaveBar('/workflow/request/ViewRequestForwardSPA.jsp?isintervenor=1&requestid=" + requestid + "')\">" + SystemEnv.getHtmlLabelName(18913, userlang) + "</a>";
                        ishead = false;
                    }
                }
            }
        }
        if (!ishead) returnStr += "</td></tr></table>";
        //System.out.println("======="+returnStr);
        return returnStr;
    }

    /**
     * 获得子流程链接
     *
     * @param requestId
     * @param userLanguage 用户显示语言
     * @return 子流程链接
     */
    public String getSubWFLink(String requestId, String userLanguage) {
        return this.getSubWFLink(requestId,userLanguage,true);
    }

    /**
     * 获得子流程链接
     *
     * @param requestId
     * @param userLanguage 用户显示语言
     * @return 子流程链接
     */
    public String getSubWFLink(String requestId, String userLanguage,boolean needCheck) {
        int intUserLanguage = 7;
        if (userLanguage != null && !userLanguage.equals("")) {
            intUserLanguage = Integer.parseInt(userLanguage);
        }
        RecordSet rs = new RecordSet();
        String returnStr = "";
        rs.executeSql("select requestid from workflow_requestbase where mainRequestId=" + requestId);
        if (rs.next() || !needCheck) {
            returnStr = "<a href=\"/spa/workflow/static/index.html#/main/workflow/subWorkflowStatus?mainRequestId=" + requestId + "\" target=\'_new\'>" + SystemEnv.getHtmlLabelName(361, intUserLanguage) + "</a>";
        }
        return returnStr;
    }

    /**
     * 获得子流程链接
     *
     * @param requestId
     * @param userLanguage 用户显示语言
     * @return 子流程链接
     */
    public String getSubWFLinkNew(String requestId, String userLanguage) {
        int intUserLanguage = 7;
        if (userLanguage != null && !userLanguage.equals("")) {
            intUserLanguage = Integer.parseInt(userLanguage);
        }
        String returnStr = "<a href=\"/workflow/search/SubWFSearchResult.jsp?isNew=2New&mainRequestId=" + requestId + "\">" + SystemEnv.getHtmlLabelName(361, intUserLanguage) + "</a>";

        return returnStr;
    }

    /**
     * 获得取消监控链接
     *
     * @param workflowid
     * @param hrmiduserLanguage 监控人
     * @return 取消监控链接
     */
    public String getCancleMoniter(String workflowid, String hrmiduserLanguage) {
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String userLanguage = Util.null2String(tempStr[1]);
        String userid = Util.null2String(tempStr[2]);
        int intUserLanguage = 7;
        if (userLanguage != null && !userLanguage.equals("")) {
            intUserLanguage = Integer.parseInt(userLanguage);
        }
        int operatelevel = 0;
        if (tempStr.length > 3) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[3]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 4) {
            detachable = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        String typeid = "";
        if (tempStr.length > 5) {
            typeid = Util.null2String(tempStr[5]);
        }
        String subcompanyid = "";
        if (tempStr.length > 6) {
            subcompanyid = Util.null2String(tempStr[6]);
        }
        String returnStr = "";

        if (userid.equals("1")) {//系统管理员
            returnStr = "<a href=\"/system/systemmonitor/workflow/systemMonitorOperation.jsp?monitorhrmid=" + hrmid + "&actionKey=delflow&flowid=" + workflowid + "&subcompanyid=" + subcompanyid + "&typeid=" + typeid + "\">" + SystemEnv.getHtmlLabelName(10000154,intUserLanguage) + "</a>";
        } else {
    	    /*rs.executeSql("select detachable from SystemSet");
    	    int detachable=0;
    	    if(rs.next()){
    	        detachable=rs.getInt("detachable");
    	    }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel > 0) {//有权限
                    returnStr = "<a href=\"/system/systemmonitor/workflow/systemMonitorOperation.jsp?monitorhrmid=" + hrmid + "&actionKey=delflow&flowid=" + workflowid + "&subcompanyid=" + subcompanyid + "&typeid=" + typeid + "\">" + SystemEnv.getHtmlLabelName(10000154,intUserLanguage) + "</a>";
                } else {//无权限
                    returnStr = SystemEnv.getHtmlLabelName(10000154,intUserLanguage);
                }
            } else {
                returnStr = "<a href=\"/system/systemmonitor/workflow/systemMonitorOperation.jsp?monitorhrmid=" + hrmid + "&actionKey=delflow&flowid=" + workflowid + "&subcompanyid=" + subcompanyid + "&typeid=" + typeid + "\">" + SystemEnv.getHtmlLabelName(10000154,intUserLanguage) + "</a>";
            }
        }
        //String returnStr="<a href=\"/workflow/search/SubWFSearchResult.jsp?mainRequestId="+requestId+"\">"+SystemEnv.getHtmlLabelName(201,intUserLanguage)+SystemEnv.getHtmlLabelName(665,intUserLanguage)+"</a>";

        return returnStr;
    }

    /**
     * 获得子流程列表的接收人
     * 子流程第二个节点（创建节点后节点）的操作人，当节点操作人为多个时显示多个
     *
     * @param requestId 子流程的请求id
     * @return 子流程列表的接收人
     */
    public String getSubWFReceiver(String requestId) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        int workflowId = 0;
        int firstNodeId = 0;
        int secondNodeId = 0;
        String secondNodeIdStr = "0";
        int userId = 0;
        int userType = 0;


        rs.executeSql(" select workflowid from workflow_requestbase where requestid=" + requestId);
        if (rs.next()) {
            workflowId = rs.getInt(1);
        }

        rs.executeSql("select nodeId from workflow_flownode where workflowid=" + workflowId + " and nodeType='0'");
        if (rs.next()) {
            firstNodeId = rs.getInt(1);
        }

        rs.executeSql("select destnodeid from workflow_nodelink where wfrequestid is null and workflowId=" + workflowId + " and EXISTS(select 1 from workflow_nodebase b where workflow_nodelink.destnodeid=b.id and (b.IsFreeNode is null or b.IsFreeNode!='1')) and nodeId=" + firstNodeId);
        while (rs.next()) {
            secondNodeId = rs.getInt(1);
            secondNodeIdStr += "," + secondNodeId;
        }

        rs.executeSql(" select userId,userType from workflow_currentoperator where requestid=" + requestId + "   and nodeId in(" + secondNodeIdStr + ") ");
        while (rs.next()) {
            userId = rs.getInt(1);
            userType = rs.getInt(2);
            if (userType == 0) {
                returnStr += " " +
                        "<a href=\"javaScript:openhrm("
                        + userId
                        + ")\" onclick='pointerXY(event);'>"
                        + rc.getResourcename(String.valueOf(userId))
                        + "</a>";
            } else if (userType == 1) {
                returnStr +=
                        "<a href=\"javaScript:openFullWindowHaveBar(\'/CRM/data/ViewCustomer.jsp?CustomerID="
                                + userId
                                + "\')\">"
                                + cci.getCustomerInfoname(String.valueOf(userId))
                                + "</a>";
            }
        }

        return returnStr;
    }

    /**
     * 获得子流程列表的请求说明
     *
     * @param requestName 子流程的请求id
     * @param paraTwo     流程id+用户ID
     *                    当前用户不是子流程操作人时，只显示名称，不能链接进入，否则可通过链接进入流程查看页面
     * @return 子流程列表的请求说明
     */
    public String getSubWFRequestDescription(String requestName, String paraTwo) {
        RecordSet rs = new RecordSet();
        String returnStr = "";

        String[] tempStr = Util.splitString(paraTwo, "+");
        String requestId = Util.null2String(tempStr[0]);
        String userId = Util.null2String(tempStr[1]);

        boolean canView = false;
        rs.executeSql("select requestId from workflow_currentoperator where requestid=" + requestId + " and userId=" + userId);
        if (rs.next()) {
            canView = true;
        }
        if (canView) {
            returnStr = "<a href=javaScript:openFullWindowHaveBar(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestId
                    + "\')>" + requestName + "</a>";
        } else {
            returnStr = requestName;
        }
        ;

        return returnStr;
    }

    /**
     * 获得自定义显示字段的显示内容
     *
     * @param paraTwo 字段ID+"+"+字段类型+"+"+字段类型+"+"+显示语言
     * @return 显示内容
     */
    public String getOthers(String fieldvalue, String paraTwo) {
        RecordSet rs = new RecordSet();
        RecordSet RecordSet = new RecordSet();
        String returnStr = "";
        String sql = "";
        String[] tempStr = Util.splitString(paraTwo, "+");
        String fieldid = Util.null2String(tempStr[1]);
        String fieldhtmltype = Util.null2String(tempStr[2]);
        String fieldtype = Util.null2String(tempStr[3]);
        int userlanguage = Util.getIntValue(Util.null2String(tempStr[4]));
        String requestid = Util.null2String(tempStr[0]);
        char flag = Util.getSeparator();
        String isbill = Util.null2String(tempStr[5]);
        String dbtype = Util.null2String(tempStr[6]);
        try {
            if (fieldtype.equals("118")) {
                returnStr = "<a href=\'/meeting/report/MeetingRoomPlan.jsp\' target=\'_blank\'>" + SystemEnv.getHtmlLabelName(2193, userlanguage) + "</a>";
            }
            if (fieldhtmltype.equals("1") || fieldhtmltype.equals("2")) {  // 单行,多行文本框

                if (fieldhtmltype.equals("1") && fieldtype.equals("4")) {
                    returnStr = Util.milfloatFormat(fieldvalue);
                    //returnStr=  Util.numtochinese(fieldvalue);

                } else {
                    returnStr = Util.toHtmlSearch(fieldvalue);
                }

            }                                                           // 单行,多行文本框条件结束
            else if (fieldhtmltype.equals("3")) {                         // 浏览按钮 (涉及workflow_broswerurl表)
                if (fieldtype.equals("2") || fieldtype.equals("19")) {    // 日期和时间
                    returnStr = fieldvalue;

                } else if (!fieldvalue.equals("")) {
                    String url = BrowserComInfo.getBrowserurl(fieldtype);     // 浏览按钮弹出页面的url
                    String linkurl = BrowserComInfo.getLinkurl(fieldtype);    // 浏览值点击的时候链接的url
                    String showname = "";                                                   // 值显示的名称
                    String showid = "";                                                     // 值

                    ArrayList tempshowidlist = Util.TokenizerString(fieldvalue, ",");
                    if (fieldtype.equals("8") || fieldtype.equals("135")) {
                        //项目，多项目
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (!linkurl.equals("")) {
                                showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "\' target=\'_new\'>" + ProjectInfoComInfo1.getProjectInfoname((String) tempshowidlist.get(k)) + "</a>&nbsp";
                            } else {
                                showname += ProjectInfoComInfo1.getProjectInfoname((String) tempshowidlist.get(k)) + " ";
                            }
                        }
                    } else if (fieldtype.equals("1") || fieldtype.equals("17")) {
                        //人员，多人员
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (!linkurl.equals("")) {
                                if ("/hrm/resource/HrmResource.jsp?id=".equals(linkurl)) {
                                    showname += "<a href='javaScript:openhrm(" + tempshowidlist.get(k) + ");' onclick='pointerXY(event);'>" + rc.getResourcename((String) tempshowidlist.get(k)) + "</a>&nbsp";
                                } else
                                    showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "\' target=\'_new\'>" + rc.getResourcename((String) tempshowidlist.get(k)) + "</a>&nbsp";
                            } else {
                                showname += rc.getResourcename((String) tempshowidlist.get(k)) + " ";
                            }
                        }
                    } else if (fieldtype.equals("7") || fieldtype.equals("18")) {
                        //客户，多客户
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (!linkurl.equals("")) {
                                showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "\' target=\'_new\'>" + cci.getCustomerInfoname((String) tempshowidlist.get(k)) + "</a>&nbsp";
                            } else {
                                showname += cci.getCustomerInfoname((String) tempshowidlist.get(k)) + " ";
                            }
                        }
                    } else if (fieldtype.equals("4") || fieldtype.equals("57")) {
                        //部门，多部门
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (!linkurl.equals("")) {
                                showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "\' target=\'_new\'>" + DepartmentComInfo1.getDepartmentname((String) tempshowidlist.get(k)) + "</a>&nbsp";
                            } else {
                                showname += DepartmentComInfo1.getDepartmentname((String) tempshowidlist.get(k)) + " ";
                            }
                        }
                    } else if (fieldtype.equals("9") || fieldtype.equals("37")) {
                        //文档，多文档
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (k > 0) showname += "<br>";

                            {
                                if (!linkurl.equals("")) {
                                    showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "&requestid=" + requestid + "\' target=\'_new\'>" + DocComInfo1.getDocname((String) tempshowidlist.get(k)) + "</a>";
                                } else {
                                    showname += DocComInfo1.getDocname((String) tempshowidlist.get(k));
                                }
                            }
                        }
                    } else if (fieldtype.equals("23")) {
                        //资产
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (!linkurl.equals("")) {
                                showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "\' target=\'_new\'>" + CapitalComInfo1.getCapitalname((String) tempshowidlist.get(k)) + "</a>&nbsp";
                            } else {
                                showname += CapitalComInfo1.getCapitalname((String) tempshowidlist.get(k)) + " ";
                            }
                        }
                    } else if (fieldtype.equals("16") || fieldtype.equals("152") || fieldtype.equals("171")) {
                        //相关请求
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (k > 0) showname += "<br>";
                            if (!linkurl.equals("")) {
                                int tempnum = 0;
                                tempnum++;

                                showname += "<a href=\'" + linkurl + tempshowidlist.get(k) + "&wflinkno=" + tempnum + "\' target=\'_new\'>" + WorkflowRequestComInfo1.getRequestName((String) tempshowidlist.get(k)) + "</a>";
                            } else {
                                showname += WorkflowRequestComInfo1.getRequestName((String) tempshowidlist.get(k));
                            }
                        }
                    } else if (fieldtype.equals("141")) {
                        //人力资源条件
                        showname += rcm.getFormShowName(fieldvalue, userlanguage);
                    }
//add by fanggsh for TD4528   20060621 end
                    //added by alan for td:10814
                    else if (fieldtype.equals("142")) {
                        //收发文单位
                        for (int k = 0; k < tempshowidlist.size(); k++) {
                            if (!linkurl.equals("")) {
                                showname += "<a href='" + linkurl + tempshowidlist.get(k) + "' target='_new'>" + duc.getReceiveUnitName("" + tempshowidlist.get(k)) + "</a>&nbsp";
                            } else {
                                showname += duc.getReceiveUnitName("" + tempshowidlist.get(k)) + " ";
                            }
                        }
                    }
                    //end by alan for td:10814
                    else if (fieldtype.equals("161")) {//自定义单选
                        showname = "";                                   // 新建时候默认值显示的名称
                        String showdesc = "";
                        showid = fieldvalue;                                     // 新建时候默认值
                        try {
                            Browser browser = (Browser) StaticObj.getServiceByFullname(dbtype, Browser.class);
                            BrowserBean bb = browser.searchById(showid);
                            String desc = Util.null2String(bb.getDescription());
                            String name = Util.null2String(bb.getName());
//						showname="<a title='"+desc+"'>"+name+"</a>&nbsp";
                            String href = Util.null2String(bb.getHref());
                            if (href.equals("")) {
                                showname = "<a title='" + desc + "'>" + name + "</a>&nbsp";
                            } else {
                                showname = "<a title='" + desc + "' href='" + href + "' target='_blank'>" + name + "</a>&nbsp";
                            }
                        } catch (Exception e) {
                        }
                    } else if (fieldtype.equals("162")) {//自定义多选
                        showname = "";                                   // 新建时候默认值显示的名称
                        showid = fieldvalue;                                     // 新建时候默认值
                        try {
                            Browser browser = (Browser) StaticObj.getServiceByFullname(dbtype, Browser.class);
                            List l = Util.TokenizerString(showid, ",");
                            for (int j = 0; j < l.size(); j++) {
                                String curid = (String) l.get(j);
                                BrowserBean bb = browser.searchById(curid);
                                String name = Util.null2String(bb.getName());
                                ////System.out.println("showname:"+showname);
                                String desc = Util.null2String(bb.getDescription());
//						    showname+="<a title='"+desc+"'>"+name+"</a>&nbsp";
                                String href = Util.null2String(bb.getHref());
                                if (href.equals("")) {
                                    showname += "<a title='" + desc + "'>" + name + "</a>&nbsp";
                                } else {
                                    showname += "<a title='" + desc + "' href='" + href + "' target='_blank'>" + name + "</a>&nbsp";
                                }
                            }
                        } catch (Exception e) {
                        }
                    } else if (fieldtype.equals("224") || fieldtype.equals("225") || fieldtype.equals("226") || fieldtype.equals("227")) {//集成浏览按钮
                        //System.out.println(paraTwo+"内容"+fieldvalue);
                        showname = fieldvalue;
                    } else {
                        String tablename = BrowserComInfo.getBrowsertablename(fieldtype); //浏览框对应的表,比如人力资源表
                        String columname = BrowserComInfo.getBrowsercolumname(fieldtype); //浏览框对应的表名称字段
                        String keycolumname = BrowserComInfo.getBrowserkeycolumname(fieldtype);   //浏览框对应的表值字段
                        fieldvalue = deleteFirstAndEndchar(fieldvalue, ",");
                        if (fieldvalue.indexOf(",") != -1) {
                            sql = "select " + keycolumname + "," + columname + " from " + tablename + " where " + keycolumname + " in( " + fieldvalue + ")";
                        } else {
                            sql = "select " + keycolumname + "," + columname + " from " + tablename + " where " + keycolumname + "=" + fieldvalue;
                        }
                        RecordSet.executeSql(sql);
                        while (RecordSet.next()) {
                            if (!linkurl.equals("")) {
                                showname += "<a href=\'" + linkurl + RecordSet.getString(1) + "\' target=\'_new\'>" + Util.toScreen(RecordSet.getString(2), userlanguage) + "</a>&nbsp";
                            } else {
                                showname += Util.toScreen(RecordSet.getString(2), userlanguage) + " ";
                            }
                        }    // end of while
                    }

                    returnStr = showname;

                }
            }                                                       // 浏览按钮条件结束
            else if (fieldhtmltype.equals("4")) {                    // check框
                returnStr = fieldvalue;
            }                                                       // check框条件结束
            else if (fieldhtmltype.equals("5")) {                     // 选择框   select
                // 查询选择框的所有可以选择的值
                rs.executeProc("workflow_SelectItemSelectByid", "" + fieldid + flag + isbill);
                while (rs.next()) {
                    String tmpselectvalue = Util.null2String(rs.getString("selectvalue"));
                    String tmpselectname = Util.toScreen(rs.getString("selectname"), userlanguage);
                    if (fieldvalue.equals(tmpselectvalue)) {
                        returnStr = tmpselectname;
                    }
                }
            } else if (fieldhtmltype.equals("6")) {
                if (!fieldvalue.equals("")) {
                    sql = "select id,docsubject,accessorycount from docdetail where id in(" + fieldvalue + ") order by id asc";
                    int linknum = -1;
                    RecordSet.executeSql(sql);
                    while (RecordSet.next()) {
                        linknum++;
                        if (linknum > 0) returnStr += "<br>";
                        String showid = Util.null2String(RecordSet.getString(1));
                        String tempshowname = Util.toScreen(RecordSet.getString(2), userlanguage);
                        int accessoryCount = RecordSet.getInt(3);

                        DocImageManager.resetParameter();
                        DocImageManager.setDocid(Integer.parseInt(showid));
                        DocImageManager.selectDocImageInfo();

                        String docImagefileid = "";
                        long docImagefileSize = 0;
                        String docImagefilename = "";
                        String fileExtendName = "";
                        int versionId = 0;

                        if (DocImageManager.next()) {
                            docImagefileid = DocImageManager.getImagefileid();
                            docImagefileSize = DocImageManager.getImageFileSize(Util.getIntValue(docImagefileid));
                            docImagefilename = DocImageManager.getImagefilename();
                            fileExtendName = docImagefilename.substring(docImagefilename.lastIndexOf(".") + 1).toLowerCase();
                            versionId = DocImageManager.getVersionId();
                        }

                        if (accessoryCount == 1 && (fileExtendName.equalsIgnoreCase("xls") || fileExtendName.equalsIgnoreCase("doc") || fileExtendName.equalsIgnoreCase("pdf"))) {
                            //returnStr= "<a href=\"javascript:openFullWindowHaveBar(\'/docs/docs/DocDspExt.jsp?id="+showid+"&imagefileId="+docImagefileid+"&from=accessory\')\">"+docImagefilename+"</a> ";
                            returnStr += "<a href=\"javascript:openFullWindowHaveBar(\'/docs/docs/DocDspExt.jsp?id=" + showid + "&imagefileId=" + docImagefileid + "&isFromAccessory=true\')\">" + docImagefilename + "</a> ";
                        } else {
                            returnStr += "<a href=\"javascript:openFullWindowHaveBar(\'/docs/docs/DocDsp.jsp?id=" + showid + " \')\">" + tempshowname + "</a> ";
                        }
                    }
                }
            }
        } catch (Exception e) {
            returnStr = "";
        }
        return returnStr;

    }

    public String getWfNewLinkByUrger(String requestname, String para2) {
        return this.getWfNewLinkByUrger(requestname, para2, false);
    }

    public String getWfNewLinkByUrger(String requestname, String para2, boolean ismobile) {
        return this.getWfNewLinkByUrger(requestname, para2, ismobile, false);
    }

    public String getWfNewLinkByUrger_AttentionTag(String requestname, String para2, boolean ismobile) {
        return this.getWfNewLinkByUrger(requestname, para2, ismobile, true);
    }

    public String getWfNewLinkByUrger_AttentionTag(String requestname, String para2) {
        return this.getWfNewLinkByUrger(requestname, para2, false, true);
    }

    /**
     * 流程标题显示样式（是否加图片等）
     *
     * @param requestname 流程标题
     * @param para2       流程ID+，+显示类型+，+用户语言
     * @return 流程标题显示样式
     */
    public String getWfNewLinkByUrger(String requestname, String para2, boolean ismobile, boolean showAttentionTag) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        String[] tempStr = Util.splitString(para2, "+");
        int requestid = Util.getIntValue(Util.null2String(tempStr[0]));
        int workflowid = Util.getIntValue(Util.null2String(tempStr[1]));
        int userid = Util.getIntValue(Util.null2String(tempStr[2]), 0);
        int usertype = Util.getIntValue(Util.null2String(tempStr[3]), 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        int isbill = 0;
        int formid = 0;
        boolean isnew = false;
//        String viewerSql = "select a.viewdate,a.viewtime from workflow_requestviewlog a "+
//        				   " where a.id="+requestid+
//        				   " and a.viewer="+userid+
//        				   " order by a.viewdate desc,a.viewtime desc";
//
//    	String logSql = "select b.operator, b.operatedate,b.operatetime from workflow_requestlog b "+
//    					" where b.requestid="+requestid+
//    					" order by b.operatedate desc ,b.operatetime desc";
        //td
        String newsql = "select b.lastoperatedate,b.lastoperatetime,b.creater,b.lastoperator, b.lastoperatortype from workflow_requestbase b where b.requestid = "
                + requestid;
        String requestdate = "";
        String viewdate = "";
        rs.execute(newsql);
        if (rs.next()) {
            if (userid != rs.getInt(4) || usertype != rs.getInt(5)) {
                if ("".equals(Util.null2String(rs.getString(1))) || "".equals(Util.null2String(rs.getString(2)))) {
                    if (rs.getInt(3) != userid) {
                        newsql = "select w.viewdate from workflow_requestviewlog w where w.viewer="
                                + userid + " and id=" + requestid;
                        rs.execute(newsql);
                        if (!rs.next()) {
                            isnew = true;
                        }
                    }
                } else {
                    requestdate = rs.getString(1) + rs.getString(2);
                    newsql = "select max(w.viewdate) as viewdate,max(w.viewtime) as viewtime from workflow_requestviewlog w where w.viewer="
                            + userid + " and id=" + requestid + " group by id";
                    rs.execute(newsql);
                    if (rs.next()) {
                        viewdate = rs.getString(1) + rs.getString(2);
                        if (viewdate.compareTo(requestdate) < 0) {
                            isnew = true;
                        }
                    } else {
                        isnew = true;
                    }
                }
            }
        }
        ////根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);
        }
        requestname = rbu.formatRequestname(requestname, workflowid + "", requestid + "", isbill, formid, userlang);

        String attentionTag = "";
        if (showAttentionTag)
            attentionTag = new RequestAttentionBiz().getAttentionTag(requestid, userid, usertype, userlang);

        if (ismobile) {
            if (isnew) {
                requestname += "<span id='wflist_" + requestid + "span'><img style='width:6px;height:6px;' src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='" + SystemEnv.getHtmlLabelName(19154, userlang) + "'/></span>";
            }
            return requestname + attentionTag;
        }
        if (isnew) {
            //新流程,粗体链接加图片
            returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                    + "&urger=1\'," + requestid + ")>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='" + SystemEnv.getHtmlLabelName(19154, userlang) + "'/></span>" + attentionTag;
        } else {
            returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                    + "&urger=1\'," + requestid + ")>" + requestname + "</a><span id=\'wflist_" + requestid + "span\'></span>" + attentionTag;
        }
        return returnStr;
    }

    public String getWfNewLinkByUrgerExt(String requestname, String para2) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        String[] tempStr = Util.splitString(para2, "+");
        int requestid = Util.getIntValue(Util.null2String(tempStr[0]));
        int workflowid = Util.getIntValue(Util.null2String(tempStr[1]));
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        int isbill = 0;
        int formid = 0;

        ////根据后台设置在MAIL标题后加上流程中重要的字段
        rs.execute("select formid,isbill from workflow_base where id=" + workflowid);
        if (rs.next()) {
            formid = rs.getInt(1);
            isbill = rs.getInt(2);
        }
        requestname = rbu.formatRequestname(requestname, workflowid + "", requestid + "", isbill, formid, userlang);

        returnStr = "<a href=javaScript:openWfToTab(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid
                + "&urger=1\','" + Util.toHtmlForCpt(requestname) + "')>" + requestname + "</a>";

        return returnStr;
    }

    public String getWfNewLinkImageExt(String requestid, String userid) {

        String returnStr = "";
        RecordSet rs = new RecordSet();
        String viewerSql = "select a.viewdate,a.viewtime from workflow_requestviewlog a " +
                " where a.id=" + requestid +
                " and a.viewer=" + userid +
                " order by a.viewdate desc,a.viewtime desc";
        String logSql = "select b.operator, b.operatedate,b.operatetime from workflow_requestlog b " +
                " where b.requestid=" + requestid +
                " order by b.operatedate desc ,b.operatetime desc";
        String viewdate = "";
        String logdate = "";
        int operator = -1;
        rs.execute(viewerSql);
        if (rs.next()) {
            viewdate = rs.getString(1) + rs.getString(2);
        }
        rs.execute(logSql);
        if (rs.next()) {
            operator = rs.getInt(1);
            logdate = rs.getString(2) + rs.getString(3);
        }
        ////根据后台设置在MAIL标题后加上流程中重要的字段


        if (!(operator + "").equals(userid)) {
            int compareResult = viewdate.compareTo(logdate);
            if (compareResult < 0) {
                //新流程,粗体链接加图片
                returnStr = "<IMG src=\'/images/BDNew_wev8.gif\' align=absbottom>";
            } else {
                returnStr = "";
            }
        } else {
            returnStr = "";
        }
        return returnStr;
    }

    /**
     * 获得是否能查看流程内容
     *
     * @param isview
     * @param hrmiduserLanguage
     * @return 是否能查看流程内容
     */
    public String getViewWorkflow(String isview, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(isview, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisview(this,")
                    .append(hrmid)
                    .append(",").append(workflowid).append(",0)'").append(" name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisview(this,")
                    .append(hrmid)
                    .append(",").append(workflowid).append(",1)'").append(" name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
        //if(Util.getIntValue(isview, 0)>0){
        //returnstr= "<INPUT type=radio name=\"vradio_"+workflowid+"\" CHECKED onclick=\"setisview('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"vradio_"+workflowid+"\" onclick=\"setisview('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
        //}else{
        //returnstr= "<INPUT type=radio name=\"vradio_"+workflowid+"\" onclick=\"setisview('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"vradio_"+workflowid+"\" CHECKED onclick=\"setisview('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
        //}
        return sb.toString();
    }

    /**
     * 获得是否能编辑流程表单
     *
     * @param isview
     * @param hrmiduserLanguage
     * @return 是否能编辑流程表单
     */
    public String getEditWorkflow(String isview, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(isview, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisedit(this,")
                    .append(hrmid)
                    .append(",").append(workflowid).append(",0)'").append(" name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisedit(this,")
                    .append(hrmid)
                    .append(",").append(workflowid).append(",1)'").append(" name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
        //if(Util.getIntValue(isview, 0)>0){
        //returnstr= "<INPUT type=radio name=\"vradio_"+workflowid+"\" CHECKED onclick=\"setisview('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"vradio_"+workflowid+"\" onclick=\"setisview('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
        //}else{
        //returnstr= "<INPUT type=radio name=\"vradio_"+workflowid+"\" onclick=\"setisview('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"vradio_"+workflowid+"\" CHECKED onclick=\"setisview('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
        //}
        return sb.toString();
    }

    /**
     * 获得是否允许流程干预
     *
     * @param isintervenor
     * @param hrmiduserLanguage
     * @return 是否允许流程干预
     */
    public String getIntervenorWorkflow(String isintervenor, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(isintervenor, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisIntervenor(this," + hrmid + "," + workflowid + ",0)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisIntervenor(this," + hrmid + "," + workflowid + ",1)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
//        if(Util.getIntValue(isintervenor, 0)>0){
//            returnstr= "<INPUT type=radio name=\"iradio_"+workflowid+"\" CHECKED onclick=\"setisIntervenor('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"iradio_"+workflowid+"\" onclick=\"setisIntervenor('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }else{
//            returnstr= "<INPUT type=radio name=\"iradio_"+workflowid+"\" onclick=\"setisIntervenor('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"iradio_"+workflowid+"\" CHECKED onclick=\"setisIntervenor('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }
        return sb.toString();
    }

    /**
     * 获得是否允许删除
     *
     * @param isdelete
     * @param hrmiduserLanguage
     * @return 是否允许流程干预
     */
    public String getDelWorkflow(String isdelete, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(isdelete, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisDel(this," + hrmid + "," + workflowid + ",0)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisDel(this," + hrmid + "," + workflowid + ",1)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
//        if(Util.getIntValue(isdelete, 0)>0){
//            returnstr= "<INPUT type=radio name=\"dradio_"+workflowid+"\" CHECKED onclick=\"setisDel('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"dradio_"+workflowid+"\" onclick=\"setisDel('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }else{
//            returnstr= "<INPUT type=radio name=\"dradio_"+workflowid+"\" onclick=\"setisDel('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"dradio_"+workflowid+"\" CHECKED onclick=\"setisDel('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }
        return sb.toString();
    }

    /**
     * 获得是否允许强制归档
     *
     * @param isforceover
     * @param hrmiduserLanguage
     * @return 是否允许流程干预
     */
    public String getFOWorkflow(String isforceover, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(isforceover, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisFO(this," + hrmid + "," + workflowid + ",0)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisFO(this," + hrmid + "," + workflowid + ",1)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
//        if(Util.getIntValue(isforceover, 0)>0){
//            returnstr= "<INPUT type=radio name=\"bradio_"+workflowid+"\" CHECKED onclick=\"setisFO('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"bradio_"+workflowid+"\" onclick=\"setisFO('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }else{
//            returnstr= "<INPUT type=radio name=\"bradio_"+workflowid+"\" onclick=\"setisFO('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"bradio_"+workflowid+"\" CHECKED onclick=\"setisFO('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }
        return sb.toString();
    }

    /**
     * 获得是否暂停撤销启用
     *
     * @param
     * @param hrmiduserLanguage
     * @return 是否暂停撤销启用
     */
    public String getSOWorkflow(String issooperator, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(issooperator, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisSO(this," + hrmid + "," + workflowid + ",0)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisSO(this," + hrmid + "," + workflowid + ",1)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
//        if(Util.getIntValue(issooperator, 0)>0){
//            returnstr= "<INPUT type=radio name=\"soadio_"+workflowid+"\" CHECKED onclick=\"setisSO('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"soadio_"+workflowid+"\" onclick=\"setisSO('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }else{
//            returnstr= "<INPUT type=radio name=\"soadio_"+workflowid+"\" onclick=\"setisSO('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"soadio_"+workflowid+"\" CHECKED onclick=\"setisSO('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }
        return sb.toString();
    }

    /**
     * 获得是否允许强制收回
     *
     * @param isForceDrawBack
     * @param hrmiduserLanguage
     * @return 是否允许流程干预
     */
    public String getFBWorkflow(String isForceDrawBack, String hrmiduserLanguage) {
        String returnstr = "";
        String[] tempStr = Util.splitString(hrmiduserLanguage, "+");
        String hrmid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        int intUserLanguage = Util.getIntValue(tempStr[2], 7);
        String userid = Util.null2String(tempStr[3]);
        int operatelevel = 0;
        if (tempStr.length > 4) {
            operatelevel = Util.getIntValue(Util.null2String(tempStr[4]), -1);
        }
        int detachable = 0;
        if (tempStr.length > 5) {
            detachable = Util.getIntValue(Util.null2String(tempStr[5]), -1);
        }
        String editString = "";
        if (!userid.equals("1")) {
            /*rs.executeSql("select detachable from SystemSet");
            int detachable=0;
            if(rs.next()){
                detachable=rs.getInt("detachable");
            }*/
            if (detachable == 1) {//分权情况下要判断是否有权限删除
                //rs.executeSql("select * from workflow_monitor_bound where monitorhrmid="+hrmid+" and workflowid="+workflowid+" and operator="+userid);
                if (operatelevel <= 0) {//无权限
                    editString = " disabled ";
                }
            }
        }
        StringBuffer sb = new StringBuffer();
        if (Util.getIntValue(isForceDrawBack, 0) > 0) {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisFB(this," + hrmid + "," + workflowid + ",0)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' checked />");
        } else {
            sb.append("<input type='checkbox' tzCheckbox='true'  class='InputStyle' onclick='setisFB(this," + hrmid + "," + workflowid + ",1)' name='vradio_" + workflowid + "' " + editString)
                    .append("value='");
            sb.append("' />");
        }
//        if(Util.getIntValue(isForceDrawBack, 0)>0){
//            returnstr= "<INPUT type=radio name=\"oradio_"+workflowid+"\" CHECKED onclick=\"setisFB('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"oradio_"+workflowid+"\" onclick=\"setisFB('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }else{
//            returnstr= "<INPUT type=radio name=\"oradio_"+workflowid+"\" onclick=\"setisFB('"+hrmid+"','"+workflowid+"','1')\""+editString+">"+SystemEnv.getHtmlLabelName(115,intUserLanguage)+"<INPUT type=radio name=\"oradio_"+workflowid+"\" CHECKED onclick=\"setisFB('"+hrmid+"','"+workflowid+"','0')\""+editString+">"+SystemEnv.getHtmlLabelName(17875,intUserLanguage)+"";
//        }
        return sb.toString();
    }

    /**
     * 是否在列表显示选择筐
     *
     * @param workflowid 流程ID
     * @return true/false
     */
    @Deprecated
    public String getWFMonitorCheckBox(String workflowid) {
        String[] tempStr = Util.splitString(workflowid, "+");
        RecordSet rs = new RecordSet();
        int wfid = Util.getIntValue(tempStr[0]);
        int hrmid = Util.getIntValue(tempStr[1]);
        int logintype = Util.getIntValue(tempStr[2], 1);
        String flag = "false";
        if (logintype == 1) {
            rs.executeSql("select workflowid from workflow_monitor_bound where (isdelete='1' or isforceover='1') and workflowid=" + wfid + " and monitorhrmid=" + hrmid);
            if (rs.next()) {
                flag = "true";
            }
        }
        return flag;
    }

    /**
     * 获得流程耗时统计报表里的未操作者
     *
     * @param requestid
     * @return
     */
    public String getUnOperatorsForStat(String requestid) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1') or (isremark='4' and viewtype=0))  and requestid = " + requestid);
        while (rs.next()) {
            if (returnStr.equals("")) {
                if (rs.getInt("usertype") == 0) {
                    if (rs.getInt("agenttype") == 2)
                        returnStr += rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                    else
                        returnStr += rc.getResourcename(rs.getString("userid"));
                } else {
                    returnStr += cci.getCustomerInfoname(rs.getString("userid"));
                }
            } else {
                if (rs.getInt("usertype") == 0) {
                    if (rs.getInt("agenttype") == 2)
                        returnStr += "," + rc.getResourcename(rs.getString("agentorbyagentid")) + "->" + rc.getResourcename(rs.getString("userid"));
                    else
                        returnStr += "," + rc.getResourcename(rs.getString("userid"));
                } else {
                    returnStr += cci.getCustomerInfoname(rs.getString("userid"));
                }
            }
        }
        return returnStr;
    }

    /**
     * 去除前后指定字符
     *
     * @param str
     * @param splitstr
     * @return
     */
    public String deleteFirstAndEndchar(String str, String splitstr) {
        boolean needround = false;
        if (str.substring(0, splitstr.length()).equals(splitstr)) {
            str = str.substring(splitstr.length());
            needround = true;
        }
        if (str.substring(str.length() - splitstr.length()).equals(splitstr)) {
            str = str.substring(0, str.length() - splitstr.length());
            needround = true;
        }
        if (needround) {
            return deleteFirstAndEndchar(str, splitstr);
        } else {
            return str;
        }
    }

    public String getIsmultiprintStr(String ismultiprint, String language) {
        String retStr = "";
        try {
            int languageid = Util.getIntValue(language, 7);
            if ("1".equals(ismultiprint)) {
                retStr = SystemEnv.getHtmlLabelName(27046, languageid);
            } else {
                retStr = SystemEnv.getHtmlLabelName(27045, languageid);
            }
        } catch (Exception e) {
            retStr = SystemEnv.getHtmlLabelName(27045, 7);
        }
        return retStr;
    }

    /**
     * 流程标题显示样式（是否加图片等），区分颜色
     *
     * @param requestname 流程标题
     * @param para2       请求ID + 流程ID + 显示类型 + 是否超时 + 用户语言 + 节点ID currentnodeid + 操作人类性isremark+用户id userID+ 代理人/被代理人ID + 代理/被代理类型
     * @return 流程标题显示样式
     */
    public String getWfNewLinkWithTitleNoAdditional(String requestname, String para2) {
        String returnStr = "";

        String[] tempStr = Util.splitString(para2, "+");
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int isovertime = Util.getIntValue(tempStr[3], 0);
        int userlang = Util.getIntValue(Util.null2String(tempStr[4]), 7);
        String nodeid = Util.null2String(tempStr[5]);
        String isremark = Util.null2String(tempStr[6]);
        String userID = Util.null2String(tempStr[7]);
        String isprocessedvalue = "";
        if (tempStr.length >= 11) {
            isprocessedvalue = Util.null2String(tempStr[10]);
        }

        String agentorbyagentid = "";
        String agenttype = "";

        if (tempStr.length >= 10) {
            agenttype = Util.null2String(tempStr[9]);
        }
        boolean isprocessed = false;
        if ((isremark.equals("0") && (isprocessedvalue.equals("0") || isprocessedvalue.equals("3") || isprocessedvalue.equals("2"))) || isremark.equals("5")) {
            isprocessed = true;
        }
        if (viewtype.equals("0")) {
            //新流程,粗体链接加图片
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDOut_wev8.gif\' align=absbottom></span>";
            } else if ("1".equals(agenttype)) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDNew_wev8.gif\' align=absbottom></span>";
            }
        } else if (viewtype.equals("-1")) {
            //旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDOut_wev8.gif\' align=absbottom></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src=\'/images/BDNew2_wev8.gif\' align=absbottom></span>";
            }
        } else {
            //旧流程,普通链接
            if (isprocessed) {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'><IMG src='"+contextPath+"/images/BDOut_wev8.gif' align=absbottom></span>";
            } else {
                returnStr = "<a href=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid + "&isovertime=" + isovertime
                        + "\'," + requestid + ") >" + requestname + "</a><span id=\'wflist_" + requestid + "span\'></span>";
            }
        }
        return returnStr;
    }

    /**
     * 流程接口部署列表的checkbox框
     */
    public String getInterfaceChecBox(String deployStatus) {
        deployStatus = Util.null2String(deployStatus);
        if (deployStatus.equals("1")) {
            return "false";
        }
        return "true";
    }

    /**
     * 流程接口部署详细的checkbox框
     */
    public String getInterfaceDetailChecBox(String id) {
        return "true";
    }

    /**
     * 流程接口部署状态描述
     */
    public String getDeployDesc(String value) {
        value = Util.null2String(value);
        if (value.equals("1")) {
            return ""+ SystemEnv.getHtmlLabelName(388229, ThreadVarLanguage.getLang())+"";
        }
        return "<span class='noDeploy'>"+ SystemEnv.getHtmlLabelName(10003627, ThreadVarLanguage.getLang())+"</span>";
    }

    /**
     * 流程接口封存状态描述
     */
    public String getClosedDesc(String value) {
        value = Util.null2String(value);
        if (value.equals("1")) {
            return ""+ SystemEnv.getHtmlLabelName(22151, ThreadVarLanguage.getLang())+"";
        }
        return ""+ SystemEnv.getHtmlLabelName(1984, ThreadVarLanguage.getLang())+"";
    }

    /**
     * 类型描述
     */
    public String getTypeDesc(String isnode, String ispreadd) {
        isnode = Util.null2String(isnode);
        ispreadd = Util.null2String(ispreadd);
        if (isnode.equals("0")) {
            return ""+ SystemEnv.getHtmlLabelName(15587, ThreadVarLanguage.getLang())+"";
        }
        if (ispreadd.equals("0")) {
            return ""+ SystemEnv.getHtmlLabelName(31705, ThreadVarLanguage.getLang())+"";
        }
        return ""+ SystemEnv.getHtmlLabelName(31706, ThreadVarLanguage.getLang())+"";
    }

    /**
     * 流程接口部署显示操作
     */
    public List<String> getInterfaceOperate(String id, String deployStatus, String closed) {
        List<String> returnList = new ArrayList<String>();
        if (deployStatus.equals("1")) {
            returnList.add("false");
            returnList.add("true");
        } else {
            returnList.add("true");
            returnList.add("false");
        }
        if (closed.equals("1")) {
            returnList.add("false");
            returnList.add("true");
        } else {
            returnList.add("true");
            returnList.add("false");
        }
        return returnList;
    }

    /**
     * 流程接口部署详细显示操作
     */
    public List<String> getInterfaceDetailOperate(String id) {
        List<String> returnList = new ArrayList<String>();
        returnList.add("true");
        return returnList;
    }

    public List getshowTransOperate(String id) {
        List delList = new ArrayList();
        delList.add("true");
        return delList;
    }

    /**
     * 仅用于浏览按钮功能的演示，请不要用于真实的场景
     * 该功能最终的目的是返回一个JSON格式的字符串，
     * 具体的格式为：[{"browserValue":"11111","browserSpanValue":"张三"},{"browserValue":"2222","browserSpanValue":"李四"}]
     * browserValue对应的是页面上的浏览按钮的隐藏域中的值，比如人的ID、客户的ID等
     * browserSpanValue对应的是页面上的浏览按钮显示的中文名称，比如人的名称、客户的名称等
     * 从对象到字符串的转换可以用JsonUtils.list2json,非常方便；当然你也可以自己写其他的方法去拼，只要格式正确就可以
     */
    public String getBrowserPerson(String requestid, String para) {
        String[] tempStr = Util.splitString(para, "+");
        String userid = Util.null2String(tempStr[1]);
        String showoperators = "";
        RecordSet rs = new RecordSet();
        try {
            showoperators = "0".equals(RequestDefaultComInfo.getShowoperator("" + userid)) ? "0" : "1";
        } catch (Exception eshows) {
        }
        ArrayList<HashMap<String, String>> maps = new ArrayList<HashMap<String, String>>();
        if (showoperators.equals("1")) {
            rs.executeSql("select distinct userid,usertype,agenttype,agentorbyagentid from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);

            while (rs.next()) {
                if (rs.getInt("usertype") == 0) {
                    String personId = rs.getString("userid");
                    String persoonName = rc.getResourcename(personId);
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put("browserValue", personId);
                    map.put("browserSpanValue", persoonName);
                    maps.add(map);
                }
            }
        }
        return JsonUtils.list2json(maps);
    }

    public String getWFMultiSubmit(String wfid, int nodeid, String isremark, int takisremark) {
        String returnstr = "0";
        RecordSet rs = new RecordSet();

        if (!"".equals(wfid.trim()) && StringUtils.isNumeric(wfid)) {
            rs.execute("select multiSubmit,submittype from WORKFLOW_BASE WHERE ID = " + wfid);
            while (rs.next()) {
                int multiSubmit = Util.getIntValue(rs.getString("multiSubmit"), 0);
                int submittype = Util.getIntValue(rs.getString("submittype"), 0);

                if (multiSubmit == 1) {
                    if (("1".equals(isremark) && takisremark != 2) || "9".equals(isremark)) {//转发，抄送只判断有没有开启批量提交开关，不判断节点
                        returnstr = "1";
                    } else {
                        if (submittype == 0) {//全部
                            returnstr = "1";
                        } else {
                            //自由节点，集成发起节点的配置
                            rs.execute("select startnodeid from workflow_nodebase where isfreenode = 1 and id = " + nodeid);
                            if (rs.next()) {
                                int startnodeid = Util.getIntValue(rs.getString(1), -1);
                                if (startnodeid != -1)
                                    nodeid = startnodeid;
                            }
                            nodeid = FreeNodeBiz.getExtendNodeId(nodeid);
                            rs.execute("select 1 from workflow_flownode where workflowid = " + wfid + " and nodeid = " + nodeid + " and batchsubmit = 1");
                            if (submittype == 1) {//选择节点
                                if (rs.next()) {
                                    returnstr = "1";
                                }
                            } else if (submittype == 2) {//排除节点
                                if (!rs.next()) {
                                    returnstr = "1";
                                }
                            }
                        }
                    }
                }
            }
        }
        return returnstr;
    }

    // modigy by wwp 20190906
    public String getWorkflowname(String workflowid, String sysid) {
        String rtnStr = "";
        if (workflowid.indexOf("-") != -1) {
            RecordSet rs = new RecordSet();
            rs.executeSql("select workflowname from ofs_workflow where workflowid=" + workflowid);
            rs.next();
            rtnStr = Util.null2String(rs.getString(1));
        } else {
            rtnStr = wci.getWorkflowname(workflowid);
        }
        // 下面方法使返回的 【系统名称】- 流程名称
        if (sysid != null) {
            RequestUtil requestutil = new RequestUtil();
            OfsSettingObject ofso = requestutil.getOfsSetting();
            String showSysname = ofso.getShowsysname();
            if ("1".equals(showSysname) || "2".equals(showSysname)) {
                // workflowid < 0 为异构系统  >0 为泛微oa 获取简称 或全称
                if (workflowid.indexOf("-") != -1) {
                    if (sysid == "") {
                        RecordSet recordSet = new RecordSet();
                        String getSysidSql = " select sysid from ofs_workflow where workflowid = ? ";
                        recordSet.executeQuery(getSysidSql, workflowid);
                        recordSet.next();
                        sysid = recordSet.getString("sysid");
                    }
                    rtnStr = "【" + requestutil.getSysname(sysid, showSysname) + "】-" + rtnStr;             // 要添加的异构系统前缀

                } else {
                    if ("1".equals(showSysname)) {
                        rtnStr = "【" + ofso.getOashortname() + "】-" + rtnStr;
                    } else if ("2".equals(showSysname)) {
                        rtnStr = "【" + ofso.getOafullname() + "】-" + rtnStr;
                    }
                }
            }


        }
        return rtnStr;
    }

    public String getWorkflowname(String workflowid) {
		/*if(workflowid.indexOf("-")!=-1){
			RecordSet rs = new RecordSet();
			rs.executeSql("select workflowname from ofs_workflow where workflowid="+workflowid);
			rs.next();
			return Util.null2String(rs.getString(1));
		}else{
			return wci.getWorkflowname(workflowid);
		}*/
        return this.getWorkflowname(workflowid, null);
    }

    public String getCurrentNode(String currentnodeid, String requestid) {
        String returnStr = "";
        RecordSet rs = new RecordSet();
        if (currentnodeid.equals("-1")) {
            if(rs.getDBType().equals("oracle")){
                rs.executeSql("select nodename from  (select nodename,operatedate, operatetime from ofs_todo_data where requestid = "+requestid + " union all select nodename,operatedate, operatetime from ofs_done_data where requestid = "+requestid +") t1 where rownum = 1 order by operatedate desc, operatetime desc" );
            }else if(rs.getDBType().equals("mysql")){
                rs.executeSql("select nodename from  (select nodename,operatedate, operatetime from ofs_todo_data where requestid = "+requestid + " union all select nodename,operatedate, operatetime from ofs_done_data where requestid = "+requestid +") t1 order by operatedate desc, operatetime desc limit 1" );
            }else if(rs.getDBType().equals("postgresql")){
                rs.executeSql("select nodename from  (select nodename,operatedate, operatetime from ofs_todo_data where requestid = "+requestid + " union all select nodename,operatedate, operatetime from ofs_done_data where requestid = "+requestid +") t1 order by operatedate desc, operatetime desc limit 1" );
            }else{
                rs.executeSql("select top 1 nodename from  (select nodename,operatedate, operatetime from ofs_todo_data where requestid = "+requestid + " union all select nodename,operatedate, operatetime from ofs_done_data where requestid = "+requestid +") t1 order by operatedate desc, operatetime desc" );
            }
        } else {
            return WorkflowBaseBiz.getWorkflowNodeName(Util.getIntValue(currentnodeid));
        }
        if (rs.next()) {
            returnStr = rs.getString("nodename");
        }

        return returnStr;
    }

    /**
     * 获取接收时间
     *
     * @param requestid
     * @param para
     * @return
     */
    public String getWFUrgerRecievedate(String requestid, String para) {
        RecordSet rs = new RecordSet();
        String returnStr = "";
        if (rs.getDBType().equals("oracle")) {
            rs.executeSql("select max(receivedate||' '||receivetime) as receivedatetime from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);
        } else if (rs.getDBType().equals("mysql")) {
            rs.executeSql("select max(concat(receivedate, ' ' ,receivetime)) as receivedatetime from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);
        }
        else if (rs.getDBType().equals("postgresql")) {
            rs.executeSql("select max(receivedate||' '||receivetime) as receivedatetime from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);
        }
        else {
            rs.executeSql("select max(receivedate +' '+ receivetime) as receivedatetime from workflow_currentoperator where (isremark in ('0','1','5','7','8','9') or (isremark='4' and viewtype=0))  and requestid = " + requestid);
        }
        if (rs.next()) {
            returnStr = Util.null2String(rs.getString("receivedatetime"));
        }
        return returnStr;
    }

    //获取异构系统的url
    public String getAppUrl(String requestid, String para) {
        String[] tempStr = Util.splitString(para, "+");
        String sysid = tempStr[0];
        String workflowid = tempStr[1];
        String userid = tempStr[2];
        String showtype = tempStr[3];
        //RequestUtil ru = new RequestUtil();
        if (Util.getIntValue(requestid) > 0 || "".equals(Util.null2String(requestid))) {
            return "";
        } else {
            OfsTodoDataUtils ofsUtils = new OfsTodoDataUtils();
            return ofsUtils.getShowUrl(sysid,requestid,userid,showtype);//集成新方法获取appurl
            //return ru.getShowUrl(sysid, workflowid, requestid, userid, showtype);
        }
    }

    /**
     * 格式化金额
     *
     * @param amt
     * @param para
     * @return
     */
    public String formatAmount(String amt, String para) {
        DecimalFormat df = new DecimalFormat("####################################################0.00");
        if ("".equals(amt)) {
            amt = "0.00";
        }
        String amtStr = df.format(Util.getDoubleValue(amt, 0.00));
        return "<font color='red'>" + df.format(Math.abs(Util.getDoubleValue(amtStr))) + "</font>";
    }

    /**
     * 格式化金额2
     *
     * @param amt
     * @param para
     * @return
     */
    public String formatAmount2(String amt, String para) {
        DecimalFormat df = new DecimalFormat("####################################################0.00");
        if ("".equals(amt)) {
            amt = "0.00";
        }
        String amtStr = df.format(Util.getDoubleValue(amt, 0.00));
        return df.format(Math.abs(Util.getDoubleValue(amtStr)));
    }

    //反馈黄点提示判断
    public boolean isNeedBack(String paraNeedBack, String viewtype) {
        String tempStr4NeedBack[] = Util.splitString(paraNeedBack, "+");
        return isNeedBack(tempStr4NeedBack, viewtype);
    }

    //反馈黄点提示判断
    public static boolean isNeedBack(String tempStr4NeedBack[], String viewtype) {
        String viewDate = Util.null2String(tempStr4NeedBack[0]).trim();
        String viewTime = Util.null2String(tempStr4NeedBack[1]).trim();
        String lastFeedBackDate = Util.null2String(tempStr4NeedBack[2]).trim();
        String lastFeedBackTime = Util.null2String(tempStr4NeedBack[3]).trim();
        String needwfback = Util.null2String(tempStr4NeedBack[4]).trim();
        String lastFeedBackOperator = Util.null2String(tempStr4NeedBack[5]).trim();
        String userid = Util.null2String(tempStr4NeedBack[6]).trim();
        if ("".equals(lastFeedBackDate) || "".equals(lastFeedBackTime) || lastFeedBackOperator.equals(userid) || ("".equals(lastFeedBackOperator) && !"".equals(lastFeedBackDate))) {
            return false;
        } else {
            return ("-2".equals(viewtype) && "1".equals(needwfback) && (lastFeedBackDate + " " + lastFeedBackTime).compareTo((viewDate + " " + viewTime).trim()) > 0);
        }
    }

    public String getUnoperatorNew(String requestid,String para){
        String paraArr[] = Util.splitString(para,"+");
        String userid = paraArr[0];
        String userLanguage = paraArr[1];
        String realuserid = paraArr.length > 2 ? paraArr[2] : "";
        String moduleId = paraArr.length > 3 ? Util.null2String(paraArr[3]) : "";//用于区分同一个页面，两个不同模块都显示未操作者，区分spanid
        if("0".equals(RequestDefaultComInfo.getShowoperator("" + userid))){//开启默认显示未操作者，则和原本的处理方式相同，并且受控折行开关
            String returnStr = "<span id='" + realuserid + requestid + moduleId + "loding' style=\"display:flex\">";
            returnStr += "<span style='cursor:hand;text-decoration: underline' onClick=ShowAllUnopertors2(" + requestid + ",'" + realuserid + "','" + moduleId + "') >" + SystemEnv.getHtmlLabelName(89, Util.getIntValue(userLanguage)) + "</span>";
            returnStr += "</span>";
            return returnStr;
        }else{//否则异步加载
            return "<span id="+realuserid+requestid+moduleId+"loding"+" style=\"white-space:normal;display:flex\"><img src='"+contextPath+"/images/wf/loding_wev8.gif' /><span>";
        }
    }

    /**
     * 增加urlParams作为一些特殊场景自动携带一些参数：比如默认携带监控参数，主要用在后台的权限转移，其他入口进来urlParams默认是空  luosy 2019/1/17
     *
     * @param requestname
     * @param para2
     * @param needFormat
     * @param urlParams
     * @return
     */
    public String commonReqNameTransMethod(String requestname, String para2, boolean needFormat, String urlParams, boolean showAttentionTag) {
        String[] tempStr = null;
        boolean isNeedBack = false;
        if (para2.startsWith("S")) {
            String[] tempStr_tmp = Util.splitString(para2, "+");
            tempStr = Arrays.copyOfRange(tempStr_tmp, 9, tempStr_tmp.length);
            isNeedBack = isNeedBack(Arrays.copyOfRange(tempStr_tmp, 1, 8), Util.null2String(tempStr[2]));
        } else {
            tempStr = Util.splitString(para2, "+");
        }
        RecordSet rs = new RecordSet();
        String returnStr = "";
        String requestid = Util.null2String(tempStr[0]);
        String workflowid = Util.null2String(tempStr[1]);
        String viewtype = Util.null2String(tempStr[2]);
        int userlang = Util.getIntValue(Util.null2String(tempStr[3]), 7);
        String nodeid = Util.null2String(tempStr[4]);
        String isremark = Util.null2String(tempStr[5]);
        String userID = Util.null2String(tempStr[6]);
        String agenttype = Util.null2String(tempStr[8]);
        String isbereject = Util.null2String(tempStr[13]);
        String isprocessed = Util.null2String(tempStr[9]);
        String takisremark = Util.null2String(tempStr[14]);

        String nodetitle = "";
        if (needFormat) {
            int isbill = 0;
            int formid = 0;
            // //根据后台设置在MAIL标题后加上流程中重要的字段
            rs.executeQuery("select formid,isbill from workflow_base where id=?",workflowid);
            if (rs.next()) {
                formid = rs.getInt(1);
                isbill = rs.getInt(2);

            }
            requestname = rbu.formatRequestname(requestname, workflowid, requestid, isbill, formid, userlang);
        }

        //判断是否显示【退回】【代理】标识及超时紫点
        boolean isprocessedTip = false;
        boolean hasAgentTip = false;
        boolean hasRejectTip = false;
        if ((isremark.equals("0") && (isprocessed.equals("0") || isprocessed.equals("3") || isprocessed.equals("2"))) || isremark.equals("5")) {
            isprocessedTip = true;
        }
        if ("2".equals(agenttype) && (("0".equals(isremark) && !"-2".equals(takisremark)) || "1".equals(isremark) || "7".equals(isremark) || "8".equals(isremark) || "9".equals(isremark) || "11".equals(isremark))) {
            hasAgentTip = true;
        }
        if ("1".equals(isbereject) && ("0".equals(isremark) && !"-2".equals(takisremark))) {
            hasRejectTip = true;
        }

        // 改为按要求显示自定义流程标题的前缀信息
        if ("0".equals(isremark)) {
            rs.executeSql("select nodetitle from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid);
            if (rs.next()) {
                nodetitle = Util.null2String(rs.getString("nodetitle"));
            }
        }
        if (!"".equals(nodetitle) && !"null".equalsIgnoreCase(nodetitle)) {
            nodetitle = "（" + nodetitle + "）";
            requestname = nodetitle + requestname;
        }
        if (hasAgentTip) {
            requestname = SystemEnv.getHtmlLabelName(390272, userlang) + requestname;
        }
        if (hasRejectTip) {
            requestname = SystemEnv.getHtmlLabelName(390271, userlang) + requestname;
        }

        String attentionTag = "";
        if (showAttentionTag)
            attentionTag = new RequestAttentionBiz().getAttentionTag(Util.getIntValue(requestid), Util.getIntValue(userID), 0, userlang);

        if (viewtype.equals("0")) {
            // 新流程,粗体链接加图片
            if (isprocessedTip) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>" + attentionTag;
            } else if ("1".equals(agenttype)) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19154, userlang)
                        + "'/></span>";
            } else {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19154, userlang)
                        + "'/></span>" + attentionTag;
            }
        } else if (viewtype.equals("-1") || isNeedBack) {
            // 旧流程,有新的提交信息未查看,普通链接加图片
            if (isprocessedTip) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>" + attentionTag;
            } else {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDNew2_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(20288, userlang)
                        + "'/></span>" + attentionTag;
            }
        } else {
            // 旧流程,普通链接
            if (isprocessedTip) {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ");doReadIt("
                        + requestid
                        + ",\"\",this); >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'><img src='"+contextPath+"/images/ecology8/statusicon/BDOut_wev8.png' title='"
                        + SystemEnv.getHtmlLabelName(19081, userlang)
                        + "'/></span>" + attentionTag;
            } else {
                returnStr = "<a href='javaScript:void(0)' onClick=javaScript:openFullWindowHaveBarForWFList(\'/workflow/request/ViewRequestForwardSPA.jsp?requestid="
                        + requestid
                        + urlParams
                        + "\',"
                        + requestid
                        + ") >"
                        + requestname
                        + "</a><span id=\'wflist_"
                        + requestid
                        + "span\'></span>" + attentionTag;
            }
        }
        return returnStr;
    }

    public String getFormValue(String requestid,String para){
        writeLog("getFormValue:requestid::"+requestid);
        writeLog("getFormValue:para::"+para);
        String returnStr = "";
        String paraArr[] = Util.splitString(para,"+");
        String fieldName = paraArr[0];
        String workflowid = paraArr[1];
        requestid = paraArr[2];
        RecordSet rs = new RecordSet();
        String formId = wf.getFormId(workflowid);
        String tablename = wcInfo.getTablename(formId);
        String fieldid = "";
        String fieldhtmltype = "";
        String fielddbtype = "";
        String fieldvalue = "";
        String type = "";
        rs.executeQuery("select id,fieldhtmltype,fielddbtype,type from workflow_billfield where billid = ? and fieldname = ?",Util.getIntValue(formId),fieldName);
        if(rs.next()){
            fieldid = rs.getString(1);
            fieldhtmltype = rs.getString(2);
            fielddbtype = rs.getString(3);
            type = rs.getString(4);
        }
        rs.executeQuery("select "+fieldName +" from "+tablename + " where requestid = ?", Util.getIntValue(requestid));
        if(rs.next()){
            fieldvalue = rs.getString(1);
        }
        if ("3".equals(fieldhtmltype)){
            List<BrowserValueInfo> browserFieldValue = this.getBrowserFieldValue(type, fieldvalue, fielddbtype);
            for(BrowserValueInfo info : browserFieldValue){
                String name = info.getName();
                returnStr += name +",";
            }
            if (returnStr.endsWith(",")){
                returnStr = returnStr.substring(0,returnStr.length()-1);
            }
        }
        if ("5".equals(fieldhtmltype)){
            returnStr = this.getSelectFieldValue(fieldid, fieldvalue);
        }
        return returnStr;
    }

    /**
     * 获取选择框选中值
     * */
    public String getSelectFieldValue(String fieldId, String selectValue) {
        String selectValueName = "";
        RecordSet rs = new RecordSet();
        String sql = "select selectvalue,selectname from workflow_selectitem where selectvalue = ? and fieldid=? and (cancel<>'1' or cancel is null) order by listorder,selectvalue";
        rs.executeQuery(sql,selectValue, fieldId);
        if (rs.next()) {
            selectValueName = Util.null2String(rs.getString("selectname"));
        }
        return selectValueName;
    }

    /**
     * 获取浏览按钮的值
     * */
    public List<BrowserValueInfo> getBrowserFieldValue(String fieldType, String fieldValue, String fieldDbType)  {
        BrowserValueInfoService browserValueInfoService = new BrowserValueInfoService();
        List <BrowserValueInfo> result = new ArrayList<>();
        try {
            result= browserValueInfoService.getBrowserValueInfo(fieldType, fieldDbType, 0, fieldValue, 7, "", "");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}
