From 6e397c664037b898b5e9d9955da1d953089e679e Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 09 六月 2026 17:32:07 +0800
Subject: [PATCH] 【市一】手术随访对接

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index 5569719..8884243 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -334,9 +334,22 @@
         patMedOperation.setLastStartTime(startTime);
         patMedOperation.setLastEndTime(endTime);
         List<PatMedOperation> patMedOperations = chMapper.selectOperList(patMedOperation);
+        Map<String, Long> patIdHisMap = buildOperationPatIdHisMap(patMedOperations);
+
         log.info("鍚屾鎵嬫湳淇℃伅鏁伴噺" + patMedOperations.size());
         for (PatMedOperation operation : patMedOperations) {
             try {
+                Long patId = patIdHisMap.get(operation.getPatidHis());
+                if (patId == null) {
+                    patId = syncSinglePatient(operation.getPatidHis());
+                    if (patId != null) {
+                        patIdHisMap.put(operation.getPatidHis(), patId);
+                    }
+                }
+
+                if (patId != null) {
+                    operation.setPatid(patId);
+                }
                 PatMedOperation oper = new PatMedOperation();
                 oper.setOpid(operation.getOpid());
                 List<PatMedOperation> patMedOperations1 = patMedOperationMapper.selectPatMedOperationList(oper);
@@ -389,9 +402,68 @@
                     log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
                 }
             }
+
+//            try {
+//                patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(operation.getOpid());
+//                count += patMedOperationItemMapper.insertPatMedOperationItems(patMedOperationItems);
+//            }catch (Exception ex) {
+//                log.info("鍚屾鎵嬫湳璇︽儏淇℃伅:" + ex.getMessage());
+//            }
         }
         return count;
     }
+
+    private Map<String, Long> buildOperationPatIdHisMap(List<PatMedOperation> operations) {
+        List<String> patidHiss = operations.stream()
+                .map(PatMedOperation::getPatidHis)
+                .filter(StringUtils::isNotEmpty)
+                .distinct()
+                .collect(Collectors.toList());
+
+        if (CollectionUtils.isEmpty(patidHiss)) {
+            return new HashMap<>();
+        }
+
+        return patArchiveMapper.selectPatArchiveByPatidHiss(patidHiss).stream()
+                .filter(item -> StringUtils.isNotEmpty(item.getPatidHis()) && item.getId() !=
+                        null)
+                .collect(Collectors.toMap(
+                        PatArchive::getPatidHis,
+                        PatArchive::getId,
+                        (a, b) -> a
+                ));
+    }
+
+    private Long syncSinglePatient(String patidHis) {
+        if (StringUtils.isEmpty(patidHis)) {
+            return null;
+        }
+
+        PatArchive hisQuery = new PatArchive();
+        hisQuery.setPatidHis(patidHis);
+        hisQuery.setPageSize(5);
+        List<PatArchive> hisArchives = chMapper.selectPatArchiveList(hisQuery);
+        if (CollectionUtils.isEmpty(hisArchives)) {
+            return null;
+        }
+
+        PatArchive localQuery = new PatArchive();
+        localQuery.setPatidHis(patidHis);
+        List<PatArchive> localArchives = patArchiveMapper.selectPatArchiveList(localQuery);
+
+        PatArchive hisArchive = hisArchives.get(0);
+        if (CollectionUtils.isNotEmpty(localArchives)) {
+            hisArchive.setId(localArchives.get(0).getId());
+            hisArchive.setUpdateTime(new Date());
+            patArchiveMapper.updatePatArchive(hisArchive);
+            return localArchives.get(0).getId();
+        } else {
+            hisArchive.setCreateTime(new Date());
+            patArchiveMapper.insertPatArchiveSingle(hisArchive);
+            return hisArchive.getId();
+        }
+    }
+
     @Override
     public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {
         List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);

--
Gitblit v1.9.3