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); } }