xuhy
2025-06-20 ebf94cb3ed4f487ca1fcd7069db0ca141553a4db
Merge remote-tracking branch 'origin/master'
7个文件已添加
31个文件已修改
673 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDeptController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TKnowledgeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProblemEscalationController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectDeptController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSystemBulletinController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTemplateController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/util/AmapApiClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/util/MainApp.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/LeaveAuditDTO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/query/LeaveListUserQuery.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveAuditListVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveAuditVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveUserDetailVO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveUserListVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TLeaveMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TCleaner.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TDictData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TKnowledge.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TLeave.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TLeaveAudit.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TProblemEscalation.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TLeaveService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLeaveServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/ProblemEscalationDetailVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/RoleInfoVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TCleanerMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TDeptMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TLeaveMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TProblemEscalationMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TProjectDeptMapper.xml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDeptController.java
@@ -21,6 +21,7 @@
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
 * <p>
@@ -42,6 +43,12 @@
    @PostMapping(value = "/pageList")
    public R<PageInfo<DeptListVO>> pageList(@RequestBody DeptListQuery query) {
        return R.ok(deptService.pageList(query));
    }
    @ApiOperation(value = "部门不分页列表")
    @PostMapping(value = "/listAll")
    public R<List<TDept>> listAll() {
        List<TDept> depts = deptService.list();
        return R.ok(depts);
    }
    @Log(title = "新增部门", businessType = BusinessType.INSERT)
    @ApiOperation(value = "新增部门")
