前言
不定时更新,欢迎投稿
专注于MyApps脚本分享
感谢各位粉丝的关注不忘初心,方得始终
创建用户示例
(function(){
var name = "callTest";
var loginno = "callTest1";
var loginpwd = "123456";
var Base64Pwd ="";
var Base64 = new Packages.cn.myapps.common.util.Base64Util();
var LOGINPWDSBase = new Packages.java.lang.String(loginpwd);
var bytes = LOGINPWDSBase.getBytes();
var encoded = Base64.encode(bytes);
if(encoded.length()>2){
var lp = encoded.substring(0,2);
var rp = encoded.substring(2,encoded.length());
Base64Pwd = rp+lp;
}
var email = "email@qq.com"
var status =1;
var domainid=getDomainid(); //域id
var telephone = "18379855594";
var deptid="";
var department = "总经办";
var rolename = "员工";
var process = getDepartmentProcess();
var depts= process.getDepartmentByName(department,getDomainid());
for(var it=depts.iterator();depts!=null && it.hasNext();){
var dept = it.next();
deptid=dept.getId();
break;
}
var UserVO = new Packages.cn.myapps.common.model.user.UserVO();//实例化一个用户对象
var uuid = new Packages.cn.myapps.util.sequence.Sequence().getSequence();//创建UUID
UserVO.setId(uuid);
UserVO.setName(name);
UserVO.setLoginno(loginno);
UserVO.setLoginpwd(Base64Pwd);
UserVO.setEmail(email);
UserVO.setStatus(status);
UserVO.setDomainid(domainid);
UserVO.setTelephone(telephone);
UserVO.setDefaultDepartment(deptid);
var roleid = getRoleIdByName(rolename);
var uprocess = getUserProcess();
var userDepartmentRoleSet = new Packages.cn.myapps.common.model.user.UserDepartmentRoleSet(uuid,deptid,roleid);
var list = new Packages.java.util.HashSet();
list.add(userDepartmentRoleSet);
UserVO.setUserDepartmentRoleSets(list);
uprocess.doCreate(UserVO);
})()
调用用户添加接口 添加用户
(function () {
var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil();
var applicationId = getApplication();
var domainid = getDomainid()
var outputStr = "{\n" +
"\n" +
" \"name\": \"ekko\",\n" +
"\n" +
" \"loginno\": \"ekko\",\n" +
" \n" +
" \"loginpwd\":\"IzNDU2MT\",\n" +
"\n" +
" \"email\": \"email@teemlink.com\",\n" +
"\n" +
" \"emailPublic\": true,\n" +
"\n" +
" \"telephone\": \"13192286346\",\n" +
"\n" +
" \"telephonePublic\": true,\n" +
"\n" +
" \"calendarType\": \"i7xj207zBMEwBp8aATE\",\n" +
"\n" +
" \"calendarTypeName\": \"夜班日历\",\n" +
"\n" +
" \"telephone2\": \"13192286349\",\n" +
"\n" +
" \"telephonePublic2\": true,\n" +
"\n" +
" \"reportTree\": \"\",\n" +
"\n" +
" \"superiorid\": \"\",\n" +
"\n" +
" \"proxyUserid\": \"\",\n" +
"\n" +
" \"remarks\": \"\",\n" +
"\n" +
" \"startProxyTime\": \"\",\n" +
"\n" +
" \"endProxyTime\": \"\",\n" +
"\n" +
" \"permissionType\": \"public\",\n" +
"\n" +
" \"lockFlag\": 1,\n" +
" \n" +
" \"status\":1,\n" +
"\n" +
" \"dimission\": 1,\n" +
"\n" +
" \"defaultDepartment\": \"BFMzxTaCTWI6TbWLKXT\",\n" +
"\n" +
"\n" +
" \"_userRoleDepartmentJson\":'[{\"roleId\":\"UELSgsHXdMcRKv8s1DW\",\"departmentId\":\"BFMzxTaCTWI6TbWLKXT\",\"applicationId\":\"" + applicationId + "\",\"isDefaultDepartment\":\"true\"}]',\n" +
"\n" +
" \"_userKMRoleJson\": '[]',\n" +
"\n" +
" \"_kmRoleJson\":'[]',\n" +
"\n" +
" \"_kmRole\": '[]'\n" +
"\n" +
"}";
var HostUrl = "http://localhost:8080/obpm/authtime/domain/" + domainid + "/user";
var JSONString = URLConnector.post(HostUrl, outputStr);
println("JSONString--->" + JSONString);
var accessToken = JSONString.get("errmsg");
var docProcess = getDocumentProcess();
var formProcess = getFormProcess();
var Sequence = new Packages.cn.myapps.util.sequence.Sequence();
var uuid = Sequence.getSequence();
var newForm = formProcess.doViewByFormName("用户添加", getApplication());
var newDoc = docProcess.doNew(newForm, getWebUser(), createParamsTable());
newDoc.addStringItem("测试字段", accessToken);
newDoc.setId(uuid);
docProcess.doCreate(newDoc);
})()
视图SQL示例
(function(){
var doc = getCurrentDocument();//获取查询头doc对象
var PurchaseOrderNumber = doc.getItemValueAsString("PurchaseOrderNumber")//获取查询头对应字段的值
var sql="select domainid,id,formid,item_PurchaseOrderNumber from tlk_Number where 1=1";
if(PurchaseOrderNumber!="" && PurchaseOrderNumber != null){
sql+=" and item_PurchaseOrderNumber like '%"+PurchaseOrderNumber+"%'";
}
return sql;
})();
校验函数库示例
/**
身份证号合法性验证 支持15位和18位身份证号、支持地址编码、出生日期、校验位验证
**/
function IdentityCodeValid(code) {
var code = getItemValue(code);
var city = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外"
};
var tip = "";
var pass = true;
//验证身份证格式(6位地区编码,8位出生日期,3位顺序号,1位校验位)
if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {
tip = "身份证号格式错误";
return tip;
pass = false;
} else if (!city[code.substr(0, 2)]) {
tip = "地址编码错误";
pass = false;
return tip;
} else {
//18位身份证需要验证最后一位校验位
if (code.length == 18) {
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
if (parity[sum % 11] != code[17]) {
tip = "校验位错误";
pass = false;
return tip;
}
}
}
}
获取提交时填写的意见显示在表单中
/**
STARTNODEID 流程节点Id 可以通过查看流程源码获取
**/
(function(){
var sql = "";
var doc = getCurrentDocument();
var state = doc.getStateLabel();
sql = "SELECT DISTINCT '" + getDomainid() + "' AS DOMAINID,NAME AS ITEM_NAME,PROCESSTIME AS ITEM_PROCESSTIME,ATTITUDE AS ITEM_ATTITUDE,SIGNATURE AS ITEM_SIGNATURE FROM T_ACTORHIS T WHERE DOC_ID='" + getId() + "' AND EXISTS( SELECT 1 FROM T_RELATIONHIS WHERE STARTNODEID='1583766936149' AND ID=T.NODEHIS_ID) ORDER BY PROCESSTIME ASC ";
var count = countBySQL(sql);
if (count == 0) {
sql = "SELECT DISTINCT '" + getDomainid() + "' AS DOMAINID,NAME AS ITEM_NAME,PROCESSTIME AS ITEM_PROCESSTIME,ATTITUDE AS ITEM_ATTITUDE,SIGNATURE AS ITEM_SIGNATURE FROM t_flowhistory T WHERE DOC_ID='" + getId() + "' AND STARTNODEID='1583766936149' ORDER BY PROCESSTIME ASC ";
}
var str = "";
var datas = queryBySQL(sql);
if (datas != null && datas.size() > 0) {
for (var iter = datas.iterator(); iter.hasNext(); ) {
var data = iter.next();
var name = data.getItemValueAsString("NAME");
var processtime = data.getItemValueAsString("PROCESSTIME");
var attitude = data.getItemValueAsString("ATTITUDE");
var signature = data.getItemValueAsString("SIGNATURE");
if (!isNotNull(attitude)) {
attitude = "已阅。"
}
str += "<div>" + name + "于" + processtime + "填写意见:" + attitude;
if (isNotNull(signature)) {
var jsonObject = Packages.net.sf.json.JSONObject.fromObject(signature);
var imgBase64Code = jsonObject.get("data");
str += ",手签意见:<img src='data:image/jpg;base64," + imgBase64Code + "' style='height: 70px;'/>";
}
str += "</div>"
}
}
return str;
})();
下拉框选项脚本示例
(function(){
var opts=createOptions();
opts.add("显示值","真实值");
opts.add("显示值","真实值",true); //true 表示默认选中该选项
return opts;
})()
(function(){
var opts=createOptions();
opts.add("","");
var sql="select pay.* from tlk_支付方式管理 as pay where pay.ITEM_付款类型 = '测试'";
println(sql);
var datarts=queryBySQL(sql);
if(datarts!=null && datarts.size() > 0){
println("counttt" + payment);
for(var iter=datarts.iterator();iter.hasNext();){
var docone=iter.next();
println(docone.getItemValueAsString("支付方式"));
opts.add(docone.getItemValueAsString("支付方式"),docone.getItemValueAsString("支付方式"));
}
}
return opts;
})()
流程审批人脚本示例
(function(){
var doc = getCurrentDocument();
var user = doc.getItemValueAsString("用户选择框"); //表单用户选择框字段
var docids = splitText(user, ";");
var userlist = createObject("java.util.ArrayList");
for (var i = 0; i < docids.length; i++) {
if(docids != null) {
var userVO = getUserById(docids[i]);
userlist.add(userVO);
}
}
return userlist;
})()
(function(){
var doc = getCurrentDocument();
var user = doc.getItemValueAsString("用户选择框"); //表单用户选择框字段
var userVO = getUserById(user);
return userVO;
})()
智能搜索框获取数据脚本示例
(function(){
var ProjectNumber = getParentDocument().getItemValueAsString("项目编号");
var i = getParameter("_keyword");//获取输入的值
var opts=createOptions();
var sql="select a.domainid,b.item_分部分项工程 from tlk_甲方清单申请表 as a inner join tlk_清单明细表 as b on a.id = b.parent where a.item_项目编号='"+ProjectNumber+"' and b.item_分部分项工程 like'%"+i+"%'";
var datarts=queryBySQL(sql);
if(datarts!=null){
for(var iter=datarts.iterator();iter.hasNext();){
var docone=iter.next();
var name=docone.getItemValueAsString("分部分项工程");
var loginno=docone.getItemValueAsString("分部分项工程");
opts.add(name,loginno);
}
}
return opts;
})()
获取登录用户所有部门
(function(){
var value = "";//部门名称
var user = getWebUser();
var depts = user.getDepartments();
for(var iter = depts.iterator(); iter.hasNext();) {
var dept = iter.next();
value += dept.getName();
}
return value;
})()
获取视图选择框选中的数据插入包含元素示例
(function(){
var curDoc = getCurrentDocument();
var docid = curDoc.getId();
var selectId = getParameterAsText("_selects");
var docProcess = getDocumentProcess();
var formProcess = getFormProcess();
var newForm = formProcess.doViewByFormName("领用明细信息", getApplication());
var sel = selectId.replace(";", "','");
sel = "('" + sel + "')";
if (selectId != null || selectId.length > 0) {
var sql = "select * from tlk_材料信息表 where ID in " + sel;
var datas = queryBySQL(sql);
if (datas != null || datas.size() > 0) {
for (var iter = datas.iterator(); iter.hasNext(); ) {
var data = iter.next();
var newDoc = docProcess.doNew(newForm, getWebUser(), createParamsTable());
newDoc.setParent(docid);
newDoc.setApplicationid(getApplication());
newDoc.setDomainid(getWebUser().getDomainid());
newDoc.addStringItem("材料编号", data.getItemValueAsString("材料编号"));
docProcess.doCreate(newDoc);
}
}
}
})()
根据表单的流程状态来判断对表单行的隐藏或显示
//以下代码支持pc端
(function(){
var doc=getCurrentDocument();
var statelabel=doc.getStateLabel();
var html = " <script type=\"text/javascript\">";
html += "$(document).ready(function(){";
if("印章保管员审核".equals(statelabel) || "归档".equals(statelabel)){
html+="jQuery(\".yc1\").css(\"display\",\"\");";
}else{
html+="jQuery(\".yc1\").css(\"display\",\"none\");";
}
html+= "});";
html+=" </script>";
return html;
})();
//以下代码支持手机端
//控件的ID需要隐藏多个时使用;隔开
(function(){
var doc=getCurrentDocument();
var html = "";
var opcation =getItemValueAsString("opcation");
if('选项A'.equals(opcation)){
html+="<o-action action-type='documentshowhidden' documenthidden='控件的ID' documentshow=''>hidden</o-action>";
}else{
html+="<o-action action-type='documentshowhidden' documenthidden='' documentshow='控件的ID'>show</o-action>";
}
return html;
})();
获取当前节点审批人
(function(){
var AuditorList = getCurrentDocument().getAuditorList();
var AuditorListjson = AuditorList.substring(AuditorList.indexOf("[") + 2, AuditorList.indexOf("]") - 1);
var arr = splitString(AuditorListjson, '","');
var name = "";
for (var i = 0; i < arr.length; i++) {
var userVO = getUserById(arr[i]);
if (i == arr.length - 1) {
name += userVO.getName();
} else {
name += userVO.getName() + ";";
}
}
return name;
})()
二维码回调脚本
(function(){
var msg="";
var flag = true;
var WebUser = getWebUser();
var Userid = WebUser.getId();
var doc = getCurrentDocument();
var dept = WebUser.getDefaultDepartment();
var docid = doc.getId();
var starttime = format(getToday(),"yyyy-MM-dd HH:mm:ss");
var number = doc.getItemValueAsString("会议编号");
var sql = "select * from tlk_会议室签到s where item_会议编号 = '"+number+"' and item_用户 = '"+Userid+"'";
var t_count = countBySQL(sql);
if(t_count>0){
msg = "签到失败,你已经签到了";
}else{
var process = getDocumentProcess();
var formProcess = getFormProcess(); //申明表单业务处理类
var newForm = formProcess.doViewByFormName("会议室签到s",getApplication());
var doc1 = process.doNew(newForm,WebUser,createParamsTable());//创建记录
doc1.addStringItem("用户",Userid );
doc1.addStringItem("签到时间",starttime);
doc1.addStringItem("会议编号",number);
process.doCreate(doc1);
msg = "签到成功!";
}
return msg;
})()
创建HashMap示例
(function() {
var HashMap = new Packages.java.util.HashMap();
HashMap.put("key", "value");
HashMap.put("key1", "value1");
var setList = HashMap.keySet();
for (var iter = setList.iterator(); iter.hasNext(); ){
var map = iter.next();
println("map--->"+map);//获取全部key
println("value-->"+HashMap.get(map));//获取全部key对应的值
}
})()
查询登录用户所属部门对应tlk表单的数据示例
(function(){
var user = getWebUser();
var desId = user.getDefaultDepartment(); //获取登录用户默认部门
var desIdList = user.getDepartments(); //获取登录用户配置的部门,返回的是部门id的集合
var sql = "select * from tlk_resignationapplication";
var userVo = getUserProcess(); //根据部门id返回部门下所有用户
var UserList = userVo.getDatasByDept(desId);
var deptIDs = "(";
for(var it = UserList.iterator(); UserList != null && it.hasNext(); ) {
var dept = it.next();
deptIDs += "'" + dept.getId() + "',";
}
deptIDs = deptIDs.substring(0, deptIDs.length - 1)
deptIDs += ")";
sql += " where author in " + deptIDs;
return sql;
})()
获取审批意见
//只能在操作类型为流程处理使用, 判断审批意见是否必须
(function(){
var attitude=getParameter("attitude");//获取审批意见
var flowType = getParameter("_flowType");//获取流程状态 80提交 81回退
var signature = getParameter("_signature");//获取手签意见
var rtn="";
if("80".equals(flowType) && (attitude==null || attitude.trim().length()<=0)){
rtn = "审批意见必须填写!";
}
return rtn;
})()
创建表单数据并启动流程
(function () {
var msg = "";
var flag = true;
var WebUser = getWebUser();
var Userid = WebUser.getId();
var doc = getCurrentDocument();
var dept = WebUser.getDefaultDepartment();
var Sequence = new Packages.cn.myapps.util.sequence.Sequence();
var uuid = Sequence.getSequence();
var docid = doc.getId();
var starttime = format(getToday(), "yyyy-MM-dd HH:mm:ss");
var number = doc.getItemValueAsString("会议编号");
var process = getDocumentProcess();
var formProcess = getFormProcess(); //申明表单业务处理类
var newForm = formProcess.doViewByFormName("会议室签到", getApplication());
var doc1 = process.doNew(newForm, WebUser, createParamsTable()); //创建记录
doc1.setId(uuid);
doc1.addStringItem("用户", Userid);
doc1.addStringItem("签到时间", starttime);
doc1.addStringItem("会议编号", number);
//process.doCreate(doc1);
var flowid = "_xxxxx"; //流程id 可以去后台你画的流程哪里 对应的id 就是流程id
var params = createParamsTable(); //创建指定类对象
params.setParameter("_flowid", flowid) //value为对应的流程Id.
process.doStartFlowOrUpdate(doc1, params, WebUser); //启动流程并创建数据
})()
判断包含元素的是否为空
(function () {
var rtn = "";
var doc = getCurrentDocument();
var childs2 = doc.getChilds("订单明细");
var count2 = childs2.size();
if (count2 <= 0) {
rtn = "订单明细必须填写";
}
return rtn;
})()
获取包含元素的数据
(function () {
var user_name = "";
var doc = getCurrentDocument();
var childs = doc.getChilds("kf_mobilemeter");
println("childs ===" + childs);
if (childs != null && childs.size() > 0) {
for (var it = childs.iterator(); it.hasNext(); ) {
var subdoc = it.next();
user_name = subdoc.getItemValueAsString("user_name");
}
}
return user_name;
})()
获取网格视图时数据
/**
因为网格视图编辑数据后需要点击保存才会存到数据库 使用getChilds("订单明细"); 获取出来的数据是从数据库查询出来的
网格视图时获取填写的记录
**/
(function(){
var doc = getCurrentDocument();
var subDomcument = doc.getSubDocuments();
if(subDomcument!=null && subDomcument.size() > 0){
for(var dom=subDomcument.iterator();dom.hasNext();){
var subdoc=dom.next();
println("name--->"+subdoc.getItemValueAsString("name"));
}
}
})()
获取当前流程状态值
//只能在流程处理类型中使用
(function(){
var flowType = getParameter("_flowType");//获取流程状态值 80提交 81回退
})()
获取提交时填写的审批意见
(function(){
var attitude=getParameter("attitude");//获取审批意见
println("attitude--->"+attitude);
})()
调用存储过程示例
(function(){
var ParamsTable = getParamsTable();
var Domainid = getDomainid();
var docProcess = getDocProcess(getApplication());
var in_id = '__igFO8h02HIepU3gNr8J';
var dpg = docProcess.queryByProcedure("call out_test(String:"+in_id+",out:package)",getParamsTable(),1,2,Domainid);
println("dpg:"+dpg);
println("dpg.datas:"+dpg.datas);
println("dpg.datas.size:"+dpg.datas.size());
for(var i = 0;i<dpg.datas.size();i++){
var map = dpg.datas.get(i).getItemMap();
println("map:"+map);
println("map.OID:"+map.get("OID"));
}
})()
判断用户登录设备
(function(){
var user = getWebUser();
var isMobileVisit=user.getEquipment();
//isMobileVisit 返回0 来访设备-电脑
//isMobileVisit 返回1 来访设备-手机
//isMobileVisit 返回2 来访设备-平板
})()
获取登陆用户的角色
(function(){
var user = getWebUser();
var roles = user.getRoles();
var rtn="";
for(var its = roles.iterator();roles!=null && its.hasNext();){
var role = its.next();
println("roleName--->"+role.getName());
}
})()
获取登陆用户的默认部门Id
(function(){
var user = getWebUser();
var DepartmentId = user.getDefaultDepartment();
})()
判断指定的用户在指定部门是否具有指定的角色
/**
*判断指定的用户在指定部门是否具有指定的角色
*roleCode:角色编号 department:部门id
*userId:用户ID
*/
function isTheUserOwenTheDeptRolesByCode(userId, roleCode, department) {
var doc = getCurrentDocument();
var flag = false;
var process = new Packages.cn.myapps.designtime.role.service.RoleServiceImpl();
var role = process.findByRoleNo(roleCode, doc.getApplicationid());
var roleId = role.getId();
var sql = "select '" + getDomainid() + "'AS DOMAINID , userid as item_userid from " + DATASOURENAME + ".t_user_department_role_set where departmentid='" + department + "' and roleid='" + roleId + "' and userid='" + userId + "' ";
var count = countBySQL(sql);
if (count > 0) {
flag = true;
}
return flag;
};
根据角色编码判断当前用户是否具有下列角色
/**
*根据角色编码判断当前用户是否具有下列角色(可以传多个角色编码)
*roleCode:角色编码 传多个角色编码用";"隔开
*/
function isOwenTheRolesByRoleCodes(roleCode) {
var applicationid = getApplication();
var flag = false;
var process = new Packages.cn.myapps.runtime.role.service.RoleServiceImpl();
if (roleCode != null && !"".equals(roleCode)) {
if (roleCode.indexOf(";") >= 0) {
var roleCodes = roleCode.split(";");
if (roleCodes != null && roleCodes.length > 0) {
for (var i = 0; i < roleCodes.length; i++) {
var roleCodeI = roleCodes[i];
var role1 = process.findByRoleNo(roleCodeI, applicationid);
if (role1 != null) {
var crRoleId = role1.getId();
if (crRoleId != null && !"".equals(crRoleId)) {
var roles = getWebUser().getRoles();
for (var it = roles.iterator(); roles != null && it.hasNext(); ) {
var role = it.next();
var roleId = role.getId();
if (crRoleId.equals(roleId)) {
flag = true;
break;
}
}
}
}
}
}
} else {
var role1 = process.findByRoleNo(roleCode, applicationid);
if (role1 != null) {
var crRoleId = role1.getId();
if (crRoleId != null && !"".equals(crRoleId)) {
var roles = getWebUser().getRoles();
for (var it = roles.iterator(); roles != null && it.hasNext(); ) {
var role = it.next();
var roleId = role.getId();
if (crRoleId.equals(roleId)) {
flag = true;
break;
}
}
}
}
}
}
return flag;
}
调用Redis示例
//将值存入到Redis到缓存中
new Packages.cn.myapps.util.cache.MemoryCacheUtil.putToPrivateSpace("key", "value", getWebUser());
//获取存入到Redis缓存中的值
var type = new Packages.cn.myapps.util.cache.MemoryCacheUtil.getFromPrivateSpace("key", getWebUser());
获取指定部门指定角色的人员
/**
*获取指定部门指定角色的人员,返回list
*roleNames:角色名称 department:部门id
*
*/
function getUsersByDeptAndRoles(roleName, department) {
var userList = createObject("java.util.ArrayList");
var roleid = getRoleIdByName(roleName);
var sql = "select '" + getDomainid() + "'AS DOMAINID , userid as item_userid from " + DATASOURENAME + ".t_user_department_role_set where departmentid='" + department + "' and roleid='" + roleid + "'";
var datas = queryBySQL(sql);
if (datas != null) {
for (var iter = datas.iterator(); iter.hasNext(); ) {
var data = iter.next();
var userid = data.getItemValueAsString("userid");
userList.add(userid);
}
}
return userList;
}
下拉框考虑历史数据
/**
* 考虑历史数据:获取通用主数据类型返回Options
* table:当前表名 docId:当前docID valueName:当前字段名 type:通用主数据的类型
*/
function getDatatype(table, docId, valueName, isNull) {
var opts = $TOOLS.createOptions();
var sql1 = "select * from " + table + " where id='" + docId + "' ";
var data = findBySQL(sql1);
var value1 = "";
if (data != null) {
value1 = data.getItemValueAsString(valueName);
}
var sql = "select * from obpm_crm_new.tlk_客户状态 where item_status='有效' order by item_类别名称";
if (value1 != null && !"".equals(value1)) {
sql = "select * from obpm_crm_new.tlk_客户状态 where (item_status='有效') or (item_status='无效' and item_类别名称='" + value1 + "') order by item_类别名称";
}
if (isNull) {
opts.add("", "");
}
var query = queryBySQL(sql);
if (query != null && query.size() > 0) {
for (var it = query.iterator(); it.hasNext(); ) {
var doc = it.next();
var value = doc.getItemValueAsString("类别名称");
var name = doc.getItemValueAsString("类别名称");
opts.add(name, value);
}
}
return opts;
}
根据用户id返回WebUser对象
/*
根据用户id返回cn.myapps.core.user.action.WebUser
*/
function getWebUserById(USERID) {
var UserProcessBean = new Packages.cn.myapps.authtime.user.service.UserProcessBean();
var UserVO = UserProcessBean.doView(USERID);
var WebUser = new Packages.cn.myapps.base.web.WebUser(UserVO);
return WebUser;
}
a or o-acation 超级标签
//因大部分用户反馈在Good皮肤中使用1.6/4.0+的H5皮肤跳转脚本无效,
主要是由于Good皮肤中更新了跳转的方法,
只需要在链接中加入对应属性即可生效,
更方便大家拼接链接使用
a标签只支持PC端 o-action标签支持pc端和手机端。
//表单类型
//action-type='opendocument' (opendocument为表单、openview为视图)
//打开方式
//open-type='open-eject' (open-present为当前页打开、open-eject为弹出层打开、open-tab为标签页打开、open-blank为新窗口打开)
//是否刷新表单
//reflash-on-close='reflash-on-close' (注:刷新表单暂未实现)
//参数
//exparams = '&_isJump=1' (参数值为固定值或者通过脚本获取其他值)
//具体例子参考如下:
//拼接参数
var ts1=doc.getItemValueAsString("字段一"); //参数值一
var ts2=doc.getItemValueAsString("字段二"); //参数值二
var exparams = "&ts1="+ts1+"&ts2="+ts2+""; //拼接参数
//参数使用
var btn="<a action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-eject' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>弹出表单</a>";
//参数获取
//在视图或者表单处点击鼠标右键查看框架源码获取框架源码后将view-source:部分去掉,view-source:http://192.168.88.161/Z016Y/portal/good/html/form.html?appId=MHR5k0XvJ6zqQgdepcj&docid=__nM6wAtLyXdUXA5ApJB6&formId=__2KhuwiEaRIwNdmoecoD&isScript=true&ts1=chain&ts2=001
//弹出层打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一"); //参数值一
var ts2=doc.getItemValueAsString("字段二"); //参数值二
var exparams = "&ts1="+ts1+"&ts1="+ts1+""; //拼接参数
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<a action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-eject' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>弹出层打开表单</a>";
return btn;
})();
//当前页打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<a action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-present' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>当前页打开表单</a>";
return btn;
})();
//标签页打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<a action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-tab' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>标签页打开表单</a>";
return btn;
})();
//新窗口打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<a action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-blank' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>新窗口打开表单</a>";
return btn;
})();
//弹出层打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<a action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-eject' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>弹出层打开视图</a>"
return btn;
})();
//当前页打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<a action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-present' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>当前页打开视图</a>"
return btn;
})();
//标签页打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<a action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-tab' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>标签页打开视图</a>"
return btn;
})();
//新窗口打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<a action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-blank' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>新窗口打开视图</a>"
return btn;
})();
//o-action 标签支持手机端和PC端
//弹出层打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一"); //参数值一
var ts2=doc.getItemValueAsString("字段二"); //参数值二
var exparams = "&ts1="+ts1+"&ts1="+ts1+""; //拼接参数
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<o-action action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-eject' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>弹出层打开表单</o-action>";
return btn;
})();
//当前页打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<o-action action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-present' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>当前页打开表单</o-action>";
return btn;
})();
//标签页打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<o-action action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-tab' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>标签页打开表单</o-action>";
return btn;
})();
//新窗口打开表单
(function() {
var doc=getCurrentDocument();
var docId=doc.getId();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var formid="__2KhuwiEaRIwNdmoecoD";
var btn="<o-action action-type='opendocument' formid='"+formid+"' docid='"+docId+"' appid='"+appId+"' open-type='open-blank' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px' exparams='"+exparams+"'>新窗口打开表单</o-action>";
return btn;
})();
//弹出层打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<o-action action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-eject' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>弹出层打开视图</o-action>"
return btn;
})();
//当前页打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<o-action action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-present' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>当前页打开视图</o-action>"
return btn;
})();
//标签页打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<o-action action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-tab' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>标签页打开视图</o-action>"
return btn;
})();
//新窗口打开视图
(function() {
var doc=getCurrentDocument();
var ts1=doc.getItemValueAsString("字段一");
var ts2=doc.getItemValueAsString("字段二");
var exparams = "&ts1="+ts1+"&ts1="+ts1+"";
var appId=getApplication();
var domainid=getDomainid();
var viewId="__7OK04NzW3w2zFBKoW7I";
var btn="<o-action action-type='openview' viewId='"+viewId+"' appId='"+appId+"' open-type='open-blank' exparams='"+exparams+"' reflash-on-close='reflash-on-close' dialog-width='1000px' dialog-height='600px'>新窗口打开视图</o-action>"
return btn;
})();
调用登录接口生成Token
/*
LOGINNO 账号
LOGINPWD 密码
DOMAINNAME 域名称 //就是你域后台新建域时填写的名称
var loginApiUrl="http://office.teemlink.com:60161/signon/runtime/login/loginWithCiphertext2"; http://office.teemlink.com:60161 修改成你们的域名或者Ip
*/
function getAccessToken(LOGINNO,LOGINPWD,DOMAINNAME){
var loginApiUrl="http://office.teemlink.com:60161/signon/runtime/login/loginWithCiphertext2";
var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil();
var jsonObj = new Packages.com.alibaba.fastjson.JSONObject();
var Base64Pwd ="";
var AccessToken ="";
var Base64 = new Packages.cn.myapps.common.util.Base64Util();
var LOGINPWDS = new Packages.java.lang.String(LOGINPWD);
var bytes = LOGINPWDS.getBytes();
var encoded = Base64.encode(bytes);
if(encoded.length()>2){
var lp = encoded.substring(0,2);
var rp = encoded.substring(2,encoded.length());
Base64Pwd = rp+lp;
}
jsonObj.put("username",LOGINNO);
jsonObj.put("password",Base64Pwd);
jsonObj.put("remember","0");
jsonObj.put("debug","false");
jsonObj.put("domainName",DOMAINNAME);
jsonObj.put("checkcode","");
jsonObj.put("language","CN");
var JSONString = URLConnector.post(loginApiUrl,jsonObj.toString());
AccessToken = JSONString.get("accessToken");
return AccessToken;
}
根据用户Id生成Token
(function(){
var accessToken = new Packages.cn.myapps.common.util.Security().getToken("__hOWxtM5Q3fKoNuwH90K");//传入用户id返回对应的accessToken 2小时有效
})()
其他脚本示例
/**
var viewsApiUrl="http://office.teemlink.com:60161/obpm/runtime/__K9VSEQ0wOlXNnorkeWI/views/__39uCuMTrmO6tiYQEgDp/documents?parentId=&sortCol=&sortStatus=&_currpage=1&lines=1000&accessToken="+AccessToken;
http://office.teemlink.com:60161 修改成你们的域名或者Ip
__K9VSEQ0wOlXNnorkeWI 软件Id 可以使用IScript脚本getApplication() 获取
_currpage=1 分页 直接传1即可
lines=1000 每页显示多少条数据 根据你该表1年的数据量来传 建议写大点
**/
#include "MethodLibrary"
(function(){
var doc = getCurrentDocument();
var LOGINNO = doc.getItemValueAsString("LOGINNO");
var LOGINPWD = doc.getItemValueAsString("LOGINPWD");
var DOMAINNAME = doc.getItemValueAsString("DOMAINNAME");
var AccessToken = getAccessToken(LOGINNO,LOGINPWD,DOMAINNAME);
var Sequence = new Packages.cn.myapps.util.sequence.Sequence();
var viewsApiUrl="http://office.teemlink.com:60161/obpm/runtime/__K9VSEQ0wOlXNnorkeWI/views/__39uCuMTrmO6tiYQEgDp/documents?parentId=&sortCol=&sortStatus=&_currpage=1&lines=1000&accessToken="+AccessToken;
var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil();
var jsonObj = new Packages.com.alibaba.fastjson.JSONObject();
var JSONString = URLConnector.post(viewsApiUrl,"");
var errmsg = JSONString.get("errmsg");
if("ok".equals(errmsg)){
var docProcess = getDocumentProcess();
var formProcess = getFormProcess();
var newForm = formProcess.doViewByFormName("BOM清单",getApplication());
var newDoc = docProcess.doNew(newForm,getWebUser(),createParamsTable());
var dataArray = JSONString.get("data").get("data");
if(dataArray!=null || dataArray.size()>0){
for(var iter = dataArray.iterator();iter.hasNext();){
var jsonData = iter.next();
var jsonitem = jsonData.get("items");
var iterator = jsonitem.entrySet().iterator();
while(iterator.hasNext()){
var entry = iterator.next();
if(entry!=null){
var uuid = Sequence.getSequence();
var entryValue = entry.getValue();
newDoc.setId(uuid);
var name = entryValue.get("name");
if("物料类型".equals(name)){
newDoc.addStringItem("物料类型",entryValue.get("value"));
}
if("PTSP".equals(name)){
newDoc.addStringItem("PTSP",entryValue.get("value"));
}
if("SAP物料编码".equals(name)){
newDoc.addStringItem("SAP物料编码",entryValue.get("value"));
}
if("工厂".equals(name)){
newDoc.addStringItem("工厂",entryValue.get("value"));
}
if("改变零件编码".equals(name)){
newDoc.addStringItem("改变零件编码",entryValue.get("value"));
}
if("计量单位".equals(name)){
newDoc.addStringItem("计量单位",entryValue.get("value"));
}
if("零件属性".equals(name)){
newDoc.addStringItem("零件属性",entryValue.get("value"));
}
if("零件属性2".equals(name)){
newDoc.addStringItem("零件属性2",entryValue.get("value"));
}
if("维护人员".equals(name)){
newDoc.addStringItem("维护人员",entryValue.get("value"));
}
if("标准价格".equals(name)){
newDoc.addDoubleItem("标准价格",entryValue.get("value"));
}
if("物料描述".equals(name)){
newDoc.addDoubleItem("物料描述",entryValue.get("value"));
}
if("备注".equals(name)){
newDoc.addDoubleItem("备注",entryValue.get("value"));
}
}
}
docProcess.doCreate(newDoc);
}
}
}
})()