Forráskód Böngészése

任务改成计划

QuYueTing 2 napja
szülő
commit
692c56cb49
24 módosított fájl, 210 hozzáadás és 427 törlés
  1. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/constant/Constant.java
  2. 1 2
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/LeaveSheetController.java
  3. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/ProjectController.java
  4. 2 2
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/ReportController.java
  5. 45 41
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java
  6. 7 89
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/UserController.java
  7. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/GroupBudgetReview.java
  8. 4 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/Task.java
  9. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/vo/ReportVO.java
  10. 1 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/DepartmentService.java
  11. 2 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/UserService.java
  12. 16 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java
  13. 78 193
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  14. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  15. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskProgressServiceImpl.java
  16. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskRestartServiceImpl.java
  17. 10 2
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  18. 19 0
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  19. 4 4
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/task/TimingTask.java
  20. 1 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/i18n/messages.properties
  21. 8 6
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/ProjectMapper.xml
  22. 2 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskMapper.xml
  23. 1 1
      fhKeeper/formulahousekeeper/timesheet_mld/index.html
  24. 2 77
      fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/constant/Constant.java

@@ -51,7 +51,7 @@ public class Constant {
     //日报审核通过提醒(带评价)
     public static final String[] REPORT_CHECK_PASS_WITH_APPRAISE = {"审核人","评价","日期"};
     //任务进展通知
-    public static final String[] TASK_EVOLVE= {"项目名称","任务名称","进展内容","任务状态"};
+    public static final String[] TASK_EVOLVE= {"项目名称","计划名称","进展内容","任务状态"};
     //费用报销待审核提醒
     public static final String[] EXPENSE_REIMBURSEMENT_WAIT_CHECK= {"报销人","填报日期","票据类型","金额","备注"};
     //员工请假待审核

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

@@ -170,9 +170,8 @@ public class LeaveSheetController {
         }
         DockWithMLD dockWithMLD=new DockWithMLD();
         JSONObject jsonObject=new JSONObject();
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        String startDate = dtf.format(LocalDateTime.now());
+        String startDate = dtf1.format(LocalDateTime.now().withHour(0).withMinute(0).withSecond(0)) + "," + dtf1.format(LocalDateTime.now().withHour(23).withMinute(59).withSecond(59));
         jsonObject.put("gmtFinished",startDate);
         String jsonString = jsonObject.toJSONString();
         TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));

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

