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,int deleteFlag) {
|
//租户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(deleteFlag);
|
approveNode.setApproveNodeReason(null);
|
approveNode.setApproveNodeRemark("0");
|
if(i==0){
|
approveNode.setApproveNodeRemark("1");
|
}
|
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::getDeleteFlag, 0);
|
|
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);
|
//设置当前审批人为第一个
|
approveProcess.setApproveUserCurrentId(Long.valueOf(approveProcess.getApproveUserIds().split(",")[0]));
|
approveProcess.setApproveUserCurrentName(approveProcess.getApproveUserNames().split(",")[0]);
|
approveProcessService.saveOrUpdate(approveProcess);
|
|
//审批节点状态改变
|
updateApproveNodes(approveProcess.getApproveId(),1);
|
initApproveNodes(approveProcess.getApproveId(),0);
|
|
return;
|
}
|
//更新审批流程 当前审批人修改
|
approveProcessService.updateApproveProcessStatus(approveNode);
|
|
//审批流程 节点状态改变
|
ApproveNode node = getById(approveNode.getId());
|
node.setApproveNodeRemark("0");
|
node.setApproveNodeTime(new Date());
|
node.setApproveNodeReason(approveNode.getApproveNodeReason());
|
node.setApproveNodeStatus(approveNode.getApproveNodeStatus());
|
approveNodeMapper.updateById(node);
|
|
//下一个节点状态改变
|
ApproveNode node1 = approveNodeMapper.selectById(approveNode.getId());
|
Long approveProcessId = node1.getApproveProcessId();
|
ApproveProcess approveProcess = approveProcessService.getBaseMapper().selectById(approveProcessId);
|
int length = approveProcess.getApproveUserIds().split(",").length;
|
|
//此时是最后一个节点了
|
if (length==node.getApproveNodeOrder()){
|
return;
|
}
|
|
LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(ApproveNode::getApproveNodeOrder, node.getApproveNodeOrder()+1);
|
queryWrapper.eq(ApproveNode::getApproveProcessId, node.getApproveProcessId());
|
queryWrapper.eq(ApproveNode::getDeleteFlag, 0);
|
ApproveNode nextNode = getOne(queryWrapper);
|
nextNode.setApproveNodeRemark("1");
|
approveNodeMapper.updateById(nextNode);
|
}
|
|
private void updateApproveNodes(String id, int delFlag) {
|
ApproveProcess approve = approveProcessService.getApproveById(id);
|
Long approveId = approve.getId();
|
LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(ApproveNode::getApproveProcessId, approveId);
|
List<ApproveNode> list = list(queryWrapper);
|
for (ApproveNode approveNode : list) {
|
approveNode.setDeleteFlag(delFlag);
|
approveNodeMapper.updateById(approveNode);
|
}
|
}
|
|
}
|