瀏覽代碼

工作计划需求测试修改3

yusm 1 月之前
父節點
當前提交
6afd700451

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

@@ -191,6 +191,7 @@ public class StagesController {
         //按任务分组查看
         queryWrapper.eq("group_id", item.getGroupId());
         queryWrapper.isNull("parent_tid");
+        queryWrapper.eq("is_task_plan",0);
         //排序根据前端传过来的字段
         if (isDesc) {
             queryWrapper.orderByDesc(order);
@@ -210,7 +211,7 @@ public class StagesController {
         List<Task> subTasks = new ArrayList<>();
         if (tasks.size() > 0) {
             List<Integer> collect = tasks.stream().map(Task::getId).collect(Collectors.toList());
-            List<Task> subLists = taskService.simpleList(new QueryWrapper<Task>().in("parent_tid", collect),null,null);
+            List<Task> subLists = taskService.simpleList(new QueryWrapper<Task>().in("parent_tid", collect).eq("is_task_plan",0),null,null);
             if (functionList.size() == 0 && !userId.equals(project.getInchargerId())) {
                 subLists = subLists.stream().filter(t->t.getExecutorId() == null || t.getExecutorId().contains(userId) || userId.equals(t.getCreaterId())).collect(Collectors.toList());
             }

+ 32 - 30
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -1062,45 +1062,47 @@ public class TaskController {
             userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, phone, job_number, department_id, is_active").eq("company_id", user.getCompanyId()).eq("is_active", 1));
         }
         t.setUserList(userList);
-        //查询项目负责人id以及所属任务分组负责人id
-        Project project = projectService.getOne(new QueryWrapper<Project>().eq("id", t.getProjectId()));
-        TaskGroup group = taskGroupService.getOne(new QueryWrapper<TaskGroup>().eq("id", t.getGroupId()));
-        t.setProjectInchargerId(project.getInchargerId()==null?"":project.getInchargerId());
-        t.setGroupInchargerId(group.getInchargerId()==null?"":group.getInchargerId());
-        //判断当前用户是否有权限创建任务: 有权限的包括管理全部项目,项目创建人,项目PM, 分组负责人,分组参与人
-        List<SysRichFunction> manageAllProjects = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部项目");
-        boolean canAddTask = false;
-        Integer companyId = user.getCompanyId();
-        TaskAddCtrl taskAddCtrl = taskAddCtrlMapper.selectById(companyId);
-        if (taskAddCtrl == null) {
-            //没有的话,默认生成一个
-            taskAddCtrl = new TaskAddCtrl();
-            taskAddCtrl.setCompanyId(companyId);
-            taskAddCtrl.setCtrlType(1);//0-普通项目参与人不可添加任务,1-项目参与人可添加,2-仅分组参与人可添加
-            taskAddCtrlMapper.insert(taskAddCtrl);
-        }
-        if (manageAllProjects.size() > 0 || userId.equals(project.getCreatorId()) || userId.equals(project.getInchargerId())) {
-            canAddTask = true;
-        }
-        if (!canAddTask) {
-            //进一步判断是否是分组的负责人,参与人
-            if (userId.equals(group.getInchargerId())) {
+        if (t.getTaskPlanType()==null||t.getTaskPlanType()!=3) {
+            //查询项目负责人id以及所属任务分组负责人id
+            Project project = projectService.getOne(new QueryWrapper<Project>().eq("id", t.getProjectId()));
+            TaskGroup group = taskGroupService.getOne(new QueryWrapper<TaskGroup>().eq("id", t.getGroupId()));
+            t.setProjectInchargerId(project.getInchargerId() == null ? "" : project.getInchargerId());
+            t.setGroupInchargerId(group.getInchargerId() == null ? "" : group.getInchargerId());
+            //判断当前用户是否有权限创建任务: 有权限的包括管理全部项目,项目创建人,项目PM, 分组负责人,分组参与人
+            List<SysRichFunction> manageAllProjects = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部项目");
+            boolean canAddTask = false;
+            Integer companyId = user.getCompanyId();
+            TaskAddCtrl taskAddCtrl = taskAddCtrlMapper.selectById(companyId);
+            if (taskAddCtrl == null) {
+                //没有的话,默认生成一个
+                taskAddCtrl = new TaskAddCtrl();
+                taskAddCtrl.setCompanyId(companyId);
+                taskAddCtrl.setCtrlType(1);//0-普通项目参与人不可添加任务,1-项目参与人可添加,2-仅分组参与人可添加
+                taskAddCtrlMapper.insert(taskAddCtrl);
+            }
+            if (manageAllProjects.size() > 0 || userId.equals(project.getCreatorId()) || userId.equals(project.getInchargerId())) {
                 canAddTask = true;
             }
             if (!canAddTask) {
-                Integer ctrlType = taskAddCtrl.getCtrlType();
-                if (ctrlType == 1) {
+                //进一步判断是否是分组的负责人,参与人
+                if (userId.equals(group.getInchargerId())) {
                     canAddTask = true;
-                } else if (ctrlType == 2) {
-                    //分组参与人可以创建任务
-                    int count = groupParticipatorMapper.selectCount(new QueryWrapper<GroupParticipator>().eq("user_id", userId).eq("group_id", group.getId()));
-                    if (count > 0) {
+                }
+                if (!canAddTask) {
+                    Integer ctrlType = taskAddCtrl.getCtrlType();
+                    if (ctrlType == 1) {
                         canAddTask = true;
+                    } else if (ctrlType == 2) {
+                        //分组参与人可以创建任务
+                        int count = groupParticipatorMapper.selectCount(new QueryWrapper<GroupParticipator>().eq("user_id", userId).eq("group_id", group.getId()));
+                        if (count > 0) {
+                            canAddTask = true;
+                        }
                     }
                 }
             }
+            t.setCanAddTask(canAddTask);
         }
-        t.setCanAddTask(canAddTask);
         msg.data = t;
         return msg;
     }

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

@@ -86,14 +86,14 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     List<Map> getTaskPlanByProjectGeneralMemb(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                    @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId,
-                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType);
+                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId);
 
     List<Map> getTaskPlanByProjectManager(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                               @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,
-                                          @Param("groupName")String groupName,@Param("taskType")Integer taskType);
+                                          @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId);
     List<Map> getTaskPlanByProjectAreaManager(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                           @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,
-                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType);
+                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId);
 
     List<ProjectWithStage> selectWithStage(Integer companyId, Integer startIndex, Integer endIndex, Integer projectId,String inchargerId,String startDate,String endDate);
 
@@ -262,4 +262,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     List<Map<String, Object>> getFTETaskPlanData(Integer companyId, String startDate, String endDate, Integer start, Integer size, String area,String userId,String sortProp, Integer sortOrder, List<Integer> branchDepartment, List<Integer> deptIds,Integer departmentId);
 
+    public List<Integer> getRelatedProjectIds(@Param("userId")String userId,@Param("companyId") Integer companyId);
+
+
+
 }

+ 25 - 21
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1243,21 +1243,19 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         Integer companyId = user.getCompanyId();
         List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>()
                 .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);
-            if (projectId!=null) {
-                boolean b = projectIds.stream().anyMatch(p -> p.equals(projectId));
-                if (!b) {
-                    projectIds.add(projectId);
-                }
+        List<Integer> projectIds=new ArrayList<>();
+        projectIds= leaderList.stream().map(ProjectLeader::getProjectId).distinct().collect(Collectors.toList());
+        projectIds.add(-1);
+
+        if (projectId!=null) {
+            boolean b = projectIds.stream().anyMatch(p -> p.equals(projectId));
+            if (!b) {
+                projectIds.add(projectId);
             }
-            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>()
-                    .in("id", projectIds).eq("status",1));
-            httpRespMsg.setData(projectList);
-        }else {
-            httpRespMsg.setData(new ArrayList<Project>());
         }
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>()
+                .in("id", projectIds).eq("status",1));
+        httpRespMsg.setData(projectList);
         return httpRespMsg;
     }
 
