Commit 67a589f4 by liuyu

2023年05/18 标注模板实时,重置状态缓存区分

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