fix(加班申请): 修复加班申请的状态机相关代码的不合理的地方。

This commit is contained in:
dk
2026-06-03 21:00:11 +08:00
parent 679edf08ba
commit 55a50eb3d5
5 changed files with 16 additions and 9 deletions

View File

@@ -16,6 +16,11 @@ public final class OvertimeApplicationConstants {
public static final String STATUS_REJECTED = "rejected";
public static final String STATUS_CANCELLED = "cancelled";
/**
* 新建即提交的业务日志动作。
* <p>
* 该动作仅用于状态日志、审计日志留痕,不要求在 rdms_object_status_transition 中存在显式流转配置。
*/
public static final String ACTION_SUBMIT = "submit";
public static final String ACTION_RESUBMIT = "resubmit";
public static final String ACTION_APPROVE = "approve";

View File

@@ -52,11 +52,11 @@ public class OvertimeApplicationController {
}
@PutMapping("/{id}")
@Operation(summary = "退回后修改并重新提交加班申请")
@Operation(summary = "退回或撤销后修改并重新提交加班申请")
@PreAuthorize("@ss.hasPermission('" + OvertimeApplicationConstants.PERMISSION_UPDATE + "')")
public CommonResult<Boolean> updateRejected(@PathVariable("id") Long id,
@Valid @RequestBody OvertimeApplicationSaveReqVO reqVO) {
overtimeApplicationService.updateRejectedApplication(id, reqVO);
public CommonResult<Boolean> resubmit(@PathVariable("id") Long id,
@Valid @RequestBody OvertimeApplicationSaveReqVO reqVO) {
overtimeApplicationService.resubmitApplication(id, reqVO);
return success(true);
}

View File

@@ -8,7 +8,8 @@ import lombok.Data;
@Data
public class OvertimeApplicationStatusActionReqVO {
@Schema(description = "动作原因或审核意见。退回、撤销", example = "请补充加班内容")
@Size(max = 1000, message = "动作原因长度不能超过1000个字符")
@Schema(description = "动作原因或审核意见。是否必填以状态机配置为准;当前退回必填,撤销",
example = "请补充加班内容")
@Size(max = 1000, message = "动作原因长度不能超过 1000 个字符")
private String reason;
}

View File

@@ -14,7 +14,7 @@ public interface OvertimeApplicationService {
Long createApplication(OvertimeApplicationSaveReqVO reqVO);
void updateRejectedApplication(Long id, OvertimeApplicationSaveReqVO reqVO);
void resubmitApplication(Long id, OvertimeApplicationSaveReqVO reqVO);
void approve(Long id, OvertimeApplicationStatusActionReqVO reqVO);

View File

@@ -75,6 +75,7 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
application.setApprovalTime(null);
overtimeApplicationMapper.insert(application);
// 创建即进入初始状态 pending这里保留 submit 作为业务留痕动作,不依赖状态机流转表存在 submit 配置。
writeStatusLog(application, OvertimeApplicationConstants.ACTION_SUBMIT, null, initialStatus, null);
writeAuditLog(application, OvertimeApplicationConstants.ACTION_SUBMIT, null, initialStatus, null, null, null);
return application.getId();
@@ -82,7 +83,7 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
@Override
@Transactional(rollbackFor = Exception.class)
public void updateRejectedApplication(Long id, OvertimeApplicationSaveReqVO reqVO) {
public void resubmitApplication(Long id, OvertimeApplicationSaveReqVO reqVO) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
OvertimeApplicationDO current = validateApplicationExists(id);
if (!Objects.equals(current.getApplicantId(), loginUserId)) {
@@ -102,7 +103,7 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
update.setApprovalTime(null);
int updateCount = overtimeApplicationMapper.updateByIdAndStatusesAndApplicantId(update, id,
List.of(OvertimeApplicationConstants.STATUS_PENDING, OvertimeApplicationConstants.STATUS_REJECTED),
List.of(OvertimeApplicationConstants.STATUS_REJECTED, OvertimeApplicationConstants.STATUS_CANCELLED),
loginUserId);
if (updateCount != 1) {
throw exception(ErrorCodeConstants.OVERTIME_APPLICATION_STATUS_CONCURRENT_MODIFIED);