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
@@ -700,9 +700,14 @@ sysUserVO.setDeptName(tProjectDept.getProjectName()); } }else{ if (sysUserVO.getUserId()==1){ sysUserVO.setDeptName("公司"); }else{ TDept tDept = deptMapper.selectById(sysUserVO.getDeptId()); sysUserVO.setDeptName(tDept.getDeptName()); } } } pageInfo.setTotal(list.size()); if (org.springframework.util.StringUtils.hasLength(query.getDeptName())){ 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>