提示词新增、修改、分页列表改造

topo_dev
DESKTOP-DDTUS3E\yaxin 11 months ago
parent 696affff79
commit 2061ac049d

@ -0,0 +1,25 @@
package com.supervision.common.constant;
public class NotePromptConstants {
/**
* -
*/
public static final String CASE_TYPE_ENGINEERING_CONTRACT_FRAUD = "1";
/**
* -
*/
public static final String TYPE_STRUCTURAL_REASONING = "1";
/**
* -
*/
public static final String TYPE_GRAPH_REASONING = "2";
/**
* -
*/
public static final String TYPE_CLASSIFICATION = "3";
}

@ -1,7 +1,9 @@
package com.supervision.police.controller; package com.supervision.police.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.common.domain.R; import com.supervision.common.domain.R;
import com.supervision.police.domain.NotePrompt; import com.supervision.police.domain.NotePrompt;
import com.supervision.police.dto.NotePromptDTO;
import com.supervision.police.service.NotePromptService; import com.supervision.police.service.NotePromptService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -9,8 +11,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("/prompt") @RequestMapping("/prompt")
@ -24,18 +24,16 @@ public class PromptController {
/** /**
* *
* @param caseType 1 *
* @param type 34 * @param notePrompt
* @return * @return
*/ */
@GetMapping("/list") @PostMapping("/list")
@Operation(summary = "查询提示词列表") @Operation(summary = "查询提示词列表")
public R<List<NotePrompt>> listPrompt(@RequestParam(name = "caseType",defaultValue = "1") String caseType,@RequestParam("type") String type) { public R<IPage<NotePromptDTO>> listPrompt(@RequestBody NotePrompt notePrompt,
NotePrompt notePrompt = new NotePrompt(); @RequestParam(required = false, defaultValue = "1") Integer page,
notePrompt.setId("04ac794c-6457-11ef-a77c-0242ac11000d"); @RequestParam(required = false, defaultValue = "20") Integer size) {
notePrompt.setCaseType(caseType); IPage<NotePromptDTO> notePrompts = promptService.listPrompt(page, size, notePrompt);
notePrompt.setType(type);
List<NotePrompt> notePrompts = promptService.listPrompt(notePrompt);
return R.ok(notePrompts); return R.ok(notePrompts);
} }
} }

@ -0,0 +1,11 @@
package com.supervision.police.dto;
import com.supervision.police.domain.NotePrompt;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class NotePromptDTO extends NotePrompt {
private Integer matchNum;
}

@ -1,12 +1,13 @@
package com.supervision.police.mapper; package com.supervision.police.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.police.domain.NotePrompt; import com.supervision.police.domain.NotePrompt;
import com.supervision.police.dto.NotePromptDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface NotePromptMapper extends BaseMapper<NotePrompt> { public interface NotePromptMapper extends BaseMapper<NotePrompt> {
Page<NotePromptDTO> selectNotePromptWithMatchNum(Page<NotePromptDTO> page, @Param("notePrompt") NotePrompt notePrompt);
} }

