1. 优化代码

master
xueqingkun 4 months ago
parent 170654b31c
commit 9979750f24

@ -5,5 +5,5 @@ public class XxlJobConstants {
public static final String URL_JOB_INFO_PAGE_LIST = "/jobinfo/pageList";
public static final String URL_JOB_INFO_TRIGGER = "/jobinfo/trigger";
public static final String TASK_NAME_PROMPT_EXTRACT_TASK= "promptExtractTask";
public static final String TASK_NAME_EVIDENCE_ANALYSIS = "extractEvidenceByTask";
public static final String TASK_NAME_EVIDENCE_ANALYSIS = "evidenceAnalysis";
}

@ -1,6 +1,7 @@
package com.supervision.police.dto;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.supervision.police.domain.ModelCase;
import lombok.Data;
@ -21,6 +22,7 @@ public class CaseProcessDTO {
/**
*
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime analysisSuccessTime;
/**

@ -1,5 +1,6 @@
package com.supervision.police.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
@ -26,6 +27,15 @@ public class TaskInfoDTO {
*/
private String taskName;
private String taskType;
private String promptId;
private String promptName;
/**
*
*/
@ -34,11 +44,13 @@ public class TaskInfoDTO {
/**
*
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime cancelTime;
/**
*
*/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;
/**

@ -48,7 +48,6 @@ import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.supervision.common.constant.XxlJobConstants.TASK_NAME_EVIDENCE_ANALYSIS;
@Slf4j

@ -377,7 +377,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
List<IndexDetail> records = iPage.getRecords();
// 添加 附属内容
attachRecord(query.getCaseId(), records);
attachRecord(query, records);
return iPage;
}
@ -466,13 +466,14 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
/**
*
*
* @param caseId id
* @param query
* @param indexDetails
*/
private void attachRecord(String caseId, List<IndexDetail> indexDetails) {
private void attachRecord(IndexResultQuery query, List<IndexDetail> indexDetails) {
if (CollUtil.isEmpty(indexDetails)) {
return;
}
String caseId = query.getCaseId();
// indexDetails中涉及到的原子指标结果数据
List<String> indexIdList = indexDetails.stream().map(IndexDetail::getIndexId).toList();
@ -507,6 +508,14 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
record.setNewFlagValue();
List<String> atomicIndexIds = IndexRuleUtil.getAtomicIndexIds(record.getIndexRule());
List<AtomicIndexDTO> atomics = modelCaseMapper.getAtomicDetail(caseId, record.getIndexId(), atomicIndexIds);
if (Objects.nonNull(query.getIndexHasRecord())){
atomics = atomics.stream()
.filter(atomic -> query.getIndexHasRecord()
? StrUtil.isNotEmpty(atomic.getRecordSplitId())
: StrUtil.isEmpty(atomic.getRecordSplitId()))
.toList();
}
for (AtomicIndexDTO atomic : atomics) {
// 获取原子指标的判断规则
// 配置的指标的逻辑

@ -26,10 +26,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static com.supervision.common.constant.NotePromptConstants.TYPE_GRAPH_REASONING;
import static com.supervision.common.constant.NotePromptConstants.TYPE_STRUCTURAL_REASONING;
@ -210,7 +208,35 @@ public class TaskRecordServiceImpl extends ServiceImpl<TaskRecordMapper, TaskRec
@Override
public IPage<TaskInfoDTO> queryTaskList(TaskInfoReqVO taskInfo, Integer page, Integer size) {
taskInfo.checkSorted();
return super.getBaseMapper().queryTaskList(taskInfo, Page.of(page, size));
IPage<TaskInfoDTO> iPage = super.getBaseMapper().queryTaskList(taskInfo, Page.of(page, size));
if (iPage.getRecords().isEmpty()){
return iPage;
}
List<String> caseIds = iPage.getRecords().stream()
.filter(taskInfoDTO -> StrUtil.isEmpty(taskInfoDTO.getCaseName())
&& StrUtil.isNotEmpty(taskInfoDTO.getCaseId()))
.flatMap(taskInfoDTO -> Arrays.stream(taskInfoDTO.getCaseId().split(","))).distinct().toList();
Map<String, String> caseNameMap = CollUtil.isEmpty(caseIds) ? new HashMap<>() : modelCaseService.listByIds(caseIds).stream().collect(Collectors.toMap(ModelCase::getId, ModelCase::getCaseName));
return iPage.convert(taskInfoDTO -> {
if (StrUtil.isEmpty(taskInfoDTO.getCaseName()) && StrUtil.isNotEmpty(taskInfoDTO.getCaseId())){
String caseNames = Arrays.stream(taskInfoDTO.getCaseId().split(","))
.map(caseId -> caseNameMap.getOrDefault(caseId, "")).filter(StrUtil::isNotEmpty).distinct().collect(Collectors.joining(","));
taskInfoDTO.setCaseName(caseNames);
}
if (StrUtil.isEmpty(taskInfoDTO.getCaseName()) && StrUtil.equals(taskInfoDTO.getTaskType(), "0")){
// 全部案件
taskInfoDTO.setCaseName("全部");
}
if (StrUtil.isNotEmpty(taskInfoDTO.getPromptName())){
taskInfoDTO.setPromptName("全部");
}
return taskInfoDTO;
});
}
@Override

@ -129,7 +129,6 @@
and exists(select 1
from model_atomic_result mar
join model_index_atomic_relation iar on mar.index_id = iar.model_index_id and mar.atomic_id = iar.atomic_index_id
left join note_record_split nrs on mar.record_split_id = nrs.id
left join model_atomic_index mai on mar.atomic_id = mai.id
where mar.case_id = #{query.caseId}
<if test="query.atomicName != null and query.atomicName != ''">
@ -140,13 +139,26 @@
</if>
<choose>
<when test="query.indexHasRecord != null and query.indexHasRecord == false">
and nrs.id is null
and mar.record_split_id is null
</when>
<when test="query.indexHasRecord != null and query.indexHasRecord == true">
and nrs.id is not null
and mar.record_split_id is not null
</when>
</choose>
and mi.id = mar.index_id)
and mi.id = mar.index_id
<if test="query.indexHasRecord != null">
group by mar.index_id
having
<choose>
<when test="query.indexHasRecord == false">
sum(case when mar.record_split_id is not null then 1 else 0 end) = 0
</when>
<when test="query.indexHasRecord == true">
sum(case when mar.record_split_id is not null then 1 else 0 end) > 0
</when>
</choose>
</if>
)
order by CASE mir.index_result WHEN 'true' THEN 1 WHEN 'false' THEN 2 else 0 END, mi.id desc
</select>

@ -29,8 +29,11 @@
<select id="queryTaskList" resultType="com.supervision.police.dto.TaskInfoDTO">
select t.id as taskId,
t.case_id as caseId,
t.type as taskType,
c.case_name as caseName,
t.name as taskName,
t.prompt_id as promptId,
p.name as promptName,
t.status as taskStatus,
t.create_time as createTime,
t.cancel_time as cancelTime,
@ -39,6 +42,7 @@
from task_record t
left join model_case c on t.case_id = c.id
left join system_user su on t.create_user_id = su.id
left join note_prompt p on t.prompt_id = p.id
<where>
<if test="taskInfo.caseName != null and taskInfo.caseName != ''">
and c.case_name like concat('%',#{taskInfo.caseName},'%')

Loading…
Cancel
Save