1. 修正domain中 createTime 中的@TableField(fill = FieldFill.INSERT)注解

2. 案件笔录列表添加排序功能
3. 案件证据提取出的属性添加格式校验
topo_dev
xueqingkun 6 months ago
parent 7c87aa9ae2
commit cbc2e8325e

@ -134,7 +134,7 @@ public class RecordController {
}
@PostMapping("/queryRecordList")
public R<Map<String, Object>> queryRecordList(@RequestBody NoteRecord noteRecord,
public R<Map<String, Object>> queryRecordList(@RequestBody NoteRecordReqVO noteRecord,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
return R.ok(noteRecordSplitService.queryRecordList(noteRecord, page, size));

@ -88,7 +88,7 @@ public class CaseEvidence implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;

@ -57,7 +57,7 @@ public class EvidenceCategory implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**

@ -55,7 +55,7 @@ public class FileOcrProcess implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;

@ -39,7 +39,7 @@ public class ModelIndexAtomicRelation implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;

@ -53,7 +53,7 @@ public class ModelIndexResult implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;

@ -54,7 +54,7 @@ public class ModelRecordType implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;

@ -83,7 +83,7 @@ public class NotePrompt implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;

@ -110,7 +110,7 @@ public class NoteRecord implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

@ -66,7 +66,7 @@ public class NoteRecordSplit implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;

@ -50,7 +50,7 @@ public class SystemMenu implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**

@ -40,7 +40,7 @@ public class SystemRole implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**

@ -36,7 +36,7 @@ public class SystemRoleMenuRelation implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**

@ -70,7 +70,7 @@ public class SystemUser implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**

@ -40,7 +40,7 @@ public class SystemUserRoleRelation implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**

@ -90,7 +90,7 @@ public class TripleInfo implements Serializable {
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;

@ -105,13 +105,15 @@ public class ModelCaseDTO {
@Schema(description = "创建时间")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateUserId;
@Schema(description = "更新时间")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

@ -95,6 +95,8 @@ public class NoteRecordDetailDTO {
*/
private String percentage;
private Double rowPercentage;
/**
*
*/
@ -169,6 +171,9 @@ public class NoteRecordDetailDTO {
}
}
}
if (StrUtil.isNotEmpty(this.percentage)){
this.rowPercentage = Double.parseDouble(this.percentage.replace("%", ""));
}
}
public void setRecordTypeValue(List<RecordFileDTO> recordFileDTOS){

@ -29,7 +29,7 @@ public interface NoteRecordSplitService extends IService<NoteRecordSplit> {
NoteRecordSplit saveRecordSplit(NoteRecord record, String fileName, String question, String answer);
List<NoteRecordSplit> batchSaveRecordSplit(NoteRecord record, String fileId);
Map<String, Object> queryRecordList(NoteRecord noteRecord, Integer page, Integer size);
Map<String, Object> queryRecordList(NoteRecordReqVO noteRecord, Integer page, Integer size);
String redoExtract(NoteRecordReqVO records) throws IOException;
}

@ -5,6 +5,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
@ -13,6 +14,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.EvidenceConstants;
import com.supervision.common.constant.IndexRuleConstants;
import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService;
import com.supervision.police.domain.*;
@ -31,6 +33,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
@ -325,7 +328,13 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
llmExtractDto.setExtractAttributes(notePrompt.getExtractAttributes());
List<LLMExtractDto> llmExtractDtos = llmExtractService.extractAttribute(Collections.singletonList(llmExtractDto));
if (!llmExtractDtos.isEmpty()) {
caseEvidence.setProperty(llmExtractDtos.get(0).getExtractAttributes());
List<NotePromptExtractAttributesDto> extractAttributes = llmExtractDtos.get(0).getExtractAttributes()
.stream().filter(Objects::nonNull).peek(extractAttribute -> {
if (!checkExtractAttributes(extractAttribute)) {
extractAttribute.setAttrValue(null);
}
}).toList();
caseEvidence.setProperty(extractAttributes);
}
log.info("属性提取完成。更新证据处理状态为【属性提取完成】。属性:【{}】。耗时:【{}】", caseEvidence.getProperty(), System.currentTimeMillis() - attrStart);
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_ATTR_EXTRACT_OK);
@ -345,6 +354,31 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
}
}
/**
*
* @param extract
* @return
*/
private boolean checkExtractAttributes(NotePromptExtractAttributesDto extract){
if (null == extract){
return false;
}
String attrValueType = extract.getAttrValueType();
if (StrUtil.equals(attrValueType, IndexRuleConstants.VALUE_TYPE_DATE)){ // 日期
try {
new SimpleDateFormat("yyyy-MM-dd").parse(extract.getAttrValue());
return true;
} catch (Exception e) {
log.error("属性:{},日期:{}格式错误", extract.getAttrName(),extract.getAttrValue(),e);
return false;
}
}
if (StrUtil.equals(attrValueType, IndexRuleConstants.VALUE_TYPE_NUMBER)) { // 数字
return NumberUtil.isLong(extract.getAttrValue()) || NumberUtil.isDouble(extract.getAttrValue());
}
return true;
}
@Override
public void callEvidenceAnalysis(String evidenceId) {
Assert.notEmpty(evidenceId, "证据ID不能为空");
@ -890,6 +924,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
}
List<NotePromptExtractAttributesDto> merged = mergeExtractAttributes(caseEvidence.getProperty(), categoryIdMapExtractAttributes.get(categoryId));
if (null != merged){
merged = merged.stream().filter(Objects::nonNull).peek(e -> {
if (!checkExtractAttributes(e)) {
e.setAttrValue(null);
}
}).toList();
}
caseEvidence.setProperty(merged);
}