@ -1,7 +1,9 @@
package com.supervision.police.service; package com.supervision.police.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.domain.NotePrompt; import com.supervision.police.domain.NotePrompt;
import com.supervision.police.dto.NotePromptDTO;
import java.util.List; import java.util.List;
@ -10,5 +12,5 @@ public interface NotePromptService extends IService<NotePrompt> {
List<NotePrompt> listPromptBySplitId(String recordSplitId); List<NotePrompt> listPromptBySplitId(String recordSplitId);
List<NotePrompt> listPrompt(NotePrompt notePrompt); IPage<NotePromptDTO> listPrompt(int page, int size, NotePrompt notePrompt);
} }

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.common.constant.NotePromptConstants;
import com.supervision.common.domain.R; import com.supervision.common.domain.R;
import com.supervision.config.BusinessException; import com.supervision.config.BusinessException;
import com.supervision.neo4j.domain.CaseNode; import com.supervision.neo4j.domain.CaseNode;
@ -21,14 +22,10 @@ import com.supervision.police.mapper.NoteRecordSplitMapper;
import com.supervision.police.service.*; import com.supervision.police.service.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatClient; import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StopWatch;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
@ -154,6 +151,8 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
@Override @Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public R<?> addOrUpdPrompt(NotePrompt prompt) { public R<?> addOrUpdPrompt(NotePrompt prompt) {
String type = prompt.getType();
if (NotePromptConstants.TYPE_GRAPH_REASONING.equals(type)) {
List<String> typeList = prompt.getTypeList(); List<String> typeList = prompt.getTypeList();
if (CollUtil.isEmpty(typeList)) { if (CollUtil.isEmpty(typeList)) {
throw new RuntimeException("类型信息不能为空"); throw new RuntimeException("类型信息不能为空");
@ -237,12 +236,14 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
//根据note_record_id更新note_record表的isPromptUpdate字段 //根据note_record_id更新note_record表的isPromptUpdate字段
log.info("开始更新笔录表提示词更新状态【is_prompt_update】涉及到的笔录有{}", recordIds); log.info("开始更新笔录表提示词更新状态【is_prompt_update】涉及到的笔录有{}", recordIds);
boolean updated = noteRecordService.update(new UpdateWrapper<NoteRecord>().set("is_prompt_update", true).in("id", recordIds)); boolean updated = noteRecordService.update(new UpdateWrapper<NoteRecord>().set("is_prompt_update", true).in("id", recordIds));
if (!save || !updated) {
if (save && updated) {
return R.ok("保存成功");
} else {
return R.fail("保存失败"); return R.fail("保存失败");
} }
} else {
notePromptService.saveOrUpdate(prompt);
}
return R.ok("保存成功");
} }
private void checkHasSameTriple(String startEntityType, String relType, String endEntityType, String promptId) { private void checkHasSameTriple(String startEntityType, String relType, String endEntityType, String promptId) {
@ -252,6 +253,7 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
if (StrUtil.isBlank(promptId)) { if (StrUtil.isBlank(promptId)) {
throw new RuntimeException("该三元组关系已经存在,请勿重复添加"); throw new RuntimeException("该三元组关系已经存在,请勿重复添加");
} else { } else {
// 校验list查出来的是不是和promptId相等,如果不想等,也报错 // 校验list查出来的是不是和promptId相等,如果不想等,也报错
if (!list.get(0).getId().equals(promptId)) { if (!list.get(0).getId().equals(promptId)) {
throw new RuntimeException("该三元组关系已经存在,请勿重复添加"); throw new RuntimeException("该三元组关系已经存在,请勿重复添加");
@ -307,7 +309,7 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
// 更新为1执行中 // 更新为1执行中
throw new BusinessException("笔录解析任务未完成,请等待"); throw new BusinessException("笔录解析任务未完成,请等待");
} }
}else { } else {
throw new BusinessException("请先进行笔录提取"); throw new BusinessException("请先进行笔录提取");
} }
// 这里进行查询 // 这里进行查询

@ -2,11 +2,14 @@ package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.police.domain.ModelRecordType; import com.supervision.police.domain.ModelRecordType;
import com.supervision.police.domain.NotePrompt; import com.supervision.police.domain.NotePrompt;
import com.supervision.police.domain.NotePromptTypeRel; import com.supervision.police.domain.NotePromptTypeRel;
import com.supervision.police.domain.NoteRecordSplit; import com.supervision.police.domain.NoteRecordSplit;
import com.supervision.police.dto.NotePromptDTO;
import com.supervision.police.mapper.NotePromptMapper; import com.supervision.police.mapper.NotePromptMapper;
import com.supervision.police.service.ModelRecordTypeService; import com.supervision.police.service.ModelRecordTypeService;
import com.supervision.police.service.NotePromptService; import com.supervision.police.service.NotePromptService;
@ -32,11 +35,14 @@ public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePro
@Autowired @Autowired
private ModelRecordTypeService modelRecordTypeService; private ModelRecordTypeService modelRecordTypeService;
@Autowired
private NotePromptMapper notePromptMapper;
private final NotePromptTypeRelService notePromptTypeRelService; private final NotePromptTypeRelService notePromptTypeRelService;
@Override @Override
public List<NotePrompt> listPromptBySplitId(String recordSplitId){ public List<NotePrompt> listPromptBySplitId(String recordSplitId) {
List<NotePrompt> notePromptList = new ArrayList<>(); List<NotePrompt> notePromptList = new ArrayList<>();
// 首先获取所有切分后的笔录 // 首先获取所有切分后的笔录
@ -62,7 +68,7 @@ public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePro
for (String typeName : split) { for (String typeName : split) {
String typeId = allTypeMap.get(typeName); String typeId = allTypeMap.get(typeName);
if (StrUtil.isBlank(typeId)) { if (StrUtil.isBlank(typeId)) {
log.info("listPromptBySplitId:笔录片段id:{} typeName:{}未在全局分类中找到数据...", recordSplit.getId(),typeName); log.info("listPromptBySplitId:笔录片段id:{} typeName:{}未在全局分类中找到数据...", recordSplit.getId(), typeName);
continue; continue;
} }
@ -70,14 +76,14 @@ public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePro
// 一个提示词可能关联多个类型,要进行拆分操作 // 一个提示词可能关联多个类型,要进行拆分操作
List<NotePromptTypeRel> promptTypeRelList = notePromptTypeRelService.lambdaQuery().eq(NotePromptTypeRel::getTypeId, typeId).select(NotePromptTypeRel::getPromptId).list(); List<NotePromptTypeRel> promptTypeRelList = notePromptTypeRelService.lambdaQuery().eq(NotePromptTypeRel::getTypeId, typeId).select(NotePromptTypeRel::getPromptId).list();
if (CollUtil.isEmpty(promptTypeRelList)) { if (CollUtil.isEmpty(promptTypeRelList)) {
log.info("listPromptBySplitId:笔录片段:{}根据typeId:{},typeName:{},未找到对应的提示词信息...", recordSplit.getId(), typeId,typeName); log.info("listPromptBySplitId:笔录片段:{}根据typeId:{},typeName:{},未找到对应的提示词信息...", recordSplit.getId(), typeId, typeName);
continue; continue;
} }
List<String> promptIdList = promptTypeRelList.stream().map(NotePromptTypeRel::getPromptId).toList(); List<String> promptIdList = promptTypeRelList.stream().map(NotePromptTypeRel::getPromptId).toList();
List<NotePrompt> list = super.lambdaQuery().in(NotePrompt::getId, promptIdList).list(); List<NotePrompt> list = super.lambdaQuery().in(NotePrompt::getId, promptIdList).list();
if (CollUtil.isEmpty(list)){ if (CollUtil.isEmpty(list)) {
log.info("listPromptBySplitId:根据 promptIdList:{},未找到对应的提示词信息...",CollUtil.join(promptIdList,",")); log.info("listPromptBySplitId:根据 promptIdList:{},未找到对应的提示词信息...", CollUtil.join(promptIdList, ","));
continue; continue;
} }
notePromptList.addAll(list); notePromptList.addAll(list);
@ -87,8 +93,7 @@ public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePro
} }
@Override @Override
public List<NotePrompt> listPrompt(NotePrompt notePrompt) { public IPage<NotePromptDTO> listPrompt(int page, int size, NotePrompt notePrompt) {
return notePromptMapper.selectNotePromptWithMatchNum(new Page<>(page, size), notePrompt);
return super.lambdaQuery(notePrompt).list();
} }
} }

@ -3,4 +3,20 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.supervision.police.mapper.NotePromptMapper"> <mapper namespace="com.supervision.police.mapper.NotePromptMapper">
<select id="selectNotePromptWithMatchNum" resultType="com.supervision.police.dto.NotePromptDTO">
SELECT
np.*,
(SELECT COUNT(*) FROM model_atomic_index mai WHERE mai.prompt_id = np.id) AS match_num
FROM
note_prompt np
WHERE 1=1
<if test="notePrompt.name != null and notePrompt.name != ''">
AND np.name LIKE CONCAT('%', #{notePrompt.name}, '%')
</if>
<if test="notePrompt.type != null and notePrompt.type != ''">
AND np.type = #{notePrompt.type}
</if>
ORDER BY np.create_time DESC
</select>
</mapper> </mapper>
Loading…
Cancel
Save