yxk-20260518-待办列表增加截至时间计算逻辑,逾期和即将到期的任务分别提醒
This commit is contained in:
+10
@@ -57,6 +57,16 @@ public class TaskDTO implements java.io.Serializable {
|
|||||||
private String bpmBizTitle;
|
private String bpmBizTitle;
|
||||||
/** 截止时间 */
|
/** 截止时间 */
|
||||||
private String deadline;
|
private String deadline;
|
||||||
|
/** 截止时间是否逾期 */
|
||||||
|
private Boolean deadlineOverdue;
|
||||||
|
/** 截止时间逾期天数 */
|
||||||
|
private Long overdueDays;
|
||||||
|
/** 截止时间是否临近 */
|
||||||
|
private Boolean deadlineSoon;
|
||||||
|
/** 截止时间剩余天数 */
|
||||||
|
private Long remainingDays;
|
||||||
|
/** 截止时间提醒文案 */
|
||||||
|
private String deadlineWarnText;
|
||||||
/** 流程状态 未发起、处理中、处理完成*/
|
/** 流程状态 未发起、处理中、处理完成*/
|
||||||
private String bpmStatus;
|
private String bpmStatus;
|
||||||
/** 超时提醒*/
|
/** 超时提醒*/
|
||||||
|
|||||||
+40
-3
@@ -310,7 +310,21 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|||||||
dto.setTaskId(t.getTaskDefinitionKey());
|
dto.setTaskId(t.getTaskDefinitionKey());
|
||||||
dto.setTaskEndTime(t.getDueDate());
|
dto.setTaskEndTime(t.getDueDate());
|
||||||
dto.setProcessInstanceId(t.getProcessInstanceId());
|
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.setProcessApplyUserId(applyUserId);
|
||||||
// dto.setProcessApplyUserName(ownerSysUser!=null?ownerSysUser.getRealname():"");
|
// dto.setProcessApplyUserName(ownerSysUser!=null?ownerSysUser.getRealname():"");
|
||||||
dto.setProcessDefinitionId(processInstance != null ? processInstance.getProcessDefinitionId() : null);
|
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
|
* 获取业务ID
|
||||||
*
|
*
|
||||||
* @param task
|
* @param task
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user