From a11465387cb67853ef9252a679c43ef2ff75d718 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 24 四月 2026 19:12:52 +0800
Subject: [PATCH] 提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java |  201 ++++++++++++++++++++++++++++---------------------
 1 files changed, 114 insertions(+), 87 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 119a6da..6df1fae 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -40,7 +40,6 @@
 public class ServiceSLTDHealthcareRecordServiceImpl implements IServiceSLTDHealthcareRecordService {
 
     private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
-    public static final String APP_KEY = "ak-zUMiOWhqXiJQWPB1pCbz0pjr";
 
     @Autowired
     private IPatArchiveService patArchiveService;
@@ -71,6 +70,9 @@
 
     @Value("${userPwd}")
     private String userPwd;
+
+    @Value("${lwl_app_key}")
+    private String APP_KEY;
 
     @Override
     public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
@@ -223,17 +225,16 @@
                         String professionalTitleName = getStringValue(diagnosisMap, "professionalTitleName");
                         if (professionalTitleName.contains("鍖诲笀")) {
                             sysUser.setUserType("鍖荤敓");
-                            sysUser.setSearchscope("1");
                         }
                         if (professionalTitleName.contains("鎶�")) {
                             sysUser.setUserType("鎶ゅ+");
-                            sysUser.setSearchscope("2");
                         }
                         sysUser.setTitle(getStringValue(diagnosisMap, "professionalTitleName"));
                     }
                 }
             }
-
+            //濡傛灉鐢ㄦ埛鐨勬偅鑰呰寖鍥翠负绌猴紝鍒欓粯璁や负0
+            if (StringUtils.isEmpty(sysUser.getSearchscope())) sysUser.setSearchscope("0");
             sysUser.setPhonenumber(getStringValue(dataItem, "telephone"));
             sysUser.setUserCode(getStringValue(dataItem, "jobNumber"));
             //璁剧疆鎬у埆
@@ -248,12 +249,13 @@
             sysUser.setCreateBy("admin");
             sysUser.setCreateBy("admin");
             sysUser.setOrgid("" + getLongValue(dataItem, "orgId"));
-//            sysUser.setCampusid("" + getLongValue(dataItem, "cmpusId"));
             BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
             sysUser.setPassword(passwordEncoder.encode(userPwd));
