ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
@@ -1195,7 +1195,7 @@ } } } map.put("qualifiedRate", new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_UP)); map.put("qualifiedRate", new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN)); return R.ok(map); } @@ -1330,7 +1330,7 @@ } } } locationStatisticsVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_UP)); locationStatisticsVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN)); return R.ok(locationStatisticsVO); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
@@ -206,7 +206,7 @@ break; } } LocalDateTime localDateTime = tTemplate.getCreateTime().plusDays(temp); LocalDateTime localDateTime = tTemplate.getCreateTime().plusDays(temp-1); stringBuilder.append(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); record.setTemplateDate(stringBuilder.toString()); } @@ -429,7 +429,10 @@ for (LocationTypeListByProjectVO locationTypeListByProjectVO : locationTypeListByProjectVOS) { LocationTypeListByProjectVO temp = new LocationTypeListByProjectVO(); BeanUtils.copyProperties(locationTypeListByProjectVO, temp); List<String> locationIds = locations.stream().filter(e -> e.getLocationType().equals(locationTypeListByProjectVO.getId())).map(TLocation::getId).collect(Collectors.toList()); List<String> locationIds = locations.stream().filter(e -> e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())&& e.getLocationType().equals(locationTypeListByProjectVO.getId())) .map(TLocation::getId).collect(Collectors.toList()); if (locationIds.isEmpty()) { locationTypeListByProjectVO.setLocationNum(0); } else { @@ -707,8 +710,8 @@ List<SysUser> sysUsers = sysUserService.selectAllList(); LambdaQueryWrapper<TLeave> tLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasLength(query.getStartTime())){ tLeaveLambdaQueryWrapper.ge(TLeave::getCreateTime, query.getStartTime()); tLeaveLambdaQueryWrapper.le(TLeave::getCreateTime, query.getEndTime()); tLeaveLambdaQueryWrapper.ge(TLeave::getCreateTime, query.getStartTime()+" :00:00:00"); tLeaveLambdaQueryWrapper.le(TLeave::getCreateTime, query.getEndTime()+" :23:59:59"); } tLeaveLambdaQueryWrapper.eq(TLeave::getAuditStatus,2); List<TLeave> leaves = leaveService.list(tLeaveLambdaQueryWrapper); @@ -748,15 +751,15 @@ List<PatrolInspectorVO> res = new ArrayList<>(); LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasLength(query.getStartTime())){ tTaskLambdaQueryWrapper.ge(TTask::getCreateTime, query.getStartTime()); tTaskLambdaQueryWrapper.le(TTask::getCreateTime, query.getEndTime()); tTaskLambdaQueryWrapper.ge(TTask::getCreateTime, query.getStartTime()+" :00:00:00"); tTaskLambdaQueryWrapper.le(TTask::getCreateTime, query.getEndTime()+" :23:59:59"); } if(query.getPatrolInspectorIds()!=null){ tTaskLambdaQueryWrapper.in(TTask::getPatrolInspector, query.getPatrolInspectorIds()); sysUsers = sysUsers.stream().filter(sysUser -> query.getPatrolInspectorIds().contains(sysUser.getUserId())).collect(Collectors.toList()); } List<TTask> tasks = taskCleanerService.list(tTaskLambdaQueryWrapper); sysUsers = sysUsers.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList()); for (SysUser sysUser : sysUsers) { PatrolInspectorVO patrolInspectorVO = new PatrolInspectorVO(); @@ -779,10 +782,22 @@ } // 查询巡检员任务ids List<String> taskIds = tasks.stream().filter(e->e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList()); if (taskIds.isEmpty()){ taskIds.add("-1"); } // 完成的任务 List<String> taskIdsFinish = tasks.stream().filter(e-> (e.getStatus()==5 || e.getStatus()==6) && e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList()); if (taskIdsFinish.isEmpty()){ taskIdsFinish.add("-1"); } List<TTaskDetail> list = taskDetailService.lambdaQuery() .eq(TTaskDetail::getAuditStatus, 1) .isNotNull(TTaskDetail::getClearStatus).orderByDesc(BaseModel::getCreateTime) .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIds).groupBy(TTaskDetail::getTaskId).list(); .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIdsFinish).groupBy(TTaskDetail::getTaskId).list(); // 查询clearStatus为1的数量 List<TTaskDetail> clearStatus1 = list.stream().filter(e -> e.getClearStatus().equals(1)).collect(Collectors.toList()); List<TTaskDetail> clearStatus2 = list.stream().filter(e -> e.getClearStatus().equals(2)).collect(Collectors.toList()); @@ -873,6 +888,7 @@ sysUsers = sysUsers.stream().filter(sysUser -> query.getPatrolInspectorIds().contains(sysUser.getUserId())).collect(Collectors.toList()); } List<TTask> tasks = taskCleanerService.list(tTaskLambdaQueryWrapper); sysUsers = sysUsers.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList()); for (SysUser sysUser : sysUsers) { @@ -896,10 +912,22 @@ } // 查询巡检员任务ids List<String> taskIds = tasks.stream().filter(e->e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList()); if (taskIds.isEmpty()){ taskIds.add("-1"); } // 完成的任务 List<String> taskIdsFinish = tasks.stream().filter(e-> (e.getStatus()==5 || e.getStatus()==6) && e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList()); if (taskIdsFinish.isEmpty()){ taskIdsFinish.add("-1"); } List<TTaskDetail> list = taskDetailService.lambdaQuery() .eq(TTaskDetail::getAuditStatus, 1) .isNotNull(TTaskDetail::getClearStatus).orderByDesc(BaseModel::getCreateTime) .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIds).groupBy(TTaskDetail::getTaskId).list(); .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIdsFinish).groupBy(TTaskDetail::getTaskId).list(); // 查询clearStatus为1的数量 List<TTaskDetail> clearStatus1 = list.stream().filter(e -> e.getClearStatus().equals(1)).collect(Collectors.toList()); List<TTaskDetail> clearStatus2 = list.stream().filter(e -> e.getClearStatus().equals(2)).collect(Collectors.toList()); @@ -1004,6 +1032,7 @@ } List<InspectorVO> res = new ArrayList<>(); List<TInspector> inspectors = inspectorService.list(tTaskLambdaQueryWrapper); sysUsers = sysUsers.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList()); for (SysUser sysUser : sysUsers) { InspectorVO inspectorVO = new InspectorVO(); inspectorVO.setNickName(sysUser.getNickName()); @@ -1091,6 +1120,8 @@ } List<InspectorVO> res = new ArrayList<>(); List<TInspector> inspectors = inspectorService.list(tTaskLambdaQueryWrapper); sysUsers = sysUsers.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList()); for (SysUser sysUser : sysUsers) { InspectorVO inspectorVO = new InspectorVO(); inspectorVO.setNickName(sysUser.getNickName()); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppealController.java
@@ -14,6 +14,7 @@ import com.ruoyi.system.service.*; import com.ruoyi.system.vo.system.AppealDetailVO; import com.ruoyi.system.vo.system.AppealListVO; import com.tencentcloudapi.es.v20180416.models.TaskDetail; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.util.CollectionUtils; @@ -185,24 +186,49 @@ TTask task = taskCleanService.getById(appeal.getTaskId()); TLocation location = locationService.getById(task.getLocationId()); TNotice tNotice = new TNotice(); tNotice.setUserId(dto.getAppealPerson()); tNotice.setUserId(appeal.getAppealPerson()); tNotice.setStatus(1); tNotice.setDataId(dto.getId()); dto.setAuditTime(LocalDateTime.now()); TTaskDetail taskDetail = new TTaskDetail(); taskDetail.setTaskId(appeal.getTaskId()); Long count = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, appeal.getTaskId()) .eq(TTaskDetail::getHandleType, 1).count(); if (dto.getStatus()==2){ taskDetail.setClearStatus(1); taskDetail.setAuditTime(LocalDateTime.now()); taskDetail.setAuditPerson(tokenService.getLoginUser().getUserId()+""); taskDetail.setAuditStatus(1); taskDetail.setAuditRemark(dto.getAuditRemark()); taskDetail.setHandleType(5); taskDetail.setAppealId(dto.getId()); // 通过 TTask byId = taskCleanService.getById(dto.getTaskId()); byId.setStatus(6); if (count>1){ byId.setStatus(5); }else{ byId.setStatus(6); } taskCleanService.updateById(byId); tNotice.setNoticeType(5); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务申诉通过"); }else{ taskDetail.setClearStatus(2); taskDetail.setAuditTime(LocalDateTime.now()); taskDetail.setAuditPerson(tokenService.getLoginUser().getUserId()+""); taskDetail.setAuditStatus(2); taskDetail.setAuditRemark(dto.getAuditRemark()); taskDetail.setHandleType(6); taskDetail.setAppealId(dto.getId()); tNotice.setNoticeType(4); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务申诉驳回"); } noticeService.save(tNotice); dto.setAuditPerson(tokenService.getLoginUser().getUserId()+""); appealService.updateById(dto); tTaskDetailService.save(taskDetail); return R.ok(); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLocationController.java
@@ -164,6 +164,9 @@ } } }); locationTypeList.stream().filter(e -> e.getId().equals(tLocation.getLocationType())).findFirst() .ifPresent(tLocationType -> temp.setLocationTypeName(tLocationType.getLocationName())); } TTaskDetail one = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, tTask.getId()) .orderByDesc(TTaskDetail::getCreateTime).last("limit 1").one(); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
@@ -9,6 +9,7 @@ import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import cn.hutool.core.io.resource.ClassPathResource; import com.ruoyi.common.core.domain.BaseModel; import com.ruoyi.common.utils.CodeGenerateUtils; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.WebUtils; import com.ruoyi.framework.web.service.TokenService; @@ -161,6 +162,9 @@ @ApiOperation(value = "新增任务") @PostMapping(value = "/add") public R<Boolean> add(@RequestBody TTaskDTO dto) { String nameAndCode = CodeGenerateUtils.generateVolumeSn(); dto.setTaskName(nameAndCode); dto.setTaskCode(nameAndCode); dto.setTaskType(2); String implementTime1 = dto.getImplementTime1(); // 转化为LocalDateTime类型 @@ -177,6 +181,7 @@ dto.setAuditTime(LocalDateTime.now()); TTask task = taskCleanerService.getById(dto.getTaskId()); TTaskDetail one = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()) .eq(TTaskDetail::getHandleType,1) .orderByDesc(BaseModel::getCreateTime).last("limit 1").one(); dto.setClearStatus(one.getClearStatus()); TLocation location = locationService.getById(task.getLocationId()); @@ -197,20 +202,33 @@ tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); }else{ dto.setHandleType(2); // 如果是初次审核就通过 将状态设置为已完成 List<TTaskDetail> list = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); if (list.isEmpty()){ List<TTaskDetail> list = tTaskDetailService.lambdaQuery() .eq(TTaskDetail::getHandleType,1) .eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); if (one.getClearStatus()==1){ if (list.size()<2){ task.setStatus(6); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); }else{ task.setStatus(5); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); } }else{ task.setStatus(5); // 将任务修改为待整改 task.setStatus(4); taskCleanerService.updateById(task); tNotice.setNoticeType(2); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); } } noticeService.save(tNotice); dto.setAuditPerson(tokenService.getLoginUser().getUserId()+""); @@ -275,6 +293,9 @@ tTaskDetail.setUnqualifiedName(byId3.getDataContent()); } } if (tTaskDetail!=null){ tTaskDetail.setFinishTime(tTaskDetail.getCreateTime()); } taskDetailVO.setTaskDetail(tTaskDetail); taskDetailVO.setRecords(list); return R.ok(taskDetailVO); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
@@ -470,7 +470,7 @@ } } } taskSituationVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_UP)); taskSituationVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN)); // 过滤每天的任务 LocalDateTime start = DateUtils.stringToLocalDateTime(query.getStartTime()); @@ -508,7 +508,7 @@ if(tTasks.isEmpty()){ taskSituationDayVO.setCompleteRate(BigDecimal.ZERO); }else { taskSituationDayVO.setCompleteRate(new BigDecimal(qualifiedWarnChild).divide(new BigDecimal(tTasks.size()), 2, RoundingMode.HALF_UP)); taskSituationDayVO.setCompleteRate(new BigDecimal(qualifiedWarnChild).divide(new BigDecimal(tTasks.size()), 2, RoundingMode.HALF_DOWN)); } taskSituationDayVOList.add(taskSituationDayVO); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -86,7 +86,10 @@ TTemplate byId = templateService.getById(templateId); SysRole sysRole = roleService.selectRoleById(byId.getRoleId()); List<SysRole> sysRoles = new ArrayList<>(); sysRoles.add(sysRole); if (sysRole!=null){ sysRoles.add(sysRole); } return AjaxResult.success(sysRoles); } @PreAuthorize("@ss.hasPermi('system:role:count')") ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -332,8 +332,8 @@ templateCount.setUserId(sysUser.getUserId()); templateCountService.save(templateCount); taskCleanService.saveBatch(tasks); taskCount = taskCount + tasks.size(); taskCleanService.saveBatch(tasks); taskCount = taskCount + tasks.size(); } template.setTaskCount(taskCount); templateService.updateById(template); ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
@@ -151,8 +151,7 @@ tTaskLambdaQueryWrapper.eq(TTask::getProjectId, projectDept.getId()); userDeptIds.add(projectDept.getId()); } else { TProjectDept parent = projectDeptService.getById(projectDept.getParentId()); List<TProjectDept> list = projectDeptService.lambdaQuery().eq(TProjectDept::getParentId, parent.getId()).list(); List<TProjectDept> list = projectDeptService.lambdaQuery().eq(TProjectDept::getParentId, projectDept.getId()).list(); List<String> deptIds = list.stream().map(TProjectDept::getId).collect(Collectors.toList()); if (!deptIds.isEmpty()) { tTaskLambdaQueryWrapper.in(TTask::getProjectId, deptIds); @@ -473,6 +472,8 @@ } pendingTask.add(taskTodayVO); } // 将pendingTask按照距离 从小到大排序 pendingTask.sort(Comparator.comparing(TaskPendingVO::getDistance)); res.setPendingTask(pendingTask); res.setLeaveList(leaveList); List<TaskTodayVO> todayTask = new ArrayList<>(); ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java
@@ -118,6 +118,7 @@ TTaskDetail taskDetail = new TTaskDetail(); taskDetail.setTaskId(dto.getTaskId()); taskDetail.setHandleType(4); taskDetail.setAppealId(dto.getId()); taskDetailService.save(taskDetail); return R.ok(); } ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -35,15 +35,13 @@ import javax.annotation.Resource; import javax.validation.Valid; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.*; import java.util.stream.Collectors; /** @@ -183,6 +181,8 @@ @PostMapping(value = "/userIndex") public R<UserIndexVO> userIndex() { UserIndexVO userIndexVO = new UserIndexVO(); List<SysUser> userAll = sysUserService.selectAllList(); List<SysUser> users = userAll.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList()); Long userId = tokenService.getLoginUserApplet().getUserId(); SysUser sysUser = sysUserService.selectUserById(userId); @@ -237,7 +237,9 @@ taskIds.add("-1"); } List<TTaskDetail> taskDetails = taskDetailService.lambdaQuery() .eq(TTaskDetail::getAuditStatus, 1).in(TTaskDetail::getTaskId, taskIds) .in(TTaskDetail::getTaskId, taskIds) .eq(TTaskDetail::getAuditStatus, 1) .isNotNull(TTaskDetail::getClearStatus) .groupBy(TTaskDetail::getTaskId) .orderByDesc(TTaskDetail::getCreateTime).list(); @@ -253,8 +255,58 @@ } else { userIndexVO.setRate(new BigDecimal(0)); } // todo 月排名 userIndexVO.setRanking(0); // 判断时间 String startTime = ""; String endTime = ""; Map<String, Date> monthDate = DateUtils.getMonthDate(new Date()); startTime = new SimpleDateFormat("yyyy-MM-dd").format((monthDate.get("first"))) + " 00:00:00"; endTime = new SimpleDateFormat("yyyy-MM-dd").format((monthDate.get("last"))) + " 23:59:59"; List<TTask> taskRank = taskCleanerService.lambdaQuery().between(TTask::getImplementTime, startTime, endTime).list(); List<String> taskIdsRank = taskRank.stream().map(TTask::getId).collect(Collectors.toList()); if (taskIdsRank.isEmpty()){ userIndexVO.setRanking(0); }else{ List<TTaskDetail> taskDetailsRank = taskDetailService.lambdaQuery().in(TTaskDetail::getTaskId) .eq(TTaskDetail::getAuditStatus, 1) .isNotNull(TTaskDetail::getClearStatus) .groupBy(TTaskDetail::getTaskId) .orderByDesc(TTaskDetail::getCreateTime).list(); for (SysUser user : users) { int finishCount = (int) taskRank.stream().filter(e->e.getPatrolInspector().equals(user.getUserId()+"")&&e.getStatus() == 5 || e.getStatus() == 6).count(); int totalCount = (int) taskRank.stream().filter(e->e.getPatrolInspector().equals(user.getUserId()+"")).count(); if (totalCount!=0){ user.setFinish(new BigDecimal(finishCount).divide(new BigDecimal(totalCount),2, RoundingMode.HALF_DOWN)); }else{ user.setFinish(BigDecimal.ZERO); } List<TTaskDetail> status1User = taskDetails.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList()); List<TTaskDetail> status2User = taskDetails.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList()); if (!status1User.isEmpty()) { BigDecimal divide = new BigDecimal(status1User.size() + status2User.size()) .divide(new BigDecimal(status1User.size()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)); user.setRate(divide); } else { user.setRate(new BigDecimal(0)); } } // 将users进行排序,优先根据rate倒叙排序,如果rate相同 再finish倒叙排序 users.sort((o1, o2) -> { if (o1.getRate().compareTo(o2.getRate()) == 0) { return o2.getFinish().compareTo(o1.getFinish()); } else { return o2.getRate().compareTo(o1.getRate()); } }); // 查询当前登陆人处于哪一个排名 for (int i = 0; i < users.size(); i++) { if (users.get(i).getUserId().equals(userId)) { userIndexVO.setRanking(i + 1); break; } } } return R.ok(userIndexVO); } @@ -276,9 +328,11 @@ BeanUtils.copyProperties(byId, taskDetailVO); TLocation byId1 = locationService.getById(byId.getLocationId()); TLocationType byId2 = locationTypeService.getById(byId1.getLocationType()); taskDetailVO.setLocationName(byId1.getLocationName()); taskDetailVO.setLocationAddress(byId1.getLocationAddress()); taskDetailVO.setLocationAddressEnd(byId1.getLocationAddressEnd()); taskDetailVO.setLocationIcon(byId2.getLocationIcon()); taskDetailVO.setLocationName(byId2.getLocationName()); taskDetailVO.setLocationTypeName(byId2.getLocationName()); TTaskDetail tTaskDetail = list.stream().filter(e -> e.getHandleType() == 1).findFirst().orElse(null); TTaskDetail tTaskDetailFinish = list.stream().filter(e -> e.getHandleType() == 2).findFirst().orElse(null); if (tTaskDetail != null && tTaskDetail.getUnqualified() != null) { @@ -462,8 +516,8 @@ 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("部门负责人")) { //项目部负责人、部门负责人、公司成员提交由最终审批人审批; if (user.getDeptType() == 2 || sysRole.getRoleName().contains("项目部负责人") || sysRole.getRoleName().contains("部门负责人")) { LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); tLeaveAudit.setAvatar(auditPerson.getAvatar()); tLeaveAudit.setNickName(auditPerson.getNickName()); @@ -471,13 +525,13 @@ res.setAuditPersonId("999"); } else if (!sysRole.getRoleName().equals("部门助理")) { // 审批人根据当前角色类型来 if (sysRole.getRoleName().contains("现场负责人") || sysRole.getRoleName().contains("组长")) { if (sysRole.getRoleName().contains("片区负责人") || 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("项目负责人")) { if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) { LeaveAuditVO tLeaveAudit = new LeaveAuditVO(); tLeaveAudit.setAvatar(sysUser.getAvatar()); tLeaveAudit.setNickName(sysUser.getNickName()); @@ -549,8 +603,8 @@ leaveDTO.setTemplateId(user.getTemplateId()); leaveDTO.setLeavePerson(userId + ""); leaveService.save(leaveDTO); //项目负责人、部门负责人、公司成员提交由最终审批人审批; if (user.getDeptType() == 2 || sysRole.getRoleName().contains("项目负责人") || sysRole.getRoleName().contains("部门负责人")) { //项目部负责人、部门负责人、公司成员提交由最终审批人审批; if (user.getDeptType() == 2 || sysRole.getRoleName().contains("项目部负责人") || sysRole.getRoleName().contains("部门负责人")) { TLeaveAudit tLeaveAudit1 = new TLeaveAudit(); tLeaveAudit1.setLeaveId(leaveDTO.getId()); tLeaveAudit1.setAuditStatus(1); @@ -559,13 +613,13 @@ leaveAuditService.save(tLeaveAudit1); } else if (!sysRole.getRoleName().equals("部门助理")) { // 审批人根据当前角色类型来 if (sysRole.getRoleName().contains("现场负责人") || sysRole.getRoleName().contains("组长")) { if (sysRole.getRoleName().contains("片区负责人") || 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("项目负责人")) { if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) { TLeaveAudit tLeaveAudit1 = new TLeaveAudit(); tLeaveAudit1.setLeaveId(leaveDTO.getId()); tLeaveAudit1.setAuditStatus(1); @@ -651,7 +705,7 @@ SysUser sysUser = sysUserService.selectUserById(Long.parseLong(leave.getLeavePerson())); Long userRole = sysUserService.getUserRole(sysUser.getUserId()); SysRole sysRole = roleService.selectRoleById(userRole); if (sysRole.getRoleName().contains("现场负责人") || sysRole.getRoleName().equals("组长")) { if (sysRole.getRoleName().contains("片区负责人") || sysRole.getRoleName().equals("组长/队长")||sysRole.getRoleName().contains("项目部助理")) { if (sysUser.getDeptType() == 1) { TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId()); if (!tProjectDept.getParentId().equals("0")) { @@ -664,7 +718,7 @@ TDept tDept = deptService.getById(sysUser.getDeptId()); leaveUserDetailVO.setDeptName(tDept.getDeptName()); } } else if (sysRole.getRoleName().contains("项目负责人")) { } else if (sysRole.getRoleName().contains("项目部负责人")) { TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId()); leaveUserDetailVO.setDeptName(tProjectDept.getProjectName()); } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -11,6 +11,7 @@ import javax.validation.constraints.Email; import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -49,6 +50,12 @@ @TableField("templateId") @ApiModelProperty(value = "所属任务模板id") private String templateId; @TableField(exist = false) @ApiModelProperty(value = "合格率") private BigDecimal rate; @TableField(exist = false) @ApiModelProperty(value = "完成率") private BigDecimal finish; /** 用户昵称 */ //@Excel(name = "用户名称") ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java
@@ -91,7 +91,7 @@ { return BigDecimal.ZERO.doubleValue(); } return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); return b1.divide(b2, scale, RoundingMode.HALF_DOWN).doubleValue(); } /** @@ -109,6 +109,6 @@ } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = BigDecimal.ONE; return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); return b.divide(one, scale, RoundingMode.HALF_DOWN).doubleValue(); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/MultipartFileUtil.java
@@ -200,8 +200,8 @@ // FileInputStream fis = new FileInputStream(source); // fc= fis.getChannel(); // BigDecimal fileSize = new BigDecimal(fc.size()); // //size = fileSize.divide(new BigDecimal(1048576), 2, RoundingMode.HALF_UP) + "MB"; // size = fileSize.divide(new BigDecimal(1024*1024), 2, RoundingMode.HALF_UP) ; // //size = fileSize.divide(new BigDecimal(1048576), 2, RoundingMode.HALF_DOWN) + "MB"; // size = fileSize.divide(new BigDecimal(1024*1024), 2, RoundingMode.HALF_DOWN) ; // } catch (FileNotFoundException e) { // e.printStackTrace(); // } catch (IOException e) { ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java
@@ -46,6 +46,9 @@ @ApiModelProperty(value = "不合格原因名称") @TableField(exist = false) private String unqualifiedName; @ApiModelProperty(value = "申诉记录id handleType=4 5 6 返回") @TableField("appeal_id") private String appealId; @ApiModelProperty(value = "备注") @TableField("remark") ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAppealServiceImpl.java
@@ -78,7 +78,11 @@ PageInfo<AppealListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<AppealListVO> list = this.baseMapper.pageListUser(query,pageInfo); for (AppealListVO taskListVO : list) { taskListVO.setDistance(taskListVO.getDistance().divide(new BigDecimal(1000),2, RoundingMode.HALF_UP)); if (taskListVO.getDistance()!=null){ taskListVO.setDistance(taskListVO.getDistance().divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)); }else{ taskListVO.setDistance(new BigDecimal(0)); } } pageInfo.setRecords(list); return pageInfo; @@ -89,7 +93,7 @@ PageInfo<AppealListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TaskListAllVO> list = this.baseMapper.listAllTask(query,pageInfo); for (TaskListAllVO taskListAllVO : list) { taskListAllVO.setDistance(taskListAllVO.getDistance().divide(new BigDecimal(1000),2, RoundingMode.HALF_UP)); taskListAllVO.setDistance(taskListAllVO.getDistance().divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN)); if (taskListAllVO.getStatus()==1 || taskListAllVO.getStatus()==2 ){ taskListAllVO.setStatus(1); }else{ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
@@ -20,6 +20,7 @@ import com.ruoyi.system.vo.system.TaskListVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.math.RoundingMode; @@ -90,7 +91,12 @@ PageInfo<TaskUserListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TaskUserListVO> list = this.baseMapper.pageListUser(query,pageInfo); for (TaskUserListVO taskUserListVO : list) { taskUserListVO.setDistance(taskUserListVO.getDistance().divide(new BigDecimal("1000"),2, RoundingMode.HALF_UP)); if (taskUserListVO.getDistance()!=null){ taskUserListVO.setDistance(taskUserListVO.getDistance().divide(new BigDecimal("1000"),2, RoundingMode.HALF_DOWN)); }else{ taskUserListVO.setDistance(new BigDecimal("0")); } } pageInfo.setRecords(list); return pageInfo; ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskDetailVO.java
@@ -14,12 +14,16 @@ @ApiModel(value = "任务详情VO") public class TaskDetailVO extends TTask { @ApiModelProperty("位置") @ApiModelProperty("起点位置") private String locationAddress; @ApiModelProperty("结束位置") private String locationAddressEnd; @ApiModelProperty("点位类型图标") private String locationIcon; @ApiModelProperty("点位类型名称") @ApiModelProperty("点位名称") private String locationName; @ApiModelProperty("点位类型名称") private String locationTypeName; @ApiModelProperty("完成情况") private TTaskDetail taskDetail; @ApiModelProperty("操作记录") ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml
@@ -46,7 +46,7 @@ and t1.location_cleaner = #{query.locationCleaner} </if> 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/TTaskMapper.xml
@@ -65,7 +65,7 @@ select t1.*,t2.location_name as locationName,t3.location_name as locationTypeName, t2.location_address as locationAddress, t2.location_address_end as locationAddressEnd, t3.location_icon as locatioTypeIcon, t3.location_icon as locationTypeIcon, t5.clear_status as clearStatus, t4.nick_name as patrolInspectorName, t4.phonenumber as phonenumber, @@ -95,22 +95,30 @@ left join t_location t2 on t1.location_id = t2.id left join t_location_type t3 on t2.location_type = t3.id left join sys_user t4 on t1.patrol_inspector = t4.user_id LEFT JOIN ( inner JOIN ( SELECT t1.* FROM t_task_detail t1 JOIN (SELECT task_id, MAX(create_time) AS max_time left join (SELECT task_id, MAX(create_time) AS max_time FROM t_task_detail GROUP BY task_id) AS t2 ON t1.task_id = t2.task_id AND t1.create_time = t2.max_time where 1=1 <if test="query.clearStatus != null"> and t1.clear_status = #{query.clearStatus} </if> GROUP BY task_id order by create_time desc ) AS t2 ON t1.task_id = t2.task_id AND t1.create_time = t2.max_time ) t5 on t1.id = t5.task_id where 1=1 and t1.`disabled` = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} <if test="query.userId != null and query.userId != ''"> and t1.patrol_inspector = #{query.userId} </if> <if test="query.clearStatus != null and query.clearStatus == 1"> and (t1.status = 5 or t1.status = 6) </if> <if test="query.clearStatus != null and query.clearStatus == 2"> and (t1.status = 4 ) </if> <if test="query.clearStatus == null"> and (t1.status = 4 or t1.status = 5 or t1.status = 6 ) </if> <if test="query.startTime != null and query.startTime != ''"> and (t1.implement_time between #{query.startTime} and #{query.endTime}) @@ -150,6 +158,7 @@ <if test="query.startTime != null and startTime != ''"> and (t1.implement_time between #{query.startTime} and #{query.endTime}) </if> order by t1.update_time desc </select> <select id="taskProgress" resultType="com.ruoyi.system.vo.system.ProgressListVO"> select t1.*,t2.nick_name as nickName,t2.phonenumber,t3.template_name as templateName,count(*) as num2,