소스 검색

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

zhouyy 1 개월 전
부모
커밋
8ebe1d2c6a

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/config/RefererInterceptor.java

@@ -78,6 +78,7 @@ public class RefererInterceptor extends HandlerInterceptorAdapter {
                         }
                     }
                 }
+                LOGGER.warn("请求来源IP不在白名单中, refer host="+url.getHost());
                 return false;
             }
         }

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

@@ -36,6 +36,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -374,7 +375,9 @@ public class ReportController {
                                   String summary,         //针对工作总结的字段
                                   String[] multiDegrId,
                                   Integer[] reportTargetDeptId,
-                                  String weeklyAttachment
+                                  String weeklyAttachment,
+                                  String[] extraField4,
+                                  String[] extraField5
                                     ) {
         List<Report> reportList = new ArrayList<>();
         String token = request.getHeader("Token");
@@ -537,6 +540,18 @@ public class ReportController {
                 extraField3[i] = null;
             }
         }
+        if (extraField4 == null) {
+            extraField4 = new String[projectId.length];
+            for(int i=0;i<extraField4.length; i++) {
+                extraField4[i] = null;
+            }
+        }
+        if (extraField5 == null) {
+            extraField5 = new String[projectId.length];
+            for(int i=0;i<extraField5.length; i++) {
+                extraField5[i] = null;
+            }
+        }
         if (professionProgress == null) {
             professionProgress = new String[projectId.length];
             for(int i=0;i<professionProgress.length; i++) {
@@ -1005,6 +1020,8 @@ public class ReportController {
                             report.setExtraField3(extraField3[i]);
                             report.setSapServiceId(sapServiceId[i]);
                             report.setMultiDegrId(multiDegrId[i]);
+                            report.setExtraField4(extraField4[i]);
+                            report.setExtraField5(extraField5[i]);
                             //如果是员工自由选择审批流程的方式,需要处理一下
                             if (comTimeType.getReportAuditType() == 3) {
                                 report.setAuditorSetting(auditorSettingList.get(i));
@@ -1061,6 +1078,8 @@ public class ReportController {
                                 report.setExtraField3(extraField3[i]);
                                 report.setSapServiceId(sapServiceId[i]);
                                 report.setMultiDegrId(multiDegrId[i]);
+                                report.setExtraField4(extraField4[i]);
+                                report.setExtraField5(extraField5[i]);
                                 //如果是员工自由选择审批流程的方式,需要处理一下
                                 if (comTimeType.getReportAuditType() == 3) {
                                     report.setAuditorSetting(auditorSettingList.get(i));
@@ -1118,6 +1137,8 @@ public class ReportController {
                         report.setExtraField3(extraField3[i]);
                         report.setSapServiceId(sapServiceId[i]);
                         report.setMultiDegrId(multiDegrId[i]);
+                        report.setExtraField4(extraField4[i]);
+                        report.setExtraField5(extraField5[i]);
                         //如果是员工自由选择审批流程的方式,需要处理一下
                         if (comTimeType.getReportAuditType() == 3) {
                             report.setAuditorSetting(auditorSettingList.get(i));
@@ -1182,6 +1203,8 @@ public class ReportController {
                             report.setExtraField3(extraField3[i]);
                             report.setSapServiceId(sapServiceId[i]);
                             report.setMultiDegrId(multiDegrId[i]);
+                            report.setExtraField4(extraField4[i]);
+                            report.setExtraField5(extraField5[i]);
                             //如果是员工自由选择审批流程的方式,需要处理一下
                             if (comTimeType.getReportAuditType() == 3) {
                                 report.setAuditorSetting(auditorSettingList.get(i));
@@ -3082,9 +3105,24 @@ public class ReportController {
         return reportService.getCurAuditNode(date,userId);
     }
 
+
+    @RequestMapping("/checkAndAlertFVReportTimeLessThanCardTimeList")
+    public HttpRespMsg checkAndAlertFVReportTimeLessThanCardTimeList() {
+        LocalDate yestoday = LocalDate.now().minusDays(1);
+        LocalDate startDate = yestoday.minusDays(7);
+        Integer companyId = 7536;//泓浒(苏州)公司Id
+        reportService.checkAndAlertFVReportTimeLessThanCardTimeList(startDate, yestoday, companyId);
+        return new HttpRespMsg();
+    }
     @RequestMapping("/getReportTimeLessThanCardTimeList")
     public HttpRespMsg getReportTimeLessThanCardTimeList(String date, Integer deptId, String userId) {
-        return reportService.getReportTimeLessThanCardTimeList(date, deptId, userId);
+        //date格式为2024-09, 需要获取该月的第一天和最后一天
+        LocalDate firstDay = LocalDate.parse(date + "-01");
+        LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
+        User user = userMapper.selectById(request.getHeader("TOKEN"));
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.setData(reportService.getReportTimeLessThanCardTimeList(firstDay, lastDay, deptId, userId, user.getCompanyId(), false));
+        return msg;
     }
 
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/UserFvTime.java

@@ -66,6 +66,9 @@ public class UserFvTime extends Model<UserFvTime> {
     @TableField("cancel_normal")
     private Integer cancelNormal;
 
+    @TableField(exist = false)
+    private String name;
+
 
     @Override
     protected Serializable pkVal() {

+ 22 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/OtherTaskFileInfoVO.java~

@@ -0,0 +1,22 @@
+package com.management.platform.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+@Data
+public class OtherTaskFileInfoVO {
+    private Integer projectId;
+    private String projectName;
+    private Integer taskId;
+    private String taskName;
+    @JsonIgnore
+    private String creatorId;//文件上传人id
+    private String creatorName;
+
+    private String documentName;
+    private String fileUrl;
+    private String finalChargeId;
+    private String finalChargeName;
+
+    private Integer groupId;
+}

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

@@ -171,8 +171,10 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg getCurAuditNode(String date, String userId);
 
-    HttpRespMsg getReportTimeLessThanCardTimeList(String date, Integer deptId, String userId);
+    List<Map<String, Object>> getReportTimeLessThanCardTimeList(LocalDate firstDay, LocalDate lastDay, Integer deptId, String userId, Integer companyId, boolean getAll);
 
     HttpRespMsg listByStateNew(Integer state, Integer departmentId, Integer projectId, String date, String startDate, String endDate, String userId, String auditUserId, HttpServletRequest request);
 
+    void checkAndAlertFVReportTimeLessThanCardTimeList(LocalDate startDate, LocalDate endDate, Integer companyId);
+
 }

+ 232 - 99
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -91,6 +91,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private TaskGroupMapper taskGroupMapper;
     @Resource
     private ReportDeleteService reportDeleteService;
+    @Resource
+    private UserFvTimeMapper userFvTimeMapper;
 
     @Resource
     private DepartmentService departmentService;
@@ -111,8 +113,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Resource
     private SysFunctionMapper sysFunctionMapper;
     @Resource
-    private UserFvTimeMapper userFvTimeMapper;
-    @Resource
     private ProjectBasecostSettingMapper projectBasecostSettingMapper;
     @Resource
     private UserDingdingTimeMapper userDingdingTimeMapper;
@@ -2048,6 +2048,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return httpRespMsg;
     }
 
+
+
     //获取待审核项目报告列表
     @Override
     public HttpRespMsg getListByState(Integer state, Integer departmentId,
@@ -10830,83 +10832,166 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg getReportTimeLessThanCardTimeList(String date, Integer deptId, String userId) {
+    public void checkAndAlertFVReportTimeLessThanCardTimeList(LocalDate startDate, LocalDate endDate, Integer companyId) {
+        List<Map<String, Object>> data = getReportTimeLessThanCardTimeList(startDate, endDate, null,null, companyId, true);
+        if (data.size() > 0) {
+            //发送企业微信消息提醒,给员工和系统管理员
+            List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+            String wxUserIds = userList.stream().map(User::getCorpwxUserid).collect(Collectors.joining("|"));
+            wxCorpInfoService.sendWXCorpMsg(wxCorpInfo, wxUserIds,  "您最近一周内考勤工时填报存在异常,请及时修正!", null, WxCorpInfoServiceImpl.TEXT_CARD_MSG_REPORT_ABNOEMAL);
+
+//            for (Map<String, Object> map : data) {
+//                String userId = String.valueOf(map.get("userId"));
+//                String userName = String.valueOf(map.get("userName"));
+//                }
+            //给管理员发送
+            List<User> adminList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("role_name", "系统管理员"));
+            String adminIds = adminList.stream().map(User::getCorpwxUserid).collect(Collectors.joining("|"));
+            wxCorpInfoService.sendWXCorpMsg(wxCorpInfo, adminIds, "员工最近一周内考勤工时填报存在异常,请关注!", null, WxCorpInfoServiceImpl.TEXT_CARD_MSG_REPORT_ABNOEMAL);
+
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getReportTimeLessThanCardTimeList(LocalDate firstDay, LocalDate lastDay, Integer deptId, String userId, Integer companyId, boolean getAll) {
         //获取自己的考勤未填满的记录
-        User user = userMapper.selectById(request.getHeader("token"));
-        Integer companyId = user.getCompanyId();
-        //获取考勤表记录
-        List<UserCorpwxTime> userCorpwxTimeList = new ArrayList<>();
-        //date格式为2024-09, 需要获取该月的第一天和最后一天
-        LocalDate firstDay = LocalDate.parse(date + "-01");
-        LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
-        //检查权限,有查看全公司数值的权限
-        boolean canViewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全公司工时");
+        boolean canViewAll = getAll;
+        TimeType timeType = timeTypeMapper.selectById(companyId);
+        User user = !canViewAll ? userMapper.selectById(request.getHeader("token")) : null;
+        if (!canViewAll) {
+            //检查权限,有查看全公司数值的权限
+            canViewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全公司工时");
+        }
+
         List<User> manageUserList = new ArrayList<>();
-        if (canViewAll) {
-            if (!StringUtils.isEmpty(userId)) {
-                User findUser = userMapper.selectById(userId);
-                if (findUser != null) {
-                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("corpwx_userid", findUser.getCorpwxUserid()).between("create_date", firstDay, lastDay));
-                    manageUserList.add(findUser);
-                }
-            } else  if (deptId != null) {
-                //按部门过滤
-                List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-                List<Integer> allSubDeptIds = departmentService.getDeptIncludeSubDeptIds(deptId, allDeptList);
-                manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
-                if (manageUserList.size() > 0) {
-                    List<String> collect = manageUserList.stream().map(User::getCorpwxUserid).collect(Collectors.toList());
-                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("corpwx_userid", collect).between("create_date", firstDay, lastDay));
-                }
-            } else {
-                userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).between("create_date", firstDay, lastDay));
-                manageUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
-            }
-        } else {
-            //是否是部门负责人
-            List<Integer> allDeptIds = getAllVisibleDeptIdList(user, departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId)));
-            if (allDeptIds.size() > 0) {
+        List<UserCorpwxTime> userCorpwxTimeList = new ArrayList<>();
+        List<UserFvTime> userFvTimeList = new ArrayList<>();
+        if (timeType.getSyncCorpwxTime() == 1) {
+            //获取考勤表记录
+            if (canViewAll) {
                 if (!StringUtils.isEmpty(userId)) {
                     User findUser = userMapper.selectById(userId);
                     if (findUser != null) {
+                        userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("corpwx_userid", findUser.getCorpwxUserid()).between("create_date", firstDay, lastDay));
                         manageUserList.add(findUser);
                     }
-                } else if (deptId != null) {
+                } else  if (deptId != null) {
                     //按部门过滤
-                    if (allDeptIds.contains(deptId)) {
-                        List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-                        List<Integer> allSubDeptIds = departmentService.getDeptIncludeSubDeptIds(deptId, allDeptList);
-                        manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
+                    List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                    List<Integer> allSubDeptIds = departmentService.getDeptIncludeSubDeptIds(deptId, allDeptList);
+                    manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
+                    if (manageUserList.size() > 0) {
+                        List<String> collect = manageUserList.stream().map(User::getCorpwxUserid).collect(Collectors.toList());
+                        userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("corpwx_userid", collect).between("create_date", firstDay, lastDay));
                     }
                 } else {
-                    //取部门的人员
-                    manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds));
+                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).between("create_date", firstDay, lastDay));
+                    manageUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
                 }
-                //如果自己不在manageUserList中,加进去
-                if (!manageUserList.stream().anyMatch(u -> u.getId().equals(user.getId()))) {
+            } else {
+                //是否是部门负责人
+                List<Integer> allDeptIds = getAllVisibleDeptIdList(user, departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId)));
+                if (allDeptIds.size() > 0) {
+                    if (!StringUtils.isEmpty(userId)) {
+                        User findUser = userMapper.selectById(userId);
+                        if (findUser != null) {
+                            manageUserList.add(findUser);
+                        }
+                    } else if (deptId != null) {
+                        //按部门过滤
+                        if (allDeptIds.contains(deptId)) {
+                            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                            List<Integer> allSubDeptIds = departmentService.getDeptIncludeSubDeptIds(deptId, allDeptList);
+                            manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
+                        }
+                    } else {
+                        //取部门的人员
+                        manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds));
+                    }
+                    //如果自己不在manageUserList中,加进去
+                    if (!manageUserList.stream().anyMatch(u -> u.getId().equals(user.getId()))) {
+                        manageUserList.add(user);
+                    }
+                    List<String> userCorpwxidList = manageUserList.stream().filter(u->u.getCorpwxUserid() != null).map(User::getCorpwxUserid).collect(Collectors.toList());
+                    if (userCorpwxidList.size() > 0) {
+                        userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("corpwx_userid", userCorpwxidList).between("create_date", firstDay, lastDay));
+                    }
+                    //如果存在corpwxUserid位空的用户,按姓名匹配
+                    List<String> nameList = manageUserList.stream().filter(u->u.getCorpwxUserid() == null).map(User::getName).collect(Collectors.toList());
+                    if (nameList.size() == 0) {
+                        userCorpwxTimeList.addAll(userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("name", nameList).between("create_date", firstDay, lastDay)));
+                    }
+                } else {
+                    //个人看自己的
+                    if (user.getCorpwxUserid() != null) {
+                        userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("corpwx_userid", user.getCorpwxUserid()).between("create_date", firstDay, lastDay));
+                    } else {
+                        userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("name", user.getName()).between("create_date", firstDay, lastDay));
+                    }
                     manageUserList.add(user);
                 }
