无关风月
2025-06-17 6e7850f30ac3844ba9929dc46e1b13b21cdcc010
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -6,6 +6,7 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.bean.BeanUtils;
@@ -13,10 +14,9 @@
import com.ruoyi.system.applet.dto.*;
import com.ruoyi.system.applet.query.AppealListQuery;
import com.ruoyi.system.applet.query.KnowledgeListUserQuery;
import com.ruoyi.system.applet.query.LeaveListUserQuery;
import com.ruoyi.system.applet.query.TaskUserListQuery;
import com.ruoyi.system.applet.vo.KnowledgeVO;
import com.ruoyi.system.applet.vo.TaskListAllVO;
import com.ruoyi.system.applet.vo.TaskUserListVO;
import com.ruoyi.system.applet.vo.*;
import com.ruoyi.system.dto.KnowledgeDTO;
import com.ruoyi.system.dto.TTaskAuditBatchDTO;
import com.ruoyi.system.dto.TTaskAuditDTO;
@@ -74,9 +74,13 @@
    @Resource
    private ISysUserService sysUserService;
    @Resource
    private ISysRoleService roleService;
    @Resource
    private TDictDataService dictDataService;
    @Resource
    private TLeaveService leaveService;
    @Resource
    private TLeaveAuditService leaveAuditService;
    @Resource
    private TokenService tokenService;
    @Resource
@@ -231,13 +235,7 @@
        );
        return R.ok(list);
    }
    @ApiOperation(value = "发起请假")
    @PostMapping(value = "/addLeave")
    public R<Boolean> addLeave(@RequestBody LeaveDTO leaveDTO) {
        leaveService.save(leaveDTO);
        // todo 生成审批记录
        return R.ok();
    }
    @Resource
    private TKnowledgeService knowledgeService;
