Browse Source

威派格工时成本统计的查看需求

seyason 1 year ago
parent
commit
5be3d85fe7

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -29,7 +29,8 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     List<Map<String, Object>> getTimeCost(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userIdList") List<String> userIdList,
-                                          @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds, @Param("projectIds") List<Integer> projectIds);
+                                          @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds,
+                                          @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds);
 
     List<Map<String, Object>> getCustomDataSum(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userId") String userId);

+ 8 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1247,6 +1247,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<SysRichFunction> functionCostList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "查看成本统计");
             List<Integer> deptRelatedProjectIds = new ArrayList<>();
             List<Integer> projectIds = null;
+            //针对威派格,部门的主要和其他负责人需要查看部门下人员负责的项目或者项目下的任务分组的工时
+            boolean containDeptMembInchargeProjects = targetUser.getCompanyId() == 936;
+            List<String> inchargeUserIds = null;
             //判断查看权限
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
@@ -1270,6 +1273,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if(functionTimeList.size()>0||functionCostList.size()>0){
                         deptIds.addAll(allMyManagedDeptIds);
                     }
+                    if (containDeptMembInchargeProjects && deptIds.size() > 1) {
+                        inchargeUserIds = userMapper.selectList(new QueryWrapper<User>().select("id").in("department_id", deptIds)).stream().map(User::getId).collect(Collectors.toList());
+                    }
                 } else {
                     //担任项目经理的项目
                     List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("incharger_id", targetUser.getId()));
@@ -1287,7 +1293,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String[] split = userIds.split(",");
                 userIdList = Arrays.asList(split);
             }
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,null, deptRelatedProjectIds, projectIds);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,null, deptRelatedProjectIds, projectIds, inchargeUserIds);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             for (Map<String, Object> map : list) {
                 if (!map.containsKey("cost")) {
@@ -1405,7 +1411,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String[] split = userIds.split(",");
                 userIdList = Arrays.asList(split);
             }
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,filterDeptIds,deptRelatedProjectIds, manProjectIds);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,filterDeptIds,deptRelatedProjectIds, manProjectIds, inchargeUserIds);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<List<String>> allList=null ;
             List<String> sumRow = null;

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -186,6 +186,17 @@
                             #{pid}
                         </foreach>
                     </if>
+                    <if test="inchargeUserIds.size() > 0">
+                        OR a.`incharger_id` IN
+                           <foreach collection="inchargeUserIds" open="(" item="pid" separator="," close=")">
+                            #{pid}
+                        </foreach>
+                        OR b.`group_id` IN(SELECT id FROM task_group WHERE incharger_id IN
+                        <foreach collection="inchargeUserIds" open="(" item="pid" separator="," close=")">
+                            #{pid}
+                        </foreach>
+                         )
+                    </if>
                     )
                 </if>
             </otherwise>