fxkh-txl-service/src/main/java/com/whdc/zhdbaqapi/annotation/DateTimeRangeValidator.java

63 lines
2.0 KiB
Java
Raw Normal View History

2022-07-22 10:22:03 +08:00
package com.whdc.zhdbaqapi.annotation;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* @author
* @date 2022-04-27 11:55
*/
public class DateTimeRangeValidator implements ConstraintValidator<DateTimeRange, Object> {
private String datefmt;
private String startField;
private String endField;
private long interval;
private TimeUnit timeUnit;
@Override
public void initialize(DateTimeRange dateTimeRange) {
this.datefmt = dateTimeRange.datafmt();
this.startField = dateTimeRange.startField();
this.endField = dateTimeRange.endField();
this.interval = dateTimeRange.interval();
this.timeUnit = dateTimeRange.timeUnit();
}
@Override
public boolean isValid(Object obj, ConstraintValidatorContext context) {
try {
if (obj == null) {
return false;
}
if (StringUtils.isBlank(this.startField) || StringUtils.isBlank(this.endField)) {
return false;
}
String stmval = BeanUtils.getProperty(obj, this.startField);
String etmval = BeanUtils.getProperty(obj, this.endField);
if (StringUtils.isBlank(stmval) || StringUtils.isBlank(etmval)) {
return false;
}
DateFormat df = new SimpleDateFormat(this.datefmt);
Date stm = df.parse(stmval);
Date etm = df.parse(etmval);
long dateDiff = stm.getTime() - etm.getTime();
return Math.abs(dateDiff) < this.timeUnit.toMillis(this.interval);
} catch (Exception e) {
return false;
}
}
}