(系统函数库<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