package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.mapper.ApproveNodeMapper; import com.ruoyi.approve.pojo.ApproveNode; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.approve.service.IApproveProcessService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.Comparator; import java.util.Date; import java.util.List; @Service @RequiredArgsConstructor public class ApproveNodeServiceImpl extends ServiceImpl implements IApproveNodeService { @Autowired private ApproveNodeMapper approveNodeMapper; @Autowired private IApproveProcessService approveProcessService; @Autowired private SysUserMapper sysUserMapper; @Override public void initApproveNodes(String approveUserIds,String approveID,Long tenantId) { Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); ApproveProcess approve = approveProcessService.getApproveById(approveID); String[] names = approveUserIds.split(","); String approveId = approve.getApproveId(); for (int i = 0; i < names.length; i++) { SysUser sysUser = sysUserMapper.selectUserById(Long.parseLong(names[i])); if (sysUser == null) continue; ApproveNode approveNode = new ApproveNode(); approveNode.setApproveProcessId(approveId); approveNode.setApproveNodeOrder(i +1); approveNode.setApproveNodeUser(sysUser.getNickName()); approveNode.setApproveNodeUserId(sysUser.getUserId()); approveNode.setApproveNodeTime(new Date()); approveNode.setApproveNodeStatus(0); approveNode.setTenantId(tenantId); approveNode.setDeleteFlag(0); approveNode.setCreateUser(userId); approveNode.setUpdateUser(userId); approveNode.setCreateTime(LocalDateTime.now()); approveNode.setUpdateTime(LocalDateTime.now()); approveNodeMapper.insert(approveNode); } } @Override public List details(String id) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ApproveNode::getApproveProcessId, id); queryWrapper.eq(ApproveNode::getDeleteFlag, 0); queryWrapper.eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()); List list = list(queryWrapper); // 按照 approveNodeOrder 字段升序排序 list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); LambdaQueryWrapper approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>(); approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, id) .eq(ApproveProcess::getApproveDelete, 0) .eq(ApproveProcess::getTenantId, SecurityUtils.getLoginUser().getTenantId()) .last("limit 1"); ApproveProcess approveProcess = approveProcessService.getOne(approveProcessLambdaQueryWrapper); if(approveProcess != null && approveProcess.getApproveStatus() == 3){ return list; } for (ApproveNode approveNode : list) { if(approveNode.getApproveNodeStatus() == 1){ continue; } approveNode.setIsShen(true); break; } return list; } @Override public void updateApproveNode(ApproveNode approveNode) { // 审批节点状态:1同意,2拒绝,0尚未审核 switch (approveNode.getApproveNodeStatus()){ case 1: approveProcessService.updateApproveProcessStatus(approveNode, Boolean.TRUE.equals(approveNode.getIsLast()) ? 2 : 1); break; case 2: approveProcessService.updateApproveProcessStatus(approveNode, 3); break; default: break; } approveNode.setApproveNodeTime(new Date()); approveNodeMapper.updateById(approveNode); } @Override public void delApproveNodeByApproveId(Long id) { UpdateWrapper queryWrapper = new UpdateWrapper<>(); queryWrapper.lambda().set(ApproveNode::getDeleteFlag, 1) .eq(ApproveNode::getApproveProcessId, id); update(queryWrapper); } }