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<ApproveNodeMapper, ApproveNode> 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<ApproveNode> details(String id) {
|
LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
|
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) {
|
// 审批节点状态: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);
|
}
|
|
}
|