set到最后一条审批意见¶
set到最后一条审批意见(docid 及意见参数)示例代码:
function setAttitude(docid,dValue){
var dName = sys_function.DATASOURCENAME;
var updateRel = " UPDATE T_RELATIONHIS SET ATTITUDE ='"+dValue+"'";
updateRel += " WHERE PROCESSTIME = ";
updateRel += "(SELECT MAX(PROCESSTIME) T_RELATIONHIS WHERE DOCID = '"+docid+"')";
updateRel += " AND DOCID = '"+docid+"'";
updateByDSName(dName,updateRel);
var updateAtt = " UPDATE T_ACTORHIS SET [ATTITUDE] = '"+dValue+"' ";
updateAtt += " WHERE PROCESSTIME = ";
updateAtt += " (SELECT MAX(PROCESSTIME) FROM T_ACTORHIS ";
updateAtt += " WHERE DOC_ID = '"+docid+"' ";
updateAtt += " AND FLOWSTATERT_ID = (SELECT ID FROM T_FLOWSTATERT WHERE DOCID = '"+docid+"')) ";
updateAtt += " AND FLOWSTATERT_ID = (SELECT ID FROM T_FLOWSTATERT WHERE DOCID = '"+docid+"') ";
updateByDSName(dName,updateAtt);
}
脚本说明¶
该脚本用于更新流程中最后一条审批意见。通过更新 T_RELATIONHIS 和 T_ACTORHIS 两个系统表中的审批意见字段,将指定文档的最后一条审批记录的意见更新为新的值。
脚本功能¶
- 更新关系历史表: 更新
T_RELATIONHIS表中最后一条审批意见 - 更新执行人历史表: 更新
T_ACTORHIS表中最后一条审批意见 - 基于处理时间: 通过
MAX(PROCESSTIME)找到最后一条审批记录 - 基于文档ID: 通过文档ID定位到具体的审批记录
使用场景¶
- 修改最后一条审批意见
- 流程干预时更新审批意见
- 审批意见修正
- 流程监控中更新意见
函数参数说明¶
docid: 文档ID,要更新审批意见的文档IDdValue: 审批意见值,要设置的新审批意见内容
扩展示例¶
示例1:更新当前文档的最后一条审批意见¶
(function(){
var doc = getCurrentDocument();
var docId = doc.getId();
var newAttitude = "同意,请继续处理";
setAttitude(docId, newAttitude);
})();
function setAttitude(docid,dValue){
var dName = sys_function.DATASOURCENAME;
var updateRel = " UPDATE T_RELATIONHIS SET ATTITUDE ='"+dValue+"'";
updateRel += " WHERE PROCESSTIME = ";
updateRel += "(SELECT MAX(PROCESSTIME) FROM T_RELATIONHIS WHERE DOCID = '"+docid+"')";
updateRel += " AND DOCID = '"+docid+"'";
updateByDSName(dName,updateRel);
var updateAtt = " UPDATE T_ACTORHIS SET [ATTITUDE] = '"+dValue+"' ";
updateAtt += " WHERE PROCESSTIME = ";
updateAtt += " (SELECT MAX(PROCESSTIME) FROM T_ACTORHIS ";
updateAtt += " WHERE DOC_ID = '"+docid+"' ";
updateAtt += " AND FLOWSTATERT_ID = (SELECT ID FROM T_FLOWSTATERT WHERE DOCID = '"+docid+"')) ";
updateAtt += " AND FLOWSTATERT_ID = (SELECT ID FROM T_FLOWSTATERT WHERE DOCID = '"+docid+"') ";
updateByDSName(dName,updateAtt);
}
示例2:根据条件更新审批意见¶
(function(){
var doc = getCurrentDocument();
var docId = doc.getId();
var condition = doc.getItemValueAsString("条件字段");
var attitude = "";
if(condition != null && condition === "通过"){
attitude = "审批通过";
}else{
attitude = "审批不通过";
}
setAttitude(docId, attitude);
})();
示例3:批量更新多个文档的审批意见¶
(function(){
var docIds = ["docId1", "docId2", "docId3"];
var attitude = "批量审批意见";
for(var i = 0; i < docIds.length; i++){
setAttitude(docIds[i], attitude);
}
})();
示例4:带验证的更新¶
(function(){
var doc = getCurrentDocument();
var docId = doc.getId();
var newAttitude = doc.getItemValueAsString("新审批意见");
if(newAttitude == null || newAttitude.trim().length == 0){
return "审批意见不能为空";
}
setAttitude(docId, newAttitude);
return "审批意见已更新";
})();
关键函数说明¶
setAttitude(docid, dValue): 自定义函数,用于更新最后一条审批意见- 参数1:
docid- 文档ID - 参数2:
dValue- 审批意见值 sys_function.DATASOURCENAME: 获取数据源名称updateByDSName(dName, sql): 在指定数据源中执行SQL更新语句- 参数1: 数据源名称
- 参数2: SQL更新语句
SQL语句说明¶
更新 T_RELATIONHIS 表¶
UPDATE T_RELATIONHIS SET ATTITUDE = '审批意见'
WHERE PROCESSTIME = (SELECT MAX(PROCESSTIME) FROM T_RELATIONHIS WHERE DOCID = '文档ID')
AND DOCID = '文档ID'
- T_RELATIONHIS: 流程关系历史表
- ATTITUDE: 审批意见字段
- PROCESSTIME: 处理时间字段
- MAX(PROCESSTIME): 获取最大的处理时间(最后一条)
更新 T_ACTORHIS 表¶
UPDATE T_ACTORHIS SET [ATTITUDE] = '审批意见'
WHERE PROCESSTIME = (SELECT MAX(PROCESSTIME) FROM T_ACTORHIS
WHERE DOC_ID = '文档ID'
AND FLOWSTATERT_ID = (SELECT ID FROM T_FLOWSTATERT WHERE DOCID = '文档ID'))
AND FLOWSTATERT_ID = (SELECT ID FROM T_FLOWSTATERT WHERE DOCID = '文档ID')
- T_ACTORHIS: 流程执行人历史表
- ATTITUDE: 审批意见字段(使用方括号因为ATTITUDE可能是关键字)
- T_FLOWSTATERT: 流程状态运行时表
- FLOWSTATERT_ID: 流程状态运行时ID
系统表说明¶
- T_RELATIONHIS: 流程关系历史表,记录流程节点之间的关系和审批信息
- T_ACTORHIS: 流程执行人历史表,记录每个执行人的审批历史
- T_FLOWSTATERT: 流程状态运行时表,记录流程的运行时状态
注意事项¶
- ⚠️ SQL语法注意: 第一个UPDATE语句中
SELECT MAX(PROCESSTIME) T_RELATIONHIS应该是SELECT MAX(PROCESSTIME) FROM T_RELATIONHIS(缺少FROM关键字) - ⚠️ 数据源名称: 使用
sys_function.DATASOURCENAME获取数据源名称 - ⚠️ 文档ID必须正确: 确保传入的文档ID存在且有审批记录
- ⚠️ 审批意见转义: 如果审批意见包含单引号,需要进行SQL转义
- ⚠️ 权限要求: 需要有更新系统表的权限
- 该操作会直接修改系统表,请谨慎使用
- 建议在更新前先查询确认要更新的记录
- 更新操作不可恢复,建议先备份数据
SQL语句修正¶
原脚本中第一个UPDATE语句有语法错误,应该修正为:
var updateRel = " UPDATE T_RELATIONHIS SET ATTITUDE ='"+dValue+"'";
updateRel += " WHERE PROCESSTIME = ";
updateRel += "(SELECT MAX(PROCESSTIME) FROM T_RELATIONHIS WHERE DOCID = '"+docid+"')"; // 添加FROM关键字
updateRel += " AND DOCID = '"+docid+"'";
常见应用¶
- 流程干预: 在流程干预时修改审批意见
- 意见修正: 修正错误的审批意见
- 批量更新: 批量更新多个文档的审批意见
- 流程监控: 在流程监控中更新审批意见
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a516nbtmc6
文档更新时间: 2023-09-16 06:51 作者:admin