-
             SysUser sysUser1 = sysUser2Mapper.selectUserByUserName(sysUser.getUserName());
             if (ObjectUtils.isNotEmpty(sysUser1)) {
+                //鐢变汉宸ョ淮鎶ょ殑瀛楁鏄笉闇�瑕佹洿鏂扮殑
+                sysUser.setSearchscope(null);
+                sysUser.setPassword(null);
                 sysUser.setUserId(sysUser1.getUserId());
                 sysUser2Mapper.updateUser(sysUser);
             } else {
@@ -262,70 +264,67 @@
 
             // 澶勭悊鐢ㄦ埛涓庨儴闂ㄧ殑鍏崇郴
             List businessDepts = (List<?>) dataItem.get("businessDepts");
-            if (CollectionUtils.isEmpty(businessDepts)) {
-                continue;
-            }
+            if (CollectionUtils.isNotEmpty(businessDepts)) {
+                List<List<String>> deptInfoList = new ArrayList<>();
+                List<List<String>> hospInfoList = new ArrayList<>();
+                log.info("------businessDepts鏄惁鏈夊�硷細{}", businessDepts.size());
+                for (Object businessDept : businessDepts) {
+                    if (businessDept instanceof Map) {
+                        Map<String, Object> businessDeptMap = (Map<String, Object>) businessDept;
+                        log.info("------businessDeptMap鏄惁鏈夊�硷細{}", businessDeptMap);
+                        String hisDeptId = getStringValue(businessDeptMap, "deptId");
+                        log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getOrgId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
+                        //鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode
+                        SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getOrgId());
+                        log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getCampusId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
+                        if (Objects.isNull(sysDept)) continue;
+                        SysUserDept sysUserDept = new SysUserDept();
+                        sysUserDept.setUserId(sysUser.getUserId());
+                        sysUserDept.setDeptType(sysDept.getDeptType());
+                        sysUserDept.setDeptId(sysDept.getDeptId());
+                        sysUserDept.setDeptCode(sysDept.getDeptCode());
+                        sysUserDept.setDeptName(sysDept.getDeptName());
+                        sysUserDept.setOrgid(sysDept.getOrgid());
+                        sysUserDept.setCreateTime(new Date());
+                        sysUserDept.setDelFlag(0L);
 
-            List<List<String>> deptInfoList = new ArrayList<>();
-            List<List<String>> hospInfoList = new ArrayList<>();
-            log.info("------businessDepts鏄惁鏈夊�硷細{}", businessDepts.size());
-            for (Object businessDept : businessDepts) {
-                if (businessDept instanceof Map) {
-                    Map<String, Object> businessDeptMap = (Map<String, Object>) businessDept;
-                    log.info("------businessDeptMap鏄惁鏈夊�硷細{}", businessDeptMap);
-//                    Long hisDeptId = (Long) personnelDeptMap.get("deptId");
-                    String hisDeptId = getStringValue(businessDeptMap, "deptId");
-                    log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getOrgId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
-                    //鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode
-                    SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getOrgId());
-                    log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getCampusId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
-                    if (Objects.isNull(sysDept)) continue;
-                    SysUserDept sysUserDept = new SysUserDept();
-                    sysUserDept.setUserId(sysUser.getUserId());
-                    sysUserDept.setDeptType(sysDept.getDeptType());
-                    sysUserDept.setDeptId(sysDept.getDeptId());
-                    sysUserDept.setDeptCode(sysDept.getDeptCode());
-                    sysUserDept.setDeptName(sysDept.getDeptName());
-                    sysUserDept.setOrgid(sysDept.getOrgid());
-                    sysUserDept.setCreateTime(new Date());
-                    sysUserDept.setDelFlag(0L);
-
-                    //鍒ゆ柇涓�涓嬫槸涓嶆槸宸茬粡瀛樺湪浜�
-                    if (ObjectUtils.isNotEmpty(sysUser1) && ObjectUtils.isNotEmpty(sysDept)) {
-                        SysUserDept sud = new SysUserDept();
-                        sud.setUserId(sysUser1.getUserId());
-                        sud.setDeptId(sysDept.getDeptId());
-                        List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sud);
-                        if (CollectionUtils.isNotEmpty(sysUserDepts)) {
-                            sysUserDept.setId(sysUserDepts.get(0).getId());
-                            sysUserDeptMapper.updateSysUserDept(sysUserDept);
+                        //鍒ゆ柇涓�涓嬬敤鎴�-閮ㄩ棬鍏崇郴鏄笉鏄凡缁忓瓨鍦ㄤ簡锛堟棤璁烘柊鐢ㄦ埛杩樻槸鑰佺敤鎴烽兘闇�瑕佸幓閲嶏級
+                        if (ObjectUtils.isNotEmpty(sysUser.getUserId()) && ObjectUtils.isNotEmpty(sysDept)) {
+                            SysUserDept sud = new SysUserDept();
+                            sud.setUserId(sysUser.getUserId());
+                            sud.setDeptId(sysDept.getDeptId());
+                            sud.setOrgid(sysDept.getOrgid());
+                            List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sud);
+                            if (CollectionUtils.isNotEmpty(sysUserDepts)) {
+                                sysUserDept.setId(sysUserDepts.get(0).getId());
+                                sysUserDeptMapper.updateSysUserDept(sysUserDept);
+                            } else {
+                                sysUserDeptMapper.insertSysUserDept(sysUserDept);
+                            }
                         }
-                    } else {
-                        //涓嶅瓨鍦紝鍒欐柊澧�
-                        sysUserDeptMapper.insertSysUserDept(sysUserDept);
-                    }
-                    if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
-                        hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
-                    } else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
-                        deptInfoList.add(Arrays.asList(sysDept.getDeptCode()));
+                        if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
+                            hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
+                        } else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
+                            deptInfoList.add(Arrays.asList(sysDept.getDeptCode()));
+                        }
                     }
                 }
+                //灏嗛儴闂ㄦ垜鐥呭尯鏀惧埌鎸囧畾瀛楁涓�
+                Gson gson = new Gson();
+                sysUser.setHospInfo(gson.toJson(hospInfoList));
+                sysUser.setDeptInfo(gson.toJson(deptInfoList));
+                sysUser2Mapper.updateUser(sysUser);
             }
-            //灏嗛儴闂ㄦ垜鐥呭尯鏀惧埌鎸囧畾瀛楁涓�
-            Gson gson = new Gson();
-            sysUser.setHospInfo(gson.toJson(hospInfoList));
-            sysUser.setDeptInfo(gson.toJson(deptInfoList));
-            sysUser2Mapper.updateUser(sysUser);
 
             //璁剧疆涓�涓粯璁よ鑹诧紙鍖荤敓瑙掕壊锛�
             List<SysUserRole> userRoleList = new ArrayList();
             SysUserRole sur = new SysUserRole();
             sur.setUserId(sysUser.getUserId());
-            sur.setRoleId(3L);
+            sur.setRoleId(4L);
             sur.setOrgid(sysUser.getOrgid());
 
             //鍏堟煡璇竴涓嬶紝鏄惁瀛樺湪
