|
@@ -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>();
|