@@ -4809,6 +4807,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         } else {
             if (functionList.size() == 0) {
                 //普通员工只看自己相关的
+                userIds.add("-1");
                 List<Participation> participationList
                         = participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", userIds));
                 projectIds = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
@@ -5072,7 +5071,7 @@ 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<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByProjectGeneralMemb(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType);
+                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByProjectGeneralMemb(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId);
                         System.out.println("ganttData2:"+taskPlanByGeneralMemb.size());
                         ganttData.addAll(taskPlanByGeneralMemb);
                     }
@@ -5081,7 +5080,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (!projectList.isEmpty()){
                         List<Integer> projectIdList = projectList.stream().map(Project::getId).collect(Collectors.toList());
                         projectIdList.add(-1);
-                        List<Map> taskPlanByProjectManager = projectMapper.getTaskPlanByProjectManager(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType);
+                        List<Map> taskPlanByProjectManager = projectMapper.getTaskPlanByProjectManager(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId);
                         System.out.println("ganttData2:"+taskPlanByProjectManager.size());
                         ganttData.addAll(taskPlanByProjectManager);
                     }
@@ -5093,7 +5092,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<TaskExecutor> executorList = taskExecutorService.list(new QueryWrapper<TaskExecutor>().in("task_id", taskIdList).isNotNull("executor_id"));
                         List<Integer> projectIdList = executorList.stream().distinct().map(TaskExecutor::getProjectId).collect(Collectors.toList());
                         projectIdList.add(-1);
-                        List<Map> taskPlanByProjectAreaManager = projectMapper.getTaskPlanByProjectAreaManager(projectIdList, startDate, endDate, user.getCompanyId(),user.getId(),groupName,taskType);
+                        List<Map> taskPlanByProjectAreaManager = projectMapper.getTaskPlanByProjectAreaManager(projectIdList, startDate, endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId);
                         System.out.println("ganttData2:"+taskPlanByProjectAreaManager.size());
                         ganttData.addAll(taskPlanByProjectAreaManager);
                     }