@@ -260,5 +258,215 @@
        knowledgeService.updateById(byId);
        return R.ok(byId);
    }
    @ApiOperation(value = "发起请假-获取审批流程")
    @GetMapping(value = "/leaveAuditList")
    public R<LeaveAuditListVO> leaveAuditList() {
        LeaveAuditListVO res = new LeaveAuditListVO();
        Long userId = tokenService.getLoginUser().getUserId();
        SysUser user = sysUserService.selectUserById(userId);
        Long userRole = sysUserService.getUserRole(userId);
        SysRole sysRole = roleService.selectRoleById(userRole);
        List<SysUser> sysUsers = sysUserService.selectAllList();
        SysUser auditPerson = sysUserService.selectUserById(999L);
        //项目负责人、部门负责人、公司成员提交由最终审批人审批;
        if (user.getDeptType()==2 ||sysRole.getRoleName().contains("项目负责人")||sysRole.getRoleName().contains("部门负责人")){
            LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
            tLeaveAudit.setAvatar(auditPerson.getAvatar());
            tLeaveAudit.setNickName(auditPerson.getNickName());
            res.setAuditPerson(tLeaveAudit);
        }else if (!sysRole.getRoleName().equals("部门助理")){
            // 审批人根据当前角色类型来
            if (sysRole.getRoleName().contains("现场负责人")||sysRole.getRoleName().contains("组长")){
                List<SysUser> collect = sysUsers.stream().filter(e -> e.getDeptType() == 1 &&
                        e.getDeptId().equals(user.getDeptId())).collect(Collectors.toList());
                for (SysUser sysUser : collect) {
                    Long userRole1 = sysUserService.getUserRole(sysUser.getUserId());
                    SysRole sysRole1 = roleService.selectRoleById(userRole1);
                    if (sysRole1!=null&&sysRole1.getRoleName().equals("项目负责人")){
                        LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
                        tLeaveAudit.setAvatar(sysUser.getAvatar());
                        tLeaveAudit.setNickName(sysUser.getNickName());
                        res.setAuditPerson(tLeaveAudit);
                    }
                }
            }
        }else{
            List<SysUser> collect = sysUsers.stream().filter(e -> e.getDeptType() == 1 &&
                    e.getDeptId().equals(user.getDeptId())).collect(Collectors.toList());
            for (SysUser sysUser : collect) {
                Long userRole1 = sysUserService.getUserRole(sysUser.getUserId());
                SysRole sysRole1 = roleService.selectRoleById(userRole1);
                if (sysRole1!=null&&sysRole1.getRoleName().equals("部门负责人")){
                    LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
                    tLeaveAudit.setAvatar(sysUser.getAvatar());
                    tLeaveAudit.setNickName(sysUser.getNickName());
                    res.setAuditPerson(tLeaveAudit);
                }
            }
        }
        List<LeaveAuditVO> leaveAuditVOS = new ArrayList<>();
        // 当前登陆人-抄送人
        LeaveAuditVO leaveAuditVO1 = new LeaveAuditVO();
        leaveAuditVO1.setAvatar(user.getAvatar());
        leaveAuditVO1.setNickName(user.getNickName());
        // 最终审核人-抄送人
        LeaveAuditVO leaveAuditVO = new LeaveAuditVO();
        leaveAuditVO.setAvatar(auditPerson.getAvatar());
        leaveAuditVO.setNickName(auditPerson.getNickName());
        leaveAuditVOS.add(leaveAuditVO);
        leaveAuditVOS.add(leaveAuditVO1);
        res.setCopyPerson(leaveAuditVOS);
        return R.ok(res);
    }
    @ApiOperation(value = "发起请假")
    @PostMapping(value = "/addLeave")
    public R addLeave(@RequestBody LeaveDTO leaveDTO) {
        Long userId = tokenService.getLoginUser().getUserId();
        SysUser user = sysUserService.selectUserById(userId);
        Long userRole = sysUserService.getUserRole(userId);
        SysRole sysRole = roleService.selectRoleById(userRole);
        List<SysUser> sysUsers = sysUserService.selectAllList();
        SysUser auditPerson = sysUserService.selectUserById(999L);
        leaveDTO.setAuditStatus(1);
        leaveService.save(leaveDTO);
        //项目负责人、部门负责人、公司成员提交由最终审批人审批;
        if (user.getDeptType()==2 ||sysRole.getRoleName().contains("项目负责人")||sysRole.getRoleName().contains("部门负责人")){
            TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
            tLeaveAudit1.setLeaveId(leaveDTO.getId());
            tLeaveAudit1.setAuditStatus(1);
            tLeaveAudit1.setAuditId(auditPerson.getUserId()+"");
            tLeaveAudit1.setAuditType(1);
            leaveAuditService.save(tLeaveAudit1);
        }else if (!sysRole.getRoleName().equals("部门助理")){
            // 审批人根据当前角色类型来
            if (sysRole.getRoleName().contains("现场负责人")||sysRole.getRoleName().contains("组长")){
                List<SysUser> collect = sysUsers.stream().filter(e -> e.getDeptType() == 1 &&
                        e.getDeptId().equals(user.getDeptId())).collect(Collectors.toList());
                for (SysUser sysUser : collect) {
                    Long userRole1 = sysUserService.getUserRole(sysUser.getUserId());
                    SysRole sysRole1 = roleService.selectRoleById(userRole1);
                    if (sysRole1!=null&&sysRole1.getRoleName().equals("项目负责人")){
                        TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
                        tLeaveAudit1.setLeaveId(leaveDTO.getId());
                        tLeaveAudit1.setAuditStatus(1);
                        tLeaveAudit1.setAuditId(sysUser.getUserId()+"");
                        tLeaveAudit1.setAuditType(1);
                        leaveAuditService.save(tLeaveAudit1);
                    }
                }
            }
        }else{
            List<SysUser> collect = sysUsers.stream().filter(e -> e.getDeptType() == 1 &&
                    e.getDeptId().equals(user.getDeptId())).collect(Collectors.toList());
            for (SysUser sysUser : collect) {
                Long userRole1 = sysUserService.getUserRole(sysUser.getUserId());
                SysRole sysRole1 = roleService.selectRoleById(userRole1);
                if (sysRole1!=null&&sysRole1.getRoleName().equals("部门负责人")){
                    TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
                    tLeaveAudit1.setLeaveId(leaveDTO.getId());
                    tLeaveAudit1.setAuditStatus(1);
                    tLeaveAudit1.setAuditId(sysUser.getUserId()+"");
                    tLeaveAudit1.setAuditType(1);
                    leaveAuditService.save(tLeaveAudit1);
                }
            }
        }
        TLeaveAudit tLeaveAudit2 = new TLeaveAudit();
        tLeaveAudit2.setLeaveId(leaveDTO.getId());
        tLeaveAudit2.setAuditStatus(2);
        tLeaveAudit2.setAuditId(user.getUserId()+","+auditPerson.getUserId());
        tLeaveAudit2.setAuditType(2);
        tLeaveAudit2.setAuditTime(LocalDateTime.now());
        leaveAuditService.save(tLeaveAudit2);
        return R.ok();
    }
    @ApiOperation(value = "我的审批-我的申请")
    @PostMapping(value = "/leaveList")
    public R<PageInfo<LeaveUserListVO>> leaveList(@RequestBody LeaveListUserQuery query) {
        query.setUserId(tokenService.getLoginUser().getUserId()+"");
        return R.ok( leaveService.leaveList(query));
    }
    @ApiOperation(value = "我的审批-详情")
    @GetMapping(value = "/leaveDetail")
    public R<LeaveUserDetailVO> leaveDetail(@RequestParam String id) {
        LeaveUserDetailVO leaveUserDetailVO = new LeaveUserDetailVO();
        SysUser sysUser = sysUserService.selectUserById(Long.parseLong(leaveUserDetailVO.getLeavePerson()));
        Long userRole = sysUserService.getUserRole(sysUser.getUserId());
        SysRole sysRole = roleService.selectRoleById(userRole);
        if (sysRole.getRoleName().contains("现场负责人")||sysRole.getRoleName().equals("组长")){
            if (sysUser.getDeptType() == 1){
                TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
                if (!tProjectDept.getParentId().equals("0")){
                    TProjectDept tProjectDept1 = projectDeptService.getById(tProjectDept.getParentId());
                    leaveUserDetailVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
                }else{
                    leaveUserDetailVO.setDeptName(tProjectDept.getProjectName());
                }
            }else{
                TDept tDept = deptService.getById(sysUser.getDeptId());
                leaveUserDetailVO.setDeptName(tDept.getDeptName());
            }
        }else if (sysRole.getRoleName().contains("项目负责人")){
            TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
            leaveUserDetailVO.setDeptName(tProjectDept.getProjectName());
        }
        if (sysUser.getDeptType() == 2){
            TDept byId = deptService.getById(sysUser.getDeptId());
            leaveUserDetailVO.setDeptName(byId.getDeptName());
        }
        TLeave leave = leaveService.getById(id);
        leaveUserDetailVO.setLeavePersonName(sysUser.getNickName());
        LeaveAuditListVO leaveAuditListVO = new LeaveAuditListVO();
        List<TLeaveAudit> list = leaveAuditService.list(new LambdaQueryWrapper<TLeaveAudit>()
                .eq(TLeaveAudit::getAuditId, leave.getId()));
        for (TLeaveAudit tLeaveAudit : list) {
            if (tLeaveAudit.getAuditType()==1){
                LeaveAuditVO leaveAuditVO = new LeaveAuditVO();
                SysUser sysUser1 = sysUserService.selectUserById(Long.valueOf(tLeaveAudit.getAuditId()));
                if (sysUser1!=null){
                    leaveAuditVO.setAvatar(sysUser1.getAvatar());
                    leaveAuditVO.setNickName(sysUser1.getNickName());
                }
                leaveAuditVO.setCreateTime(tLeaveAudit.getAuditTime());
                leaveAuditVO.setAuditStatus(tLeaveAudit.getAuditStatus());
                leaveAuditListVO.setAuditPerson(leaveAuditVO);
            }else{
                List<LeaveAuditVO> leaveAuditVOS = new ArrayList<>();
                // 抄送人
                LeaveAuditVO leaveAuditVO = new LeaveAuditVO();
                SysUser sysUser1 = sysUserService.selectUserById(Long.valueOf(tLeaveAudit.getAuditId().split(",")[0]));
                leaveAuditVO.setAvatar(sysUser1.getAvatar());
                leaveAuditVO.setNickName(sysUser1.getNickName());
                leaveAuditVO.setCreateTime(tLeaveAudit.getCreateTime());
                leaveAuditVO.setAuditStatus(tLeaveAudit.getAuditStatus());
                leaveAuditVOS.add(leaveAuditVO);
                LeaveAuditVO leaveAuditVO1 = new LeaveAuditVO();
                SysUser sysUser2 = sysUserService.selectUserById(Long.valueOf(tLeaveAudit.getAuditId().split(",")[1]));
                leaveAuditVO1.setAvatar(sysUser2.getAvatar());
                leaveAuditVO1.setNickName(sysUser2.getNickName());
                leaveAuditVO1.setCreateTime(tLeaveAudit.getCreateTime());
                leaveAuditVO1.setAuditStatus(tLeaveAudit.getAuditStatus());
                leaveAuditVOS.add(leaveAuditVO1);
                leaveAuditListVO.setCopyPerson(leaveAuditVOS);
            }
        }
        leaveUserDetailVO.setAudit(leaveAuditListVO);
        leaveUserDetailVO.setId(leave.getId());
        leaveUserDetailVO.setLeavePerson(leave.getLeavePerson());
        leaveUserDetailVO.setStartTime(leave.getStartTime());
        leaveUserDetailVO.setEndTime(leave.getEndTime());
        leaveUserDetailVO.setLeaveType(leave.getLeaveType());
        leaveUserDetailVO.setLeaveDay(leave.getLeaveDay());
        leaveUserDetailVO.setLeaveCause(leave.getLeaveCause());
        leaveUserDetailVO.setPictures(leave.getPictures());
        leaveUserDetailVO.setAuditStatus(leave.getAuditStatus());
        leaveUserDetailVO.setAuditId(leave.getAuditId());
        leaveUserDetailVO.setAuditTime(leave.getAuditTime());
        leaveUserDetailVO.setAuditRemark(leave.getAuditRemark());
        leaveUserDetailVO.setCode(leave.getCode());
        return R.ok( );
    }
}