From 7191c6d38f03f2e1baf39f959227ce9c038e4e96 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 03 十一月 2026 14:39:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into smartor_ls_261012

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |  292 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 215 insertions(+), 77 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 f672d26..7c52ef0 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1,5 +1,7 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.othervisit.api.OtherVisitFacade;
+import com.ruoyi.inhospvisit.api.InhospVisitFacade;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -16,7 +18,6 @@
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.domain.*;
-import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.IPatChildArchiveService;
 import com.smartor.service.IPatMaternityArchiveService;
@@ -41,6 +42,24 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.ruoyi.outpatientvisit.domain.PatMedOuthospQueryReq;
+import com.ruoyi.othervisit.domain.PatMedOperationItem;
+import com.ruoyi.outpatientvisit.mapper.PatMedOuthospMapper;
+import com.ruoyi.othervisit.domain.PatMedOperation;
+import com.ruoyi.outpatientvisit.domain.PatMedOuthosp;
+import com.ruoyi.inhospvisit.domain.PatMedInhosp;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.common.core.domain.entity.PatArchivecontact;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.patarchive.mapper.PatArchiveMapper;
+import com.ruoyi.patarchive.mapper.PatArchivecontactMapper;
+import com.ruoyi.common.core.domain.entity.Icd10;
+import com.ruoyi.common.mapper.Icd10Mapper;
+import com.ruoyi.system.mapper.ext.SysUser2Mapper;
+import com.ruoyi.system.mapper.ext.SysDept2Mapper;
+import com.ruoyi.system.mapper.ext.SysUserDeptMapper;
 /**
  * 涓婚敭Service涓氬姟灞傚鐞�
  *
@@ -52,6 +71,12 @@
 public class ServiceExternalServiceImpl implements IServiceExternalService {
     @Autowired
     private SysDept2Mapper sysDeptMapper;
+
+    /**
+     * 鎵嬫湳鏁版嵁涓�寰嬬粡 ruoyi-othervisit 鐨勯棬闈㈠彇鐢紙璺ㄦā鍧楁暟鎹闂師鍒欙級銆�
+     */
+    @Autowired
+    private OtherVisitFacade otherVisitFacade;
     @Autowired
     private SysUser2Mapper sysUserMapper;
     @Autowired
@@ -63,11 +88,7 @@
     @Autowired
     private PatArchivecontactMapper patArchivecontactMapper;
     @Autowired
-    private PatMedInhospMapper patMedInhospMapper;
-    @Autowired
-    private PatMedOperationMapper patMedOperationMapper;
-    @Autowired
-    private PatMedOperationItemMapper patMedOperationItemMapper;
+    private InhospVisitFacade inhospVisitFacade;
     @Autowired
     private PatMedInspectionMapper patMedInspectionMapper;
     @Autowired
@@ -495,9 +516,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
@@ -510,7 +531,7 @@
                 patMedInhosp1.setOperatorId(ObjectUtils.isNotEmpty(JiuZhenXX.get("CaoZuoRID")) ? JiuZhenXX.get("CaoZuoRID").toString() : null);
             }
             patMedInhosp1.setUpdateTime(new Date());
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
         return true;
@@ -589,9 +610,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         PatMedInhosp patMedInhosp1 = new PatMedInhosp();
@@ -706,7 +727,7 @@
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
             }
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
             if (ObjectUtils.isNotEmpty(BingRenXX)) {
@@ -730,7 +751,7 @@
                 patMedInhosp1.setFuflag("0");
             }
 
-            int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
         return true;
@@ -788,9 +809,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         PatMedInhosp patMedInhosp1 = new PatMedInhosp();
@@ -872,7 +893,7 @@
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
             }
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
             if (ObjectUtils.isNotEmpty(BingRenXX)) {
@@ -895,7 +916,7 @@
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
             }
-            int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
         return true;
@@ -910,9 +931,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
@@ -926,7 +947,7 @@
                 patMedInhosp1.setOperatorId(ObjectUtils.isNotEmpty(JiuZhenXX.get("CaoZuoRXM")) ? JiuZhenXX.get("CaoZuoRID").toString() : null);
             }
             patMedInhosp1.setUpdateTime(new Date());
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
 
             //鍙栨秷鍑洪櫌锛屽氨涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=2鎴栬�卻endstate=1鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝鏈夌殑璇濓紝绔嬪嵆鍋滀簡
             ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
