Browse Source

feat:审批不累计计算,导出也没必要显示审批用时

master
buaixuexideshitongxue 2 weeks ago
parent
commit
0b8d01a173
  1. 23
      src/main/java/com/biutag/supervision/flow/action/ConfirmationCompletionAction.java
  2. 9
      src/main/java/com/biutag/supervision/flow/action/FirstApproveReturnAction.java
  3. 12
      src/main/java/com/biutag/supervision/flow/action/SecondApproveAction.java
  4. 9
      src/main/java/com/biutag/supervision/flow/action/SecondApproveReturnAction.java
  5. 16
      src/main/java/com/biutag/supervision/util/TimeUtil.java

23
src/main/java/com/biutag/supervision/flow/action/ConfirmationCompletionAction.java

@ -101,13 +101,14 @@ public class ConfirmationCompletionAction implements Action {
public void updateNegative(String negativeId, ConfirmationCompletionData completionData) {
Negative negative = negativeService.getById(negativeId);
LocalDateTime now = LocalDateTime.now();
Long firstApproveTime = negative.getFirstApproveTime() == null ? 0L : negative.getFirstApproveTime();
if (negative.getLatestProcessTime() != null) {
firstApproveTime = firstApproveTime + TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
Long firstApproveTime = negative.getFirstApproveTime();
// 覆盖制:每次重新计算,超时锁定则不更新
if (TimeUtil.canUpdateApproveTime(firstApproveTime) && negative.getLatestProcessTime() != null) {
firstApproveTime = TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
}
Long secondApprovalTime = negative.getSecondApprovalTime() == null ? 0L : negative.getSecondApprovalTime();
if (negative.getLatestProcessTime() != null) {
secondApprovalTime = secondApprovalTime + TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
Long secondApprovalTime = negative.getSecondApprovalTime();
if (TimeUtil.canUpdateApproveTime(secondApprovalTime) && negative.getLatestProcessTime() != null) {
secondApprovalTime = TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
}
LambdaUpdateWrapper<Negative> updateWrapper = new LambdaUpdateWrapper<Negative>()
.eq(Negative::getId, negativeId)
@ -120,10 +121,16 @@ public class ConfirmationCompletionAction implements Action {
.set(Negative::getFlowKey, FlowNodeEnum.COMPLETED.getKey())
.set(Negative::getUpdTime, LocalDateTime.now());
if ("2".equals(negative.getApprovalFlow())){
updateWrapper.set(Negative::getSecondApprovalTime, secondApprovalTime);
// 超时锁定时,不更新审批时长字段
if (TimeUtil.canUpdateApproveTime(secondApprovalTime)) {
updateWrapper.set(Negative::getSecondApprovalTime, secondApprovalTime);
}
}
if ("3".equals(negative.getApprovalFlow())){
updateWrapper.set(Negative::getFirstApproveTime, firstApproveTime);
// 超时锁定时,不更新审批时长字段
if (TimeUtil.canUpdateApproveTime(firstApproveTime)) {
updateWrapper.set(Negative::getFirstApproveTime, firstApproveTime);
}
}
negativeService.update(updateWrapper);
}

9
src/main/java/com/biutag/supervision/flow/action/FirstApproveReturnAction.java

@ -46,9 +46,10 @@ public class FirstApproveReturnAction implements Action {
public void updateNegative(String negativeId, String nextFlowKey) {
Negative negative = negativeService.getById(negativeId);
LocalDateTime now = LocalDateTime.now();
Long firstApproveTime = negative.getFirstApproveTime() == null ? 0L : negative.getFirstApproveTime();
if (negative.getLatestProcessTime() != null) {
firstApproveTime = firstApproveTime + TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
Long firstApproveTime = negative.getFirstApproveTime();
// 覆盖制:每次重新计算,超时锁定则不更新
if (TimeUtil.canUpdateApproveTime(firstApproveTime) && negative.getLatestProcessTime() != null) {
firstApproveTime = TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
}
negativeService.update(new LambdaUpdateWrapper<Negative>()
.set(Negative::getFlowKey, negative.getIsSecondHandle() ? FlowNodeEnum.VERIFY.getKey() : nextFlowKey)
@ -56,7 +57,7 @@ public class FirstApproveReturnAction implements Action {
// 当前处理对象
.set(Negative::getCurrentProcessingObject, String.format("%s专班", negative.getHandleSecondDepartName()))
.eq(Negative::getId, negativeId)
.set(Negative::getFirstApproveTime, firstApproveTime)
.set(TimeUtil.canUpdateApproveTime(firstApproveTime), Negative::getFirstApproveTime, firstApproveTime)
.set(Negative::getLatestProcessTime, now));
}

12
src/main/java/com/biutag/supervision/flow/action/SecondApproveAction.java

@ -53,15 +53,19 @@ public class SecondApproveAction implements Action {
public void updateNegative(String negativeId, String nextFlowKey) {
Negative negative = negativeService.getById(negativeId);
LocalDateTime now = LocalDateTime.now();
Long secondApprovalTime = negative.getSecondApprovalTime() == null ? 0L : negative.getSecondApprovalTime();
if (negative.getLatestProcessTime() != null) {
secondApprovalTime = secondApprovalTime + TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
Long secondApprovalTime = negative.getSecondApprovalTime();
// 覆盖制:每次重新计算,超时锁定则不更新
if (TimeUtil.canUpdateApproveTime(secondApprovalTime) && negative.getLatestProcessTime() != null) {
secondApprovalTime = TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
}
LambdaUpdateWrapper<Negative> updateWrapper = new LambdaUpdateWrapper<Negative>()
.set(Negative::getFlowKey, nextFlowKey)
.set(Negative::getUpdTime, LocalDateTime.now())
.set(Negative::getSecondApprovalTime, secondApprovalTime)
.eq(Negative::getId, negativeId);
// 超时锁定时,不更新审批时长字段
if (TimeUtil.canUpdateApproveTime(secondApprovalTime)) {
updateWrapper.set(Negative::getSecondApprovalTime, secondApprovalTime);
}
// Negative negative = negativeService.getById(negativeId);
if (ApprovalFlowEnum.SECOND_APPROVAL.getValue().equals(negative.getApprovalFlow())) {
updateWrapper.set(Negative::getFlowKey, FlowNodeEnum.COMPLETED.getKey())

9
src/main/java/com/biutag/supervision/flow/action/SecondApproveReturnAction.java

@ -47,9 +47,10 @@ public class SecondApproveReturnAction implements Action {
public void updateNegative(String negativeId, String nextFlowKey) {
Negative negative = negativeService.getById(negativeId);
LocalDateTime now = LocalDateTime.now();
Long secondApprovalTime = negative.getSecondApprovalTime() == null ? 0L : negative.getSecondApprovalTime();
if (negative.getLatestProcessTime() != null) {
secondApprovalTime = secondApprovalTime + TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
Long secondApprovalTime = negative.getSecondApprovalTime();
// 覆盖制:每次重新计算,超时锁定则不更新
if (TimeUtil.canUpdateApproveTime(secondApprovalTime) && negative.getLatestProcessTime() != null) {
secondApprovalTime = TimeUtil.calculateWorkdayDuration(negative.getLatestProcessTime(), now);
}
negativeService.update(new LambdaUpdateWrapper<Negative>()
.set(Negative::getFlowKey, nextFlowKey)
@ -57,7 +58,7 @@ public class SecondApproveReturnAction implements Action {
.set(Negative::getProcessingStatus, ProcessingStatusEnum.processing.name())
// 当前处理对象
.set(Negative::getCurrentProcessingObject, String.format("%s专班", negative.getHandleThreeDepartName()))
.set(Negative::getSecondApprovalTime, secondApprovalTime)
.set(TimeUtil.canUpdateApproveTime(secondApprovalTime), Negative::getSecondApprovalTime, secondApprovalTime)
.eq(Negative::getId, negativeId));
}

16
src/main/java/com/biutag/supervision/util/TimeUtil.java

@ -18,6 +18,18 @@ public class TimeUtil {
// 一天86400秒
public static final Long SECONDS_OF_A_DAY = 86400L;
// 超时锁定阈值(秒),超过此值则不再更新审批时长
public static final Long APPROVAL_LOCK_THRESHOLD = SECONDS_OF_A_DAY;
/**
* 判断审批时长是否可以更新
* @param currentDuration 当前审批时长null表示尚未开始计时
* @return true=可以更新false=已锁定不可更新>=86400秒
*/
public static boolean canUpdateApproveTime(Long currentDuration) {
return currentDuration == null || currentDuration < APPROVAL_LOCK_THRESHOLD;
}
/**
*
* @param beginTime
@ -176,9 +188,9 @@ public class TimeUtil {
long limit = SECONDS_OF_A_DAY; // 86400秒 = 1天
long diff = limit - usedSeconds; // diff > 0 表示剩余时间,diff < 0 表示超出时间
if (diff >= 0) {
return "未超时/用时:" + formatDuration(usedSeconds);
return "未超时";
} else {
return "已超时/用时:" + formatDuration(usedSeconds);
return "已超时";
}
}

Loading…
Cancel
Save