NihEvidenceService.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.pharmacopoeia.nihaisha.service;
  2. import com.pharmacopoeia.nihaisha.entity.NihEvidenceRecord;
  3. import com.pharmacopoeia.nihaisha.entity.NihParagraph;
  4. import com.pharmacopoeia.nihaisha.repository.NihEvidenceRecordRepository;
  5. import com.pharmacopoeia.nihaisha.repository.NihParagraphRepository;
  6. import org.springframework.stereotype.Service;
  7. import java.util.*;
  8. @Service
  9. public class NihEvidenceService {
  10. private final NihEvidenceRecordRepository evidenceRecordRepository;
  11. private final NihParagraphRepository paragraphRepository;
  12. public NihEvidenceService(NihEvidenceRecordRepository evidenceRecordRepository,
  13. NihParagraphRepository paragraphRepository) {
  14. this.evidenceRecordRepository = evidenceRecordRepository;
  15. this.paragraphRepository = paragraphRepository;
  16. }
  17. /**
  18. * 获取证据详情
  19. */
  20. public Optional<NihEvidenceRecord> getEvidence(String evidenceId) {
  21. return evidenceRecordRepository.findById(evidenceId);
  22. }
  23. /**
  24. * 获取证据上下文(前驱 + 当前 + 后继)
  25. */
  26. public Map<String, Object> getEvidenceContext(String evidenceId) {
  27. Map<String, Object> context = new HashMap<>();
  28. evidenceRecordRepository.findById(evidenceId).ifPresent(current -> {
  29. context.put("current", enrichWithParagraph(current));
  30. if (current.getPreviousEvidenceId() != null && !current.getPreviousEvidenceId().isEmpty()) {
  31. evidenceRecordRepository.findById(current.getPreviousEvidenceId())
  32. .ifPresent(prev -> context.put("previous", enrichWithParagraph(prev)));
  33. }
  34. if (current.getNextEvidenceId() != null && !current.getNextEvidenceId().isEmpty()) {
  35. evidenceRecordRepository.findById(current.getNextEvidenceId())
  36. .ifPresent(next -> context.put("next", enrichWithParagraph(next)));
  37. }
  38. });
  39. return context;
  40. }
  41. private Map<String, Object> enrichWithParagraph(NihEvidenceRecord record) {
  42. Map<String, Object> enriched = new HashMap<>();
  43. enriched.put("evidenceId", record.getEvidenceId());
  44. enriched.put("documentId", record.getDocumentId());
  45. enriched.put("locator", record.getLocator());
  46. enriched.put("originalText", record.getOriginalText());
  47. enriched.put("previousEvidenceId", record.getPreviousEvidenceId());
  48. enriched.put("nextEvidenceId", record.getNextEvidenceId());
  49. if (record.getParagraphId() != null) {
  50. paragraphRepository.findById(record.getParagraphId()).ifPresent(p -> {
  51. enriched.put("title", p.getTitle());
  52. enriched.put("sourcePath", p.getSourcePath());
  53. enriched.put("pageStart", p.getPageStart());
  54. enriched.put("pageEnd", p.getPageEnd());
  55. });
  56. }
  57. return enriched;
  58. }
  59. }