You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
backend/src/main/java/com/xydl/cac/task/CacheTask.java

56 lines
1.7 KiB
Java

package com.xydl.cac.task;
import com.xydl.cac.entity.Jg;
import com.xydl.cac.entity.ModevType;
import com.xydl.cac.entity.WarnRule;
import com.xydl.cac.entity.Zsb;
import com.xydl.cac.service.WarnRuleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@Service
@Slf4j
public class CacheTask {
@Resource
WarnRuleService ruleService;
public static HashMap<String, String> unit_Cache = new HashMap<>();
public static List<ModevType> modevType_Cache = null;
public static List<Jg> jg_Cache = null;
public static List<Zsb> zsb_Cache = null;
public static ConcurrentHashMap<Integer, WarnRule> rule_Cache = new ConcurrentHashMap<>();
@Scheduled(cron = "0 0 9 * * ?")
private void clearCache() {
unit_Cache.clear();
modevType_Cache = null;
jg_Cache = null;
zsb_Cache = null;
rule_Cache.clear();
}
@Scheduled(initialDelay = 30 * 1000, fixedDelay = 60 * 1000)
private void refreshRule() {
try {
List<WarnRule> list = ruleService.listAll(null);
for (WarnRule item : list) {
WarnRule rule = rule_Cache.get(item.getId());
if (rule == null) {
item.initComparator(item.getComparator(), item.getOperator());
rule_Cache.put(item.getId(), item);
}
}
} catch (Exception e) {
log.error("CacheTask.refreshRule error.", e);
}
}
}