From fa132afa3a6942a48002c8e36e9ee47de13ee005 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 26 三月 2025 18:44:45 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |  171 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 152 insertions(+), 19 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 bb2faa7..9fd46d8 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -7,18 +7,21 @@
 import com.smartor.domain.*;
 import com.smartor.mapper.*;
 import com.smartor.service.IServiceExternalService;
-import com.smartor.service.IServiceSubtaskService;
-import org.springframework.beans.factory.annotation.Value;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -42,6 +45,8 @@
     private BaseOrganizationMapper baseOrganizationMapper;
     @Autowired
     private PatArchiveMapper patArchiveMapper;
+    @Autowired
+    private PatArchivecontactMapper patArchivecontactMapper;
     @Autowired
     private PatMedInhospMapper patMedInhospMapper;
     @Autowired
@@ -218,6 +223,7 @@
             info.setGuanXiMC((String) map.get("GuanXiMC"));
             return info;
         }).collect(Collectors.toList());
+        externalInHospPatientInfo.setExternalInHospPatientLiaisonInfos(epli2);
 
         List<ExternalInHospPatientDiagnoseInfo> hospPatientDiagnoseInfos2 = hospPatientDiagnoseInfos.stream().map(map -> {
             ExternalInHospPatientDiagnoseInfo info = new ExternalInHospPatientDiagnoseInfo();
@@ -244,8 +250,12 @@
         Map<String, Object> BingRenXX = (Map<String, Object>) yeWuXX.get("BingRenXX");
         ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
         PatMedInhosp patMedInhosp = new PatMedInhosp();
-        patMedInhosp.setInhospno(externalInHospPatientInfo.getZhuYuanHao());
+        patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
+            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            patMedInhosp1.setTagname(tagname);
+        }
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             Map<String, Object> JiuZhenXX = (Map<String, Object>) yeWuXX.get("JiuZhenXX");
             PatMedInhosp patMedInhosp1 = patMedInhospList.get(0);
@@ -307,9 +317,12 @@
         PatArchive patArchive = addPatArchive(externalInHospPatientInfo, externalInHospPatientAddrInfo, externalInHospPatientLiaisonInfo);
 
         PatMedInhosp patMedInhosp = new PatMedInhosp();
-        patMedInhosp.setInhospno(externalInHospPatientInfo.getZhuYuanHao());
+        patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
-
+        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
+            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            patMedInhosp1.setTagname(tagname);
+        }
         Map<String, Object> JiuZhenXX = (Map<String, Object>) yeWuXX.get("JiuZhenXX");
         PatMedInhosp patMedInhosp1 = new PatMedInhosp();
         if (CollectionUtils.isNotEmpty(patMedInhospList)) patMedInhosp1 = patMedInhospList.get(0);
@@ -322,6 +335,11 @@
         patMedInhosp1.setOperator(JiuZhenXX.get("CaoZuoRXM").toString());
         patMedInhosp1.setOperatorId(JiuZhenXX.get("CaoZuoRID").toString());
         patMedInhosp1.setUpdateTime(new Date());
+        patMedInhosp1.setDrname(ObjectUtils.isNotEmpty(JiuZhenXX.get("ZhuZhiYSXM")) ? JiuZhenXX.get("ZhuZhiYSXM").toString() : null);
+        patMedInhosp1.setDrcode(ObjectUtils.isNotEmpty(JiuZhenXX.get("ZhuZhiYSID")) ? JiuZhenXX.get("ZhuZhiYSID").toString() : null);
+        patMedInhosp1.setNurseName(ObjectUtils.isNotEmpty(JiuZhenXX.get("ZeRenHSXM")) ? JiuZhenXX.get("ZeRenHSXM").toString() : null);
+        patMedInhosp1.setNurseId(ObjectUtils.isNotEmpty(JiuZhenXX.get("ZeRenHSID")) ? JiuZhenXX.get("ZeRenHSID").toString() : null);
+        patMedInhosp1.setBedNo(ObjectUtils.isNotEmpty(JiuZhenXX.get("DangQianCWMC")) ? JiuZhenXX.get("DangQianCWMC").toString() : null);
         patMedInhosp1.setTelcode(patArchive.getTelcode());
         patMedInhosp1.setLeavehospitaldistrictcode(externalInHospPatientInfo.getDangQianBQID());
         patMedInhosp1.setLeavehospitaldistrictname(externalInHospPatientInfo.getDangQianBQMC());
