1. 添加多模型接入功能

master
xueqingkun 2 months ago
parent 863c0783e8
commit 8513c7c590

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

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

@ -8,4 +8,7 @@ import java.util.List;
public interface ModelAtomicResultService extends IService<ModelAtomicResult> {
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);
String copyScoringModel(String modelId);
String copyScoringModel(ScoringModelInfo modelInfo);
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.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
@ -27,10 +26,15 @@ public class EvidenceCategoryServiceImpl extends ServiceImpl<EvidenceCategoryMap
@Autowired
private NotePromptService notePromptService;
/**
*
* @param caseType
* @return
*/
@Override
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();
for (EvidenceCategoryDTO categoryDTO : list) {
List<EvidenceCategoryDTO> child = list.stream()

@ -17,4 +17,10 @@ public class ModelAtomicResultServiceImpl extends ServiceImpl<ModelAtomicResultM
public List<ModelAtomicResult> queryByCaseIdForUpdate(String 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 LangChainChatService langChainChatService;
private final ModelAtomicResultService modelAtomicResultService;
@Autowired
private ScoringModelInfoService modelInfoService;
@Autowired
private NoteRecordSplitService noteRecordSplitService;
@ -79,6 +79,9 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
@Autowired
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,
Collectors.groupingBy(person -> NumberUtil.equals(person.getCaseActorFlag(), 1) ? "1" : "2")));
List<ComDictionary> dicts = comDictionaryService.list();
List<ScoringModelInfo> scoringModelInfos = modelInfoService.list();
return modelCaseIPage.convert(modelCaseInfo -> {
ModelCaseDTO modelCaseDTO = BeanUtil.toBean(modelCaseInfo, ModelCaseDTO.class, CopyOptions.create().setIgnoreProperties("lawActor"));
String[] caseTypes = modelCaseDTO.getCaseType().split(",");
List<String> caseType = new ArrayList<>();
for (String type : caseTypes) {
caseType.add(comDictionaryService.getName(dicts, "case_type", type));
caseType.add(modelInfoService.getScoringModelNameById(type, scoringModelInfos));
}
if (StrUtil.isEmpty(modelCaseDTO.getCaseStatus())) {
modelCaseDTO.setCaseStatus("1");
@ -163,6 +167,15 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
if (!StrUtil.equals(exist.getCaseNo(), modelCase.getCaseNo())) {
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);
} 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
public class NotePromptServiceImpl extends ServiceImpl<NotePromptMapper, NotePrompt> implements NotePromptService {
private final NoteRecordSplitService noteRecordSplitService;
@Autowired
private NoteRecordSplitService noteRecordSplitService;
@Autowired
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.service.impl.ServiceImpl;
import com.supervision.police.domain.ScoringModelInfo;
import com.supervision.police.service.ModelCaseService;
import com.supervision.police.service.ModelIndexService;
import com.supervision.police.service.ScoringModelInfoService;
import com.supervision.police.service.*;
import com.supervision.police.mapper.ScoringModelInfoMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -29,9 +28,14 @@ import java.util.List;
public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMapper, ScoringModelInfo>
implements ScoringModelInfoService{
private final ModelCaseService modelCaseService;
@Autowired
private ModelCaseService modelCaseService;
private final ModelIndexService modelIndexService;
@Autowired
private ModelIndexService modelIndexService;
@Autowired
private final EvidenceCategoryService evidenceCategoryService;
@Override
public String saveScoringModel(ScoringModelInfo modelInfo) {
Assert.notEmpty(modelInfo.getModelName(), "模型名不能为空");
@ -70,12 +74,15 @@ public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMap
@Override
@Transactional(transactionManager = "dataSourceTransactionManager",rollbackFor = Exception.class)
public String copyScoringModel(String modelId) {
public String copyScoringModel(ScoringModelInfo modelInfo) {
Assert.notEmpty(modelId, "模型id不能为空");
ScoringModelInfo modelInfo = super.getById(modelId);
Assert.notNull(modelInfo, "模型不存在!");
ScoringModelInfo scoringModelInfo = copyScoringModel(modelInfo);
Assert.notEmpty(modelInfo.getId(), "模型id不能为空");
ScoringModelInfo sourceModelInfo = super.getById(modelInfo.getId());
Assert.notNull(sourceModelInfo, "模型不存在!");
boolean exists = super.lambdaQuery().eq(ScoringModelInfo::getModelName, modelInfo.getModelName()).exists();
Assert.isFalse(exists, "模型名已存在!");
ScoringModelInfo scoringModelInfo = copyScoringModelValue(modelInfo);
// 复制模型指标信息
modelIndexService.copyIndex(modelInfo.getId(), scoringModelInfo.getId());
return scoringModelInfo.getId();
}
@ -86,11 +93,10 @@ public class ScoringModelInfoServiceImpl extends ServiceImpl<ScoringModelInfoMap
* @param modelInfo
* @return
*/
private ScoringModelInfo copyScoringModel(ScoringModelInfo modelInfo) {
private ScoringModelInfo copyScoringModelValue(ScoringModelInfo modelInfo) {
Assert.notNull(modelInfo, "模型信息不能为空!");
String newModelName = generateModelName(modelInfo.getModelName());
ScoringModelInfo scoringModelInfo = new ScoringModelInfo();
scoringModelInfo.setModelName(newModelName);
scoringModelInfo.setModelName(modelInfo.getModelName());
scoringModelInfo.setModelDesc(modelInfo.getModelDesc());
scoringModelInfo.setScoringRules(modelInfo.getScoringRules());
super.save(scoringModelInfo);

Loading…
Cancel
Save