fuliqi
2025-01-20 946ddd7da9bc3cdbcffdd144f8c9de6f6e08e8a8
business/src/main/java/com/ycl/task/FlowableTask.java
@@ -74,36 +74,41 @@
            }
            //判断是否超时
            Date startTime = startTaskMap.get(processCoding.getStartTaskId());
            Long yellowTime = null;
            Long redTime = null;
            String yellowTimeStr = processCoding.getYellowTime();
            if (StringUtils.isNotBlank(yellowTimeStr)) {
                String[] yellowTimeArr = yellowTimeStr.split("-");
                // 解析天数和小时数
                int days = Integer.parseInt(yellowTimeArr[0]);
                int hours = Integer.parseInt(yellowTimeArr[1]);
                yellowTime = (days * 24L + hours) * 3600L;
            try {
                Long yellowTime = null;
                Long redTime = null;
                String yellowTimeStr = processCoding.getYellowTime();
                if (StringUtils.isNotBlank(yellowTimeStr)) {
                    String[] yellowTimeArr = yellowTimeStr.split("-");
                    // 解析天数和小时数
                    int days = Integer.parseInt(yellowTimeArr[0]);
                    int hours = Integer.parseInt(yellowTimeArr[1]);
                    yellowTime = (days * 24L + hours) * 3600L;
                }
                String redTimeStr = processCoding.getRedTime();
                if (StringUtils.isNotBlank(redTimeStr)) {
                    String[] redTimeArr = redTimeStr.split("-");
                    // 解析天数和小时数
                    int days = Integer.parseInt(redTimeArr[0]);
                    int hours = Integer.parseInt(redTimeArr[1]);
                    redTime = (days * 24L + hours) * 3600L;
                }
                if (startTime == null) continue;
                long durationDay = (now.getTime() - startTime.getTime()) / 1000;
                String status = GREEN; // 默认状态为绿色
                if (redTime != null && durationDay >= redTime) {
                    status = RED; // 如果超过红色时间阈值,则状态为红色
                } else if (yellowTime != null && durationDay >= yellowTime) {
                    status = YELLOW; // 否则,如果超过黄色时间阈值,则状态为黄色
                }
                List<String> processInsIds = map.get(status);
                processInsIds.add(task.getProcessInstanceId());
                processCoding.setStatus(status);
                list.add(processCoding);
            } catch (Exception e) {
                e.printStackTrace();
                log.error(e.getMessage(),"赋码时间格式有误");
            }
            String redTimeStr = processCoding.getRedTime();
            if (StringUtils.isNotBlank(redTimeStr)) {
                String[] redTimeArr = redTimeStr.split("-");
                // 解析天数和小时数
                int days = Integer.parseInt(redTimeArr[0]);
                int hours = Integer.parseInt(redTimeArr[1]);
                redTime = (days * 24L + hours) * 3600L;
            }
            if (startTime == null) continue;
            long durationDay = (now.getTime() - startTime.getTime()) / 1000;
            String status = GREEN; // 默认状态为绿色
            if (redTime != null && durationDay >= redTime) {
                status = RED; // 如果超过红色时间阈值,则状态为红色
            } else if (yellowTime != null && durationDay >= yellowTime) {
                status = YELLOW; // 否则,如果超过黄色时间阈值,则状态为黄色
            }
            List<String> processInsIds = map.get(status);
            processInsIds.add(task.getProcessInstanceId());
            processCoding.setStatus(status);
            list.add(processCoding);
        }
        //更新项目码
        map.forEach((key, value) -> updateProjectCoding(value, key));