From a5d4965f9c9bed403456f3fbc2b402645b4c0449 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Mon, 18 May 2026 15:33:40 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260518-=E5=BE=85=E5=8A=9E=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=88=AA=E8=87=B3=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91=EF=BC=8C=E9=80=BE=E6=9C=9F?= =?UTF-8?q?=E5=92=8C=E5=8D=B3=E5=B0=86=E5=88=B0=E6=9C=9F=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=86=E5=88=AB=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/bpm/dto/TaskDTO.java | 10 +++++ .../bpm/service/impl/ActivitiServiceImpl.java | 43 +++++++++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/dto/TaskDTO.java b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/dto/TaskDTO.java index 72f92b3..90088a0 100644 --- a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/dto/TaskDTO.java +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/dto/TaskDTO.java @@ -57,6 +57,16 @@ public class TaskDTO implements java.io.Serializable { private String bpmBizTitle; /** 截止时间 */ private String deadline; + /** 截止时间是否逾期 */ + private Boolean deadlineOverdue; + /** 截止时间逾期天数 */ + private Long overdueDays; + /** 截止时间是否临近 */ + private Boolean deadlineSoon; + /** 截止时间剩余天数 */ + private Long remainingDays; + /** 截止时间提醒文案 */ + private String deadlineWarnText; /** 流程状态 未发起、处理中、处理完成*/ private String bpmStatus; /** 超时提醒*/ diff --git a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/service/impl/ActivitiServiceImpl.java b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/service/impl/ActivitiServiceImpl.java index 9b5111d..b25a1df 100644 --- a/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/service/impl/ActivitiServiceImpl.java +++ b/jeecg-boot-platform/jeecg-boot-module-bpm-flowable/src/main/java/org/jeecg/modules/bpm/service/impl/ActivitiServiceImpl.java @@ -310,7 +310,21 @@ public class ActivitiServiceImpl implements ActivitiService { dto.setTaskId(t.getTaskDefinitionKey()); dto.setTaskEndTime(t.getDueDate()); dto.setProcessInstanceId(t.getProcessInstanceId()); - dto.setDeadline(oConvertUtils.getString(processVariables.get("deadline"))); + String deadline = oConvertUtils.getString(processVariables.get("deadline")); + dto.setDeadline(deadline); + Long deadlineGapDays = calcDeadlineGapDays(deadline); + dto.setDeadlineOverdue(false); + dto.setDeadlineSoon(false); + if (deadlineGapDays != null && deadlineGapDays < 0) { + Long overdueDays = Math.abs(deadlineGapDays); + dto.setDeadlineOverdue(true); + dto.setOverdueDays(overdueDays); + dto.setDeadlineWarnText("已逾期" + overdueDays + "天"); + } else if (deadlineGapDays != null && deadlineGapDays <= 3) { + dto.setDeadlineSoon(true); + dto.setRemainingDays(deadlineGapDays); + dto.setDeadlineWarnText(deadlineGapDays == 0 ? "今天截止" : "剩余" + deadlineGapDays + "天"); + } dto.setProcessApplyUserId(applyUserId); // dto.setProcessApplyUserName(ownerSysUser!=null?ownerSysUser.getRealname():""); dto.setProcessDefinitionId(processInstance != null ? processInstance.getProcessDefinitionId() : null); @@ -547,10 +561,33 @@ public class ActivitiServiceImpl implements ActivitiService { } - + + /** + * 计算截止日期与今天的天数差,负数表示已逾期 + * @param deadline + * @return + */ + private Long calcDeadlineGapDays(String deadline) { + if (oConvertUtils.isEmpty(deadline)) { + return null; + } + try { + String deadlineText = deadline.trim(); + if (deadlineText.length() < 10) { + return null; + } + String deadlineDateText = deadlineText.substring(0, 10).replace("/", "-").replace(".", "-"); + java.time.LocalDate deadlineDate = java.time.LocalDate.parse(deadlineDateText); + return java.time.temporal.ChronoUnit.DAYS.between(java.time.LocalDate.now(), deadlineDate); + } catch (Exception e) { + log.warn("待办任务deadline解析失败:{}", deadline); + return null; + } + } + /** * 获取业务ID - * + * * @param task * @return */