|
@@ -332,6 +332,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//分页获取项目列表
|
|
|
@Override
|
|
|
@Transactional(readOnly = true)
|
|
@@ -2525,6 +2526,111 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
return httpRespMsg;
|
|
|
}
|
|
|
|
|
|
+ public HttpRespMsg exportProjectEstimatedWorkTime(HttpServletRequest request,Integer projectId) {
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
+
|
|
|
+ User user = userMapper.selectById(request.getHeader("Token"));
|
|
|
+ Integer companyId = user.getCompanyId();
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
|
|
|
+
|
|
|
+
|
|
|
+ //该公司下的allday
|
|
|
+ float allday=timeTypeMapper.selectOne(new QueryWrapper<TimeType>()
|
|
|
+ .eq("company_id",companyId)).getAllday();
|
|
|
+ //根据公司的id搜索该公司有哪些项目 20231108之前完成的不统计,状态为进行中/已完成
|
|
|
+ List<Project> selectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId).in("status", 1, 2));
|
|
|
+ List<Integer> collectProjectIds = selectList.stream().map(Project::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<Project> selectProjects = projectMapper.selectList(new QueryWrapper<Project>().in("id", collectProjectIds)
|
|
|
+ .isNull("finish_date").or().ge("finish_date", "2023-11-08").eq(projectId != null, "project_id", projectId));
|
|
|
+
|
|
|
+ //查询到的project列表
|
|
|
+ List<Integer> collectIds = selectProjects.stream().map(Project::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //根据查询道德project列表查询总的reporeList
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>()
|
|
|
+ .in("project_id", collectIds));
|
|
|
+ //根据查询道德project列表查询总的task_groupList
|
|
|
+ List<TaskGroup> taskGroups = taskGroupMapper.selectList(new QueryWrapper<TaskGroup>()
|
|
|
+ .in("project_id", collectIds));
|
|
|
+
|
|
|
+ for (Project project : selectProjects) {
|
|
|
+ Double reallWorkTime = reportList.stream().filter(r -> r.getProjectId() .equals( project.getId()))
|
|
|
+ .mapToDouble(r->r.getWorkingTime()).sum();
|
|
|
+ String rWorkTime=reallWorkTime==null ? "0":reallWorkTime+"";
|
|
|
+ project.setReallyWorkTime(rWorkTime);
|
|
|
+ String pEstimatedWork=project.getManDay()==null ? 0*allday+"": project.getManDay()*allday+"";
|
|
|
+ project.setEstimatedWorkTime(pEstimatedWork);
|
|
|
+ List<TaskGroup> taskGroupCollect = taskGroups.stream().filter(t -> t.getProjectId() == project.getId())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ ArrayList<GroupEstimatedWorkVO> groupEstimatedWorkVOS = new ArrayList<>();
|
|
|
+
|
|
|
+ if (taskGroupCollect.size()>0){
|
|
|
+ List<Integer> groupIds = taskGroupCollect.stream().map(TaskGroup::getId).collect(Collectors.toList());
|
|
|
+ List<Report> getByProjectAndGroup = reportMapper.selectList(new QueryWrapper<Report>()
|
|
|
+ .eq("project_id", project.getId())
|
|
|
+ .in("group_id", groupIds));
|
|
|
+ for (TaskGroup taskGroup : taskGroupCollect) {
|
|
|
+ Double gReallWorkTime = getByProjectAndGroup.stream().filter(r -> r.getGroupId().equals( taskGroup.getId()))
|
|
|
+ .mapToDouble(r->r.getWorkingTime()).sum();
|
|
|
+ GroupEstimatedWorkVO groupEstimatedWorkVO = new GroupEstimatedWorkVO();
|
|
|
+ String grWorkTime=gReallWorkTime==null ? "0":gReallWorkTime+"";
|
|
|
+ String gEstimatedWork=taskGroup.getManDay()==null ? 0*allday+"": taskGroup.getManDay()*allday+"";
|
|
|
+
|
|
|
+ groupEstimatedWorkVO.setWorkTime(grWorkTime);
|
|
|
+ groupEstimatedWorkVO.setEstimatedWorkTime(gEstimatedWork);
|
|
|
+ groupEstimatedWorkVO.setId(taskGroup.getId());
|
|
|
+ groupEstimatedWorkVO.setGroupName(taskGroup.getName());
|
|
|
+
|
|
|
+ groupEstimatedWorkVOS.add(groupEstimatedWorkVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ project.setGroupEstimatedWorkVOList(groupEstimatedWorkVOS);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ List<ProjectEstimatedWorkVO> list = new ArrayList<>();
|
|
|
+
|
|
|
+ List<List<String>> exportList = new ArrayList<>();
|
|
|
+ //String[] titles = {"项目编号", "项目名称", "任务名称", "计划工时(h)", "实际工时(h)"};
|
|
|
+ String[] titles = {MessageUtils.message("entry.projectId"), 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) {
|
|
|
+ List<String> data = new ArrayList<>();
|
|
|
+
|
|
|
+ data.add(project.getProjectCode() == null?"":project.getProjectCode().toString());
|
|
|
+ data.add(project.getProjectName() == null?"":project.getProjectName());
|
|
|
+ data.add(project.getGroupName() == null?"":project.getGroupName());
|
|
|
+ data.add(project.getEstimatedWorkTime() != null?project.getEstimatedWorkTime().toString():"");
|
|
|
+ data.add(project.getReallyWorkTime() != null?project.getReallyWorkTime().toString():"");
|
|
|
+ exportList.add(data);
|
|
|
+
|
|
|
+ if (project.getGroupEstimatedWorkVOList().size()>0){
|
|
|
+ List<GroupEstimatedWorkVO> groupEstimatedWorkVOList = project.getGroupEstimatedWorkVOList();
|
|
|
+ for (GroupEstimatedWorkVO groupEstimatedWorkVO : groupEstimatedWorkVOList) {
|
|
|
+ List<String> data1 = new ArrayList<>();
|
|
|
+ data1.add(groupEstimatedWorkVO.getProjectCode() == null?"":groupEstimatedWorkVO.getProjectCode().toString());
|
|
|
+ data1.add(groupEstimatedWorkVO.getProjectName() == null?"":groupEstimatedWorkVO.getProjectName());
|
|
|
+ data1.add(groupEstimatedWorkVO.getGroupName() == null?"":groupEstimatedWorkVO.getGroupName());
|
|
|
+ data1.add(groupEstimatedWorkVO.getEstimatedWorkTime() != null?groupEstimatedWorkVO.getEstimatedWorkTime().toString():"");
|
|
|
+ data1.add(groupEstimatedWorkVO.getWorkTime() != null?groupEstimatedWorkVO.getWorkTime().toString():"");
|
|
|
+ exportList.add(data1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //String fileName = "项目任务报表_"+System.currentTimeMillis();
|
|
|
+ String fileName = "预估工时表"+System.currentTimeMillis();
|
|
|
+ try {
|
|
|
+ return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName, exportList, path);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ httpRespMsg.setError(e.getMessage());
|
|
|
+ }
|
|
|
+ return httpRespMsg;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
|
|
|
User user = userMapper.selectById(request.getHeader("Token"));
|