feat(approval): 添加审批撤销功能
- 在IWmsApprovalService中新增cancelApproval方法定义 - 在IWmsApprovalTaskService中新增deleteByApprovalId方法定义 - 在WmsApprovalController中新增cancelApproval接口 - 在WmsApprovalServiceImpl中实现撤销审批业务逻辑 - 在WmsApprovalTaskServiceImpl中实现按审批ID删除任务功能 - 添加撤销审批的权限验证和重复提交限制 - 实现审批状态校验和关联任务清理机制
This commit is contained in:
@@ -142,4 +142,18 @@ public class WmsApprovalController extends BaseController {
|
|||||||
public R<List<WmsApprovalTaskVo>> getTasks(@PathVariable Long approvalId) {
|
public R<List<WmsApprovalTaskVo>> getTasks(@PathVariable Long approvalId) {
|
||||||
return R.ok(iWmsApprovalTaskService.queryByApprovalId(approvalId));
|
return R.ok(iWmsApprovalTaskService.queryByApprovalId(approvalId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤销审批
|
||||||
|
*
|
||||||
|
* @param approvalId 审批ID
|
||||||
|
*/
|
||||||
|
@Log(title = "撤销审批", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping("/cancel")
|
||||||
|
public R<Map<String, Object>> cancelApproval(
|
||||||
|
@NotNull(message = "审批ID不能为空")
|
||||||
|
@RequestParam Long approvalId) {
|
||||||
|
return R.ok(iWmsApprovalService.cancelApproval(approvalId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,4 +65,12 @@ public interface IWmsApprovalService {
|
|||||||
* @return 操作结果
|
* @return 操作结果
|
||||||
*/
|
*/
|
||||||
Map<String, Object> rejectTask(Long taskId, String approvalOpinion);
|
Map<String, Object> rejectTask(Long taskId, String approvalOpinion);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 撤销审批
|
||||||
|
*
|
||||||
|
* @param approvalId 审批ID
|
||||||
|
* @return 操作结果
|
||||||
|
*/
|
||||||
|
Map<String, Object> cancelApproval(Long approvalId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,4 +31,12 @@ public interface IWmsApprovalTaskService {
|
|||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
List<WmsApprovalTaskVo> queryByApprovalId(Long approvalId);
|
List<WmsApprovalTaskVo> queryByApprovalId(Long approvalId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据审批ID删除所有相关任务
|
||||||
|
*
|
||||||
|
* @param approvalId 审批ID
|
||||||
|
* @return 删除数量
|
||||||
|
*/
|
||||||
|
Integer deleteByApprovalId(Long approvalId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
|||||||
|
|
||||||
private final WmsApprovalMapper baseMapper;
|
private final WmsApprovalMapper baseMapper;
|
||||||
private final WmsApprovalTaskMapper approvalTaskMapper;
|
private final WmsApprovalTaskMapper approvalTaskMapper;
|
||||||
|
private final IWmsApprovalTaskService approvalTaskService;
|
||||||
private final WmsLeaveRequestMapper leaveRequestMapper;
|
private final WmsLeaveRequestMapper leaveRequestMapper;
|
||||||
private final WmsOutRequestMapper outRequestMapper;
|
private final WmsOutRequestMapper outRequestMapper;
|
||||||
private final ISysUserService userService;
|
private final ISysUserService userService;
|
||||||
@@ -499,4 +500,53 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Map<String, Object> cancelApproval(Long approvalId) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
result.put("success", false);
|
||||||
|
|
||||||
|
if (approvalId == null) {
|
||||||
|
result.put("message", "审批ID不能为空");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
WmsApproval approval = baseMapper.selectById(approvalId);
|
||||||
|
if (approval == null) {
|
||||||
|
result.put("message", "审批记录不存在");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("已撤销".equals(approval.getApprovalStatus())) {
|
||||||
|
result.put("message", "该审批已被撤销");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("已同意".equals(approval.getApprovalStatus())) {
|
||||||
|
result.put("message", "已通过的审批不能撤销");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<WmsApprovalTaskVo> tasks = approvalTaskService.queryByApprovalId(approvalId);
|
||||||
|
if (tasks != null && !tasks.isEmpty()) {
|
||||||
|
for (WmsApprovalTaskVo task : tasks) {
|
||||||
|
if (task.getTaskStatus() != null && !"pending".equals(task.getTaskStatus())) {
|
||||||
|
result.put("message", "该审批已被审批,不能撤销(审批人:" + task.getApproverName() + ",状态:" + task.getTaskStatus() + ")");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Integer deletedCount = approvalTaskService.deleteByApprovalId(approvalId);
|
||||||
|
|
||||||
|
approval.setApprovalStatus("已撤销");
|
||||||
|
approval.setFinalStatus("cancelled");
|
||||||
|
baseMapper.updateById(approval);
|
||||||
|
|
||||||
|
result.put("success", true);
|
||||||
|
result.put("message", "撤销成功");
|
||||||
|
result.put("deletedTaskCount", deletedCount);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,4 +201,10 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
|||||||
.eq(WmsApprovalTask::getApprovalId, approvalId)
|
.eq(WmsApprovalTask::getApprovalId, approvalId)
|
||||||
.orderByAsc(WmsApprovalTask::getCreateTime));
|
.orderByAsc(WmsApprovalTask::getCreateTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer deleteByApprovalId(Long approvalId) {
|
||||||
|
return baseMapper.delete(Wrappers.<WmsApprovalTask>lambdaQuery()
|
||||||
|
.eq(WmsApprovalTask::getApprovalId, approvalId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user