@ -283,9 +283,9 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
}
@Override
public Map<String, Object> queryRecordList(NoteRecord noteRecord, Integer page, Integer size) {
public Map<String, Object> queryRecordList(NoteRecordReqVO noteRecord, Integer page, Integer size) {
List<NoteRecordDTO> noteRecordDTOList = noteRecordService.selectNoteRecordDTOList(noteRecord);
List<NoteRecordDTO> noteRecordDTOList = noteRecordService.selectNoteRecordDTOList(noteRecord.toNoteRecord());
// 查询关联文件数据
List<String> fileIdList = noteRecordDTOList.stream().map(NoteRecordDTO::getFileIds).filter(StringUtils::isNotEmpty)
@ -319,7 +319,23 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
recordDetailDTO.setRecordTypeValue(recordFileDTOS);
}
noteRecordDetailDTOList.sort(Comparator.comparing(NoteRecordDetailDTO::getSerialNumber));
// 排序
Comparator<NoteRecordDetailDTO> comparing = Comparator.comparing(NoteRecordDetailDTO::getSerialNumber);
/*if (StrUtil.equals(noteRecord.getOrderBy(),"percentage")){
comparing = Comparator.comparing(NoteRecordDetailDTO::getRowPercentage);
if (StrUtil.equalsIgnoreCase(noteRecord.getOrder(),"desc")){
comparing = comparing.reversed();
}
}
if (StrUtil.equals(noteRecord.getOrderBy(),"name")){
comparing = Comparator.comparing(NoteRecordDetailDTO::getName);
if (StrUtil.equalsIgnoreCase(noteRecord.getOrder(),"desc")){
comparing = comparing.reversed();
}
}*/
noteRecordDetailDTOList.sort(comparing);
List<NoteRecordDetailDTO> pager = ListUtils.Pager(size, page, noteRecordDetailDTOList);
return IPages.buildDataMap(pager, noteRecordDetailDTOList.size());
}

@ -61,6 +61,13 @@ public class NoteRecordReqVO {
@Schema(description = "证据状态 1:暂存 2核实 3提交")
private Integer imgRecordStatus;
@Schema(description = "排序字段")
private String orderBy;
@Schema(description = "排序方式 desc/asc")
private String order;
public NoteRecord toNoteRecord(){
NoteRecord noteRecord = new NoteRecord();
noteRecord.setId(id);

Loading…
Cancel
Save