From 0c515e7b8e3c1c15c615cc831ef3fdb09ea5265e Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 10 十月 2025 10:25:17 +0800
Subject: [PATCH] 修改BUG

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |   97 ++++++++++++++++++++++++++++++++++--------------
 1 files changed, 69 insertions(+), 28 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 b92d0c0..2efbe9f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -24,10 +24,7 @@
 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;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -120,10 +117,10 @@
         }
         if (StringUtils.isNotEmpty(externalDept.getShiJianDM()) && externalDept.getShiJianDM().equals("1")) {
             int i = sysDeptMapper.insertDept(sysDept);
-            log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁鏂板鎴愬姛锛歿}", i);
+            log.info("ServiceExternalServiceImpl---addDeptInfo01鏄惁鏂板鎴愬姛锛歿}", i);
         } else {
             int i = sysDeptMapper.updateDept(sysDept);
-            log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁淇敼鎴愬姛锛歿}", i);
+            log.info("ServiceExternalServiceImpl---addDeptInfo02鏄惁淇敼鎴愬姛锛歿}", i);
         }
         return true;
     }
@@ -141,16 +138,17 @@
         sysUser.setUserName(externalUserInfo.getYongHuDLM());
         sysUser.setOrgid(externalUserInfo.getZuZhiJGID());
         //鏍规嵁userName鍒ゆ柇涓�涓嬶紝鏄笉鏄箣鍓嶆湁鏂板
-        SysUser sysUser1 = sysUserMapper.selectUserByUserName(externalUserInfo.getYongHuDLM());
-
+        SysUser sysUser1 = null;
+        List<SysUser> sysUserList = sysUserMapper.selectUserList(sysUser);
+        if (CollectionUtils.isNotEmpty(sysUserList)) {
+            sysUser1 = sysUserList.get(0);
+            if (sysUserList.size() > 1) sysUser1 = getUser(sysUserList);
+        }
         sysUser.setGuid(externalUserInfo.getZuZhiJGID());
         sysUser.setNickName(externalUserInfo.getYongHuXM());
         sysUser.setUserType("");
         sysUser.setDeptId(null);
         sysUser.setTitle(null);
-
-        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-        sysUser.setPassword(passwordEncoder.encode(defaultPwd));
 
         sysUser.setHisUserId(externalUserInfo.getYongHuID());
         sysUser.setPhonenumber(externalUserInfo.getLianXiDH());
@@ -166,15 +164,38 @@
         }
         sysUser.setBirthday(externalUserInfo.getChuShengRQ());
         if (ObjectUtils.isEmpty(sysUser1)) {
+            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+            sysUser.setPassword(passwordEncoder.encode(defaultPwd));
             int i = sysUserMapper.insertUser(sysUser);
             log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁鏂板鎴愬姛锛歿}", i);
         } else {
+            sysUser.setUserId(sysUser1.getUserId());
             int i = sysUserMapper.updateUser(sysUser);
-            log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁淇敼鎴愬姛锛歿}", i);
+            log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁淇敼鎴愬姛03锛歿}", i);
         }
         return true;
     }
 
+
+    private SysUser getUser(List<SysUser> sysUserList) {
+        SysUser sysUser = null;
+        if (CollectionUtils.isNotEmpty(sysUserList) && sysUserList.size() > 1) {
+            // 鎸塩reate_time闄嶅簭鎺掑簭锛岃幏鍙栨渶鏂扮殑璁板綍
+            List<SysUser> sortedList = sysUserList.stream().sorted(Comparator.comparing(SysUser::getCreateTime).reversed()).collect(Collectors.toList());
+
+            // 绗竴鏉★紙鏈�鏂扮殑锛夎祴鍊肩粰sysUser1
+            sysUser = sortedList.get(0);
+
+            // 鑾峰彇闇�瑕佸垹闄ょ殑ID锛堜粠绗簩鏉″紑濮嬶級
+            List<Long> idsToDelete = sortedList.stream().skip(1).map(SysUser::getUserId).collect(Collectors.toList());
+            Long[] idArray = idsToDelete.toArray(new Long[0]);
+            // 鎵归噺鍒犻櫎鍏朵粬璁板綍
+            if (!idsToDelete.isEmpty()) {
+                sysUserMapper.deleteUserByIds(idArray);
+            }
+        }
+        return sysUser;
+    }
 
     @Override
     public Boolean addOrganInfo(Map dataMap) {
@@ -286,6 +307,8 @@
         externalInHospPatientInfo.setZhuZhiYSID(externalInDeptPatientInfo.getZhuZhiYSID());
         externalInHospPatientInfo.setZhuZhiYSXM(externalInDeptPatientInfo.getZhuZhiYSXM());
         externalInHospPatientInfo.setRuYuanSJ(externalInDeptPatientInfo.getRuYuanSJ());
+        externalInHospPatientInfo.setJingGuanYSID(externalInDeptPatientInfo.getJingGuanYSID());
+        externalInHospPatientInfo.setJingGuanYSXM(externalInDeptPatientInfo.getJingGuanYSXM());
         externalInHospPatientInfo.setLianXiDH(ObjectUtils.isNotEmpty(BingRenXX.get("LianXiDH")) ? BingRenXX.get("LianXiDH").toString() : null);
         externalInHospPatientInfo.setDangQianCWID(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianCWID")) ? BingRenXX.get("DangQianCWID").toString() : null);
         externalInHospPatientInfo.setDangQianCWMC(ObjectUtils.isNotEmpty(BingRenXX.get("DangQianCWMC")) ? BingRenXX.get("DangQianCWMC").toString() : null);
@@ -583,7 +606,8 @@
                 }
             }
             try {
-                patMedInhosp1.setFudate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(SuiFangJH.get("SuiFangRQ").toString()));
+                if (!Objects.isNull(SuiFangJH.get("SuiFangRQ")))
+                    patMedInhosp1.setFudate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(SuiFangJH.get("SuiFangRQ").toString()));
             } catch (ParseException e) {
                 e.printStackTrace();
             }
