yusm 1 місяць тому
батько
коміт
5f15291657

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

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

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

@@ -1018,6 +1018,7 @@ public class TaskController {
                     if(first.isPresent()){
                         e.setServiceName(first.get().getServiceName());
                         e.setServiceCode(first.get().getServiceCode());
+                        e.setId(first.get().getId());
                     }
                 }
             });
@@ -1028,6 +1029,7 @@ public class TaskController {
                     if(first.isPresent()){
                         e.setServiceName(first.get().getServiceName());
                         e.setServiceCode(first.get().getServiceCode());
+                        e.setId(first.get().getId());
                     }
                 }
             });

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GanttDataItem.java

@@ -1,10 +1,10 @@
 package com.management.platform.entity.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
+
 import lombok.Data;
 
 import java.util.List;
-import java.util.logging.Level;
+
 
 @Data
 public class GanttDataItem {
@@ -30,4 +30,6 @@ public class GanttDataItem {
     private String checkFirstId;
     private String checkSecondId;
     private Integer taskStatus;
+    private Integer taskId;
+    private Integer leaderOrManager;
 }

+ 3 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -75,12 +75,12 @@ public interface ProjectMapper extends BaseMapper<Project> {
                                 @Param("endDate") String endDate, @Param("companyId") Integer companyId);
 
     List<Map> getTaskPlanByGeneralMemb(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId);
+                                @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId,@Param("targetUserId") String targetUserId);
 
     List<Map> getTaskPlanByProManager(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId);
+                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,@Param("targetUserId") String targetUserId);
     List<Map> getTaskPlanByAreaManager(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId);
+                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,@Param("targetUserId") String targetUserId);
 
     List<Map> getTaskPlanByProjectGeneralMemb(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                    @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId);

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

@@ -329,5 +329,5 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getProjectTaskPlanFTEData(Integer pageIndex, Integer pageSize, String monthStart, String monthEnd, String area, String userId, String sortProp, Integer sortOrder, Integer departmentId, HttpServletRequest request);
 
-    HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area, Integer departmentId, HttpServletRequest request);
+    HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area, String userId, Integer departmentId, HttpServletRequest request);
 }

+ 45 - 15
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1245,8 +1245,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 .eq("company_id", companyId).eq("leader_id", user.getId()));
         if(leaderList!=null&& !leaderList.isEmpty()){
             List<Integer> projectIds = leaderList.stream().map(ProjectLeader::getProjectId).distinct().collect(Collectors.toList());
+            projectIds.add(-1);
             List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>()
-                    .in("project_id", projectIds).eq("status",1));
+                    .in("id", projectIds).eq("status",1));
             httpRespMsg.setData(projectList);
         }else {
             httpRespMsg.setData(new ArrayList<Project>());
@@ -4761,6 +4762,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(token);
 
         List<String> userIds = new ArrayList<>();
+        List<String> userIdsExtra = new ArrayList<>();
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
         List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
         List<User> AllUser = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
@@ -4821,10 +4823,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (!leaderList.isEmpty()){
                         List<Integer> projectIdList = leaderList.stream().map(ProjectLeader::getProjectId).collect(Collectors.toList());
                         projectIdList.add(-1);
-                        List<TaskExecutor> executorList = taskExecutorService.list(new QueryWrapper<TaskExecutor>().in("project_id", projectIdList).isNotNull("executor_id"));
-                        List<String> collectUserIdList = executorList.stream().distinct().map(TaskExecutor::getExecutorId).collect(Collectors.toList());
-                        collectUserIdList.add("-1");
-                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByGeneralMemb(collectUserIdList, startDate, endDate, user.getCompanyId(), user.getId());
+                        List<Participation> participations = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", projectIdList));
+                        List<String> userProjectIds = participations.stream().distinct().map(Participation::getUserId).collect(Collectors.toList());
+                        userProjectIds.add("-1");
+                        userProjectIds.removeAll(userIds);
+                        userIdsExtra.addAll(userProjectIds);
+                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByGeneralMemb(userProjectIds, startDate, endDate, user.getCompanyId(), user.getId(),targetUserId);
+                        for (Map map : taskPlanByGeneralMemb) {
+                            map.put("leaderOrManager",1);
+                        }
                         ganttData.addAll(taskPlanByGeneralMemb);
                     }
                     //找到自己担任项目经理的项目,: is_task_plan==1 ,checkFirstId=自己的id 并且 task_status=3
@@ -4835,7 +4842,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<TaskExecutor> executorList = taskExecutorService.list(new QueryWrapper<TaskExecutor>().in("project_id", projectIdList).isNotNull("executor_id"));
                         List<String> collectUserIdList = executorList.stream().distinct().map(TaskExecutor::getExecutorId).collect(Collectors.toList());
                         collectUserIdList.add("-1");
-                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByProManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId());
+                        userIdsExtra.addAll(collectUserIdList);
+                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByProManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId);
+                        for (Map map : getTaskPlanByProManager) {
+                            map.put("leaderOrManager",2);
+                        }
                         ganttData.addAll(getTaskPlanByProManager);
                     }
 
