|
@@ -1,6 +1,7 @@
|
|
|
package com.management.platform.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.management.platform.entity.*;
|
|
@@ -9,16 +10,20 @@ import com.management.platform.entity.dto.TaskDto;
|
|
|
import com.management.platform.entity.vo.*;
|
|
|
import com.management.platform.mapper.*;
|
|
|
import com.management.platform.service.SysFunctionService;
|
|
|
+import com.management.platform.service.TaskRemindService;
|
|
|
import com.management.platform.service.VisitPlanService;
|
|
|
import com.management.platform.util.DateTimeUtil;
|
|
|
import com.management.platform.util.HttpRespMsg;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.regex.Pattern;
|
|
@@ -65,6 +70,8 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
|
|
|
private TaskLogMapper taskLogMapper;
|
|
|
@Resource
|
|
|
private TaskExecutorMapper taskExecutorMapper;
|
|
|
+ @Resource
|
|
|
+ private TaskRemindService taskRemindService;
|
|
|
|
|
|
@Override
|
|
|
public HttpRespMsg addOrUpdateVisitPlan(VisitPlan visitPlan, HttpServletRequest request) {
|
|
@@ -389,6 +396,38 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
|
|
|
LocalDateTime startDateParse = LocalDateTime.parse(calenderDate + " 00:00", formatter);
|
|
|
LocalDateTime endDateParse = startDateParse.plusDays(1L);
|
|
|
List<TaskDto> taskList = taskMapper.getTaskListByStartAndEnd(startDateParse, endDateParse, departmentId, executor, companyId);
|
|
|
+ //将有重复提醒的任务也返回
|
|
|
+ List<TaskRemind> remindList = taskRemindService.list(new QueryWrapper<TaskRemind>()
|
|
|
+ .between("remind_date", startDateParse, endDateParse)
|
|
|
+ .eq(StringUtils.isNotEmpty(executor),"executor_id",executor)
|
|
|
+ .eq(departmentId!=null,"dept",departmentId)
|
|
|
+ .groupBy("task_id", "remind_date"));
|
|
|
+ if (!remindList.isEmpty()) {
|
|
|
+ List<Integer> collect = remindList.stream()
|
|
|
+ .distinct()
|
|
|
+ .map(TaskRemind::getTaskId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<TaskDto> taskDtoListCollect = taskMapper.selectListByIds(collect);
|
|
|
+
|
|
|
+ ArrayList<TaskDto> taskDtos = new ArrayList<>();
|
|
|
+ for (TaskRemind remind : remindList) {
|
|
|
+ TaskDto taskDto = new TaskDto();
|
|
|
+ Optional<TaskDto> first = taskDtoListCollect.stream().filter(t -> t.getId().equals(remind.getTaskId())).findFirst();
|
|
|
+ if (first.isPresent()){
|
|
|
+ BeanUtils.copyProperties(first.get(),taskDto);
|
|
|
+ LocalDateTime remindDate = remind.getRemindDate();
|
|
|
+ taskDto.setStartDate(remindDate);
|
|
|
+ LocalDate date = remindDate.toLocalDate(); // 获取日期部分
|
|
|
+ LocalDateTime eveningNine = LocalDateTime.of(date, LocalTime.of(21, 0));
|
|
|
+ taskDto.setEndDate(eveningNine);
|
|
|
+ taskDto.setId(null);
|
|
|
+ taskDto.setTaskName(taskDto.getTaskName()+"(重复提醒)");
|
|
|
+ taskDtos.add(taskDto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ taskList.addAll(taskDtos);
|
|
|
+ }
|
|
|
List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new LambdaQueryWrapper<TaskExecutor>().eq(TaskExecutor::getCompanyId,user.getCompanyId()));
|
|
|
List<TaskLog> taskLogList = taskLogMapper.selectList(new LambdaQueryWrapper<TaskLog>().eq(TaskLog::getCompanyId,user.getCompanyId()).orderByDesc(TaskLog::getModTime));
|
|
|
|
|
@@ -492,6 +531,38 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
|
|
|
LocalDateTime parseStartDate = startDate.atStartOfDay(); // 获取开始时间
|
|
|
LocalDateTime parseEndDate = parseStartDate.plusMonths(1L);// 获取结束时间
|
|
|
List<TaskDto> taskList = taskMapper.getTaskListByStartAndEnd(parseStartDate, parseEndDate, departmentId, executor, companyId);
|
|
|
+ //将有重复提醒的任务也返回
|
|
|
+ List<TaskRemind> remindList = taskRemindService.list(new QueryWrapper<TaskRemind>()
|
|
|
+ .between("remind_date", parseStartDate, parseEndDate)
|
|
|
+ .eq(StringUtils.isNotEmpty(executor),"executor_id",executor)
|
|
|
+ .eq(departmentId!=null,"dept",departmentId)
|
|
|
+ .groupBy("task_id", "remind_date"));
|
|
|
+ if (!remindList.isEmpty()) {
|
|
|
+ List<Integer> collect = remindList.stream()
|
|
|
+ .distinct()
|
|
|
+ .map(TaskRemind::getTaskId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<TaskDto> taskDtoListCollect = taskMapper.selectListByIds(collect);
|
|
|
+
|
|
|
+ ArrayList<TaskDto> taskDtos = new ArrayList<>();
|
|
|
+ for (TaskRemind remind : remindList) {
|
|
|
+ TaskDto taskDto = new TaskDto();
|
|
|
+ Optional<TaskDto> first = taskDtoListCollect.stream().filter(t -> t.getId().equals(remind.getTaskId())).findFirst();
|
|
|
+ if (first.isPresent()){
|
|
|
+ BeanUtils.copyProperties(first.get(),taskDto);
|
|
|
+ LocalDateTime remindDate = remind.getRemindDate();
|
|
|
+ taskDto.setStartDate(remindDate);
|
|
|
+ LocalDate date = remindDate.toLocalDate(); // 获取日期部分
|
|
|
+ LocalDateTime eveningNine = LocalDateTime.of(date, LocalTime.of(21, 0));
|
|
|
+ taskDto.setEndDate(eveningNine);
|
|
|
+ taskDto.setId(null);
|
|
|
+ taskDto.setTaskName(taskDto.getTaskName()+"(重复提醒)");
|
|
|
+ taskDtos.add(taskDto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ taskList.addAll(taskDtos);
|
|
|
+ }
|
|
|
List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new LambdaQueryWrapper<TaskExecutor>().eq(TaskExecutor::getCompanyId,user.getCompanyId()));
|
|
|
List<TaskLog> taskLogList = taskLogMapper.selectList(new LambdaQueryWrapper<TaskLog>().eq(TaskLog::getCompanyId,user.getCompanyId()).orderByDesc(TaskLog::getModTime));
|
|
|
|