-                List<String> userCorpwxidList = manageUserList.stream().filter(u->u.getCorpwxUserid() != null).map(User::getCorpwxUserid).collect(Collectors.toList());
-                if (userCorpwxidList.size() > 0) {
-                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("corpwx_userid", userCorpwxidList).between("create_date", firstDay, lastDay));
-                }
-                //如果存在corpwxUserid位空的用户,按姓名匹配
-                List<String> nameList = manageUserList.stream().filter(u->u.getCorpwxUserid() == null).map(User::getName).collect(Collectors.toList());
-                if (nameList.size() == 0) {
-                    userCorpwxTimeList.addAll(userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).in("name", nameList).between("create_date", firstDay, lastDay)));
+            }
+        } else if (timeType.getSyncFanwei() == 1) {
+            //获取user_fv_time表的考勤记录
+            if (canViewAll) {
+                if (!StringUtils.isEmpty(userId)) {
+                    User findUser = userMapper.selectById(userId);
+                    if (findUser != null) {
+                        userFvTimeList = userFvTimeMapper.selectList(new QueryWrapper<UserFvTime>().eq("company_id", companyId).eq("user_id", userId).between("create_date", firstDay, lastDay));
+                        manageUserList.add(findUser);
+                    }
+                } else  if (deptId != null) {
+                    //按部门过滤
+                    List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                    List<Integer> allSubDeptIds = departmentService.getDeptIncludeSubDeptIds(deptId, allDeptList);
+                    manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
+                    if (manageUserList.size() > 0) {
+                        List<String> collect = manageUserList.stream().map(User::getId).collect(Collectors.toList());
+                        userFvTimeList = userFvTimeMapper.selectList(new QueryWrapper<UserFvTime>().eq("company_id", companyId).in("user_id", collect).between("create_date", firstDay, lastDay));
+                    }
+                } else {
+                    userFvTimeList = userFvTimeMapper.selectList(new QueryWrapper<UserFvTime>().eq("company_id", companyId).between("create_date", firstDay, lastDay));
+                    manageUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
                 }
             } else {
-                //个人看自己的
-                if (user.getCorpwxUserid() != null) {
-                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("corpwx_userid", user.getCorpwxUserid()).between("create_date", firstDay, lastDay));
+                //是否是部门负责人
+                List<Integer> allDeptIds = getAllVisibleDeptIdList(user, departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId)));
+                if (allDeptIds.size() > 0) {
+                    if (!StringUtils.isEmpty(userId)) {
+                        User findUser = userMapper.selectById(userId);
+                        if (findUser != null) {
+                            manageUserList.add(findUser);
+                        }
+                    } else if (deptId != null) {
+                        //按部门过滤
+                        if (allDeptIds.contains(deptId)) {
+                            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                            List<Integer> allSubDeptIds = departmentService.getDeptIncludeSubDeptIds(deptId, allDeptList);
+                            manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allSubDeptIds));
+                        }
+                    } else {
+                        //取部门的人员
+                        manageUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds));
+                    }
+                    //如果自己不在manageUserList中,加进去
+                    if (!manageUserList.stream().anyMatch(u -> u.getId().equals(user.getId()))) {
+                        manageUserList.add(user);
+                    }
+                    List<String> userIdList = manageUserList.stream().map(User::getId).collect(Collectors.toList());
+                    if (userIdList.size() > 0) {
+                        userFvTimeList = userFvTimeMapper.selectList(new QueryWrapper<UserFvTime>().eq("company_id", companyId).in("user_id", userIdList).between("create_date", firstDay, lastDay));
+                    }
                 } else {
-                    userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().eq("company_id", companyId).eq("name", user.getName()).between("create_date", firstDay, lastDay));
+                    //个人看自己的
+                    userFvTimeList = userFvTimeMapper.selectList(new QueryWrapper<UserFvTime>().eq("company_id", companyId).eq("user_id", user.getId()).between("create_date", firstDay, lastDay));
+                    manageUserList.add(user);
                 }
