代码提交

topo_dev
liu 9 months ago
parent 8029cc03e0
commit 732a1303b1

@ -35,6 +35,10 @@ public class CaseTaskRecord implements Serializable {
*/
private Integer status;
private Integer taskCount;
private Integer finishCount;
/**
*
*/

@ -2,6 +2,7 @@ package com.supervision.police.mapper;
import com.supervision.police.domain.CaseTaskRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* @author Administrator
@ -11,6 +12,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface CaseTaskRecordMapper extends BaseMapper<CaseTaskRecord> {
void taskCountIncrement(@Param("caseId") String caseId,@Param("recordId") String recordId);
void finishCountIncrement(@Param("caseId") String caseId,@Param("recordId") String recordId);
}

@ -10,4 +10,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface CaseTaskRecordService extends IService<CaseTaskRecord> {
void taskCountIncrement(String caseId,String recordId);
void finishCountIncrement(String caseId, String recordId);
}

@ -5,6 +5,8 @@ import com.supervision.police.domain.CaseTaskRecord;
import com.supervision.police.service.CaseTaskRecordService;
import com.supervision.police.mapper.CaseTaskRecordMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Administrator
@ -15,6 +17,17 @@ import org.springframework.stereotype.Service;
public class CaseTaskRecordServiceImpl extends ServiceImpl<CaseTaskRecordMapper, CaseTaskRecord>
implements CaseTaskRecordService{
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class,propagation = Propagation.NOT_SUPPORTED)
public synchronized void taskCountIncrement(String caseId, String recordId) {
this.baseMapper.taskCountIncrement(caseId, recordId);
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class,propagation = Propagation.NOT_SUPPORTED)
public synchronized void finishCountIncrement(String caseId, String recordId) {
this.baseMapper.finishCountIncrement(caseId, recordId);
}
}

@ -98,6 +98,8 @@ public class ExtractTripleInfoServiceImpl implements ExtractTripleInfoService {
log.info("{} 切分笔录类型:{}对应的提示词:{} 提示词模板为空,跳过", recordSplit.getId(), typeName, prompt.getId());
continue;
}
// task+1
caseTaskRecordService.taskCountIncrement(caseId, recordSplit.getNoteRecordId());
try {
log.info("提交任务到线程池中进行三元组提取");
TripleExtractThread tripleExtractThread = new TripleExtractThread(chatClient, caseId, recordSplit.getNoteRecordId(), recordSplit.getId(), prompt, recordSplit.getQuestion(), recordSplit.getAnswer());
@ -128,6 +130,8 @@ public class ExtractTripleInfoServiceImpl implements ExtractTripleInfoService {
try {
// 如果提取到结果,且不为空,就进行保存
if (future.isDone()) {
// 完成+1
caseTaskRecordService.finishCountIncrement(caseId, recordSplit.getNoteRecordId());
TripleInfo tripleInfo = future.get();
if (tripleInfo != null) {
tripleInfos.add(tripleInfo);
@ -146,6 +150,8 @@ public class ExtractTripleInfoServiceImpl implements ExtractTripleInfoService {
// 将还在执行的线程中断
futures.forEach(future -> {
future.cancel(true);
// 完成+1
caseTaskRecordService.finishCountIncrement(caseId, recordSplit.getNoteRecordId());
});
break;
}

@ -52,9 +52,12 @@ public class RecordSplitTypeServiceImpl implements RecordSplitTypeService {
log.error("分类任务线程休眠失败");
}
List<Future<String>> futures = new ArrayList<>();
for (NoteRecordSplit recordSplit : splitList) {
// 进行分类
log.info("分类任务提交线程池进行分类");
// 任务+1
caseTaskRecordService.taskCountIncrement(recordSplit.getCaseId(), recordSplit.getNoteRecordId());
RecordSplitTypeThread recordSplitTypeThread = new RecordSplitTypeThread(allTypeList, recordSplit, chatClient, noteRecordSplitService);
// 分类之后的id
Future<String> afterTypeSplitIdFuture = RecordSplitTypeThreadPool.recordSplitTypeExecutor.submit(recordSplitTypeThread);
@ -71,6 +74,8 @@ public class RecordSplitTypeServiceImpl implements RecordSplitTypeService {
try {
// 如果分类成功,就开始提取三元组
if (future.isDone()) {
// 完成+1
splitList.stream().findAny().ifPresent(noteRecordSplit -> caseTaskRecordService.finishCountIncrement(noteRecordSplit.getCaseId(), noteRecordSplit.getNoteRecordId()));
String afterTypeSplitId = future.get();
if (StrUtil.isNotBlank(afterTypeSplitId)) {
Optional<NoteRecordSplit> optById = noteRecordSplitService.getOptById(afterTypeSplitId);
@ -93,6 +98,9 @@ public class RecordSplitTypeServiceImpl implements RecordSplitTypeService {
// 将还在执行的线程中断
futures.forEach(future -> {
future.cancel(true);
// 完成+1
splitList.stream().findAny().ifPresent(noteRecordSplit -> caseTaskRecordService.finishCountIncrement(noteRecordSplit.getCaseId(), noteRecordSplit.getNoteRecordId()));
});
break;
}

@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.supervision.police.domain.ModelRecordType;
import com.supervision.police.domain.NoteRecordSplit;
import com.supervision.police.service.CaseTaskRecordService;
import com.supervision.police.service.NoteRecordSplitService;
import com.supervision.springaidemo.dto.QARecordNodeDTO;
import lombok.Data;
@ -41,7 +42,9 @@ public class RecordSplitTypeThread implements Callable<String> {
private final NoteRecordSplitService noteRecordSplitService;
public RecordSplitTypeThread(List<ModelRecordType> allTypeList, NoteRecordSplit noteRecordSplit, OllamaChatClient chatClient, NoteRecordSplitService noteRecordSplitService) {
public RecordSplitTypeThread(List<ModelRecordType> allTypeList, NoteRecordSplit noteRecordSplit, OllamaChatClient chatClient,
NoteRecordSplitService noteRecordSplitService) {
this.allTypeList = allTypeList;
this.chatClient = chatClient;
this.noteRecordSplitService = noteRecordSplitService;
@ -90,6 +93,7 @@ public class RecordSplitTypeThread implements Callable<String> {
public String call() throws Exception {
String type;
try {
StopWatch stopWatch = new StopWatch();
// 首先拼接分类模板
List<String> typeContextList = new ArrayList<>();
@ -127,6 +131,7 @@ public class RecordSplitTypeThread implements Callable<String> {
type = "无";
}
noteRecordSplitService.lambdaUpdate().set(NoteRecordSplit::getRecordType, type).eq(NoteRecordSplit::getId, noteRecordSplit.getId()).update();
return noteRecordSplit.getId();
}

@ -16,4 +16,17 @@
id,case_id,record_id,
status,submit_time
</sql>
<update id="taskCountIncrement">
UPDATE case_task_record
SET task_count = task_count + 1
WHERE case_id = #{caseId} and record_id = #{recordId}
</update>
<update id="finishCountIncrement">
UPDATE case_task_record
SET finish_count = finish_count + 1
WHERE case_id = #{caseId} and record_id = #{recordId}
</update>
</mapper>

Loading…
Cancel
Save