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_REJECTED = "rejected";
|
||||||
public static final String STATUS_CANCELLED = "cancelled";
|
public static final String STATUS_CANCELLED = "cancelled";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新建即提交的业务日志动作。
|
||||||
|
* <p>
|
||||||
|
* 该动作仅用于状态日志、审计日志留痕,不要求在 rdms_object_status_transition 中存在显式流转配置。
|
||||||
|
*/
|
||||||
public static final String ACTION_SUBMIT = "submit";
|
public static final String ACTION_SUBMIT = "submit";
|
||||||
public static final String ACTION_RESUBMIT = "resubmit";
|
public static final String ACTION_RESUBMIT = "resubmit";
|
||||||
public static final String ACTION_APPROVE = "approve";
|
public static final String ACTION_APPROVE = "approve";
|
||||||
|
|||||||
@@ -52,11 +52,11 @@ public class OvertimeApplicationController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/{id}")
|
@PutMapping("/{id}")
|
||||||
@Operation(summary = "退回后修改并重新提交加班申请")
|
@Operation(summary = "退回或撤销后修改并重新提交加班申请")
|
||||||
@PreAuthorize("@ss.hasPermission('" + OvertimeApplicationConstants.PERMISSION_UPDATE + "')")
|
@PreAuthorize("@ss.hasPermission('" + OvertimeApplicationConstants.PERMISSION_UPDATE + "')")
|
||||||
public CommonResult<Boolean> updateRejected(@PathVariable("id") Long id,
|
public CommonResult<Boolean> resubmit(@PathVariable("id") Long id,
|
||||||
@Valid @RequestBody OvertimeApplicationSaveReqVO reqVO) {
|
@Valid @RequestBody OvertimeApplicationSaveReqVO reqVO) {
|
||||||
overtimeApplicationService.updateRejectedApplication(id, reqVO);
|
overtimeApplicationService.resubmitApplication(id, reqVO);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class OvertimeApplicationStatusActionReqVO {
|
public class OvertimeApplicationStatusActionReqVO {
|
||||||
|
|
||||||
@Schema(description = "动作原因或审核意见。退回、撤销必填", example = "请补充加班内容")
|
@Schema(description = "动作原因或审核意见。是否必填以状态机配置为准;当前退回必填,撤销选填",
|
||||||
@Size(max = 1000, message = "动作原因长度不能超过1000个字符")
|
example = "请补充加班内容")
|
||||||
|
@Size(max = 1000, message = "动作原因长度不能超过 1000 个字符")
|
||||||
private String reason;
|
private String reason;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public interface OvertimeApplicationService {
|
|||||||
|
|
||||||
Long createApplication(OvertimeApplicationSaveReqVO reqVO);
|
Long createApplication(OvertimeApplicationSaveReqVO reqVO);
|
||||||
|
|
||||||
void updateRejectedApplication(Long id, OvertimeApplicationSaveReqVO reqVO);
|
void resubmitApplication(Long id, OvertimeApplicationSaveReqVO reqVO);
|
||||||
|
|
||||||
void approve(Long id, OvertimeApplicationStatusActionReqVO reqVO);
|
void approve(Long id, OvertimeApplicationStatusActionReqVO reqVO);
|
||||||
|
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
|
|||||||
application.setApprovalTime(null);
|
application.setApprovalTime(null);
|
||||||
overtimeApplicationMapper.insert(application);
|
overtimeApplicationMapper.insert(application);
|
||||||
|
|
||||||
|
// 创建即进入初始状态 pending,这里保留 submit 作为业务留痕动作,不依赖状态机流转表存在 submit 配置。
|
||||||
writeStatusLog(application, OvertimeApplicationConstants.ACTION_SUBMIT, null, initialStatus, null);
|
writeStatusLog(application, OvertimeApplicationConstants.ACTION_SUBMIT, null, initialStatus, null);
|
||||||
writeAuditLog(application, OvertimeApplicationConstants.ACTION_SUBMIT, null, initialStatus, null, null, null);
|
writeAuditLog(application, OvertimeApplicationConstants.ACTION_SUBMIT, null, initialStatus, null, null, null);
|
||||||
return application.getId();
|
return application.getId();
|
||||||
@@ -82,7 +83,7 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateRejectedApplication(Long id, OvertimeApplicationSaveReqVO reqVO) {
|
public void resubmitApplication(Long id, OvertimeApplicationSaveReqVO reqVO) {
|
||||||
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
||||||
OvertimeApplicationDO current = validateApplicationExists(id);
|
OvertimeApplicationDO current = validateApplicationExists(id);
|
||||||
if (!Objects.equals(current.getApplicantId(), loginUserId)) {
|
if (!Objects.equals(current.getApplicantId(), loginUserId)) {
|
||||||
@@ -102,7 +103,7 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
|
|||||||
update.setApprovalTime(null);
|
update.setApprovalTime(null);
|
||||||
|
|
||||||
int updateCount = overtimeApplicationMapper.updateByIdAndStatusesAndApplicantId(update, id,
|
int updateCount = overtimeApplicationMapper.updateByIdAndStatusesAndApplicantId(update, id,
|
||||||
List.of(OvertimeApplicationConstants.STATUS_PENDING, OvertimeApplicationConstants.STATUS_REJECTED),
|
List.of(OvertimeApplicationConstants.STATUS_REJECTED, OvertimeApplicationConstants.STATUS_CANCELLED),
|
||||||
loginUserId);
|
loginUserId);
|
||||||
if (updateCount != 1) {
|
if (updateCount != 1) {
|
||||||
throw exception(ErrorCodeConstants.OVERTIME_APPLICATION_STATUS_CONCURRENT_MODIFIED);
|
throw exception(ErrorCodeConstants.OVERTIME_APPLICATION_STATUS_CONCURRENT_MODIFIED);
|
||||||
|
|||||||
Reference in New Issue
Block a user