EmasUtil.java
package com.mycim.utils;
import com.fa.sesa.threadlocal.LocalContext;
import com.fa.sesa.threadlocal.LocalContextNames;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import java.util.Date;
import java.util.Map;
/**
* 提供 NEW EMAS 计算是否超时,触发日期
*
* @author kangzhang
* @version 1.0.0
* @date 2021/6/23
**/
public class EmasUtil {
public static final String RUN_MODE_MANUAL = "MANUAL";
public static final String RUN_MODE_EAP = "EAP";
public static final String RUN_TYPE_RUNCARDMOVEIN = "RUNCARDMOVEIN";
public static final String RUN_TYPE_RUNCARDMOVEOUT = "RUNCARDMOVEOUT";
public static final String RUN_TYPE_MOVEIN = "MOVEIN";
public static final String RUN_TYPE_MOVEOUT = "MOVEOUT";
public static final String LOTHISTORY_TYPE_RUNCARD = "RUNCARD";
public static final String RUN_TYPE_AUTOMONITORMOVEIN = "AUTOMONITORMOVEIN";
public static final String RUN_TYPE_AUTOMONITORMOVEOUT = "AUTOMONITORMOVEOUT";
public static final String getRunMode() {
if (StringUtils.equals(LocalContext.get(LocalContextNames.TRANS_MODULE_KEY), WipUtils.MANUAL)) {
return RUN_MODE_MANUAL;
} else if (StringUtils.equals(LocalContext.get(LocalContextNames.TRANS_MODULE_KEY), WipUtils.AUTO)) {
return RUN_MODE_EAP;
} else {
return StringUtils.EMPTY;
}
}
public static Date getTriggeringTimeByTime(Map<String, Object> eventInfo) {
return getTriggeringTime(eventInfo, 0D);
}
public static Date getTriggeringTimeByPM(Map<String, Object> eventInfo, Double bufferTime) {
return getTriggeringTime(eventInfo, bufferTime);
}
public static Date getTriggeringTimeByBatch(Map<String, Object> eventInfo, Double bufferTime) {
return getTriggeringTime(eventInfo, bufferTime);
}
private static Date getTriggeringTime(Map<String, Object> eventInfo, Double bufferTime) {
String delayOperationTimeStr = MapUtils.getString(eventInfo, "delayOperationTime");
String createTimeStr = MapUtils.getString(eventInfo, "createTime");
Date delayOperationTime;
Double delayTime = MapUtils.getDouble(eventInfo, "delayTime", 0D);
if (StringUtils.isNotBlank(delayOperationTimeStr)){
delayOperationTime = DateUtils.parse(delayOperationTimeStr, DateUtils.DATE_FORMAT4DATE);
return new Date(
(long) (delayOperationTime.getTime() + delayTime * 60 * 60 * 1000));
} else {
delayOperationTime = DateUtils.parse(createTimeStr, DateUtils.DATE_FORMAT4DATE);
return new Date(
(long) (delayOperationTime.getTime() + bufferTime * 60 * 60 * 1000 + delayTime * 60 * 60 * 1000));
}
}
public static boolean checkOverTimeByPM(Map<String, Object> eventInfo, Double bufferTime) {
return checkOverTime(getTriggeringTimeByPM(eventInfo, bufferTime));
}
public static boolean checkOverTimeByTime(Map<String, Object> eventInfo) {
return checkOverTime(getTriggeringTimeByTime(eventInfo));
}
private static boolean checkOverTime(Date checkDate) {
Date sysDate = new Date(System.currentTimeMillis());
return sysDate.after(checkDate);
}
/**
* 转义正则特殊字符 ($()*+.[]?\^{},|)
*
* @param keyword
* @return
*/
public static String escapeExprSpecialWord(String keyword) {
if (StringUtils.isNotBlank(keyword)) {
String[] fbsArr = {"\\", "$", "(", ")", "+", "[", "]", "?", "^", "{", "}", "|"};
for (String key : fbsArr) {
if (keyword.contains(key)) {
keyword = keyword.replace(key, "\\" + key);
}
}
}
return keyword;
}
public static Date getTriggeringTimeByCount(Map<String, Object> event, Double bufferTime) {
return getTriggeringTime(event, bufferTime);
}
public static boolean checkOverTimeByCount(Map<String, Object> event, Double bufferTime) {
return checkOverTime(getTriggeringTimeByCount(event, bufferTime));
}
public class CheckType {
public static final String PM = "ByPM";
public static final String COUNT = "ByCount";
public static final String TIME = "ByTime";
public static final String BATCH = "ByBatch";
public class CycleType {
public static final String BY_HOUR = "ByHour";
}
}
public class Status {
public static final String ONGOING = "Ongoing";
public static final String CLOSE = "Close";
public static final String SPECIAL_CLOSE = "specialClose";
public static final String ENABLE_FLAG_ON = "T";
public static final String ENABLE_FLAG_OFF = "F";
}
}