|
@@ -95,72 +95,78 @@ public class HolidayService {
|
|
|
UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
|
|
|
//获取当前登录人入职时间
|
|
|
HolidayDTO dto=holidayMapper.findByUserId(userDTO.getId());
|
|
|
- Date date=dto.getInTime();
|
|
|
- LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
- LocalDate intime = LocalDate.of(localDate.getYear(), localDate.getMonth(), localDate.getDayOfMonth());
|
|
|
- //当前时间
|
|
|
- LocalDate now = LocalDate.now();
|
|
|
- //判断是否满一年
|
|
|
- long yearsPassed = ChronoUnit.YEARS.between(intime, now); // 计算经过的年数
|
|
|
- if (yearsPassed<1){
|
|
|
- return "入职不满一年,无法休年假";
|
|
|
- }
|
|
|
- //计算员工入职时间距离今年还剩多少天
|
|
|
- LocalDate inTime = LocalDate.of(now.getYear(), localDate.getMonth(), localDate.getDayOfMonth());
|
|
|
- LocalDate endDate = LocalDate.of(now.getYear(), 12, 31);
|
|
|
- long days = ChronoUnit.DAYS.between(inTime, endDate);
|
|
|
- //计算今年一共有多少天
|
|
|
- Calendar instance = Calendar.getInstance();
|
|
|
- instance.setTime(new Date());
|
|
|
- int daysInYear = instance.getActualMaximum(Calendar.DAY_OF_YEAR);
|
|
|
- //判断员工入职是否满10年
|
|
|
- long round=0;
|
|
|
- double days1=Double.parseDouble(holidayDTO.getDays());
|
|
|
- if (yearsPassed>=1 && yearsPassed<10){
|
|
|
- //(当年剩余的天数/当年一共天数)*5
|
|
|
- double yearDays=(double)days/daysInYear*5;
|
|
|
- round = Math.round(yearDays);
|
|
|
- if (days1>round){
|
|
|
- return "已超出可休年假天数,当年可休年假天数为"+round+"天";
|
|
|
- }
|
|
|
- }else if (yearsPassed>=10){
|
|
|
- //(当年距离入职时间剩余的天数/当年一共天数)*10
|
|
|
- double yearDays=(double)days/daysInYear*10;
|
|
|
- round = Math.round(yearDays);
|
|
|
- if (days1>round){
|
|
|
- return "已超出可休年假天数,当年可休年假天数为"+round+"天";
|
|
|
+ //判断当前登录人是否有入职时间
|
|
|
+ if (ObjectUtils.isNotEmpty(dto)){
|
|
|
+ Date date=dto.getInTime();
|
|
|
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
+ LocalDate intime = LocalDate.of(localDate.getYear(), localDate.getMonth(), localDate.getDayOfMonth());
|
|
|
+ //当前时间
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ //判断是否满一年
|
|
|
+ long yearsPassed = ChronoUnit.YEARS.between(intime, now); // 计算经过的年数
|
|
|
+ if (yearsPassed<1){
|
|
|
+ return "入职不满一年,无法休年假";
|
|
|
}
|
|
|
- }
|
|
|
- //当前员工当年是否休过年假
|
|
|
- List<HolidayDTO> holidays = holidayMapper.selectByUserId(userDTO.getId());
|
|
|
- Double holiday=0.00;
|
|
|
- if (ObjectUtils.isNotEmpty(holidays)){
|
|
|
- for (HolidayDTO holiday1 : holidays) {
|
|
|
- //获取已经休过的年假天数
|
|
|
- holiday+=Double.parseDouble(holiday1.getDays());
|
|
|
+ //计算员工入职时间距离今年还剩多少天
|
|
|
+ LocalDate inTime = LocalDate.of(now.getYear(), localDate.getMonth(), localDate.getDayOfMonth());
|
|
|
+ LocalDate endDate = LocalDate.of(now.getYear(), 12, 31);
|
|
|
+ long days = ChronoUnit.DAYS.between(inTime, endDate);
|
|
|
+ //计算今年一共有多少天
|
|
|
+ Calendar instance = Calendar.getInstance();
|
|
|
+ instance.setTime(new Date());
|
|
|
+ int daysInYear = instance.getActualMaximum(Calendar.DAY_OF_YEAR);
|
|
|
+ //判断员工入职是否满10年
|
|
|
+ long round=0;
|
|
|
+ double days1=Double.parseDouble(holidayDTO.getDays());
|
|
|
+ if (yearsPassed>=1 && yearsPassed<10){
|
|
|
+ //(当年剩余的天数/当年一共天数)*5
|
|
|
+ double yearDays=(double)days/daysInYear*5;
|
|
|
+ round = Math.round(yearDays);
|
|
|
+ if (days1>round){
|
|
|
+ return "已超出可休年假天数,当年可休年假天数为"+round+"天";
|
|
|
+ }
|
|
|
+ }else if (yearsPassed>=10){
|
|
|
+ //(当年距离入职时间剩余的天数/当年一共天数)*10
|
|
|
+ double yearDays=(double)days/daysInYear*10;
|
|
|
+ round = Math.round(yearDays);
|
|
|
+ if (days1>round){
|
|
|
+ return "已超出可休年假天数,当年可休年假天数为"+round+"天";
|
|
|
+ }
|
|
|
}
|
|
|
- //员工可休年假天数与已休年假天数比较 获取剩余年假天数
|
|
|
- double surplus=round-holiday;
|
|
|
- //如果剩余年假天数小于等于0
|
|
|
- if (surplus <= 0){
|
|
|
- return "当年无剩余年假,无法再休年假";
|
|
|
+ //当前员工当年是否休过年假
|
|
|
+ List<HolidayDTO> holidays = holidayMapper.selectByUserId(userDTO.getId());
|
|
|
+ Double holiday=0.00;
|
|
|
+ if (ObjectUtils.isNotEmpty(holidays)){
|
|
|
+ for (HolidayDTO holiday1 : holidays) {
|
|
|
+ //获取已经休过的年假天数
|
|
|
+ holiday+=Double.parseDouble(holiday1.getDays());
|
|
|
+ }
|
|
|
+ //员工可休年假天数与已休年假天数比较 获取剩余年假天数
|
|
|
+ double surplus=round-holiday;
|
|
|
+ //如果剩余年假天数小于等于0
|
|
|
+ if (surplus <= 0){
|
|
|
+ return "当年无剩余年假,无法再休年假";
|
|
|
+ }else {
|
|
|
+ //判断本次年假天数是否大于剩余年假天数
|
|
|
+ if (days1>surplus){
|
|
|
+ return "本次年假时间超出剩余年假天数,剩余年假"+surplus+"天";
|
|
|
+ }
|
|
|
+ }
|
|
|
}else {
|
|
|
- //判断本次年假天数是否大于剩余年假天数
|
|
|
- if (days1>surplus){
|
|
|
- return "本次年假时间超出剩余年假天数,剩余年假"+surplus+"天";
|
|
|
+ //若当年未休过年假,则计算剩余年假
|
|
|
+ holiday=round-days1;
|
|
|
+ //如果剩余年假天数小于等于0
|
|
|
+ if (holiday < 0){
|
|
|
+ return "已超出可休年假天数,可休年假天数"+holiday+"天";
|
|
|
}
|
|
|
}
|
|
|
- }else {
|
|
|
- //若当年未休过年假,则计算剩余年假
|
|
|
- holiday=round-days1;
|
|
|
- //如果剩余年假天数小于等于0
|
|
|
- if (holiday < 0){
|
|
|
- return "已超出可休年假天数,可休年假天数"+holiday+"天";
|
|
|
- }
|
|
|
+ return "本次年假休息"+days1+"天,剩余年假"+holiday+"天";
|
|
|
}
|
|
|
+ return "您的入职信息不完善,请完善后再休年假";
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
- return "本次年假休息"+days1+"天,剩余年假"+holiday+"天";
|
|
|
|
|
|
}
|
|
|
|