maven
10 小时以前 34e986e6e158450ee35319f1cac872a4bc974a74
src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -19,6 +19,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.other.service.impl.TempFileServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysNotice;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -65,7 +66,7 @@
    private final ISysNoticeService sysNoticeService;
    @Override
    public void addApprove(ApproveProcessVO approveProcessVO) throws  Exception {
    public void addApprove(ApproveProcessVO approveProcessVO) throws Exception {
        SysUser sysUser = sysUserMapper.selectUserById(approveProcessVO.getApproveUser());
        SysDept sysDept = sysDeptMapper.selectDeptById(approveProcessVO.getApproveDeptId());
        String[] split = approveProcessVO.getApproveUserIds().split(",");
@@ -73,9 +74,9 @@
                .map(Long::valueOf)  // 将每个 String 转换为 Long
                .collect(Collectors.toList());
        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(longList);
        if(CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("审核用户不存在");
        if(sysDept == null) throw new RuntimeException("部门不存在");
        if(sysUser == null) throw new RuntimeException("申请人不存在");
        if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("审核用户不存在");
        if (sysDept == null) throw new RuntimeException("部门不存在");
        if (sysUser == null) throw new RuntimeException("申请人不存在");
        String today = LocalDate.now().format(DATE_FORMAT);
        Long approveId = dailyRedisCounter.incrementAndGetByDb();
        String formattedCount = String.format("%03d", approveId);
@@ -94,7 +95,8 @@
        approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId());
        approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice());
        approveProcess.setPrice(approveProcessVO.getPrice());
        approveProcess.setApproveOverTime(null);
        approveProcess.setStartDate(approveProcessVO.getStartDate());
        approveProcess.setEndDate(approveProcessVO.getEndDate());
        approveProcess.setApproveStatus(0);
        approveProcess.setApproveDelete(0);
        approveProcess.setApproveType(approveProcessVO.getApproveType());
@@ -109,28 +111,28 @@
                .get(0)
                .getNickName());
        // 设置状态为重新提交
        if(approveProcessVO.getId() != null){
        if (approveProcessVO.getId() != null) {
            ApproveProcess approveProcess1 = approveProcessMapper.selectById(approveProcessVO.getId());
            approveProcess1.setApproveStatus(4);
            approveProcessMapper.updateById(approveProcess1);
        }
        save(approveProcess);
        //初始化审批节点
        approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(),approveID,approveProcessVO.getApproveDeptId());
        approveNodeService.initApproveNodes(approveProcessVO.getApproveUserIds(), approveID, approveProcessVO.getApproveDeptId());
        // 附件绑定
        tempFileService.migrateTempFilesToFormal(approveProcess.getId(), approveProcessVO.getTempFileIds(), FileNameType.ApproveProcess.getValue());
        /*消息通知*/
        String id = approveProcessVO.getApproveUserIds().split(",")[0];
        sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcessVO.getApproveType()),
                approveID+"流程编号的审批需要您审核!!!!!",
                approveID + "流程编号的审批需要您审核!!!!!",
                Arrays.asList(Long.valueOf(id)),
                approveProcessVO.getApproveDeptId(),
                "/collaborativeApproval/approvalProcess?approveType="+approveProcessVO.getApproveType()+"&approveId="+approveID);
                "/collaborativeApproval/approvalProcess?approveType=" + approveProcessVO.getApproveType() + "&approveId=" + approveID);
    }
    @Override
    public List<SysDept> selectDeptListByDeptIds(Long[] deptIds) {
        List<SysDept> sysDeptList =new ArrayList<SysDept>();
        List<SysDept> sysDeptList = new ArrayList<SysDept>();
        for (Long deptId : deptIds) {
            SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
            sysDeptList.add(sysDept);
@@ -139,8 +141,8 @@
    }
    @Override
    public IPage<ApproveProcess> listAll(Page page,ApproveProcess approveProcess) {
        IPage<ApproveProcess> approveProcessIPage = approveProcessMapper.listPage(page,approveProcess);
    public IPage<ApproveProcess> listAll(Page page, ApproveProcess approveProcess) {
        IPage<ApproveProcess> approveProcessIPage = approveProcessMapper.listPage(page, approveProcess);
        List<ApproveProcess> records = approveProcessIPage.getRecords();
        for (ApproveProcess record : records) {
            List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
@@ -153,15 +155,35 @@
    @Override
    public void delApprove(Long[] ids) {
        for (Long id : ids) {
            UpdateWrapper<ApproveProcess> queryWrapper = new UpdateWrapper<>();
            queryWrapper.lambda().set(ApproveProcess::getApproveDelete, 1)
                    .eq(ApproveProcess::getApproveId, id);
            update(queryWrapper);
            // 删除关联的审批节点
            approveNodeService.delApproveNodeByApproveId(id);
        }
        ApproveProcess approveProcess;
        for (Long approveId : ids) {
            //  逻辑删除审批流程
            update(new UpdateWrapper<ApproveProcess>()
                    .lambda()
                    .set(ApproveProcess::getApproveDelete, 1)
                    .eq(ApproveProcess::getApproveId, approveId));
            //  删除审批节点
            approveNodeService.delApproveNodeByApproveId(approveId);
            //  只查最新一条审批流程
            ApproveProcess latestProcess = approveProcessMapper.selectOne(
                    new LambdaQueryWrapper<ApproveProcess>()
                            .eq(ApproveProcess::getApproveId, approveId)
                            .orderByDesc(ApproveProcess::getCreateTime)
                            .last("LIMIT 1"));
            if (latestProcess == null) {
                continue;
            }
            //  删除对应的消息通知
            sysNoticeService.remove(new LambdaQueryWrapper<SysNotice>()
                            .eq(SysNotice::getNoticeTitle, approveProcessType(latestProcess.getApproveType()))
                            .eq(SysNotice::getSenderId, latestProcess.getApproveUser())
                            .apply("CAST(notice_content AS CHAR) LIKE CONCAT('%', {0}, '%')", latestProcess.getApproveId()));
        }
    }
@@ -182,25 +204,25 @@
    private final ApproveNodeMapper approveNodeMapper;
    // 报价审批编辑审核人
    public void updateApproveUser(ApproveGetAndUpdateVo approveGetAndUpdateVo){
    public void updateApproveUser(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
        LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
        approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveType, approveGetAndUpdateVo.getApproveType())
                .eq(ApproveProcess::getApproveReason, approveGetAndUpdateVo.getApproveReason())
                .last("limit 1");
        ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
        if(approveProcess == null) throw new RuntimeException("请选择审批人");
        if (approveProcess == null) throw new RuntimeException("请选择审批人");
        String[] split = approveGetAndUpdateVo.getApproveUserIds().split(",");
        if(split.length == 0){
        if (split.length == 0) {
            throw new RuntimeException("请选择审批人");
        }
        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(Arrays.asList(split).stream().map(Long::parseLong).collect(Collectors.toList()));
        if(CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("请选择审批人");
        if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("请选择审批人");
        //审核中不可以编辑审核人
        if(approveProcess.getApproveStatus() != 1){
        if (approveProcess.getApproveStatus() != 1) {
            approveProcess.setApproveUserCurrentId(Long.parseLong(split[0]));
            approveProcess.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[0]))).collect(Collectors.toList()).get(0).getNickName());
        }
        if(approveGetAndUpdateVo.getApproveStatus() != null){
        if (approveGetAndUpdateVo.getApproveStatus() != null) {
            approveProcess.setApproveStatus(approveGetAndUpdateVo.getApproveStatus());
        }
        approveProcess.setApproveUserIds(approveGetAndUpdateVo.getApproveUserIds());
@@ -213,14 +235,14 @@
                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
                .orderByAsc(ApproveNode::getApproveNodeOrder);
        approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
        approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(),approveProcess.getApproveId(),approveProcess.getTenantId());
        approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approveProcess.getApproveId(), approveProcess.getTenantId());
        /*消息通知*/
        String id = approveProcess.getApproveUserIds().split(",")[0];
        sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
                approveProcess.getApproveId()+"流程编号的审批需要您审核!!!!!",
                approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!",
                Arrays.asList(Long.valueOf(id)),
                approveProcess.getApproveDeptId(),
                "/collaborativeApproval/approvalProcess?approveType="+approveProcess.getApproveType()+"&approveId="+approveProcess.getApproveId());
                "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
    }
@@ -232,16 +254,16 @@
        approve.setApproveReason(approveGetAndUpdateVo.getApproveReason());
        SysUser sysUser = sysUserMapper.selectUserById(approveGetAndUpdateVo.getApproveUser());
        String[] split = approveGetAndUpdateVo.getApproveUserIds().split(",");
        if(split.length == 0){
        if (split.length == 0) {
            throw new RuntimeException("请选择审批人");
        }
        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(Arrays.asList(split).stream().map(Long::parseLong).collect(Collectors.toList()));
        if(CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("请选择审批人");
        if(sysUser == null) throw new RuntimeException("申请人不存在");
        if (CollectionUtils.isEmpty(sysUsers)) throw new RuntimeException("请选择审批人");
        if (sysUser == null) throw new RuntimeException("申请人不存在");
        approve.setApproveUserName(sysUser.getNickName());
        approve.setApproveUser(sysUser.getUserId());
        //审核中不可以编辑审核人
        if(approve.getApproveStatus() != 1){
        if (approve.getApproveStatus() != 1) {
            approve.setApproveUserCurrentId(Long.parseLong(split[0]));
            approve.setApproveUserCurrentName(sysUsers.stream().filter(user -> user.getUserId().equals(Long.parseLong(split[0]))).collect(Collectors.toList()).get(0).getNickName());
        }
@@ -254,7 +276,7 @@
                .eq(ApproveNode::getTenantId, SecurityUtils.getLoginUser().getTenantId())
                .orderByAsc(ApproveNode::getApproveNodeOrder);
        approveNodeMapper.delete(approveNodeLambdaQueryWrapper);
        approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(),approve.getApproveId(),approve.getTenantId());
        approveNodeService.initApproveNodes(approveGetAndUpdateVo.getApproveUserIds(), approve.getApproveId(), approve.getTenantId());
//        int i = 0;
//        for (ApproveNode approveNode : list) {
@@ -276,17 +298,17 @@
        /*消息通知*/
        String id = approve.getApproveUserIds().split(",")[0];
        sysNoticeService.simpleNoticeByUser(approveProcessType(approve.getApproveType()),
                approve.getApproveId()+"流程编号的审批需要您审核!!!!!",
                approve.getApproveId() + "流程编号的审批需要您审核!!!!!",
                Arrays.asList(Long.valueOf(id)),
                approve.getApproveDeptId(),
                "/collaborativeApproval/approvalProcess?approveType="+approve.getApproveType()+"&approveId="+approve.getApproveId());
                "/collaborativeApproval/approvalProcess?approveType=" + approve.getApproveType() + "&approveId=" + approve.getApproveId());
    }
    //审批类型获取(与前端页面对应)
    private String approveProcessType(Integer approveType){
        switch (approveType){
    private String approveProcessType(Integer approveType) {
        switch (approveType) {
            case 1:
                return "公出管理";
            case 2:
@@ -304,7 +326,6 @@
        }
        return null;
    }
}