yusm 1 ماه پیش
والد
کامیت
3ee49089a0
14فایلهای تغییر یافته به همراه393 افزوده شده و 5 حذف شده
  1. 4 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/ProjectController.java
  2. 27 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java
  3. 44 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskDailyAllocateController.java
  4. 4 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/Task.java
  5. 89 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/TaskDailyAllocate.java
  6. 6 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/TaskExecutor.java
  7. 5 4
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/mapper/ProjectMapper.java
  8. 23 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/mapper/TaskDailyAllocateMapper.java
  9. 2 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/ProjectService.java
  10. 22 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/TaskDailyAllocateService.java
  11. 61 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  12. 46 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskDailyAllocateServiceImpl.java
  13. 38 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/ProjectMapper.xml
  14. 22 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskDailyAllocateMapper.xml

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/ProjectController.java

@@ -574,6 +574,10 @@ public class ProjectController {
         return projectService.getGanttDataNew(type, startDate, endDate, userId, projectId, groupName,taskType, request);
     }
 
+    @RequestMapping("/exportGanttData")
+    public HttpRespMsg exportGanttData(@RequestParam(required = false, defaultValue = "0") Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName,Integer taskType,Integer deptId,Integer taskStatus, HttpServletRequest request) {
+        return projectService.exportGanttData(type, startDate, endDate, userId, projectId, groupName,taskType,deptId,taskStatus, request);
+    }
     /**
      *
      * @return

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

@@ -148,6 +148,9 @@ public class TaskController {
     @Resource
     private InformationMapper informationMapper;
 
+    @Resource
+    private TaskDailyAllocateService taskDailyAllocateService;
+
     //用于控制线程锁
     public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
     public static HashMap<String, Integer> corpddJobCenter = new HashMap();
@@ -234,9 +237,17 @@ public class TaskController {
                 task.setTaskStatus(STATUS_FIRST_CHECK);
             }
         }
+        ArrayList<TaskDailyAllocate> allocateArrayList = new ArrayList<>();
         if (!StringUtils.isEmpty(executorListStr)) {
             List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
             List<TaskExecutor> executorList = JSONArray.parseArray(executorListStr, TaskExecutor.class);
+            for (TaskExecutor taskExecutor : executorList) {
+                if (org.apache.commons.lang3.StringUtils.isNotEmpty(taskExecutor.getDailyAllocateListStr())){
+                    String dailyAllocateListStr = taskExecutor.getDailyAllocateListStr();
+                    List<TaskDailyAllocate> taskDailyAllocates = JSONArray.parseArray(dailyAllocateListStr, TaskDailyAllocate.class);
+                    allocateArrayList.addAll(taskDailyAllocates);
+                }
+            }
             task.setExecutorList(executorList);
             StringBuilder conflictExecutor = new StringBuilder();
             executorList.stream().forEach(ex->{
@@ -516,6 +527,9 @@ public class TaskController {
                 information.setJumpType(3);
                 informationService.save(information);
             }
+            if (!allocateArrayList.isEmpty()) {
+                taskDailyAllocateService.saveBatch(allocateArrayList);
+            }
         } else if (saved && shouldResetAuditStatus) {
             msgRecepientList=new ArrayList<>();
             //给第一审核人发送信息提醒
@@ -537,6 +551,10 @@ public class TaskController {
             information.setUserId(owner.getId());
             information.setTime(LocalDateTime.now());
             informationService.save(information);
+            if (!allocateArrayList.isEmpty()) {
+                taskDailyAllocateService.remove(new QueryWrapper<TaskDailyAllocate>().eq("task_id",task.getId()));
+                taskDailyAllocateService.saveBatch(allocateArrayList);
+            }
         }
         if (task.getExecutorId() == null) {
             //清空执行人
@@ -1040,6 +1058,15 @@ public class TaskController {
         }
         //查询任务的执行人
         List<TaskExecutor> executorList = taskExecutorMapper.getInfoWithFileCharge(t.getId());
+        List<TaskDailyAllocate> allocateList = taskDailyAllocateService.list(new QueryWrapper<TaskDailyAllocate>().eq("task_id", id));
+        // 1. 按 userId 预先分组(避免后续重复筛选)
+        Map<String, List<TaskDailyAllocate>> allocateMap = allocateList.stream()
+                .collect(Collectors.groupingBy(TaskDailyAllocate::getUserId));
+
+        // 2. 直接为每个 executor 设置对应的分配记录
+        executorList.forEach(executor ->
+                executor.setDailyAllocateList(allocateMap.getOrDefault(executor.getExecutorId(), Collections.emptyList()))
+        );
 
         t.setExecutorList(executorList);
         //设置人员选择下拉列表

+ 44 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskDailyAllocateController.java

@@ -0,0 +1,44 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.service.TaskDailyAllocateService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-05-27
+ */
+@RestController
+@RequestMapping("/task-daily-allocate")
+public class TaskDailyAllocateController {
+    @Resource
+    private HttpServletRequest request;
+
+    @Resource
+    private TaskDailyAllocateService taskDailyAllocateService;
+
+
+    //查询该时间段里面分配工时列表
+    @RequestMapping("/viewUserTaskSchedule")
+    public HttpRespMsg viewUserTaskSchedule(Integer taskId, String userId, String startTime, String endTime) {
+        return taskDailyAllocateService.viewUserTaskSchedule(taskId, userId, startTime, endTime, request);
+    }
+
+    //判断是否冲突
+    @RequestMapping("/getConflict")
+    public HttpRespMsg getConflict(Integer taskId, String startTime, String endTime) {
+        return taskDailyAllocateService.getConflict(taskId,  startTime, endTime, request);
+    }
+
+}
+

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/Task.java

