| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package com.pharmacopoeia.nihaisha.service;
- import com.pharmacopoeia.nihaisha.entity.NihEvidenceRecord;
- import com.pharmacopoeia.nihaisha.entity.NihParagraph;
- import com.pharmacopoeia.nihaisha.repository.NihEvidenceRecordRepository;
- import com.pharmacopoeia.nihaisha.repository.NihParagraphRepository;
- import org.springframework.stereotype.Service;
- import java.util.*;
- @Service
- public class NihEvidenceService {
- private final NihEvidenceRecordRepository evidenceRecordRepository;
- private final NihParagraphRepository paragraphRepository;
- public NihEvidenceService(NihEvidenceRecordRepository evidenceRecordRepository,
- NihParagraphRepository paragraphRepository) {
- this.evidenceRecordRepository = evidenceRecordRepository;
- this.paragraphRepository = paragraphRepository;
- }
- /**
- * 获取证据详情
- */
- public Optional<NihEvidenceRecord> getEvidence(String evidenceId) {
- return evidenceRecordRepository.findById(evidenceId);
- }
- /**
- * 获取证据上下文(前驱 + 当前 + 后继)
- */
- public Map<String, Object> getEvidenceContext(String evidenceId) {
- Map<String, Object> context = new HashMap<>();
- evidenceRecordRepository.findById(evidenceId).ifPresent(current -> {
- context.put("current", enrichWithParagraph(current));
- if (current.getPreviousEvidenceId() != null && !current.getPreviousEvidenceId().isEmpty()) {
- evidenceRecordRepository.findById(current.getPreviousEvidenceId())
- .ifPresent(prev -> context.put("previous", enrichWithParagraph(prev)));
- }
- if (current.getNextEvidenceId() != null && !current.getNextEvidenceId().isEmpty()) {
- evidenceRecordRepository.findById(current.getNextEvidenceId())
- .ifPresent(next -> context.put("next", enrichWithParagraph(next)));
- }
- });
- return context;
- }
- private Map<String, Object> enrichWithParagraph(NihEvidenceRecord record) {
- Map<String, Object> enriched = new HashMap<>();
- enriched.put("evidenceId", record.getEvidenceId());
- enriched.put("documentId", record.getDocumentId());
- enriched.put("locator", record.getLocator());
- enriched.put("originalText", record.getOriginalText());
- enriched.put("previousEvidenceId", record.getPreviousEvidenceId());
- enriched.put("nextEvidenceId", record.getNextEvidenceId());
- if (record.getParagraphId() != null) {
- paragraphRepository.findById(record.getParagraphId()).ifPresent(p -> {
- enriched.put("title", p.getTitle());
- enriched.put("sourcePath", p.getSourcePath());
- enriched.put("pageStart", p.getPageStart());
- enriched.put("pageEnd", p.getPageEnd());
- });
- }
- return enriched;
- }
- }
|