@@ -73,7 +80,7 @@
    }
    @Log(title = "启用/禁用部门", businessType = BusinessType.OTHER)
    @ApiOperation(value = "启用/禁用部门")
    @DeleteMapping(value = "/editStatus")
    @GetMapping(value = "/editStatus")
    public R<Boolean> editStatus(@RequestParam String id) {
        TDept byId = deptService.getById(id);
        if (byId.getStatus()==1){
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TKnowledgeController.java
@@ -73,7 +73,7 @@
    }
    @Log(title = "启用/禁用环卫知识", businessType = BusinessType.OTHER)
    @ApiOperation(value = "启用/禁用环卫知识")
    @DeleteMapping(value = "/editStatus")
    @GetMapping(value = "/editStatus")
    public R<Boolean> editStatus(@RequestParam String id) {
        TKnowledge byId = knowledgeService.getById(id);
        if (byId.getStatus()==1){
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProblemEscalationController.java
@@ -4,6 +4,7 @@
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.model.LoginUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.bean.BeanUtils;
@@ -14,6 +15,7 @@
import com.ruoyi.system.model.TSystemBulletin;
import com.ruoyi.system.query.FeedbackQuery;
import com.ruoyi.system.query.ProblemEscalationQuery;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TDictDataService;
import com.ruoyi.system.service.TProblemEscalationService;
import com.ruoyi.system.vo.system.FeedbackListVO;
@@ -59,6 +61,9 @@
        problemEscalationService.updateById(dto);
        return R.ok();
    }
    @Resource
    private ISysUserService sysUserService;
    @ApiOperation(value = "详情")
    @GetMapping(value = "/detail")
    public R<ProblemEscalationDetailVO> detail(@RequestParam String id) {
@@ -66,6 +71,10 @@
        TProblemEscalation byId = problemEscalationService.getById(id);
        BeanUtils.copyProperties(byId,problemEscalationDetailVO);
        TDictData byId1 = dictDataService.getById(byId.getEscalationType());
        SysUser sysUser = sysUserService.selectUserById(Long.valueOf(byId.getHandleId()));
        if (sysUser!=null){
            problemEscalationDetailVO.setHandleName(sysUser.getUserName());
        }
        problemEscalationDetailVO.setEscalationTypeName(byId1.getDataContent());
        return R.ok(problemEscalationDetailVO);
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectDeptController.java
@@ -15,6 +15,7 @@
import com.ruoyi.system.vo.system.ProjectDeptListVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -71,6 +72,10 @@
    @ApiOperation(value = "新增项目部")
    @PostMapping(value = "/add")
    public R<Boolean> add(@RequestBody ProjectDeptDTO dto) {
        if (!StringUtils.hasLength(dto.getParentId())){
            dto.setParentId("0");
        }
        deptService.save(dto);
        return R.ok();
    }
@@ -78,6 +83,9 @@
    @ApiOperation(value = "编辑项目部")
    @PostMapping(value = "/edit")
    public R<Boolean> edit(@RequestBody ProjectDeptDTO dto) {
        if (!StringUtils.hasLength(dto.getParentId())){
            dto.setParentId("0");
        }
        deptService.updateById(dto);
        return R.ok();
    }
@@ -94,6 +102,14 @@
    @GetMapping(value = "/editStatus")
    public R<Boolean> editStatus(@RequestParam String id) {
        TProjectDept byId = deptService.getById(id);
        if (byId.getParentId().equals("0")){
            // 禁用上级 下级一起禁用
            List<TProjectDept> list = deptService.lambdaQuery().eq(TProjectDept::getParentId, byId.getId()).list();
            for (TProjectDept tProjectDept : list) {
                tProjectDept.setStatus(2);
            }
            deptService.updateBatchById(list);
        }
        if (byId.getStatus()==1){
            byId.setStatus(2);
        }else{
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TSystemBulletinController.java
@@ -81,7 +81,7 @@
    }
    @Log(title = "启用/禁用系统公告", businessType = BusinessType.OTHER)
    @ApiOperation(value = "启用/禁用系统公告")
    @DeleteMapping(value = "/editStatus")
    @GetMapping(value = "/editStatus")
    public R<Boolean> editStatus(@RequestParam String id) {
        TSystemBulletin byId = systemBulletinService.getById(id);
        if (byId.getStatus()==1){
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTemplateController.java
@@ -58,6 +58,11 @@
    public R<PageInfo<TemplateListVO>> pageList(@RequestBody TemplateListQuery query) {
        return R.ok(templateService.pageList(query));
    }
    @ApiOperation(value = "任务模板不分页列表")
    @PostMapping(value = "/listAllTemplate")
    public R<List<TTemplate>> listAllTemplate() {
        return R.ok(templateService.list());
    }
    @ApiOperation(value = "点位类型不分页列表")
    @PostMapping(value = "/listAll")
    public R<List<TLocationType>> pageList() {
@@ -145,8 +150,7 @@
                res.add(jsonObject);
            }
            String num4 = tTemplateDetail.getNum4();
            JSONObject jsonObject = JSONObject.parseObject(num4);
            JSONArray num5Array = jsonObject.getJSONArray("num5");
            JSONArray num5Array = JSONArray.parseArray(num4);
            for (Object o : num5Array) {
                JSONObject jsonObject1 = (JSONObject) o;
                String string = jsonObject1.getString("id");
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -125,6 +125,7 @@
        RoleInfoVO roleInfoVo = new RoleInfoVO();
        roleInfoVo.setRoleId(role.getRoleId());
        roleInfoVo.setRoleName(role.getRoleName());
        roleInfoVo.setRemark(role.getRemark());
        // 获取当前角色的菜单列表
        List<SysMenu> menus = menuService.selectListByRoleId(roleId);
ruoyi-admin/src/main/java/com/ruoyi/web/util/AmapApiClient.java
@@ -11,7 +11,7 @@
    private static final OkHttpClient client = new OkHttpClient();
    public static String getDrivingRoute(double startLat, double startLon, double endLat, double endLon) throws IOException {
        String url = "https://restapi.amap.com/v3/direction/walking?" +
        String url = "https://restapi.amap.com/v3/direction/driving?" +
                "origin=" + startLon + "," + startLat +
                "&destination=" + endLon + "," + endLat +
                "&key=" + KEY;
ruoyi-admin/src/main/java/com/ruoyi/web/util/MainApp.java
@@ -1,13 +1,18 @@
package com.ruoyi.web.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import java.math.BigDecimal;
import java.util.List;
public class MainApp {
    public static void main(String[] args) {
        double startLat = 39.9042;
        double startLon = 116.4074;
        double startLon = 118.4074;
        double endLat = 39.9042;
        double endLon = 116.4074;
        double endLon = 119.4074;
        double userLat = 39.9042;
        double userLon = 116.4074;
@@ -16,6 +21,14 @@
        int segments = 4;   // 四段,共 5 个点
        try {
            String routeJson = AmapApiClient.getDrivingRoute(startLat, startLon, endLat, endLon);
            // 转化为json对象
            JSONObject jsonObject = JSONObject.parseObject(routeJson);
            JSONObject route = jsonObject.getJSONObject("route");
            JSONArray paths = route.getJSONArray("paths");
            JSONObject o = (JSONObject)paths.get(0);
            BigDecimal distance = o.getBigDecimal("distance");
            System.err.println( paths);
            List<double[]> fivePoints = PathParser.parseAndInterpolate(routeJson, segments,startLat, startLon, endLat, endLon);
            if (GeoChecker.isInAnyCircle(userLat, userLon, fivePoints, radius)) {
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);
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
@@ -61,6 +61,6 @@
    public UserDetails createLoginUser(SysUser user)
    {
        return new LoginUser(user.getUserId(), user.getDeptId(), user, permissionService.getMenuPermission(user));
        return new LoginUser(user.getUserId(), Long.valueOf(user.getDeptId()), user, permissionService.getMenuPermission(user));
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/LeaveAuditDTO.java
New file
@@ -0,0 +1,12 @@
package com.ruoyi.system.applet.dto;
import com.ruoyi.system.model.TLeave;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "审批请假DTO")
public class LeaveAuditDTO extends TLeave {
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/query/LeaveListUserQuery.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.system.applet.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "我审批的分页列表query")
public class LeaveListUserQuery extends BasePage {
    @ApiModelProperty(value = "姓名")
    private String leavePersonName;
    @ApiModelProperty(value = "人员ids 前端忽略")
    private List<Long> userIds;
    @ApiModelProperty(value = "类型1=我审批的 2=我申请的")
    private String type;
    @ApiModelProperty(value = "当前登陆人id 前端忽略")
    private String userId;
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveAuditListVO.java
New file
@@ -0,0 +1,24 @@
package com.ruoyi.system.applet.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "审批流程VO")
public class LeaveAuditListVO {
    @ApiModelProperty(value = "审批人")
    private LeaveAuditVO auditPerson;
    @ApiModelProperty(value = "抄送人")
    private List<LeaveAuditVO> copyPerson;
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveAuditVO.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.system.applet.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TLeaveAudit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "请假审批VO")
public class LeaveAuditVO  {
    @ApiModelProperty(value = "头像")
    private String avatar;
    @ApiModelProperty(value = "名字")
    private String nickName;
    @ApiModelProperty(value = "审批时间/抄送时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime createTime;
    @ApiModelProperty(value = "审批抄送状态 审核状态 1待审核 2通过 3驳回")
    private Integer auditStatus;
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveUserDetailVO.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.system.applet.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TLeave;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "个人中心-我的审批/申请详情返回VO")
public class LeaveUserDetailVO extends TLeave {
    @ApiModelProperty(value = "请假人")
    private String leavePersonName;
    @ApiModelProperty(value = "归属部门")
    private String deptName;
    @ApiModelProperty(value = "审批流程")
    private LeaveAuditListVO audit;
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/LeaveUserListVO.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.system.applet.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TLeave;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "个人中心-我审批的分页列表返回VO")
public class LeaveUserListVO extends TLeave {
    @ApiModelProperty(value = "请假人")
    private String leavePersonName;
    @ApiModelProperty(value = "申请时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime createTime1;
}
ruoyi-system/src/main/java/com/ruoyi/system/applet/vo/UserIndexVO.java
New file
@@ -0,0 +1,31 @@
package com.ruoyi.system.applet.vo;
import com.ruoyi.system.model.TTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "个人中心-任务记录列表分页VO")
public class UserIndexVO  {
    @ApiModelProperty(value = "头像")
    private String avatar;
    @ApiModelProperty(value = "名称")
    private String nickName;
    @ApiModelProperty(value = "手机号")
    private String phonenumber;
    @ApiModelProperty(value = "部门名称")
    private String deptName;
    @ApiModelProperty(value = "是否请假 0否1是")
    private Integer isLeave;
    @ApiModelProperty(value = "已完成任务数")
    private Integer finishCount;
    @ApiModelProperty(value = "合格率")
    private BigDecimal rate;
    @ApiModelProperty(value = "月排名")
    private Integer ranking;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TLeaveMapper.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.applet.query.LeaveListUserQuery;
import com.ruoyi.system.applet.vo.LeaveUserListVO;
import com.ruoyi.system.model.TLeave;
import com.ruoyi.system.query.LeaveListQuery;
import com.ruoyi.system.vo.system.LeaveListVO;
@@ -20,4 +22,8 @@
public interface TLeaveMapper extends BaseMapper<TLeave> {
    List<LeaveListVO> pageList(@Param("query")LeaveListQuery query,@Param("pageInfo")PageInfo<LeaveListVO> pageInfo);
    List<LeaveUserListVO> leaveList(@Param("query")LeaveListUserQuery query, @Param("pageInfo")PageInfo<LeaveUserListVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TCleaner.java
@@ -42,4 +42,11 @@
    private String projectId;
    @ApiModelProperty(value = "部门级编号")
    @TableField("dept_code")
    private String deptCode;
    @ApiModelProperty(value = "项目级编号")
    @TableField("project_code")
    private String projectCode;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TDictData.java
@@ -25,7 +25,7 @@
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("t_appeal")
@TableName("t_dict_data")
@ApiModel(value="TAppeal对象", description="任务申诉")
public class TDictData extends BaseModel {
ruoyi-system/src/main/java/com/ruoyi/system/model/TKnowledge.java
@@ -36,6 +36,9 @@
    @ApiModelProperty(value = "标题")
    @TableField("title")
    private String title;
    @ApiModelProperty(value = "内容")
    @TableField("content")
    private String content;
    @ApiModelProperty(value = "浏览量")
    @TableField("views")
ruoyi-system/src/main/java/com/ruoyi/system/model/TLeave.java
@@ -64,7 +64,7 @@
    @TableField("audit_status")
    private Integer auditStatus;
    @ApiModelProperty(value = "审核人id")
    @ApiModelProperty(value = "归属审核人id")
    @TableField("audit_id")
    private String auditId;
@@ -76,6 +76,9 @@
    @ApiModelProperty(value = "审核备注")
    @TableField("audit_remark")
    private String auditRemark;
    @ApiModelProperty(value = "审批编号")
    @TableField("code")
    private String code;
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TLeaveAudit.java
@@ -38,7 +38,7 @@
    @TableField("audit_status")
    private Integer auditStatus;
    @ApiModelProperty(value = "审批人id和抄送人id,逗号拼接")
    @ApiModelProperty(value = "抄送人id和审批人id,逗号拼接")
    @TableField("audit_id")
    private String auditId;
ruoyi-system/src/main/java/com/ruoyi/system/model/TProblemEscalation.java
@@ -36,7 +36,7 @@
    @ApiModelProperty(value = "问题类型id")
    @TableField("escalation_type")
    private Integer escalationType;
    private String escalationType;
    @ApiModelProperty(value = "上报内容")
    @TableField("escalation_content")
ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java
@@ -49,17 +49,14 @@
    @TableField("num3")
    private Integer num3;
    @ApiModelProperty(value = "点位类型覆盖率json {\n" +
            "\t\"num5\": [{\n" +
    @ApiModelProperty(value = "点位类型覆盖率json [{\n" +
            "\t\t\"id\": \"18678093453\",\n" +
            "\t\t\"value\": 18\n" +
            "\n" +
            "\t}, {\n" +
            "\t\t\"id\": \"18678093453\",\n" +
            "\t\t\"value\": 18\n" +
            "\t}]\n" +
            "\n" +
            "}")
            "\t}]\n")
    @TableField("num4")
    private String num4;
ruoyi-system/src/main/java/com/ruoyi/system/service/TLeaveService.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.applet.query.LeaveListUserQuery;
import com.ruoyi.system.applet.vo.LeaveUserListVO;
import com.ruoyi.system.model.TLeave;
import com.ruoyi.system.query.LeaveListQuery;
import com.ruoyi.system.vo.system.LeaveListVO;
@@ -17,4 +19,6 @@
public interface TLeaveService extends IService<TLeave> {
    PageInfo<LeaveListVO> pageList(LeaveListQuery query);
    PageInfo<LeaveUserListVO> leaveList(LeaveListUserQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -692,16 +692,21 @@
            }
            Integer deptType = sysUserVO.getDeptType();
                if (1==deptType){
                    TProjectDept tProjectDept = projectDeptMapper.selectById(sysUserVO.getDeptId());
                    if (!tProjectDept.getParentId().equals("0")){
                        TProjectDept tProjectDept1 = projectDeptMapper.selectById(tProjectDept.getParentId());
                         sysUserVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
                    }else{
                        sysUserVO.setDeptName(tProjectDept.getProjectName());
                    }
                        TProjectDept tProjectDept = projectDeptMapper.selectById(sysUserVO.getDeptId());
                        if (!tProjectDept.getParentId().equals("0")){
                            TProjectDept tProjectDept1 = projectDeptMapper.selectById(tProjectDept.getParentId());
                            sysUserVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
                        }else{
                            sysUserVO.setDeptName(tProjectDept.getProjectName());
                        }
                }else{
                    TDept tDept = deptMapper.selectById(sysUserVO.getDeptId());
                     sysUserVO.setDeptName(tDept.getDeptName());
                    if (sysUserVO.getUserId()==1){
                        sysUserVO.setDeptName("公司");
                    }else{
                        TDept tDept = deptMapper.selectById(sysUserVO.getDeptId());
                        sysUserVO.setDeptName(tDept.getDeptName());
                    }
                }
            }
        pageInfo.setTotal(list.size());
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TLeaveServiceImpl.java
@@ -2,7 +2,12 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.documents4j.api.IFileConsumer;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.applet.query.LeaveListUserQuery;
import com.ruoyi.system.applet.vo.LeaveUserListVO;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.TDeptMapper;
import com.ruoyi.system.mapper.TLeaveMapper;
import com.ruoyi.system.mapper.TProjectDeptMapper;
@@ -36,6 +41,8 @@
    private TProjectDeptMapper projectDeptMapper;
    @Autowired
    private TDeptMapper deptMapper;
    @Autowired
    private SysUserMapper sysUserMapper;
    @Override
    public PageInfo<LeaveListVO> pageList(LeaveListQuery query) {
        if (StringUtils.hasLength(query.getDeptName())){
@@ -72,4 +79,25 @@
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<LeaveUserListVO> leaveList(LeaveListUserQuery query) {
        List<SysUser> sysUsers = sysUserMapper.selectAllList();
        if (StringUtils.hasLength(query.getLeavePersonName())){
            List<Long> collect = sysUsers.stream().filter(e -> e.getNickName().contains(query.getLeavePersonName()))
                    .map(SysUser::getUserId).collect(Collectors.toList());
            query.setUserIds(collect);
        }
        PageInfo<LeaveUserListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<LeaveUserListVO> list = this.baseMapper.leaveList(query,pageInfo);
        for (LeaveUserListVO leaveUserListVO : list) {
            SysUser sysUser = sysUsers.stream().filter(e -> (e.getUserId() + "").equals(leaveUserListVO.getLeavePerson()))
                    .findFirst().orElse(null);
            if (sysUser!=null){
                leaveUserListVO.setLeavePersonName(sysUser.getNickName());
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/ProblemEscalationDetailVO.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.vo.system;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.system.model.TFeedback;
import com.ruoyi.system.model.TProblemEscalation;
import io.swagger.annotations.ApiModel;
@@ -12,4 +13,6 @@
    @ApiModelProperty("上报类型名称")
    private String escalationTypeName;
    @ApiModelProperty(value = "处理人名称")
    private String handleName;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/RoleInfoVO.java
@@ -10,6 +10,7 @@
    private Long roleId;
    private String roleName;
    private String remark;
    @ApiModelProperty("菜单id")
    private List<Long> menus;
ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -99,7 +99,7 @@
        select a.role_id AS roleId, a.role_name AS roleName, a.role_key AS roleKey, a.role_sort AS roleSort, a.data_scope AS dataScope,
        a.menu_check_strictly AS menuCheckStrictly, a.dept_check_strictly AS deptCheckStrictly,a.status AS status, a.del_flag AS delFlag,
        a.create_time AS createTime,a.create_by AS createBy,a.postType AS postType,a.removeDays AS removeDays,
        r.role_type as roleType
        a.role_type as roleType,a.remark,
        IFNULL(b.userCount,0) as userCount
        from sys_role a
        LEFT JOIN
ruoyi-system/src/main/resources/mapper/system/TCleanerMapper.xml
@@ -31,9 +31,8 @@
            <if test="query.projectId != null and query.projectId != ''">
                 and t1.projectId = #{query.projectId}
            </if>
            and  t1.disabled  = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        and  t1.disabled = = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        order by t1.create_time desc
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TDeptMapper.xml
@@ -6,7 +6,7 @@
    <select id="pageList" resultType="com.ruoyi.system.vo.system.DeptListVO">
select t1.*,count(t2.user_id) as userCount from
    t_dept t1
left join sys_user t2 on t2.deptId = t1.id
left join sys_user t2 on t2.deptId = t1.id and   t2.deptType =2
where 1=1
<if test="query.deptName != null and query.deptName != ''">
    and t1.dept_name like concat('%',#{query.deptName},'%')
@@ -14,8 +14,8 @@
<if test="query.status != null">
    and t1.status = #{query.status}
</if>
        and t2.deptType =2
and t1.`disabled` = = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
and t1.`disabled` = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
group by t1.id
order by t1.create_time desc
    </select>
ruoyi-system/src/main/resources/mapper/system/TLeaveMapper.xml
@@ -33,7 +33,7 @@
        from t_leave t1
                 left join sys_user t2 on t1.leave_person = t2.id
        where
            t1.disabled = = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
            t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        <if test="query.nickName != null and query.nickName != ''">
            and t2.nick_name like concat('%', #{query.nickName}, '%')
        </if>
@@ -54,5 +54,24 @@
            </foreach>
        </if>
    </select>
    <select id="leaveList" resultType="com.ruoyi.system.applet.vo.LeaveUserListVO">
        select t1.*,t1.create_time as createTime1
        from t_leave t1
        where
        t1.disabled =  ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        <if test="query.type == 1">
            and t1.audit_id = #{query.userId}
        </if>
        <if test="query.type == 2">
            and t1.leave_person = #{query.userId}
        </if>
        <if test="query.userIds != null and query.userIds.size()>0">
            AND t1.leave_person IN
            <foreach collection="query.userIds" separator="," item="id" open="(" close=")">
                #{id}
            </foreach>
        </if>
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml
@@ -45,7 +45,7 @@
        <if test="query.locationCleaner != null and query.locationCleaner != ''">
            and t1.location_cleaner = #{query.locationCleaner}
        </if>
        and t1.disabled = = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        and t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
    </select>
ruoyi-system/src/main/resources/mapper/system/TProblemEscalationMapper.xml
@@ -31,8 +31,8 @@
        left join sys_user t2 on t1.escalation_id = t2.user_id
        left join t_dict_data t3 on t1.escalation_type = t3.id
        where 1=1
        <if test="query.feedbackContent != null and query.feedbackContent != ''">
            and t1.feedback_content like concat('%',#{query.feedbackContent},'%')
        <if test="query.escalationContent != null and query.escalationContent != ''">
            and t1.escalation_content like concat('%',#{query.escalationContent},'%')
        </if>
          and t3.data_type = 3
        and t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
ruoyi-system/src/main/resources/mapper/system/TProjectDeptMapper.xml
@@ -22,16 +22,16 @@
    <select id="pageList" resultType="com.ruoyi.system.vo.system.ProjectDeptListVO">
        select t1.*,count(t2.user_id) as userCount from
        t_project_dept t1
        left join sys_user t2 on t2.deptId = t1.id
        left join sys_user t2 on t2.deptId = t1.id and t2.deptType =1
        where 1=1
        <if test="query.projectName != null and query.projectName != ''">
            and t1.project_name like concat('%',#{query.projectName},'%')
        <if test="query.deptName != null and query.deptName != ''">
            and t1.project_name like concat('%',#{query.deptName},'%')
        </if>
        <if test="query.status != null and query.status != ''">
            and t1.status = #{query.status}
        </if>
        and t1.`disabled` = = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        and t2.deptType =1
        and t1.`disabled`  = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        group by t1.id
        order by t1.create_time desc
    </select>