@@ -339,7 +357,7 @@
         patMedInhosp1.setLeaveicd10code(StringUtils.isNotEmpty(patMedInhosp1.getLeaveicd10code()) ? patMedInhosp1.getLeaveicd10code() + "," + hospPatientDiagnoseInfos2.get(0).getZhenDuanID() : hospPatientDiagnoseInfos2.get(0).getZhenDuanID());
         patMedInhosp1.setLeavediagname(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() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
-        patMedInhosp1.setIcd10code(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() + "," + hospPatientDiagnoseInfos2.get(0).getZhenDuanMC() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
+        //     patMedInhosp1.setIcd10code(StringUtils.isNotEmpty(patMedInhosp1.getLeavediagname()) ? patMedInhosp1.getLeavediagname() + "," + hospPatientDiagnoseInfos2.get(0).getZhenDuanMC() : hospPatientDiagnoseInfos2.get(0).getZhenDuanMC());
         patMedInhosp1.setInhospstate("1");
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp1.setUpdateTime(new Date());
@@ -355,7 +373,7 @@
             patMedInhosp1.setPatname(patArchive.getName());
             patMedInhosp1.setOrgid(BingRenXX.get("ZuZhiJGID").toString());
             patMedInhosp1.setPatno(BingRenXX.get("BingRenID").toString());
-            patMedInhosp1.setInhospno(BingRenXX.get("ZhuYuanHao").toString());
+            patMedInhosp1.setInhospno(BingRenXX.get("BingAnHao").toString());
             patMedInhosp1.setSerialnum(BingRenXX.get("BingAnHao").toString());
             patMedInhosp1.setCreateTime(new Date());
             int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
@@ -371,8 +389,12 @@
         Map<String, Object> BingRenXX = (Map<String, Object>) yeWuXX.get("BingRenXX");
         ExternalInHospPatientInfo externalInHospPatientInfo = BeanUtil.mapToBean(BingRenXX, ExternalInHospPatientInfo.class, true);
         PatMedInhosp patMedInhosp = new PatMedInhosp();
-        patMedInhosp.setInhospno(externalInHospPatientInfo.getZhuYuanHao());
+        patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
+            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            patMedInhosp1.setTagname(tagname);
+        }
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             Map<String, Object> JiuZhenXX = (Map<String, Object>) yeWuXX.get("JiuZhenXX");
             PatMedInhosp patMedInhosp1 = patMedInhospList.get(0);
@@ -591,7 +613,7 @@
         patMedOperation.setPatname(externalInHospPatientInfo.getXingMing());
         patMedOperation.setVisitid(null);
         patMedOperation.setSerialnum(externalInHospPatientInfo.getZhuYuanHao());
-        patMedOperation.setInhospno(externalInHospPatientInfo.getZhuYuanHao());
+        patMedOperation.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedOperation.setHospitalname(externalInHospPatientInfo.getZuZhiJGMC());
         patMedOperation.setHospitalcode(externalInHospPatientInfo.getZuZhiJGID());
         patMedOperation.setDeptid(externalOperationInfo.getShouShuKSID());
@@ -614,13 +636,33 @@
                 patMedOperation.setDelFlag("1");
                 //鍚屾椂鍘绘煡璇紝鏄惁鍦╯ubtask涓敓鎴愪换鍔★紝濡傛灉鐢熸垚鍑哄緱绔嬮┈鍒犻櫎
             }
+            patMedOperation.setUpdateTime(new Date());
             patMedOperationMapper.updatePatMedOperation(patMedOperation);
