package com.ruoyi.approve.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.approve.vo.ApproveNodeVo;
|
import com.ruoyi.common.utils.SecurityUtils;
|
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.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;
|
|
|
@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();
|
for (int i = 0; i < names.length; i++) {
|
ApproveNode approveNode = new ApproveNode();
|
approveNode.setApproveProcessId(approveId);
|
approveNode.setApproveNodeOrder(i +1);
|
approveNode.setApproveNodeUser(names[i]);
|
approveNode.setApproveNodeTime(new Date());
|
approveNode.setApproveNodeStatus(0);
|
approveNode.setTenantId(tenantId);
|
approveNode.setDeleteFlag(0);
|
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);
|
List<ApproveNode> list = list(queryWrapper);
|
// 按照 approveNodeOrder 字段升序排序
|
list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder));
|
return list;
|
}
|
|
@Override
|
public void updateApproveNode(ApproveNodeVo approveNode) {
|
//某个节点审批不通过
|
if(approveNode.getApproveNodeStatus().intValue()==2){
|
//修改审批流程
|
ApproveNode node = approveNodeMapper.selectById(approveNode.getId());
|
Long approveProcessId = node.getApproveProcessId();
|
ApproveProcess approveProcess = approveProcessService.getBaseMapper().selectById(approveProcessId);
|
approveProcess.setApproveOverTime(new Date());
|
approveProcess.setApproveStatus(3);
|
approveProcessService.saveOrUpdate(approveProcess);
|
|
//审批节点状态改变
|
initApproveNodes(approveProcess.getApproveId());
|
|
return;
|
}
|
//更新审批流程
|
approveProcessService.updateApproveProcessStatus(approveNode);
|
|
//审批流程当前审批人修改
|
ApproveNode node = getById(approveNode.getId());
|
node.setApproveNodeTime(new Date());
|
node.setApproveNodeStatus(approveNode.getApproveNodeStatus());
|
approveNodeMapper.updateById(node);
|
}
|
|
}
|