zxl
2025-03-21 c4ab6a24d2825f11a0de0f165667dc533c458a01
business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
@@ -17,6 +17,7 @@
import java.util.List;
import static com.ycl.common.constant.ProcessOverTimeConstants.GREEN;
import static com.ycl.common.constant.ProcessOverTimeConstants.NORMAL;
/**
 * 任务监听器
@@ -35,15 +36,19 @@
    /**
     * 黄码时间
     */
    private FixedValue yellowTime;
    private FixedValue 黄码时长;
    /**
     * 红码时间
     */
    private FixedValue redTime;
    private FixedValue 红码时长;
    /**
     * 办理期限
     */
    private FixedValue 办理期限;
    /**
     * 计时起始节点定义Id
     */
    private FixedValue startTaskId;
    private FixedValue 开始计时节点;
    @Override
    public void notify(DelegateTask delegateTask) {
@@ -59,25 +64,31 @@
        processCoding.setTaskId(taskId);
        processCoding.setProcessInsId(processInstanceId);
        processCoding.setTaskDefKey(delegateTask.getTaskDefinitionKey());
        //查询是否有这个定义节点的历史数据,取最晚的一条状态码,避免定时任务还未执行的误差
        //设置状态,查询是否有这个定义节点的历史数据,取最新的一条状态码,避免定时任务还未执行的误差
        List<ProcessCoding> processCodings = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>()
                .eq("process_ins_id",processInstanceId)
                .eq("task_def_key", delegateTask.getTaskDefinitionKey())
                .orderByDesc("gmt_create"));
        if(!CollectionUtils.isEmpty(processCodings)){
            processCoding.setStatus(processCodings.get(0).getStatus());
            processCoding.setOvertimeStatus(processCodings.get(0).getOvertimeStatus());
        }else {
            processCoding.setStatus(GREEN);
            processCoding.setOvertimeStatus(NORMAL);
        }
        if (yellowTime != null && yellowTime.getValue(delegateTask) != null) {
            processCoding.setYellowTime(Integer.parseInt(yellowTime.getValue(delegateTask).toString()));
        if (黄码时长 != null && 黄码时长.getValue(delegateTask) != null) {
            processCoding.setYellowTime(黄码时长.getValue(delegateTask).toString());
        }
        if (redTime != null && redTime.getValue(delegateTask) != null) {
            processCoding.setRedTime(Integer.parseInt(redTime.getValue(delegateTask).toString()));
        if (红码时长 != null && 红码时长.getValue(delegateTask) != null) {
            processCoding.setRedTime(红码时长.getValue(delegateTask).toString());
        }
        if (办理期限 != null && 办理期限.getValue(delegateTask) != null) {
            processCoding.setOvertime(办理期限.getValue(delegateTask).toString());
        }
        //设置开始节点
        if (startTaskId != null && startTaskId.getValue(delegateTask) != null) {
            String taskDefKey = startTaskId.getValue(delegateTask).toString();
        if (开始计时节点 != null && 开始计时节点.getValue(delegateTask) != null) {
            String taskDefKey = 开始计时节点.getValue(delegateTask).toString();
            //开始节点从历史节点查询 取多条中最早的一条
            List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
                    .processInstanceId(processInstanceId)