|
@@ -1236,6 +1236,29 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg getProjectByLeader(Integer projectId, HttpServletRequest request) {
|
|
|
|
+ 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);
|
|
|
|
+
|
|
|
|
+ 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);
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ }
|
|
|
|
+
|
|
public HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
|
|
public HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
//通过公司id获取该公司所有的项目列表
|
|
//通过公司id获取该公司所有的项目列表
|
|
@@ -4741,7 +4764,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
//根据人员权限来获取,
|
|
//根据人员权限来获取,
|
|
String token = request.getHeader("TOKEN");
|
|
String token = request.getHeader("TOKEN");
|
|
User user = userMapper.selectById(token);
|
|
User user = userMapper.selectById(token);
|
|
|
|
+
|
|
List<String> userIds = new ArrayList<>();
|
|
List<String> userIds = new ArrayList<>();
|
|
|
|
+ List<String> userIdsExtra = new ArrayList<>();
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
|
|
List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
|
|
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<User> AllUser = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()));
|
|
@@ -4782,6 +4807,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
} else {
|
|
} else {
|
|
if (functionList.size() == 0) {
|
|
if (functionList.size() == 0) {
|
|
//普通员工只看自己相关的
|
|
//普通员工只看自己相关的
|
|
|
|
+ userIds.add("-1");
|
|
List<Participation> participationList
|
|
List<Participation> participationList
|
|
= participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", userIds));
|
|
= participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", userIds));
|
|
projectIds = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
|
|
projectIds = participationList.stream().map(Participation::getProjectId).collect(Collectors.toList());
|
|
@@ -4796,6 +4822,59 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
String btLastItemId = null;
|
|
String btLastItemId = null;
|
|
//按人员获取
|
|
//按人员获取
|
|
ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId());
|
|
ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId());
|
|
|
|
+ if (user.getCompanyId()==Constant.MLD_COMPANY_ID){
|
|
|
|
+ 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");
|
|
|
|
+ userProjectIds.removeAll(userIds);
|
|
|
|
+ userIdsExtra.addAll(userProjectIds);
|
|
|
|
+ List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByGeneralMemb(userProjectIds, startDate, endDate, user.getCompanyId(), user.getId(),targetUserId);
|
|
|
|
+ for (Map map : taskPlanByGeneralMemb) {
|
|
|
|
+ map.put("leaderOrManager",1);
|
|
|
|
+ }
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+ //找到自己担任项目经理的项目,: 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);
|
|
|
|
+ }
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
|
|
+ ganttData.addAll(getTaskPlanByProManager);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
QueryWrapper<LeaveSheet> lsQueryWrapper=new QueryWrapper();
|
|
QueryWrapper<LeaveSheet> lsQueryWrapper=new QueryWrapper();
|
|
lsQueryWrapper.in("owner_id", userIds);
|
|
lsQueryWrapper.in("owner_id", userIds);
|
|
if (startDate != null && endDate != null) {
|
|
if (startDate != null && endDate != null) {
|
|
@@ -4839,6 +4918,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
extraUidList.add(uid);
|
|
extraUidList.add(uid);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ extraUidList.addAll(userIdsExtra);
|
|
if (extraUidList.size() > 0) {
|
|
if (extraUidList.size() > 0) {
|
|
List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", extraUidList).eq("is_active", 1));
|
|
List<User> userList = userMapper.selectList(new QueryWrapper<User>().in("id", extraUidList).eq("is_active", 1));
|
|
for (User u : userList) {
|
|
for (User u : userList) {
|
|
@@ -4867,7 +4947,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
if(first.isPresent()){
|
|
if(first.isPresent()){
|
|
departmentId=first.get().getDepartmentId();
|
|
departmentId=first.get().getDepartmentId();
|
|
}
|
|
}
|
|
- System.out.println("====================="+departmentId+"======================");
|
|
|
|
GanttDataItem parent = new GanttDataItem();
|
|
GanttDataItem parent = new GanttDataItem();
|
|
parent.id = leaveSheetList.get(i).getOwnerId();
|
|
parent.id = leaveSheetList.get(i).getOwnerId();
|
|
parent.userId = leaveSheetList.get(i).getOwnerId();
|
|
parent.userId = leaveSheetList.get(i).getOwnerId();
|
|
@@ -4954,6 +5033,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
itemList.add(curItem);
|
|
itemList.add(curItem);
|
|
btLastItemId = businessTripList.get(i).getOwnerId();
|
|
btLastItemId = businessTripList.get(i).getOwnerId();
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
//按照项目获取
|
|
//按照项目获取
|
|
@@ -4983,7 +5063,40 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId());
|
|
|
|
|
|
+ ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),groupName,taskType);
|
|
|
|
+ System.out.println("ganttData1:"+ganttData.size());
|
|
|
|
+ if (user.getCompanyId()==Constant.MLD_COMPANY_ID){
|
|
|
|
+ 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<BusinessTrip> btQueryWrapper =new QueryWrapper<>();
|
|
QueryWrapper<BustripProject> bpQueryWrapper =new QueryWrapper<>();
|
|
QueryWrapper<BustripProject> bpQueryWrapper =new QueryWrapper<>();
|
|
btQueryWrapper.in("owner_id", userIds);
|
|
btQueryWrapper.in("owner_id", userIds);
|
|
@@ -5039,7 +5152,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- ganttData.forEach(System.out::println);
|
|
|
|
|
|
+// ganttData.forEach(System.out::println);
|
|
String lastItemId = null;
|
|
String lastItemId = null;
|
|
GanttDataItem lastParentItem = null;
|
|
GanttDataItem lastParentItem = null;
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
@@ -5056,7 +5169,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
String start_date = sdf.format((Date) map.get("start_date"));
|
|
String start_date = sdf.format((Date) map.get("start_date"));
|
|
String end_date = sdf.format((Date) map.get("end_date"));
|
|
String end_date = sdf.format((Date) map.get("end_date"));
|
|
String projectId = ""+ (Integer) map.get("id");
|
|
String projectId = ""+ (Integer) map.get("id");
|
|
- System.out.println(map);
|
|
|
|
//String exeId = "任务_"+map.get("task_id") +"_"+ (type==0?(Integer) map.get("exe_id"):userId);
|
|
//String exeId = "任务_"+map.get("task_id") +"_"+ (type==0?(Integer) map.get("exe_id"):userId);
|
|
String exeId = MessageUtils.message("excel.task") + "_"+map.get("task_id") +"_"+ (type==0?(Integer) map.get("exe_id"):userId);
|
|
String exeId = MessageUtils.message("excel.task") + "_"+map.get("task_id") +"_"+ (type==0?(Integer) map.get("exe_id"):userId);
|
|
String taskId = ""+ (Integer) map.get("task_id");
|
|
String taskId = ""+ (Integer) map.get("task_id");
|
|
@@ -5082,16 +5194,29 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
|
|
|
curItem.id = exeId;
|
|
curItem.id = exeId;
|
|
curItem.userId = (String) map.get("user_id");
|
|
curItem.userId = (String) map.get("user_id");
|
|
- curItem.text = (String) map.get("project_name")+"/"+(String)map.get("task_name");
|
|
|
|
|
|
+ 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.start_date = start_date;
|
|
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.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
|
|
|
|
+ curItem.setTaskPlan(map.get("taskPlan")==null?null:(Integer)map.get("taskPlan"));
|
|
curItem.end_date = end_date;
|
|
curItem.end_date = end_date;
|
|
curItem.time = (Integer)map.get("duration");
|
|
curItem.time = (Integer)map.get("duration");
|
|
curItem.parent = lastItemId;
|
|
curItem.parent = lastItemId;
|
|
curItem.setObjType(2);
|
|
curItem.setObjType(2);
|
|
itemList.add(curItem);
|
|
itemList.add(curItem);
|
|
lastItemId = userId;
|
|
lastItemId = userId;
|
|
- } else {
|
|
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
if (!projectId.equals(lastItemId)) {
|
|
if (!projectId.equals(lastItemId)) {
|
|
//抽取父级对象,项目名称
|
|
//抽取父级对象,项目名称
|
|
GanttDataItem parent = new GanttDataItem();
|
|
GanttDataItem parent = new GanttDataItem();
|
|
@@ -5110,6 +5235,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
curItem.id = projectId+"_"+exeId;
|
|
curItem.id = projectId+"_"+exeId;
|
|
curItem.userId = (String) map.get("user_id");
|
|
curItem.userId = (String) map.get("user_id");
|
|
curItem.text = (String) map.get("name")+"/"+(String)map.get("task_name");
|
|
curItem.text = (String) map.get("name")+"/"+(String)map.get("task_name");
|
|
|
|
+ curItem.setTaskPlanType(map.get("taskPlanType")==null?null:(Integer)map.get("taskPlanType"));
|
|
|
|
+ curItem.setIsTaskPlan(map.get("isTaskPlan")==null?null:(Integer)map.get("isTaskPlan"));
|
|
|
|
+ curItem.setCheckFirstId(map.get("checkFirstId")==null?null:(String) map.get("checkFirstId"));
|
|
|
|
+ curItem.setCheckSecondId(map.get("checkSecondId")==null?null:(String) map.get("checkSecondId"));
|
|
|
|
+ curItem.setTaskStatus(map.get("taskStatus")==null?null:(Integer)map.get("taskStatus"));
|
|
|
|
+ curItem.setTaskId(map.get("taskId")==null?null:(Integer)map.get("taskId"));
|
|
|
|
+ curItem.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
|
|
|
|
+ curItem.setTaskPlan(map.get("taskPlan")==null?null:(Integer)map.get("taskPlan"));
|
|
curItem.start_date = start_date;
|
|
curItem.start_date = start_date;
|
|
curItem.end_date = end_date;
|
|
curItem.end_date = end_date;
|
|
curItem.time = (Integer)map.get("duration");
|
|
curItem.time = (Integer)map.get("duration");
|
|
@@ -5130,7 +5263,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
}
|
|
}
|
|
|
|
|
|
msg.data = itemList;
|
|
msg.data = itemList;
|
|
-
|
|
|
|
return msg;
|
|
return msg;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -8623,12 +8755,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
List<Project> projectList = projectMapper.selectList(
|
|
List<Project> projectList = projectMapper.selectList(
|
|
new QueryWrapper<Project>().eq("incharger_id", user.getId()).eq("status", 1));
|
|
new QueryWrapper<Project>().eq("incharger_id", user.getId()).eq("status", 1));
|
|
List<String> userIds = new ArrayList<>();
|
|
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>();
|
|
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
|
|
if (deptIds.size() > 0) {
|
|
if (deptIds.size() > 0) {
|
|
queryWrapper.in("department_id", deptIds).or().in("id", userIds);
|
|
queryWrapper.in("department_id", deptIds).or().in("id", userIds);
|
|
@@ -12789,7 +12926,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId());
|
|
|
|
|
|
+ ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),null,null);
|
|
QueryWrapper<BusinessTrip> btQueryWrapper =new QueryWrapper<>();
|
|
QueryWrapper<BusinessTrip> btQueryWrapper =new QueryWrapper<>();
|
|
QueryWrapper<BustripProject> bpQueryWrapper =new QueryWrapper<>();
|
|
QueryWrapper<BustripProject> bpQueryWrapper =new QueryWrapper<>();
|
|
btQueryWrapper.in("owner_id", userIds);
|
|
btQueryWrapper.in("owner_id", userIds);
|
|
@@ -13483,6 +13620,166 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg getProjectTaskPlanFTEData(Integer pageIndex, Integer pageSize, String monthStart, String monthEnd, String area, String userId, String sortProp, Integer sortOrder, Integer departmentId, HttpServletRequest request) {
|
|
|
|
+ HttpRespMsg httpRespMsg =new HttpRespMsg();
|
|
|
|
+ User targetUser = userMapper.selectById(request.getHeader("token"));
|
|
|
|
+ List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全部部门FTE计划报表");
|
|
|
|
+ List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门FTE计划报表");
|
|
|
|
+ List<Integer> deptIds=null;
|
|
|
|
+ List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
|
|
|
|
+ List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
|
|
|
|
+ List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
|
|
|
|
+ //判断查看权限
|
|
|
|
+ if(functionAllList.size()==0){
|
|
|
|
+ deptIds=new ArrayList<>();
|
|
|
|
+ deptIds.add(-1);
|
|
|
|
+ if(functionDeptList.size()>0){
|
|
|
|
+ List<Integer> collect = userDepartmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
|
|
|
|
+ List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
|
|
|
|
+ collect.addAll(otherCollect);
|
|
|
|
+ //将该用户管理的所有部门以及部门的子部门id添加到deptIds集合中
|
|
|
|
+ for (Integer integer : collect) {
|
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
|
|
|
|
+ deptIds.addAll(branchDepartment);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(departmentId!=null){
|
|
|
|
+ deptIds=new ArrayList<>();
|
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
|
|
|
|
+ deptIds.addAll(branchDepartment);
|
|
|
|
+ }
|
|
|
|
+ long total = 0;
|
|
|
|
+ List<Map<String,Object>> resultList = null;
|
|
|
|
+ String startDate = null;
|
|
|
|
+ String endDate = null;
|
|
|
|
+ LocalDate timeStart = LocalDate.parse(monthStart, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
+ LocalDate timeEnd = LocalDate.parse(monthEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
+ startDate = timeStart.with(TemporalAdjusters.firstDayOfMonth()).toString();
|
|
|
|
+ endDate = timeEnd.with(TemporalAdjusters.lastDayOfMonth()).toString();
|
|
|
|
+ int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
|
|
|
|
+ TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", targetUser.getCompanyId()));
|
|
|
|
+ Float monthTime = days * allDay.getAllday();
|
|
|
|
+ if(pageIndex!=null&&pageSize!=null){
|
|
|
|
+ Integer size=pageSize;
|
|
|
|
+ Integer start=(pageIndex-1)*size;
|
|
|
|
+ resultList=projectMapper.getFTETaskPlanData(targetUser.getCompanyId(),startDate,endDate,start,size,area,userId,sortProp,sortOrder,null,deptIds,departmentId);
|
|
|
|
+ total=projectMapper.getFTETaskPlanData(targetUser.getCompanyId(),startDate,endDate,null,null,area,userId,sortProp,sortOrder,null,deptIds,departmentId).size();
|
|
|
|
+ }else{
|
|
|
|
+ resultList=projectMapper.getFTETaskPlanData(targetUser.getCompanyId(),startDate,endDate,null,null,area,userId,sortProp,sortOrder,null,deptIds,departmentId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //计算日期区间一共几个月
|
|
|
|
+ Period period = Period.between(timeStart, timeEnd);
|
|
|
|
+ for (Map<String, Object> map : resultList) {
|
|
|
|
+ Float planHours = Float.parseFloat( map.get("planHours").toString());
|
|
|
|
+ map.put("FTE",Float.parseFloat(planHours == null?"0":planHours.toString())/monthTime);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", targetUser.getCompanyId()));
|
|
|
|
+ if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact().equals(1)){
|
|
|
|
+ for (Map<String, Object> map : resultList) {
|
|
|
|
+ map.put("userName",map.get("wxUserId"));
|
|
|
|
+ map.put("corpwx_userid","$userName=" + map.get("wxUserId") + "$");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
|
+ map.put("resultList",resultList);
|
|
|
|
+ map.put("total",total);
|
|
|
|
+ map.put("monthTime",monthTime);
|
|
|
|
+ httpRespMsg.data = map;
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg exportTaskPlanFTEData(String monthStart, String monthEnd, String area,String userId, Integer departmentId, HttpServletRequest request) {
|
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
|
+ User user = userMapper.selectById(request.getHeader("token"));
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ CompanyDingding dingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ List<UserCustom> userCustoms = userCustomMapper.selectList(new QueryWrapper<UserCustom>().eq("company_id", user.getCompanyId()).orderByAsc("id"));
|
|
|
|
+ List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部部门FTE计划报表");
|
|
|
|
+ List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门FTE计划报表");
|
|
|
|
+ List<Integer> deptIds=null;
|
|
|
|
+ List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
|
|
|
|
+ List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
|
|
|
|
+ List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
|
|
|
|
+ //判断查看权限
|
|
|
|
+ if(functionAllList.size()==0){
|
|
|
|
+ deptIds=new ArrayList<>();
|
|
|
|
+ deptIds.add(-1);
|
|
|
|
+ if(functionDeptList.size()>0){
|
|
|
|
+ List<Integer> collect = userDepartmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
|
|
|
|
+ List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
|
|
|
|
+ collect.addAll(otherCollect);
|
|
|
|
+ //将该用户管理的所有部门以及部门的子部门id添加到deptIds集合中
|
|
|
|
+ for (Integer integer : collect) {
|
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
|
|
|
|
+ deptIds.addAll(branchDepartment);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(departmentId!=null){
|
|
|
|
+ deptIds=new ArrayList<>();
|
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
|
|
|
|
+ deptIds.addAll(branchDepartment);
|
|
|
|
+ }
|
|
|
|
+ String startDate = null;
|
|
|
|
+ String endDate = null;
|
|
|
|
+ LocalDate timeStart = LocalDate.parse(monthStart, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
+ LocalDate timeEnd = LocalDate.parse(monthEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
|
+ startDate = timeStart.with(TemporalAdjusters.firstDayOfMonth()).toString();
|
|
|
|
+ endDate = timeEnd.with(TemporalAdjusters.lastDayOfMonth()).toString();
|
|
|
|
+ int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
|
|
|
|
+ TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
|
|
|
|
+ Float monthTime = days * allDay.getAllday();
|
|
|
|
+ List<Map<String, Object>> list = projectMapper.getFTETaskPlanData(user.getCompanyId(), startDate, endDate, null, null, area, userId, null, null, null, deptIds, departmentId);
|
|
|
|
+ List<List<String>> dataList=new ArrayList<>();
|
|
|
|
+ List<String> titleList=new ArrayList<>();
|
|
|
|
+ List<String> subtitle=new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ titleList.add("序号");
|
|
|
|
+ titleList.add("岗位");
|
|
|
|
+ titleList.add("项目编号");
|
|
|
|
+ titleList.add("项目名称");
|
|
|
|
+ titleList.add("姓名");
|
|
|
|
+ titleList.add("计划工时(H)");
|
|
|
|
+ titleList.add("FTE(计划工时/当月计划工时基数)");
|
|
|
|
+ dataList.add(titleList);
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ List<String> item=new ArrayList<>();
|
|
|
|
+ item.add((i+1)+"");
|
|
|
|
+ item.add(list.get(i).get("area")==null?"":list.get(i).get("area").toString());
|
|
|
|
+ item.add(list.get(i).get("projectCode")==null?"":list.get(i).get("projectCode").toString());
|
|
|
|
+ item.add(list.get(i).get("projectName")==null?"":list.get(i).get("projectName").toString());
|
|
|
|
+ item.add(list.get(i).get("userName")==null?"":list.get(i).get("userName").toString());
|
|
|
|
+ item.add(list.get(i).get("planHours")==null?"": String.valueOf(new BigDecimal(list.get(i).get("planHours").toString()).setScale(2,BigDecimal.ROUND_HALF_UP)));
|
|
|
|
+ item.add(
|
|
|
|
+ list.get(i).get("planHours") == null ? "" :
|
|
|
|
+ new BigDecimal(list.get(i).get("planHours").toString())
|
|
|
|
+ .divide(
|
|
|
|
+ BigDecimal.valueOf(monthTime),
|
|
|
|
+ 2, // 保留2位小数
|
|
|
|
+ RoundingMode.HALF_UP // 四舍五入
|
|
|
|
+ )
|
|
|
|
+ .toString()
|
|
|
|
+ );
|
|
|
|
+ dataList.add(item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String fileName = "FTE计划报表"+System.currentTimeMillis();
|
|
|
|
+ try {
|
|
|
|
+ return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,dingding,fileName, dataList, path);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ httpRespMsg.data = pathPrefix + fileName+".xlsx";
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ }
|
|
|
|
+
|
|
//导出FTE报表数据
|
|
//导出FTE报表数据
|
|
@Override
|
|
@Override
|
|
public HttpRespMsg exportFTEData(String monthStart,String monthEnd, String area,Integer departmentId,HttpServletRequest request) {
|
|
public HttpRespMsg exportFTEData(String monthStart,String monthEnd, String area,Integer departmentId,HttpServletRequest request) {
|