From 391d3fed7809454f742d71dddc55ed7ca1bc089e Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 19 六月 2025 14:19:08 +0800
Subject: [PATCH] 保洁巡检本周代码

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java |  305 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 295 insertions(+), 10 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
index 68d0346..f36c4c0 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -1,22 +1,24 @@
 package com.ruoyi.web.controller.api;
 
 
+import cn.hutool.core.util.RandomUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.Log;
 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.DateUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.framework.web.service.TokenService;
 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;
@@ -35,9 +37,14 @@
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -74,9 +81,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
@@ -88,7 +99,64 @@
     @Resource
     private TProblemEscalationService problemEscalationService;
 
+    @ApiOperation(value = "个人中心-首页")
+    @PostMapping(value = "/userIndex")
+    public R<UserIndexVO> userIndex() {
+        UserIndexVO userIndexVO = new UserIndexVO();
 
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        SysUser sysUser = sysUserService.selectUserById(userId);
+        userIndexVO.setAvatar(sysUser.getAvatar());
+        userIndexVO.setNickName(sysUser.getNickName());
+        userIndexVO.setPhonenumber(sysUser.getPhonenumber());
+        if (sysUser.getDeptType() == 1){
+            TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
+            if (!tProjectDept.getParentId().equals("0")){
+                TProjectDept tProjectDept1 = projectDeptService.getById(tProjectDept.getParentId());
+                userIndexVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
+            }else{
+                userIndexVO.setDeptName(tProjectDept.getProjectName());
+            }
+        }else{
+            TDept tDept = deptService.getById(sysUser.getDeptId());
+            userIndexVO.setDeptName(tDept.getDeptName());
+        }
+        // 查询请假状态
+        List<TLeave> list = leaveService.lambdaQuery().eq(TLeave::getLeavePerson, userId)
+                .eq(TLeave::getAuditStatus, 2)
+                .list();
+        userIndexVO.setIsLeave(0);
+        for (TLeave tLeave : list) {
+            LocalDate now = LocalDate.now();
+            LocalDate startDate = tLeave.getStartTime().toLocalDate();
+            LocalDate endDate = tLeave.getStartTime().toLocalDate();
+            if (now.isAfter(startDate) && now.isBefore(endDate)) {
+                userIndexVO.setIsLeave(1);
+            }else if (now.isEqual(startDate)|| now.isEqual(endDate)){
+                userIndexVO.setIsLeave(1);
+            }
+        }
+        // 获取本月第一天凌晨00:00:00 和本月最后一天23:59:59 类型为LocalDateTime
+        // 获取当前日期
+        LocalDate now = LocalDate.now();
+        // 本月第一天
+        LocalDate firstDayOfMonth = now.withDayOfMonth(1);
+        // 本月最后一天
+        LocalDate lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth());
+        // 转换为 LocalDateTime:第一天的 00:00:00
+        LocalDateTime startOfMonth = LocalDateTime.of(firstDayOfMonth, LocalTime.MIN);
+        // 转换为 LocalDateTime:最后一天的 23:59:59
+        LocalDateTime endOfMonth = LocalDateTime.of(lastDayOfMonth, LocalTime.MAX);
+        List<TTask> finishTask = taskCleanerService.lambdaQuery().eq(TTask::getPatrolInspector, userId)
+                .ge(TTask::getImplementTime, startOfMonth)
+                .le(TTask::getImplementTime, endOfMonth).list();
+        int size = (int) finishTask.stream().filter(e -> e.getStatus() == 5 || e.getStatus() == 6).count();
+        userIndexVO.setFinishCount(size);
+        BigDecimal divide = new BigDecimal(size).divide(new BigDecimal(finishTask.size()), 2, BigDecimal.ROUND_DOWN);
+        userIndexVO.setRate(divide);
+//        userIndexVO.setRanking();
+        return R.ok(userIndexVO);
+    }
     @ApiOperation(value = "任务记录分页列表")
     @PostMapping(value = "/taskList")
     public R<PageInfo<TaskUserListVO>> pageList(@RequestBody TaskUserListQuery query) {
@@ -231,13 +299,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 +322,228 @@
         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);
+        Date date = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+        // 生成随机数字6位
+        String format = simpleDateFormat.format(date);
+        leaveDTO.setCode(format+ RandomUtil.randomNumbers(6));
+        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 = "我的审批-审批")
+    @PostMapping(value = "/auditLeave")
+    public R<Boolean> auditLeave(@RequestBody LeaveAuditDTO dto) {
+        dto.setAuditId(tokenService.getLoginUser().getUserId()+"");
+        dto.setAuditTime(LocalDateTime.now());
+        leaveService.updateById(dto);
+        return R.ok();
+    }
+    @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(leaveUserDetailVO);
+    }
 }
 

--
Gitblit v1.7.1