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") @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 = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) { @RequestParam(required = false, defaultValue = "20") Integer size) {
return R.ok(noteRecordSplitService.queryRecordList(noteRecord, page, 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") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;

@ -57,7 +57,7 @@ public class EvidenceCategory implements Serializable {
/** /**
* *
*/ */
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime; 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") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; 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") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; 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") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; 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") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; 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") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime; 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") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime; 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") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;

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

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

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

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

@ -40,7 +40,7 @@ public class SystemUserRoleRelation implements Serializable {
/** /**
* *
*/ */
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime; 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") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;

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

@ -95,6 +95,8 @@ public class NoteRecordDetailDTO {
*/ */
private String percentage; 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){ 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); NoteRecordSplit saveRecordSplit(NoteRecord record, String fileName, String question, String answer);
List<NoteRecordSplit> batchSaveRecordSplit(NoteRecord record, String fileId); 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; 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.DateUtil;
import cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator; 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.plugins.pagination.PageDTO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.EvidenceConstants; import com.supervision.common.constant.EvidenceConstants;
import com.supervision.common.constant.IndexRuleConstants;
import com.supervision.minio.domain.MinioFile; import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService; import com.supervision.minio.service.MinioService;
import com.supervision.police.domain.*; 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.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
@ -325,7 +328,13 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
llmExtractDto.setExtractAttributes(notePrompt.getExtractAttributes()); llmExtractDto.setExtractAttributes(notePrompt.getExtractAttributes());
List<LLMExtractDto> llmExtractDtos = llmExtractService.extractAttribute(Collections.singletonList(llmExtractDto)); List<LLMExtractDto> llmExtractDtos = llmExtractService.extractAttribute(Collections.singletonList(llmExtractDto));
if (!llmExtractDtos.isEmpty()) { 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); log.info("属性提取完成。更新证据处理状态为【属性提取完成】。属性:【{}】。耗时:【{}】", caseEvidence.getProperty(), System.currentTimeMillis() - attrStart);
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_ATTR_EXTRACT_OK); 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 @Override
public void callEvidenceAnalysis(String evidenceId) { public void callEvidenceAnalysis(String evidenceId) {
Assert.notEmpty(evidenceId, "证据ID不能为空"); Assert.notEmpty(evidenceId, "证据ID不能为空");
@ -890,6 +924,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
} }
List<NotePromptExtractAttributesDto> merged = mergeExtractAttributes(caseEvidence.getProperty(), categoryIdMapExtractAttributes.get(categoryId)); 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); caseEvidence.setProperty(merged);
} }

@ -283,9 +283,9 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
} }
@Override @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) List<String> fileIdList = noteRecordDTOList.stream().map(NoteRecordDTO::getFileIds).filter(StringUtils::isNotEmpty)
@ -319,7 +319,23 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
recordDetailDTO.setRecordTypeValue(recordFileDTOS); 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); List<NoteRecordDetailDTO> pager = ListUtils.Pager(size, page, noteRecordDetailDTOList);
return IPages.buildDataMap(pager, noteRecordDetailDTOList.size()); return IPages.buildDataMap(pager, noteRecordDetailDTOList.size());
} }

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

Loading…
Cancel
Save