跳转至

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_RELATIONHIST_ACTORHIS 两个系统表中的审批意见字段,将指定文档的最后一条审批记录的意见更新为新的值。

脚本功能

  1. 更新关系历史表: 更新 T_RELATIONHIS 表中最后一条审批意见
  2. 更新执行人历史表: 更新 T_ACTORHIS 表中最后一条审批意见
  3. 基于处理时间: 通过 MAX(PROCESSTIME) 找到最后一条审批记录
  4. 基于文档ID: 通过文档ID定位到具体的审批记录

使用场景

  • 修改最后一条审批意见
  • 流程干预时更新审批意见
  • 审批意见修正
  • 流程监控中更新意见

函数参数说明

  • docid: 文档ID,要更新审批意见的文档ID
  • dValue: 审批意见值,要设置的新审批意见内容

扩展示例

示例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+"'";

常见应用

  1. 流程干预: 在流程干预时修改审批意见
  2. 意见修正: 修正错误的审批意见
  3. 批量更新: 批量更新多个文档的审批意见
  4. 流程监控: 在流程监控中更新审批意见

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a516nbtmc6
文档更新时间: 2023-09-16 06:51 作者:admin