Commit bd2da345 authored by 陈立彬's avatar 陈立彬

字典配置、任务调度

parent df093341
...@@ -8,8 +8,10 @@ import cn.breeze.elleai.application.dto.response.KnowledgeDataBaseCategoryDto; ...@@ -8,8 +8,10 @@ import cn.breeze.elleai.application.dto.response.KnowledgeDataBaseCategoryDto;
import cn.breeze.elleai.application.dto.response.ProperNounDto; import cn.breeze.elleai.application.dto.response.ProperNounDto;
import cn.breeze.elleai.domain.sparring.model.request.ProperNounRequestModel; import cn.breeze.elleai.domain.sparring.model.request.ProperNounRequestModel;
import cn.breeze.elleai.domain.sparring.model.request.ProperNounSaveModel; import cn.breeze.elleai.domain.sparring.model.request.ProperNounSaveModel;
import cn.breeze.elleai.domain.sparring.model.response.DataDicResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel; import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel;
import cn.breeze.elleai.domain.sparring.service.CommonService; import cn.breeze.elleai.domain.sparring.service.CommonService;
import cn.breeze.elleai.util.Codes;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
...@@ -17,10 +19,12 @@ import com.alibaba.fastjson.JSON; ...@@ -17,10 +19,12 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -112,12 +116,11 @@ public class AppCommonService { ...@@ -112,12 +116,11 @@ public class AppCommonService {
*/ */
public List<KnowledgeDataBaseCategoryDto> KnowledgeDataBaseCategoryList() { public List<KnowledgeDataBaseCategoryDto> KnowledgeDataBaseCategoryList() {
List<KnowledgeDataBaseCategoryDto> result = new ArrayList<>(); DataDicResponseModel dataDicByCode = commonService.getDataDicByCode(Codes.DATA_DIC_KDB_CATEGORY_LIST);
KnowledgeDataBaseCategoryDto dto = new KnowledgeDataBaseCategoryDto(); if(Objects.nonNull(dataDicByCode) && StrUtil.isNotEmpty(dataDicByCode.getDataValue())) {
dto.setId(1); return JSONObject.parseArray(dataDicByCode.getDataValue(), KnowledgeDataBaseCategoryDto.class);
dto.setName("品项"); }
result.add(dto); return null;
return result;
} }
/** /**
...@@ -126,14 +129,10 @@ public class AppCommonService { ...@@ -126,14 +129,10 @@ public class AppCommonService {
*/ */
public List<AppRoleDto> appRoleList() { public List<AppRoleDto> appRoleList() {
List<AppRoleDto> result = new ArrayList<>(); DataDicResponseModel dataDicByCode = commonService.getDataDicByCode(Codes.DATA_DIC_APP_ROLE_LIST);
AppRoleDto dto = new AppRoleDto(); if(Objects.nonNull(dataDicByCode) && StrUtil.isNotEmpty(dataDicByCode.getDataValue())) {
dto.setName("顾问"); return JSONObject.parseArray(dataDicByCode.getDataValue(), AppRoleDto.class);
result.add(dto); }
return null;
AppRoleDto dto2 = new AppRoleDto();
dto2.setName("美容师");
result.add(dto2);
return result;
} }
} }
...@@ -1184,11 +1184,9 @@ public class AppExamineService { ...@@ -1184,11 +1184,9 @@ public class AppExamineService {
model.setBusinessNo(businessNo); model.setBusinessNo(businessNo);
model.setType(0); model.setType(0);
model.setStatus(0); model.setStatus(0);
model.setUserId(userId);
model.setCreateTime(new Date()); model.setCreateTime(new Date());
commonService.saveEvaluateJob(model); commonService.saveEvaluateJob(model);
String redisKey = String.format(Codes.SINGLE_AI_EVALUATE_JOB_STATUS, businessNo);
redisTemplate.opsForValue().set(redisKey, "0", 7, TimeUnit.DAYS);
} }
// 更新缓存 // 更新缓存
...@@ -1226,6 +1224,7 @@ public class AppExamineService { ...@@ -1226,6 +1224,7 @@ public class AppExamineService {
model.setBusinessNo(businessNo); model.setBusinessNo(businessNo);
model.setType(1); model.setType(1);
model.setStatus(0); model.setStatus(0);
model.setUserId(userId);
model.setCreateTime(new Date()); model.setCreateTime(new Date());
commonService.saveEvaluateJob(model); commonService.saveEvaluateJob(model);
} }
......
...@@ -20,6 +20,11 @@ public class ExamineEvaluateJobSaveModel implements Serializable { ...@@ -20,6 +20,11 @@ public class ExamineEvaluateJobSaveModel implements Serializable {
*/ */
private String businessNo; private String businessNo;
/**
* 用户ID
*/
private String userId;
/** /**
* 类型(0单题点评 1总点评) * 类型(0单题点评 1总点评)
*/ */
......
package cn.breeze.elleai.domain.sparring.model.response;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class DataDicResponseModel implements Serializable {
private Integer id;
private String dataCode;
private String dataValue;
private String description;
private Date createTime;
}
package cn.breeze.elleai.domain.sparring.service; package cn.breeze.elleai.domain.sparring.service;
import cn.breeze.elleai.domain.sparring.model.request.*; import cn.breeze.elleai.domain.sparring.model.request.*;
import cn.breeze.elleai.domain.sparring.model.response.DataDicResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.ExamineEvaluateJobResponseModel; import cn.breeze.elleai.domain.sparring.model.response.ExamineEvaluateJobResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel; import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
...@@ -28,4 +29,6 @@ public interface CommonService { ...@@ -28,4 +29,6 @@ public interface CommonService {
ExamineEvaluateJobResponseModel getEvaluateJob(Integer type, Integer businessId); ExamineEvaluateJobResponseModel getEvaluateJob(Integer type, Integer businessId);
List<ExamineEvaluateJobResponseModel> pendingEvaluateJobList(); List<ExamineEvaluateJobResponseModel> pendingEvaluateJobList();
DataDicResponseModel getDataDicByCode(String dataCode);
} }
...@@ -3,10 +3,12 @@ package cn.breeze.elleai.domain.sparring.service; ...@@ -3,10 +3,12 @@ package cn.breeze.elleai.domain.sparring.service;
import cn.breeze.elleai.domain.sparring.model.request.ExamineEvaluateJobSaveModel; import cn.breeze.elleai.domain.sparring.model.request.ExamineEvaluateJobSaveModel;
import cn.breeze.elleai.domain.sparring.model.request.ProperNounRequestModel; import cn.breeze.elleai.domain.sparring.model.request.ProperNounRequestModel;
import cn.breeze.elleai.domain.sparring.model.request.ProperNounSaveModel; import cn.breeze.elleai.domain.sparring.model.request.ProperNounSaveModel;
import cn.breeze.elleai.domain.sparring.model.response.DataDicResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.ExamineEvaluateJobResponseModel; import cn.breeze.elleai.domain.sparring.model.response.ExamineEvaluateJobResponseModel;
import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel; import cn.breeze.elleai.domain.sparring.model.response.ProperNounResponseModel;
import cn.breeze.elleai.infra.entity.ExamineEvaluateJobEntity; import cn.breeze.elleai.infra.entity.ExamineEvaluateJobEntity;
import cn.breeze.elleai.infra.entity.ProperNounEntity; import cn.breeze.elleai.infra.entity.ProperNounEntity;
import cn.breeze.elleai.infra.mapper.DataDicMapper;
import cn.breeze.elleai.infra.mapper.ExamineEvaluateJobMapper; import cn.breeze.elleai.infra.mapper.ExamineEvaluateJobMapper;
import cn.breeze.elleai.infra.mapper.ProperNounMapper; import cn.breeze.elleai.infra.mapper.ProperNounMapper;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
...@@ -24,6 +26,7 @@ import java.util.Objects; ...@@ -24,6 +26,7 @@ import java.util.Objects;
import static cn.breeze.elleai.infra.entity.table.ProperNounTableDef.PROPER_NOUN_ENTITY; import static cn.breeze.elleai.infra.entity.table.ProperNounTableDef.PROPER_NOUN_ENTITY;
import static cn.breeze.elleai.infra.entity.table.ExamineEvaluateJobTableDef.EXAMINE_EVALUATE_JOB_ENTITY; import static cn.breeze.elleai.infra.entity.table.ExamineEvaluateJobTableDef.EXAMINE_EVALUATE_JOB_ENTITY;
import static cn.breeze.elleai.infra.entity.table.DataDicTableDef.DATA_DIC_ENTITY;
@Service @Service
...@@ -34,6 +37,8 @@ public class CommonServiceImpl implements CommonService{ ...@@ -34,6 +37,8 @@ public class CommonServiceImpl implements CommonService{
private final ExamineEvaluateJobMapper evaluateJobMapper; private final ExamineEvaluateJobMapper evaluateJobMapper;
private final DataDicMapper dataDicMapper;
@Override @Override
public Page<ProperNounResponseModel> properNounPaginQuery(ProperNounRequestModel request) { public Page<ProperNounResponseModel> properNounPaginQuery(ProperNounRequestModel request) {
Integer pageNo = ObjectUtil.defaultIfNull(request.getPageNo(), 1); Integer pageNo = ObjectUtil.defaultIfNull(request.getPageNo(), 1);
...@@ -126,4 +131,11 @@ public class CommonServiceImpl implements CommonService{ ...@@ -126,4 +131,11 @@ public class CommonServiceImpl implements CommonService{
return evaluateJobMapper.selectListByQueryAs(queryWrapper, ExamineEvaluateJobResponseModel.class); return evaluateJobMapper.selectListByQueryAs(queryWrapper, ExamineEvaluateJobResponseModel.class);
} }
@Override
public DataDicResponseModel getDataDicByCode(String dataCode) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(DATA_DIC_ENTITY.DATA_CODE.eq(dataCode));
return dataDicMapper.selectOneByQueryAs(queryWrapper, DataDicResponseModel.class);
}
} }
...@@ -102,6 +102,8 @@ public interface ExamineService { ...@@ -102,6 +102,8 @@ public interface ExamineService {
ExamineRecordDetailResponseModel singleExamineQaDetail(Integer id); ExamineRecordDetailResponseModel singleExamineQaDetail(Integer id);
long countUnfinishedExamineRecord(Integer examineId);
/***************************************** 资料库分类 *****************************************/ /***************************************** 资料库分类 *****************************************/
Page<WikiCategoryResponseModel> wikiCategoryPaginQuery(WikiCategoryRequestModel request); Page<WikiCategoryResponseModel> wikiCategoryPaginQuery(WikiCategoryRequestModel request);
......
...@@ -496,6 +496,14 @@ public class ExamineServiceImpl implements ExamineService { ...@@ -496,6 +496,14 @@ public class ExamineServiceImpl implements ExamineService {
return userExamineDetailRecordMapper.selectOneByQueryAs(queryWrapper, ExamineRecordDetailResponseModel.class); return userExamineDetailRecordMapper.selectOneByQueryAs(queryWrapper, ExamineRecordDetailResponseModel.class);
} }
@Override
public long countUnfinishedExamineRecord(Integer examineId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(USER_EXAMINE_DETAIL_RECORD_ENTITY.RECORD_ID.eq(examineId))
.and(USER_EXAMINE_DETAIL_RECORD_ENTITY.EVALUATION.isNull().or(USER_EXAMINE_DETAIL_RECORD_ENTITY.SCORE.isNull()));
return userExamineDetailRecordMapper.selectCountByQuery(queryWrapper);
}
@Override @Override
public Page<WikiCategoryResponseModel> wikiCategoryPaginQuery(WikiCategoryRequestModel request) { public Page<WikiCategoryResponseModel> wikiCategoryPaginQuery(WikiCategoryRequestModel request) {
Integer pageNo = ObjectUtil.defaultIfNull(request.getPageNo(), 1); Integer pageNo = ObjectUtil.defaultIfNull(request.getPageNo(), 1);
......
package cn.breeze.elleai.infra.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 实体类。
*
* @author breeze
* @since 2024-09-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("ai_data_dic")
public class DataDicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Id(keyType = KeyType.Auto)
private Integer id;
private String dataCode;
private String dataValue;
private String description;
private Date createTime;
}
package cn.breeze.elleai.infra.entity.table;
import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;
import java.io.Serial;
/**
* 表定义层。
*
* @author breeze
* @since 2024-09-18
*/
public class DataDicTableDef extends TableDef {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
public static final DataDicTableDef DATA_DIC_ENTITY = new DataDicTableDef();
public final QueryColumn ID = new QueryColumn(this, "id");
public final QueryColumn DATA_CODE = new QueryColumn(this, "data_code");
public final QueryColumn DATA_VALUE = new QueryColumn(this, "data_value");
public final QueryColumn DESCRIPTION = new QueryColumn(this, "description");
public final QueryColumn CREATE_TIME = new QueryColumn(this, "create_time");
/**
* 所有字段。
*/
public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");
/**
* 默认字段,不包含逻辑删除或者 large 等字段。
*/
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, DATA_CODE, DATA_VALUE, DESCRIPTION, CREATE_TIME};
public DataDicTableDef() {
super("", "ai_data_dic");
}
private DataDicTableDef(String schema, String name, String alisa) {
super(schema, name, alisa);
}
public DataDicTableDef as(String alias) {
String key = getNameWithSchema() + "." + alias;
return getCache(key, k -> new DataDicTableDef("", "ai_data_dic", alias));
}
}
package cn.breeze.elleai.infra.mapper;
import cn.breeze.elleai.infra.entity.DataDicEntity;
import cn.breeze.elleai.infra.entity.WikiCategoryEntity;
import com.mybatisflex.core.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 映射层。
*
* @author breeze
* @since 2024-09-18
*/
@Mapper
public interface DataDicMapper extends BaseMapper<DataDicEntity> {
}
...@@ -59,7 +59,11 @@ public class SingleJob extends QuartzJobBean { ...@@ -59,7 +59,11 @@ public class SingleJob extends QuartzJobBean {
log.info("定时轮询AI点评异常任务,jobList size = {}", jobList.size()); log.info("定时轮询AI点评异常任务,jobList size = {}", jobList.size());
if(CollectionUtil.isNotEmpty(jobList)) { if(CollectionUtil.isNotEmpty(jobList)) {
jobList.forEach(v -> { jobList.forEach(v -> {
executeEvaluateJob(v); try {
executeEvaluateJob(v);
} catch (Exception ex) {
ex.printStackTrace();
}
}); });
} }
...@@ -68,7 +72,6 @@ public class SingleJob extends QuartzJobBean { ...@@ -68,7 +72,6 @@ public class SingleJob extends QuartzJobBean {
@Async @Async
public void executeEvaluateJob(ExamineEvaluateJobResponseModel job) { public void executeEvaluateJob(ExamineEvaluateJobResponseModel job) {
Integer id = job.getId();
Integer type = job.getType(); Integer type = job.getType();
Integer businessId = job.getBusinessId(); Integer businessId = job.getBusinessId();
String businessNo = job.getBusinessNo(); String businessNo = job.getBusinessNo();
...@@ -95,16 +98,11 @@ public class SingleJob extends QuartzJobBean { ...@@ -95,16 +98,11 @@ public class SingleJob extends QuartzJobBean {
update.setId(job.getId()); update.setId(job.getId());
update.setStatus(1); update.setStatus(1);
commonService.saveEvaluateJob(update); commonService.saveEvaluateJob(update);
// 更新任务缓存信息
String redisKey = String.format(Codes.SINGLE_AI_EVALUATE_JOB_STATUS, businessNo);
redisTemplate.opsForValue().set(redisKey, "1", 7, TimeUnit.DAYS);
} }
} else { } else {
//TODO 判断所有题目是否已经单题点评完毕 // 判断所有题目是否已经单题点评完毕
String redisKey = String.format(Codes.SINGLE_AI_EVALUATE_JOB_STATUS, businessNo); long count = examineService.countUnfinishedExamineRecord(businessId);
String jobStatus = redisTemplate.opsForValue().get(redisKey); if(Objects.equals(count, 0L)) {
if(Objects.equals(jobStatus, "1")) {
// 获取答题结果 // 获取答题结果
ExamineDetailRecordRequestModel requestModel = new ExamineDetailRecordRequestModel(); ExamineDetailRecordRequestModel requestModel = new ExamineDetailRecordRequestModel();
requestModel.setRecordId(businessId); requestModel.setRecordId(businessId);
......
...@@ -64,4 +64,8 @@ public abstract class Codes { ...@@ -64,4 +64,8 @@ public abstract class Codes {
public static final String SINGLE_AI_EVALUATE_JOB_STATUS = "ai:single_evaluate_job:%s"; public static final String SINGLE_AI_EVALUATE_JOB_STATUS = "ai:single_evaluate_job:%s";
public static final String TOTAL_AI_EVALUATE_JOB_STATUS = "ai:total_evaluate_job:%s"; public static final String TOTAL_AI_EVALUATE_JOB_STATUS = "ai:total_evaluate_job:%s";
public static final String DATA_DIC_APP_ROLE_LIST = "app_role_list";
public static final String DATA_DIC_KDB_CATEGORY_LIST = "kdb_category_list";
} }
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