fix(加班申请): 修复加班申请的状态机相关代码的不合理的地方。
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user