diff --git a/src/main/java/com/supervision/police/controller/RecordController.java b/src/main/java/com/supervision/police/controller/RecordController.java index 7c09341..929709f 100644 --- a/src/main/java/com/supervision/police/controller/RecordController.java +++ b/src/main/java/com/supervision/police/controller/RecordController.java @@ -125,6 +125,13 @@ public class RecordController { return R.ok(noteRecordSplitService.queryRecords(noteRecord, page, size)); } + @PostMapping("/queryRecordList") + public R> 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)); + } + /** * 删除 * diff --git a/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java b/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java index a9aed9f..d1f8d4d 100644 --- a/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java +++ b/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java @@ -1,9 +1,11 @@ package com.supervision.police.dto; import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.annotation.JsonFormat; import com.supervision.minio.domain.MinioFile; +import com.supervision.police.domain.CaseTaskRecord; import lombok.Data; import java.time.LocalDateTime; @@ -15,6 +17,11 @@ public class NoteRecordDetailDTO { private String id; + /** + * 序号 + */ + private String serialNumber; + /** * 案件id */ @@ -129,4 +136,23 @@ public class NoteRecordDetailDTO { 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))); + } + } + } + } } diff --git a/src/main/java/com/supervision/police/service/NoteRecordSplitService.java b/src/main/java/com/supervision/police/service/NoteRecordSplitService.java index 5596c4e..bb234aa 100644 --- a/src/main/java/com/supervision/police/service/NoteRecordSplitService.java +++ b/src/main/java/com/supervision/police/service/NoteRecordSplitService.java @@ -16,4 +16,5 @@ public interface NoteRecordSplitService extends IService { void delRecords(String id); + Map queryRecordList(NoteRecord noteRecord, Integer page, Integer size); } diff --git a/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java b/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java index f51c474..2c1a95e 100644 --- a/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java @@ -1,15 +1,11 @@ package com.supervision.police.service.impl; 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.StrUtil; 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.dto.DeleteFileDTO; -import com.supervision.chat.client.dto.LangChainChatRes; import com.supervision.common.utils.IPages; import com.supervision.common.utils.ListUtils; import com.supervision.common.utils.StringUtils; @@ -333,4 +329,71 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl queryRecordList(NoteRecord noteRecord, Integer page, Integer size) { + + List noteRecordDTOList = noteRecordService.selectNoteRecordDTOList(noteRecord); + + // 查询关联文件数据 + List fileIdList = noteRecordDTOList.stream().map(NoteRecordDTO::getFileIds).filter(StringUtils::isNotEmpty) + .flatMap(s -> Arrays.stream(s.split(","))).distinct().toList(); + Map fileMap = minioService.listMinioFile(fileIdList).stream().collect(Collectors.toMap(MinioFile::getId, Function.identity())); + + // 查询关联角色字典 + Map caseRoleDicMap = comDictionaryService.getDictionaryMap("case_role"); + + List 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 taskList = caseTaskRecordService.lambdaQuery().eq(CaseTaskRecord::getCaseId, noteRecord.getCaseId()).list(); + Map taskRecordMap = taskList.stream().collect(Collectors.toMap(CaseTaskRecord::getRecordId, Function.identity(), (k1, k2) -> k1)); + + + setRecordDetailSerialNumber(noteRecordDetailDTOList); + for (NoteRecordDetailDTO recordDetailDTO : noteRecordDetailDTOList) { + // 获取文件的文件名称 + Set 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 pager = ListUtils.Pager(size, page, noteRecordDetailDTOList); + return IPages.buildDataMap(pager, noteRecordDetailDTOList.size()); + } + + private void setRecordDetailSerialNumber(List noteRecordDetailDTOList) { + + List> 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> pairs, String personId) { + for (int i = 0; i < pairs.size(); i++) { + Pair pair = pairs.get(i); + if (StrUtil.equals(personId, pair.getKey())) { + return i; + } + } + return -1; + } + + + } diff --git a/src/main/resources/mapper/NoteRecordMapper.xml b/src/main/resources/mapper/NoteRecordMapper.xml index 01dbd09..f8dcfb1 100644 --- a/src/main/resources/mapper/NoteRecordMapper.xml +++ b/src/main/resources/mapper/NoteRecordMapper.xml @@ -31,6 +31,7 @@ and p.role_code = #{role} + order by r.create_time asc \ No newline at end of file