@@ -8756,12 +8755,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<Project> projectList = projectMapper.selectList(
                     new QueryWrapper<Project>().eq("incharger_id", user.getId()).eq("status", 1));
             List<String> userIds = new ArrayList<>();
-            userIds.add("0");
-            if (projectList.size() > 0) {
-                List<Integer> proIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                List<Participation> pList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", proIds));
-                userIds = pList.stream().map(Participation::getUserId).collect(Collectors.toList());
+
+            List<Integer> proIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
+            if (Constant.MLD_COMPANY_ID==user.getCompanyId()){
+                List<Integer> projectSelect =projectMapper.getRelatedProjectIds(user.getId(), user.getCompanyId());
+                proIds.addAll(projectSelect);
             }
+
+            proIds.add(-1);
+            List<Participation> pList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", proIds));
+            userIds = pList.stream().map(Participation::getUserId).collect(Collectors.toList());
+
             QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
             if (deptIds.size() > 0) {
                 queryWrapper.in("department_id", deptIds).or().in("id", userIds);

+ 23 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -2822,6 +2822,9 @@
         <if test="taskType !=null  ">
             and task.task_type = #{taskType}
         </if>
+        <if test="targetProjectId !=null  ">
+            and project.`id` = #{targetProjectId}
+        </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 project.`status` = 1
@@ -2849,6 +2852,9 @@
         <if test="taskType !=null  ">
             and task.task_type = #{taskType}
         </if>
+        <if test="targetProjectId !=null  ">
+            and project.`id` = #{targetProjectId}
+        </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.is_task_plan=1 and task.task_status=3 and task.check_first_id=#{managerId}
         AND project.`status` = 1
@@ -2876,6 +2882,9 @@
         <if test="taskType !=null  ">
             and task.task_type = #{taskType}
         </if>
+        <if test="targetProjectId !=null  ">
+            and project.`id` = #{targetProjectId}
+        </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.is_task_plan=1 and task.task_status=4 and task.check_second_id=#{managerId}
         AND project.`status` = 1
@@ -2927,5 +2936,19 @@
             AND (t.start_date IS NOT NULL and t.start_date &lt;= #{endDate})
         </if>
     </select>
+    <select id="findRelatedProjectIds" resultType="java.lang.Integer">
+        SELECT DISTINCT pl.project_id
+        FROM project_leader pl
+        WHERE pl.leader_id = #{userId}
+
+        UNION
+
+        SELECT DISTINCT p.id
+        FROM project p
+        INNER JOIN task t ON t.project_id = p.id
+        WHERE p.company_id = #{companyId}
+        AND (t.check_first_id = #{userId} OR t.check_second_id = #{userId})
+    </select>
+
 
 </mapper>