@@ -891,6 +915,19 @@
         patMedOuthosp.setOuthospno(externalInHospPatientInfo.getBingAnHao());
         patMedOuthosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
         List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
+        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {
+            PatArchive pa = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid());
+            if (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"));
+                pa.setAge2(ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                pa.setAgeUnit2(map.get("ageUnit2"));
+                patMedOuthosp1.setAge(pa.getAge() + pa.getAgeUnit() + pa.getAge2() + pa.getAgeUnit2());
+                patMedOuthosp1.setTelcode(patArchive.getTelcode());
+                patMedOuthosp1.setIdcardno(patArchive.getIdcardno());
+            }
+        }
 
         patMedOuthosp.setPatid(patArchive.getId());
         patMedOuthosp.setPatno(externalInHospPatientInfo.getBingAnHao());
@@ -902,6 +939,7 @@
         patMedOuthosp.setAdmitdate(externalJZInfo.getJiuZhenRQ());
         patMedOuthosp.setOrgid(FaSongJGID);
         patMedOuthosp.setHospitalname(FaSongJGMC);
+        patMedOuthosp.setIdcardno(patArchive.getIdcardno());
 
         //杩欎釜闇�瑕佺瓑HIS閭h竟鍛婅瘔鍙栧摢涓瓧娈碉紝鐜板湪杩樻槸涓嶅鐨�
         patMedOuthosp.setFudate(externalJZInfo.getSfrq());
@@ -942,21 +980,22 @@
             i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
         }
 
-        //鍏堥�氳繃韬唤璇佸拰绉戝鏌ヨ璇ユ偅鑰呮槸鍚︽湁闇�瑕侀殢璁跨殑(鏅畞鎻愬嚭鏉ョ殑)
-        if (patMedOuthosp.getOrgid().equals("47255004333112711A1001")) {
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-            serviceSubtaskVO.setSfzh(patMedOuthosp.getIdcardno());
-            serviceSubtaskVO.setDeptcode(patMedOuthosp.getDeptcode());
-            serviceSubtaskVO.setSendstate(2L);
-            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
-                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-                    serviceSubtask.setSendstate(6L);
-                    serviceSubtask.setRemark("鎮h�呭凡缁忓洖鏉ュ璇�");
-                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                }
-            }
-        }
+//        //鍏堥�氳繃韬唤璇佸拰绉戝鏌ヨ璇ユ偅鑰呮槸鍚︽湁闇�瑕侀殢璁跨殑(鏅畞鎻愬嚭鏉ョ殑)
+//        if (patMedOuthosp.getOrgid().equals("47255004333112711A1001") && StringUtils.isNotEmpty(patMedOuthosp.getIdcardno()) && StringUtils.isNotEmpty(patMedOuthosp.getDeptcode())) {
+//            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+//            serviceSubtaskVO.setSfzh(patMedOuthosp.getIdcardno());
+//            serviceSubtaskVO.setDeptcode(patMedOuthosp.getDeptcode());
+//            serviceSubtaskVO.setSendstate(2L);
+//            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+//            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
+//                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+//                    serviceSubtask.setSendstate(6L);
+//                    serviceSubtask.setRemark("鎮h�呭凡缁忓洖鏉ュ璇�");
+//                    serviceSubtask.setUpdateTime(new Date());
+//                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+//                }
+//            }
+//        }
 
         if (i > 0) {
             return true;
@@ -1363,6 +1402,8 @@
             patMedInhosp.setDrcode(externalInHospPatientInfo.getZhuZhiYSID());
             patMedInhosp.setNurseId(externalInHospPatientInfo.getZeRenHSID());
             patMedInhosp.setNurseName(externalInHospPatientInfo.getZeRenHSXM());
+            patMedInhosp.setManagementDoctor(externalInHospPatientInfo.getJingGuanYSXM());
+            patMedInhosp.setManagementDoctorCode(externalInHospPatientInfo.getJingGuanYSID());
         }
         if (ObjectUtils.isNotEmpty(externalInHospPatientDiagnoseInfo)) {
 //            patMedInhosp.setIcd10code(StringUtils.isNotEmpty(patMedInhosp.getIcd10code()) ? patMedInhosp.getIcd10code() + "," + externalInHospPatientDiagnoseInfo.getZhenDuanID() : externalInHospPatientDiagnoseInfo.getZhenDuanID());

--
Gitblit v1.9.3