1. 添加 queryRecordList 接口

topo_dev
xueqingkun 9 months ago
parent 5c80bcd5d9
commit fac4f01abe

@ -125,6 +125,13 @@ public class RecordController {
return R.ok(noteRecordSplitService.queryRecords(noteRecord, page, size)); return R.ok(noteRecordSplitService.queryRecords(noteRecord, page, size));
} }
@PostMapping("/queryRecordList")
public R<Map<String, Object>> queryRecordList(@RequestBody NoteRecord noteRecord,
@RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "20") Integer size) {
return R.ok(noteRecordSplitService.queryRecordList(noteRecord, page, size));
}
/** /**
* *
* *

@ -1,9 +1,11 @@
package com.supervision.police.dto; package com.supervision.police.dto;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.supervision.minio.domain.MinioFile; import com.supervision.minio.domain.MinioFile;
import com.supervision.police.domain.CaseTaskRecord;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -15,6 +17,11 @@ public class NoteRecordDetailDTO {
private String id; private String id;
/**
*
*/
private String serialNumber;
/** /**
* id * id
*/ */
@ -129,4 +136,23 @@ public class NoteRecordDetailDTO {
this.fileList = new ArrayList<>(1); this.fileList = new ArrayList<>(1);
} }
} }
public void setPercentageValue(CaseTaskRecord caseTaskRecord) {
if (ObjectUtil.isNotEmpty(caseTaskRecord)) {
if (caseTaskRecord.getStatus() == 2) {
this.setPercentage("100%");
} else if (caseTaskRecord.getStatus() == 0) {
this.setPercentage("0%");
} else {
if (caseTaskRecord.getTaskCount() == 0) {
this.setPercentage("0%");
} else {
// 获取执行的数量
double v = caseTaskRecord.getFinishCount() * 100.0 / caseTaskRecord.getTaskCount();
// 不能超过100%
this.setPercentage(String.format("%.2f%%", Math.min(v, 100)));
}
}
}
}
} }

@ -16,4 +16,5 @@ public interface NoteRecordSplitService extends IService<NoteRecordSplit> {
void delRecords(String id); void delRecords(String id);
Map<String, Object> queryRecordList(NoteRecord noteRecord, Integer page, Integer size);
} }

@ -1,15 +1,11 @@
package com.supervision.police.service.impl; package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.chat.UploadParamEnum;
import com.supervision.chat.client.CustomMultipartFile;
import com.supervision.chat.client.LangChainChatService; import com.supervision.chat.client.LangChainChatService;
import com.supervision.chat.client.dto.DeleteFileDTO;
import com.supervision.chat.client.dto.LangChainChatRes;
import com.supervision.common.utils.IPages; import com.supervision.common.utils.IPages;
import com.supervision.common.utils.ListUtils; import com.supervision.common.utils.ListUtils;
import com.supervision.common.utils.StringUtils; import com.supervision.common.utils.StringUtils;
@ -333,4 +329,71 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
modelAtomicResultService.lambdaUpdate().eq(ModelAtomicResult::getRecordId, id).remove(); modelAtomicResultService.lambdaUpdate().eq(ModelAtomicResult::getRecordId, id).remove();
} }
@Override
public Map<String, Object> queryRecordList(NoteRecord noteRecord, Integer page, Integer size) {
List<NoteRecordDTO> noteRecordDTOList = noteRecordService.selectNoteRecordDTOList(noteRecord);
// 查询关联文件数据
List<String> fileIdList = noteRecordDTOList.stream().map(NoteRecordDTO::getFileIds).filter(StringUtils::isNotEmpty)
.flatMap(s -> Arrays.stream(s.split(","))).distinct().toList();
Map<String, MinioFile> fileMap = minioService.listMinioFile(fileIdList).stream().collect(Collectors.toMap(MinioFile::getId, Function.identity()));
// 查询关联角色字典
Map<String, String> caseRoleDicMap = comDictionaryService.getDictionaryMap("case_role");
List<NoteRecordDetailDTO> noteRecordDetailDTOList = noteRecordDTOList.stream().filter(item -> StringUtils.isNotBlank(item.getName())).map(item -> {
NoteRecordDetailDTO noteRecordDetailDTO = new NoteRecordDetailDTO(item, fileMap);
noteRecordDetailDTO.setRoleName(caseRoleDicMap.get(item.getRole()));
return noteRecordDetailDTO;
})
.collect(Collectors.toList());
// 获取所有的task任务
List<CaseTaskRecord> taskList = caseTaskRecordService.lambdaQuery().eq(CaseTaskRecord::getCaseId, noteRecord.getCaseId()).list();
Map<String, CaseTaskRecord> taskRecordMap = taskList.stream().collect(Collectors.toMap(CaseTaskRecord::getRecordId, Function.identity(), (k1, k2) -> k1));
setRecordDetailSerialNumber(noteRecordDetailDTOList);
for (NoteRecordDetailDTO recordDetailDTO : noteRecordDetailDTOList) {
// 获取文件的文件名称
Set<String> fileNameSet = recordDetailDTO.getFileList().stream().map(NoteRecordFileDTO::getFileName).collect(Collectors.toSet());
recordDetailDTO.setConfessionMaterial(CollUtil.join(fileNameSet, ";"));
recordDetailDTO.setPercentageValue(taskRecordMap.get(recordDetailDTO.getId()));
}
noteRecordDetailDTOList.sort(Comparator.comparing(NoteRecordDetailDTO::getSerialNumber));
List<NoteRecordDetailDTO> pager = ListUtils.Pager(size, page, noteRecordDetailDTOList);
return IPages.buildDataMap(pager, noteRecordDetailDTOList.size());
}
private void setRecordDetailSerialNumber(List<NoteRecordDetailDTO> noteRecordDetailDTOList) {
List<Pair<String, Integer>> pairs = new ArrayList<>();
for (NoteRecordDetailDTO noteRecordDetailDTO : noteRecordDetailDTOList) {
String personId = noteRecordDetailDTO.getPersonId();
int index = findPair(pairs, personId);
if (index == -1){
pairs.add(Pair.of(personId, 1));
index = findPair(pairs, personId);
}else {
pairs.set(index, Pair.of(personId, pairs.get(index).getValue() + 1));
}
noteRecordDetailDTO.setSerialNumber(index+1 + "." + pairs.get(index).getValue());
}
}
private int findPair(List<Pair<String, Integer>> pairs, String personId) {
for (int i = 0; i < pairs.size(); i++) {
Pair<String, Integer> pair = pairs.get(i);
if (StrUtil.equals(personId, pair.getKey())) {
return i;
}
}
return -1;
}
} }

@ -31,6 +31,7 @@
<if test="role != null and role != ''"> <if test="role != null and role != ''">
and p.role_code = #{role} and p.role_code = #{role}
</if> </if>
order by r.create_time asc
</select> </select>
</mapper> </mapper>
Loading…
Cancel
Save