package com.gkhy.safePlatform.safeCheck.util;
|
|
import com.gkhy.safePlatform.commons.enums.E;
|
import com.gkhy.safePlatform.commons.exception.AusinessException;
|
import com.gkhy.safePlatform.safeCheck.enums.TimeUnitEnum;
|
|
import java.util.Date;
|
|
public class timeChangeUtil {
|
|
/**
|
* @description 根据巡检周期和巡检周期单位、本次任务的通知时间推算下次通知时间
|
*/
|
public static Date nextNoticeTimeByCurrentNoticeTime(int checkCycle,Byte checkCycleUnit,Date CurrentNoticeTime){
|
|
Long intervalTime = 0L;
|
|
if (checkCycle <= 0 || checkCycleUnit == null || CurrentNoticeTime == null){
|
throw new AusinessException(E.DATA_PARAM_NULL,"下次通知时间转换参数不能为空");
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_MINUTE.getCode()){
|
intervalTime = Long.valueOf(60 * 1000 * checkCycle);
|
return new Date(CurrentNoticeTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_HOURS.getCode()){
|
intervalTime = Long.valueOf(60 * 60 * 1000 * checkCycle);
|
return new Date(CurrentNoticeTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_DAY.getCode()){
|
intervalTime = Long.valueOf(24 * 60 * 60 * 1000 * checkCycle);
|
return new Date(CurrentNoticeTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_MONTH.getCode()){
|
intervalTime = Long.valueOf(30 * 24 * 60 * 60 * 1000 * checkCycle);
|
return new Date(CurrentNoticeTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_YEAR.getCode()){
|
intervalTime = Long.valueOf(365 * 30 * 24 * 60 *60 * 1000 * checkCycle);
|
}
|
return new Date(CurrentNoticeTime.getTime()+intervalTime);
|
|
}
|
|
|
/**
|
* @description 获取下次执行时间、巡检周期、巡检周期单位
|
*/
|
public static Date nextCheckTime(int checkCycle,Byte checkCycleUnit,Date nextCheckTime){
|
Long intervalTime = 0L;
|
if (checkCycle <= 0 || checkCycleUnit == null || nextCheckTime == null){
|
throw new AusinessException(E.DATA_PARAM_NULL,"下次巡检时间转换参数不能为空");
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_MINUTE.getCode()){
|
intervalTime = Long.valueOf((60 * 1000) * checkCycle);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_HOURS.getCode()){
|
intervalTime = Long.valueOf((60 * 60 * 1000) * checkCycle);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_DAY.getCode()){
|
intervalTime = Long.valueOf((24 * 60 * 60 * 1000) * checkCycle);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
//todo 换算先用一个月30天 一年365天
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_MONTH.getCode()){
|
intervalTime = Long.valueOf((30 * 24 * 60 * 60 * 1000) * checkCycle);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (checkCycleUnit == TimeUnitEnum.TIME_UNIT_YEAR.getCode()){
|
intervalTime = Long.valueOf((365 * 30 * 24 * 60 * 60 * 1000) * checkCycle);
|
}
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
|
/**
|
* @description 获取当前执行时间对应的通知时间、提前通知时间、提前通知时间单位
|
*/
|
public static Date nextNoticeTime(int noticeTime,Byte noticeTimeUnit,Date nextCheckTime){
|
Long intervalTime = 0L;
|
if (noticeTime <= 0 || noticeTimeUnit == null || nextCheckTime == null){
|
throw new AusinessException(E.DATA_PARAM_NULL,"下次通知时间转换参数不能为空");
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_MINUTE.getCode()){
|
intervalTime = Long.valueOf(60 * 1000 * noticeTime);
|
return new Date(nextCheckTime.getTime()-intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_HOURS.getCode()){
|
intervalTime = Long.valueOf(60 * 60 * 1000 * noticeTime);
|
return new Date(nextCheckTime.getTime()-intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_DAY.getCode()){
|
intervalTime = Long.valueOf(24 * 60 * 60 * 1000 * noticeTime);
|
return new Date(nextCheckTime.getTime()-intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_MONTH.getCode()){
|
intervalTime = Long.valueOf(30 * 24 * 60 * 60 * 1000 * noticeTime);
|
return new Date(nextCheckTime.getTime()-intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_YEAR.getCode()){
|
intervalTime = Long.valueOf(365 * 30 * 24 * 60 *60 * 1000 * noticeTime);
|
}
|
return new Date(nextCheckTime.getTime()-intervalTime);
|
}
|
|
/**
|
* @description 获取本次检查时间对应的本次有效时间
|
*/
|
public static Date nextValidTime(int validTime,Byte validTimeUnit,Date nextCheckTime){
|
Long intervalTime = 0L;
|
if (validTime <= 0 || validTimeUnit == null || nextCheckTime == null){
|
throw new AusinessException(E.DATA_PARAM_NULL,"下次有效时间转换参数不能为空");
|
}
|
if (validTimeUnit == TimeUnitEnum.TIME_UNIT_MINUTE.getCode()){
|
intervalTime = Long.valueOf(60 * 1000 * validTime);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (validTimeUnit == TimeUnitEnum.TIME_UNIT_HOURS.getCode()){
|
intervalTime = Long.valueOf(60 * 60 * 1000 * validTime);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (validTimeUnit == TimeUnitEnum.TIME_UNIT_DAY.getCode()){
|
intervalTime = Long.valueOf(24 * 60 * 60 * 1000 * validTime);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (validTimeUnit == TimeUnitEnum.TIME_UNIT_MONTH.getCode()){
|
intervalTime = Long.valueOf(30 * 24 * 60 * 60 * 1000 * validTime);
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
if (validTimeUnit == TimeUnitEnum.TIME_UNIT_YEAR.getCode()){
|
intervalTime = Long.valueOf(365 * 30 * 24 * 60 *60 * 1000 * validTime);
|
}
|
return new Date(nextCheckTime.getTime()+intervalTime);
|
}
|
|
/**
|
* @description 根据当前通知时间推算当前检查时间
|
*/
|
public static Date getNextCheckTimeByNextNoticeTime(int noticeTime,Byte noticeTimeUnit,Date nextNoticeTime){
|
Long intervalTime = 0L;
|
if (noticeTime <= 0 || noticeTimeUnit == null || nextNoticeTime == null){
|
throw new AusinessException(E.DATA_PARAM_NULL,"下次执行时间转换参数不能为空");
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_MINUTE.getCode()){
|
intervalTime = Long.valueOf(60 * 1000 * noticeTime);
|
return new Date(nextNoticeTime.getTime()+intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_HOURS.getCode()){
|
intervalTime = Long.valueOf(60 * 60 * 1000 * noticeTime);
|
return new Date(nextNoticeTime.getTime()+intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_DAY.getCode()){
|
intervalTime = Long.valueOf(24 * 60 * 60 * 1000 * noticeTime);
|
return new Date(nextNoticeTime.getTime()+intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_MONTH.getCode()){
|
intervalTime = Long.valueOf(30 * 24 * 60 * 60 * 1000 * noticeTime);
|
return new Date(nextNoticeTime.getTime()+intervalTime);
|
}
|
if (noticeTimeUnit == TimeUnitEnum.TIME_UNIT_YEAR.getCode()){
|
intervalTime = Long.valueOf(365 * 30 * 24 * 60 *60 * 1000 * noticeTime);
|
}
|
return new Date(nextNoticeTime.getTime()+intervalTime);
|
}
|
}
|