yxk-20260518-待办列表增加截至时间计算逻辑,逾期和即将到期的任务分别提醒

This commit is contained in:
ye1023
2026-05-18 15:33:40 +08:00
parent 05e0aafb48
commit a5d4965f9c
2 changed files with 50 additions and 3 deletions
@@ -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;
/** 超时提醒*/
@@ -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);
@@ -548,6 +562,29 @@ 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
*