Browse Source

为博海增加导出日报含未填写人员

seyason 8 months ago
parent
commit
f4e28b1e88

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserDailyWorkItem.java

@@ -2,10 +2,13 @@ package com.management.platform.entity.vo;
 
 import lombok.Data;
 
+import java.util.HashMap;
+
 @Data
 public class UserDailyWorkItem {
     public String userId;
     public String createDate;
+    public Integer departmentId;
     public String department;
     public String name;
     private String inactiveDate;
@@ -13,4 +16,21 @@ public class UserDailyWorkItem {
     public Integer corpwxDeptId;
     public String cardTime;
     public String status;
+    public String jobNumber;
+
+    public HashMap toHashMap() {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("userId", userId);
+        map.put("createDate", createDate);
+        map.put("departmentId", departmentId);
+        map.put("department", department);
+        map.put("name", name);
+        map.put("inactiveDate", inactiveDate);
+        map.put("corpwxUserId", corpwxUserId);
+        map.put("corpwxDeptId", corpwxDeptId);
+        map.put("cardTime", cardTime);
+        map.put("status", status);
+        map.put("jobNumber", jobNumber);
+        return map;
+    }
 }

+ 39 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -14,6 +14,7 @@ import com.management.platform.service.*;
 import com.management.platform.util.*;
 import com.management.platform.webservice.po.*;
 import com.management.platform.webservice.po.SapPeriod;
+import freemarker.template.SimpleDate;
 import jdk.nashorn.api.scripting.ScriptObjectMirror;
 import lombok.SneakyThrows;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
@@ -5959,8 +5960,23 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             }
             List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
-            DateTimeFormatter dft = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
+            if (companyId == 4281) {
+                //苏州博海,需要导出未填写的记录
+                //计算从endDate到startDate的工作日数组
+                List<LocalDate> workDays = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0);
+                //allReportByDate针对每一个员工,列表中没有的工作日要补上
+                HttpRespMsg noReportMsg = getNoReportUserList(request, startDate, endDate, null);
+                List<UserDailyWorkItem> noReportUserList = (List<UserDailyWorkItem>)noReportMsg.data;
+                //追加到最后
+                for (UserDailyWorkItem item : noReportUserList) {
+                    HashMap mapItem = item.toHashMap();
+                    mapItem.put("duration", 0);
+                    mapItem.put("isOvertime", 0);
+                    mapItem.put("createDate", item.getCreateDate());
+                    mapItem.put("state", 99);
+                    allReportByDate.add(mapItem);
+                }
+            }
             for (Map<String, Object> map : allReportByDate) {
                 long p1 = System.currentTimeMillis();
                 List<String> item=new ArrayList<>();
@@ -6060,8 +6076,15 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         item.add("");
                     }
                 }
-                item.add(new SimpleDateFormat("yyyy-MM-dd")
-                        .format((java.sql.Date) map.get("createDate")));
+                if (map.get("createDate") instanceof java.sql.Date) {
+                    item.add(new SimpleDateFormat("yyyy-MM-dd")
+                            .format((java.sql.Date) map.get("createDate")));
+                } else {
+                    item.add((String)map.get("createDate"));
+                }
+
+//                item.add(new SimpleDateFormat("yyyy-MM-dd")
+//                        .format((java.sql.Date) map.get("createDate")));
                 item.add(map.get("duration").toString());
                 if (timeType.getMultiWorktime() == 1) {
                     if ((Integer)map.get("multiWorktime") == 1) {
@@ -6261,6 +6284,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         //case 1:row.createCell(index).setCellValue("已通过");
                         case 1:item.add(MessageUtils.message("stages.passed"));
                             break;
+                        case 99:
+                            item.add("未提交");
+                            break;
                     }
                 }
                 if(timeType.getSyncCorpwxTime()==1){
@@ -6268,7 +6294,13 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (map.get("corpwxUserId") != null) {
                         for (UserCorpwxTime userCorpwxTime : userCorpwxTimeList) {
                             String s = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(userCorpwxTime.getCreateDate());
-                            String s1 = timeDf.format(map.get("createDate"));
+                            String s1 = null;
+                            if (map.get("createDate") instanceof java.sql.Date) {
+                                s1 = timeDf.format(map.get("createDate"));
+                            } else {
+                                s1 = (String)map.get("createDate");
+                            }
+
                             if(map.get("corpwxUserId").equals(userCorpwxTime.getCorpwxUserid())&&s.equals(s1)){
                                 //cellValue = userCorpwxTime.getStartTime()+"-"+userCorpwxTime.getEndTime()+",工作时长"+userCorpwxTime.getWorkHours();
                                 cellValue = userCorpwxTime.getStartTime()+"-"+userCorpwxTime.getEndTime()+","+MessageUtils.message("entry.workingHours")+userCorpwxTime.getWorkHours();
@@ -6633,6 +6665,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     if (!list.stream().anyMatch(item->item.get("id").equals(curUser.getId())&&sdf.format((java.sql.Date)item.get("createDate")).equals(dateStr))) {
                         UserDailyWorkItem noRecord = new UserDailyWorkItem();
                         noRecord.userId = curUser.getId();
+                        noRecord.departmentId = curUser.getDepartmentId();
+                        noRecord.jobNumber = curUser.getJobNumber();
                         cpwxIds.add(curUser.getCorpwxUserid());
                         List<Map> userCorpwxListOn = userCorpwxTimeMapList.stream().filter(mapList -> mapList.get("create_date").toString().equals(dateStr)
                                 && mapList.get("corpwx_userid").equals(curUser.getCorpwxUserid())).collect(Collectors.toList());