|
@@ -2959,6 +2959,14 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
|
|
|
//获取当日已填写的人员报告
|
|
|
List<Map<String, Object>> reportNameByDate = reportMapper.getReportNameByDate(date, companyId, null);
|
|
|
+ Company company = companyMapper.selectById(companyId);
|
|
|
+ TimeType timeType = timeTypeMapper.selectById(companyId);
|
|
|
+ //如果没有开通OA模块,有开通企业微信同步考勤,从user_corpwx_time表中获取请假时长
|
|
|
+ List<UserCorpwxTime> userCorpwxTimeList = null;
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
|
|
|
+ if (company.getPackageOa() == 0 && timeType.getSyncCorpwxTime() == 1) {
|
|
|
+ userCorpwxTimeList = userCorpwxTimeMapper.selectList(new QueryWrapper<UserCorpwxTime>().select("corpwx_userid, ask_leave_time").eq("company_id", companyId).eq("create_date", curDate).gt("ask_leave_time", 0));
|
|
|
+ }
|
|
|
for (User u : userList) {
|
|
|
//入职日期在当前日期之后的,不要显示
|
|
|
if (u.getInductionDate() != null && u.getInductionDate().isAfter(curDate)) {
|
|
@@ -2970,20 +2978,30 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
|
|
|
user.put("departmentId", u.getDepartmentId());
|
|
|
Optional<Map<String, Object>> first = reportNameByDate.stream().filter(r -> r.get("id").equals(u.getId())).findFirst();
|
|
|
//获取角色请假情况 存在同条件下多条请假记录
|
|
|
- List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(u.getId()) &&
|
|
|
- ((localDate.isAfter(ls.getStartDate()) || localDate.isEqual(ls.getStartDate())) && (localDate.isBefore(ls.getEndDate()) || localDate.isEqual(ls.getEndDate())))).collect(Collectors.toList());
|
|
|
- if(leaveSheets.size()>0){
|
|
|
- Integer leaveType=leaveSheets.get(0).getLeaveType();
|
|
|
- BigDecimal leaveDays=new BigDecimal(0);
|
|
|
- BigDecimal leaveTimes=new BigDecimal(0);
|
|
|
- for (LeaveSheet leaveSheet : leaveSheets) {
|
|
|
- leaveDays=leaveDays.add(new BigDecimal(leaveSheet.getTimeDays()));
|
|
|
- leaveTimes=leaveTimes.add(new BigDecimal(leaveSheet.getTimeHours()));
|
|
|
- }
|
|
|
- user.put("leaveType",leaveType);
|
|
|
- if(leaveSheets.stream().anyMatch(ls->ls.getTimeType()==0)){
|
|
|
- user.put("leaveDays",leaveDays);
|
|
|
- }else user.put("leaveTimes",leaveTimes);
|
|
|
+ if (company.getPackageOa() == 1) {
|
|
|
+ List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(u.getId()) &&
|
|
|
+ ((localDate.isAfter(ls.getStartDate()) || localDate.isEqual(ls.getStartDate())) && (localDate.isBefore(ls.getEndDate()) || localDate.isEqual(ls.getEndDate())))).collect(Collectors.toList());
|
|
|
+ if(leaveSheets.size()>0){
|
|
|
+ Integer leaveType=leaveSheets.get(0).getLeaveType();
|
|
|
+ BigDecimal leaveDays=new BigDecimal(0);
|
|
|
+ BigDecimal leaveTimes=new BigDecimal(0);
|
|
|
+ for (LeaveSheet leaveSheet : leaveSheets) {
|
|
|
+ leaveDays=leaveDays.add(new BigDecimal(leaveSheet.getTimeDays()));
|
|
|
+ leaveTimes=leaveTimes.add(new BigDecimal(leaveSheet.getTimeHours()));
|
|
|
+ }
|
|
|
+ user.put("leaveType",leaveType);
|
|
|
+ if(leaveSheets.stream().anyMatch(ls->ls.getTimeType()==0)){
|
|
|
+ user.put("leaveDays",leaveDays);
|
|
|
+ }else {
|
|
|
+ user.put("leaveTimes",leaveTimes);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (wxCorpInfo != null && userCorpwxTimeList != null) {
|
|
|
+ Optional<UserCorpwxTime> find = userCorpwxTimeList.stream().filter(uct -> uct.getCorpwxUserid().equals(u.getCorpwxUserid())).findFirst();
|
|
|
+ if (find.isPresent()) {
|
|
|
+ user.put("leaveType",0);//默认为事假
|
|
|
+ user.put("leaveTimes", find.get().getAskLeaveTime());
|
|
|
+ }
|
|
|
}
|
|
|
if (first.isPresent()) {
|
|
|
user.put("state", first.get().get("state"));
|