From b0e0b4c0e342865daefb31eb3b956129fe722c8c Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 24 九月 2025 14:31:33 +0800
Subject: [PATCH] 随访查询7应随访日期(倒序)8应随访日期(正序)

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |  117 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 106 insertions(+), 11 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 b6e641e..603b80f 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;
 
 /**
@@ -70,6 +67,9 @@
 
     @Value("${defaultPwd}")
     private String defaultPwd;
+
+    @Value("${noLongTask}")
+    private List<String> noLongTask;
 
     public Boolean generalInterface(Map dataMap) {
         Map XiaoXiTou = (Map) dataMap.get("XiaoXiTou");
@@ -138,8 +138,12 @@
         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("");
@@ -172,6 +176,26 @@
         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) {
@@ -283,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);
@@ -396,6 +422,7 @@
         //鏂板鎮h�呭熀鏈俊鎭柊澧炴垨淇敼
         PatArchive patArchive = addPatArchive(externalInHospPatientInfo, externalInHospPatientAddrInfo, externalInHospPatientLiaisonInfo);
 
+
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
@@ -467,6 +494,10 @@
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp1.setUpdateTime(new Date());
             patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+            if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) {
+                //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
+                patMedInhosp1.setFuflag("1");
+            }
             int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
@@ -484,6 +515,11 @@
             patMedInhosp1.setPatname(patArchive.getName());
 
             patMedInhosp1.setCreateTime(new Date());
+            if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) {
+                //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
+                patMedInhosp1.setFuflag("1");
+            }
+
             int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
@@ -570,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();
             }
@@ -600,6 +637,10 @@
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp1.setUpdateTime(new Date());
             patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
+            if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) {
+                //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
+                patMedInhosp1.setFuflag("1");
+            }
             int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
@@ -617,6 +658,10 @@
             patMedInhosp1.setPatname(patArchive.getName());
 
             patMedInhosp1.setCreateTime(new Date());
+            if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedInhosp1.getOrgid())) {
+                //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
+                patMedInhosp1.setFuflag("1");
+            }
             int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
@@ -870,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());
@@ -881,6 +939,10 @@
         patMedOuthosp.setAdmitdate(externalJZInfo.getJiuZhenRQ());
         patMedOuthosp.setOrgid(FaSongJGID);
         patMedOuthosp.setHospitalname(FaSongJGMC);
+        patMedOuthosp.setIdcardno(patArchive.getIdcardno());
+
+        //杩欎釜闇�瑕佺瓑HIS閭h竟鍛婅瘔鍙栧摢涓瓧娈碉紝鐜板湪杩樻槸涓嶅鐨�
+        patMedOuthosp.setFudate(externalJZInfo.getSfrq());
 
         for (ExternalDiagnosisInfo externalDiagnosisInfo : externalDiagnosisInfoList) {
             if (externalDiagnosisInfo.getZhenDuanLBMC().equals("涓昏瘖鏂�")) {
@@ -888,6 +950,7 @@
                 patMedOuthosp.setDrcode(externalDiagnosisInfo.getZhenDuanYSID());
                 patMedOuthosp.setDrname(externalDiagnosisInfo.getZhenDuanYSXM());
                 patMedOuthosp.setIcd10code(externalDiagnosisInfo.getIcd10());
+                patMedOuthosp.setFuflag("0");
             }
         }
         for (ExternalWZInfo externalWZInfo : ExternalWZInfoList) {
@@ -902,12 +965,38 @@
         if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
             patMedOuthosp.setId(patMedOuthosps.get(0).getId());
             patMedOuthosp.setUpdateTime(new Date());
+            if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedOuthosp.getOrgid())) {
+                //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁匡紝鐢卞尰鐢熻嚜宸卞幓闅忚锛堜附姘翠腑鍖婚櫌棣栨鎻愬嚭锛�
+                patMedOuthosp.setFuflag("1");
+            }
             i = patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp);
         } else {
             patMedOuthosp.setCreateTime(new Date());
             patMedOuthosp.setUpdateTime(new Date());
+            if (CollectionUtils.isNotEmpty(noLongTask) && noLongTask.contains(patMedOuthosp.getOrgid())) {
+                //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
+                patMedOuthosp.setFuflag("1");
+            }
             i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
         }
+
+//        //鍏堥�氳繃韬唤璇佸拰绉戝鏌ヨ璇ユ偅鑰呮槸鍚︽湁闇�瑕侀殢璁跨殑(鏅畞鎻愬嚭鏉ョ殑)
+//        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;
         }
@@ -939,12 +1028,13 @@
 
             // 4. 鏂板缓(姝ゆ椂鍙墿鍐疯〃锛孭atMedOuthosp娌′簡锛岄渶瑕佹柊寤轰竴涓�)
             patMedOuthospMapper.createPatMedOuthosp(newName, oldName);
-            //璁剧疆鏂拌〃鑷涓婚敭
+
+            //5.璁剧疆鏂拌〃鑷涓婚敭
             patMedOuthospMapper.createPatMedOuthospAutoAdd(oldName);
-            // 5. 璁剧疆鏂拌〃鑷璧峰鍊�
+            //6. 璁剧疆鏂拌〃鑷璧峰鍊�
             patMedOuthospMapper.setAutoIncrement(oldName, maxId + 1);
 
-            // 6. 鏇存柊/鏂板缓瑙嗗浘
+            // 7. 鏇存柊/鏂板缓瑙嗗浘
             // 閲嶆柊鑾峰彇鎵�鏈夎〃鍚嶏紙鍖呭惈鍒氭柊寤虹殑涓昏〃锛�
             List<String> allTables = patMedOuthospMapper.getAllOuthospTableNames();
             StringBuilder sb = new StringBuilder();
@@ -1197,6 +1287,9 @@
         PatArchive patArchive = new PatArchive();
         //濡傛灉鏄垰鍑虹敓鐨勫皬瀛╁瓙锛屾槸娌℃湁韬唤璇佺殑锛屾�庝箞澶勭悊锛燂紵锛燂紵锛燂紵锛燂紵
         patArchive.setIdcardno(externalInHospPatientInfo.getZhengJianHM());
+        //濡傛灉韬唤璇佷负绌虹殑璇濓紝灏辩敤灏辫瘖鍗″彿浠f浛
+        if (StringUtils.isEmpty(externalInHospPatientInfo.getZhengJianHM()))
+            patArchive.setIdcardno(externalInHospPatientInfo.getJiuZhenKH());
         patArchive.setOrgid(externalInHospPatientInfo.getZuZhiJGID());
         List<PatArchive> patArchives = null;
         if (ObjectUtils.isNotEmpty(patArchive.getIdcardno()))
@@ -1309,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());
@@ -1657,7 +1752,7 @@
                 log.info("鑽搧浜у湴浠锋牸鍏ュ弬绫诲瀷涓猴細{}", type);
                 return true;
             case "JZ_MZ_WanChengJZ":
-                log.info("瀹屾垚鎺ヨ瘖鍏ュ弬绫诲瀷涓猴細{}", type);
+                log.info("锛堥棬鎬ヨ瘖锛夊畬鎴愭帴璇婂叆鍙傜被鍨嬩负锛歿}", type);
                 return addFinshJZInfo(dataMap);
             case "JZ_ZY_RuYuanDJ":
                 log.info("鍏ラ櫌鐧昏鍏ュ弬绫诲瀷涓猴細{}", type);

--
Gitblit v1.9.3