xuhy
2025-06-26 675cc175d5ca39be8250fdb3929a06754b134cf9
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -1,6 +1,7 @@
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;
@@ -9,6 +10,7 @@
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.*;
@@ -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;
@@ -92,7 +99,79 @@
    @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();
        List<String> taskIds = finishTask.stream().map(TTask::getId).collect(Collectors.toList());
        List<TTaskDetail> taskDetails = taskDetailService.lambdaQuery()
                .eq(TTaskDetail::getAuditStatus,1).in(TTaskDetail::getTaskId, taskIds)
                .isNotNull(TTaskDetail::getClearStatus)
                .groupBy(TTaskDetail::getTaskId)
                .orderByDesc(TTaskDetail::getCreateTime).list();
        int size = (int) finishTask.stream().filter(e -> e.getStatus() == 5 || e.getStatus() == 6).count();
        userIndexVO.setFinishCount(size);
        List<TTaskDetail> status1 = taskDetails.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList());
        List<TTaskDetail> status2 = taskDetails.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList());
        if (status1.size()+status2.size()!=0){
            BigDecimal divide = new BigDecimal(status1.size()+status2.size())
                    .divide(new BigDecimal(status1.size()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));
            userIndexVO.setRate(divide);
        }else{
            userIndexVO.setRate(new BigDecimal(0));
        }
        // todo 月排名
        userIndexVO.setRanking(0);
        return R.ok(userIndexVO);
    }
    @ApiOperation(value = "任务记录分页列表")
    @PostMapping(value = "/taskList")
    public R<PageInfo<TaskUserListVO>> pageList(@RequestBody TaskUserListQuery query) {
@@ -203,7 +282,7 @@
    @ApiOperation(value = "上传督察任务")
    @PostMapping(value = "/addInspector")
    public R<Boolean> addInspector(@RequestBody InspectorAddDTO dto) {
        dto.setCommit_person(tokenService.getLoginUser().getUserId()+"");
        dto.setCommitPerson(tokenService.getLoginUser().getUserId()+"");
        if (dto.getClearStatus()==1){
            dto.setStatus(4);
        }else{
@@ -329,6 +408,11 @@
        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("部门负责人")){
@@ -387,6 +471,14 @@
    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")
@@ -466,7 +558,7 @@
        leaveUserDetailVO.setAuditTime(leave.getAuditTime());
        leaveUserDetailVO.setAuditRemark(leave.getAuditRemark());
        leaveUserDetailVO.setCode(leave.getCode());
        return R.ok( );
        return R.ok(leaveUserDetailVO);
    }
}