Bladeren bron

修改任务文件相关接口,新需求:以里程碑完成度来算还是按任务工时完成度

zhouyy 4 maanden geleden
bovenliggende
commit
a95dea596d

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/ProjectTimeCostVO.java

@@ -0,0 +1,12 @@
+package com.management.platform.entity.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ProjectTimeCostVO {
+    private Integer projectId;
+    private BigDecimal planHoursSum;
+    private BigDecimal realHoursSum;
+}

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java

@@ -7,6 +7,7 @@ import com.management.platform.entity.Task;
 import com.management.platform.entity.TimeTask;
 import com.management.platform.entity.bo.QueryTaskChargePage;
 import com.management.platform.entity.vo.ProjectTaskTimeCostVO;
+import com.management.platform.entity.vo.ProjectTimeCostVO;
 import com.management.platform.entity.vo.TaskChargePageVO;
 import com.management.platform.entity.vo.TaskFileChargePageVO;
 import org.apache.ibatis.annotations.Param;
@@ -83,4 +84,6 @@ public interface TaskMapper extends BaseMapper<Task> {
     int getTaskFileChargePageTotal(@Param("queryBO") QueryTaskChargePage queryBO, @Param("deptIds")List<Integer> branchDepartment);
 
     List<ProjectTaskTimeCostVO> getProjectAllTaskTimeCost(@Param("projectId") Integer projectId);
+
+    List<ProjectTimeCostVO> getProjectTaskTimeCostByIds(@Param("projectIds")List<Integer> projectIds);
 }

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

@@ -1588,6 +1588,28 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             }
 
+            //以里程碑完成度来算还是按任务工时完成度
+            if(1== timeType.getProjectProgressCheck()){
+                List<ProjectTimeCostVO> projectTimeCostList = taskMapper.getProjectTaskTimeCostByIds(projectIds);
+                if(CollectionUtils.isNotEmpty(projectTimeCostList)){
+                    Map<Integer, ProjectTimeCostVO> projectTimeMap = projectTimeCostList.stream()
+                            .collect(Collectors.toMap(ProjectTimeCostVO::getProjectId, t -> t));
+                    for (ProjectVO projectVO : list) {
+                        ProjectTimeCostVO tmpVO = projectTimeMap.get(projectVO.getId());
+                        if(null != tmpVO){
+                            int percentRes = 0;
+                            if(tmpVO.getPlanHoursSum().compareTo(new BigDecimal(0)) > 0){
+                                percentRes = tmpVO.getRealHoursSum().multiply(new BigDecimal(100))
+                                        .divide(tmpVO.getPlanHoursSum(),RoundingMode.HALF_UP).intValue();
+                            }
+                            projectVO.setProgress(percentRes);
+                        }
+                    }
+
+                }
+            }
+
+
             //stringList.add("未分类");
             stringList.add(MessageUtils.message("excel.unclassified"));
             Long total = projectIPage.getTotal();

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

@@ -234,7 +234,7 @@
         </if>
     </select>
     <select id="getTaskPlanRealData" resultType="java.util.Map">
-        SELECT task.id,task.`name`,task_executor.id as teId, DATE_FORMAT(task.`end_date`, '%Y-%m-%d') as endDate, task.`plan_hours` as planHours,task.plan_cost as planCost,
+        SELECT task.id,task.`name`,task_executor.id as teId, DATE_FORMAT(task.`end_date`, '%Y-%m-%d') as endDate, task_executor.`plan_hours` as planHours,task.plan_cost as planCost,
         (SELECT IFNULL(SUM(working_time),0) FROM report WHERE report.`task_id` = task.id AND report.`state` = 1) AS realHours,
         task_executor.executor_id as executorId,task_executor.executor_name AS executorName,
         IF(task_executor.real_cost = 0, task.plan_cost, task_executor.real_cost) AS realCost,
@@ -708,7 +708,7 @@
     </select>
     <select id="getProjectAllTaskTimeCost"
             resultType="com.management.platform.entity.vo.ProjectTaskTimeCostVO">
-        SELECT task.id as taskId,ifnull(task.`plan_hours`,0) as planHours,
+        SELECT task.id as taskId,ifnull(task_executor.`plan_hours`,0) as planHours,
         (SELECT IFNULL(SUM(working_time),0) FROM report WHERE report.`task_id` = task.id AND report.`state` = 1) AS realHours,
         task_executor.executor_id as executorId
         FROM task
@@ -717,4 +717,21 @@
         WHERE task.project_id = #{projectId}
           and project.id = #{projectId}
     </select>
+    <select id="getProjectTaskTimeCostByIds" resultType="com.management.platform.entity.vo.ProjectTimeCostVO">
+        select project_id,sum(planHours) as planHoursSum,sum(realHours) as realHoursSum
+        from
+            (
+                SELECT task.project_id,task.id as taskId,ifnull(task_executor.`plan_hours`,0) as planHours,
+                       (SELECT IFNULL(SUM(working_time),0) FROM report WHERE report.`task_id` = task.id AND report.`state` = 1) AS realHours,
+                       task_executor.executor_id as executorId
+                FROM task
+                         LEFT JOIN project ON project.id = task.`project_id`
+                         left join task_executor on task_executor.task_id=task.id
+                WHERE task.project_id in
+                      <foreach collection="projectIds" item="projectId" separator="," open="(" close=")">
+                            #{projectId}
+                        </foreach>
+            )tmp1
+        group by project_id
+    </select>
 </mapper>