青城
8 天以前 9cbad80abaabd430de6a9739fb2c898d3b10193a
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -30,13 +30,14 @@
    @Override
    public void initApproveNodes(String id) {
    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);
@@ -45,7 +46,12 @@
            approveNode.setApproveNodeTime(new Date());
            approveNode.setApproveNodeStatus(0);
            approveNode.setTenantId(tenantId);
            approveNode.setDeleteFlag(0);
            approveNode.setDeleteFlag(deleteFlag);
            approveNode.setApproveNodeReason(null);
            approveNode.setApproveNodeRemark("0");
            if(i==0){
                approveNode.setApproveNodeRemark("1");
            }
            approveNodeMapper.insert(approveNode);
        }
    }
@@ -57,6 +63,8 @@
        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));
@@ -73,21 +81,58 @@
            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);
            //审批节点状态改变
            initApproveNodes(approveProcess.getApproveId());
            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);
        }
    }
}