topo_dev
liu 10 months ago
parent 159eaa5f0e
commit c00a2c2da0

@ -1,12 +1,16 @@
package com.supervision.police.controller;
import com.supervision.common.domain.R;
import com.supervision.police.domain.ModelRecordType;
import com.supervision.police.domain.NotePrompt;
import com.supervision.police.domain.NoteRecords;
import com.supervision.police.domain.TripleInfo;
import com.supervision.police.dto.ListDTO;
import com.supervision.police.service.ModelRecordTypeService;
import com.supervision.police.service.RecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -14,31 +18,32 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@RestController
@Slf4j
@RequestMapping("record")
@ApiOperation(value = "笔录接口")
@RequiredArgsConstructor
public class RecordController {
@Autowired
public ModelRecordTypeService modelRecordTypeService;
public final ModelRecordTypeService modelRecordTypeService;
@Autowired
public RecordService recordService;
public final RecordService recordService;
/**
*
*
* @param name
* @param page
* @param size
* @return
*/
@GetMapping("queryType")
public R<?> queryType(@RequestParam(required = false) String name,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
return modelRecordTypeService.queryType(name, page, size);
public R<List<ModelRecordType>> queryType(@RequestParam(required = false) String name,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
return R.ok(modelRecordTypeService.queryType(name, page, size));
}
// @PostMapping("saveType")
@ -48,6 +53,7 @@ public class RecordController {
/**
*
*
* @param prompt
* @return
*/
@ -58,6 +64,7 @@ public class RecordController {
/**
*
*
* @param prompt
* @return
*/
@ -68,56 +75,63 @@ public class RecordController {
/**
*
*
* @param caseId
* @param name
* @param recordId
* @return
*/
@GetMapping("/getThreeInfo")
public R<?> getThreeInfo(@RequestParam String caseId,
@RequestParam String name,
@RequestParam(required = false) String recordId) {
return modelRecordTypeService.getThreeInfo(caseId, name, recordId);
@ApiOperation("获取笔录的三元组信息")
public R<List<TripleInfo>> getThreeInfo(@RequestParam String caseId,
@RequestParam String name,
@RequestParam(required = false) String recordId) {
return R.ok(modelRecordTypeService.getThreeInfo(caseId, name, recordId));
}
@ApiOperation("将三元组信息保存到知识图谱")
@PostMapping("/addNeo4j")
public R<?> addNeo4j(@RequestBody ListDTO list) {
return modelRecordTypeService.addNeo4j(list.getIds());
public R<String> addNeo4j(@RequestBody ListDTO list) {
return R.ok(modelRecordTypeService.addNeo4j(list.getIds()));
}
/**
*
*
* @param records
* @return
*/
@PostMapping("/addOrUpdRecords")
public R<?> uploadRecords(NoteRecords records,
@RequestPart("file") List<MultipartFile> fileList) throws IOException {
return recordService.uploadRecords(records, fileList);
public R<String> uploadRecords(NoteRecords records,
@RequestPart("file") List<MultipartFile> fileList) throws IOException {
return R.ok(recordService.uploadRecords(records, fileList));
}
/**
*
*
* @param noteRecords
* @param page
* @param size
* @return
*/
@PostMapping("/queryRecords")
public R<?> queryRecords(@RequestBody NoteRecords noteRecords,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
return recordService.queryRecords(noteRecords, page, size);
public R<Map<String, Object>> queryRecords(@RequestBody NoteRecords noteRecords,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
return R.ok(recordService.queryRecords(noteRecords, page, size));
}
/**
*
*
* @param id
* @return
*/
@PostMapping("/delRecords")
public R<?> delRecords(@RequestParam String id) {
return recordService.delRecords(id);
recordService.delRecords(id);
return R.ok();
}

@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.common.domain.R;
import com.supervision.police.domain.ModelRecordType;
import com.supervision.police.domain.NotePrompt;
import com.supervision.police.domain.TripleInfo;
import java.util.List;
public interface ModelRecordTypeService extends IService<ModelRecordType> {
R<?> queryType(String name, Integer page, Integer size);
List<ModelRecordType> queryType(String name, Integer page, Integer size);
ModelRecordType queryByName(String content);
@ -19,7 +20,7 @@ public interface ModelRecordTypeService extends IService<ModelRecordType> {
R<?> delPrompt(NotePrompt prompt);
R<?> getThreeInfo(String caseId, String name, String recordId);
List<TripleInfo> getThreeInfo(String caseId, String name, String recordId);
R<?> addNeo4j(List<String> ids);
String addNeo4j(List<String> ids);
}

@ -8,13 +8,14 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public interface RecordService extends IService<NoteRecord> {
R<?> uploadRecords(NoteRecords records, List<MultipartFile> fileList) throws IOException;
String uploadRecords(NoteRecords records, List<MultipartFile> fileList) throws IOException;
R<?> queryRecords(NoteRecords noteRecords, Integer page, Integer size);
Map<String, Object> queryRecords(NoteRecords noteRecords, Integer page, Integer size);
R<?> delRecords(String id);
void delRecords(String id);
}

@ -17,6 +17,7 @@ import com.supervision.police.mapper.NoteRecordMapper;
import com.supervision.police.mapper.NotePromptMapper;
import com.supervision.police.mapper.TripleInfoMapper;
import com.supervision.police.service.ModelRecordTypeService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONArray;
import org.json.JSONObject;
@ -24,6 +25,7 @@ import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.Generation;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.beans.factory.annotation.Autowired;
@ -36,31 +38,23 @@ import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMapper, ModelRecordType> implements ModelRecordTypeService {
@Autowired
private ModelRecordTypeMapper modelRecordTypeMapper;
private final ModelRecordTypeMapper modelRecordTypeMapper;
@Autowired
private NoteRecordMapper noteRecordMapper;
private final NoteRecordMapper noteRecordMapper;
@Autowired
private NotePromptMapper notePromptMapper;
private final NotePromptMapper notePromptMapper;
private final OllamaChatClient chatClient;
@Autowired
public ModelRecordTypeServiceImpl(OllamaChatClient chatClient) {
this.chatClient = chatClient;
}
private final TripleInfoMapper tripleInfoMapper;
@Autowired
private TripleInfoMapper tripleInfoMapper;
private final Neo4jService neo4jService;
@Autowired
private Neo4jService neo4jService;
private final OllamaChatClient chatClient;
@Override
public R<?> queryType(String name, Integer page, Integer size) {
public List<ModelRecordType> queryType(String name, Integer page, Integer size) {
// IPage<ModelRecordType> iPage = new Page<>(page, size);
// iPage = modelRecordTypeMapper.selectByName(iPage, name);
// return R.ok(IPages.buildDataMap(iPage));
@ -74,7 +68,7 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
List<NotePrompt> prompts = notePromptMapper.queryPrompt(modelRecordType.getId());
modelRecordType.setPrompts(prompts);
}
return R.ok(list);
return list;
// return R.ok(IPages.buildDataMap(iPage));
}
@ -127,8 +121,7 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
}
}
@Override
public R<?> getThreeInfo(String caseId, String name, String recordId) {
private List<TripleInfo> extractThreeInfo(String caseId, String name, String recordId) {
List<NoteRecord> records = noteRecordMapper.selectRecord(caseId, name, recordId);
List<TripleInfo> tripleInfos = new ArrayList<>();
for (NoteRecord record : records) {
@ -138,17 +131,15 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
continue;
}
try {
// 分析三元组
List<Message> messages = new ArrayList<>(List.of(new SystemMessage(prompt.getPrompt() + record.getQuestion() + record.getAnswer())));
Prompt ask = new Prompt(messages);
StopWatch stopWatch = new StopWatch();
// 分析三元组
Prompt ask = new Prompt(new UserMessage(prompt.getPrompt() + record.getQuestion() + record.getAnswer()));
stopWatch.start();
log.info("开始分析:");
ChatResponse call = chatClient.call(ask);
stopWatch.stop();
log.info("耗时:{}", stopWatch.getTotalTimeSeconds());
Generation result = call.getResult();
String content = result.getOutput().getContent();
String content = call.getResult().getOutput().getContent();
log.info("分析的结果是:{}", content);
JSONObject jsonObject = new JSONObject(content);
JSONArray threeInfo = jsonObject.getJSONArray("result");
@ -169,15 +160,21 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
tripleInfos.add(tripleInfo);
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage(), e);
}
}
}
return R.ok(tripleInfos);
return tripleInfos;
}
@Override
public List<TripleInfo> getThreeInfo(String caseId, String name, String recordId) {
// TODO 这里应该改成异步的形式,通过异步的形式来进行提取三元组信息,不能每次点击就跑一遍
return extractThreeInfo(caseId, name, recordId);
}
@Override
public R<?> addNeo4j(List<String> ids) {
public String addNeo4j(List<String> ids) {
List<TripleInfo> tripleInfos = tripleInfoMapper.selectByIds(ids);
int i = 0;
for (TripleInfo tripleInfo : tripleInfos) {
@ -210,9 +207,9 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl<ModelRecordTypeMappe
i++;
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage(), e);
}
}
return R.ok("成功插入" + i + "条信息");
return ("成功插入" + i + "条信息");
}
}

@ -24,6 +24,7 @@ import com.supervision.police.service.RecordService;
import com.supervision.springaidemo.dto.QARecordNodeDTO;
import com.supervision.springaidemo.util.RecordRegexUtil;
import com.supervision.springaidemo.util.WordReadUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONObject;
import org.springframework.ai.chat.ChatResponse;
@ -45,36 +46,25 @@ import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class RecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRecord> implements RecordService {
@Autowired
private NoteRecordMapper noteRecordMapper;
private final NoteRecordMapper noteRecordMapper;
@Autowired
private NoteRecordsMapper noteRecordsMapper;
private final NoteRecordsMapper noteRecordsMapper;
@Autowired
private MinioService minioService;
private final MinioService minioService;
@Autowired
private ModelCaseMapper modelCaseMapper;
private final ModelCaseMapper modelCaseMapper;
@Autowired
private MinioFileMapper minioFileMapper;
private final MinioFileMapper minioFileMapper;
private final OllamaChatClient chatClient;
@Autowired
public RecordServiceImpl(OllamaChatClient chatClient) {
this.chatClient = chatClient;
}
@Autowired
private ModelRecordTypeMapper modelRecordTypeMapper;
@Override
// @Transactional(rollbackFor = Exception.class)
public R<?> uploadRecords(NoteRecords records, List<MultipartFile> fileList) throws IOException {
public String uploadRecords(NoteRecords records, List<MultipartFile> fileList) throws IOException {
//上传文件获取文件ids
List<String> fileIds = new ArrayList<>();
for (MultipartFile file : fileList) {
@ -180,14 +170,14 @@ public class RecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRecord>
// }
}
}
return R.okMsg("保存成功");
return "保存成功";
} else {
return R.fail("保存笔录失败");
return "保存笔录失败";
}
}
@Override
public R<?> queryRecords(NoteRecords noteRecords, Integer page, Integer size) {
public Map<String, Object> queryRecords(NoteRecords noteRecords, Integer page, Integer size) {
LambdaQueryWrapper<NoteRecords> wrapper = Wrappers.lambdaQuery();
wrapper.like(StringUtils.isNotEmpty(noteRecords.getName()), NoteRecords::getName, noteRecords.getName())
.eq(NoteRecords::getCaseId, noteRecords.getCaseId())
@ -212,11 +202,11 @@ public class RecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRecord>
}
}
}
return R.ok(IPages.buildDataMap(pager, res.size()));
return IPages.buildDataMap(pager, res.size());
}
@Override
public R<?> delRecords(String id) {
public void delRecords(String id) {
NoteRecords noteRecords = noteRecordsMapper.selectById(id);
noteRecords.setDataStatus(StringUtils.getUUID());
noteRecordsMapper.updateById(noteRecords);
@ -230,7 +220,6 @@ public class RecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRecord>
minioService.delFile(fileId);
}
}
return R.ok();
}
}

Loading…
Cancel
Save