Просмотр исходного кода

工时日报界面 已填报工时增加 管理特殊节假日

Min 1 год назад
Родитель
Сommit
3f829d7991

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserMonthWork.java

@@ -7,6 +7,7 @@ public class UserMonthWork {
     public String userId;
     public String name;
     public String departmentName;
+    public String deptId;
     public String inactiveDate;
     public String corpwxUserId;
     public String corpwxDeptId;

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

@@ -8108,7 +8108,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全公司填报及时率");
         List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门填报及时率");
         //获取到公司设置的特殊节假日设置
-        List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, targetUser.getCompanyId()));
+        List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, targetUser.getCompanyId()).isNotNull(HolidaySetting::getHolidayDate));
         List<Integer> deptIds=new ArrayList<>();
         List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
         List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
@@ -8160,6 +8160,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new LambdaQueryWrapper<LeaveSheet>()
                 .eq(LeaveSheet::getCompanyId, targetUser.getCompanyId()).le(LeaveSheet::getStartDate,endDate).ge(LeaveSheet::getEndDate,startDate));
         List<TimelinessRateVO> resultList=new ArrayList<>();
+        //针对美莱德 去除2024-02-09
+        //针对人员已经特殊节假日设置去除相对应的日期
+        List<HolidaySetting> allUsersSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 0).collect(Collectors.toList());
+        List<HolidaySetting> targetUserOrDeptSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 1).collect(Collectors.toList());
         for (User user : userList){
             LocalDateTime sDate;
             LocalDateTime eDate = LocalDate.parse(endDate).atTime(LocalTime.MIN);
@@ -8173,10 +8177,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
             }else  sDate = LocalDate.parse(startDate).atTime(LocalTime.MIN);
             AtomicReference<List<LocalDateTime>> dateTimeList= new AtomicReference<>(getDays(sDate, eDate));
