排班日历排除节假日

This commit is contained in:
JinLu.Yin 2022-06-13 14:12:47 +08:00
parent 88b91dab38
commit f0b08fa752
3 changed files with 39 additions and 7 deletions

View File

@ -1,11 +1,15 @@
package com.ktg.mes.cal.controller; package com.ktg.mes.cal.controller;
import cn.hutool.core.collection.CollUtil;
import com.ktg.common.constant.UserConstants; import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.controller.BaseController; import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult; import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.utils.StringUtils; import com.ktg.common.utils.StringUtils;
import com.ktg.mes.cal.domain.CalCalendar; import com.ktg.mes.cal.domain.CalCalendar;
import com.ktg.mes.cal.domain.CalHoliday;
import com.ktg.mes.cal.service.ICalCalendarService; import com.ktg.mes.cal.service.ICalCalendarService;
import com.ktg.mes.cal.service.ICalHolidayService;
import com.ktg.mes.cal.utils.CalendarUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -14,6 +18,8 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 排班日历 * 排班日历
@ -28,6 +34,9 @@ public class CalCalendarController extends BaseController {
@Autowired @Autowired
private ICalCalendarService calCalendarService; private ICalCalendarService calCalendarService;
@Autowired
private ICalHolidayService calHolidayService;
@PreAuthorize("@ss.hasPermi('mes:cal:calendar:list')") @PreAuthorize("@ss.hasPermi('mes:cal:calendar:list')")
@GetMapping("/list") @GetMapping("/list")
public AjaxResult getCalendars(CalCalendar calCalendar){ public AjaxResult getCalendars(CalCalendar calCalendar){
@ -45,7 +54,24 @@ public class CalCalendarController extends BaseController {
}else { }else {
days=calCalendarService.getCalendarByUser(day,calCalendar.getUserId()); days=calCalendarService.getCalendarByUser(day,calCalendar.getUserId());
} }
return AjaxResult.success(getCalendarsWithoutHoliday(days));
}
return AjaxResult.success(days);
/**
* 过滤掉节假日
* @param days
* @return
*/
private List<CalCalendar> getCalendarsWithoutHoliday(List<CalCalendar> days){
CalHoliday param = new CalHoliday();
List<CalHoliday> holidays = calHolidayService.selectCalHolidayList(param);
if(CollUtil.isNotEmpty(holidays)){
List<CalCalendar> results = days.stream().filter(
calCalendar -> holidays.stream().filter(calHoliday -> calCalendar.getTheDay().equals(CalendarUtil.getDateStr(calHoliday.getTheDay()))).collect(Collectors.toList()).size()==0
).collect(Collectors.toList());
return results;
}
return days;
} }
} }

View File

@ -2,18 +2,24 @@ package com.ktg.mes.cal.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.ktg.mes.cal.domain.CalCalendar; import com.ktg.mes.cal.domain.CalCalendar;
import com.ktg.mes.cal.domain.CalHoliday;
import com.ktg.mes.cal.domain.CalTeamMember; import com.ktg.mes.cal.domain.CalTeamMember;
import com.ktg.mes.cal.domain.CalTeamshift; import com.ktg.mes.cal.domain.CalTeamshift;
import com.ktg.mes.cal.mapper.CalPlanMapper; import com.ktg.mes.cal.mapper.CalPlanMapper;
import com.ktg.mes.cal.mapper.CalTeamMemberMapper;
import com.ktg.mes.cal.mapper.CalTeamshiftMapper; import com.ktg.mes.cal.mapper.CalTeamshiftMapper;
import com.ktg.mes.cal.service.ICalCalendarService; import com.ktg.mes.cal.service.ICalCalendarService;
import com.ktg.mes.cal.service.ICalHolidayService;
import com.ktg.mes.cal.service.ICalTeamMemberService; import com.ktg.mes.cal.service.ICalTeamMemberService;
import com.ktg.mes.cal.utils.CalendarUtil; import com.ktg.mes.cal.utils.CalendarUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class CalCalendarServiceImpl implements ICalCalendarService { public class CalCalendarServiceImpl implements ICalCalendarService {
@ -25,10 +31,12 @@ public class CalCalendarServiceImpl implements ICalCalendarService {
private CalTeamshiftMapper calTeamshiftMapper; private CalTeamshiftMapper calTeamshiftMapper;
@Autowired @Autowired
private ICalTeamMemberService calTeamMemberService; private CalTeamMemberMapper calTeamMemberMapper;
/**
/**
* 1.循环生成当前月份每一天的CalCalendar * 1.循环生成当前月份每一天的CalCalendar
* 2.根据月份和班组类型查询合适的plan * 2.根据月份和班组类型查询合适的plan
* 3.根据plan上的Shift_type和shift_method计算每个班组的班次 * 3.根据plan上的Shift_type和shift_method计算每个班组的班次
@ -79,7 +87,7 @@ public class CalCalendarServiceImpl implements ICalCalendarService {
CalTeamMember param = new CalTeamMember(); CalTeamMember param = new CalTeamMember();
param.setUserId(userId); param.setUserId(userId);
List<CalTeamMember> members = calTeamMemberService.selectCalTeamMemberList(param); List<CalTeamMember> members = calTeamMemberMapper.selectCalTeamMemberList(param);
if(CollUtil.isNotEmpty(members)){ if(CollUtil.isNotEmpty(members)){
Long teamId = members.get(0).getTeamId(); Long teamId = members.get(0).getTeamId();
calendars = CalendarUtil.getDays(day); calendars = CalendarUtil.getDays(day);
@ -98,6 +106,4 @@ public class CalCalendarServiceImpl implements ICalCalendarService {
return calendars; return calendars;
} }
} }

View File

@ -432,7 +432,7 @@ public class CalendarUtil {
} }
private static Date getNext(Date date) { public static Date getNext(Date date) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTime(date); calendar.setTime(date);
calendar.add(Calendar.DATE, 1); calendar.add(Calendar.DATE, 1);