@@ -4846,7 +4857,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<TaskExecutor> executorList = taskExecutorService.list(new QueryWrapper<TaskExecutor>().in("task_id", taskIdList).isNotNull("executor_id"));
                         List<String> collectUserIdList = executorList.stream().distinct().map(TaskExecutor::getExecutorId).collect(Collectors.toList());
                         collectUserIdList.add("-1");
-                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByAreaManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId());
+                        userIdsExtra.addAll(collectUserIdList);
+                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByAreaManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId);
+                        for (Map map : getTaskPlanByProManager) {
+                            map.put("leaderOrManager",2);
+                        }
                         ganttData.addAll(getTaskPlanByProManager);
                     }
                 }
@@ -4893,6 +4908,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         extraUidList.add(uid);
                     }
                 }
+                extraUidList.addAll(userIdsExtra);
                 if (extraUidList.size() > 0) {
                     List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", extraUidList).eq("is_active", 1));
                     for (User u : userList) {
@@ -4921,7 +4937,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         if(first.isPresent()){
                             departmentId=first.get().getDepartmentId();
                         }
-                        System.out.println("====================="+departmentId+"======================");
                         GanttDataItem parent = new GanttDataItem();
                         parent.id = leaveSheetList.get(i).getOwnerId();
                         parent.userId = leaveSheetList.get(i).getOwnerId();
@@ -5140,7 +5155,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String start_date = sdf.format((Date) map.get("start_date"));
                 String end_date = sdf.format((Date) map.get("end_date"));
                 String projectId = ""+ (Integer) map.get("id");
-                System.out.println(map);
                 //String exeId = "任务_"+map.get("task_id") +"_"+ (type==0?(Integer) map.get("exe_id"):userId);
                 String exeId = MessageUtils.message("excel.task") + "_"+map.get("task_id") +"_"+ (type==0?(Integer) map.get("exe_id"):userId);
                 String taskId = ""+ (Integer) map.get("task_id");
@@ -5174,6 +5188,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     curItem.setCheckFirstId(map.get("checkFirstId")==null?null:(String) map.get("checkFirstId"));
                     curItem.setCheckSecondId(map.get("checkSecondId")==null?null:(String) map.get("checkSecondId"));
                     curItem.setTaskStatus(map.get("taskStatus")==null?null:(Integer)map.get("taskStatus"));
+                    curItem.setTaskId(map.get("taskId")==null?null:(Integer)map.get("taskId"));
+                    curItem.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
                     curItem.end_date = end_date;
                     curItem.time = (Integer)map.get("duration");
                     curItem.parent = lastItemId;
@@ -5205,6 +5221,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     curItem.setCheckFirstId(map.get("checkFirstId")==null?null:(String) map.get("checkFirstId"));
                     curItem.setCheckSecondId(map.get("checkSecondId")==null?null:(String) map.get("checkSecondId"));
                     curItem.setTaskStatus(map.get("taskStatus")==null?null:(Integer)map.get("taskStatus"));
+                    curItem.setTaskId(map.get("taskId")==null?null:(Integer)map.get("taskId"));
+                    curItem.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
                     curItem.start_date = start_date;
                     curItem.end_date = end_date;
                     curItem.time = (Integer)map.get("duration");
@@ -5225,7 +5243,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         }
 
         msg.data = itemList;
-
         return msg;
     }
 
