Merge branch 'dev_1.0.0' into ocr_branch

# Conflicts:
#	README.md
#	src/main/java/com/supervision/police/domain/NoteRecord.java
#	src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java
#	src/main/resources/mapper/NoteRecordMapper.xml
topo_dev
xueqingkun 8 months ago
commit 716969e1e0

@ -18,6 +18,18 @@ alter table note_record
```
# 发布时间 2024-09-12
# 变更记录
- 调整提示词后,笔录列表增加“笔录提取”功能,并显示更新标签
- 指标结果各项标题显示总分
- 首页统计项7项案件数量、行为数、月新增、较上月、模型分析<70
- 三元组提取弹窗名称,显示对应笔录名称
- 经侦案件列表根据模型分析状态进行分类,分别在“全部”、“已分析”、“未分析”三个标签下展示对应案件。
# 安装包
- /data/archives/fu-hsi/20240912/fu-hsi-service-1.0.0.tar.gz
- /data/archives/fu-hsi/20240912/dist
# 发布时间 2024-09-05
# 变更记录
- 修复案件证据分页失效问题

@ -0,0 +1,32 @@
package com.supervision.police.controller;
import com.supervision.common.domain.R;
import com.supervision.police.dto.homepage.HomepageResultDto;
import com.supervision.police.service.HomepageService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@Tag(name = "首页接口")
@RequestMapping("/homepage")
public class HomepageController {
@Autowired
private HomepageService homepageService;
/**
*
*
* @return HomepageResultDto
*/
@PostMapping("/queryStatisticsData")
public R<HomepageResultDto> queryStatisticsData() {
return R.ok(homepageService.queryStatisticsData());
}
}

@ -3,6 +3,7 @@ package com.supervision.police.controller;
import com.supervision.common.domain.R;
import com.supervision.police.dto.AnalyseCaseDTO;
import com.supervision.police.dto.CaseStatus;
import com.supervision.police.dto.caseScore.CaseScore;
import com.supervision.police.dto.caseScore.CaseScoreDetailDTO;
import com.supervision.police.service.ModelService;
import io.swagger.v3.oas.annotations.Operation;
@ -12,37 +13,31 @@ import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("model")
@RequestMapping("/model")
@RequiredArgsConstructor
public class ModelController {
private final ModelService modelService;
/**
*
* @param analyseCaseDTO
* @return
*/
@PostMapping("/analyseCase")
@Operation(summary = "分析指标")
public R<?> analyseCase(@RequestBody AnalyseCaseDTO analyseCaseDTO) {
return modelService.analyseCase(analyseCaseDTO);
}
/**
*
* @param caseId id
* @return
*/
@GetMapping("/caseScoreDetail")
@Operation(summary = "案件得分详情功能")
public R<CaseScoreDetailDTO> caseScoreDetail( @RequestParam @Parameter(name = "caseId",description = "案件id") String caseId) {
CaseScoreDetailDTO detail = modelService.caseScoreDetail(caseId);
return R.ok(detail);
}
@GetMapping("/caseScoreByCaseId")
@Operation(summary = "获取案件得分详情")
public R<CaseScore> caseScoreByCaseId(@RequestParam @Parameter(name = "caseId",description = "案件id") String caseId) {
return R.ok(modelService.caseScoreByCaseId(caseId));
}
@GetMapping("/exportCaseScoreDetail")
@Operation(summary = "导出案件得分详情功能")
public void exportCaseScoreDetail( @RequestParam @Parameter(name = "caseId",description = "案件id") String caseId,

@ -1,18 +1,15 @@
package com.supervision.police.domain;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.annotation.Nulls;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -28,17 +25,17 @@ public class NoteRecord implements Serializable {
@TableId
private String id;
/**
* id
*/
private String caseId;
/**
*
*/
private String recordName;
/**
* id
*/
@ -48,17 +45,17 @@ public class NoteRecord implements Serializable {
* id
*/
private String casePersonId;
/**
*
*/
private String name;
/**
*
*/
private String role;
/**
*
*/
@ -68,19 +65,19 @@ public class NoteRecord implements Serializable {
*
*/
private String lawAsker;
/**
*
*/
// @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone = "GMT+8")
private String confessionStartTime;
/**
*
*/
// @JsonFormat(pattern="yyyy-MM-dd HH:mm",timezone = "GMT+8")
private String confessionEndTime;
/**
*
*/
@ -92,6 +89,11 @@ public class NoteRecord implements Serializable {
*/
private String dataStatus;
/**
*
*/
private Boolean isPromptUpdate;
/**
* 1: 2 3
*/
@ -109,7 +111,7 @@ public class NoteRecord implements Serializable {
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@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")
private LocalDateTime createTime;
@ -123,7 +125,7 @@ public class NoteRecord implements Serializable {
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@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")
private LocalDateTime updateTime;

@ -59,6 +59,12 @@ public class NoteRecordDTO {
@Schema(description = "排序序号")
private Integer indexNum;
/**
*
*/
@Schema(description = "提示词更新标记")
private Boolean isPromptUpdate;
@Schema(description = "创建时间")
private LocalDateTime createTime;

@ -95,6 +95,11 @@ public class NoteRecordDetailDTO {
*/
private String percentage;
/**
*
*/
private Boolean isPromptUpdate;
/**
*
*/
@ -129,6 +134,7 @@ public class NoteRecordDetailDTO {
this.confessionEndTime = LocalDateTimeUtil.parse(noteRecordDTO.getConfessionEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
}
this.isPromptUpdate = noteRecordDTO.getIsPromptUpdate();
this.createTime = noteRecordDTO.getCreateTime();
this.updateTime = noteRecordDTO.getUpdateTime();
this.personIdCard = noteRecordDTO.getCasePersonIdCard();

@ -0,0 +1,10 @@
package com.supervision.police.dto.caseScore;
import lombok.Data;
@Data
public class CaseScore {
private int commonScore;
private int crimeScore;
private int crimeOutScore;
}

@ -0,0 +1,42 @@
package com.supervision.police.dto.homepage;
import lombok.Data;
@Data
public class HomepageResultDto {
/**
*
*/
private int caseNumber = 0;
/**
*
*/
private int caseActorNumber = 0;
/**
*
*/
private int monthlyNewCaseNumber = 0;
/**
*
*/
private int comparedToLastMonthIncreaseNumber = 0;
/**
*
*/
private int caseQualificationCycleAvg = 0;
/**
* 70
*/
private int modelScoreLessThan70Number = 0;
/**
*
*/
private double incompleteEvidenceRate = 0.0;
/**
*
*/
private double surrenderRate = 0.0;
}

@ -0,0 +1,13 @@
package com.supervision.police.service;
import com.supervision.police.dto.homepage.HomepageResultDto;
public interface HomepageService {
/**
*
*
* @return HomepageResultDto
*/
HomepageResultDto queryStatisticsData();
}

@ -3,6 +3,7 @@ package com.supervision.police.service;
import com.supervision.common.domain.R;
import com.supervision.police.dto.AnalyseCaseDTO;
import com.supervision.police.dto.CaseStatus;
import com.supervision.police.dto.caseScore.CaseScore;
import com.supervision.police.dto.caseScore.CaseScoreDetailDTO;
import jakarta.servlet.http.HttpServletResponse;
@ -17,6 +18,13 @@ public interface ModelService {
*/
CaseScoreDetailDTO caseScoreDetail(String caseId);
/**
*
* @param caseId id
* @return
*/
CaseScore caseScoreByCaseId(String caseId);
/**
*
* @param caseId id

@ -0,0 +1,44 @@
package com.supervision.police.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.supervision.police.domain.CasePerson;
import com.supervision.police.domain.ModelCase;
import com.supervision.police.dto.homepage.HomepageResultDto;
import com.supervision.police.service.CasePersonService;
import com.supervision.police.service.HomepageService;
import com.supervision.police.service.ModelCaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class HomepageServiceImpl implements HomepageService {
private static final String CRIME_MODE_SURRENDER = "1";
private static final String IDENTIFY_RESULT_INCOMPLETE_EVIDENCE = "1";
@Autowired
private ModelCaseService modelCaseService;
@Autowired
private CasePersonService casePersonService;
@Override
public HomepageResultDto queryStatisticsData() {
HomepageResultDto homepageResultDto = new HomepageResultDto();
// 只统计非逻辑删除的案件
List<ModelCase> modelCaseList = modelCaseService.list(new QueryWrapper<ModelCase>().eq("data_status", 1));
int currentMonthCaseNumber = (int) modelCaseList.stream().filter(modelCase -> modelCase.getCreateTime().getMonthValue() == 9).count();
int lastMonthCaseNumber = (int) modelCaseList.stream().filter(modelCase -> modelCase.getCreateTime().getMonthValue() == 8).count();
homepageResultDto.setCaseNumber(modelCaseList.size());
homepageResultDto.setCaseActorNumber((int) casePersonService.count(new QueryWrapper<CasePerson>().eq("case_actor_flag", 1)));
homepageResultDto.setMonthlyNewCaseNumber(currentMonthCaseNumber);
homepageResultDto.setComparedToLastMonthIncreaseNumber(Math.max(currentMonthCaseNumber - lastMonthCaseNumber, 0));
homepageResultDto.setModelScoreLessThan70Number((int) modelCaseList.stream().filter(modelCase -> modelCase.getTotalScore() != null && modelCase.getTotalScore() < 70).count());
homepageResultDto.setIncompleteEvidenceRate(Double.parseDouble(String.format("%.2f", (double) modelCaseList.stream().filter(modelCase -> IDENTIFY_RESULT_INCOMPLETE_EVIDENCE.equals(modelCase.getIdentifyResult())).count() / modelCaseList.size() * 100)));
homepageResultDto.setSurrenderRate(Double.parseDouble(String.format("%.2f", (double) modelCaseList.stream().filter(modelCase -> CRIME_MODE_SURRENDER.equals(modelCase.getCrimeMode())).count() / modelCaseList.size() * 100)));
return homepageResultDto;
}
}

@ -30,7 +30,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StopWatch;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -63,6 +62,8 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
private RecordSplitProcessService recordSplitProcessService;
@Autowired
private ModelRecordTypeService modelRecordTypeService;
@Autowired
private NoteRecordService noteRecordService;
@Override
@ -136,7 +137,7 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public R<?> saveType(ModelRecordType type) {
String id = type.getId();
int i = 0;
int i;
if (StringUtils.isEmpty(id)) {
//新增
i = modelRecordTypeMapper.insert(type);
@ -157,7 +158,6 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
if (CollUtil.isEmpty(typeList)) {
throw new RuntimeException("类型信息不能为空");
}
int i = 0;
boolean save;
if (StringUtils.isEmpty(prompt.getId())) {
// 新增的时候,校验是否已经存在相同的三元组关系,如果已经存在了相同的三元组关系,不允许添加
@ -222,7 +222,23 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
}
}
if (save) {
// 获取所有的类型
List<ModelRecordType> modelRecordTypes = list();
// 根据提示词id获取类型和提示词的关系表
List<NotePromptTypeRel> relList = notePromptTypeRelService.list(new QueryWrapper<NotePromptTypeRel>().eq("prompt_id", prompt.getId()));
//根据typeId集合过滤出对应的modelRecordType的name
List<String> typeNames = modelRecordTypes.stream().filter(e -> relList.stream().map(NotePromptTypeRel::getTypeId).toList().contains(e.getId())).map(ModelRecordType::getRecordType).toList();
//根据typeNames模糊匹配查询note_record_split
List<NoteRecordSplit> noteRecordSplits = noteRecordSplitService.list().stream()
.filter(record -> record != null && record.getRecordType() != null && typeNames.stream().anyMatch(typeName -> Arrays.asList(record.getRecordType().split(",")).contains(typeName)))
.toList();
//过滤并去重涉及到的的note_record_id
Set<String> recordIds = noteRecordSplits.stream().map(NoteRecordSplit::getNoteRecordId).collect(Collectors.toSet());
//根据note_record_id更新note_record表的isPromptUpdate字段
log.info("开始更新笔录表提示词更新状态【is_prompt_update】涉及到的笔录有{}", recordIds);
boolean updated = noteRecordService.update(new UpdateWrapper<NoteRecord>().set("is_prompt_update", true).in("id", recordIds));
if (save && updated) {
return R.ok("保存成功");
} else {
return R.fail("保存失败");
@ -280,8 +296,8 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
if (caseTaskRecord.getStatus() == 0 || caseTaskRecord.getStatus() == 3) {
// 重新提交
caseTaskRecordService.lambdaUpdate().set(CaseTaskRecord::getStatus, 1)
.set(CaseTaskRecord::getTaskCount,0)
.set(CaseTaskRecord::getFinishCount,0)
.set(CaseTaskRecord::getTaskCount, 0)
.set(CaseTaskRecord::getFinishCount, 0)
.eq(CaseTaskRecord::getId, caseTaskRecord.getId()).update();
List<ModelRecordType> allTypeList = modelRecordTypeService.lambdaQuery().list();
// 根据recordId查询所有的分割后的笔录
@ -298,12 +314,11 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
@Override
public String addNeo4j(List<String> ids, String recordId) {
if (StrUtil.isBlank(recordId)){
if (StrUtil.isBlank(recordId)) {
throw new BusinessException("记录ID不能为空");
}
if (CollUtil.isNotEmpty(ids)) {
List<TripleInfo> tripleInfos = tripleInfoService.listByIds(ids);
int i = 0;
for (TripleInfo tripleInfo : tripleInfos) {
try {
//开始节点
@ -335,7 +350,6 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
tripleInfo.setEndNodeGraphId(endNode.getId());
boolean updateResult = tripleInfoService.updateById(tripleInfo);
if (updateResult) {
i++;
}
} catch (Exception e) {
log.error(e.getMessage(), e);

@ -6,8 +6,6 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.deepoove.poi.XWPFTemplate;
import com.supervision.common.domain.R;
@ -20,12 +18,12 @@ import com.supervision.police.dto.AnalyseCaseDTO;
import com.supervision.police.dto.AtomicData;
import com.supervision.police.dto.CaseStatus;
import com.supervision.police.dto.JudgeLogic;
import com.supervision.police.dto.caseScore.CaseScore;
import com.supervision.police.dto.caseScore.CaseScoreDetailBuilder;
import com.supervision.police.dto.caseScore.CaseScoreDetailDTO;
import com.supervision.police.mapper.*;
import com.supervision.police.mybatis.RowSqlMapper;
import com.supervision.police.service.*;
import com.supervision.utils.SqlParserUtil;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -189,6 +187,20 @@ public class ModelServiceImpl implements ModelService {
return caseScoreDetailBuilder.build();
}
@Override
public CaseScore caseScoreByCaseId(String caseId) {
CaseScoreDetailBuilder caseScoreDetailBuilder = new CaseScoreDetailBuilder()
.setOllamaChatClient(null)
.setMapper(modelCaseMapper, casePersonMapper, modelAtomicIndexMapper,
modelIndexResultMapper, modelIndexMapper, modelAtomicResultMapper);
caseScoreDetailBuilder.loadCaseScoreDetail(caseId);
CaseScore caseScore = new CaseScore();
caseScore.setCommonScore(caseScoreDetailBuilder.getCommonScore());
caseScore.setCrimeScore(caseScoreDetailBuilder.getCrimeScore());
caseScore.setCrimeOutScore(caseScoreDetailBuilder.getCrimeOutScore());
return caseScore;
}
@Override
public CaseStatus getCaseDateStatus(String caseId) {

@ -7,7 +7,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.chat.client.LangChainChatService;
import com.supervision.common.utils.IPages;
import com.supervision.common.utils.ListUtils;
import com.supervision.common.utils.StringUtils;
@ -33,7 +32,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
@ -43,6 +41,7 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMapper, NoteRecordSplit> implements NoteRecordSplitService {
private static final int TASK_STATUS_IN_PROCESS = 1;
private final NoteRecordService noteRecordService;
@ -314,7 +313,11 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public String redoExtract(NoteRecordReqVO records) throws IOException {
public String redoExtract(NoteRecordReqVO records) {
CaseTaskRecord caseTaskRecord = caseTaskRecordService.getOne(new QueryWrapper<CaseTaskRecord>().eq("record_id", records.getId()));
if (caseTaskRecord != null && TASK_STATUS_IN_PROCESS == caseTaskRecord.getStatus()){
return "任务正在执行中,请稍后再试";
}
// 删除旧数据
// 删除问答对数据
noteRecordSplitService.remove(new QueryWrapper<NoteRecordSplit>().eq("note_record_id", records.getId()));
@ -346,6 +349,8 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
});
// 删除三元组数据
tripleInfoService.remove(new QueryWrapper<TripleInfo>().eq("record_id", records.getId()));
// 重置note_record表的isPromptUpdate字段为false
noteRecordService.lambdaUpdate().eq(NoteRecord::getId, records.getId()).set(NoteRecord::getIsPromptUpdate, false).update();
return uploadRecords(records);
}

@ -41,6 +41,12 @@ public class ModelCaseVO {
@Schema(description = "删除状态,默认查询未删除数据")
private Boolean isDelete = false;
@Schema(description = "案件数据状态 0:没有基础数据 1:数据未更新 2数据已更新")
private String caseDataStatus;
@Schema(description = "案件分析状态 0:未分析 1正在分析 2分析成功 3分析失败")
private String caseAnalysisStatus;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime updateStartTime;

@ -30,4 +30,9 @@ fu-hsi-config:
triple:
core: 2
type:
core: 2
core: 2
logging:
level:
root: info
com.supervision: info

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<!-- 定义日志文件保存的路径和文件名 -->
<property name="LOG_PATH" value="./logs"/>
<property name="LOG_FILE" value="${LOG_PATH}/application.log"/>
<property name="LOGBACK_LOG_LEVEL" value="INFO"/>
<!-- 控制台输出,带有颜色 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 日志文件输出 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/application.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
</appender>
<!-- 异常错误日志单独输出 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/error.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 定义日志记录器 -->
<!-- <logger name="org.springframework" level="INFO" additivity="false">-->
<!-- <appender-ref ref="FILE"/>-->
<!-- </logger>-->
<!-- <logger name="com.supervision" level="debug" additivity="false">-->
<!-- <appender-ref ref="FILE"/>-->
<!-- <appender-ref ref="CONSOLE"/>-->
<!-- </logger>-->
<!-- 根日志记录器 -->
<root level="${LOGBACK_LOG_LEVEL}">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</configuration>

@ -13,6 +13,9 @@
<if test="!modelCase.isDelete">
and data_status = '1'
</if>
<if test="modelCase.caseAnalysisStatus != null and modelCase.caseAnalysisStatus != ''">
and case_analysis_status = #{modelCase.caseAnalysisStatus}
</if>
<if test="modelCase.caseNo != null and modelCase.caseNo != ''">
and case_no like concat('%', #{modelCase.caseNo}, '%')
</if>

@ -4,6 +4,7 @@
<select id="selectNoteRecordDTOList" resultType="com.supervision.police.dto.NoteRecordDTO">
select r.id as id,
r.case_id as caseId,
r.case_person_id as casePersonId,
@ -18,6 +19,7 @@
r.confession_start_time as confessionStartTime,
r.confession_end_time as confessionEndTime,
r.img_record_status as imgRecordStatus,
r.is_prompt_update as isPromptUpdate,
p.id_card as idCard,
r.create_time as createTime,
r.update_time as updateTime

@ -0,0 +1,20 @@
package com.supervision.demo;
import com.supervision.police.service.HomepageService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@Slf4j
@SpringBootTest
public class HomepageTest {
@Autowired
private HomepageService homepageService;
@Test
public void test() {
log.info("test");
System.out.println(homepageService.queryStatisticsData());
}
}
Loading…
Cancel
Save