-            SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(sysUser.getUserId(), 3L);
+            SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(4L, sysUser.getUserId());
             if (ObjectUtils.isNotEmpty(sysUserRole)) continue;
 
             userRoleList.add(sur);
@@ -457,11 +456,21 @@
     }
 
     private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, String campusId) {
-        for (String type : types)
+        // 闂ㄨ瘖(FH0108.01)鍜屾�ヨ瘖(FH0108.03)鍦ㄤ笟鍔′笂鏄悓涓�绫绘暟鎹紝鍏辩敤鍚屼竴涓� resultList銆�
+        // 鑻� types 鍚屾椂鍖呭惈涓よ�咃紝outHospitalDate 浼氳璋冪敤涓ゆ瀵艰嚧閲嶅鍏ュ簱銆�
+        // 鍥犳鍙 types 涓惈鏈変换鎰忎竴涓棬鎬ヨ瘖绫诲瀷锛屽氨鍙鐞嗕竴娆°��
+        boolean outpProcessed = false;
+        for (String type : types) {
             switch (type) {
                 case "FH0108.01":
-                    log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
-                    outHospitalDate(resultList);
+                case "FH0108.03":
+                    if (!outpProcessed) {
+                        log.info("銆恜arseResponseData銆戣В鏋愰棬鎬ヨ瘖鏁版嵁锛宼ypes={}", types);
+                        outHospitalDate(resultList);
+                        outpProcessed = true;
+                    } else {
+                        log.info("銆恜arseResponseData銆戦棬鎬ヨ瘖鏁版嵁宸插鐞嗭紝璺宠繃 type={}", type);
+                    }
                     break;
                 case "FH0109.26":
                     log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
@@ -483,14 +492,11 @@
                     log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌锛堝叾浠栵級鏁版嵁");
                     inHospitalDate(resultList, cry);
                     break;
-//                case "FH0108.03":
-//                    log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
-//                    outHospitalDate(resultList);
-//                    break;
                 default:
                     log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
                     break;
             }
+        }
     }
 
     private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
@@ -544,6 +550,9 @@
         patMedOuthosp.setCreateTime(new Date());
         patMedOuthosp.setOrgid(dto.getOrgId());
         patMedOuthosp.setCampusid(dto.getCampusId());
+        patMedOuthosp.setFuflag("1");
+        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1"))
+            patMedOuthosp.setFuflag("0");
         return patMedOuthosp;
     }
 
