Explorar o código

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper into master

seyason hai 1 ano
pai
achega
fa38c17ebd

+ 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,

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Project.java

@@ -14,6 +14,7 @@ import java.util.Map;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.management.platform.config.PropertyMsg;
+import com.management.platform.entity.vo.GroupEstimatedWorkVO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -458,6 +459,15 @@ public class Project extends Model<Project> {
     @TableField("from_outside")
     private Integer fromOutside;
 
+    /**
+     * 预估工时表:任务分组
+     */
+    @TableField(exist = false)
+    private List<GroupEstimatedWorkVO> groupEstimatedWorkVOList;
+
+    //实际工时
+    @TableField(exist = false)
+    private String reallyWorkTime;
 
     @Override
     protected Serializable pkVal() {

+ 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

@@ -265,5 +265,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getEffectiveLaborHourRate(String startDate, String endDate);
 
+    HttpRespMsg getProjectEstimatedWork(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request);
+
     HttpRespMsg getProjectFillTime(HttpServletRequest request, Integer projectId);
 }

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

@@ -266,6 +266,72 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return httpRespMsg;
     }
 
+    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();
+        //该公司下的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());
+
+        IPage<Project> projectIPage = projectMapper.selectPage(new Page<>(pageIndex, pageSize), new QueryWrapper<Project>().in("id", collectProjectIds)
+                .isNull("finish_date").or().ge("finish_date", "2023-11-08").eq(projectId!=null,"project_id",projectId));
+
+        //查询到的project列表
+        List<Project> records = projectIPage.getRecords();
+        List<Integer> collectIds = records.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 : records) {
+            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);
+        }
+        projectIPage.setRecords(records);
+
+        httpRespMsg.data=projectIPage;
+        return httpRespMsg;
+    }
+
     //分页获取项目列表
     @Override
     @Transactional(readOnly = true)

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

@@ -980,4 +980,12 @@
         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>