Procházet zdrojové kódy

预估工时表查询

yusm před 1 rokem
rodič
revize
2f9e286538

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

@@ -115,6 +115,16 @@ public class ProjectController {
         return projectService.getProjectPage(pageIndex, pageSize, keyword,searchField, status, category, projectId,projectMainId,deptId, sortProp, sortOrder,inchagerId,participation,startDate,endDate, request);
     }
 
+    /**
+     * 预估工时表
+     * 筛选项:项目(状态为进行中/已完成,20231108之前完成的不统计)
+     */
+    @RequestMapping("/getProjectEstimatedWork")
+    public HttpRespMsg getProjectEstimatedWork(@RequestParam Integer pageIndex, @RequestParam Integer pageSize, Integer projectId ) {
+        return projectService.getProjectEstimatedWork(pageIndex, pageSize, projectId, request);
+    }
+
+
     @RequestMapping("/saveBatchAccoDegrees")
     public HttpRespMsg saveBatchAccoDegrees(String ids,
                                    String associateDegrees,

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GroupEstimatedWorkVO.java

@@ -0,0 +1,11 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class GroupEstimatedWorkVO {
+    private Integer id;
+    private String groupName;
+    private String estimatedWorkTime;
+    private String workTime;
+}

+ 15 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/ProjectEstimatedWorkVO.java

@@ -0,0 +1,15 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+//预计工时
+@Data
+public class ProjectEstimatedWorkVO {
+    private Integer id;
+    private String projectName;
+    private String estimatedWorkTime;
+    private String workTime;
+    private List<GroupEstimatedWorkVO> groupEstimatedWorkVOList;
+}

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -183,4 +183,8 @@ public interface ReportMapper extends BaseMapper<Report> {
     List<Map<String, Object>> getPushProjectReportToSap(Integer companyId, String startDate, String endDate,String userId);
 
     List<Report> getSumWorkingTime(ArrayList<Integer> deptIds, String startDate, String endDate);
+
+    double getReallWorkingTimeByProjectId(Integer id);
+
+    double getReallWorkingTimeByProjectAndGroup(Integer projectId, Integer taskGroupId);
 }

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

@@ -264,4 +264,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg syncProjectWithSap(String startDate,String endDate);
 
     HttpRespMsg getEffectiveLaborHourRate(String startDate, String endDate);
+
+    HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
 }

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

@@ -266,6 +266,59 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        //通过公司id获取该公司所有的项目列表
+        User user = userMapper.selectById(request.getHeader("Token"));
+        Integer companyId = user.getCompanyId();
+        //根据公司的id搜索该公司有哪些项目  20231108之前完成的不统计,状态为进行中/已完成
+        LambdaQueryWrapper<Project> lqw = new LambdaQueryWrapper<>();
+        lqw.in(Project::getStatus,1,2).eq(Project::getCompanyId,companyId);
+        List<Project> projectList = projectMapper.selectList(lqw);
+        //该公司下的allday
+        float allday=timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id",companyId)).getAllday();
+        ArrayList<ProjectEstimatedWorkVO> projectEstimatedWorkVOS = new ArrayList<>();
+        if (projectList.size()>0){
+            LocalDate date = LocalDate.parse("2023-11-08");
+            //20231108之前完成的不统计,状态为进行中/已完成
+            List<Project> projects = projectList.stream().filter(p -> (p.getFinishDate().isAfter(date)) || (p.getFinishDate() == null)).collect(Collectors.toList());
+
+            for (Project project : projects) {
+                ProjectEstimatedWorkVO projectEstimatedWorkVO = new ProjectEstimatedWorkVO();
+                projectEstimatedWorkVO.setId(project.getId());
+                projectEstimatedWorkVO.setProjectName(project.getProjectName());
+                projectEstimatedWorkVO.setEstimatedWorkTime(String.valueOf(project.getManDay()*allday));
+                double reallyProjectWorkingTime=reportMapper.getReallWorkingTimeByProjectId(project.getId());
+                projectEstimatedWorkVO.setWorkTime(String.valueOf(reallyProjectWorkingTime));
+
+                ArrayList<GroupEstimatedWorkVO> groupEstimatedWorkVOS = new ArrayList<>();
+
+                LambdaQueryWrapper<TaskGroup> tlqw = new LambdaQueryWrapper<>();
+                tlqw.eq(TaskGroup::getProjectId,project.getId());
+                List<TaskGroup> taskGroups = taskGroupMapper.selectList(tlqw);
+                if (taskGroups.size()>0){
+                    for (TaskGroup taskGroup : taskGroups) {
+                        GroupEstimatedWorkVO groupEstimatedWorkVO = new GroupEstimatedWorkVO();
+                        groupEstimatedWorkVO.setEstimatedWorkTime(String.valueOf(taskGroup.getManDay()*allday));
+                        groupEstimatedWorkVO.setId(taskGroup.getId());
+                        groupEstimatedWorkVO.setGroupName(taskGroup.getName());
+                        double reallyGroupWorkingTime=reportMapper.getReallWorkingTimeByProjectAndGroup(project.getId(),taskGroup.getId());
+                        groupEstimatedWorkVO.setEstimatedWorkTime(String.valueOf(reallyGroupWorkingTime));
+
+                        groupEstimatedWorkVOS.add(groupEstimatedWorkVO);
+                    }
+                }
+                projectEstimatedWorkVO.setGroupEstimatedWorkVOList(groupEstimatedWorkVOS);
+                projectEstimatedWorkVOS.add(projectEstimatedWorkVO);
+
+            }
+
+        }
+        httpRespMsg.data=projectEstimatedWorkVOS;
+        return httpRespMsg;
+    }
+
     //分页获取项目列表
     @Override
     @Transactional(readOnly = true)

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -980,4 +980,11 @@
         AND p.company_id=936 AND p.category IN(168,169,171,172)
         AND r.create_date BETWEEN #{startDate} AND #{endDate}
     </select>
+
+    <select id="getReallWorkingTimeByProjectId" resultType="java.lang.Double">
+        SELECT SUM(working_time) as reallyWorkingTime FROM report WHERE project_id = #{id}
+    </select>
+    <select id="getReallWorkingTimeByProjectAndGroup" resultType="java.lang.Double">
+        SELECT SUM(working_time) as reallyWorkingTime FROM report WHERE project_id = #{projectId} AND group_id = #{taskGroupId}
+    </select>
 </mapper>