@@ -607,37 +616,38 @@
             }
 
         } else if (cry.equals("1")) {
-//           鍑洪櫌鏁版嵁澶勭悊
-            if (CollectionUtils.isEmpty(existingInhosps)) {
-                //濡傛灉涓虹┖锛岃鍏堝垽鏂紝棰勫叆闄㈡槸鍚︽湁鍊硷紝鏈夊�肩殑璇濆垯鏇存柊
+            // 鍑洪櫌鏁版嵁澶勭悊
+            if (CollectionUtils.isNotEmpty(existingInhosps)) {
+                // 宸插瓨鍦ㄥ嚭闄㈣褰曪紝鐩存帴鏇存柊锛堜繚鎸佹渶鏂版暟鎹級
+                patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
+                patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                log.info("鍑洪櫌璁板綍宸插瓨鍦紝鎵ц鏇存柊锛歴erialnum={}, orgid={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
+            } else {
+                // 涓嶅瓨鍦ㄥ嚭闄㈣褰曪紝鍏堟煡棰勫叆闄紙state=3锛夛紝鍐嶆煡鍏ラ櫌锛坰tate=0锛�
                 queryInhosp.setInhospstate("3");
-                log.info("-----patMedInhospList杩涙潵浜嗕笉锛熷叆鍙備负锛歿}", queryInhosp);
+                log.info("-----鏌ヨ棰勫叆闄㈣褰曪紝鍏ュ弬涓猴細{}", queryInhosp);
                 List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
-                log.info("----patMedInhospList杩涙潵浜嗕笉锛熻繑鍙備负锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? null : patMedInhospList.get(0).getSerialnum());
+                log.info("----棰勫叆闄㈡煡璇㈢粨鏋滐細{}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.get(0).getSerialnum());
                 if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-                    //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+                    // 瀛樺湪棰勫叆闄㈣褰曪紝鏇存柊涓哄嚭闄㈢姸鎬�
+                    patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                     patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                    log.info("鐢遍鍏ラ櫌鏇存柊涓哄嚭闄細serialnum={}", patMedInhosp.getSerialnum());
                 } else {
-                    //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
+                    // 鍐嶆煡鍏ラ櫌璁板綍锛坰tate=0锛�
                     queryInhosp.setInhospstate("0");
                     patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+                    log.debug("鍏ラ櫌鏌ヨ缁撴灉锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.size());
                     if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+                        // 瀛樺湪鍏ラ櫌璁板綍锛屾洿鏂颁负鍑洪櫌鐘舵��
+                        patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                         patMedInhospService.updatePatMedInhosp(patMedInhosp);
-                    }
-                }
-
-                //濡傛灉閮戒负绌猴紝鍒欒繘琛屾柊澧�
-                if (CollectionUtils.isEmpty(patMedInhospList)) {
-                    //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
-                    queryInhosp.setInhospstate("0");
-                    log.debug("鍑洪櫌queryInhosp鍏ュ弬涓猴細{}", queryInhosp);
-                    List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
-                    log.debug("鍑洪櫌patMedInhospList杩斿弬涓猴細{}", CollectionUtils.isEmpty(patMedInhosps) ? null : patMedInhosps.size());
-                    if (CollectionUtils.isNotEmpty(patMedInhosps)) {
-                        patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                        log.info("鐢卞叆闄㈡洿鏂颁负鍑洪櫌锛歴erialnum={}", patMedInhosp.getSerialnum());
                     } else {
+                        // 棰勫叆闄㈠拰鍏ラ櫌鍧囦笉瀛樺湪锛岀洿鎺ユ柊澧炲嚭闄㈣褰�
                         try {
                             patMedInhospService.insertPatMedInhosp(patMedInhosp);
+                            log.info("鏂板鍑洪櫌璁板綍锛歴erialnum={}", patMedInhosp.getSerialnum());
                         } catch (org.springframework.dao.DuplicateKeyException e) {
                             log.warn("鍑洪櫌璁板綍宸插瓨鍦紝璺宠繃锛歴erialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
                         }
@@ -695,7 +705,10 @@
         patMedInhosp.setNurseId(dto.getChiefNurseId() == null ? "" : dto.getChiefNurseId().toString());
         patMedInhosp.setNurseName(dto.getChiefNurseName());
         patMedInhosp.setSerialnum(dto.getHealthcareRecordNo());
+        patMedInhosp.setInhospno(dto.getHealthcareRecordNo());
         patMedInhosp.setFuflag("1");
+        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1"))
+            patMedInhosp.setFuflag("0");
         if ("0".equals(cry)) patMedInhosp.setInhospstate("0");
         if ("1".equals(cry)) patMedInhosp.setInhospstate("1");
         if ("3".equals(cry)) patMedInhosp.setInhospstate("3");
@@ -743,9 +756,20 @@
     }
 
     private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
-        PatArchive queryArchive = new PatArchive();
-        queryArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
-        List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);
+        List<PatArchive> existingArchives = null;
+
+        // 浼樺厛鎸� patientno 绮剧‘鏌ラ噸锛屾煡涓嶅埌鍐嶆寜 idcardno 鏌ラ噸锛圓ND鏉′欢浼氭紡鏌ュ悓涓�浜轰笉鍚宲atientno鐨勬儏鍐碉級
+        if (dto.getPatientId() != null) {
+            PatArchive queryByPatientNo = new PatArchive();
+            queryByPatientNo.setPatientno(String.valueOf(dto.getPatientId()));
+            queryByPatientNo.setIdcardno(StringUtils.isNotEmpty(dto.getIdCardNo()) ? dto.getIdCardNo().trim() : null);
+            existingArchives = patArchiveService.selectPatArchiveList(queryByPatientNo);
+        }
+//        if (CollectionUtils.isEmpty(existingArchives) && !StringUtils.isEmpty(dto.getIdCardNo())) {
+//            PatArchive queryByIdCard = new PatArchive();
+//            queryByIdCard.setIdcardno(dto.getIdCardNo().trim());
+//            existingArchives = patArchiveService.selectPatArchiveList(queryByIdCard);
+//        }
 
         PatArchive patArchive = buildPatientArchive(dto);
 
@@ -754,6 +778,8 @@
             log.debug("銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
         } else {
             patArchive.setId(existingArchives.get(0).getId());
+            patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
+            patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
             patArchiveService.updateArchive(patArchive);
             log.debug("銆恜rocessPatientArchive銆戞洿鏂版偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
         }
@@ -763,7 +789,8 @@
 
     private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {
         PatArchive patArchive = new PatArchive();
-        patArchive.setPatientno("" + dto.getPatientId());
+        patArchive.setPatientno(dto.getMedicalRecordNo() == null ? null : String.valueOf(dto.getMedicalRecordNo()));
+        patArchive.setPatidHis(dto.getPatientId() == null ? null : String.valueOf(dto.getPatientId()));
         patArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
         patArchive.setName(dto.getPatientName());
         patArchive.setSourcefrom(2L);

--
Gitblit v1.9.3