From b9c9b1265e35eeeefbc1c7abe82a68b43ce59e9f Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 25 八月 2026 11:19:07 +0800
Subject: [PATCH] 门诊数据查询空指针异常处理

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index e94c773..7c39a28 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -18,6 +18,7 @@
 import com.smartor.service.IServiceExternalService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -1164,7 +1165,7 @@
         List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(patMedOuthospreq);
         for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {
             PatArchive pa = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid());
-            if (patArchive.getBirthdate() != null) {
+            if (ObjectUtils.isNotEmpty(patArchive) && patArchive.getBirthdate() != null) {
                 Map<String, String> map = calculateAge(pa.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
                 pa.setAge(ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
                 pa.setAgeUnit(map.get("ageUnit"));
@@ -1337,7 +1338,6 @@
         ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
         PatArchive patArchive = addPatArchive(externalInHospPatientInfo, null, null);
 
-
         //鎵嬫湳淇℃伅鏂板
         Map<String, Object> ssxx = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("ShouShuSQ") : null;
         //鎵嬫湳鏇存柊
@@ -1353,12 +1353,6 @@
             externalOperationInfo = BeanUtil.mapToBean(sscx, ExternalOperationInfo.class, true);
         PatMedOperation patMedOperation = new PatMedOperation();
         patMedOperation.setPatid(patArchive.getId());
-        patMedOperation.setPatcode(externalInHospPatientInfo.getBingRenID());
-        patMedOperation.setPaname(externalInHospPatientInfo.getXingMing());
-        patMedOperation.setLeaveldeptcode(externalInHospPatientInfo.getDangQianKSID());
-        patMedOperation.setLeaveldeptname(externalInHospPatientInfo.getDangQianKSMC());
-        patMedOperation.setLeavehospitaldistrictcode(externalInHospPatientInfo.getDangQianBQID());
-        patMedOperation.setLeavehospitaldistrictname(externalInHospPatientInfo.getDangQianBQMC());
         patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
         //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
         List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
@@ -1413,6 +1407,13 @@
             patMedOperation.setInhospno(externalInHospPatientInfo.getBingAnHao());
             patMedOperation.setHospitalname(externalInHospPatientInfo.getZuZhiJGMC());
             patMedOperation.setHospitalcode(externalInHospPatientInfo.getZuZhiJGID());
+
+            patMedOperation.setPatcode(externalInHospPatientInfo.getBingRenID());
+            patMedOperation.setPaname(externalInHospPatientInfo.getXingMing());
+            patMedOperation.setLeaveldeptcode(externalInHospPatientInfo.getDangQianKSID());
+            patMedOperation.setLeaveldeptname(externalInHospPatientInfo.getDangQianKSMC());
+            patMedOperation.setLeavehospitaldistrictcode(externalInHospPatientInfo.getDangQianBQID());
+            patMedOperation.setLeavehospitaldistrictname(externalInHospPatientInfo.getDangQianBQMC());
         }
         patMedOperation.setHospitaldistrictcode(null);
         patMedOperation.setHospitaldistrictname(null);
@@ -1457,6 +1458,10 @@
                 return info;
             }).collect(Collectors.toList()) : null;
 
+            if(ObjectUtils.isNotEmpty(patMedOperation.getId())){
+                patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(patMedOperation.getId().toString());
+            }
+
             //addMianTableFalg鏄惁闇�瑕佸皢涓绘墜鏈殑淇℃伅鏀惧埌PatMedOperation琛ㄤ腑锛堝彧鏈夌涓�涓富鎵嬫湳淇℃伅闇�瑕佹斁锛屽悗闈㈢殑閮戒笉闇�瑕佹斁浜嗭紝涔熷氨鏄锛岀涓�涓斁瀹屽悗锛屽氨瑕佹妸杩欎釜flag鏀规垚false锛�
             Boolean addMianTableFalg = true;
             for (ExternalOperationDetail externalOperationDetail : externalOperationDetails) {
@@ -1490,6 +1495,7 @@
                     addMianTableFalg = false;
                 }
                 patMedOperationItem.setCreateTime(new Date());
+                patMedOperationItem.setUpdateTime(new Date());
                 patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
             }
         }
@@ -1984,6 +1990,12 @@
                 log.info("鎵嬫湳鐢宠鍏ュ弬绫诲瀷涓猴細{}", type);
                 addOperationInfo(dataMap);
                 return true;
+            case "SM_SQ_ShouShuAP":
+                log.info("鎵嬫湳瀹夋帓鍏ュ弬绫诲瀷涓猴細{}", type);
+                return true;
+            case "SM_SQ_CheXiao":
+                log.info("鎵嬫湳鎾ら攢鍏ュ弬绫诲瀷涓猴細{}", type);
+                return true;
             case "TJ_YW_BaoGaoXX":
                 log.info("浣撴鎶ュ憡鍏ュ弬绫诲瀷涓猴細{}", type);
                 return true;

--
Gitblit v1.9.3