From 57eac5a31c6823962b8e77ec8a9604e41882fb32 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 21 十月 2026 13:52:00 +0800
Subject: [PATCH] 【市一】随访微信超链接修改

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |  296 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 282 insertions(+), 14 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 9276652..f672d26 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1,6 +1,9 @@
 package com.smartor.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.ruoyi.common.core.domain.entity.SysDept;
@@ -11,13 +14,17 @@
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.StringUtils;
 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;
 import com.smartor.service.IPatMedOuthospService;
 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;
@@ -69,6 +76,12 @@
     private Icd10Mapper icd10Mapper;
     @Autowired
     private IPatMedOuthospService patMedOuthospService;
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private IPatMaternityArchiveService patMaternityArchiveService;
+    @Autowired
+    private IPatChildArchiveService patChildArchiveService;
     @Autowired
     private PatMedOuthospMapper patMedOuthospMapper;
     @Autowired
@@ -646,6 +659,21 @@
             }).collect(Collectors.toList());
             patMedInhosp1.setLeaveicd10code(hospPatientDiagnoseInfos2.get(0).getIcd10());
             patMedInhosp1.setLeavediagname(hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
+            //鍙湁璇婃柇鍚嶇О娌℃湁璇婃柇鐮佺殑鏁版嵁
+            if(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname())
+                    && !StringUtils.isNotEmpty(patMedInhosp1.getLeaveicd10code())){
+                Icd10 icd10 = new Icd10();
+                icd10.setIcdname(patMedInhosp1.getLeavediagname());
+                icd10.setDelFlag("0");
+                icd10.setOrgid(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+                //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
+                icd10.setCampusid("1");
+                //閫氳繃icdCode鏌ヨ涓�涓嬶紝鏄惁瀛樺湪
+                List<Icd10> icd10s = icd10Mapper.exactQueryIcd10List(icd10);
+                if(CollectionUtils.isEmpty(icd10s)){
+                    patMedInhosp1.setLeaveicd10code(icd10s.get(0).getIcdcode());
+                }
+            }
             //patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() + "," + hospPatientDiagnoseInfos2.get(0).getZhenDuanMC() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
             patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
         }
@@ -811,14 +839,35 @@
             }).collect(Collectors.toList());
             patMedInhosp1.setLeaveicd10code(hospPatientDiagnoseInfos2.get(0).getIcd10());
             patMedInhosp1.setLeavediagname(hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
+            //鍙湁璇婃柇鍚嶇О娌℃湁璇婃柇鐮佺殑鏁版嵁
+            if(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname())
+                    && !StringUtils.isNotEmpty(patMedInhosp1.getLeaveicd10code())){
+                Icd10 icd10 = new Icd10();
+                icd10.setIcdname(patMedInhosp1.getLeavediagname());
+                icd10.setDelFlag("0");
+                icd10.setOrgid(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+                //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
+                icd10.setCampusid("1");
+                //閫氳繃icdCode鏌ヨ涓�涓嬶紝鏄惁瀛樺湪
+                List<Icd10> icd10s = icd10Mapper.exactQueryIcd10List(icd10);
+                if(CollectionUtils.isEmpty(icd10s)){
+                    patMedInhosp1.setLeaveicd10code(icd10s.get(0).getIcdcode());
+                }
+            }
             //patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() + "," + hospPatientDiagnoseInfos2.get(0).getZhenDuanMC() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
             patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
         }
 
