|
|
|
@ -62,6 +62,7 @@ import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; |
|
|
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
|
import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.*; |
|
|
|
|
|
|
|
|
@ -141,7 +142,7 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
// 校验存在
|
|
|
|
|
TaskDO taskDO = this.validateTaskExists(id); |
|
|
|
|
// 删除
|
|
|
|
|
taskDO.setPretendDelete(true); |
|
|
|
|
taskDO.setStatus(TaskStatus.END); |
|
|
|
|
taskMapper.updateById(taskDO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -204,7 +205,6 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
.betweenIfPresent(TaskDO::getPlanEndTime, pageReqVO.getBeginPlanEndTime(), pageReqVO.getEndPlanEndTime()) |
|
|
|
|
.eqIfPresent(TaskDO::getWeight, pageReqVO.getWeight()) |
|
|
|
|
.betweenIfPresent(TaskDO::getCreateTime, pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime()) |
|
|
|
|
.eqIfPresent(TaskDO::getPretendDelete, pageReqVO.getPretendDelete()) |
|
|
|
|
.eqIfPresent(TaskDO::getStatus, pageReqVO.getStatus()) |
|
|
|
|
.orderByDesc(TaskDO::getId); |
|
|
|
|
|
|
|
|
@ -220,14 +220,50 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public PageResult<TaskAssemblyDTO> getAdminTaskPage(TaskPageReqVO pageReqVO){ |
|
|
|
|
PageResult<TaskDO> taskPage = taskMapper.selectPage(pageReqVO); |
|
|
|
|
public PageResult<TaskAssemblyDTO> getAdminTaskPage(TaskPageReqVO reqVO){ |
|
|
|
|
LambdaQueryWrapperX<TaskDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<TaskDO>(); |
|
|
|
|
|
|
|
|
|
//搜索区域
|
|
|
|
|
if (ObjectUtil.isNotEmpty(reqVO.getAreaId())){ |
|
|
|
|
lambdaQueryWrapperX.apply("JSON_CONTAINS(areas, '"+ reqVO.getAreaId()+"')"); |
|
|
|
|
} |
|
|
|
|
//搜索资源
|
|
|
|
|
if (ObjectUtil.isNotEmpty(reqVO.getResourceId())){ |
|
|
|
|
lambdaQueryWrapperX.apply("JSON_CONTAINS(resources, JSON_OBJECT('resourceId'," +reqVO.getResourceId()+"))"); |
|
|
|
|
} |
|
|
|
|
//搜索执行人
|
|
|
|
|
if (ObjectUtil.isNotEmpty(reqVO.getExecutorName())){ |
|
|
|
|
lambdaQueryWrapperX.apply("JSON_CONTAINS(executor_person, '"+ reqVO.getExecutorName()+"')"); |
|
|
|
|
} |
|
|
|
|
//自己创建和负责的任务
|
|
|
|
|
if (ObjectUtil.isNotEmpty(reqVO.getMyTask()) && reqVO.getMyTask()){ |
|
|
|
|
CpUserDO user = cpUserMapper.selectOne(CpUserDO::getUserId, getLoginUser().getUsername()); |
|
|
|
|
if (ObjectUtil.isNotEmpty(user)){ |
|
|
|
|
//查看我负责或创建的任务
|
|
|
|
|
lambdaQueryWrapperX.apply(" ( main_person = "+ user.getId() +" or creator = " + getLoginUserId() +")"); |
|
|
|
|
} |
|
|
|
|
lambdaQueryWrapperX.ne(TaskDO::getStatus, TaskStatus.END.getCode()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
lambdaQueryWrapperX.eqIfPresent(TaskDO::getProjectId, reqVO.getProjectId()) |
|
|
|
|
.eqIfPresent(TaskDO::getCropId, reqVO.getCropId()) |
|
|
|
|
.eqIfPresent(TaskDO::getTaskCateId, reqVO.getTaskCateId()) |
|
|
|
|
.eqIfPresent(TaskDO::getTaskCateName, reqVO.getTaskCateName()) |
|
|
|
|
.eqIfPresent(TaskDO::getDraft, reqVO.getDraft()) |
|
|
|
|
.betweenIfPresent(TaskDO::getPlanStartTime, reqVO.getBeginPlanStartTime(), reqVO.getEndPlanStartTime()) |
|
|
|
|
.betweenIfPresent(TaskDO::getPlanEndTime, reqVO.getBeginPlanEndTime(), reqVO.getEndPlanEndTime()) |
|
|
|
|
.eqIfPresent(TaskDO::getWeight, reqVO.getWeight()) |
|
|
|
|
.betweenIfPresent(TaskDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) |
|
|
|
|
.eqIfPresent(TaskDO::getStatus, reqVO.getStatus()) |
|
|
|
|
.eqIfPresent(TaskDO::getMainPerson, reqVO.getMainPerson()) |
|
|
|
|
.orderByDesc(TaskDO::getId); |
|
|
|
|
|
|
|
|
|
PageResult<TaskDO> taskPage = taskMapper.selectPage(reqVO, lambdaQueryWrapperX); |
|
|
|
|
Map<Long, TaskAssemblyDTO> map = this.taskAssemble(taskPage.getList()); |
|
|
|
|
List<TaskAssemblyDTO> list = new ArrayList<>(map.values()).stream().sorted(Comparator.comparing(TaskAssemblyDTO::getId).reversed()).collect(Collectors.toList()); |
|
|
|
|
PageResult<TaskAssemblyDTO> page = new PageResult<>(); |
|
|
|
|
page.setList(list); |
|
|
|
|
page.setTotal(taskPage.getTotal()); |
|
|
|
|
|
|
|
|
|
return page; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -459,16 +495,16 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
if (ObjectUtil.isNotEmpty(userId)){ |
|
|
|
|
//我创建
|
|
|
|
|
taskSummaryDTO.setCreateCount(taskMapper.selectCount( |
|
|
|
|
new LambdaQueryWrapper<TaskDO>().eq(TaskDO::getCreator, userId).eq(TaskDO::getDraft, false).eq(TaskDO::getPretendDelete, false)).intValue()); |
|
|
|
|
new LambdaQueryWrapper<TaskDO>().eq(TaskDO::getCreator, userId).eq(TaskDO::getDraft, false).ne(TaskDO::getStatus, TaskStatus.END.getCode())).intValue()); |
|
|
|
|
AdminUserDO adminUser = adminUserMapper.selectOne(AdminUserDO::getId, userId); |
|
|
|
|
CpUserDO cpUser = cpUserMapper.selectOne(CpUserDO::getUserId, adminUser.getCpUserId()); |
|
|
|
|
//我负责的
|
|
|
|
|
taskSummaryDTO.setResponsibleCount(taskMapper.selectCount( |
|
|
|
|
new LambdaQueryWrapper<TaskDO>().eq(TaskDO::getMainPerson, cpUser.getId()).eq(TaskDO::getDraft, false).eq(TaskDO::getPretendDelete, false)).intValue()); |
|
|
|
|
new LambdaQueryWrapper<TaskDO>().eq(TaskDO::getMainPerson, cpUser.getId()).eq(TaskDO::getDraft, false).ne(TaskDO::getStatus, TaskStatus.END.getCode())).intValue()); |
|
|
|
|
//我参与的
|
|
|
|
|
//queryWrapperX.apply(" ((JSON_CONTAINS(members, '"+ user.getId()+"') or creator = " + getLoginUserId() +"))");
|
|
|
|
|
taskSummaryDTO.setJoinCount(taskMapper.selectCount( |
|
|
|
|
new LambdaQueryWrapper<TaskDO>().eq(TaskDO::getDraft, false).eq(TaskDO::getPretendDelete, false).apply(("JSON_CONTAINS(executor_person, '"+ cpUser.getId()+"')"))).intValue()); |
|
|
|
|
new LambdaQueryWrapper<TaskDO>().eq(TaskDO::getDraft, false).ne(TaskDO::getStatus, TaskStatus.END.getCode()).apply(("JSON_CONTAINS(executor_person, '"+ cpUser.getId()+"')"))).intValue()); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -479,8 +515,15 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
public List<Map<String, String>> whatDayHaveTask(Long projectId){ |
|
|
|
|
LambdaQueryWrapperX<TaskDO> queryWrapperX = new LambdaQueryWrapperX<>(); |
|
|
|
|
queryWrapperX.ne(TaskDO::getDraft, true); |
|
|
|
|
queryWrapperX.ne(TaskDO::getPretendDelete, true); |
|
|
|
|
queryWrapperX.ne(TaskDO::getStatus, TaskStatus.END.getCode()); |
|
|
|
|
queryWrapperX.eqIfPresent(TaskDO::getProjectId, projectId); |
|
|
|
|
|
|
|
|
|
CpUserDO user = cpUserMapper.selectOne(CpUserDO::getUserId, getLoginUser().getUsername()); |
|
|
|
|
if (ObjectUtil.isNotEmpty(user)){ |
|
|
|
|
//查看我负责或创建的任务
|
|
|
|
|
queryWrapperX.apply(" ( main_person = "+ user.getId() +" or creator = " + getLoginUserId() +")"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<TaskDO> taskList = taskMapper.selectList(queryWrapperX); |
|
|
|
|
List<Map<String, String>> list = new ArrayList<>(); |
|
|
|
|
if (ObjectUtil.isEmpty(taskList)){ |
|
|
|
@ -573,6 +616,10 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
* @param task 任务实体 |
|
|
|
|
*/ |
|
|
|
|
public void checkStateByExecutionTime(TaskDO task){ |
|
|
|
|
if (ObjectUtil.isNotEmpty(task.getStatus()) && task.getStatus().equals(TaskStatus.END)){ |
|
|
|
|
task.setStatus(TaskStatus.END); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (task.getPlanStartTime() != null){ |
|
|
|
|
FarmTimeEnum timeEnum = FarmTimeUtil.checkingDate(task.getPlanStartTime()); |
|
|
|
|
if (timeEnum.equals(FarmTimeEnum.BEFORE_TODAY)){ |
|
|
|
@ -596,7 +643,7 @@ public class TaskServiceImpl implements TaskService {
|
|
|
|
|
Boolean oldIgnore = TenantContextHolder.isIgnore(); |
|
|
|
|
try { |
|
|
|
|
TenantContextHolder.setIgnore(true); |
|
|
|
|
List<TaskDO> taskList = taskMapper.selectList(Wrappers.<TaskDO>lambdaQuery().ne(TaskDO::getDraft, true).eq(TaskDO::getPretendDelete, false) |
|
|
|
|
List<TaskDO> taskList = taskMapper.selectList(Wrappers.<TaskDO>lambdaQuery().ne(TaskDO::getDraft, true).ne(TaskDO::getStatus, TaskStatus.END.getCode()) |
|
|
|
|
.in(TaskDO::getStatus, TaskStatus.PLAN.getCode(), TaskStatus.READY.getCode()) |
|
|
|
|
.like(TaskDO::getPlanStartTime, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))); |
|
|
|
|
if (taskList.size() != 0){ |
|
|
|
|