@@ -265,6 +265,10 @@ public class Task extends Model<Task> {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime rejectTime;
 
+    // 计划天数
+    @TableField("planned_days")
+    private Integer plannedDays;
+
     /**
      * 项目负责人id
      */

+ 89 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/TaskDailyAllocate.java

@@ -0,0 +1,89 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-05-28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TaskDailyAllocate extends Model<TaskDailyAllocate> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 计划id
+     */
+    @TableField("task_id")
+    private Integer taskId;
+
+    /**
+     * 员工id
+     */
+    @TableField("user_id")
+    private String userId;
+
+    /**
+     * 开始时间
+     */
+    @TableField("start_time")
+    @DateTimeFormat(pattern = "HH:mm:ss")
+    @JsonFormat(pattern = "HH:mm:ss")
+    private LocalTime startTime;
+
+    /**
+     * 截止时间
+     */
+    @TableField("end_time")
+    @DateTimeFormat(pattern = "HH:mm:ss")
+    @JsonFormat(pattern = "HH:mm:ss")
+    private LocalTime endTime;
+
+    /**
+     * 分配日期
+     */
+    @TableField("allocate_date")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate allocateDate;
+
+    /**
+     * 工作时长
+     */
+    @TableField("work_hour")
+    private Double workHour;
+
+    /**
+     * 加班时长
+     */
+    @TableField("over_work_hour")
+    private Double overWorkHour;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/TaskExecutor.java

@@ -122,6 +122,12 @@ public class TaskExecutor extends Model<TaskExecutor> {
     @TableField(exist = false)
     private boolean isSecAuditor;
 
+    @TableField(exist = false)
+    private String dailyAllocateListStr;//每日分配工时
+
+    @TableField(exist = false)
+    private List<TaskDailyAllocate> dailyAllocateList;//每日分配工时列表
+
     public static List<TaskExecutor> fromTask(Task task) {
         String[] executorIdString = task.getExecutorId().split(",");
         String[] executorNameString = task.getExecutorName().split(",");

+ 5 - 4
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -2,10 +2,7 @@ package com.management.platform.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.management.platform.entity.Project;
-import com.management.platform.entity.vo.CustomerProject;
-import com.management.platform.entity.vo.ProjectWithStage;
-import com.management.platform.entity.vo.StageCost;
-import com.management.platform.entity.vo.UserCateTimeVo;
+import com.management.platform.entity.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Update;
 
@@ -70,6 +67,10 @@ public interface ProjectMapper extends BaseMapper<Project> {
                                     @Param("endDate") String endDate, @Param("companyId") Integer companyId,
                                     @Param("creatorId") String creatorId,@Param("deptId") Integer deptId,@Param("taskStatus") Integer taskStatus
                                 );
+    List<GantExportVo> getexportTaskPlanByMemb(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
+                                               @Param("endDate") String endDate, @Param("companyId") Integer companyId,
+                                               @Param("creatorId") String creatorId, @Param("deptId") Integer deptId, @Param("taskStatus") Integer taskStatus
+    );
 
     List<Map> getTaskPlanByProject(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                 @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("groupName")String groupName,@Param("taskType")Integer taskType,

+ 23 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/mapper/TaskDailyAllocateMapper.java

@@ -0,0 +1,23 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.TaskDailyAllocate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-05-27
+ */
+public interface TaskDailyAllocateMapper extends BaseMapper<TaskDailyAllocate> {
+
+
+    ArrayList<TaskDailyAllocate> getUserTaskTimeList(Integer taskId, String userId, LocalDateTime stateTime, LocalDateTime endTime);
+
+    int getConflict(Integer taskId, String startTime, String endTime);
+}

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/ProjectService.java

@@ -332,4 +332,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area, String userId, Integer departmentId, HttpServletRequest request);
 
     HttpRespMsg initTaskGroups(Integer companyId);
+
+    HttpRespMsg exportGanttData(Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName, Integer taskType, Integer deptId, Integer taskStatus, HttpServletRequest request);
 }

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/TaskDailyAllocateService.java

@@ -0,0 +1,22 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.TaskDailyAllocate;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-05-27
+ */
+public interface TaskDailyAllocateService extends IService<TaskDailyAllocate> {
+
+    HttpRespMsg viewUserTaskSchedule(Integer taskId, String userId, String startTime, String endTime, HttpServletRequest request);
+
+    HttpRespMsg getConflict(Integer taskId, String startTime, String endTime, HttpServletRequest request);
+}

+ 61 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -13843,6 +13843,67 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg exportGanttData(Integer type, String startDate, String endDate, String targetUserId, Integer projectId, String groupName, Integer taskType, Integer deptId, Integer taskStatus, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //根据人员权限来获取,
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        List<ProjectLeader> projectLeaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("company_id", user.getCompanyId()));
+        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()));
+        List<Integer> projectIds = null;
+        if (functionList.size() == 0) {
+            //担任部门主要负责人
+            if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
+                List<Integer> allMainManagedDeptIdList = departmentService.getAllMainManagedDeptIdList(user, departmentList);
+                List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allMainManagedDeptIdList));
+                userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+            }
+            //检查是否是项目负责人
+            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
+            List<Integer> collect = projectList.stream().map(Project::getId).collect(Collectors.toList());
+            //检查担任项目LA:小组长
+            List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("leader_id", user.getId()));
+            collect.addAll(leaderList.stream().map(ProjectLeader::getProjectId).collect(Collectors.toList()));
+            //项目相关的人员
+            if (collect.size() > 0) {
+                List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", collect));
+                userIds = participationList.stream().map(Participation::getUserId).collect(Collectors.toList());
+            }
+            //把自己加进去
+            if (!userIds.contains(user.getId())) {
+                userIds.add(user.getId());
+            }
+        }
+        else {
+            //查看全部
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
+            userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+        }
+        if (!StringUtils.isEmpty(targetUserId)) {
+            userIds = userIds.stream().filter(u->u.equals(targetUserId)).collect(Collectors.toList());
+        }
+
+        List<Map> mapList = projectMapper.getTaskPlanByMemb(userIds, startDate + " 00:00:00", endDate + " 23:59:59", user.getCompanyId(), user.getId(), deptId, taskStatus);
+
+        QueryWrapper<LeaveSheet> lsQueryWrapper=new QueryWrapper();
+        lsQueryWrapper.in("owner_id", userIds);
+        if (startDate != null && endDate != null) {
+            lsQueryWrapper.le("start_date", endDate).ge("end_date", startDate);
+        }
+        List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(lsQueryWrapper);
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("mapList",mapList);
+        map.put("leaveSheetList",leaveSheetList);
+        msg.data=map;
+        return  msg;
+    }
+
     //导出FTE报表数据
     @Override
     public HttpRespMsg exportFTEData(String monthStart,String monthEnd, String area,Integer departmentId,HttpServletRequest request) {

+ 46 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskDailyAllocateServiceImpl.java

@@ -0,0 +1,46 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.TaskDailyAllocate;
+import com.management.platform.mapper.TaskDailyAllocateMapper;
+import com.management.platform.service.TaskDailyAllocateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2025-05-27
+ */
+@Service
+public class TaskDailyAllocateServiceImpl extends ServiceImpl<TaskDailyAllocateMapper, TaskDailyAllocate> implements TaskDailyAllocateService {
+    @Resource
+    private TaskDailyAllocateMapper taskDailyAllocateMapper;
+
+    @Override
+    public HttpRespMsg viewUserTaskSchedule(Integer taskId, String userId, String startTime, String endTime, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        msg.data= taskDailyAllocateMapper.getUserTaskTimeList(taskId, userId, LocalDateTime.parse(startTime, dtf), LocalDateTime.parse(endTime, dtf));
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getConflict(Integer taskId, String startTime, String endTime, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        int count= taskDailyAllocateMapper.getConflict(taskId,startTime,endTime);
+        if(count>0){
+            msg.setError("选择时间段:"+startTime+"--"+"endTime:"+endTime+"跟其他时间段存在冲突");
+        }
+        return msg;
+    }
+}

+ 38 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/ProjectMapper.xml

@@ -756,7 +756,7 @@
         </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 project.`status` = 1
+        AND (project.`status` = 1 or project.`status` is null)
         <if test="deptId !=null">
            and user.department_id= #{deptId}
         </if>
@@ -2972,6 +2972,43 @@
         where company_id = #{companyId}
           and project_code in <foreach collection="projectCodes" item="projectCode" separator="," open="(" close=")">#{projectCode}</foreach>
     </select>
+    <select id="getexportTaskPlanByMemb" resultType="com.management.platform.entity.vo.GantExportVo">
+        SELECT  user.`id` as user_id,
+                user.`name`,
+                project.`project_name`,
+                project.id projectId,
+                task.id as task_id,
+                task.name as task_name,
+                task_executor.plan_hours as duration,
+                task.task_plan_type as taskPlanType,
+                task.task_status as taskStatus,
+                task.id as taskId,
+                d.department_name deptName,
+                tda.allocate_date allocateDate,
+                SUM(tda.work_hour) as totalWorkHour,
+                SUM(tda.over_work_hour) as totalOverWorkHour
+        FROM user
+                 LEFT JOIN task_executor ON user.id = task_executor.`executor_id`
+                 left join task on task.id = task_executor.task_id
+                 left join task_type on task_type.id = task.task_plan_type
+                 LEFT JOIN project ON project.`id` = task.`project_id`
+                 LEFT join task_daily_allocate tda on tda.user_id=user.id
+                 LEFT JOIN department d on user.department_id=d.department_id
+        WHERE
+            ((IFNULL(task.start_date , task.end_date) between '2025-05-28 00:00:00' and '2025-05-31 18:00:00') or (task.end_date between '2025-05-28 00:00:00' and '2025-05-31 18:00:00'))
+          and task.end_date is not null
+          and (project.`status` = 1 or project.`status` is null )
+--         and user.id='8291555688808185856'
+          and task.id =2714
+        GROUP BY
+            user.`id`,
+            user.`name`,
+            project.`project_name`,
+            project.id,
+            d.department_name,
+            tda.allocate_date
+        ORDER BY user.id, task.start_date
+    </select>
 
 
 </mapper>

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskDailyAllocateMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.TaskDailyAllocateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.TaskDailyAllocate">
+        <id column="id" property="id" />
+        <result column="task_id" property="taskId" />
+        <result column="user_id" property="userId" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="allocate_date" property="allocateDate" />
+        <result column="work_hour" property="workHour" />
+        <result column="over_work_hour" property="overWorkHour" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, task_id, user_id, start_time, end_time, allocate_date, work_hour, over_work_hour
+    </sql>
+
+</mapper>