@@ -1010,9 +1031,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         Map<String, Object> JiuZhenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JiuZhenXX") : null;
@@ -1096,7 +1117,7 @@
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp1.setUpdateTime(new Date());
             patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
             if (ObjectUtils.isNotEmpty(BingRenXX)) {
@@ -1115,7 +1136,7 @@
             patMedInhosp1.setPatname(patArchive.getName());
 
             patMedInhosp1.setCreateTime(new Date());
-            int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
 
@@ -1150,7 +1171,7 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         PatMedInhosp patMedInhosp1 = null;
         if (CollectionUtils.isNotEmpty(patMedInhospList)) patMedInhosp1 = patMedInhospList.get(0);
         if (ObjectUtils.isNotEmpty(patMedInhosp1)) {
@@ -1161,7 +1182,7 @@
                     patMedInhosp1.setUpdateTime(new Date());
                     //鏇存柊鍑洪櫌鐘舵��
                     patMedInhosp1.setInhospstate("1");
-                    int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                     if (i != 1) return false;
                 } catch (ParseException e) {
                     e.printStackTrace();
@@ -1432,7 +1453,7 @@
         patMedOperation.setPatid(patArchive.getId());
         patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
         //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
-        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+        List<PatMedOperation> patMedOperations = otherVisitFacade.selectOperationList(patMedOperation);
 
         patMedOperation.setOpsstatus(null);
         if (ObjectUtils.isNotEmpty(externalOperationInfo)) {
@@ -1509,10 +1530,10 @@
                 //鍚屾椂鍘绘煡璇紝鏄惁鍦╯ubtask涓敓鎴愪换鍔★紝濡傛灉鐢熸垚鍑哄緱绔嬮┈鍒犻櫎
             }
             patMedOperation.setUpdateTime(new Date());
-            patMedOperationMapper.updatePatMedOperation(patMedOperation);
+            otherVisitFacade.updateOperation(patMedOperation);
         } else {
             patMedOperation.setCreateTime(new Date());
-            patMedOperationMapper.insertPatMedOperation(patMedOperation);
+            otherVisitFacade.insertOperation(patMedOperation);
         }
         log.info("-----patMedOperation鐨勪富閿甶d涓猴細{}", patMedOperation.getId());
 
@@ -1536,7 +1557,7 @@
             }).collect(Collectors.toList()) : null;
 
             if(ObjectUtils.isNotEmpty(patMedOperation.getId())){
-                patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(patMedOperation.getId().toString());
+                otherVisitFacade.deleteHardOperationItemByOpId(patMedOperation.getId().toString());
             }
 
             //addMianTableFalg鏄惁闇�瑕佸皢涓绘墜鏈殑淇℃伅鏀惧埌PatMedOperation琛ㄤ腑锛堝彧鏈夌涓�涓富鎵嬫湳淇℃伅闇�瑕佹斁锛屽悗闈㈢殑閮戒笉闇�瑕佹斁浜嗭紝涔熷氨鏄锛岀涓�涓斁瀹屽悗锛屽氨瑕佹妸杩欎釜flag鏀规垚false锛�
@@ -1568,12 +1589,12 @@
                     }
 
                     patMedOperation.setUpdateTime(new Date());
-                    patMedOperationMapper.updatePatMedOperation(patMedOperation);
+                    otherVisitFacade.updateOperation(patMedOperation);
                     addMianTableFalg = false;
                 }
                 patMedOperationItem.setCreateTime(new Date());
                 patMedOperationItem.setUpdateTime(new Date());
-                patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
+                otherVisitFacade.insertOperationItem(patMedOperationItem);
             }
         }
         return true;
@@ -1597,7 +1618,7 @@
         patMedOperation.setOrgid(patArchive.getOrgid());
         patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
         //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