@@ -13632,7 +13649,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //计算日期区间一共几个月
         Period period = Period.between(timeStart, timeEnd);
         for (Map<String, Object> map : resultList) {
-            Float planHours = (Float) map.get("planHours");
+            Float planHours = Float.parseFloat( map.get("planHours").toString());
             map.put("FTE",Float.parseFloat(planHours == null?"0":planHours.toString())/monthTime);
 
         }
@@ -13652,7 +13669,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area, Integer departmentId, HttpServletRequest request) {
+    public HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area,String userId, Integer departmentId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
@@ -13690,7 +13707,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         LocalDate timeEnd = LocalDate.parse(monthEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         startDate = timeStart.with(TemporalAdjusters.firstDayOfMonth()).toString();
         endDate = timeEnd.with(TemporalAdjusters.lastDayOfMonth()).toString();
-        List<Map<String, Object>> list = projectMapper.getFTETaskPlanData(user.getCompanyId(), startDate, endDate, null, null, area, user.getId(), null, null, null, deptIds, departmentId);
+        int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
+        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
+        Float monthTime = days * allDay.getAllday();
+        List<Map<String, Object>> list = projectMapper.getFTETaskPlanData(user.getCompanyId(), startDate, endDate, null, null, area, userId, null, null, null, deptIds, departmentId);
         List<List<String>> dataList=new ArrayList<>();
         List<String> titleList=new ArrayList<>();
         List<String> subtitle=new ArrayList<>();
@@ -13711,8 +13731,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             item.add(list.get(i).get("projectCode")==null?"":list.get(i).get("projectCode").toString());
             item.add(list.get(i).get("projectName")==null?"":list.get(i).get("projectName").toString());
             item.add(list.get(i).get("userName")==null?"":list.get(i).get("userName").toString());
-            item.add(list.get(i).get("planHours")==null?"":list.get(i).get("planHours").toString());
-            item.add(list.get(i).get("FTE")==null?"":list.get(i).get("FTE").toString());
+            item.add(list.get(i).get("planHours")==null?"": String.valueOf(new BigDecimal(list.get(i).get("planHours").toString()).setScale(2,BigDecimal.ROUND_HALF_UP)));
+            item.add(
+                    list.get(i).get("planHours") == null ? "" :
+                            new BigDecimal(list.get(i).get("planHours").toString())
+                                    .divide(
+                                            BigDecimal.valueOf(monthTime),
+                                            2,                  // 保留2位小数
+                                            RoundingMode.HALF_UP // 四舍五入
+                                    )
+                                    .toString()
+            );
+            dataList.add(item);
         }
 
         String fileName = "FTE计划报表"+System.currentTimeMillis();

+ 19 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -733,7 +733,7 @@
         SELECT user.`id` as user_id, user.`name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,task_executor.id as exe_id,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task_executor.plan_hours as duration, task.task_level as level ,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId,
-        task.task_status as taskStatus
+        task.task_status as taskStatus,task.id as taskId
         FROM user
         LEFT JOIN task_executor ON user.id = task_executor.`executor_id`
         left join task on task.id = task_executor.task_id
@@ -751,7 +751,7 @@
     <select id="getTaskPlanByProject" resultType="java.util.Map">
         SELECT task.executor_id as user_id, task.executor_name as `name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId
-        ,task.task_status as taskStatus,
+        ,task.task_status as taskStatus,task.id as taskId,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task.plan_hours as duration FROM project
         LEFT JOIN task ON task.project_id = project.id
         WHERE project.company_id = #{companyId}
@@ -2716,7 +2716,7 @@
         SELECT user.`id` as user_id, user.`name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,task_executor.id as exe_id,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task_executor.plan_hours as duration, task.task_level as level ,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId,
-        task.task_status as taskStatus
+        task.task_status as taskStatus,task.id as taskId
         FROM user
         LEFT JOIN task_executor ON user.id = task_executor.`executor_id`
         left join task on task.id = task_executor.task_id
@@ -2726,7 +2726,10 @@
             #{item}
         </foreach>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
-        and task.end_date is not null and task.creater_id=#{creatorId}
+        and task.end_date is not null
+        <if test="targetUserId !=null and targetUserId !='' ">
+            and user.`id`=#{targetUserId}
+        </if>
         AND project.`status` = 1
         ORDER BY user.id, task.start_date
     </select>
@@ -2734,7 +2737,7 @@
         SELECT user.`id` as user_id, user.`name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,task_executor.id as exe_id,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task_executor.plan_hours as duration, task.task_level as level ,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId,
-        task.task_status as taskStatus
+        task.task_status as taskStatus,task.id as taskId
         FROM user
         LEFT JOIN task_executor ON user.id = task_executor.`executor_id`
         left join task on task.id = task_executor.task_id
@@ -2746,13 +2749,16 @@
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
         and task.end_date is not null and task.is_task_plan=1 and task.task_status=3 and task.check_first_id=#{managerId}
         AND project.`status` = 1
+        <if test="targetUserId !=null and targetUserId !='' ">
+            and user.`id`=#{targetUserId}
+        </if>
         ORDER BY user.id, task.start_date
     </select>
     <select id="getTaskPlanByAreaManager" resultType="java.util.Map">
         SELECT user.`id` as user_id, user.`name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,task_executor.id as exe_id,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task_executor.plan_hours as duration, task.task_level as level ,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId,
-        task.task_status as taskStatus
+        task.task_status as taskStatus,task.id as taskId
         FROM user
         LEFT JOIN task_executor ON user.id = task_executor.`executor_id`
         left join task on task.id = task_executor.task_id
@@ -2764,12 +2770,15 @@
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
         and task.end_date is not null and task.is_task_plan=1 and task.task_status=4 and task.check_second_id=#{managerId}
         AND project.`status` = 1
+        <if test="targetUserId !=null and targetUserId !='' ">
+            and user.`id`=#{targetUserId}
+        </if>
         ORDER BY user.id, task.start_date
     </select>
     <select id="getTaskPlanByProjectGeneralMemb" resultType="java.util.Map">
         SELECT task.executor_id as user_id, task.executor_name as `name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId
-        ,task.task_status as taskStatus,
+        ,task.task_status as taskStatus,task.id as taskId,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task.plan_hours as duration FROM project
         LEFT JOIN task ON task.project_id = project.id
         WHERE project.company_id = #{companyId}
@@ -2780,14 +2789,14 @@
             </foreach>
         </if>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
-        and task.end_date is not null and task.creater_id=#{creatorId}
+        and task.end_date is not null
         AND project.`status` = 1
         ORDER BY project.id, task.start_date
     </select>
     <select id="getTaskPlanByProjectManager" resultType="java.util.Map">
         SELECT task.executor_id as user_id, task.executor_name as `name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId
-        ,task.task_status as taskStatus,
+        ,task.task_status as taskStatus,task.id as taskId,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task.plan_hours as duration FROM project
         LEFT JOIN task ON task.project_id = project.id
         WHERE project.company_id = #{companyId}
@@ -2805,7 +2814,7 @@
     <select id="getTaskPlanByProjectAreaManager" resultType="java.util.Map">
         SELECT task.executor_id as user_id, task.executor_name as `name`,project.id, project.`project_name`,task.id as task_id, task.name as task_name,
         task.task_plan_type as taskPlanType,task.is_task_plan as isTaskPlan,task.check_first_id as checkFirstId,task.check_second_id as checkSecondId
-        ,task.task_status as taskStatus,
+        ,task.task_status as taskStatus,task.id as taskId,
         IFNULL(task.`start_date`, task.end_date) as start_date, task.`end_date`, task.plan_hours as duration FROM project
         LEFT JOIN task ON task.project_id = project.id
         WHERE project.company_id = #{companyId}

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskExecutorMapper.xml

@@ -20,7 +20,7 @@
         id, task_id, executor_id, executor_name, executor_color, plan_hours, project_id, service_id, real_cost, file_charge_one_id, file_charge_two_id
     </sql>
     <select id="getInfoWithFileCharge" resultType="com.management.platform.entity.TaskExecutor">
-        select task_id, executor_id, executor_name, executor_color, plan_hours, project_id
+        select te.id as id,   task_id, executor_id, executor_name, executor_color, plan_hours, project_id
              , service_id, real_cost, file_charge_one_id, file_charge_two_id
              , u1.name as fileChargeOneName,u1.corpwx_userid as chargeOneWxId
              ,u2.name as fileChargeTwoName,u2.corpwx_userid  as chargeTwoWxId