如何实现每月15日后审批的单据统一在下个月一号再自动流转到下一个审批节点原创
金蝶云社区-wbshcy
wbshcy
5人赞赏了该文章 729次浏览 未经作者许可,禁止转载编辑于2022年07月14日 10:14:32

关键字:流程服务、审批、等待

一、需求

由于业务部门规定当月15号前审批的单据正常流转到下一个审批节点,超过15号审批的单据统一要等到下月一号再流转到下一个审批节点。

二、思路与方案

工作流有等待节点,实现等待一段时间后再流转到下一个节点。但是由于只能设置等待固定的天数,但是16号审批和20审批的单据需要等待的时间不一致,所以需要只能设置等待一天,然后配置条件计算是否需要继续等待。

三、实现过程

1.增加两个流程变量,用来记录上个节点当月哪天审批的,以及当月有多少天。

image.png

 

2.在一级审批节点增加任务同意执行工作流插件,插件主要给流程变量赋值上个节点当月哪天审批的,以及当月有多少天

image.png

 插件代码如下:

@Override
public void notify(AgentExecution execution) {
// TODO Auto-generated method stub
LocalDate now = LocalDate.now();    
logger.info("当前审批时间:"+now.getMonthValue()+"月"+now.getDayOfMonth()+"天");
execution.setVariable("ifdays", now.getDayOfMonth());
execution.setVariable("daysOfMouth", now.withMonth(now.getMonthValue()).lengthOfMonth());
 
}
4.等待节点设置条件等待,等待时长为1天,跳出条件配置插件

image.png

image.png

插件代码如下:

@Override
	public boolean hasTrueCondition(AgentExecution execution) {
		// TODO Auto-generated method stub
	    //每等待一次,则ifdays+1,ifdays小于当月天数,则继续等待,否则退出等待
	    int ifdays = (int) execution.getVariable("ifdays")+1;
	    if(ifdays<=(int)execution.getVariable("daysOfMouth")) {
	    	execution.setVariable("ifdays", ifdays);
	    	return false;
	    }	   
	    return true;
	}

四、效果图

 进入等待节点:

image.png


 满足跳出条件后进入下一个节点:
image.png

五、开发环境版本

V4.0.0.14

、参考资料

【开发平台】指导手册

学习成长中心


图标赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0