@@ -1615,7 +1615,7 @@ public class ProjectController {
     }
 
     /**
-     * 添加任务计划的时候 项目是小组长参与的项目
+     * 添加任务计划的时候 项目是小组长参与的项目或者有全部项目的权限
      */
     @RequestMapping("/getProjectByLeader")
     public HttpRespMsg getProjectByLeader(Integer projectId, HttpServletRequest request){

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

@@ -2690,8 +2690,8 @@ public class ReportController {
             List<BusinessTrip> oldBusinessTripList = businessTripService.list(new QueryWrapper<BusinessTrip>().eq("company_id", compId));
             /*jsonObject.put("startDate",startDate);
             jsonObject.put("endDate",endDate);*/
-            jsonObject.put("workDate",startDate);
-            jsonObject.put("gmtFinished",startDate);
+//            jsonObject.put("workDate",startDate);
+            jsonObject.put("gmtFinished",dtf1.format(yesterday.withHour(0).withMinute(0).withSecond(0)) + "," + dtf1.format(yesterday.withHour(23).withMinute(59).withSecond(59)));
             String jsonString = jsonObject.toJSONString();
             List<UserFvTime> userFvTimeList=new ArrayList<>();
             List<LeaveSheet> leaveSheetList=new ArrayList<>();

+ 45 - 41
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java

@@ -213,8 +213,11 @@ public class TaskController {
         //新建的任务,需要设置创建人,创建时间
         if (task.getId() == null) {
             //检查权限,只有项目的LA才能创建
-            boolean isLA = projectLeaderMapper.selectCount(new LambdaQueryWrapper<ProjectLeader>().eq(ProjectLeader::getProjectId, task.getProjectId()).eq(ProjectLeader::getLeaderId, userId)) > 0;
             isInsert=1;
+            if (StringUtils.isEmpty(task.getName())) {
+                //取类型作为计划名称
+                task.setName(taskType.getName());
+            }
             task.setCreateDate(LocalDate.now());
             task.setCreaterId(userId);
             task.setCreaterName(user.getName());
@@ -231,7 +234,12 @@ public class TaskController {
             List<User> allUsers = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
             List<TaskExecutor> executorList = JSONArray.parseArray(executorListStr, TaskExecutor.class);
             task.setExecutorList(executorList);
-            executorList.stream().filter(ex->!StringUtils.isEmpty(ex.getExecutorId())).forEach(ex->{
+            executorList.stream().forEach(ex->{
+                //执行人必填
+                if (StringUtils.isEmpty(ex.getExecutorId())) {
+                    msg.setError("执行人不能为空");
+                    return;
+                }
                 User exeUser = allUsers.stream().filter(al->al.getId().equals(ex.getExecutorId())).findFirst().get();
                 ex.setExecutorName(exeUser.getName());
                 ex.setExecutorColor(exeUser.getColor());
@@ -454,10 +462,6 @@ public class TaskController {
             if(task.getFinishDate()==null){
                 taskMapper.updateFinishDate(task.getId());
             }
-            if ((oldTask.getTaskType() == 1 && task.getTaskType() != 1) || (oldTask.getTaskType() != 1 && task.getTaskType() == 1)) {
-                needRecalculateProgress = true;
-            }
-
         }
         if (taskType.getNeedAudit()) {
             if (!task.getExecutorList().isEmpty()) {
@@ -571,12 +575,11 @@ public class TaskController {
         /**
          * 任务状态,0-进行中 1-已完成 2-已撤销 3-待第一审核人审核 4-待第二审核人审核 5-第一审核人驳回  6-第二审核人驳回
          */
-        int count= projectLeaderMapper.selectCountIsLeader(taskId,user.getId());
-        //是这个计划的小组长
-        if (count>0){
+        //计划创建人可以撤回
+        if (user.getId().equals(task.getCreaterId())){
             //待第一审核人审核
-            if (task.getTaskStatus()==3){
-                task.setTaskStatus(2);
+            if (task.getTaskStatus() == STATUS_FIRST_CHECK){
+                task.setTaskStatus(STATUS_CANCEL);
                 taskMapper.updateById(task);
                 Information information = new Information();
 
@@ -588,15 +591,11 @@ public class TaskController {
                 information.setTime(LocalDateTime.now());
                 informationMapper.insert(information);
             }else {
-                msg.setError("当前计划已处于二级审核或已审核通过,不能撤回");
+                msg.setError("当前任务状态不可撤回");
                 return msg;
             }
-        }
-        //计划的第一审核人
-        String checkFirstId = project.getInchargerId();
-        if (checkFirstId!=null&&checkFirstId.equals(user.getId())){
-            msg.setError("项目经理不能撤回");
-            return msg;
+        } else {
+            msg.setError("只有当前计划创建人才能撤回");
         }
         return msg;
     }
@@ -1012,44 +1011,49 @@ public class TaskController {
         t.setUserList(userList);
         String associateDegrees = "";
         String names = "";
-        Project project = projectService.getById(t.getProjectId());
-        associateDegrees = project.getAssociateDegrees();
-        names = project.getAssociateDegreeNames();
-        List<HashMap> degreeList = new ArrayList<>();
-        if (!StringUtils.isEmpty(associateDegrees)) {
-            String[] idArray = associateDegrees.split("\\,");
-            String[] n = names.split("\\,");
-            for (int i=0;i<idArray.length; i++) {
-                HashMap map = new HashMap();
-                map.put("id", Integer.parseInt(idArray[i]));
-                map.put("name", n[i]);
-                degreeList.add(map);
+        Project project = null;
+        if (t.getProjectId() != null) {
+            project = projectService.getById(t.getProjectId());
+            associateDegrees = project.getAssociateDegrees();
+            names = project.getAssociateDegreeNames();
+            List<HashMap> degreeList = new ArrayList<>();
+            if (!StringUtils.isEmpty(associateDegrees)) {
+                String[] idArray = associateDegrees.split("\\,");
+                String[] n = names.split("\\,");
+                for (int i=0;i<idArray.length; i++) {
+                    HashMap map = new HashMap();
+                    map.put("id", Integer.parseInt(idArray[i]));
+                    map.put("name", n[i]);
+                    degreeList.add(map);
+                }
             }
+            t.setDegreeList(degreeList);
         }
-        t.setDegreeList(degreeList);
+
 
         //判断任务是否处于可编辑状态,以及当前人员是否有编辑权限
         List<TaskType> taskTypeList = taskTypeService.list(new QueryWrapper<TaskType>().eq("company_id", user.getCompanyId()));
         Optional<TaskType> taskType = taskTypeList.stream().filter(t1 -> t1.getId().equals(t.getTaskPlanType())).findFirst();
         Boolean needAudit = taskType.get().getNeedAudit();
-        //判断是否是LA
-        boolean isLA = projectLeaderMapper.selectCount(new LambdaQueryWrapper<ProjectLeader>().eq(ProjectLeader::getProjectId, t.getProjectId()).eq(ProjectLeader::getLeaderId, userId)) > 0;
+        t.setNeedAudit(needAudit);
+        //判断是否是创建人
+        boolean isCreator = userId.equals(t.getCreaterId());
         if (needAudit) {
             //不同状态下对应不同的人员可以修改
-            if (isLA && (t.getTaskStatus() == STATUS_CANCEL || t.getTaskStatus() == STATUS_FIRST_REJECT || t.getTaskStatus() == STATUS_SECOND_REJECT)) {
+            if (isCreator && (t.getTaskStatus() == STATUS_CANCEL || t.getTaskStatus() == STATUS_FIRST_REJECT || t.getTaskStatus() == STATUS_SECOND_REJECT)) {
                 t.setCanEditTask(true);
-            } else if (t.getTaskStatus() == STATUS_FIRST_CHECK && project.getInchargerId().equals(userId)) {
+            } else if (t.getTaskStatus() == STATUS_FIRST_CHECK && project != null && project.getInchargerId().equals(userId)) {
                 t.setCanEditTask(true);
             } else if (t.getTaskStatus() == STATUS_SECOND_CHECK) {
                 //检查第二审核人
-                boolean isSecondAuditor = executorList.stream().anyMatch(e->e.getSecondAuditorId().equals(userId));
+                boolean isSecondAuditor = executorList.stream().anyMatch(e->userId.equals(e.getSecondAuditorId()));
                 if (isSecondAuditor) {
                     t.setCanEditTask(true);
                 }
             }
         } else {
-            //无需审核,LA随时可以修改
-            if (isLA) {
+            //无需审核,创建人随时可以修改
+            if (isCreator) {
                 t.setCanEditTask(true);
             }
         }
@@ -1441,7 +1445,7 @@ public class TaskController {
 
 
     /**
-     * task/listByPage获取待办任务列表
+     * task/listByPage获取工作计划列表
      * @param status 0-进行中,1-已完成
      * @param viewId 1-我执行的任务, 2-我创建的任务
      * @param pageIndex
@@ -1676,7 +1680,7 @@ public class TaskController {
         titleList.add("项目名称");
         titleList.add("任务阶段");
         titleList.add("优先级");
-        titleList.add("任务名称");
+        titleList.add("计划名称");
         titleList.add("执行人");
         titleList.add("文件审核状态");
         titleList.add("开始时间");
@@ -1742,7 +1746,7 @@ public class TaskController {
             }
             dataList.add(item);
         }
-        String fileName = "待办任务导出_"+System.currentTimeMillis();
+        String fileName = "工作计划导出_"+System.currentTimeMillis();
         try {
             return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName , dataList, path);
         } catch (Exception e) {

+ 7 - 89
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/UserController.java

@@ -106,8 +106,6 @@ public class UserController {
     private UserMapper userMapper;
     @Resource
     private UserCertMapper userCertMapper;
-    @Resource
-    private UserGroupMapper userGroupMapper;
 
     @Resource
     private ParticipationMapper participationMapper;
@@ -170,6 +168,13 @@ public class UserController {
         return userService.getSimpleActiveUserList(departmentId,request,keyword,cursor);
     }
 
+    @RequestMapping("/getMyDeptSimpleUserList")
+    public HttpRespMsg getMyDeptSimpleUserList() throws Exception {
+        return userService.getMyDeptSimpleUserList();
+    }
+
+
+
     @RequestMapping("/getFirstCheckUser")
     public HttpRespMsg getFirstCheckUserList() {
         return userService.getFirstCheckUserList(request);
@@ -892,88 +897,6 @@ public class UserController {
     }
 
 
-    @RequestMapping(value = "/loginForAd", method = RequestMethod.POST)
-    public HttpRespMsg loginForAd(@RequestParam String username, @RequestParam String password) {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        if(username.equals("sysadmin")){
-             return loginAdmin(username,password);
-        }
-        User user = userService.getOne(new QueryWrapper<User>().eq("phone", username+"@"+dcFirst+"."+dcSecond));
-        LdapContext ldapContext = null;
-        Hashtable<String, Object> env = new Hashtable<String, Object>();
-        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
-        //验证类型
-        env.put(Context.SECURITY_AUTHENTICATION, "simple");
-        //用户名称,cn,ou,dc 分别:用户,组,域
-        env.put(Context.SECURITY_PRINCIPAL, username+"@"+dcFirst+"."+dcSecond);
-        //用户密码 cn 的密码
-        env.put(Context.SECURITY_CREDENTIALS, password);
-        //url 格式:协议://ip:端口/组,域   ,直接连接到域或者组上面
-        env.put(Context.PROVIDER_URL,ldapUrl);
-//        //协议
-//        env.put(Context.SECURITY_PROTOCOL, "ssl");
-//        env.put("java.naming.ldap.factory.socket", "DummySSLSocketFactory类全路径");
-//        //objectGUID 转换,很关键
-        env.put("java.naming.ldap.attributes.binary","objectGUID");
-        try {
-            Control[] sortConnCtls = new SortControl[1];
-            sortConnCtls[0] = new SortControl("sAMAccountName", Control.CRITICAL);
-            ldapContext = new InitialLdapContext(env, sortConnCtls);
-            if(ldapContext!=null){
-                if(user!=null){
-                    return loginByUserId(user.getId());
-                }else {
-                    httpRespMsg.setError("账号不存在");
-                    return httpRespMsg;
-                }
-            }
-        } catch (IOException | NamingException e) {
-            e.printStackTrace();
-            httpRespMsg.setError("AD域控用户账号或者密码错误,验证失败");
-            return httpRespMsg;
-        }
-        return httpRespMsg;
-    }
-
-    /**
-    * @Description:ldap获取组织架构
-    * @Param: []
-    * @return: com.management.platform.util.HttpRespMsg
-    * @Author: yurk
-    * @Date: 2024/7/19
-    */
-    @RequestMapping("/getOU")
-    public HttpRespMsg getOU() throws NamingException {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        httpRespMsg.setData(userService.ldapGetOU());
-        return httpRespMsg;
-    }
-
-    /**
-    * @Description:ldap获取人员
-    * @Param: []
-    * @return: com.management.platform.util.HttpRespMsg
-    * @Author: yurk
-    * @Date: 2024/7/19
-    */
-    @RequestMapping("/getUser")
-    public HttpRespMsg getUser() throws Exception {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        httpRespMsg.setData(userService.getUser());
-        return httpRespMsg;
-    }
-
-    @RequestMapping("/initSystemForAd")
-    public HttpRespMsg initSystemForAd(String companyName) throws Exception {
-        return userService.initSystemForAd(companyName);
-    }
-
-
-    @RequestMapping("/syncDeptWithAD")
-    public HttpRespMsg syncDeptWithAD(HttpServletRequest request) throws Exception{
-        return userService.syncDeptWithAD(request);
-    }
-
     @RequestMapping("/updateUserDeptHierarchy")
     public HttpRespMsg updateUserDeptHierarchy(Integer companyId) throws Exception {
         HttpRespMsg httpRespMsg=new HttpRespMsg();
@@ -1065,11 +988,6 @@ public class UserController {
         return msg;
     }
 
-    @RequestMapping("/unbindCorpWX")
-    public HttpRespMsg unbindCorpWX(String userId){
-        return userService.unbindCorpWX(userId, request);
-    }
-
 
     @RequestMapping("/addUserIsMachine")
     public HttpRespMsg addUsersIsMachine(String ids){

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/GroupBudgetReview.java

@@ -76,7 +76,7 @@ public class GroupBudgetReview extends Model<GroupBudgetReview> {
     private String creatorId;
 
     /**
-     * 任务名称
+     * 计划名称
      */
     @TableField("group_name")
     private String groupName;

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

@@ -162,7 +162,7 @@ public class Task extends Model<Task> {
     private Integer taskType;
 
     /**
-     * 父任务名称
+     * 父计划名称
      */
     @TableField("parent_tname")
     private String parentTname;
@@ -327,6 +327,9 @@ public class Task extends Model<Task> {
     @TableField(exist = false)
     private String rejectUserName;
 
+    @TableField(exist = false)
+    private boolean needAudit;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/entity/vo/ReportVO.java

@@ -15,7 +15,7 @@ public class ReportVO extends Report {
     private String name;//用户姓名
     private String project;//项目名称
     private String subProjectName;//子项目名称
-    private String taskName;//任务名称
+    private String taskName;//计划名称
     private String degreeName;//自定义维度名称
     private String groupName;//分组名称
 }

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/DepartmentService.java

@@ -49,6 +49,7 @@ public interface DepartmentService extends IService<Department> {
     public List<Integer> getDeptIncludeSubDeptIds(Integer departmentId, List<Department> allDeptList);
 
     public List<Integer> getAllManagedDeptIdList(User curUser, List<Department> allDepartmentList);
+    public List<Integer> getAllMainManagedDeptIdList(User curUser, List<Department> allDepartmentList);
 
     HttpRespMsg exportCustomDataSum(String startDate, String endDate, HttpServletRequest request);
 

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

@@ -122,4 +122,6 @@ public interface UserService extends IService<User> {
     HttpRespMsg getUserByProject(Integer projectId, HttpServletRequest request);
 
     HttpRespMsg getChargeUserByProjectId(Integer projectId, HttpServletRequest request);
+
+    HttpRespMsg getMyDeptSimpleUserList();
 }

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

@@ -1230,6 +1230,22 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         return collect;
     }
 
+    public List<Integer> getAllMainManagedDeptIdList(User curUser, List<Department> allDepartmentList) {
+        if (allDepartmentList == null) {
+            allDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", curUser.getCompanyId()));
+        }
+        //负责的部门:先查担任主要负责人的部门
+        List<Department> allMDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", curUser.getId()));
+
+        List<Department> subDepts = new ArrayList<>();
+        for (Department dp : allMDeptList) {
+            subDepts.addAll(getSubDepts(dp, allDepartmentList));
+            subDepts.add(dp);
+        }
+        List<Integer> collect = subDepts.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+        return collect;
+    }
+
     @Override
     public HttpRespMsg exportCustomDataSum(String startDate, String endDate, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();

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

@@ -1210,7 +1210,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //String[] typeList = {"任务","里程碑","风险"};
         String[] typeList = {MessageUtils.message("excel.task"),MessageUtils.message("excel.milepost"),MessageUtils.message("excel.risk")};
         List<List<String>> exportList = new ArrayList<>();
-        String[] titles = {"项目编号", "项目名称", "任务名称","预估研发费用(元)", "执行人","计划工时(h)", "实际工时(h)","实际研发费用(元)", "状态"};
+        String[] titles = {"项目编号", "项目名称", "计划名称","预估研发费用(元)", "执行人","计划工时(h)", "实际工时(h)","实际研发费用(元)", "状态"};
         exportList.add(Lists.list(titles));
         DecimalFormat df = new DecimalFormat("0.00");
         for (Map task : projectTask) {
@@ -1255,20 +1255,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
-        List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>()
-                .eq("company_id", companyId).eq("leader_id", user.getId()));
-        List<Integer> projectIds=new ArrayList<>();
-        projectIds= leaderList.stream().map(ProjectLeader::getProjectId).distinct().collect(Collectors.toList());
-        projectIds.add(-1);
+        QueryWrapper<Project> eq = new QueryWrapper<Project>().eq("company_id", companyId).eq("status", 1);
+        //检查权限,是否可选全部项目
+        if (!sysFunctionService.hasPriviledge(user.getRoleId(), "可选全部项目")) {
+            List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>()
+                    .eq("company_id", companyId).eq("leader_id", user.getId()));
+            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);
+            if (projectId!=null) {
+                boolean b = projectIds.stream().anyMatch(p -> p.equals(projectId));
+                if (!b) {
+                    projectIds.add(projectId);
+                }
             }
+            eq.in("id", projectIds);
         }
-        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>()
-                .in("id", projectIds).eq("status",1));
+
+        List<Project> projectList = projectMapper.selectList(eq);
         httpRespMsg.setData(projectList);
         return httpRespMsg;
     }
@@ -1549,7 +1554,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
                 BeanUtils.copyProperties(project, projectVO);
                 System.out.println("==========>主任务id"+project.getProjectMainId()==null?"空":project.getProjectMainId());
-                System.out.println("==========>主任务名称"+project.getProjectMainName()==null?"空":project.getProjectMainName());
+                System.out.println("==========>主计划名称"+project.getProjectMainName()==null?"空":project.getProjectMainName());
                 long dt0 = System.currentTimeMillis();
                 Optional<Department> optional = allDepartmentList.stream().filter(ad -> ad.getDepartmentId().equals(projectVO.getDeptId())).findFirst();
                 if(optional.isPresent()){
@@ -4143,10 +4148,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //String[] typeList = {"任务","里程碑","风险"};
         String[] typeList = {MessageUtils.message("excel.task"),MessageUtils.message("excel.milepost"),MessageUtils.message("excel.risk")};
         List<List<String>> exportList = new ArrayList<>();
-        //String[] titles = {"项目编号", "项目名称", "任务名称", "执行人","计划工时(h)", "实际工时(h)","状态", "类型", "截止日期"};
+        //String[] titles = {"项目编号", "项目名称", "计划名称", "执行人","计划工时(h)", "实际工时(h)","状态", "类型", "截止日期"};
         String[] titles = {MessageUtils.message("entry.projectId"), MessageUtils.message("entry.projectName"), MessageUtils.message("entry.taskName"), MessageUtils.message("excel.executor"),MessageUtils.message("excel.plannedWork"), MessageUtils.message("excel.actualWork"),MessageUtils.message("leave.status"), MessageUtils.message("excel.type"), MessageUtils.message("entry.endDate")};
         if(companyId==3092){
-            titles = new String[]{"项目编号", "项目名称","任务分组","分组预估工时","分组实际工时", "任务名称", "执行人","计划工时(h)", "实际工时(h)","状态", "类型", "截止日期"};
+            titles = new String[]{"项目编号", "项目名称","任务分组","分组预估工时","分组实际工时", "计划名称", "执行人","计划工时(h)", "实际工时(h)","状态", "类型", "截止日期"};
         }
         exportList.add(Lists.list(titles));
         for (Map task : projectList) {
@@ -4276,7 +4281,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<ProjectEstimatedWorkVO> list = new ArrayList<>();
 
         List<List<String>> exportList = new ArrayList<>();
-        //String[] titles = {"项目编号", "项目名称", "任务名称", "计划工时(h)", "实际工时(h)"};
+        //String[] titles = {"项目编号", "项目名称", "计划名称", "计划工时(h)", "实际工时(h)"};
         String[] titles = { MessageUtils.message("entry.projectName"), MessageUtils.message("entry.taskName"), MessageUtils.message("excel.plannedWork"), MessageUtils.message("excel.actualWork")};
         exportList.add(Lists.list(titles));
         for (Project project : selectProjects) {
@@ -4801,23 +4806,27 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         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> relatedProjectIds = new ArrayList<>();
         if (functionList.size() == 0) {
-            //看看是部门经理还是项目负责人
+            //担任部门主要负责人
             if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
                 List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("department_id", user.getManageDeptId()));
                 userIds = userList.stream().map(User::getId).collect(Collectors.toList());
-            } else {
-                //检查是否是项目负责人
-                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
-                if (projectList.size() > 0) {
-                    List<Integer> collect = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                    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());
-                }
+            }
+            //检查是否是项目负责人
+            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 {
@@ -4855,65 +4864,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId(),user.getId());
                 System.out.println("renyuan==>"+ganttData.size());
                 List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("leader_id", user.getId()).eq("company_id", user.getCompanyId()));
-                //是小组长
-                if (!leaderList.isEmpty()){
-                    List<Integer> projectIdList = leaderList.stream().map(ProjectLeader::getProjectId).collect(Collectors.toList());
-                    projectIdList.add(-1);
-                    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");
-                    userIdsExtra.addAll(userProjectIds);
-                    List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByGeneralMemb(userProjectIds, startDate, endDate, user.getCompanyId(), user.getId(),targetUserId);
-                    for (Map map : taskPlanByGeneralMemb) {
-                        map.put("leaderOrManager",1);
-                    }
-                    List<Map> taskPlanWithLeave = projectMapper.getTaskPlanWithLeave(null, startDate, endDate, user.getCompanyId(), user.getId(), targetUserId);
-                    for (Map map : taskPlanWithLeave) {
-                        map.put("leaderOrManager",1);
-                    }
-                    ganttData.addAll(taskPlanByGeneralMemb);
-                    ganttData.addAll(taskPlanWithLeave);
-                    System.out.println("renyuan0==>"+taskPlanByGeneralMemb.size());
-                    System.out.println("renyuan1==>"+taskPlanWithLeave.size());
-                }
-                //找到自己担任项目经理的项目,: is_task_plan==1 ,checkFirstId=自己的id 并且 task_status=3
-                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
-                if (!projectList.isEmpty()){
-                    List<Integer> projectIdList = projectList.stream().map(Project::getId).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");
-                    userIdsExtra.addAll(collectUserIdList);
-                    List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByProManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId);
-                    for (Map map : getTaskPlanByProManager) {
-                        map.put("leaderOrManager",2);
-                    }
-                    System.out.println("renyuan2==>"+getTaskPlanByProManager.size());
-                    ganttData.addAll(getTaskPlanByProManager);
-                }
-
-                if (user.getRoleName().equals("区域经理&PM")){
-                    List<Task> taskList = taskService.list(new QueryWrapper<Task>().eq("check_second_id", user.getId()));
-                    List<Integer> taskIdList = taskList.stream().map(Task::getId).collect(Collectors.toList());
-                    taskIdList.add(-1);
-                    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");
-                    userIdsExtra.addAll(collectUserIdList);
-                    List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByAreaManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId);
-                    for (Map map : getTaskPlanByProManager) {
-                        map.put("leaderOrManager",2);
-                    }
-                    System.out.println("renyuan3==>"+getTaskPlanByProManager.size());
-                    ganttData.addAll(getTaskPlanByProManager);
-                }
-                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);
                 QueryWrapper<BusinessTrip> btQueryWrapper =new QueryWrapper<>();
                 btQueryWrapper.in("owner_id", userIds);
                 if (startDate != null && endDate != null) {
@@ -4969,67 +4919,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                 }
 
-
-                for(int i=0;i<leaveSheetList.size();i++){
-                    GanttDataItem curItem = new GanttDataItem();;
-                    if (!leaveSheetList.get(i).getOwnerId().equals(lsLastItemId)) {
-                        //抽取父级对象,人员名称
-                        int finalI = i;
-                        Optional<User> first = AllUser.stream().filter(us -> us.getId().equals(leaveSheetList.get(finalI).getOwnerId())).findFirst();
-                        Integer departmentId =null;
-                        if(first.isPresent()){
-                            departmentId=first.get().getDepartmentId();
-                        }
-                        GanttDataItem parent = new GanttDataItem();
-                        parent.id = leaveSheetList.get(i).getOwnerId();
-                        parent.userId = leaveSheetList.get(i).getOwnerId();
-                        parent.text = leaveSheetList.get(i).getOwnerName();
-                        parent.render = "split";
-                        parent.start_date = leaveSheetList.get(i).getStartDate().toString();
-                        parent.end_date = leaveSheetList.get(i).getEndDate().toString();
-                        parent.time = 0;
-                        parent.parent=String.valueOf(departmentId);
-                        parent.setObjType(0);
-                        itemList.add(parent);
-                        lsLastItemId =leaveSheetList.get(i).getOwnerId();
-                    }
-                    curItem.id = "请假_"+leaveSheetList.get(i).getId();
-                    curItem.userId = leaveSheetList.get(i).getOwnerId();
-                    switch (leaveSheetList.get(i).getLeaveType()){
-                        //case 0:curItem.text = "事假";
-                        case 0:curItem.text = MessageUtils.message("leave.thing");
-                            break;
-                        //case 1:curItem.text = "病假";
-                        case 1:curItem.text = MessageUtils.message("leave.illness");
-                            break;
-                        //case 2:curItem.text = "年假";
-                        case 2:curItem.text = MessageUtils.message("leave.year");
-                            break;
-                        //case 3:curItem.text = "产假";
-                        case 3:curItem.text = MessageUtils.message("leave.maternity");
-                            break;
-                        //case 4:curItem.text = "婚假";
-                        case 4:curItem.text = MessageUtils.message("leave.marry");
-                            break;
-                        //case 5:curItem.text = "丧假";
-                        case 5:curItem.text = MessageUtils.message("leave.die");
-                            break;
-                        //case 6:curItem.text = "调休假";
-                        case 6:curItem.text = MessageUtils.message("leave.compensatory");
-                            break;
-                        //case 7:curItem.text = "陪产假";
-                        case 7:curItem.text = MessageUtils.message("leave.paternity");
-                            break;
-                        //case 8:curItem.text = "其他";
-                        case 8:curItem.text = MessageUtils.message("leave.other");
-                            break;
-                    }
-                    curItem.start_date = leaveSheetList.get(i).getStartDate().toString();
-                    curItem.end_date =leaveSheetList.get(i).getEndDate().toString();
-                    curItem.parent = lsLastItemId;
-                    itemList.add(curItem);
-                    lsLastItemId = leaveSheetList.get(i).getOwnerId();
-                }
                 for(int i=0;i<businessTripList.size();i++){
                     GanttDataItem curItem = new GanttDataItem();;
                     if (!businessTripList.get(i).getOwnerId().equals(btLastItemId)) {
@@ -5087,7 +4976,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 if (taskType!=null) {
                     List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
                     List<Integer> collect = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                    List<Task> tasks = taskMapper.selectList(new QueryWrapper<Task>().eq("task_type", taskType).in("project_id", collect));
+                    List<Task> tasks = taskMapper.selectList(new QueryWrapper<Task>().eq("task_plan_type", taskType).in("project_id", collect));
                     List filterPids = tasks.stream().map(Task::getProjectId).collect(Collectors.toList());
                     if (projectIds == null) {
                         projectIds = filterPids;
@@ -5097,37 +4986,37 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                 }
                 ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),groupName,taskType,user.getId());
-                System.out.println("ganttData1:"+ganttData.size());
-                List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("leader_id", user.getId()).eq("company_id", user.getCompanyId()));
-                //是小组长
-                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,targetProjectId);
-                    System.out.println("ganttData2:"+taskPlanByGeneralMemb.size());
-                    ganttData.addAll(taskPlanByGeneralMemb);
-                }
-                //找到自己担任项目经理的项目,: is_task_plan==1 ,checkFirstId=自己的id 并且 task_status=3
-                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
-                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,targetProjectId);
-                    System.out.println("ganttData2:"+taskPlanByProjectManager.size());
-                    ganttData.addAll(taskPlanByProjectManager);
-                }
-
-                if (user.getRoleName().equals("区域经理&PM")){
-                    List<Task> taskList = taskService.list(new QueryWrapper<Task>().eq("check_second_id", user.getId()));
-                    List<Integer> taskIdList = taskList.stream().map(Task::getId).collect(Collectors.toList());
-                    taskIdList.add(-1);
-                    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,targetProjectId);
-                    System.out.println("ganttData2:"+taskPlanByProjectAreaManager.size());
-                    ganttData.addAll(taskPlanByProjectAreaManager);
-                }
+//                System.out.println("ganttData1:"+ganttData.size());
+//                List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("leader_id", user.getId()).eq("company_id", user.getCompanyId()));
+//                //是小组长
+//                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,targetProjectId);
+//                    System.out.println("ganttData2:"+taskPlanByGeneralMemb.size());
+//                    ganttData.addAll(taskPlanByGeneralMemb);
+//                }
+//                //找到自己担任项目经理的项目,: is_task_plan==1 ,checkFirstId=自己的id 并且 task_status=3
+//                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
+//                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,targetProjectId);
+//                    System.out.println("ganttData2:"+taskPlanByProjectManager.size());
+//                    ganttData.addAll(taskPlanByProjectManager);
+//                }
+//
+//                if (user.getRoleName().equals("区域经理&PM")){
+//                    List<Task> taskList = taskService.list(new QueryWrapper<Task>().eq("check_second_id", user.getId()));
+//                    List<Integer> taskIdList = taskList.stream().map(Task::getId).collect(Collectors.toList());
+//                    taskIdList.add(-1);
+//                    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,targetProjectId);
+//                    System.out.println("ganttData2:"+taskPlanByProjectAreaManager.size());
+//                    ganttData.addAll(taskPlanByProjectAreaManager);
+//                }
                 QueryWrapper<BusinessTrip> btQueryWrapper =new QueryWrapper<>();
                 QueryWrapper<BustripProject> bpQueryWrapper =new QueryWrapper<>();
                 btQueryWrapper.in("owner_id", userIds);
@@ -5183,7 +5072,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             }
 
-//            ganttData.forEach(System.out::println);
             String lastItemId = null;
             GanttDataItem lastParentItem = null;
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -5225,19 +5113,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
                     curItem.id = exeId;
                     curItem.userId = (String) map.get("user_id");
-                    if (map.get("taskPlanType")!=null&&(Integer)map.get("taskPlanType")==3){
-                        curItem.text ="请假";
-                    }else {
-                        curItem.text = (String) map.get("project_name")+"/"+(String)map.get("task_name");
-                        curItem.setCheckFirstId(map.get("checkFirstId")==null?null:(String) map.get("checkFirstId"));
-                        curItem.setCheckSecondId(map.get("checkSecondId")==null?null:(String) map.get("checkSecondId"));
-                    }
+                    curItem.text = (String) map.get("project_name")+"/"+(String)map.get("task_name");
+//                    curItem.setCheckFirstId(map.get("checkFirstId")==null?null:(String) map.get("checkFirstId"));
+//                    curItem.setCheckSecondId(map.get("checkSecondId")==null?null:(String) map.get("checkSecondId"));
                     curItem.start_date = start_date;
 
                     curItem.setTaskPlanType(map.get("taskPlanType")==null?null:(Integer)map.get("taskPlanType"));
                     curItem.setIsTaskPlan(map.get("isTaskPlan")==null?null:(Integer)map.get("isTaskPlan"));
                     curItem.setTaskStatus(map.get("taskStatus")==null?null:(Integer)map.get("taskStatus"));
                     curItem.setTaskId(map.get("taskId")==null?null:(Integer)map.get("taskId"));
+                    curItem.setColor(map.get("color") == null?null:(String) map.get("color"));
                     if (map.get("id")!=null){
                         Integer projectIdSelect = (Integer) map.get("id");
                         List<String> leaderIdcollect = projectLeaderList.stream().filter(p -> p.getProjectId().equals(projectIdSelect)).map(ProjectLeader::getLeaderId).collect(Collectors.toList());
@@ -5277,12 +5162,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     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.setColor(map.get("color") == null?null:(String) map.get("color"));
                     if (map.get("id")!=null){
                         Integer projectIdSelect = (Integer) map.get("id");
                         List<String> leaderIdcollect = projectLeaderList.stream().filter(p -> p.getProjectId().equals(projectIdSelect)).map(ProjectLeader::getLeaderId).collect(Collectors.toList());
                         curItem.setLeaderIdList(leaderIdcollect);
                     }
-                    curItem.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
                     curItem.setTaskPlan(map.get("taskPlan")==null?null:(Integer)map.get("taskPlan"));
                     curItem.start_date = start_date;
                     curItem.end_date = end_date;
@@ -14279,7 +14164,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 task.setCreateDate(localDate);
                                 task.setCompanyId(companyId);
                                 task.setSapTaskCode(group.getProjectElementID());
-                                task.setName(group.getTaskGroupName()==null?"空的任务名称":group.getTaskGroupName().getName());
+                                task.setName(group.getTaskGroupName()==null?"空的计划名称":group.getTaskGroupName().getName());
                                 Task three = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,task.getSapTaskCode()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
                                 if(three!=null){
                                     task.setId(three.getId());
@@ -14330,7 +14215,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                 task.setCreateDate(localDate);
                                 task.setCompanyId(companyId);
                                 task.setSapTaskCode(targetStage.getProjectElementID());
-                                task.setName(targetStage.getTaskGroupName()==null?"空的任务名称":targetStage.getTaskGroupName().getName());
+                                task.setName(targetStage.getTaskGroupName()==null?"空的计划名称":targetStage.getTaskGroupName().getName());
                                 Task two = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,task.getSapTaskCode()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
                                 if(two!=null){
                                     task.setId(two.getId());
@@ -14369,7 +14254,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                             task.setCreateDate(localDate);
                             task.setCompanyId(companyId);
                             task.setSapTaskCode(targetTask.getProjectElementID());
-                            task.setName(targetTask.getTaskGroupName()==null?"空的任务名称":targetTask.getTaskGroupName().getName());
+                            task.setName(targetTask.getTaskGroupName()==null?"空的计划名称":targetTask.getTaskGroupName().getName());
                             Task one = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,targetTask.getProjectElementID()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
                             if(one!=null){
                                 task.setId(one.getId());

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -8943,7 +8943,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             report.setGroupName(optional.get().getName());
                         }
                     }
-                    //任务名称设置
+                    //计划名称设置
                     if (report.getTaskId() != null) {
                         Optional<Task> optional = taskList.stream().filter(t->t.getId().equals(report.getTaskId())).findFirst();
                         if (optional.isPresent()) {

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskProgressServiceImpl.java

@@ -115,7 +115,7 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
                     jsonObj.put("value",project.getProjectName());
 
                     JSONObject jsonObj1=new JSONObject();
-                    jsonObj1.put("key", "任务名称");
+                    jsonObj1.put("key", "计划名称");
                     jsonObj1.put("value",task.getName());
 
                     JSONObject jsonObj2=new JSONObject();

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskRestartServiceImpl.java

@@ -129,7 +129,7 @@ public class TaskRestartServiceImpl extends ServiceImpl<TaskRestartMapper, TaskR
         List<String> titleList=new ArrayList<>();
         titleList.add("项目编号");
         titleList.add("项目名称");
-        titleList.add("任务名称");
+        titleList.add("计划名称");
         titleList.add("重启原因");
         titleList.add("责任人");
         titleList.add("重启时间");

+ 10 - 2
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -1120,12 +1120,20 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 if (executorList.stream().noneMatch(e->e.getAuditStatus() != TaskController.STATUS_DOING)) {
                     task.setTaskStatus(TaskController.STATUS_DOING);
                     taskMapper.updateById(task);
+                    //给小组长发消息,提醒通过了
+                    User owner = userMapper.selectById(task.getCreaterId());
+                    Information information = new Information();
+                    information.setMsg("您有工作计划审核通过了");
+                    information.setType(11);
+                    information.setUserId(owner.getId());
+                    information.setTime(LocalDateTime.now());
+                    informationMapper.insert(information);
+
                     //整个任务都审核通过了,才算正式发布
                     if(CollectionUtils.isNotEmpty(executorList)){
                         for (TaskExecutor taskExecutor : executorList) {
                             //给任务的执行人发送信息提醒
-                            User owner = userMapper.selectById(taskExecutor.getExecutorId());
-                            Information information = new Information();
+                            information = new Information();
                             information.setMsg("您有新的任务");
                             information.setContent(taskExecutor.getProjectId()==null?null:(""+taskExecutor.getProjectId()));
                             information.setType(1);

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

@@ -2843,6 +2843,25 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return msg;
     }
 
+    @Override
+    public HttpRespMsg getMyDeptSimpleUserList() {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+        List<Integer> allManagedDeptIdList = departmentService.getAllMainManagedDeptIdList(user, departmentList);
+
+        QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id, name, phone, job_number, department_id").eq("company_id", user.getCompanyId()).eq("is_active", 1);
+        if (allManagedDeptIdList.size() > 0) {
+            wrapper.in("department_id", allManagedDeptIdList);
+            List<User> userList = userMapper.selectList(wrapper);
+            msg.data = userList;
+        } else {
+            msg.data = new ArrayList<>();
+        }
+        return msg;
+    }
+
 
     @Override
     public HttpRespMsg getUserListByRole(HttpServletRequest request,String tableName) {

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/task/TimingTask.java

@@ -376,7 +376,7 @@ public class TimingTask {
             /*jsonObject.put("startDate",startDate);
             jsonObject.put("endDate",endDate);*/
             jsonObject.put("workDate",startDate);
-            jsonObject.put("gmtFinished",startDate);
+            jsonObject.put("gmtFinished",dtf1.format(yesterday.withHour(0).withMinute(0).withSecond(0)) + "," + dtf1.format(yesterday.withHour(23).withMinute(59).withSecond(59)));
             String jsonString = jsonObject.toJSONString();
             List<UserFvTime> userFvTimeList=new ArrayList<>();
             List<LeaveSheet> leaveSheetList=new ArrayList<>();
@@ -2108,7 +2108,7 @@ public class TimingTask {
                                     task.setCreateDate(localDate);
                                     task.setCompanyId(companyId);
                                     task.setSapTaskCode(group.getProjectElementID());
-                                    task.setName(group.getTaskGroupName()==null?"空的任务名称":group.getTaskGroupName().getName());
+                                    task.setName(group.getTaskGroupName()==null?"空的计划名称":group.getTaskGroupName().getName());
                                     Task three = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,task.getSapTaskCode()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
                                     if(three!=null){
                                         task.setId(three.getId());
@@ -2158,7 +2158,7 @@ public class TimingTask {
                                     task.setCreateDate(localDate);
                                     task.setCompanyId(companyId);
                                     task.setSapTaskCode(targetStage.getProjectElementID());
-                                    task.setName(targetStage.getTaskGroupName()==null?"空的任务名称":targetStage.getTaskGroupName().getName());
+                                    task.setName(targetStage.getTaskGroupName()==null?"空的计划名称":targetStage.getTaskGroupName().getName());
                                     Task two = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,task.getSapTaskCode()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
                                     if(two!=null){
                                         task.setId(two.getId());
@@ -2197,7 +2197,7 @@ public class TimingTask {
                                 task.setCreateDate(localDate);
                                 task.setCompanyId(companyId);
                                 task.setSapTaskCode(targetTask.getProjectElementID());
-                                task.setName(targetTask.getTaskGroupName()==null?"空的任务名称":targetTask.getTaskGroupName().getName());
+                                task.setName(targetTask.getTaskGroupName()==null?"空的计划名称":targetTask.getTaskGroupName().getName());
                                 Task one = taskMapper.selectOne(new LambdaQueryWrapper<Task>().eq(Task::getProjectId, task.getProjectId()).eq(Task::getSapTaskCode,targetTask.getProjectElementID()).eq(Task::getGroupId, task.getGroupId()).eq(Task::getStagesId, task.getStagesId()));
                                 if(one!=null){
                                     task.setId(one.getId());

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/i18n/messages.properties

@@ -473,7 +473,7 @@ entry.injuryInsurance=工伤保险
 entry.housingProvidentFund=住房公积金
 entry.totalCost=总成本
 entry.noProject=无项目
-entry.taskName=任务名称
+entry.taskName=计划名称
 entry.laborCost=人工成本
 entry.creator=创建人
 entry.creDate=创建日期

+ 8 - 6
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/ProjectMapper.xml

@@ -741,29 +741,31 @@
     </select>
 
     <select id="getTaskPlanByMemb" 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,
+        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.task_plan_type as taskPlanType,task_type.color as color, task.is_task_plan as isTaskPlan,
         task.task_status as taskStatus,task.id as taskId,task.task_plan taskPlan
         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`
         WHERE user.`id` IN
         <foreach collection="userIds" close=")" open="(" separator="," index="" item="item">
             #{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.is_task_plan =0
+        and task.end_date is not null
         AND project.`status` = 1
         ORDER BY user.id, task.start_date
     </select>
 
     <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.task_status as taskStatus,task.id as taskId,task.task_plan taskPlan,
+        task.task_plan_type as taskPlanType,task_type.color as color,task.is_task_plan as isTaskPlan,task.task_status as taskStatus,task.id as taskId,task.task_plan taskPlan,
         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
+        left join task_type on task_type.id = task.task_plan_type
         <if test="groupName !=null and groupName !='' ">
             LEFT JOIN task_group tg ON tg.project_id = project.id
         </if>
@@ -778,10 +780,10 @@
             and tg.name = #{groupName} and task.group_id=tg.id
         </if>
         <if test="taskType !=null  ">
-            and task.task_type = #{taskType}
+            and task.task_plan_type = #{taskType}
         </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.task_plan =0
+        and task.end_date is not null
         AND project.`status` = 1
         ORDER BY project.id, task.start_date
     </select>

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskMapper.xml

@@ -847,13 +847,14 @@
 
     <select id="getMyAuditTaskList"
             resultMap="AuditorResultMap">
-        SELECT DISTINCT task.*, task_executor.`first_auditor_id`, task_executor.`second_auditor_id`, u1.name AS first_auditor_name, u2.`name` AS second_auditor_name, project.`project_name`, stages.stages_name
+        SELECT task.*, task_executor.`first_auditor_id`, group_concat(task_executor.`second_auditor_id`) as second_auditor_id, u1.name AS first_auditor_name, group_concat(u2.`name`) AS second_auditor_name, project.`project_name`, stages.stages_name
         FROM task LEFT JOIN task_executor ON task.id = task_executor.`task_id`
         left join project on project.id = task.`project_id`
         LEFT JOIN USER u1 ON u1.id = task_executor.`first_auditor_id` LEFT JOIN USER u2 ON u2.id = task_executor.`second_auditor_id`
         left join stages on stages.id = task.stages_id
         ${ew.customSqlSegment}
         and (task_executor.`audit_status` = 3 AND task_executor.`first_auditor_id` = #{userId} ) or (task.task_status = 4 and task_executor.`audit_status` = 4 AND task_executor.`second_auditor_id` = #{userId} )
+        group by task.id
         order by task.id desc
         <if test="pageStart != null and pageSize != null">
             limit #{pageStart}, #{pageSize}

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_mld/index.html

@@ -14,7 +14,7 @@
     <link rel="shortcut icon" type="image/x-icon" href="./favicon.ico" />
     <link href="./static/css/public.css" rel="stylesheet" type="text/css" />
     <!-- <script async defer src="http://47.101.180.183:9999/api/application/embed?protocol=http&host=47.101.180.183:9999&token=56c5bbad807f9a14"></script> -->
-    <script async defer src="https://chatai.ttkuaiban.com/api/application/embed?protocol=https&host=chatai.ttkuaiban.com&token=8aa88c0a6d804a57"></script>
+    <!-- <script async defer src="https://chatai.ttkuaiban.com/api/application/embed?protocol=https&host=chatai.ttkuaiban.com&token=8aa88c0a6d804a57"></script> -->
     <!-- 引入样式 -->
     <!-- <link href="https://cdn.staticfile.org/element-ui/2.13.0/theme-chalk/index.css" rel="stylesheet"/> -->
     <!-- <link rel="stylesheet" href="./static/js/element-uiCss.css"> -->

+ 2 - 77
fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue

@@ -133,7 +133,7 @@
                     <quill-editor style="height: 150px" ref="text" v-model="addForm.taskDesc" class="myQuillEditor" :options="editorOption" @blur="onEditorBlur($event)" @focus="onEditorFocus($event)" :disabled="doYouWantToDisableAll"/>
                 </el-form-item>
                 <!-- 富文本 -->
-                <div v-if="addForm.id != null">
+                <div v-if="addForm.id != null && addForm.taskStatus == 0">
                     <el-divider ></el-divider>
                     <!-- 任务进展 -->
                     <template v-if="!timelabel || isRelationItem">
@@ -253,94 +253,19 @@
                     </span>
                     </el-dialog>
                     </template>
-                    <!-- 子任务/关联任务 -->
-                    <p ><i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
-                        <el-link style="float:right;" @click="addRelation" v-if="timelabel && !isRelationItem">{{ $t('associatedTask') }}</el-link>
-                        <el-link style="float:right;" @click="addSubTask" v-else>{{ $t('addingsubtask') }}</el-link>
-                    </p>
-                    <!-- 关联任务列表 -->
-                    <el-table key="guanlian" :data="relationSubTaskList" v-if="timelabel && !isRelationItem"
-                    :header-cell-style="{'font-weight':'normal'}"
-                    highlight-current-row
-                    v-loading="listLoading"
-                    style="width: 100%;margin-top:10px;"
-                    @row-click="relationTaskClick">
-                        <el-table-column prop="taskStatus" :label="$t('wan-cheng')" width="50" >
-                            <template slot-scope="scope">
-                                <el-checkbox :disabled="scope.row.taskStatus==2" :checked="scope.row.taskStatus==1?true:false" size="large" class="cb" @change="relationFinishTask(scope.row)"></el-checkbox>
-                            </template>
-                        </el-table-column>
-                        <el-table-column prop="taskName" :label="$t('biao-ti')" >
-                            <template slot-scope="scope">
-                                <el-tooltip class="item themeFontColor" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;">
-                                    <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.taskName}}</span>
-                                </el-tooltip>
-                            </template>
-                        </el-table-column>
-                        <el-table-column :label="$t('operation')" width="130" align="left">
-                            <template slot-scope="scope">
-                                <el-button @click.stop.native="deleteRelationItem(scope.row.id)" size="mini">{{ $t('dissociated') }}</el-button>
-                            </template>
-                        </el-table-column>
-                    </el-table>
-                    <!--子任务列表 -->
-                    <el-table key="zi" :data="addForm.subTaskList" v-else
-                            :header-cell-style="{'font-weight':'normal'}"
-                            highlight-current-row v-loading="listLoading" style="width: 100%;margin-top:10px;" @row-click="taskLineClick">
-                                <el-table-column prop="taskStatus" :label="$t('wan-cheng')" width="50" >
-                                <template slot-scope="scope">
-                                <el-checkbox :disabled="scope.row.taskStatus==2" :checked="scope.row.taskStatus==1?true:false" size="large" class="cb"  
-                                                @change="finishTask(scope.row)"
-                                                ></el-checkbox>
-                                </template>
-                            </el-table-column>
-                            <el-table-column prop="name" :label="$t('biao-ti')" >
-                                <template slot-scope="scope">
-                                    <el-tooltip class="item" effect="dark" :content="scope.row.name" placement="top">
-                                    <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.name}}</span>
-                                    </el-tooltip>
-                                </template>
-                            </el-table-column>
-                            <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" width="100" >
-                                <template slot-scope="scope">
-                                    <span v-if="user.userNameNeedTranslate != 1">
-                                        {{scope.row.executorName == null?$t('dai-fen-pei'):scope.row.executorName}}
-                                    </span>
-                                    <span v-if="user.userNameNeedTranslate == 1">
-                                        <span v-if="scope.row.executorName == null">
-                                            {{$t('dai-fen-pei')}}
-                                        </span>
-                                        <span v-else>
-                                            <span v-for="item,index in scope.row.executorName" :key="index">
-                                                <TranslationOpenDataText type='userName' :openid='item'></TranslationOpenDataText>
-                                                <span v-if="index < scope.row.executorName.length - 1">,</span>
-                                            </span>
-                                        </span>
-                                    </span>
-                                </template>
-                            </el-table-column>
-                            <el-table-column prop="endDate" :label="$t('deadline')" width="100" >
-                                <template slot-scope="scope">
-                                    <p v-if="scope.row.endDate >= times">{{scope.row.endDate}}</p>
-                                    <p v-else style="background: #e62412; color: #fff;text-align: center; border-radius: 3px;">{{scope.row.endDate}}</p>
-                                </template>
-                            </el-table-column>
-                    </el-table>
                 </div>
             </template>
             
         </el-form>
         <!-- 关联文件列表 -->
-        <template v-if="isEditFile && addForm.needAudit">
+        <template v-if="isEditFile && addForm.needAudit && addForm.taskStatus == 0">
             <div style="width:100%;margin:1em 0;">
                 <i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
                 <el-link @click="relationFileClick()" style="float:right;margin-left:10px">{{ $t('associatedfiles') }}</el-link>
                 <el-upload style="float:right;" action="#" :http-request="uploadFileClick" :show-file-list="false" :multiple="false">
                     <el-link>{{ $t('uoloadFiles') }}</el-link>
                 </el-upload>
-                
             </div>
-
             <el-table
                 v-loading="fileListLoading"
                 ref="filetable"