| | |
| | | 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.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; |
| | |
| | | private ApproveNodeMapper approveNodeMapper; |
| | | @Autowired |
| | | private IApproveProcessService approveProcessService; |
| | | @Autowired |
| | | private SysUserMapper sysUserMapper; |
| | | |
| | | |
| | | @Override |
| | | public void initApproveNodes(String id) { |
| | | //租户id |
| | | Long tenantId = SecurityUtils.getLoginUser().getTenantId(); |
| | | |
| | | ApproveProcess approve = approveProcessService.getApproveById(id); |
| | | String[] names = approve.getApproveUserNames().split(","); |
| | | Long approveId = approve.getId(); |
| | | 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(names[i]); |
| | | 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<ApproveNode> details(String id) { |
| | | ApproveProcess approve = approveProcessService.getApproveById(id); |
| | | Long approveId = approve.getId(); |
| | | |
| | | LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(ApproveNode::getApproveProcessId, approveId); |
| | | queryWrapper.eq(ApproveNode::getApproveProcessId, id); |
| | | queryWrapper.eq(ApproveNode::getDeleteFlag, 0); |
| | | queryWrapper.eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId()); |
| | | List<ApproveNode> list = list(queryWrapper); |
| | | // 按照 approveNodeOrder 字段升序排序 |
| | | list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder)); |
| | | LambdaQueryWrapper<ApproveProcess> 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) { |
| | | approveProcessService.updateApproveProcessStatus(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<ApproveNode> queryWrapper = new UpdateWrapper<>(); |
| | | queryWrapper.lambda().set(ApproveNode::getDeleteFlag, 1) |
| | | .eq(ApproveNode::getApproveProcessId, id); |
| | | update(queryWrapper); |
| | | } |
| | | |
| | | } |