ソースを参照

工时成本统计,当用户是部门负责人也同时担任项目经理的情况下,按项目和项目分类统计优先按项目经理视角,统计项目下面全部的人员的工时。

QuYueTing 3 ヶ月 前
コミット
20dfdcda51

+ 8 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserWithBeisenController.java

@@ -179,14 +179,15 @@ public class UserWithBeisenController {
             msg.setError("当前员工在北森系统中不存在,请完成录入员工信息");
             return msg;
         }
-        //todo 获取指定日期的日报数据
+//        todo 获取指定日期的日报数据
         JSONArray dailyReportList = BeiSenUtils.getDailyReportList(createDate, beisenConfig.getAppKey(), beisenConfig.getAppSecret(), 1, 100);
-        //todo 获取到指定日期的考勤数据
+//        todo 获取到指定日期的考勤数据
         JSONObject item = BeiSenUtils.getAttendanceStatisticWithUser(createDate,withBeisen.get().getUserId(), beisenConfig.getAppKey(), beisenConfig.getAppSecret());
         //todo 获取到指定日期的加班数据
         JSONArray allOverTimeList = BeiSenUtils.getOverTimeList(createDate,beisenConfig.getAppKey(),beisenConfig.getAppSecret(),1,100);
         //todo 获取到指定日期的休假数据
         JSONArray vacationList = BeiSenUtils.getVacationList(createDate, beisenConfig.getAppKey(), beisenConfig.getAppSecret(),1,100);
+
         //同步休假数据到工时管家
         List<LeaveSheet> leaveSheetList=new ArrayList<>();
         for (int i = 0; i < vacationList.size(); i++) {
@@ -356,6 +357,7 @@ public class UserWithBeisenController {
                 //根据日报处理休假时长
                Stream<JSONObject> dailyReportStream = dailyReportList.stream().map(elment -> (JSONObject) elment);
                List<JSONObject> list = dailyReportStream.filter(d -> d.getString("StaffId").equals(beisen.get().getUserId())).collect(Collectors.toList());
+
                if(list.size()>0){
                    //年假
                    double annualLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("AnnualLeaveHour")).sum();
@@ -367,7 +369,10 @@ public class UserWithBeisenController {
                    double marriageLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("MarriageLeaveHour")).sum();
                    //产假
                    double maternityLeaveHour = list.stream().mapToDouble(l -> l.getDoubleValue("MaternityLeaveHour")).sum();
-                   workTime=workTime-annualLeaveHour-casualLeaveHour-sickLeaveHour-marriageLeaveHour-maternityLeaveHour;
+                   //福利年假
+                   double CustomItemHour1 = list.stream().mapToDouble(l -> l.getDoubleValue("CustomItemHour1")).sum();
+                   //打印数据
+                   workTime=workTime-annualLeaveHour-casualLeaveHour-sickLeaveHour-marriageLeaveHour-maternityLeaveHour-CustomItemHour1;
                }
             }
             UserFvTime userFvTime=new UserFvTime();

+ 27 - 34
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2459,23 +2459,20 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     deptRelatedProjectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
                 }
 
-                if(functionDpartList.size()>0){
-                    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());
-                    }
+                //有限匹配项目经理的数据视角
+                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("incharger_id", targetUser.getId()));
+                if (projectList.size() > 0) {
+                    projectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
+                    deptIds = null;
                 } else {
-                    //担任项目经理的项目
-                    List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("incharger_id", targetUser.getId()));
-                    if (projectList.size() > 0) {
-                        projectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                    } else {
-                        projectIds = new ArrayList<>();
-                        projectIds.add(-1);
+                    if(functionDpartList.size()>0){
+                        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());
+                        }
                     }
-                    deptIds = null;
                 }
             }
             List<String> userIdList=new ArrayList<>();
@@ -8936,29 +8933,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if(functionAllList.size()==0){
                 deptIds=new ArrayList<>();
                 deptIds.add(-1);
-                if(functionDpartList.size()>0){
-                    if(functionTimeList.size()>0||functionCostList.size()>0){
-                        List<Integer> collect = departmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
-                        List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
-                        collect.addAll(otherCollect);
-                        for (Integer integer : collect) {
-                            List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
-                            deptIds.addAll(branchDepartment);
-                        }
-                    }
+                //担任项目经理的项目
+                List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("incharger_id", targetUser.getId()));
+                if (projectList.size() > 0) {
+                    projectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
+                    deptIds = null;
                 } else {
-                    //担任项目经理的项目
-                    List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id").eq("incharger_id", targetUser.getId()));
-                    if (projectList.size() > 0) {
-                        projectIds = projectList.stream().map(Project::getId).collect(Collectors.toList());
-                    } else {
-                        projectIds = new ArrayList<>();
-                        projectIds.add(-1);
+                    if(functionDpartList.size()>0){
+                        if(functionTimeList.size()>0||functionCostList.size()>0){
+                            List<Integer> collect = departmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
+                            List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
+                            collect.addAll(otherCollect);
+                            for (Integer integer : collect) {
+                                List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
+                                deptIds.addAll(branchDepartment);
+                            }
+                        }
                     }
-                    deptIds = null;
                 }
             }
-            TimeType timeType = timeTypeMapper.selectById(companyId);
             List<String> userIdList=new ArrayList<>();
             if(userIds!=null&&userIds.length()>0){
                 String[] split = userIds.split(",");