(系统函数库<jodg杰作>)

//--------------------系统函数库----------------------
var sys_function = {
    /**
     * 本函数库库名称
     */
    _FUNCTION_LIBNAME: "系统函数库",

    /**
     * 系统数据库名称
     */
    SYSDBNAME: "OBPM",

    /**
     * URL路径
     */
    SERVER_URL: "http://.....",

    /**
     * applicationid
     */
    applicationid: "自定义",


    /**
     * 数据源名称
     */
    DATASOURCENAME: "数据源名称",

    /**
    *    数据字典表单名称
    */
    DATAFORMNAME: "数据字典",

    /**
    *    数据字典显示值名称
    */
    DATAFILDNAME: "名称",

    /**
    *    数据字典表单中项目字段名称
    */
    DATAITEMFILEDNAME: "项目",

    /**
    *    数据字典表单中排序字段名称
    */
    DATAORDERBYFILEDNAME: "排序号",


    /**
    * updateByDSName(dataSourceName, sql);
    * 
    */
    updateByDSName: function (sql) {
        updateByDSName(sys_function.DATASOURCENAME, sql);
    },
    /**
     * 封装内网URL为外网访问URL
     * url :  内网应用URL
     */
    getServerUrl: function (url) {
        return sys_function.SERVER_URL + url;
    },

    /**
     * 封装内网URL为外网访问URL
     * url :  内网应用URL
     */
    getCommonUrl: function (url) {
        var request = $WEB.getParamsTable().getHttpRequest();
        var url_head = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
        return (url_head + url);
    },

    /**
     * 通过用户ID获取该用户部门生成选项option
     * userId : 用户ID
     */
    getDepOptionsByUserId: function (userId) {
        var opts = createOptions();
        if (userId == null) {
            return opts;
        }
        var user = getUserById(userId);
        if (user != null) {
            var depts = user.getDepartments();
            for (var iter = depts.iterator(); iter.hasNext();) {
                var dep = iter.next();
                opts.add(dep.getName(), dep.getId());
            }
        }
        return opts;
    },

    /**
     * 通过用户ID获取该用户部门生成选项option
     * userId : 用户ID
     */
    getDefDepOptionsByUserId: function (userId) {
        var opts = createOptions();
        if (userId == null) {
            return opts;
        }
        var user = getUserById(userId);
        if (user != null) {
            var depId = user.getDefaultDepartment();
            var depProcess = getDepartmentProcess();
            var dep = depProcess.doView(depId);
            opts.add(dep.getName(), depId);
        }
        return opts;
    },

    /**
     * 通过用户ID或部门ID并判断表单状态标签生成部门选项option
     * userId : 用户ID
     */
    getDepOptionsByUserIdAndDepId: function (statelabel, userId, depId) {
        var opts = createOptions();

        if (userId == null) {
            return opts;
        }
        if (depId != null && depId.trim().length() > 0) {
            var depProcess = getDepartmentProcess();
            var newDepId = new Packages.java.lang.String(depId);
            var dep = depProcess.doView(newDepId);
            if (dep != null) {
                opts.add(dep.getName(), newDepId);
            } else {
                opts.add("", newDepId);
            }
        } else if (userId != null && userId.trim().length() > 0) {
            var user = getUserById(userId);
            var depIds = user.getDepartments();
            if (depIds != null) {
                for (var iter = depIds.iterator(); iter.hasNext();) {
                    var dept = iter.next();
                    opts.add(dept.getName(), dept.getId());
                }
            }
        }

        return opts;
    },


    /**
     * 通过部门ID获取部门名称
     * depId : 部门ID
     */
    getDepNameById: function (depId) {
        var depName = "";
        if (depId == null || "".equals(depId)) {
            return depName;
        }
        var depProcess = getDepartmentProcess();
        var dep = depProcess.doView(depId);
        if (dep != null) {
            depName = dep.getName();
        }
        return depName;
    },

    /**
     * 通过用户ID获取用户的名称
     * userIds :用户ID已分号隔开
     */
    getUserNamesByUserIds: function (userIds) {
        println(sys_function._FUNCTION_LIBNAME + "(sys_function)  函数(getUserNamesByUserIds)开始执行, 参数: userIds='" + userIds + "'");
        if (userIds == null) {
            return "";
        }
        var userNames = "";
        var newUserIds = new Packages.java.lang.String(userIds);
        var arrUserId = splitText(newUserIds, ";");
        for (var i = 0; i < arrUserId.length; i++) {
            var userId = arrUserId[i];
            var user = getUserById(userId);
            if (user != null) {
                userNames += ";" + user.getName();
            }
        }
        if (!"".equals(userNames)) {
            userNames = new Packages.java.lang.String(userNames);
            userNames = userNames.substring(1, userNames.length());
        }
        println(sys_function._FUNCTION_LIBNAME + "(sys_function)  函数(getUserNamesByUserIds)结束执行");
        return userNames;
    },

    /**
     * 通过附件字段的值生成附件超链接
     * AnnexValue : 附件字段的值
     */
    getDisplayAnnex: function (AnnexValue) {
        if (AnnexValue == null) {
            return "";
        }
        var rnt = "";
        var newAnnexValue = new Packages.java.lang.String(AnnexValue);
        if (newAnnexValue == null || newAnnexValue.trim().length() <= 0) {
            return "";
        }
        var annexList = Packages.cn.myapps.util.json.JsonUtil.toCollection(newAnnexValue);
        if (annexList != null && annexList.size() > 0) {
            var request = $WEB.getParamsTable().getHttpRequest();
            var urlHead = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
            for (var iter = annexList.iterator(); iter.hasNext();) {
                var object = iter.next();
                var name = object.get("name");
                var path = object.get("path");
                var url = urlHead + path;
                rnt += "<a target='_blank' href='" + url + "'>" + name + "</a><br />";
            }
        }
        return rnt;
    },

    /**
     * 获取当前时间下周日期
     */
    getNextWeek: function () {
        var list = createObject("java.util.ArrayList");
        var cal = new Packages.java.util.GregorianCalendar();
        cal.setTime(getToday());
        cal.add(Packages.java.util.Calendar.DAY_OF_WEEK, (9 - cal.get(Packages.java.util.Calendar.DAY_OF_WEEK)) % 7);
        var fomat = new Packages.java.text.SimpleDateFormat("yyyy-MM-dd");
        for (var i = 0; i < 7; i++) {
            list.add(fomat.format(cal.getTime()));
            cal.roll(Packages.java.util.Calendar.DAY_OF_YEAR, true);
        }
        return list;
    },

    /**
     * 发送手机短信
     * title:手机短信标题, content:手机短信内容
     */
    sendSMS: function (title, content) {
        var docid = getId();
        var curUser = getWebUser();
        var telephone = curUser.getTelephone();
        return sendSMS(docid, title, content, telephone, false, false);
    },

    /**
     * 给多个人发送手机短信
     * title:手机短信标题, content:手机短信内容, userIds : 收信人多个人已分号隔开
     */
    sendSMS2: function (title, content, userIds) {
        if (userIds == null || userIds == "") {
            return 0;
        }
        var docid = getId();
        var arrUserId = splitText(userIds, ";");
        for (var i = 0; i < arrUserId.length; i++) {
            var userId = arrUserId[i];
            var user = getUserById(userId);
            if (user != null) {
                var telephone = user.getTelephone();
                if (telephone != null && !"".equals(telephone)) {
                    sendSMS(docid, title, content, telephone, false, false);
                }
            }
        }
        return 1;
    },

    /**
     * 是否启动流程
     */
    isStateStarted: function () {
        var doc = getCurrentDocument();
        var statelabel = doc.getStateLabel();
        var flag = true;
        if (statelabel == null || statelabel.trim().length() <= 0) {
            flag = false;
        }
        return flag;
    },

    /**
     * 判断当前用户是否含有某角色
     * roleName : 角色名称
     */
    curUserHasThisRole: function (roleName) {
        var flag = false;
        if (roleName == null || "".equals(roleName)) {
            return flag;
        }
        var roles = getWebUser().getRoles();
        for (var iter = roles.iterator(); iter.hasNext();) {
            var role = iter.next();
            var _roleName = role.getName();
            if (_roleName.equals(roleName)) {
                flag = true;
                break;
            }
        }
        return flag;
    },

    /**
     * 提交至回退人
     */
    flowToBacker: function () {
        var doc = getCurrentDocument(); //当前文档
        var newDoc = findDocument(doc.getId());
        doc.setVersions(newDoc.getVersions());
        doc.setMappingId(newDoc.getMappingId());
        var flowid = doc.getFlowid();  //表单绑定的流程id
        var lastRelationHis = getLastRelationHis(doc.getId(), flowid);   //获取最好一条历史流程
        if (lastRelationHis != null && lastRelationHis.getFlowOperation().equals("81")) {
            var flowOption = "86";         //流转类型  
            var curUser = getWebUser();    //当前用户 
            var params = new Packages.cn.myapps.base.action.ParamsTable();   //参数对象
            var stateMachine = new Packages.cn.myapps.core.workflow.engine.StateMachine();
            var curNodeid = stateMachine.getCurrUserNodeRT(doc, curUser).getNodeid();  //获取流程当前流程节点ID
            var process = getDocumentProcess(); //表单业务处理类
            var comment = getParameter("_attitude");   //审批意见
            var nextNodeid = new Array();
            params.setParameter("_flowid", flowid);
            nextNodeid[0] = lastRelationHis.getStartnodeid();
            var lastProcessId = getLastApproverId();
            var submitTo = "[{\"nodeid\":'" + nextNodeid[0] + "',\"isToPerson\":'true',\"userids\":\"['" + lastProcessId + "']\"}]";
            params.setParameter("submitTo", submitTo);
            //println("开始节点"+curNodeid + "     结束节点"+nextNodeid[0]);  
            process.doFlow(doc, params, curNodeid, nextNodeid, flowOption, comment, curUser);
        }
    },

    /**
     * 判断当前文档最后一条流程是否为回退流程
     */
    isReturnStatertForCurUser: function () {
        var flag = true;
        var doc = getCurrentDocument(); //当前文档 
        var flowid = doc.getFlowid();  //表单绑定的流程id
        var lastRelationHis = getLastRelationHis(doc.getId(), flowid);   //获取最好一条历史流程
        if (lastRelationHis != null && "81".equals(lastRelationHis.getFlowOperation())) {
            var processor = "";
            var actors = doc.getState().getActors();
            if (actors != null) {
                for (var it = actors.iterator(); it.hasNext();) {
                    var actorrt = it.next();
                    if (actorrt.getIsprocessed()) {
                        continue;
                    }
                    if (actorrt.getActorid().equals(getWebUser().getId())) {
                        flag = false;
                    }
                }
            }
        }
        return !flag;
    },

    /**
     * 视图中勾选的记录存在流程数据,不能删除
     */
    isDelState: function () {
        var selectId = getParameterAsText("_selects");
        var sel = selectId.replace(";", "','");
        sel = "('" + sel + "')";
        var sql = "select domainid from t_document where (statelabel <> '' and statelabel is not null and statelabel <> '未提交') and id in " + sel;
        sql += " union all ";
        sql += " select domainid from t_document where author <> '" + getWebUser().getId() + "' and id in " + sel;
        if (countBySQL(sql) > 0) {
            return "非本人创建或在流程中的单据,不能删除!";
        }
        return "";
    }
}

函数库使用

提交至回退人的脚本使用(表单按钮使用<建议使用返回>)

操作前脚本:

#include "系统函数库";
(function() {
    sys_function.flowToBacker();
})();

隐藏脚本

#include "系统函数库";
(function() {
    return !(sys_function.isReturnStatertForCurUser());
})();
文档更新时间: 2023-09-16 07:08   作者:admin