-        patMedInhosp1.setInhospstate("1");
+        String orgid = ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null;
+//        if(StringUtils.isNotEmpty(orgid) && orgid.equals("47246103233112211A1001")){
+//            //缂欎簯浜岄櫌 浣忛櫌璁板綍涓嶆洿鏂扮姸鎬�
+//        }else {
+//            patMedInhosp1.setInhospstate("1");
+//        }
+
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp1.setUpdateTime(new Date());
-            patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+            patMedInhosp1.setOrgid(orgid);
             if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) {
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
@@ -831,7 +880,7 @@
                 patMedInhosp1.setHospitalcode(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
                 patMedInhosp1.setLeavehospitaldistrictname(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianBQMC")) ? BingRenXX.get("DangQianBQMC").toString() : null);
                 patMedInhosp1.setLeavehospitaldistrictcode(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianBQID")) ? BingRenXX.get("DangQianBQID").toString() : null);
-                patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+                patMedInhosp1.setOrgid(orgid);
                 //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
                 patMedInhosp1.setCampusid("1");
                 patMedInhosp1.setPatno(ObjectUtils.isNotEmpty(BingRenXX.get("BingRenID")) ? BingRenXX.get("BingRenID").toString() : null);
@@ -1024,6 +1073,21 @@
             }).collect(Collectors.toList());
             patMedInhosp1.setLeaveicd10code(hospPatientDiagnoseInfos2.get(0).getIcd10());
             patMedInhosp1.setLeavediagname(hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
+            //鍙湁璇婃柇鍚嶇О娌℃湁璇婃柇鐮佺殑鏁版嵁
+            if(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname())
+                    && !StringUtils.isNotEmpty(patMedInhosp1.getLeaveicd10code())){
+                Icd10 icd10 = new Icd10();
+                icd10.setIcdname(patMedInhosp1.getLeavediagname());
+                icd10.setDelFlag("0");
+                icd10.setOrgid(ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+                //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
+                icd10.setCampusid("1");
+                //閫氳繃icdCode鏌ヨ涓�涓嬶紝鏄惁瀛樺湪
+                List<Icd10> icd10s = icd10Mapper.exactQueryIcd10List(icd10);
+                if(CollectionUtils.isEmpty(icd10s)){
+                    patMedInhosp1.setLeaveicd10code(icd10s.get(0).getIcdcode());
+                }
+            }
             //patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() + "," + hospPatientDiagnoseInfos2.get(0).getZhenDuanMC() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
             patMedInhosp1.setDiagname(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
         }
@@ -1164,7 +1228,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"));
@@ -1242,11 +1306,25 @@
             i = patMedOuthospService.insertPatMedOuthosp(patMedOuthosp);
 
         }
-        Date adminDate = externalJZInfo.getJiuZhenRQ();
+        Date adminDate = patMedOuthosp.getAdmitdate();
         //瀹屾垚鎺ヨ瘖 宸茬粡瀹屾垚浠诲姟鍐嶆闅忚
-        if(ObjectUtils.isNotEmpty(visitTimeNum) && ObjectUtils.isNotEmpty(adminDate)){
-            patMedOuthospService.followUpAgainByPatMedOuthosp(patMedOuthosp, adminDate, visitTimeNum);
+        if(ObjectUtils.isNotEmpty(visitTimeNum)
+                && ObjectUtils.isNotEmpty(adminDate)
+                && StringUtils.isNotEmpty(patMedOuthosp.getFuflag())
+                && patMedOuthosp.getFuflag().equals("1")){
+            if(visitTimeUnit.equals("澶�")){
+                visitTimeNum = visitTimeNum;
+            }else if(visitTimeUnit.equals("鍛�")){
+                visitTimeNum = visitTimeNum * 7;
+            }else if(visitTimeUnit.equals("鏈�")){
+                visitTimeNum = visitTimeNum * 30;
+            }else if(visitTimeUnit.equals("骞�")){
+                visitTimeNum = visitTimeNum * 365;
+            }
+            patMedOuthospService.dealPatMedOuthosp(patMedOuthosp, visitTimeNum);
         }
+
+        genePatSpecificArchive(patMedOuthosp, patArchive);
 
         if (i > 0) {
             return true;
@@ -1337,7 +1415,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 +1430,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);
@@ -1409,9 +1480,17 @@
             //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
             patMedOperation.setCampusid("1");
             patMedOperation.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
+            patMedOperation.setInhospstate(externalInHospPatientInfo.getBingRenLXDM());
             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);
@@ -1456,6 +1535,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) {
@@ -1473,6 +1556,8 @@
                 patMedOperationItem.setOpposition(externalOperationDetail.getShouShuBW());
                 patMedOperationItem.setDelFlag("0");
                 patMedOperationItem.setOrgid(patMedOperation.getOrgid());
+                patMedOperationItem.setInhospstate(patMedOperation.getInhospstate());
+                patMedOperationItem.setSerialnum(patMedOperation.getSerialnum());
                 //涓芥按鏃犻櫌鍖猴紝榛樿鍊兼槸 1
                 patMedOperationItem.setCampusid("1");
                 if (externalOperationDetail.getZhuShouSBZ().equals("1") && addMianTableFalg == true) {
@@ -1487,7 +1572,83 @@
                     addMianTableFalg = false;
                 }
                 patMedOperationItem.setCreateTime(new Date());
+                patMedOperationItem.setUpdateTime(new Date());
                 patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean cancelOperationInfo(Map dataMap) {
+        log.info("ServiceExternalServiceImpl---cancelOperationInfo鐨勬挙閿�鐨勫�间负锛歿}", dataMap);
+
+        Map yeWuXX = (Map) dataMap.get("YeWuXX");
+        Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
+        ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
+        PatArchive patArchive = addPatArchive(externalInHospPatientInfo, null, null);
+        //鎵嬫湳鎾ら攢
+        Map<String, Object> sscx = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("ShouShuCX") : null;
+        ExternalOperationInfo externalOperationInfo = null;
+        if (ObjectUtils.isNotEmpty(sscx))
+            externalOperationInfo = BeanUtil.mapToBean(sscx, ExternalOperationInfo.class, true);
+        PatMedOperation patMedOperation = new PatMedOperation();
+        patMedOperation.setPatid(patArchive.getId());
+        patMedOperation.setOrgid(patArchive.getOrgid());
+        patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
+        //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
+        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+        if (CollectionUtils.isNotEmpty(patMedOperations)) {
+            for(PatMedOperation operation : patMedOperations){
+                Long id = operation.getId();
+                //濡傛灉鎵嬫湳鎾ら攢锛岀洿鎺ュ垹闄よ鏉℃墜鏈俊鎭�
+                if (ObjectUtils.isNotEmpty(sscx)) {
+                    operation.setId(id);
+                    operation.setCheckFlag("1");
+                    operation.setDelFlag("1");
+                    //鍚屾椂鍘绘煡璇紝鏄惁鍦╯ubtask涓敓鎴愪换鍔★紝濡傛灉鐢熸垚鍑哄緱绔嬮┈鍒犻櫎
+                    //            鎵嬫湳闅忚
+                    PatMedOperationItem pmoi = new PatMedOperationItem();
+                    //鑾峰彇闇�瑕佸嚭闄㈡墜鏈殢璁匡紝鏈鐞嗙殑鏁版嵁
+                    pmoi.setOpid(operation.getId().toString());
+                    List<PatMedOperationItem> patMedOperationItems
+                            = patMedOperationItemMapper.selectOperationItemList(pmoi);
+                    List<Long> operationItemIds = patMedOperationItems.stream()
+                            .map(PatMedOperationItem::getId)
+                            .filter(Objects::nonNull)
+                            .distinct()
+                            .collect(Collectors.toList());
+
+
+                    //涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=1,2,3,5,7鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝
+                    //鏈夌殑璇濓紝绔嬪嵆鍋滀簡
+                    List<Long> sendstates = Arrays.asList(1L, 2L, 3L, 5L, 7L);
+                    List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
+                    ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+                    serviceSubtaskVO.setOrgid(patArchive.getOrgid());
+                    serviceSubtaskVO.setPatid(patArchive.getId());
+                    serviceSubtaskVO.setSendstates(sendstates);
+                    serviceSubtaskVO.setOperationItemIds(operationItemIds);
+                    serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+                    //鍘籸edis涓紝鏌ヨ鏄惁鏈塻ubid锛屾湁鐨勮瘽绉婚櫎cache-exist
+                    if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+                            log.info("闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+                            serviceSubtask.setSendstate(4L);
+                            serviceSubtask.setRemark("鎵嬫湳鎾ら攢");
+                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                            redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
+                            redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
+                            redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
+                            redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
+                            redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
+                            redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
+                        }
+                    }
+                    operation.setUpdateTime(new Date());
+                    patMedOperationMapper.updatePatMedOperation(operation);
+                    patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(operation.getOpid());
+                }
             }
         }
         return true;
@@ -1695,6 +1856,7 @@
         Map yeWuXX = (Map) dataMap.get("YeWuXX");
         Map<String, Object> BingRenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("BingRenXX") : null;
         Map<String, Object> JianChaSQ = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JianChaSQ") : null;
+        Map<String, Object> JianChaBG = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JianChaBG") : null;
         List<HashMap<String, Object>> JianChaBWList = ObjectUtils.isNotEmpty(JianChaSQ) ? (List<HashMap<String, Object>>) JianChaSQ.get("JianChaBWList") : null;
         List<HashMap<String, Object>> ZhenDuanList = ObjectUtils.isNotEmpty(JianChaSQ) ? (List<HashMap<String, Object>>) JianChaSQ.get("ZhenDuanList") : null;
         List<HashMap<String, Object>> epai = ObjectUtils.isNotEmpty(BingRenXX) ? (List<HashMap<String, Object>>) BingRenXX.get("DiZhiXXList") : null;
@@ -1788,6 +1950,9 @@
                     e.printStackTrace();
                 }
             }
