无关风月
4 天以前 f431d9abcac90ea7ec3c351e311a85116d98e72b
审批模块
13个文件已修改
5个文件已添加
327 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowNodeController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TDeptController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/SetApprovalDTO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/SetDeptDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalFlowNodeMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalFlowNode.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalListQuery.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalFlowNodeService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalFlowNodeServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/ApprovalFlowNodeVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/ApprovalVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/OaApprovalMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalController.java
@@ -1,8 +1,28 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.dto.AddDeptDTO;
import com.ruoyi.system.dto.SetDeptDTO;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.OaApprovalService;
import com.ruoyi.system.service.TDeptService;
import com.ruoyi.system.vo.system.ApprovalVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -14,7 +34,61 @@
 */
@RestController
@RequestMapping("/oa-approval")
@Api("审批流程设计")
public class OaApprovalController {
    @Resource
    private OaApprovalService oaApprovalService;
    /**
     * 获取部门树列表
     */
    @ApiOperation("流程设计分页列表")
    @PostMapping("/pageList")
    public R<PageInfo<ApprovalVO>> pageList(@RequestBody ApprovalListQuery query) {
        return R.ok( oaApprovalService.pageList(query));
    }
    @ApiOperation(value = "启用禁用")
    @GetMapping(value = "/updateStatus")
    public R updateStatus(Integer id ) {
        OaApproval approval = oaApprovalService.getById(id);
        approval.setStatus(!approval.getStatus());
        oaApprovalService.updateById(approval);
        return R.ok();
    }
    @ApiOperation(value = "设置使用部门")
    @PostMapping(value = "/setDept")
    public R setDept(@RequestBody SetDeptDTO dto) {
        OaApproval approval = oaApprovalService.getById(dto.getId());
        approval.setDeptIds(dto.getDeptIds());
        oaApprovalService.updateById(approval);
        return R.ok();
    }
//    @Log(title = "编辑部门", businessType = BusinessType.UPDATE)
//    @ApiOperation(value = "编辑部门")
//    @PostMapping(value = "/edit")
//    public R edit(@RequestBody AddDeptDTO dto) {
//        deptService.updateById(dto);
//        return R.ok();
//    }
//    @ApiOperation(value = "部门详情")
//    @GetMapping(value = "/detail")
//    public R<TDept> edit(@RequestParam String id) {
//        return R.ok(deptService.getById(id));
//    }
//    @ApiOperation(value = "部门删除")
//    @DeleteMapping(value = "/delete")
//    @Log(title = "删除部门", businessType = BusinessType.DELETE)
//    public R<Boolean> delete(@RequestParam String id) {
//        Long count = deptService.lambdaQuery().eq(TDept::getParentId, id).count();
//        if (count>0){
//            return R.fail("当前部门存在下级部门,不可删除!");
//        }
//        List<SysUser> users = sysUserMapper.selectAllList().stream().filter(e -> e.getDelFlag().equals("0") && e.getDeptId().equals(id)).collect(Collectors.toList());
//        if (!users.isEmpty()){
//            return R.fail("当前部门存在用户,不可删除!");
//        }
//        deptService.removeById(Integer.valueOf(id));
//        return R.ok();
//    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowNodeController.java
@@ -1,8 +1,23 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.dto.SetApprovalDTO;
import com.ruoyi.system.dto.SetDeptDTO;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
import com.ruoyi.system.service.OaApprovalService;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import com.ruoyi.system.vo.system.ApprovalVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
@@ -13,8 +28,43 @@
 * @since 2025-09-15
 */
@RestController
@Api("审批流程")
@RequestMapping("/oa-approval-flow-node")
public class OaApprovalFlowNodeController {
    @Resource
    private OaApprovalFlowNodeService oaApprovalFlowNodeService;
    /**
     * 获取部门树列表
     */
    @ApiOperation("审批流程设计列表")
    @PostMapping("/pageList")
    public R<List<OaApprovalFlowNode>> pageList(@RequestBody ApprovalListQuery query) {
        return R.ok( oaApprovalFlowNodeService.pageList(query));
    }
    @ApiOperation(value = "启用禁用")
    @GetMapping(value = "/updateStatus")
    public R updateStatus(Integer id ) {
        OaApprovalFlowNode approval = oaApprovalFlowNodeService.getById(id);
        approval.setStatus(!approval.getStatus());
        oaApprovalFlowNodeService.updateById(approval);
        return R.ok();
    }
    @ApiOperation(value = "是否需要签名")
    @GetMapping(value = "/updateSign")
    public R updateSign(Integer id ) {
        OaApprovalFlowNode approval = oaApprovalFlowNodeService.getById(id);
        approval.setSignFlag(!approval.getSignFlag());
        oaApprovalFlowNodeService.updateById(approval);
        return R.ok();
    }
    @ApiOperation(value = "设置审批人")
    @PostMapping(value = "/setApproval")
    public R setDept(@RequestBody SetApprovalDTO dto) {
        OaApprovalFlowNode approval = oaApprovalFlowNodeService.getById(dto.getId());
        approval.setApprovalIds(dto.getApprovalIds());
        oaApprovalFlowNodeService.updateById(approval);
        return R.ok();
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -160,6 +160,7 @@
        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
            return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setUserName(user.getPhonenumber());
        user.setCreateBy(getUsername());
        user.setPassword(SecurityUtils.encryptPassword("123456"));
        userService.insertUser(user);
@@ -257,7 +258,7 @@
        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
            return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
        }
        user.setUserName(user.getPhonenumber());
        user.setUpdateBy(getUsername());
        if (StringUtils.isNotEmpty(user.getPassword())) {
            user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TDeptController.java
@@ -78,7 +78,7 @@
        if (!users.isEmpty()){
            return R.fail("当前部门存在用户,不可删除!");
        }
        deptService.removeById(id);
        deptService.removeById(Integer.valueOf(id));
        return R.ok();
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/SetApprovalDTO.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "审批流程设置审批人员DTO")
public class SetApprovalDTO implements Serializable {
    @ApiModelProperty(value = "审批流程id")
    private Integer id;
    @ApiModelProperty(value = "人员ids")
    private String approvalIds;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/SetDeptDTO.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.system.dto;
import com.ruoyi.common.core.domain.entity.TDept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "审批流程设计设置使用部门DTO")
public class SetDeptDTO implements Serializable {
    @ApiModelProperty(value = "审批流程id")
    private Integer id;
    @ApiModelProperty(value = "部门ids")
    private String deptIds;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalFlowNodeMapper.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +19,5 @@
 */
public interface OaApprovalFlowNodeMapper extends BaseMapper<OaApprovalFlowNode> {
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalMapper.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.mapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApproval;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.vo.system.ApprovalVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +19,6 @@
 */
public interface OaApprovalMapper extends BaseMapper<OaApproval> {
    List<ApprovalVO> pageList(@Param("query")ApprovalListQuery query, @Param("pageInfo")PageInfo<ApprovalVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalFlowNode.java
@@ -84,5 +84,7 @@
    @TableField("disabled")
    private Boolean disabled;
    @ApiModelProperty(value = "审批人名称")
    @TableField(exist = false)
    private String approvalName;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalListQuery.java
New file
@@ -0,0 +1,14 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "审批流程分页列表query")
public class ApprovalListQuery extends BasePage {
    @ApiModelProperty(value = "审批设计id")
    private Integer id;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalFlowNodeService.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import com.ruoyi.system.vo.system.ApprovalVO;
import java.util.List;
/**
 * <p>
@@ -13,4 +19,5 @@
 */
public interface OaApprovalFlowNodeService extends IService<OaApprovalFlowNode> {
    List<OaApprovalFlowNode> pageList(ApprovalListQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalService.java
@@ -1,7 +1,10 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.vo.system.ApprovalVO;
/**
 * <p>
@@ -13,4 +16,6 @@
 */
public interface OaApprovalService extends IService<OaApproval> {
    PageInfo<ApprovalVO> pageList(ApprovalListQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalFlowNodeServiceImpl.java
@@ -1,10 +1,23 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.system.mapper.OaApprovalFlowNodeMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import com.ruoyi.system.vo.system.ApprovalVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +30,22 @@
@Service
public class OaApprovalFlowNodeServiceImpl extends ServiceImpl<OaApprovalFlowNodeMapper, OaApprovalFlowNode> implements OaApprovalFlowNodeService {
    @Autowired
    private SysUserMapper sysUserMapper;
    @Override
    public List<OaApprovalFlowNode> pageList(ApprovalListQuery query) {
        List<SysUser> sysUsers = sysUserMapper.selectList();
        Map<Long, String> deptMaps = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
        List<OaApprovalFlowNode> oaApprovalFlowNodes = this.baseMapper.selectList(new LambdaQueryWrapper<OaApprovalFlowNode>()
                .eq(OaApprovalFlowNode::getApprovalId, query.getId()));
        for (OaApprovalFlowNode approvalVO : oaApprovalFlowNodes) {
            StringBuilder approvalName = new StringBuilder();
            for (String approvalId : approvalVO.getApprovalIds().split(",")) {
                String orDefault = deptMaps.getOrDefault(Long.valueOf(approvalId), "");
                approvalName.append(orDefault).append(",");
            }
            approvalVO.setApprovalName(approvalName.substring(0,approvalName.length()-1));
        }
        return oaApprovalFlowNodes;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalServiceImpl.java
@@ -1,10 +1,23 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.constant.DictConstants;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.system.mapper.OaApprovalMapper;
import com.ruoyi.system.mapper.TDeptMapper;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.service.OaApprovalService;
import com.ruoyi.system.vo.system.ApprovalVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +30,23 @@
@Service
public class OaApprovalServiceImpl extends ServiceImpl<OaApprovalMapper, OaApproval> implements OaApprovalService {
    @Autowired
    private TDeptMapper deptMapper;
    @Override
    public PageInfo<ApprovalVO> pageList(ApprovalListQuery query) {
        List<TDept> tDepts = deptMapper.selectList(null);
        Map<Integer, String> deptMaps = tDepts.stream().collect(Collectors.toMap(TDept::getId, TDept::getDeptName));
        PageInfo<ApprovalVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<ApprovalVO> list = this.baseMapper.pageList(query,pageInfo);
        for (ApprovalVO approvalVO : list) {
            StringBuilder deptName = new StringBuilder();
            for (String deptId : approvalVO.getDeptIds().split(",")) {
                String orDefault = deptMaps.getOrDefault(Integer.parseInt(deptId), "");
                deptName.append(orDefault).append(",");
            }
            approvalVO.setDeptName(deptName.substring(0,deptName.length()-1));
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/ApprovalFlowNodeVO.java
New file
@@ -0,0 +1,15 @@
package com.ruoyi.system.vo.system;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.model.OaApprovalFlowNode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "审批流程分页返回VO")
public class ApprovalFlowNodeVO extends OaApprovalFlowNode {
    @ApiModelProperty(value = "审批人名称")
    private String approvalName;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/ApprovalVO.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.system.vo.system;
import com.ruoyi.system.model.OaApproval;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@ApiModel(value = "审批流程设计分页返回VO")
public class ApprovalVO extends OaApproval {
    @ApiModelProperty(value = "使用部门名称")
    private String deptName;
}
ruoyi-system/src/main/resources/mapper/system/OaApprovalMapper.xml
@@ -20,5 +20,15 @@
    <sql id="Base_Column_List">
        id, approval_name, approval_category, status, dept_ids, create_time, create_by, update_time, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.vo.system.ApprovalVO">
select * from oa_approval
where 1=1
<if test="query.approvalName != null and query.approvalName != ''">
and approval_name like concat('%',#{query.approvalName},'%')
</if>
        AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        ORDER BY update_time DESC
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -234,7 +234,7 @@
    <select id="pageList" resultType="com.ruoyi.system.vo.system.SysUserVO">
        select u.*,
               r.role_id AS roleId, r.role_name AS roleName, r.role_key AS roleKey, r.role_sort AS roleSort, r.data_scope AS dataScope, r.status as role_status
        ,t1.dept_name as deptName
        from sys_user u
        left join sys_user_role ur on u.user_id = ur.user_id
        left join sys_role r on r.role_id = ur.role_id