Commit 1353ee86 by liuyu

Merge branch 'release' into 'master'

Release

See merge request !41
parents 19932bec fb9ffe4e
......@@ -10,6 +10,8 @@ public class GenericAttribute {
public static final String REDIS_MAP_KEY = "autoDataMap";
public static final String REDIS_MAP_LOSE_KEY = "autoDataMapLose";
public static final double SIMILAR_STANDARD = 0.7;
public static final String SON_ID = "sonId";
......@@ -50,4 +52,6 @@ public class GenericAttribute {
public static final String RUNNING = "running";
public static final String URL = "url";
public static final Long WEEK_TIME = 1000L * 60 * 60 * 24 * 7;
}
......@@ -32,8 +32,12 @@ public class AutoMaticClient {
autoMaticService.resetTemplate(group, templateTitle);
}
public Map<String, TemplateTitleVo> getTemplateTitleByProject(String project) {
return autoMaticService.getTemplateTitleByProject(project);
public Map<String, TemplateTitleVo> getTemplateTitleByProjectByLive(String project) {
return autoMaticService.getTemplateTitleByProjectByLive(project);
}
public Map<String, TemplateTitleVo> getTemplateTitleByProjectByLost(String project) {
return autoMaticService.getTemplateTitleByProjectByLost(project);
}
public List<String> getMupdateByTemplateTitle(String group, String templateTitle) {
......
......@@ -65,7 +65,7 @@ public class TaskManager {
}
// 任务间隔过滤
if (Objects.nonNull(autoTask.isSplitFilter()) && Objects.nonNull(autoTask.getGroup())) {
String runningKey = concat(GenericAttribute.RUNNING, autoTask.getGroup());
String runningKey = concat(GenericAttribute.RUNNING, autoTask.getGroup(), String.valueOf(autoTask.isSplitFilter()));
if (Objects.nonNull(redissonUtil.getBucket(runningKey)) && !autoTask.isSplitFilter()) {
log.info("有同类型任务正在执行中:{}", autoTask.getGroup());
return;
......@@ -95,7 +95,7 @@ public class TaskManager {
}
// 删除正在运行得任务
if (Objects.nonNull(autoTask.isSplitFilter())) {
redissonUtil.deleteBucket(concat(GenericAttribute.RUNNING, autoTask.getGroup()));
redissonUtil.deleteBucket(concat(GenericAttribute.RUNNING, autoTask.getGroup(), String.valueOf(autoTask.isSplitFilter())));
}
}
} catch (Exception e) {
......
......@@ -33,7 +33,14 @@ public interface AutoMaticService {
* @param project 项目
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProject(String project);
Map<String, TemplateTitleVo> getTemplateTitleByProjectByLive(String project);
/**
* 获取项目文本模板
* @param project 项目
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProjectByLost(String project);
/**
* 根据模板标题获取数据(仅最新100条)
......
package com.zhiwei.middleware.automatic.server.pojo.enums;
public enum TaskType {
COMMON_ONE("common_one", "commonCache"),
COMMON_TWO("common_two", "commonCache"),
TEMPLATE("template", null),
TEMPLATE_MODIFY("template_modify", null),
TEMPLATE_RESET("template_reset", null),
TEMPLATE_RECORD("template_record", null),
TEMPLATE_CLEAR_RETRY("template_clear_retry", null);
COMMON_ONE("common_one", "commonCache", "自动标注任务-单项目"),
COMMON_TWO("common_two", "commonCache", "自动标注任务-多项目"),
TEMPLATE("template", null, "模板聚合任务"),
TEMPLATE_MODIFY("template_modify", null, "模板修改任务"),
TEMPLATE_RESET("template_reset", null, "模板重置任务"),
TEMPLATE_RECORD("template_record", null, "模板特征值清除记录任务"),
TEMPLATE_CLEAR_RETRY("template_clear_retry", null, "模板重置模板重试任务"),
TEMPLATE_LOST_RESET("template_lost_reset", null, "过期重置模板清除任务");
final String type;
final String cacheId;
TaskType(String type, String cacheId) {
final String message;
TaskType(String type, String cacheId, String message) {
this.type = type;
this.cacheId = cacheId;
this.message = message;
}
public String getType() {
......@@ -26,6 +30,10 @@ public enum TaskType {
return cacheId;
}
public String getMessage() {
return message;
}
public static TaskType create(String type) {
for (TaskType taskType : TaskType.values()) {
if (taskType.type.equals(type)) {
......
......@@ -88,6 +88,11 @@ public class RedissonUtil {
map.put(group, value);
}
public void removeMapValue(String key, String group) {
RMap<String, String> map = redissonClient.getMap(redisKey(key));
map.remove(group);
}
public List<String> getList(String redisKey) {
return redissonClient.getList(redisKey(redisKey));
......
......@@ -37,7 +37,14 @@ public interface AutoMaticService {
* @param project 项目
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProject(String project);
Map<String, TemplateTitleVo> getTemplateTitleByProjectByLive(String project);
/**
* 获取项目文本模板
* @param project 项目
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProjectByLost(String project);
/**
* 根据模板标题获取数据(仅最新100条)
......
......@@ -67,8 +67,13 @@ public class AutoMaticServiceImpl implements AutoMaticService {
}
@Override
public Map<String, TemplateTitleVo> getTemplateTitleByProject(String project) {
return templateTitleService.getTemplateTitleByProject(project);
public Map<String, TemplateTitleVo> getTemplateTitleByProjectByLive(String project) {
return templateTitleService.getTemplateTitleByProjectLive(project);
}
@Override
public Map<String, TemplateTitleVo> getTemplateTitleByProjectByLost(String project) {
return templateTitleService.getTemplateTitleByProjectLost(project);
}
@Override
......
......@@ -65,7 +65,7 @@ public class ScheduledMission {
for (String project : asyncTask.findAllGroup()) {
//模板聚合任务
putTask(project, startTime, endTime, true);
putTaskBy(project);
putTaskByReset(project);
}
// 模板记录清除任务
putTaskByRecord();
......@@ -87,13 +87,20 @@ public class ScheduledMission {
TaskManager.getInstance().putTask(autoTask);
}
private void putTaskBy(String group) {
Map<String, TemplateTitleVo> project = templateTitleService.getTemplateTitleByProject(group);
private void putTaskByReset(String group) {
Map<String, TemplateTitleVo> project = templateTitleService.getTemplateTitleByProjectLost(group);
for (Map.Entry<String, TemplateTitleVo> entry : project.entrySet()) {
if (entry.getValue().getStatus() == TemplateStatus.重置失败) {
TemplateTitleVo value = entry.getValue();
if (value.getStatus() == TemplateStatus.重置失败) {
AutoTask autoTask = new AutoTask(TaskType.TEMPLATE_CLEAR_RETRY.getType(), group);
autoTask.getParamSource().put(GenericAttribute.TEMPLATE_TITLE, entry.getKey());
TaskManager.getInstance().putTask(autoTask);
continue;
}
if (value.getUpdateTime().getTime() > (System.currentTimeMillis() - GenericAttribute.WEEK_TIME)) {
AutoTask autoTask = new AutoTask(TaskType.TEMPLATE_LOST_RESET.getType(), group);
autoTask.getParamSource().put(GenericAttribute.TEMPLATE_TITLE, entry.getKey());
TaskManager.getInstance().putTask(autoTask);
}
}
}
......
......@@ -8,11 +8,17 @@ import java.util.Map;
public interface TemplateTitleService {
/**
* 获取项目文本模板
* 获取有效的项目文本模板
* @param project 项目
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProject(String project);
Map<String, TemplateTitleVo> getTemplateTitleByProjectLive(String project);
/**
* 回去重置的项目文本模板
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProjectLost(String project);
/**
* 根据模板标题获取数据(仅最新100条)
......
......@@ -36,22 +36,19 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
}
@Override
public Map<String, TemplateTitleVo> getTemplateTitleByProject(String project) {
Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, project));
if (Tools.isEmpty(mapValue)) {
return new HashMap<>();
}
Map<String, TemplateTitleVo> res = Tools.restoreTMap(mapValue, TemplateTitleVo.class);
for (Map.Entry<String, TemplateTitleVo> entry : res.entrySet()) {
setMarkCount(entry.getKey(), entry.getValue());
public Map<String, TemplateTitleVo> getTemplateTitleByProjectLive(String project) {
return getTemplateTitleByProject(GenericAttribute.REDIS_MAP_KEY, project);
}
return res;
@Override
public Map<String, TemplateTitleVo> getTemplateTitleByProjectLost(String project) {
return getTemplateTitleByProject(GenericAttribute.REDIS_MAP_LOSE_KEY, project);
}
@Override
public List<String> getMupdateByTemplateTitle(String group, String templateTitle) {
try {
TemplateTitleVo templateTitleVo = getTemplateTitleByProject(group).get(templateTitle);
TemplateTitleVo templateTitleVo = getTemplateTitleByProjectLive(group).get(templateTitle);
if (null == templateTitleVo || TemplateStatus.已重置 == templateTitleVo.getStatus()) {
return null;
}
......@@ -65,7 +62,7 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
@Override
public String tryGetTemplateTitleByMupdate(String group, String title, String mupdate) {
Map<String, TemplateTitleVo> templateTitleVos = getTemplateTitleByProject(group);
Map<String, TemplateTitleVo> templateTitleVos = getTemplateTitleByProjectLive(group);
List<Map<String, Object>> filterTitles = new ArrayList<>();
for (String templateTitle : templateTitleVos.keySet()) {
if (TemplateStatus.已重置 == templateTitleVos.get(templateTitle).getStatus()) {
......@@ -101,7 +98,7 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
res.put("errorMessage", "标题或项目为空");
return res;
}
Map<String, TemplateTitleVo> templateTitleVoMap = getTemplateTitleByProject(project);
Map<String, TemplateTitleVo> templateTitleVoMap = getTemplateTitleByProjectLive(project);
if (templateTitleVoMap.isEmpty()) {
res.put("errorMessage", "该项目组未有聚合集");
return res;
......@@ -136,6 +133,15 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
return res;
}
private Map<String, TemplateTitleVo> getTemplateTitleByProject(String key, String project) {
Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(key, project));
if (Tools.isEmpty(mapValue)) {
return new HashMap<>();
}
return Tools.restoreTMap(mapValue, TemplateTitleVo.class);
}
private void setMarkCount(String group, TemplateTitleVo vo) {
vo.setMarkSum(redissonUtil.getCount(Tools.assembleKey(COUNT_KEY, group, vo.getId())));
}
......
......@@ -2,19 +2,23 @@ package com.zhiwei.middleware.automatic.son.service;
import com.zhiwei.middleware.automatic.server.pojo.TemplateRecord;
import com.zhiwei.middleware.automatic.server.pojo.TemplateTitleVo;
import com.zhiwei.middleware.automatic.son.dao.TemplateTempRecord;
import java.util.List;
import java.util.Map;
public interface TemplateTitleService {
/**
* 获取项目文本模板
* 获取有效的项目文本模板
* @param project 项目
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProject(String project);
Map<String, TemplateTitleVo> getTemplateTitleByProjectLive(String project);
/**
* 回去重置的项目文本模板
* @return 模板集
*/
Map<String, TemplateTitleVo> getTemplateTitleByProjectLost(String project);
/**
* 添加项目文本模板
......@@ -61,4 +65,19 @@ public interface TemplateTitleService {
* @param fixTag 标签
*/
void setTemplateValue(String group, String title, String fixTag);
/**
* 清除模板
* @param group 项目
* @param title 标题
*/
void deleteTemplate(String group, String title);
/**
* 修改模板特征值信息
* @param title 标题
* @param project 项目
* @return 是否成功
*/
boolean modifyTemplateMarkerInfo (String title, String project);
}
......@@ -25,12 +25,10 @@ import org.elasticsearch.search.SearchHits;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
......@@ -66,13 +64,13 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
@Override
public Map<String, TemplateTitleVo> getTemplateTitleByProject(String project) {
Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, project));
// Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(getFileDayName(project)));
if (Tools.isEmpty(mapValue)) {
return new HashMap<>();
public Map<String, TemplateTitleVo> getTemplateTitleByProjectLive(String project) {
return getTemplateTitleByProject(GenericAttribute.REDIS_MAP_KEY, project);
}
return Tools.restoreTMap(mapValue, TemplateTitleVo.class);
@Override
public Map<String, TemplateTitleVo> getTemplateTitleByProjectLost(String project) {
return getTemplateTitleByProject(GenericAttribute.REDIS_MAP_LOSE_KEY, project);
}
@Override
......@@ -102,28 +100,17 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
public boolean resetTemplate(String group, String title) {
// 防止增加模板标题有带符号的问题
String templateTitle = Tools.filterSymbol(title);
Map<String, TemplateTitleVo> map = getTemplateTitleByProject(group);
Map<String, TemplateTitleVo> map = getTemplateTitleByProjectLive(group);
if (Objects.isNull(map.get(templateTitle))) {
return false;
}
TemplateTitleVo templateTitleVo = map.get(templateTitle);
// 只要在运行中的模板 才能重置
if (Objects.isNull(templateTitleVo.getStatus()) || templateTitleVo.getStatus().name().equals(TemplateStatus.运行中.name())) {
templateTitleVo.setStatus(TemplateStatus.重置中);
setTemplateValue(group, templateTitle, templateTitleVo);
// 修改模板的标注信息
executor.execute(() -> {
try {
modifyTemplateMarkerInfo(templateTitleVo, group);
templateTitleVo.setStatus(TemplateStatus.已重置);
templateRecordDao.removeTemplateRecord(new Query(Criteria.where("templateId").is(templateTitleVo.getId())));
} catch (Exception e) {
templateTitleVo.setStatus(TemplateStatus.重置失败);
log.error("重置模板:修改聚和集错误,title:{},以加入重试队列", templateTitleVo.getTemplateTitle());
} finally {
setTemplateValue(group, templateTitle, templateTitleVo);
}
});
redissonUtil.setMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_LOSE_KEY, group), templateTitle, JSONObject.toJSONString(templateTitleVo));
deleteTemplate(group, title);
return true;
}
return false;
......@@ -139,42 +126,27 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
setTemplateValue(group, title, null, fixTag);
}
private void setTemplateValue(String group, String title, TemplateTitleVo templateTitleVo, String fixTag) {
String lockKey = Tools.assembleKey(GenericAttribute.LOCK, title);
try {
if (redissonUtil.tryLock(lockKey, 5, 5)) {
String mapKey = Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, group);
String mapKeyValue = redissonUtil.getMapKeyValue(mapKey, title);
TemplateTitleVo titleVo = JSONObject.parseObject(mapKeyValue, TemplateTitleVo.class);
if (Objects.isNull(titleVo)) {
return;
}
if (Objects.isNull(templateTitleVo)) {
templateTitleVo = titleVo;
}
if (Objects.isNull(fixTag)) {
templateTitleVo.accSum(titleVo.getMarkSum(), titleVo.getDaySum());
} else {
String oldTag = templateTitleVo.getMtag();
templateTitleVo.setMtag(fixTag);
log.info("修改模板标签成功: group:{} templateTitle:{} oldTag:{} fixTag:{}", group, title, oldTag,
fixTag);
}
redissonUtil.setMapValue(mapKey, title, JSONObject.toJSONString(templateTitleVo));
@Override
public void deleteTemplate(String group, String title) {
redissonUtil.removeMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, group), title);
}
} catch (Exception e) {
log.error("修改模板失败,项目:{},title:{}", group, title, e);
} finally {
redissonUtil.unlock(lockKey);
private Map<String, TemplateTitleVo> getTemplateTitleByProject(String key, String project) {
Map<String, String> mapValue = redissonUtil.getMapValue(Tools.assembleKey(key, project));
if (Tools.isEmpty(mapValue)) {
return new HashMap<>();
}
return Tools.restoreTMap(mapValue, TemplateTitleVo.class);
}
/**
* 模板自动标注的历史数据修改为新标签
* @param templateTitleVo 模板
* @param title 模板
* @return 是否修改成功
*/
private boolean modifyTemplateMarkerInfo (TemplateTitleVo templateTitleVo, String project) throws Exception {
public boolean modifyTemplateMarkerInfo (String title, String project) {
TemplateTitleVo templateTitleVo = getTemplateTitleByProjectLost(project).get(title);
try {
long now = System.currentTimeMillis();
long count = templateRecordDao.count(new Query(Criteria.where("templateId").is(templateTitleVo.getId())));
if (count == 0) {
......@@ -196,11 +168,47 @@ public class TemplateTitleServiceImpl implements TemplateTitleService {
//发送给标注中间件处理
dubboHandler.markUpsert(collect);
}
templateRecordDao.removeTemplateRecord(new Query(Criteria.where("templateId").is(templateTitleVo.getId())));
log.info("自动标注模板:模板已改动,项目:{},模板标题:{},特征值数量:{}, 耗时:{}"
, project, templateTitleVo.getTemplateTitle(), count, System.currentTimeMillis() - now);
} catch (Exception e) {
templateTitleVo.setStatus(TemplateStatus.重置失败);
log.error("重置模板:修改聚和集错误,title:{},以加入重试队列", templateTitleVo.getTemplateTitle());
redissonUtil.setMapValue(Tools.assembleKey(GenericAttribute.REDIS_MAP_LOSE_KEY, project), title, JSONObject.toJSONString(templateTitleVo));
}
return true;
}
private void setTemplateValue(String group, String title, TemplateTitleVo templateTitleVo, String fixTag) {
String lockKey = Tools.assembleKey(GenericAttribute.LOCK, title);
try {
if (redissonUtil.tryLock(lockKey, 5, 5)) {
String mapKey = Tools.assembleKey(GenericAttribute.REDIS_MAP_KEY, group);
String mapKeyValue = redissonUtil.getMapKeyValue(mapKey, title);
TemplateTitleVo titleVo = JSONObject.parseObject(mapKeyValue, TemplateTitleVo.class);
if (Objects.isNull(titleVo)) {
return;
}
if (Objects.isNull(templateTitleVo)) {
templateTitleVo = titleVo;
}
if (Objects.isNull(fixTag)) {
templateTitleVo.accSum(titleVo.getMarkSum(), titleVo.getDaySum());
} else {
String oldTag = templateTitleVo.getMtag();
templateTitleVo.setMtag(fixTag);
log.info("修改模板标签成功: group:{} templateTitle:{} oldTag:{} fixTag:{}", group, title, oldTag,
fixTag);
}
redissonUtil.setMapValue(mapKey, title, JSONObject.toJSONString(templateTitleVo));
}
} catch (Exception e) {
log.error("修改模板失败,项目:{},title:{}", group, title, e);
} finally {
redissonUtil.unlock(lockKey);
}
}
/**
* 根据特征值查询es数据
* @param mupdate 特征值
......
......@@ -158,7 +158,7 @@ public class TaskServiceCommon extends BaseTaskTypePair<TaskServiceCommon.TaskCo
private void projectAutoMark(Map<String, List<MarkInfo>> groupMap) {
for (Map.Entry<String, List<MarkInfo>> entry : groupMap.entrySet()) {
try {
Map<String, TemplateTitleVo> template = templateTitleService.getTemplateTitleByProject(entry.getKey());
Map<String, TemplateTitleVo> template = templateTitleService.getTemplateTitleByProjectLive(entry.getKey());
clearTemplateDaySum(template);
asyncTitleMark(entry.getKey(), entry.getValue(), template);
} catch (Exception e) {
......
......@@ -68,8 +68,9 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
taskCache(TaskType.TEMPLATE, this::templateRun);
taskCache(TaskType.TEMPLATE_MODIFY, this::templateModify);
taskCache(TaskType.TEMPLATE_RESET, this::templateReset);
taskCache(TaskType.TEMPLATE_CLEAR_RETRY, this::templateReset);
taskCache(TaskType.TEMPLATE_CLEAR_RETRY, this::templateLost);
taskCache(TaskType.TEMPLATE_RECORD, this::templateRecordClean);
taskCache(TaskType.TEMPLATE_LOST_RESET, this::templateLost);
}
@Override
......@@ -83,7 +84,7 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
long now = System.currentTimeMillis();
TaskTemplateFunctional pair = getPairValue(autoTask.getType());
pair.template(autoTask);
log.info("模板任务结束, 项目:{},开始时间:{},结束时间:{},耗时:{}", autoTask.getGroup(),
log.info("{}结束, 项目:{},开始时间:{},结束时间:{},耗时:{}", getPairKey(autoTask.getType()).getMessage(), autoTask.getGroup(),
Tools.TIME_FORMAT.format(autoTask.getParamSource().getLong(GenericAttribute.START_PARAM)),
Tools.TIME_FORMAT.format(autoTask.getParamSource().getLong(GenericAttribute.START_PARAM)), System.currentTimeMillis() - now);
}, autoTask));
......@@ -94,6 +95,10 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
log.info(executorLog, "模板聚合",executor.getActiveCount(), executor.getQueue().size());
}
/**
* 模板清除任务
* @param autoTask 参数
*/
private void templateRecordClean(AutoTask autoTask) {
templateRecordDao.removeTemplateRecord(new Query(Criteria.where("createAt").lt(autoTask.getParamSource().getLong(GenericAttribute.END_PARAM))));
}
......@@ -140,6 +145,13 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
}
}
/**
* 重置中模板清除任务
*/
private void templateLost(AutoTask autoTask) {
templateTitleService.modifyTemplateMarkerInfo(autoTask.getParamSource().getString(GenericAttribute.TEMPLATE_TITLE),
autoTask.getGroup());
}
/**
* 查询该项目 指定时间范围的数据
......@@ -176,7 +188,7 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
//聚合模板
Map<String, TemplateTitleVo> aggregation = aggregation(transferMark(sourceList));
//旧的聚合模板
Map<String, TemplateTitleVo> templateTitleByProject = templateTitleService.getTemplateTitleByProject(group).entrySet().stream()
Map<String, TemplateTitleVo> templateTitleByProject = templateTitleService.getTemplateTitleByProjectLive(group).entrySet().stream()
.filter(e -> {
String title = e.getKey();
TemplateTitleVo templateTitleVo = e.getValue();
......@@ -187,6 +199,7 @@ public class TaskServiceTemplate extends BaseTaskTypePair<TaskServiceTemplate.Ta
// 移除7天有效期外的数据
if (System.currentTimeMillis() - updateTime > ONE_DAY * 7 * 1000) {
log.info("{}-移除过期模板标题:{},最后更新时间:{}", group, title, updateTime);
templateTitleService.deleteTemplate(group, title);
return false;
} else if (e.getValue().getStatus() == TemplateStatus.已重置) {
log.info("已重置的模板从内存中删除,模板title:{}", e.getKey());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment