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

案例需求

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

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

1724843423637

开发过程

流程图

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

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

1724843263041

添加审批状态列

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

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

1724843423637

设置审批人

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

1724900034323

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

onWfmuiOpenDialogBefore = (event) => {
    if (event.action == "advanceQuery") {
        let processControl = event.processControl;//获取processControl
        let items = processControl.getToItems();
        items[0].clearExecutors();
        let executors = detailData.toJson().filter(item => item.status !== '已审批');
        if (executors.length > 0) {
            let minOrderExecutor = executors.reduce((min, executor) =>
                executor.auditOrder < min.auditOrder ? executor : min
            );
            items[0].addExecutor(minOrderExecutor.auditorId, minOrderExecutor.auditor);
        }
    }
}

设置审批状态

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

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

1724900128244

代码如下


    onWfmuiAdvanceSuccess = (event) => {
        let processControl = event.processControl;//获取processControl
        let items = processControl.getToItems();
        let executors = items[0].getExecutors();
        if(executors.length > 0){
            let mainData = this.comp("mainData");
            let detailData = this.comp("detailData");
            let rows = detailData.find(["auditorId"],[executors[0].fid]);
            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 ""