From b2e3d6532dbbb3929e01a598dcef7eb07f39b826 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 11 七月 2025 09:30:27 +0800
Subject: [PATCH] 保洁巡检本周代码
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/MultipartFileUtil.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java | 49 ++++++++-
ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskDetailVO.java | 8 +
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java | 1
ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml | 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLocationController.java | 3
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java | 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java | 31 +++++-
ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml | 25 +++-
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java | 90 ++++++++++++++---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java | 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAppealServiceImpl.java | 8 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java | 8 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java | 4
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java | 7 +
ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java | 4
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppealController.java | 30 +++++
ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java | 3
20 files changed, 234 insertions(+), 61 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
index 2585930..f57fade 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
+++ b/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);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
index b0570e3..f6d0d24 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
+++ b/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());
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppealController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppealController.java
index b4a6ab0..4fe08ac 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppealController.java
+++ b/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();
}
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLocationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLocationController.java
index 5c0dab0..5b70801 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLocationController.java
+++ b/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();
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
index 5bcbb49..fa09d0b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
+++ b/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);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
index cd7f8c0..f45740d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
+++ b/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);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
index 52100ba..767d5fc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
+++ b/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')")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
index f69a501..cbaddef 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
+++ b/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);
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
index ac756dc..fdb22cd 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
+++ b/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<>();
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java
index 8bb4677..f7b1ff1 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TTaskDetailController.java
+++ b/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();
}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
index 77c613d..117a79e 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -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());
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 449b5a2..7034d98 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/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 = "用户名称")
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java
index b6326c2..4e81d8e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java
+++ b/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();
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/MultipartFileUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/MultipartFileUtil.java
index 3759d6a..31d4507 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/MultipartFileUtil.java
+++ b/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) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java
index e9b0864..ae180eb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTaskDetail.java
+++ b/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")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAppealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAppealServiceImpl.java
index c40fd30..8c12ffc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAppealServiceImpl.java
+++ b/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{
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
index 833fdff..ae738b2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
+++ b/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;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskDetailVO.java
index 2be789e..652a3a4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskDetailVO.java
+++ b/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("操作记录")
diff --git a/ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml
index f4b5b44..7e839ba 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TLocationMapper.xml
+++ b/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>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
index 8bb2557..b3120d7 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
+++ b/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,
--
Gitblit v1.7.1