按数据顺序处理(工序排程)

案例需求

按照设置的审批人顺序依次审批,和自由流类似,不确定审批环节数量。

不使用一个环节多人顺序处理,是因为多人顺序处理发生回退时,会统一回退到前序环节,不是回退到前序人

1724843423637

开发过程

流程图

流程图和自由流类似,不同的是

  • 自由流:由用户决定是否继续审批,因此使用“或签”环节
  • 本例:由程序决定是否继续审批,因此使用“条件分支”环节

1724843263041

添加审批状态列

业务数据表和审批人表都设置审批状态列

  • 业务数据表-审批状态:用于流程图上条件分支的条件判断,当所有审批人都已审批,设置为“已审批”
  • 审批人表-审批状态:用于计算下一个审批人,在流程成功事件中设置为“已审批”

1724843423637

设置审批人

在流程组件的“打开对话框前”事件中,从审批人表中计算下一个审批人,设置为处理人

1724900034323

代码如下,注意 processControl 中执行者 executors 使用人员的全路径标识 fid 和全路径名称 fname

    onWfmuiOpenDialogBefore = (event) => {
        let processControl = event.processControl;//获取processControl
        let items = processControl.getToItems();
        items[0].data.executors = [];
        let detailData = this.comp("detailData");
        detailData.each(({row})=>{
            if(row.status != "已审批"){
                let auditor = {
                    "fid": row.auditorId,//人员的全路径标识 fid
                    "fname": row.auditor//人员的全路径名称 fname
                };
                items[0].data.executors.push(auditor);  
                return false;
            }
        })
    }

设置审批状态

在流程组件的“流转成功”事件中

  • 获取下一个环节的处理人,在审批人表中设置这个人的审批状态为“已审批”
  • 判断是否全部审批,如果全部审批,设置业务数据的审批状态为“已审批”

1724900128244

代码如下


    onWfmuiAdvanceSuccess = (event) => {
        let processControl = event.processControl;//获取processControl
        let items = processControl.getToItems();
        if(items[0].data.executors.length > 0){
            let auditorId = items[0].data.executors[0].fid;
            let mainData = this.comp("mainData");
            let detailData = this.comp("detailData");
            let rows = detailData.find(["auditorId"],[auditorId]);
            if(rows.length > 0){
                rows[0].status = "已审批";
            }
            rows = detailData.find(["status"],["已审批"]);
            if(rows.length == detailData.count()){
                mainData.setValue("status","已审批");
            }
            mainData.saveData();
        }
    }

运行效果

添加两个审批人

1724843423637

流转给第一个审批人

1724843493797

第一个人审批后,设置第一个审批人的审批状态为“已审批”

1724843520777

流转给第二个审批人

1724843537679

第二个人审批后,设置第二个审批人的审批状态为“已审批”,所有审批人都已审批,设置业务数据的审批状态为“已审批”

1724843575270

所有审批人都已审批,流程结束

1724843590983

results matching ""

    No results matching ""