Pārlūkot izejas kodu

任务代码修改

yusm 2 mēneši atpakaļ
vecāks
revīzija
879cb08158

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

@@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.management.platform.entity.*;
 import com.management.platform.entity.dto.TaskDto;
-import com.management.platform.mapper.TaskExecutorMapper;
-import com.management.platform.mapper.TaskMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.WxCorpInfoMapper;
 import com.management.platform.service.InformationService;
@@ -132,6 +130,12 @@ public class TaskController {
     }
 
 
+    @RequestMapping("getTaskListByStartAndEnd")
+    public HttpRespMsg getTaskListByStartAndEnd(Integer type,String startDate,String endDate){
+        return taskService.getTaskListByStartAndEnd( type, startDate, endDate,request);
+    }
+
+
 /*    @RequestMapping("sendMsg")
     public HttpRespMsg sendMsg(){
         String token = request.getHeader("Token");

+ 2 - 4
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/dto/TaskDto.java

@@ -1,17 +1,15 @@
 package com.management.platform.entity.dto;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.management.platform.entity.Task;
-import com.management.platform.entity.TaskRepeatDesign;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.time.LocalDate;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Accessors(chain = true)
+@JsonInclude(value = JsonInclude.Include.NON_NULL)
 public class TaskDto extends Task {
     private Integer businessOpportunityId;
     private Integer customerId;

+ 27 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/vo/DailyTaskVO.java

@@ -0,0 +1,27 @@
+package com.management.platform.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.management.platform.entity.dto.TaskDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@JsonInclude(value = JsonInclude.Include.NON_NULL)
+@AllArgsConstructor
+@NoArgsConstructor
+public class DailyTaskVO {
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate currentDate;
+
+    private List<TaskDto> taskDtoList;
+}

+ 3 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/TaskMapper.java

@@ -12,6 +12,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -68,4 +69,6 @@ public interface TaskMapper extends BaseMapper<Task> {
     List<TasKVo> getListByTaskIds(@Param("taskIdArray") String[] taskIdArray);
 
     List<TasKVo> getPageListTaskByPin(TaskDto taskDto);
+
+    List<TaskDto> getTaskListByStartAndEnd(@Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate, @Param("departmentId") Integer departmentId, @Param("executor") String executor, @Param("companyId")Integer companyId);
 }

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

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

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

@@ -9,6 +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.mapper.*;
 import com.management.platform.service.*;
@@ -1466,6 +1467,92 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
         return respMsg;
     }
 
+    @Override
+    public HttpRespMsg getTaskListByStartAndEnd(Integer type, String startDate, String endDate, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = String.valueOf(request.getHeader("Token"));
+        User user = userMapper.selectById(token);
+        Integer companyId = user.getCompanyId();
+        boolean isAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部任务");
+        boolean isNotAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门任务");
+
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+        DateTimeFormatter formatterDate = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDateTime parseStartDate = LocalDateTime.parse(startDate + " 00:00", formatter);
+        LocalDateTime parseEndDate = LocalDateTime.parse(endDate + " 00:00", formatter).plusDays(1L);
+
+        Integer departmentId=null;
+        String executor=null;
+
+        if (isAll){
+            departmentId=null;
+        }
+        else if (isNotAll){
+            departmentId= user.getDepartmentId();//找出对应的部门id
+        }else {
+            executor=user.getId();
+
+        }
+        List<TaskDto> taskDtoList= taskMapper.getTaskListByStartAndEnd(parseStartDate,parseEndDate,departmentId,executor,companyId);
+
+        // 使用LinkedHashMap保持日期顺序
+        Map<LocalDate, List<TaskDto>> dailyTasks = new LinkedHashMap<>();
+
+        // 生成从startDate到endDate的所有日期,并初始化空列表
+        LocalDate parseStart = LocalDate.parse(startDate, formatterDate);
+        LocalDate parseEnd = LocalDate.parse(endDate, formatterDate);
+        LocalDate currentDate = parseStart;
+        while (!currentDate.isAfter(parseEnd)) {
+            dailyTasks.put(currentDate, new ArrayList<>());
+            currentDate = currentDate.plusDays(1);
+        }
+
+// 遍历任务,填充到对应的日期
+        for (TaskDto task : taskDtoList) {
+            // 根据实际字段获取任务日期,例如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());
+        msg.setData(result);
+        return msg;
+
+    }
+
     public void updateTaskRepeatConfigure(Task task){
         task.setRepeatType(null).setRepeatEndNever(null).setRepeatEndCount(null)
                 .setRepeatEndDate(null).setRepeatDesignDay(null).setRepeatDesignSameday(null)

+ 72 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/TaskMapper.xml

@@ -414,11 +414,34 @@
             <if test=" executorName!= null and executorName != '' ">
                 AND te.executor_name LIKE CONCAT('%', #{executorName}, '%')
             </if>
-            <if test=" startDate!= null">
+            <!--<if test=" startDate!= null">
                 AND task.start_date &gt; #{startDate}
             </if>
             <if test=" endDate!= null">
                 AND task.end_date &lt; #{endDate}
+            </if>-->
+            <if test=" startDate!= null and endDate!= null">
+                AND
+                (
+                    (
+                        (task.start_date IS NULL OR task.start_date &lt;= #{startDate}) AND (task.end_date &gt;= #{startDate} AND task.end_date &lt;= #{endDate})
+                    )
+                OR
+                    (
+                        (task.end_date IS NULL OR task.end_date &gt;= #{endDate}) AND (task.start_date &gt;= #{startDate} AND task.start_date &lt;= #{endDate})
+                    )
+                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}
+                    )
+                )
+            </if>
+            <if test=" startDate != null and endDate == null">
+                AND (task.end_date IS NOT NULL and task.end_date &gt;= #{startDate})
+            </if>
+            <if test=" startDate == null and endDate != null">
+                AND (task.start_date IS NOT NULL and task.start_date &lt;= #{endDate})
             </if>
             <if test=" companyId!= null ">
                 AND task.company_id = #{companyId}
@@ -441,6 +464,54 @@
         </if>
 
     </select>
+    <select id="getTaskListByStartAndEnd" resultType="com.management.platform.entity.dto.TaskDto">
+        select DISTINCT task.id,task.task_name,task.start_date,task.end_date
+        from task
+        left join  custom on task.custom_id=custom.id
+        left join  business_opportunity on task.business_opportunity_id=business_opportunity.id
+        left join  `sales_order` on task.order_id=`sales_order`.id
+        left join  clue on task.clue_id=clue.id
+        left join  contacts on task.contacts_id=contacts.id
+        <if test=" departmentId!= null " >
+            inner join task_executor on task.id=task_executor.task_id
+        </if>
+        <if test=" executor!= null and executor != '' " >
+            inner join task_executor on task.id=task_executor.task_id
+        </if>
+        <where>
+            and 1=1 and task.is_delete=0
+            <if test=" startDate!= null and endDate!= null">
+                AND
+                (
+                (
+                (task.start_date IS NULL OR task.start_date &lt;= #{startDate}) AND (task.end_date &gt; #{startDate} AND task.end_date &lt; #{endDate})
+                )
+                OR
+                (
+                (task.end_date IS NULL OR task.end_date &gt; #{endDate}) AND (task.start_date &gt;= #{startDate} AND task.start_date &lt; #{endDate})
+                )
+                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}
+                )
+                )
+            </if>
+            <if test=" companyId!= null ">
+                AND task.company_id = #{companyId}
+            </if>
+            <if test=" departmentId!= null " >
+                AND task_executor.task_id in ( SELECT DISTINCT te.task_id FROM task_executor te
+                LEFT JOIN `user` u ON u.id=te.executor_id
+                where u.department_id = #{departmentId} )
+            </if>
+            <if test=" executor!= null and executor != '' " >
+                AND task_executor.task_id in ( SELECT DISTINCT te.task_id FROM task_executor te
+                where te.executor_id= #{executor} or te.executor_id is null )
+            </if>
+        </where>
+        order by task.create_date desc
+    </select>
 
     <update id="updateRepeatConfig">
         update task

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

@@ -1319,8 +1319,8 @@ public class ProjectController {
 
     //导出FTE报表
     @RequestMapping("/exportFTEData")
-    public HttpRespMsg exportFTEData(String monthStart,String monthEnd,String area,HttpServletRequest request){
-        return projectService.exportFTEData(monthStart,monthEnd,area,request);
+    public HttpRespMsg exportFTEData(String monthStart,String monthEnd,String area,Integer departmentId ,HttpServletRequest request){
+        return projectService.exportFTEData(monthStart,monthEnd,area,departmentId,request);
     }
 
     @RequestMapping("/syncProjectWithFanwei")

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://1.94.62.58:17089/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://1.94.62.58:17089/man_mld?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: P011430@Huoshi*
 #    url: jdbc:mysql://47.100.37.243:7644/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true