1. 添加多模型接入功能

master
xueqingkun 2 months ago
parent 863c0783e8
commit 8513c7c590

@ -42,7 +42,7 @@ public class ScoringModelInfoController {
@Operation(summary = "复制赋分模型") @Operation(summary = "复制赋分模型")
@PostMapping("/copy") @PostMapping("/copy")
public R<String> copyScoringModel(@RequestBody ScoringModelInfo modelInfo) { public R<String> copyScoringModel(@RequestBody ScoringModelInfo modelInfo) {
String modelId = scoringModelInfoService.copyScoringModel(modelInfo.getId()); String modelId = scoringModelInfoService.copyScoringModel(modelInfo);
return R.ok(modelId); return R.ok(modelId);
} }
@ -50,7 +50,7 @@ public class ScoringModelInfoController {
@GetMapping("/pageList") @GetMapping("/pageList")
public R<IPage<ScoringModelInfo>> pageList(@RequestParam(required = false) @Parameter(name = "modelName",description = "模型名称") String modelName, public R<IPage<ScoringModelInfo>> pageList(@RequestParam(required = false) @Parameter(name = "modelName",description = "模型名称") String modelName,
@RequestParam(defaultValue = "1") @Parameter(name = "pageNum",description = "页码") Integer pageNum, @RequestParam(defaultValue = "1") @Parameter(name = "pageNum",description = "页码") Integer pageNum,
@RequestParam(defaultValue = "10") @Parameter(name = "pageSize",description = "每页数量") Integer pageSize) { @RequestParam(defaultValue = "99999") @Parameter(name = "pageSize",description = "每页数量") Integer pageSize) {
IPage<ScoringModelInfo> page = scoringModelInfoService.pageList(modelName,pageNum, pageSize); IPage<ScoringModelInfo> page = scoringModelInfoService.pageList(modelName,pageNum, pageSize);
return R.ok(page); return R.ok(page);
} }

@ -8,6 +8,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.baomidou.mybatisplus.annotation.IdType.INPUT;
/** /**
* *
@ -20,7 +21,7 @@ public class EvidenceCategory implements Serializable {
/** /**
* id * id
*/ */
@TableId @TableId(type = INPUT)
private String id; private String id;
/** /**

@ -8,4 +8,7 @@ import java.util.List;
public interface ModelAtomicResultService extends IService<ModelAtomicResult> { public interface ModelAtomicResultService extends IService<ModelAtomicResult> {
List<ModelAtomicResult> queryByCaseIdForUpdate(String caseId); List<ModelAtomicResult> queryByCaseIdForUpdate(String caseId);
void replaceResultCaseId(String oldCaseId, String newCaseId);
} }

@ -0,0 +1,8 @@
package com.supervision.police.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.police.domain.ModelIndexResult;
public interface ModelIndexResultService extends IService<ModelIndexResult> {
void removeByCaseId(String caseId);
}

@ -20,7 +20,7 @@ public interface ScoringModelInfoService extends IService<ScoringModelInfo> {
void updateScoringModel(ScoringModelInfo modelInfo); void updateScoringModel(ScoringModelInfo modelInfo);
String copyScoringModel(String modelId); String copyScoringModel(ScoringModelInfo modelInfo);
IPage<ScoringModelInfo> pageList(String modelName, Integer pageNum, Integer pageSize); IPage<ScoringModelInfo> pageList(String modelName, Integer pageNum, Integer pageSize);

@ -12,7 +12,6 @@ import com.supervision.police.service.NotePromptService;
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 java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -27,10 +26,15 @@ public class EvidenceCategoryServiceImpl extends ServiceImpl<EvidenceCategoryMap
@Autowired @Autowired
private NotePromptService notePromptService; private NotePromptService notePromptService;
/**
*
* @param caseType
* @return
*/
@Override @Override
public List<EvidenceCategoryDTO> listCategoryTree(String caseType) { public List<EvidenceCategoryDTO> listCategoryTree(String caseType) {
List<EvidenceCategoryDTO> list = super.getBaseMapper().listCategoryDTO(caseType); List<EvidenceCategoryDTO> list = super.getBaseMapper().listCategoryDTO(null);
List<NotePrompt> notePrompts = notePromptService.list(); List<NotePrompt> notePrompts = notePromptService.list();
for (EvidenceCategoryDTO categoryDTO : list) { for (EvidenceCategoryDTO categoryDTO : list) {
List<EvidenceCategoryDTO> child = list.stream() List<EvidenceCategoryDTO> child = list.stream()

@ -17,4 +17,10 @@ public class ModelAtomicResultServiceImpl extends ServiceImpl<ModelAtomicResultM
public List<ModelAtomicResult> queryByCaseIdForUpdate(String caseId) { public List<ModelAtomicResult> queryByCaseIdForUpdate(String caseId) {
return super.getBaseMapper().queryByCaseIdForUpdate(caseId); return super.getBaseMapper().queryByCaseIdForUpdate(caseId);
} }
@Override
public void replaceResultCaseId(String oldCaseId, String newCaseId) {
super.lambdaUpdate().eq(ModelAtomicResult::getCaseId, oldCaseId)
.set(ModelAtomicResult::getCaseId, newCaseId).update();
}
} }

@ -60,10 +60,10 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
private final CaseStatusManageService caseStatusManageService; private final CaseStatusManageService caseStatusManageService;
private final LangChainChatService langChainChatService;
private final ModelAtomicResultService modelAtomicResultService; private final ModelAtomicResultService modelAtomicResultService;
@Autowired
private ScoringModelInfoService modelInfoService;
@Autowired @Autowired
private NoteRecordSplitService noteRecordSplitService; private NoteRecordSplitService noteRecordSplitService;
@ -79,6 +79,9 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
@Autowired @Autowired
private DifyApiUtil difyApiUtil; private DifyApiUtil difyApiUtil;
@Autowired
private ModelIndexResultService modelIndexResultService;
/** /**
* *
* *
@ -103,13 +106,14 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
Map<String, Map<String, List<CasePerson>>> persionMap = casePersonList.stream().collect(Collectors.groupingBy(CasePerson::getCaseId, Map<String, Map<String, List<CasePerson>>> persionMap = casePersonList.stream().collect(Collectors.groupingBy(CasePerson::getCaseId,
Collectors.groupingBy(person -> NumberUtil.equals(person.getCaseActorFlag(), 1) ? "1" : "2"))); Collectors.groupingBy(person -> NumberUtil.equals(person.getCaseActorFlag(), 1) ? "1" : "2")));
List<ComDictionary> dicts = comDictionaryService.list(); List<ComDictionary> dicts = comDictionaryService.list();
List<ScoringModelInfo> scoringModelInfos = modelInfoService.list();
return modelCaseIPage.convert(modelCaseInfo -> { return modelCaseIPage.convert(modelCaseInfo -> {
ModelCaseDTO modelCaseDTO = BeanUtil.toBean(modelCaseInfo, ModelCaseDTO.class, CopyOptions.create().setIgnoreProperties("lawActor")); ModelCaseDTO modelCaseDTO = BeanUtil.toBean(modelCaseInfo, ModelCaseDTO.class, CopyOptions.create().setIgnoreProperties("lawActor"));
String[] caseTypes = modelCaseDTO.getCaseType().split(","); String[] caseTypes = modelCaseDTO.getCaseType().split(",");
List<String> caseType = new ArrayList<>(); List<String> caseType = new ArrayList<>();
for (String type : caseTypes) { for (String type : caseTypes) {
caseType.add(comDictionaryService.getName(dicts, "case_type", type)); caseType.add(modelInfoService.getScoringModelNameById(type, scoringModelInfos));
} }
if (StrUtil.isEmpty(modelCaseDTO.getCaseStatus())) { if (StrUtil.isEmpty(modelCaseDTO.getCaseStatus())) {
modelCaseDTO.setCaseStatus("1"); modelCaseDTO.setCaseStatus("1");
@ -163,6 +167,15 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
if (!StrUtil.equals(exist.getCaseNo(), modelCase.getCaseNo())) { if (!StrUtil.equals(exist.getCaseNo(), modelCase.getCaseNo())) {
throw new BusinessException("案件编号不允许修改"); throw new BusinessException("案件编号不允许修改");
} }
if (!StrUtil.equals(exist.getCaseType(), modelCase.getCaseType())) {
// 案件类型发生改变,清除指标结果数据
modelIndexResultService.removeByCaseId(modelCase.getId());
modelAtomicResultService.replaceResultCaseId(exist.getCaseType(), modelCase.getCaseType());
modelCase.setTotalScore(0);
modelCase.setCaseAnalysisStatus(0);
modelCase.setCaseAnalysisSuccessTime(null);
modelCase.setIdentifyResultName(null);
}
i = modelCaseMapper.updateById(modelCase); i = modelCaseMapper.updateById(modelCase);
} else { } else {

@ -0,0 +1,19 @@
package com.supervision.police.service.impl;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.police.domain.ModelIndexResult;
import com.supervision.police.mapper.ModelIndexResultMapper;
import com.supervision.police.service.ModelIndexResultService;
import org.springframework.stereotype.Service;
@Service
public class ModelIndexResultServiceImpl extends ServiceImpl<ModelIndexResultMapper, ModelIndexResult>
implements ModelIndexResultService {
@Override
public void removeByCaseId(String caseId) {
Assert.notEmpty(caseId, "案件id不能为空");
super.lambdaUpdate().eq(ModelIndexResult::getCaseId, caseId).remove();
}
}

@ -46,7 +46,8 @@ import static com.supervision.police.service.impl.ModelRecordTypeServiceImpl.bui
@RequiredArgsConstructor @RequiredArgsConstructor
public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePrompt> implements NotePromptService { public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePrompt> implements NotePromptService {
private final NoteRecordSplitService noteRecordSplitService; @Autowired
private NoteRecordSplitService noteRecordSplitService;
@Autowired @Autowired
private ModelRecordTypeService modelRecordTypeService; private ModelRecordTypeService modelRecordTypeService;

@ -7,12 +7,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.ScoringModelInfo; import com.supervision.police.domain.ScoringModelInfo;
import com.supervision.police.service.ModelCaseService; import com.supervision.police.service.*;
import com.supervision.police.service.ModelIndexService;
import com.supervision.police.service.ScoringModelInfoService;
import com.supervision.police.mapper.ScoringModelInfoMapper; import com.supervision.police.mapper.ScoringModelInfoMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
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;
@ -29,9 +28,14 @@ import java.util.List;
public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMapper, ScoringModelInfo> public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMapper, ScoringModelInfo>
implements ScoringModelInfoService{ implements ScoringModelInfoService{
private final ModelCaseService modelCaseService; @Autowired
private ModelCaseService modelCaseService;
private final ModelIndexService modelIndexService; @Autowired
private ModelIndexService modelIndexService;
@Autowired
private final EvidenceCategoryService evidenceCategoryService;
@Override @Override
public String saveScoringModel(ScoringModelInfo modelInfo) { public String saveScoringModel(ScoringModelInfo modelInfo) {
Assert.notEmpty(modelInfo.getModelName(), "模型名不能为空"); Assert.notEmpty(modelInfo.getModelName(), "模型名不能为空");
@ -70,12 +74,15 @@ public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMap
@Override @Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class) @Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public String copyScoringModel(String modelId) { public String copyScoringModel(ScoringModelInfo modelInfo) {
Assert.notEmpty(modelId, "模型id不能为空"); Assert.notEmpty(modelInfo.getId(), "模型id不能为空");
ScoringModelInfo modelInfo = super.getById(modelId); ScoringModelInfo sourceModelInfo = super.getById(modelInfo.getId());
Assert.notNull(modelInfo, "模型不存在!"); Assert.notNull(sourceModelInfo, "模型不存在!");
ScoringModelInfo scoringModelInfo = copyScoringModel(modelInfo); boolean exists = super.lambdaQuery().eq(ScoringModelInfo::getModelName, modelInfo.getModelName()).exists();
Assert.isFalse(exists, "模型名已存在!");
ScoringModelInfo scoringModelInfo = copyScoringModelValue(modelInfo);
// 复制模型指标信息
modelIndexService.copyIndex(modelInfo.getId(), scoringModelInfo.getId()); modelIndexService.copyIndex(modelInfo.getId(), scoringModelInfo.getId());
return scoringModelInfo.getId(); return scoringModelInfo.getId();
} }
@ -86,11 +93,10 @@ public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMap
* @param modelInfo * @param modelInfo
* @return * @return
*/ */
private ScoringModelInfo copyScoringModel(ScoringModelInfo modelInfo) { private ScoringModelInfo copyScoringModelValue(ScoringModelInfo modelInfo) {
Assert.notNull(modelInfo, "模型信息不能为空!"); Assert.notNull(modelInfo, "模型信息不能为空!");
String newModelName = generateModelName(modelInfo.getModelName());
ScoringModelInfo scoringModelInfo = new ScoringModelInfo(); ScoringModelInfo scoringModelInfo = new ScoringModelInfo();
scoringModelInfo.setModelName(newModelName); scoringModelInfo.setModelName(modelInfo.getModelName());
scoringModelInfo.setModelDesc(modelInfo.getModelDesc()); scoringModelInfo.setModelDesc(modelInfo.getModelDesc());
scoringModelInfo.setScoringRules(modelInfo.getScoringRules()); scoringModelInfo.setScoringRules(modelInfo.getScoringRules());
super.save(scoringModelInfo); super.save(scoringModelInfo);

Loading…
Cancel
Save