Jelajahi Sumber

人员工时分配表导出

cs 2 tahun lalu
induk
melakukan
40917533d3

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

@@ -537,8 +537,8 @@ public class ProjectController {
     }
 
     @RequestMapping("/exportUserWorkingTimeList")
-    public HttpRespMsg exportUserWorkingTimeList(String userId,Integer projectId,String startDate, String endDate){
-        return projectService.exportUserWorkingTimeList(userId,projectId,startDate,endDate,request);
+    public HttpRespMsg exportUserWorkingTimeList(String userId,Integer projectId,String startDate, String endDate,Integer departmentId){
+        return projectService.exportUserWorkingTimeList(userId,projectId,startDate,endDate,request,departmentId);
     }
 
     /**

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

@@ -25,5 +25,5 @@ public interface LeaveSheetMapper extends BaseMapper<LeaveSheet> {
 
     List<LeaveSheet> selectLeave(Integer companyId, String startDate, String endDate);
 
-    List<Map<String,Object>> selectLeaveAll(Integer companyId, String startDate, String endDate);
+    List<Map<String,Object>> selectLeaveAll(Integer companyId, String startDate, String endDate,List<Integer> branchDepartment,List<Integer> deptIds);
 }

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

@@ -148,7 +148,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize,HttpServletRequest request,Integer departmentId);
 
-    HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request);
+    HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request,Integer departmentId);
 
     HttpRespMsg getUserReportTimelinessRate(HttpServletRequest request, String startDate, String endDate, Integer departmentId, String userId,Integer pageIndex,Integer pageSize);
 

+ 14 - 69
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -5814,8 +5814,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     @Override
     public HttpRespMsg getUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate, Integer pageIndex, Integer pageSize,HttpServletRequest request,Integer departmentId) {
         //1.获取分页结果
-        Integer size=pageSize;//查询条数
-        Integer start =(pageIndex-1)*size;//limit开始
+        if (pageSize!=null && pageIndex!=null){
+            Integer size=pageSize;//查询条数
+            Integer start =(pageIndex-1)*size;//limit开始
+        }
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
@@ -5908,7 +5910,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             li.put("proportion",nf.format(divide));
         });
         //全月请假人员
-        List<Map<String, Object>> maps = leaveSheetMapper.selectLeaveAll(companyId, startDate, endDate);
+        List<Map<String, Object>> maps = leaveSheetMapper.selectLeaveAll(companyId, startDate, endDate,branchDepartment,deptIds);
         TimeType timetype = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
         List<Map<String, Object>> leaveStaff = new ArrayList<>();
         //去重
@@ -5938,7 +5940,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if (!stringObjectHashMap.containsKey("deptName")){
                 stringObjectHashMap.put("deptName","未分配");
             }
-            stringObjectHashMap.put("isPublic",0);
+            stringObjectHashMap.put("isPublic",0.0);
             stringObjectHashMap.put("jobNumber",map.get("jobNumber"));
             Double leaveHours = 0.0;
             int days = WorkDayCalculateUtils.getWorkDaysListInRange(map.get("startDate").toString(),map.get("endDate").toString(), 0).size();
@@ -5974,7 +5976,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             leaveHours = new BigDecimal(leaveHours).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
             stringObjectHashMap.put("leaveSum",leaveHours+"h");
             stringObjectHashMap.put("proportion","0%");
-            stringObjectHashMap.put("unPublic",0);
+            stringObjectHashMap.put("unPublic",0.0);
             stringObjectHashMap.put("userId",map.get("id"));
             if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
                 stringObjectHashMap.put("username",map.get("wxOpenId"));
@@ -6023,44 +6025,21 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request) {
+    public HttpRespMsg exportUserWorkingTimeList(String userId, Integer projectId, String startDate, String endDate,HttpServletRequest request,Integer departmentId) {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
-        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全公司工时分配");
-        List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责部门工时分配");
-        List<Integer> deptIds=null;
-        List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",user.getCompanyId()));
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()).eq("company_id",user.getCompanyId()));
-        List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
-        //判断查看权限
-        if(functionAllList.size()==0){
-            deptIds=new ArrayList<>();
-            deptIds.add(-1);
-            if(functionDeptList.size()>0){
-                List<Integer> collect = departmentList.stream().distinct().map(dm -> dm.getDepartmentId()).collect(Collectors.toList());
-                List<Integer> otherCollect = departmentOtherManagerList.stream().distinct().map(dom -> dom.getDepartmentId()).collect(Collectors.toList());
-                collect.addAll(otherCollect);
-                for (Integer integer : collect) {
-                    List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
-                    deptIds.addAll(branchDepartment);
-                }
-            }
-        }
-        List<Map<String, Object>> list = projectMapper.getUserWorkingTimeList(userId, user.getCompanyId(), startDate, endDate, projectId,null,null,null,deptIds);
+        HttpRespMsg userWorkingTimeList = getUserWorkingTimeList(userId,projectId,startDate, endDate, null,null,request,departmentId);
+        HashMap result = (HashMap) userWorkingTimeList.data;
+        List<Map<String, Object>> resultList = (List<Map<String, Object>>) result.get("result");
         //String[] string={"人员","部门","工号","普通项目工时","公共项目工时","请假时长","总工时","公共项目工时占比"};
         String[] string={MessageUtils.message("entry.personnel"),MessageUtils.message("excel.department"),MessageUtils.message("entry.No"),MessageUtils.message("entry.GenProHours"),MessageUtils.message("entry.PubProHours"),MessageUtils.message("leave.duration"),MessageUtils.message("entry.totalManHours"),MessageUtils.message("entry.PubProHoursProp")};
         List<List<String>> dataList=new ArrayList<>();
         dataList.add(Arrays.asList(string));
         Integer companyId = user.getCompanyId();
-        List<LeaveSheet> leaveSheet = leaveSheetMapper.selectLeave(companyId,startDate,endDate);
         List<Department> deptName = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
-        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
-        LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
-        for(Map<String,Object> item:list){
+        for(Map<String,Object> item:resultList){
             //取部门名
             for (Department department : deptName) {
                 if (item.get("deptId").toString().equals(department.getDepartmentId().toString())){
@@ -6069,47 +6048,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }else {
                         item.put("deptName",getSupDepartment(department));
                     }
-                    continue;
+                    break;
                 }
             }
             if (!item.containsKey("deptName")){
                 item.put("deptName","未分配");
             }
-            //计算请假时间
-            Float leaveSum = 0F;
-            for (LeaveSheet sheet : leaveSheet) {
-                if (sheet.getOwnerId().equals(item.get("userId"))){
-//                    System.err.println(sheet.getOwnerName());
-//                    System.err.println(sheet.getStartDate());
-//                    System.err.println(sheet.getEndDate());
-                    Float timeHours = sheet.getTimeHours();
-                    //若请假开始时间不在筛选时间内
-                    if (sheet.getStartDate().isBefore(localStartDate)) {
-                        long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
-                        timeHours -= day * allDay.getAllday();
-//                        System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
-                    }
-                    //若请假结束时间不在筛选时间内
-                    if (sheet.getEndDate().isAfter(localEndDate)) {
-                        long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
-                        timeHours -= day * allDay.getAllday();
-//                        System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
-                    }
-//                    System.err.println("计算完的时间为:" + timeHours);
-                    leaveSum += timeHours;
-                }
-            }
-//            System.err.println("总时间为:"+leaveSum);
-            item.put("leaveSum",leaveSum + "h");
-            double workTimeDouble = Double.parseDouble(item.get("workingTime").toString()) + leaveSum;
-            BigDecimal workTimeBig = new BigDecimal(workTimeDouble);
-            item.put("workingTime",workTimeBig.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
             List<String> subList=new ArrayList<>();
-            double isPublic = (double) item.get("isPublic");
-            double workingTime = (double) item.get("workingTime");
-            BigDecimal bdIsPublic=new BigDecimal(isPublic);
-            BigDecimal divide = bdIsPublic.divide(BigDecimal.valueOf(workingTime),2,BigDecimal.ROUND_HALF_UP);
-            NumberFormat nf = NumberFormat.getPercentInstance();
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                 subList.add("$userName="+(item.get("corpwxUserId")==null?"":item.get("corpwxUserId"))+"$");
             }else {
@@ -6121,7 +6066,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             subList.add(String.valueOf(item.get("isPublic")));
             subList.add(String.valueOf(item.get("leaveSum")));
             subList.add(String.valueOf(item.get("workingTime")));
-            subList.add(String.valueOf(nf.format(divide)));
+            subList.add(String.valueOf(item.get("proportion")));
             dataList.add(subList);
         }
         //生成excel文件导出

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml

@@ -63,5 +63,17 @@
         on user.id = leave_sheet.owner_id
         where user.company_id = #{companyId} and leave_sheet.status=0
         and leave_sheet.start_date &lt;=#{endDate} and leave_sheet.end_date &gt;=#{startDate}
+        <if test="branchDepartment!=null and branchDepartment.size()>0">
+            and user.department_id in
+            <foreach collection="branchDepartment" open="(" close=")" item="item" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="deptIds!=null and deptIds.size()>0">
+            and user.department_id in
+            <foreach collection="deptIds" open="(" item="item" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
     </select>
 </mapper>