+        }
+        if (ObjectUtils.isNotEmpty(JianChaBG)) {
+            patMedInspection.setAppliyid(ObjectUtils.isNotEmpty(JianChaBG.get("ShenQingDID")) ? JianChaBG.get("ShenQingDID").toString() : null);
         }
         if (CollectionUtils.isNotEmpty(JianChaBWList)) {
             List<ExternalInspectionJC> externalInspectionJC = JianChaBWList.stream().map(map -> {
@@ -1981,6 +2146,13 @@
                 log.info("鎵嬫湳鐢宠鍏ュ弬绫诲瀷涓猴細{}", type);
                 addOperationInfo(dataMap);
                 return true;
+            case "SM_SQ_ShouShuAP":
+                log.info("鎵嬫湳瀹夋帓鍏ュ弬绫诲瀷涓猴細{}", type);
+                return true;
+            case "SM_SQ_CheXiao":
+                log.info("鎵嬫湳鎾ら攢鍏ュ弬绫诲瀷涓猴細{}", type);
+                cancelOperationInfo(dataMap);
+                return true;
             case "TJ_YW_BaoGaoXX":
                 log.info("浣撴鎶ュ憡鍏ュ弬绫诲瀷涓猴細{}", type);
                 return true;
@@ -2169,4 +2341,100 @@
         }
         return 1;
     }
+
+    //鏂板鎮h�呬笓绉戞。妗堝熀鏈俊鎭�
+    private void genePatSpecificArchive(PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+        String deptCategory = judgeDeptCategory(patMedOuthosp.getDeptcode(), patMedOuthosp.getOrgid());
+
+        boolean isGynecology = "1".equals(deptCategory);  // 鏄惁濡囩
+        boolean isPediatrics = "2".equals(deptCategory);  // 鏄惁鍎跨
+
+        if (isGynecology) {
+            // 璧板绉戞。妗堢敓鎴愰�昏緫
+            PatMaternityArchiveDetail patMaternityArchiveDetail
+                    = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMaternityArchiveDetail.class);
+            patMaternityArchiveDetail.setSourceType("1");
+            patMaternityArchiveDetail.setPhone(patArchive.getTelcode());
+            patMaternityArchiveDetail.setPatid(patArchive.getId());
+            patMaternityArchiveDetail.setPatname(patArchive.getName());
+            patMaternityArchiveDetail.setBirthdate(patArchive.getBirthdate());
+            patMaternityArchiveDetail.setSex(patArchive.getSex());
+            patMaternityArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
+            patMaternityArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
+            patMaternityArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
+            patMaternityArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
+            patMaternityArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
+            patMaternityArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
+            patMaternityArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
+            patMaternityArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
+            patMaternityArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
+            patMaternityArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
+            patMaternityArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
+            patMaternityArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
+            patMaternityArchiveService.insertOrUpdateMaternityArchive(patMaternityArchiveDetail);
+        } else if (isPediatrics) {
+            // 璧板効绉戞。妗堢敓鎴愰�昏緫
+            PatChildArchiveDetail patChildArchiveDetail
+                    = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatChildArchiveDetail.class);
+            patChildArchiveDetail.setSourceType("1");
+            patChildArchiveDetail.setPhone(patArchive.getTelcode());
+            patChildArchiveDetail.setPatid(patArchive.getId());
+            patChildArchiveDetail.setPatname(patArchive.getName());
+            patChildArchiveDetail.setBirthdate(patArchive.getBirthdate());
+            patChildArchiveDetail.setSex(patArchive.getSex());
+//            patChildArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
+            patChildArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
+            patChildArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
+            patChildArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
+            patChildArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
+            patChildArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
+            patChildArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
+            patChildArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
+            patChildArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
+            patChildArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
+            patChildArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
+            patChildArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
+            patChildArchiveService.insertOrUpdateChildArchive(patChildArchiveDetail);
+        } else {
+            // 鏈懡涓厤缃紝涓嶇敓鎴愭。妗�
+        }
+    }
+
+    /**
+     * 鍒ゆ柇褰撳墠绉戝灞炰簬濡囩杩樻槸鍎跨
+     *
+     * @param deptCode 褰撳墠绉戝/鐥呭尯 Code锛屽 "D004"
+     * @param orgid    鍖婚櫌鏈烘瀯ID
+     * @return deptCategory锛�1-濡囩 2-鍎跨锛沶ull-鏈厤缃垨鏈懡涓�
+     */
+    public String judgeDeptCategory(String deptCode, String orgid) {
+        if (StringUtils.isEmpty(deptCode)) {
+            return null;
+        }
+
+        // 浼樺厛鍙栨満鏋勭骇閰嶇疆锛屽彇涓嶅埌鍐嶅彇鍏ㄥ眬閰嶇疆
+        String configValue = configService.selectConfigByKey("sys.dept.category",
+                orgid);
+        if (StringUtils.isEmpty(configValue)) {
+            configValue = configService.selectConfigByKey("sys.dept.category");
+        }
+        if (StringUtils.isEmpty(configValue)) {
+            return null;
+        }
+
+        JSONArray configs = JSON.parseArray(configValue);
+        if (configs == null || configs.isEmpty()) {
+            return null;
+        }
+
+        for (int i = 0; i < configs.size(); i++) {
+            JSONObject cfg = configs.getJSONObject(i);
+            JSONArray deptCodes = cfg.getJSONArray("deptCodes");
+            if (deptCodes != null && deptCodes.contains(deptCode)) {
+                return cfg.getString("deptCategory");
+            }
+        }
+        return null;
+    }
+
 }

--
Gitblit v1.9.3