本帖最后由 sophie 于 2014-2-21 11:25 编辑
你好,
现有一个通过设置审批时限来跳过审批节点的设置,目前取审批人没有问题,但审批时限那里得出的值为过去的一个时间,系统不给跟过该审批节点。之前有过此类问题,给出的答复是因为取审批人中用到了函数queryBySQL,而此函数不能自动取得domainid和applicaitonid,并给出了解决方案,现在系统升级后按照该方法更改了queryBySQL函数,但仍然不能跳过,不知是不是系统BUG,烦请帮忙解决。谢谢
1. 以下为取审批人脚本
#include "actionlib2";
var deptid=getItemValue("Department");
var rtn=GetHeaderByDeptidByLevel2(deptid,3);
rtn;
2. 以下为审批时限设置,打印出的值为“JsUtil:2013-01-01 00:00:00”
#include "actionlib2";
var deptid=getItemValue("Department");
var rtn=GetHeaderByDeptidByLevel2(deptid,3);
var value=CompareNodeApprover(rtn);
println(value);
value;
3. 取审批人用到的函数GetHeaderByDeptidByLevel2如下:
function GetHeaderByDeptidByLevel2(deptid,level){
var user = createObject("java.util.ArrayList");
var deptProcess = getDepartmentProcess();
var dept = deptProcess.doView(deptid);
var applicationid="11e3-0e31-31396c8b-9613-afcc9747d9a9";
var domainid="11e3-13a3-ac7df636-8c72-c1df28dfa4af";
var process = getDocProcess(applicationid);
if(dept != null ){
var deptlevel=dept.getLevel();
var dept_temp=dept;
while (deptlevel>level)
{
dept_temp=dept_temp.getSuperior();
deptlevel=dept_temp.getLevel();
}
if (dept_temp!=null)
{
var approver=dept_temp.getField1();
if (approver!=null && approver.length()>0)
{
var sql="select id,domainid,field2 as item_field2 from "+ getDataBaseName()+"t_user where field2='"+approver+"'";
var query=process.queryBySQL(sql,domainid).datas;
if (query!=null)
{
var iter=query.iterator();
if (iter!=null && iter.hasNext())
{
var doc=iter.next();
var userid=doc.getId();
var usertemp=getUserById(userid);
user.add(usertemp);
}
}
}
}
}
return user
} |