-        } else patMedOperationMapper.insertPatMedOperation(patMedOperation);
+        } else {
+            patMedOperation.setCreateTime(new Date());
+            patMedOperationMapper.insertPatMedOperation(patMedOperation);
+        }
         log.error("-----patMedOperation鐨勪富閿甶d涓猴細{}", patMedOperation.getId());
 
         if (ObjectUtils.isNotEmpty(ssxx)) {
-            Map<String, Object> ShouShuMXList = (Map<String, Object>) ssxx.get("ShouShuMXList");
-            List<ExternalOperationDetail> externalOperationDetails = BeanUtil.mapToBean(ShouShuMXList, List.class, true);
+            List<HashMap<String, Object>> ShouShuMXList = (List<HashMap<String, Object>>) ssxx.get("ShouShuMXList");
+
+            List<ExternalOperationDetail> externalOperationDetails = ShouShuMXList.stream().map(map -> {
+                ExternalOperationDetail info = new ExternalOperationDetail();
+                info.setShouShuMCID((String) map.get("ShouShuMCID"));
+                info.setShouShuMC((String) map.get("ShouShuMC"));
+                info.setZhuShouSBZ((String) map.get("ZhuShouSBZ"));
+                info.setQieKouLBDM((String) map.get("QieKouLBDM"));
+                info.setQieKouLBMC((String) map.get("QieKouLBMC"));
+                info.setShouShuJBDM((String) map.get("ShouShuJBDM"));
+                info.setShouShuJBMC((String) map.get("ShouShuJBMC"));
+                info.setShouShuBW((String) map.get("ShouShuBW"));
+                info.setBiaoZhunBM((String) map.get("BiaoZhunBM"));
+                info.setShouShuMCQZ((String) map.get("ShouShuMCQZ"));
+                info.setShouShuMCHZ((String) map.get("ShouShuMCHZ"));
+                return info;
+            }).collect(Collectors.toList());
+
             //addMianTableFalg鏄惁闇�瑕佸皢涓绘墜鏈殑淇℃伅鏀惧埌PatMedOperation琛ㄤ腑锛堝彧鏈夌涓�涓富鎵嬫湳淇℃伅闇�瑕佹斁锛屽悗闈㈢殑閮戒笉闇�瑕佹斁浜嗭紝涔熷氨鏄锛岀涓�涓斁瀹屽悗锛屽氨瑕佹妸杩欎釜flag鏀规垚false锛�
             Boolean addMianTableFalg = true;
             for (ExternalOperationDetail externalOperationDetail : externalOperationDetails) {
@@ -640,10 +682,11 @@
                     patMedOperation.setOpcode(externalOperationDetail.getShouShuMCID());
                     patMedOperation.setOpdesc(externalOperationDetail.getShouShuMC());
 //                    patMedOperation.setOpid(externalOperationDetail.getShouShuJBDM());
+                    patMedOperation.setUpdateTime(new Date());
                     patMedOperationMapper.updatePatMedOperation(patMedOperation);
                     addMianTableFalg = false;
                 }
-
+                patMedOperationItem.setCreateTime(new Date());
                 patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
             }
         }