-        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+        List<PatMedOperation> patMedOperations = otherVisitFacade.selectOperationList(patMedOperation);
         if (CollectionUtils.isNotEmpty(patMedOperations)) {
             for(PatMedOperation operation : patMedOperations){
                 Long id = operation.getId();
@@ -1612,7 +1633,7 @@
                     //鑾峰彇闇�瑕佸嚭闄㈡墜鏈殢璁匡紝鏈鐞嗙殑鏁版嵁
                     pmoi.setOpid(operation.getId().toString());
                     List<PatMedOperationItem> patMedOperationItems
-                            = patMedOperationItemMapper.selectOperationItemList(pmoi);
+                            = otherVisitFacade.selectOperationItemListByCondition(pmoi);
                     List<Long> operationItemIds = patMedOperationItems.stream()
                             .map(PatMedOperationItem::getId)
                             .filter(Objects::nonNull)
@@ -1646,8 +1667,8 @@
                         }
                     }
                     operation.setUpdateTime(new Date());
-                    patMedOperationMapper.updatePatMedOperation(operation);
-                    patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(operation.getOpid());
+                    otherVisitFacade.updateOperation(operation);
+                    otherVisitFacade.deleteSoftOperationItemByOpId(operation.getOpid());
                 }
             }
         }
@@ -1766,7 +1787,7 @@
             //鍖婚櫌閭h竟璇磋鐢ㄧ梾妗堝彿锛屼笉瑕佺敤浣忛櫌鍙�
             patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
             patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-            patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+            patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
             patMedInhosp.setHospitalname(externalInHospPatientInfo.getZuZhiJGMC());
             patMedInhosp.setHospitalcode(externalInHospPatientInfo.getZuZhiJGID());
             patMedInhosp.setStarttime(externalInHospPatientInfo.getRuYuanSJ());
@@ -1817,10 +1838,10 @@
         int i = 1;
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
-            i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+            i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
         } else {
             patMedInhosp.setCreateTime(new Date());
-            i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp);
+            i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp);
         }
         if (i == 1) return true;
         return false;
@@ -1999,77 +2020,194 @@
     }
 
     //妫�鏌ヨ鎯呮坊鍔�
+    @SuppressWarnings("unchecked")
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean addInspectBGService(Map dataMap) {
         log.info("ServiceExternalServiceImpl---addInspectBGService鐨勬柊澧炵殑鍊间负锛歿}", dataMap);
         Map xiaoXiTou = (Map) dataMap.get("XiaoXiTou");
         Map yeWuXX = (Map) dataMap.get("YeWuXX");
         Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
         Map<String, Object> JianChaBG = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JianChaBG") : null;
-        List<HashMap<String, Object>> JianChaBWList = ObjectUtils.isNotEmpty(JianChaBG) ? (List<HashMap<String, Object>>) JianChaBG.get("JianChaBWList") : null;
+        if (ObjectUtils.isEmpty(BingRenXX)) {
+            throw new BaseException("妫�鏌ユ姤鍛婂悓姝ュけ璐ワ細BingRenXX涓嶈兘涓虹┖");
+        }
+        if (ObjectUtils.isEmpty(JianChaBG)) {
+            throw new BaseException("妫�鏌ユ姤鍛婂悓姝ュけ璐ワ細JianChaBG涓嶈兘涓虹┖");
+        }
+
+        // 鏈烘瀯浼樺厛鍙栨秷鎭ご锛屽叾娆″彇鎮h�呬俊鎭紝鍜屾鏌ョ敵璇疯ˉ寤洪�昏緫淇濇寔涓�鑷�
+        String orgid = ObjectUtils.isNotEmpty(xiaoXiTou) ? getMapValue(xiaoXiTou, "FaSongJGID") : null;
+        if (StringUtils.isBlank(orgid)) {
+            orgid = getMapValue(BingRenXX, "ZuZhiJGID");
+        }
+        String bingAnHao = getMapValue(BingRenXX, "BingAnHao");
+        String bingRenID = getMapValue(BingRenXX, "BingRenID");
+        String xingMing = getMapValue(BingRenXX, "XingMing");
+        String shenQingDID = getMapValue(JianChaBG, "ShenQingDID");
+        if (StringUtils.isBlank(orgid) || StringUtils.isBlank(bingAnHao) || StringUtils.isBlank(bingRenID)
+                || StringUtils.isBlank(xingMing) || StringUtils.isBlank(shenQingDID)) {
+            throw new BaseException("妫�鏌ユ姤鍛婂悓姝ュけ璐ワ細BingRenXX.ZuZhiJGID/BingAnHao/BingRenID/XingMing銆丣ianChaBG.ShenQingDID涓嶈兘涓虹┖");
+        }
+
         PatMedInspection patMedInspection = new PatMedInspection();
         PatMedInspectionItem patMedInspectionItem = new PatMedInspectionItem();
-        patMedInspection.setOrgid(BingRenXX.get("ZuZhiJGID").toString());
+        patMedInspection.setOrgid(orgid);
         //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
         patMedInspection.setCampusid("1");
-        patMedInspection.setInhospno(BingRenXX.get("BingAnHao").toString());
-        patMedInspection.setPatidHis(BingRenXX.get("BingRenID").toString());
-        patMedInspection.setPatname(BingRenXX.get("XingMing").toString());
-        patMedInspection.setAppliyid(JianChaBG.get("ShenQingDID").toString());
+        patMedInspection.setInhospno(bingAnHao);
+        patMedInspection.setPatidHis(bingRenID);
+        patMedInspection.setPatname(xingMing);
+        patMedInspection.setAppliyid(shenQingDID);
         //鏌ユ壘鎮h�呮鏌ユ楠屼俊鎭紝濡傛灉鏃狅紝杩涜鏂板姞
         List<PatMedInspection> patMedInspections = patMedInspectionMapper.selectPatMedInspectionList(patMedInspection);
-        if (CollectionUtils.isNotEmpty(patMedInspections)) {
-            patMedInspectionItem.setInspectionid(patMedInspections.get(0).getId().intValue());
-        } else {
+        if (CollectionUtils.isEmpty(patMedInspections)) {
             addInspectService(dataMap);
-            List<PatMedInspection> patMedInspections2 = patMedInspectionMapper.selectPatMedInspectionList(patMedInspection);
-            patMedInspectionItem.setInspectionid(patMedInspections2.get(0).getId().intValue());
+            patMedInspections = patMedInspectionMapper.selectPatMedInspectionList(patMedInspection);
+            if (CollectionUtils.isEmpty(patMedInspections)) {
+                throw new BaseException("妫�鏌ユ姤鍛婂悓姝ュけ璐ワ細鏈壘鍒版垨鍒涘缓妫�鏌ヤ富璁板綍锛孲henQingDID=" + shenQingDID);
+            }
         }
+        patMedInspectionItem.setInspectionid(patMedInspections.get(0).getId().intValue());
         //妫�鏌ユ楠屾姤鍛婃暟鎹鐞�
-        patMedInspectionItem.setOrgid(BingRenXX.get("ZuZhiJGID").toString());
+        patMedInspectionItem.setOrgid(orgid);
         //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
         patMedInspectionItem.setCampusid("1");
         List<PatMedInspectionItem> patMedInspectionItems = patMedInspectionItemMapper.selectPatMedInspectionItemList(patMedInspectionItem);
-        if (ObjectUtils.isNotEmpty(JianChaBG)) {
-            patMedInspectionItem.setInspectionName(JianChaBG.get("JianChaHao").toString());
-            patMedInspectionItem.setReportid(JianChaBG.get("JianChaHao").toString());
-            patMedInspectionItem.setStatuscode(JianChaBG.get("DangQianZTDM").toString());
-            patMedInspectionItem.setStatusname(JianChaBG.get("DangQianZTMC").toString());
-            patMedInspectionItem.setReportid(JianChaBG.get("BaoGaoRID").toString());
-            patMedInspectionItem.setReportername(JianChaBG.get("BaoGaoRXM").toString());
-            patMedInspectionItem.setDiagimpression(JianChaBG.get("ZhenDuanYX").toString());
-            patMedInspectionItem.setDiagfindings(JianChaBG.get("ZhenDuanSJ").toString());
-            patMedInspectionItem.setDiagsuggestion(JianChaBG.get("ZhenDuanJY").toString());
-            patMedInspectionItem.setReporturl(JianChaBG.get("BaoGaoYXDZ").toString());
-            patMedInspectionItem.setCriticalFlag(Integer.valueOf(JianChaBG.get("WeiJiZBZ").toString()));
-            patMedInspectionItem.setCriticalContent(JianChaBG.get("WeiJiZNR").toString());
-            patMedInspectionItem.setReportdeptid(JianChaBG.get("BaoGaoKSID").toString());
-            patMedInspectionItem.setReportdeptname(JianChaBG.get("BaoGaoKSMC").toString());
-            patMedInspectionItem.setResultcode(JianChaBG.get("JianChaJGDM").toString());
-            patMedInspectionItem.setResultname(JianChaBG.get("JianChaJGMC").toString());
-            if (ObjectUtils.isNotEmpty(JianChaBG.get("BaoGaoSJ"))) {
-                try {
-                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    patMedInspection.setOpendate(simpleDateFormat.parse(JianChaBG.get("BaoGaoSJ").toString()));
-                } catch (ParseException e) {
-                    e.printStackTrace();
+
+        // 鍏煎 PACS 瀹為檯鎶ユ枃锛氭姤鍛婁汉銆佹姤鍛婃椂闂淬�佹姤鍛婂湴鍧�绛夊瓧娈靛悕涓庢爣鍑嗘姤鏂囧瓨鍦ㄥ樊寮�
+        String jianChaHao = getMapValue(JianChaBG, "JianChaHao");
+        String reportId = getMapValue(JianChaBG, "BaoGaoID");
+        if (StringUtils.isBlank(reportId)) {
+            reportId = getMapValue(JianChaBG, "BaoGaoRID");
+        }
+        if (StringUtils.isBlank(reportId)) {
+            reportId = jianChaHao;
+        }
+        String inspectionName = StringUtils.isNotBlank(jianChaHao) ? jianChaHao : reportId;
+        if (StringUtils.isBlank(inspectionName)) {
+            inspectionName = shenQingDID;
+        }
+        String reporterId = getMapValue(JianChaBG, "BaoGaoRID", "ZhiXingRID", "KaiDanRID");
+        String reporterName = getMapValue(JianChaBG, "BaoGaoRXM", "ZhiXingRXM", "KaiDanRXM");
+        String reportUrl = getMapValue(JianChaBG, "BaoGaoYXDZ", "TuWenBGXZDZ", "PDFurl");
+        String reportDateStr = getMapValue(JianChaBG, "BaoGaoSJ", "ZhiXingSJ");
+
+        patMedInspectionItem.setInspectionName(inspectionName);
+        patMedInspectionItem.setReportid(reportId);
+        patMedInspectionItem.setStatuscode(getMapValue(JianChaBG, "DangQianZTDM"));
+        patMedInspectionItem.setStatusname(getMapValue(JianChaBG, "DangQianZTMC"));
+        patMedInspectionItem.setReporterid(reporterId);
+        patMedInspectionItem.setReportername(reporterName);
+        patMedInspectionItem.setDiagimpression(getMapValue(JianChaBG, "ZhenDuanYX"));
+        patMedInspectionItem.setDiagfindings(getMapValue(JianChaBG, "ZhenDuanSJ"));
+        patMedInspectionItem.setDiagsuggestion(getMapValue(JianChaBG, "ZhenDuanJY"));
+        patMedInspectionItem.setReporturl(reportUrl);
+        patMedInspectionItem.setCriticalFlag(parseInteger(getMapValue(JianChaBG, "WeiJiZBZ")));
+        patMedInspectionItem.setCriticalContent(getMapValue(JianChaBG, "WeiJiZNR"));
+        patMedInspectionItem.setReportdeptid(getMapValue(JianChaBG, "BaoGaoKSID"));
+        patMedInspectionItem.setReportdeptname(getMapValue(JianChaBG, "BaoGaoKSMC"));
+        patMedInspectionItem.setResultcode(getMapValue(JianChaBG, "JianChaJGDM"));
+        patMedInspectionItem.setResultname(getMapValue(JianChaBG, "JianChaJGMC"));
+        Date reportDate = parseDateTime(reportDateStr);
+        if (reportDate != null) {
+            patMedInspectionItem.setReportdate(reportDate);
+        }
+
+        // 鍚屼竴妫�鏌ヤ笅鍙兘瀛樺湪澶氭潯鎶ュ憡鏄庣粏锛屼紭鍏堟寜鎶ュ憡ID銆佹鏌ュ彿鍖归厤锛岄伩鍏嶆洿鏂伴敊琛�
+        PatMedInspectionItem existingItem = null;
+        if (CollectionUtils.isNotEmpty(patMedInspectionItems)) {
+            for (PatMedInspectionItem item : patMedInspectionItems) {
+                if (StringUtils.isNotBlank(reportId) && reportId.equals(item.getReportid())) {
+                    existingItem = item;
+                    break;
                 }
             }
+            if (existingItem == null) {
+                for (PatMedInspectionItem item : patMedInspectionItems) {
+                    if (StringUtils.isNotBlank(inspectionName) && inspectionName.equals(item.getInspectionName())) {
+                        existingItem = item;
+                        break;
+                    }
+                }
+            }
+            if (existingItem == null) {
+                existingItem = patMedInspectionItems.get(0);
+            }
         }
-        if (ObjectUtils.isNotEmpty(patMedInspectionItems)) {
+
+        if (existingItem != null) {
+            // 鏇存柊蹇呴』甯︿笂涓婚敭锛屽惁鍒� update ... where id = null 浼氬奖鍝� 0 琛岋紝鎺ュ彛杩斿洖澶辫触
+            patMedInspectionItem.setId(existingItem.getId());
             patMedInspectionItem.setUpdateTime(new Date());
             int i = patMedInspectionItemMapper.updatePatMedInspectionItem(patMedInspectionItem);
-            if (i != 1) return false;
+            if (i < 1) {
+                throw new BaseException("妫�鏌ユ姤鍛婃槑缁嗘洿鏂板け璐ワ紝id=" + existingItem.getId());
+            }
         } else {
             patMedInspectionItem.setDelFlag("0");
             patMedInspectionItem.setCreateTime(new Date());
             int i = patMedInspectionItemMapper.insertPatMedInspectionItem(patMedInspectionItem);
-            if (i != 1) return false;
+            if (i != 1) {
+                throw new BaseException("妫�鏌ユ姤鍛婃槑缁嗘柊澧炲け璐ワ紝ShenQingDID=" + shenQingDID);
+            }
         }
 
         return true;
     }
 
+    /**
+     * 浠庢姤鏂囦腑鎸夐『搴忚幏鍙栫涓�涓潪绌哄瓧娈碉紝鍏煎涓嶅悓鍘傚晢鐨勫瓧娈靛懡鍚�
+     */
+    private String getMapValue(Map<String, Object> source, String... keys) {
+        if (source == null || keys == null) {
+            return null;
+        }
+        for (String key : keys) {
+            Object value = source.get(key);
+            if (value != null && StringUtils.isNotBlank(String.valueOf(value))) {
+                return String.valueOf(value);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 瑙f瀽妫�鏌ユ姤鍛婃椂闂达紝鍏煎甯歌鏃ユ湡鏃堕棿鏍煎紡
+     */
+    private Date parseDateTime(String dateTime) {
+        if (StringUtils.isBlank(dateTime)) {
+            return null;
+        }
+        String[] patterns = {"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd"};
+        for (String pattern : patterns) {
+            try {
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
+                simpleDateFormat.setLenient(false);
+                return simpleDateFormat.parse(dateTime);
+            } catch (ParseException ignored) {
+                // 灏濊瘯涓嬩竴绉嶆牸寮�
+            }
+        }
+        log.warn("妫�鏌ユ姤鍛婃椂闂存牸寮忔棤娉曡В鏋愶細{}", dateTime);
+        return null;
+    }
+
+    /**
+     * 瑙f瀽妫�鏌ユ姤鍛婃暟瀛楀瓧娈碉紝閬垮厤闈炴暟瀛楀唴瀹瑰鑷存帴鍙f姤閿�
+     */
+    private Integer parseInteger(String value) {
+        if (StringUtils.isBlank(value)) {
+            return null;
+        }
+        try {
+            return Integer.valueOf(value.trim());
+        } catch (NumberFormatException e) {
+            log.warn("妫�鏌ユ姤鍛婃暟瀛楀瓧娈垫棤娉曡浆鎹細{}", value);
+            return null;
+        }
+    }
+
     @Override
     public Map<String, Object> query360PatInfolwl(Long patid, SysUser sysUser) {
         PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);

--
Gitblit v1.9.3