Преглед на файлове

请假模块内的数据体现在每日填报工时统计中

seyason преди 1 година
родител
ревизия
6be89f50e4

+ 15 - 23
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4204,6 +4204,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         Integer companyId = user.getCompanyId();
+        Company company = companyMapper.selectById(companyId);
         //String[] weekDayCHN = {"周一","周二","周三","周四","周五","周六","周日"};
         String[] weekDayCHN = {MessageUtils.message("week.Monday"),MessageUtils.message("week.Tuesday"),MessageUtils.message("week.Wednesday"),MessageUtils.message("week.Thursday"),MessageUtils.message("week.Friday"),MessageUtils.message("week.Saturday"),MessageUtils.message("week.Sunday")};
         HttpRespMsg msg = new HttpRespMsg();
@@ -4304,9 +4305,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         //对于全部的用户已填日报,对比请假的数据,进行填充
         TimeType timeType = timeTypeMapper.selectById(companyId);
-        //获取钉钉的请假日期
+        //获取请假数据(本系统内的、钉钉和泛微同步的)
         List<LeaveSheet> leaveSheets = null;
-        if (timeType.getSyncDingding() == 1||timeType.getSyncFanwei()==1) {
+        if (timeType.getSyncDingding() == 1||timeType.getSyncFanwei()==1 || company.getPackageOa() == 1) {
             List<String> userIds = new ArrayList<>();
             for (UserMonthWork work : userMonthWorks) {
                 userIds.add(work.userId);
@@ -4326,6 +4327,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             }
 
+            //处理企业微信的请假数据
             curUserCorpTime.forEach(corpTime->{
                 java.sql.Date leaveDate = (java.sql.Date)corpTime.get("create_date");
                 String leaveDateStr = sdf.format(leaveDate);
@@ -4344,7 +4346,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             });
             //钉钉请假的数据
-            if ((timeType.getSyncDingding() == 1 || timeType.getSyncFanwei()==1)&& leaveSheets != null && leaveSheets.size() > 0) {
+            if ((timeType.getSyncDingding() == 1 || timeType.getSyncFanwei()==1 || company.getPackageOa() == 1)&& leaveSheets != null && leaveSheets.size() > 0) {
                 List<LeaveSheet> curUserLeaveList = leaveSheets.stream().filter(leave -> leave.getOwnerId().equals(userMonthWork.userId)).collect(Collectors.toList());
                 curUserLeaveList.forEach(leave->{
                     LocalDate startDate1 = leave.getStartDate();
@@ -4364,11 +4366,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                                 find.get().put("workingTime", newStr);
                             }
                         } else {
-                            //没有对应的打卡记录,直接加上当天请假
-                            Map<String, Object> leaveMap = new HashMap<>();
-                            leaveMap.put("createDate", leaveDateStr);
-                            leaveMap.put("workingTime", MessageUtils.message("leave.leaveOfDay"));
-                            worktimeList.add(leaveMap);
+                            //没有对应的打卡记录,直接加上当天请假,该日为工作日的情况下,标记为请假
+                            if (WorkDayCalculateUtils.isWorkDay(workDate)) {
+                                Map<String, Object> leaveMap = new HashMap<>();
+                                leaveMap.put("createDate", leaveDateStr);
+                                leaveMap.put("workingTime", MessageUtils.message("leave.leaveOfDay"));
+                                worktimeList.add(leaveMap);
+                            }
                         }
 
                         if (workDate.isEqual(endDate1)) {
@@ -4412,17 +4416,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<UserMonthWork> userMonthWorks = (List<UserMonthWork>) map.get("list");
         List<List<String>> dataList = new ArrayList<>();
         List<String> titleList = new ArrayList<>();
-//        titleList.add("序号");
-//        titleList.add("姓名");
-//        titleList.add("部门");
-        titleList.add(MessageUtils.message("entry.serialNo"));
-        titleList.add(MessageUtils.message("entry.name"));
-        titleList.add(MessageUtils.message("excel.department"));
+        titleList.add(MessageUtils.message("entry.serialNo"));//序号
+        titleList.add(MessageUtils.message("entry.name"));//姓名
+        titleList.add(MessageUtils.message("excel.department"));//部门
         days.forEach(d->{
-//            String dateStr = (String)d.get("date");
-//            LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-//            String chn = weekDayCHN[date.getDayOfWeek().getValue()-1];
-//            String m = ""+date.getMonthValue();
             titleList.add((String)d.get("label"));
         });
         dataList.add(titleList);
@@ -4432,7 +4429,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             dataItem.add(""+(i+1));
 
             List<Map<String, Object>> worktimeList = userMonthWork.worktimeList;
-            //dataItem.add(userMonthWork.name+(worktimeList.size()==0?"(未填)":""));
             if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                 dataItem.add("$userName="+(userMonthWork.corpwxUserId==null?"":userMonthWork.corpwxUserId)+"$"+(worktimeList.size()==0?"("+MessageUtils.message("entry.noFill")+")":""));
                 dataItem.add("$departmentName="+(userMonthWork.departmentName==null?"":userMonthWork.departmentName)+"$");
@@ -4443,10 +4439,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             DecimalFormat decimalFormat = new DecimalFormat("0.0");
             //找到那一天的工作时间
             days.forEach(d->{
-//                String dateStr = startDate;
-//                LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-//                //计算当前遍历到的那一天
-//                date = date.plusDays(d-1);
                 final String fDateStr = (String)d.get("date");
                 Optional<Map<String, Object>> op = worktimeList.stream().filter(m -> ((String) m.get("createDate")).equals(fDateStr)).findFirst();
                 if (op.isPresent()) {