yusm 3 місяців тому
батько
коміт
bd34fd910c

+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/TaskController.java

@@ -131,8 +131,8 @@ public class TaskController {
 
 
     @RequestMapping("getTaskListByStartAndEnd")
-    public HttpRespMsg getTaskListByStartAndEnd(Integer type,String startDate,String endDate){
-        return taskService.getTaskListByStartAndEnd( type, startDate, endDate,request);
+    public HttpRespMsg getTaskListByStartAndEnd(String startDate,String endDate){
+        return taskService.getTaskListByStartAndEnd( startDate, endDate,request);
     }
 
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/TaskService.java

@@ -43,5 +43,5 @@ public interface TaskService extends IService<Task> {
 
     HttpRespMsg getTaskDetail(Integer id, HttpServletRequest request);
 
-    HttpRespMsg getTaskListByStartAndEnd(Integer type, String startDate, String endDate, HttpServletRequest request);
+    HttpRespMsg getTaskListByStartAndEnd(String startDate, String endDate, HttpServletRequest request);
 }

+ 19 - 6
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -9,9 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.*;
 import com.management.platform.entity.dto.TaskDto;
-import com.management.platform.entity.vo.DailyTaskVO;
 import com.management.platform.entity.vo.TasKVo;
-import com.management.platform.entity.vo.TimeTaskVO;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.util.ExcelUtil;
@@ -132,6 +130,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         HttpRespMsg httpRespMsg = new HttpRespMsg();
 
         String userId = String.valueOf(request.getHeader("Token"));
+        if (taskDto.getStartDate()!=null && taskDto.getEndDate()!=null) {
+            if (taskDto.getStartDate().isAfter(taskDto.getEndDate())) {
+                httpRespMsg.setError("任务是结束时间不能早于开始时间!");
+                return httpRespMsg;
+            }
+        }
         User user = userMapper.selectById(userId);
         if (user==null){
             httpRespMsg.setError("无法获取创建人信息!");
@@ -280,6 +284,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     public HttpRespMsg updateTask(TaskDto taskDto, HttpServletRequest request) {
         HttpRespMsg msg=new HttpRespMsg();
         String token = String.valueOf(request.getHeader("Token"));
+        if (taskDto.getStartDate()!=null && taskDto.getEndDate()!=null) {
+            if (taskDto.getStartDate().isAfter(taskDto.getEndDate())) {
+                msg.setError("任务是结束时间不能早于开始时间!");
+                return msg;
+            }
+        }
         User user = userMapper.selectById(token);
         if (user==null){
             msg.setError("无法获取创建人信息!");
@@ -1469,7 +1479,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     }
 
     @Override
-    public HttpRespMsg getTaskListByStartAndEnd(Integer type, String startDate, String endDate, HttpServletRequest request) {
+    public HttpRespMsg getTaskListByStartAndEnd( String startDate, String endDate, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = String.valueOf(request.getHeader("Token"));
         User user = userMapper.selectById(token);
@@ -1498,7 +1508,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         }
         List<TaskDto> taskDtoList= taskMapper.getTaskListByStartAndEnd(parseStartDate,parseEndDate,departmentId,executor,companyId);
 
-        if (type==1||type==2) {
+        /*if (type==1||type==2) {
             // 使用LinkedHashMap保持日期顺序
             Map<LocalDate, List<TaskDto>> dailyTasks = new LinkedHashMap<>();
 
@@ -1552,7 +1562,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                     .map(entry -> new DailyTaskVO(entry.getKey(), entry.getValue()))
                     .collect(Collectors.toList());
             msg.setData(result);
-        } else {
+        }
+        else {
             // 使用LinkedHashMap保持日期顺序
             Map<LocalTime, List<TaskDto>> dailyTasks = new LinkedHashMap<>();
 
@@ -1607,7 +1618,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                     .map(entry -> new TimeTaskVO(entry.getKey(), entry.getValue()))
                     .collect(Collectors.toList());
             msg.setData(result);
-        }
+        }*/
+
+        msg.setData(taskDtoList);
         return msg;
 
     }

+ 122 - 5
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/VisitPlanServiceImpl.java

@@ -5,10 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.*;
 import com.management.platform.entity.dto.QueryVisitPlanDTO;
+import com.management.platform.entity.dto.TaskDto;
+import com.management.platform.entity.vo.DailyTaskVO;
 import com.management.platform.entity.vo.MonthActivePlanVO;
 import com.management.platform.entity.vo.VisitPlanDetailVO;
 import com.management.platform.entity.vo.VisitPlanVO;
 import com.management.platform.mapper.*;
+import com.management.platform.service.SysFunctionService;
 import com.management.platform.service.VisitPlanService;
 import com.management.platform.util.DateTimeUtil;
 import com.management.platform.util.HttpRespMsg;
@@ -17,10 +20,10 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -47,6 +50,12 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
     @Resource
     private ContactsMapper contactsMapper;
 
+    @Resource
+    private SysFunctionService sysFunctionService;
+
+    @Resource
+    private TaskMapper taskMapper;
+
     @Override
     public HttpRespMsg addOrUpdateVisitPlan(VisitPlan visitPlan, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
@@ -350,7 +359,33 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
 //        IPage<VisitPlanVO> resPage = visitPlanMapper.getPageVisitPlan(page,query);
         List<VisitPlanVO> resPage = visitPlanMapper.getListVisitPlan(query);
 
-        httpRespMsg.setData(resPage);
+        Integer companyId = user.getCompanyId();
+        boolean isAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部任务");
+        boolean isNotAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门任务");
+        Integer departmentId=null;
+        String executor=null;
+
+        if (isAll){
+            departmentId=null;
+        }
+        else if (isNotAll){
+            departmentId= user.getDepartmentId();//找出对应的部门id
+        }else {
+            executor=user.getId();
+
+        }
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+        LocalDateTime startDateParse = LocalDateTime.parse(calenderDate + " 00:00", formatter);
+        LocalDateTime endDateParse = startDateParse.plusDays(1L);
+        List<TaskDto> taskList = taskMapper.getTaskListByStartAndEnd(startDateParse, endDateParse, departmentId, executor, companyId);
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("planList",resPage);
+        map.put("taskList",taskList);
+
+        httpRespMsg.setData(map);
+
         return httpRespMsg;
     }
 
@@ -380,7 +415,89 @@ public class VisitPlanServiceImpl extends ServiceImpl<VisitPlanMapper, VisitPlan
             return httpRespMsg;
         }
         List<MonthActivePlanVO> list = visitPlanMapper.getMonthActivePlan(user.getId(),ym);
-        httpRespMsg.setData(list);
+
+        Integer companyId = user.getCompanyId();
+        boolean isAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部任务");
+        boolean isNotAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门任务");
+        Integer departmentId=null;
+        String executor=null;
+
+        if (isAll){
+            departmentId=null;
+        }
+        else if (isNotAll){
+            departmentId= user.getDepartmentId();//找出对应的部门id
+        }else {
+            executor=user.getId();
+
+        }
+
+        // 解析为 LocalDate,获取该月的第一天
+        LocalDate startDate = LocalDate.parse(ym + "-01"); // 加上-01表示第一天
+        // 转换为 LocalDateTime
+        LocalDateTime parseStartDate = startDate.atStartOfDay(); // 获取开始时间
+        LocalDateTime parseEndDate = parseStartDate.plusMonths(1L);// 获取结束时间
+        List<TaskDto> taskList = taskMapper.getTaskListByStartAndEnd(parseStartDate, parseEndDate, departmentId, executor, companyId);
+
+        Map<LocalDate, List<TaskDto>> dailyTasks = new LinkedHashMap<>();
+
+        // 生成从startDate到endDate的所有日期,并初始化空列表
+
+        LocalDate parseEnd = startDate.plusMonths(1L).plusDays(-1L);
+        LocalDate currentDate = startDate;
+        while (!currentDate.isAfter(parseEnd)) {
+            dailyTasks.put(currentDate, new ArrayList<>());
+            currentDate = currentDate.plusDays(1);
+        }
+
+        // 遍历任务,填充到对应的日期
+        for (TaskDto task : taskList) {
+            // 根据实际字段获取任务日期,例如getExecuteDate()
+            LocalDateTime taskStartDate = task.getStartDate();
+            LocalDateTime taskEndDate = task.getEndDate();
+            if (taskStartDate != null && taskEndDate != null) {
+                LocalDate task_start = LocalDate.from(taskStartDate);
+                LocalDate task_end = LocalDate.from(taskEndDate);
+                for (Map.Entry<LocalDate, List<TaskDto>> entry : dailyTasks.entrySet()) {
+                    LocalDate date = entry.getKey(); // 获取日期
+                    List<TaskDto> tasks = entry.getValue(); // 获取任务列表
+                    if (date.isAfter(task_start) && date.isBefore(task_end) || date.isEqual(task_start)) {
+                        tasks.add(task);
+                    }
+                }
+            } else if (taskStartDate == null && taskEndDate != null) {
+                LocalDate task_end = LocalDate.from(taskEndDate);
+                for (Map.Entry<LocalDate, List<TaskDto>> entry : dailyTasks.entrySet()) {
+                    LocalDate date = entry.getKey(); // 获取日期
+                    List<TaskDto> tasks = entry.getValue(); // 获取任务列表
+                    if (date.isEqual(task_end)) {
+                        tasks.add(task);
+                    }
+                }
+            } else if (taskStartDate != null) {
+                LocalDate task_start = LocalDate.from(taskStartDate);
+                for (Map.Entry<LocalDate, List<TaskDto>> entry : dailyTasks.entrySet()) {
+                    LocalDate date = entry.getKey(); // 获取日期
+                    List<TaskDto> tasks = entry.getValue(); // 获取任务列表
+                    if (date.isEqual(task_start)) {
+                        tasks.add(task);
+                    }
+                }
+            }
+
+        }
+        //自定义DTO类
+        List<DailyTaskVO> result = dailyTasks.entrySet().stream()
+                .map(entry -> new DailyTaskVO(entry.getKey(), entry.getValue()))
+                .collect(Collectors.toList());
+
+        List<DailyTaskVO> collect = result.stream().filter(r -> !r.getTaskDtoList().isEmpty()).collect(Collectors.toList());
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("planList",list);
+        map.put("taskList",collect);
+
+        httpRespMsg.setData(map);
         return httpRespMsg;
     }
 }

+ 7 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/TaskMapper.xml

@@ -465,7 +465,7 @@
 
     </select>
     <select id="getTaskListByStartAndEnd" resultType="com.management.platform.entity.dto.TaskDto">
-        select DISTINCT task.id,task.task_name,task.start_date,task.end_date
+        select DISTINCT task.id,task.task_name,task.start_date,task.end_date,task.status,task.priority
         from task
         left join  custom on task.custom_id=custom.id
         left join  business_opportunity on task.business_opportunity_id=business_opportunity.id
@@ -484,7 +484,7 @@
                 AND
                 (
                 (
-                (task.start_date IS NULL OR task.start_date &lt;= #{startDate}) AND (task.end_date &gt; #{startDate} AND task.end_date &lt; #{endDate})
+                (task.start_date IS NULL OR task.start_date &lt;= #{startDate}) AND (task.end_date &gt;= #{startDate} AND task.end_date &lt;= #{endDate})
                 )
                 OR
                 (
@@ -493,7 +493,11 @@
                 OR
                 (
                 task.start_date IS NOT NULL AND task.end_date IS NOT NULL AND task.start_date &gt;= #{startDate}
-                AND task.start_date &lt; #{endDate} AND task.end_date &gt; #{startDate} AND task.end_date &lt; #{endDate}
+                AND task.start_date &lt; #{endDate} AND task.end_date &gt;= #{startDate} AND task.end_date &lt; #{endDate}
+                )
+                OR
+                (
+                task.start_date IS NOT NULL AND task.end_date IS NOT NULL AND task.start_date &lt;= #{startDate} AND task.end_date &gt; #{endDate}
                 )
                 )
             </if>