-                manageUserList.add(user);
             }
         }
 
 
+
         //获取填报工时记录表
         List<Report> reportList = new ArrayList<>();
         if (canViewAll && StringUtils.isEmpty(userId) && deptId == null) {
@@ -10926,47 +11011,82 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //比对userCorpwxTimeList和reportList,找出工时未填满的记录
         List<Map<String, Object>> resultList = new ArrayList<>();
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        for (UserCorpwxTime corpwxTime : userCorpwxTimeList) {
-            boolean isMatch = true;
-            double reportTime = 0;
-            User targetUser = null;
-            if (corpwxTime.getCorpwxUserid() != null) {
-                Optional<User> first = manageUserList.stream().filter(u -> corpwxTime.getCorpwxUserid().equals(u.getCorpwxUserid())).findFirst();
-                if (first.isPresent()) {
-                    targetUser = first.get();
+        if (timeType.getSyncCorpwxTime() == 1) {
+            for (UserCorpwxTime corpwxTime : userCorpwxTimeList) {
+                boolean isMatch = true;
+                double reportTime = 0;
+                User targetUser = null;
+                if (corpwxTime.getCorpwxUserid() != null) {
+                    Optional<User> first = manageUserList.stream().filter(u -> corpwxTime.getCorpwxUserid().equals(u.getCorpwxUserid())).findFirst();
+                    if (first.isPresent()) {
+                        targetUser = first.get();
+                    }
+                } else {
+                    Optional<User> first = manageUserList.stream().filter(u -> u.getName().equals(corpwxTime.getName())).findFirst();
+                    if (first.isPresent()) {
+                        targetUser = first.get();
+                    }
                 }
-            } else {
-                Optional<User> first = manageUserList.stream().filter(u -> u.getName().equals(corpwxTime.getName())).findFirst();
-                if (first.isPresent()) {
-                    targetUser = first.get();
+                if (targetUser != null) {
+                    for (Report report : reportList) {
+                        if (report.getCreatorId().equals(targetUser.getId()) && corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
+                            reportTime = report.getWorkingTime();
+                            //不一致
+                            if (Math.abs(corpwxTime.getWorkHours() - report.getWorkingTime()) > 0.01) {
+                                isMatch = false;
+                                //设置人员姓名
+                                if (corpwxTime.getName() == null) {
+                                    corpwxTime.setName(targetUser.getName());
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+
+                if (!isMatch) {
+                    Map<String, Object> map = new HashMap<>();
+                    if (targetUser != null) {
+                        map.put("userId", targetUser.getId());
+                    }
+                    map.put("name", corpwxTime.getName());
+                    map.put("createDate", dateTimeFormatter.format(corpwxTime.getCreateDate()));
+                    map.put("workHours", corpwxTime.getWorkHours());
+                    map.put("reportTime", reportTime);
+                    resultList.add(map);
                 }
             }
-            if (targetUser != null) {
-                for (Report report : reportList) {
-                    if (report.getCreatorId().equals(targetUser.getId()) && corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
-                        reportTime = report.getWorkingTime();
-                        //不一致
-                        if (Math.abs(corpwxTime.getWorkHours() - report.getWorkingTime()) > 0.01) {
-                            isMatch = false;
-                            //设置人员姓名
-                            if (corpwxTime.getName() == null) {
-                                corpwxTime.setName(targetUser.getName());
+        } else if (timeType.getSyncFanwei() == 1) {
+            for (UserFvTime fvTime : userFvTimeList) {
+                boolean isMatch = true;
+                double reportTime = 0;
+                User targetUser = manageUserList.stream().filter(u -> fvTime.getUserId().equals(u.getId())).findFirst().get();;
+                if (targetUser != null) {
+                    for (Report report : reportList) {
+                        if (report.getCreatorId().equals(targetUser.getId()) && fvTime.getWorkDate().isEqual(report.getCreateDate())) {
+                            reportTime = report.getWorkingTime();
+                            //不一致
+                            if (Math.abs(fvTime.getWorkHours() - report.getWorkingTime()) > 0.01) {
+                                isMatch = false;
+                                fvTime.setName(targetUser.getName());
                             }
+                            break;
                         }
-                        break;
                     }
                 }
-            }
 
-            if (!isMatch) {
-                Map<String, Object> map = new HashMap<>();
-                map.put("name", corpwxTime.getName());
-                map.put("createDate", dateTimeFormatter.format(corpwxTime.getCreateDate()));
-                map.put("workHours", corpwxTime.getWorkHours());
-                map.put("reportTime", reportTime);
-                resultList.add(map);
+                if (!isMatch) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("userId", fvTime.getUserId());
+                    map.put("name", fvTime.getName());
+                    map.put("createDate", dateTimeFormatter.format(fvTime.getWorkDate()));
+                    map.put("workHours", fvTime.getWorkHours());
+                    map.put("reportTime", reportTime);
+                    resultList.add(map);
+                }
             }
         }
+
         //反向,检测有填报日报但是没有考勤的数据
         for (Report report : reportList) {
             boolean hasCardTime = false;
@@ -10975,29 +11095,42 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 continue;
             }
             User targetUser = first.get();
-            for (UserCorpwxTime corpwxTime : userCorpwxTimeList) {
-                if ((targetUser.getCorpwxUserid() != null && targetUser.getCorpwxUserid().equals(corpwxTime.getCorpwxUserid()))
-                    || (targetUser.getCorpwxUserid() == null && targetUser.getName().equals(corpwxTime.getName()))) {
-                    //人员匹配上了,匹配日期
-                    if (corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
-                        if (corpwxTime.getWorkHours() > 0) {
+            if (timeType.getSyncCorpwxTime() == 1) {
+                for (UserCorpwxTime corpwxTime : userCorpwxTimeList) {
+                    if ((targetUser.getCorpwxUserid() != null && targetUser.getCorpwxUserid().equals(corpwxTime.getCorpwxUserid()))
+                            || (targetUser.getCorpwxUserid() == null && targetUser.getName().equals(corpwxTime.getName()))) {
+                        //人员匹配上了,匹配日期
+                        if (corpwxTime.getCreateDate().isEqual(report.getCreateDate())) {
+                            if (corpwxTime.getWorkHours() > 0) {
+                                hasCardTime = true;
+                            }
+                            break;
+                        }
+                    }
+                }
+            } else if (timeType.getSyncFanwei() == 1) {
+                for (UserFvTime fvTime : userFvTimeList) {
+                    //人员/日期匹配
+                    if (targetUser.getId().equals(fvTime.getUserId()) && fvTime.getWorkDate().isEqual(report.getCreateDate())) {
+                        if (fvTime.getWorkHours() > 0) {
                             hasCardTime = true;
                         }
                         break;
                     }
                 }
             }
+
             if (!hasCardTime) {
                 Map<String, Object> map = new HashMap<>();
-                map.put("name", user.getName());
+                map.put("userId", targetUser.getId());
+                map.put("name", targetUser.getName());
                 map.put("createDate", dateTimeFormatter.format(report.getCreateDate()));
                 map.put("workHours", 0);
                 map.put("reportTime", report.getWorkingTime());
                 resultList.add(map);
             }
         }
-        HttpRespMsg msg = new HttpRespMsg();
-        msg.setData(resultList);
-        return msg;
+
+        return resultList;
     }
 }

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1088 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java~


+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -2407,4 +2407,14 @@ public class TimingTask {
 
         }
     }
+
+    //每天9点左右针对泓浒(苏州)发送考勤不合规的提醒消息
+    @Scheduled(cron = "0 8 9 ? * *")
+    private void checkHongHuCardTime() {
+        if (isDev) return;
+        LocalDate yestoday = LocalDate.now().minusDays(1);
+        LocalDate startDate = yestoday.minusDays(7);
+        Integer companyId = 7536;//泓浒(苏州)公司Id
+        reportService.checkAndAlertFVReportTimeLessThanCardTimeList(startDate, yestoday, companyId);
+    }
 }