请假半天问题修改

This commit is contained in:
cwchen 2025-03-17 15:46:48 +08:00
parent e3065f59f4
commit 305562a143
1 changed files with 77 additions and 8 deletions

View File

@ -22,10 +22,14 @@ import com.bonus.system.holiday.dao.WorkReportDao;
import com.bonus.system.holiday.entity.HolidayBean;
import com.bonus.system.holiday.service.HolidayService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
@ -112,15 +116,23 @@ public class HolidayController extends BaseController {
try {
// 判断开始时间是否重复
List<HolidayBean> list = holidayDao.judgeRepeatStrat(o);
if(list.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"开始日期与"+list.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
String result = conflictOrNot(o,list,1);
if(StringUtils.isNotBlank(result)){
return AjaxResult.error(result);
}
/*if(list.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"开始日期与"+list.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
}*/
// 判断结束时间是否重复
List<HolidayBean> listEnd = holidayDao.judgeRepeatEnd(o);
if(listEnd.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"结束日期与"+listEnd.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
String result2 = conflictOrNot(o,listEnd,2);
if(StringUtils.isNotBlank(result2)){
return AjaxResult.error(result2);
}
/*if(listEnd.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"结束日期与"+listEnd.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
}*/
// 新增
int res = holidayService.insertHoliday(o);
@ -156,15 +168,23 @@ public class HolidayController extends BaseController {
try {
// 判断开始时间是否重复
List<HolidayBean> list = holidayDao.judgeRepeatStrat(o);
if(list.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"开始日期与"+list.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
String result = conflictOrNot(o,list,1);
if(StringUtils.isNotBlank(result)){
return AjaxResult.error(result);
}
/*if(list.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"开始日期与"+list.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
}*/
// 判断结束时间是否重复
List<HolidayBean> listEnd = holidayDao.judgeRepeatEnd(o);
if(listEnd.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"结束日期与"+list.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
String result2 = conflictOrNot(o,listEnd,2);
if(StringUtils.isNotBlank(result2)){
return AjaxResult.error(result2);
}
/*if(listEnd.size()>0){
return AjaxResult.error("当前提交的"+o.getLeaveType()+"结束日期与"+list.get(0).getType()+"存在冲突日期"+list.get(0).getLeaveStartDate()+"~"+list.get(0).getLeaveEndDate());
}*/
int res = holidayService.updateHoliday(o);
return toAjax(res);
@ -174,6 +194,55 @@ public class HolidayController extends BaseController {
return error("系统异常");
}
/**
* 判断日期是否冲突
*/
public String conflictOrNot(HolidayBean o,List<HolidayBean> list,int type){
if(CollectionUtils.isEmpty(list)){
return null;
}else{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
for (HolidayBean holidayBean : list) {
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
StringBuilder sb3 = new StringBuilder();
String date = null,interval = null;
if(type == 1){
date = holidayBean.getLeaveStartDate().format(formatter);
interval = o.getLeaveStartInterval();
}else if(type == 2){
date = holidayBean.getLeaveEndDate().format(formatter);
interval = o.getLeaveEndInterval();
}
sb.append(date).append(interval);
String oldStartDate = holidayBean.getLeaveStartDate().format(formatter);
String oldEndDate = holidayBean.getLeaveEndDate().format(formatter);
sb2.append(oldStartDate).append(holidayBean.getLeaveStartInterval());
sb3.append(oldEndDate).append(holidayBean.getLeaveEndInterval());
// 校验数据是否冲突
boolean inRange = isInRange(Long.parseLong(sb.toString()), Long.parseLong(sb2.toString()), Long.parseLong(sb3.toString()));
if(inRange && type == 1){
return "当前提交的"+o.getLeaveType()+"开始日期与"+holidayBean.getType()+"存在冲突日期"+holidayBean.getLeaveStartDate()+"~"+holidayBean.getLeaveEndDate();
}else if(inRange && type == 2){
return "当前提交的"+o.getLeaveType()+"结束日期与"+holidayBean.getType()+"存在冲突日期"+holidayBean.getLeaveStartDate()+"~"+holidayBean.getLeaveEndDate();
}
}
return null;
}
}
/**
* 判断一个数值是否在指定区间范围内
*
* @param number 要判断的数值
* @param lowerBound 区间下限
* @param upperBound 区间上限
* @return 如果数值在区间内返回true否则返回false
*/
public static boolean isInRange(Long number, Long lowerBound, Long upperBound) {
return number >= lowerBound && number <= upperBound;
}
/**
* 删除请假单
*/