-            //针对美莱德 去除2024-02-09
-            //针对人员已经特殊节假日设置去除相对应的日期
-            List<HolidaySetting> allUsersSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 0).collect(Collectors.toList());
-            List<HolidaySetting> targetUserOrDeptSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 1).collect(Collectors.toList());
             if(allUsersSetting.size()>0){
                 List<LocalDateTime> holidayDateList = allUsersSetting.stream().map(h->h.getHolidayDate().atTime(LocalTime.MIN)).collect(Collectors.toList());
                 dateTimeList.set(dateTimeList.get().stream().filter(d -> !holidayDateList.contains(d)).collect(Collectors.toList()));
@@ -8184,15 +8184,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if(targetUserOrDeptSetting.size()>0){
                 targetUserOrDeptSetting.forEach(t->{
                     LocalDateTime holidayDate = t.getHolidayDate().atTime(LocalTime.MIN);
-                    if(!StringUtils.isEmpty(t.getTargetUsers())){
+                    if(!StringUtils.isEmpty(t.getTargetUsers())&&!t.getTargetUsers().equals("")){
                         String[] userSplit = t.getTargetUsers().split(",");
                         List<String> userAsList = Arrays.asList(userSplit);
                         if(userAsList.contains(user.getId())){
                             dateTimeList.set(dateTimeList.get().stream().filter(d -> !d.isEqual(holidayDate)).collect(Collectors.toList()));
                         }
                     }
-                    if(!StringUtils.isEmpty(t.getTargetDepts())){
-                        String[] deptSplit = t.getTargetUsers().split(",");
+                    if(!StringUtils.isEmpty(t.getTargetDepts())&&!t.getTargetDepts().equals("")){
+                        String[] deptSplit = t.getTargetDepts().split(",");
                         List<String> deptAsList = Arrays.asList(deptSplit);
                         for (String deptId : deptAsList) {
                             List<Integer> subDeptIds = getBranchDepartment(Integer.valueOf(deptId), departmentList);
@@ -8266,7 +8266,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if(targetUserOrDeptSetting.size()>0){
                         targetUserOrDeptSetting.forEach(t->{
                             LocalDateTime holidayDate = t.getHolidayDate().atTime(LocalTime.MIN);
-                            if(!StringUtils.isEmpty(t.getTargetUsers())){
+                            if(!StringUtils.isEmpty(t.getTargetUsers())&&!t.getTargetUsers().equals("")){
                                 String[] userSplit = t.getTargetUsers().split(",");
                                 List<String> userAsList = Arrays.asList(userSplit);
                                 if(userAsList.contains(user.getId())){
@@ -8274,8 +8274,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                                     list.set(list.get().stream().filter(d -> !d.isEqual(holidayDate)).collect(Collectors.toList()));
                                 }
                             }
-                            if(!StringUtils.isEmpty(t.getTargetDepts())){
-                                String[] deptSplit = t.getTargetUsers().split(",");
+                            if(!StringUtils.isEmpty(t.getTargetDepts())&&!t.getTargetDepts().equals("")){
+                                String[] deptSplit = t.getTargetDepts().split(",");
                                 List<String> deptAsList = Arrays.asList(deptSplit);
                                 for (String deptId : deptAsList) {
                                     List<Integer> subDeptIds = getBranchDepartment(Integer.valueOf(deptId), departmentList);

+ 51 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -204,6 +204,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private ExcelExportService excelExportService;
     @Resource
     private ProjectMainMapper projectMainMapper;
+    @Resource
+    private HolidaySettingService holidaySettingService;
     @Autowired
     RestTemplate restTemplate;
 
@@ -4209,8 +4211,35 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         User user = userMapper.selectById(token);
         Integer companyId = user.getCompanyId();
         Company company = companyMapper.selectById(companyId);
+        //准备部门数据
+        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
         List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, company.getId()));
+        //处理特殊节假日设置
+        //特殊节假日配置
+        List<HolidaySetting> holidaySettingList = holidaySettingService.list(new LambdaQueryWrapper<HolidaySetting>().eq(HolidaySetting::getCompanyId, companyId));
+        //针对全员生效的日期
+        List<LocalDate> holidayForAllUser = holidaySettingList.stream().filter(h -> h.getRangeType() == 0).collect(Collectors.toList()).stream().map(HolidaySetting::getHolidayDate).distinct().collect(Collectors.toList());
+        //针对指定人员的日期
+        List<LocalDate> holidayForTarget = holidaySettingList.stream().filter(h -> h.getRangeType() == 1).collect(Collectors.toList()).stream().map(HolidaySetting::getHolidayDate).distinct().collect(Collectors.toList());
+        //针对指定人员的人员已经部门
+        String userIdStr = holidaySettingList.stream().filter(f -> f.getRangeType() == 1).collect(Collectors.toList()).stream().map(HolidaySetting::getTargetUsers).collect(Collectors.joining(","));
+        String deptIdStr = holidaySettingList.stream().filter(f -> f.getRangeType() == 1).collect(Collectors.toList()).stream().map(HolidaySetting::getTargetDepts).collect(Collectors.joining(","));
+        List<Integer> targetDeptIds=new ArrayList<>();
+        if(!StringUtils.isEmpty(deptIdStr)&&!deptIdStr.equals("")){
+            String[] deptSplit = deptIdStr.split(",");
+            List<String> deptArray = Arrays.asList(deptSplit);
+            for (String deptId : deptArray) {
+                List<Integer> subDeptIds = getBranchDepartment(Integer.valueOf(deptId), departmentList);
+                targetDeptIds.add(Integer.valueOf(deptId));
+                targetDeptIds.addAll(subDeptIds);
+            }
+        }
+        List<String> targetUserIds=new ArrayList<>();
+        if(!StringUtils.isEmpty(userIdStr)&&!userIdStr.equals("")){
+            String[] userSplit = userIdStr.split(",");
+            targetUserIds = Arrays.asList(userSplit);
+        }
         List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, companyId));
         DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
         //String[] weekDayCHN = {"周一","周二","周三","周四","周五","周六","周日"};
@@ -4255,8 +4284,6 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
         }
         List<UserMonthWork> userMonthWorks = new ArrayList<UserMonthWork>();
-        //准备部门数据
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
         //获取所有同步的企业微信数据
         List<Map> userCorpwxTimeMapList = userCorpwxTimeMapper.selectByAsk(companyId,startDate,endDate);
         String lastUserId = null;
@@ -4265,6 +4292,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             String id = (String)data.get("id");
             String name = (String)data.get("name");
             String departmentName = (String) data.get("departmentName");
+            String deptId = String.valueOf(data.get("deptId"));
             String corpwxUserId = (String) data.get("corpwxUserId");
             Integer corpwxDeptId = (Integer) data.get("corpwxDeptId");
             Map<String, Object> map = new HashMap<>();
@@ -4310,6 +4338,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 lastUserData.userId = id;
                 lastUserData.name = name;
                 lastUserData.departmentName = departmentName;
+                lastUserData.deptId = deptId;
                 lastUserData.corpwxUserId = corpwxUserId;
                 lastUserData.corpwxDeptId = String.valueOf(corpwxDeptId);
                 lastUserData.worktimeList = new ArrayList<>();
@@ -4420,6 +4449,26 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 });
             }
+            if(worktimeList!=null&&worktimeList.size()>0){
+                Iterator<Map<String, Object>> iterator = worktimeList.iterator();
+                while (iterator.hasNext()){
+                    Map<String, Object> w = iterator.next();
+                    if(holidayForAllUser.size()>0){
+                        boolean match = holidayForAllUser.stream().anyMatch(h -> h.isEqual(LocalDate.parse(String.valueOf(w.get("createDate")), df)));
+                        if(match){
+                            iterator.remove();
+                        }
+                    }
+                    if(holidayForTarget.size()>0){
+                        boolean dayMatch = holidayForTarget.stream().anyMatch(h -> h.isEqual(LocalDate.parse(String.valueOf(w.get("createDate")), df)));
+                        if(dayMatch){
+                            if((userMonthWork.deptId!=null&&targetDeptIds.contains(Integer.valueOf(userMonthWork.deptId)))||targetUserIds.contains(userMonthWork.userId)){
+                                iterator.remove();
+                            };
+                        }
+                    }
+                }
+            }
         }
         HashMap map = new HashMap();
         List<HashMap> days = new ArrayList<HashMap>();

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -879,7 +879,7 @@
         WHERE r.create_date BETWEEN #{startDate} AND #{endDate} AND r.creator_id = #{userId} GROUP BY r.create_date
     </select>
     <select id="getUserDailyWorkTime" resultType="java.util.Map">
-        SELECT user.id, user.name,department.department_name as departmentName,department.corpwx_deptid as corpwxDeptId, report.create_date as createDate, sum(working_time) as workingTime,user.inactive_date as inactiveDate,user.corpwx_userid as corpwxUserId
+        SELECT user.id, user.name,department.department_name as departmentName,department.department_id as deptId,department.corpwx_deptid as corpwxDeptId, report.create_date as createDate, sum(working_time) as workingTime,user.inactive_date as inactiveDate,user.corpwx_userid as corpwxUserId
         FROM user
         left join report on user.id = report.creator_id
         left join department on department.department_id = user.department_id