@@ -652,12 +695,22 @@
 
     //鏂板鎮h�呭熀鏈俊鎭�
     private PatArchive addPatArchive(ExternalInHospPatientInfo externalInHospPatientInfo, ExternalInHospPatientAddrInfo externalInHospPatientAddrInfo, ExternalInHospPatientLiaisonInfo externalInHospPatientLiaisonInfo) {
+        Date parse = null;
+        String chuShengRQ = externalInHospPatientInfo.getChuShengRQ();
+        if (StringUtils.isNotEmpty(chuShengRQ)) {
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+            try {
+                parse = simpleDateFormat.parse(chuShengRQ);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
         PatArchive patArchive = new PatArchive();
         patArchive.setIdcardno(externalInHospPatientInfo.getZhengJianHM());
         patArchive.setOrgid(externalInHospPatientInfo.getZuZhiJGID());
         List<PatArchive> patArchives = patArchiveMapper.selectPatArchiveList(patArchive);
         patArchive.setPatientno(externalInHospPatientInfo.getJiuZhenKH());
-        patArchive.setBirthdate(externalInHospPatientInfo.getChuShengRQ());
+        patArchive.setBirthdate(parse);
         patArchive.setPatidHis(externalInHospPatientInfo.getBingRenID());
         patArchive.setSourcefrom(1);
         patArchive.setPattype("2");
@@ -676,9 +729,16 @@
             patArchive.setPlaceOfResidence(por.replace("null", ""));
             patArchive.setBirthplace(por.replace("null", ""));
         }
-        patArchive.setBirthdate(externalInHospPatientInfo.getChuShengRQ());
-        patArchive.setAge(externalInHospPatientInfo.getNianLing());
-        patArchive.setAgeUnit(externalInHospPatientInfo.getNianLingDW());
+
+        if (ObjectUtils.isNotEmpty(parse)) {
+            Map<String, String> map = calculateAge(parse.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+            patArchive.setAge(ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+            patArchive.setAgeUnit(map.get("ageUnit"));
+            patArchive.setAge2(ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+            patArchive.setAgeUnit2(map.get("ageUnit2"));
+
+        }
+
         patArchive.setTelcode(externalInHospPatientInfo.getLianXiDH());
         if (StringUtils.isEmpty(externalInHospPatientInfo.getLianXiDH()))
             patArchive.setTelcode(externalInHospPatientInfo.getLianXiRDH());
@@ -686,7 +746,7 @@
         patArchive.setGuid(externalInHospPatientInfo.getZuZhiJGID());
         if (ObjectUtils.isNotEmpty(externalInHospPatientLiaisonInfo))
             patArchive.setRelativetelcode(externalInHospPatientLiaisonInfo.getLianXiRDH());
-        patArchive.setInhospno(externalInHospPatientInfo.getZhuYuanHao());
+        patArchive.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patArchive.setCreateTime(new Date());
         patArchive.setIdcardtype(externalInHospPatientInfo.getZhengJianLXMC());
         if (CollectionUtils.isNotEmpty(patArchives)) {
@@ -700,6 +760,26 @@
             }
         }
         patArchiveMapper.insertPatArchiveSingle(patArchive);
+        //鏂板睘淇℃伅
+        if (ObjectUtils.isNotEmpty(externalInHospPatientInfo.getExternalInHospPatientLiaisonInfos())) {
+            for (ExternalInHospPatientLiaisonInfo external : externalInHospPatientInfo.getExternalInHospPatientLiaisonInfos()) {
+                PatArchivecontact patArchivecontact = new PatArchivecontact();
+                patArchivecontact.setPatid(patArchive.getId());
+                patArchivecontact.setContactname(external.getLianXiRXM());
+                patArchivecontact.setOrgid(patArchive.getOrgid());
+                List<PatArchivecontact> patArchivecontacts = patArchivecontactMapper.selectPatArchivecontactList(patArchivecontact);
+                patArchivecontact.setContactway(external.getLianXiRDH());
+                patArchivecontact.setRelation(external.getGuanXiMC());
+                if (CollectionUtils.isEmpty(patArchivecontacts))
+                    patArchivecontactMapper.insertPatArchivecontact(patArchivecontact);
+                else {
+                    patArchivecontact.setId(patArchivecontacts.get(0).getId());
+                    patArchivecontactMapper.updatePatArchivecontact(patArchivecontact);
+                }
+            }
+        }
+
+
         return patArchive;
     }
 
@@ -707,7 +787,8 @@
     private Boolean addPadInhospInfo(ExternalInHospPatientInfo externalInHospPatientInfo, PatArchive patArchive, ExternalInHospPatientDiagnoseInfo externalInHospPatientDiagnoseInfo) {
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         if (ObjectUtils.isNotEmpty(externalInHospPatientInfo)) {
-            patMedInhosp.setInhospno(externalInHospPatientInfo.getZhuYuanHao());
+            //鍖婚櫌閭h竟璇磋鐢ㄧ梾妗堝彿锛屼笉瑕佺敤浣忛櫌鍙�
+            patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
             patMedInhosp.setSerialnum(externalInHospPatientInfo.getZhuYuanHao());
             patMedInhosp.setHospitalname(externalInHospPatientInfo.getZuZhiJGMC());
             patMedInhosp.setHospitalcode(externalInHospPatientInfo.getZuZhiJGID());
@@ -873,4 +954,56 @@
         return true;
     }
 
+    public Map<String, String> calculateAge(LocalDate birthdate, LocalDate today) {
+        if (birthdate == null || today.isBefore(birthdate)) {
+            return null;
+        }
+        Map<String, String> ageMap = new HashMap<>();
+
+        Period period = Period.between(birthdate, today);
+        long totalDays = ChronoUnit.DAYS.between(birthdate, today);
+        long totalMonths = ChronoUnit.MONTHS.between(birthdate, today);
+
+        int years = period.getYears();
+        int months = period.getMonths();
+        int days = period.getDays();
+
+        String ageUnit;
+        Integer age;
+        String ageUnit2 = null;
+        Integer age2 = null;
+
+        if (totalDays < 30) {
+            // 灏忎簬 1 涓湀锛屾寜澶╄绠�
+            ageUnit = "澶�";
+            age = (int) totalDays;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", null);
+            ageMap.put("ageUnit2", null);
+        } else if (totalMonths < 12) {
+            // 灏忎簬 1 骞达紝鎸夋湀 + 澶╄绠�
+            ageUnit = "鏈�";
+            age = (int) totalMonths;
+            ageUnit2 = "澶�";
+            age2 = days;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", age2 != null ? age2.toString() : null);
+            ageMap.put("ageUnit2", ageUnit2);
+        } else {
+            // 澶т簬 1 骞达紝鎸夊勾 + 鏈堣绠�
+            ageUnit = "宀�";
+            age = years;
+            ageUnit2 = "鏈�";
+            age2 = months;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", age2 != null ? age2.toString() : null);
+            ageMap.put("ageUnit2", ageUnit2);
+        }
+
+        return ageMap;
+    }
+
 }

--
Gitblit v1.9.3