From 138f31f7ed04842abca552dc8eaa912b3191e059 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 28 九月 2026 10:56:49 +0800
Subject: [PATCH] 处理患者再入院状态代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java |   86 +++++++++++++++++++++++++++++++++---------
 1 files changed, 67 insertions(+), 19 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 1ad6fc5..d2d357c 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -8,6 +8,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.core.domain.entity.SysUserRole;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.common.enums.EmergencyLevelEnum;
 import com.smartor.common.enums.ImportFlagEnum;
@@ -85,6 +86,12 @@
 
     @Value("${spring.profiles.active}")
     private String active;
+    @Autowired
+    private ServiceSubtaskServiceImpl serviceSubtaskServiceImpl;
+    @Autowired
+    private ServiceSubtaskMapper serviceSubtaskMapper;
+    @Autowired
+    private PatMedInhospMapper patMedInhospMapper;
 
     @Override
     public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
@@ -690,7 +697,7 @@
         queryInhosp.setSerialnum(StringUtils.trim(patMedInhosp.getSerialnum()));
         queryInhosp.setOrgid(StringUtils.trim(dto.getOrgId()));
         queryInhosp.setInhospstate(cry);
-        log.info("----------------杩欓噷鐨勫叆鍙備负锛歿},{}", queryInhosp.getPatno(), queryInhosp.getSerialnum());
+//        log.info("----------------杩欓噷鐨勫叆鍙備负锛歿},{}", queryInhosp.getPatno(), queryInhosp.getSerialnum());
         List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
 
         if (cry.equals("0")) {
@@ -709,6 +716,44 @@
                     queryInhosp.setInhospstate("1");
                     patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
                     if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+                        //濡傛灉涓嶄负绌猴紝鍒欏皢鍏ラ櫌鏃堕棿杩涜鏇存柊
+                        PatMedInhosp pmOut = patMedInhospList.get(0);
+                        //鏈鍏ラ櫌鏁版嵁锛堣繖閲� existingInhosps 蹇呬负绌猴紝鍙� existingInhosps.get(0) 浼氫笅鏍囪秺鐣岋級
+                        PatMedInhosp pmIn = patMedInhosp;
+                        pmOut.setStarttime(pmIn.getStarttime());
+                        pmOut.setUpdateTime(new Date());
+                        patMedInhospService.updatePatMedInhosp(pmOut);
+                        //鐪佺珛鍚屽痉闇�瑕佸皢寮�濮嬫棩鏈熶笌鍏ラ櫌鏃ユ湡鐩哥瓑鐨勪换鍔★紝鏀规垚涓嶆墽琛�
+                        try {
+                            if ("sltd".equals(active) && DateUtils.isSameDay(pmOut.getStarttime(), pmIn.getEndtime())) {
+                                ServiceSubtask serviceSubtask = new ServiceSubtask();
+                                serviceSubtask.setInhospid(pmOut.getInhospid());
+                                serviceSubtask.setSendstate(4L);
+                                serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+                            }
+                            //閫氳繃鍏ラ櫌鏃堕棿锛屽拰鎮h�呯殑缂栧彿鍘绘煡涓�涓嬪嚭闄㈡椂闂达紝鏄惁瀛樺湪锛屽鏋滃瓨鍦紝鍒欒鎮h�呮槸鍐嶅叆闄㈢殑锛岄渶瑕佹敼鎴愪笉鎵ц
+                            //鍑洪櫌鏃堕棿鍙瘮杈冨埌澶╋紝涓嶆瘮杈冩椂鍒嗙
+                            if (pmIn.getStarttime() != null) {
+                                Date dayStart = DateUtils.truncate(pmIn.getStarttime(), Calendar.DAY_OF_MONTH);
+                                Date dayEnd = DateUtils.addDays(dayStart, 1);
+                                List<PatMedInhosp> outInhosps = patMedInhospMapper.selectOutInhospByPatnoAndOutDate(
+                                        StringUtils.trim(pmIn.getPatno()), dayStart, dayEnd);
+                                if (CollectionUtils.isNotEmpty(outInhosps)) {
+                                    //瀛樺湪鍑洪櫌璁板綍锛岃鏄庤鎮h�呮槸鍐嶅叆闄紝鎶婁笂涓�娆″嚭闄骇鐢熺殑瀛愪换鍔℃敼鎴愪笉鎵ц
+                                    ServiceSubtask outSubtask = new ServiceSubtask();
+                                    outSubtask.setInhospid(outInhosps.get(0).getInhospid());
+                                    outSubtask.setSendstate(4L);
+                                    outSubtask.setRemark("鎮h�呭啀鍏ラ櫌");
+                                    outSubtask.setUpdateTime(new Date());
+                                    serviceSubtaskMapper.updateServiceSubtaskByCondition(outSubtask);
+                                    log.info("鎮h�呭啀鍏ラ櫌锛屽皢涓婃鍑洪櫌璁板綍鐨勫瓙浠诲姟鏀逛负涓嶆墽琛岋細patno={}, 鍑洪櫌inhospid={}, 鍑洪櫌鏃堕棿={}, 鏈鍏ラ櫌鏃堕棿={}",
+                                            pmIn.getPatno(), outInhosps.get(0).getInhospid(), outInhosps.get(0).getEndtime(), pmIn.getStarttime());
+                                }
+                            }
+
+                        } catch (Exception e) {
+                            log.error("灏嗗嚭闄㈡椂闂寸瓑浜庡叆闄㈡椂闂寸殑inhospid鐨勪换鍔℃洿鏂板け璐ヤ簡, inhospid={}", pmOut.getInhospid(), e);
+                        }
                         return;
                     }
                 }
@@ -733,7 +778,7 @@
             } else {
                 // 涓嶅瓨鍦ㄥ嚭闄㈣褰曪紝鍏堟煡棰勫叆闄紙state=3锛夛紝鍐嶆煡鍏ラ櫌锛坰tate=0锛�
                 queryInhosp.setInhospstate("3");
-                log.info("-----鏌ヨ棰勫叆闄㈣褰曪紝鍏ュ弬涓猴細{}", queryInhosp);
+//                log.info("-----鏌ヨ棰勫叆闄㈣褰曪紝鍏ュ弬涓猴細{}", queryInhosp);
                 List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
                 log.info("----棰勫叆闄㈡煡璇㈢粨鏋滐細{}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.get(0).getSerialnum());
                 if (CollectionUtils.isNotEmpty(patMedInhospList)) {
@@ -786,13 +831,14 @@
                     if (CollectionUtils.isEmpty(patMedInhospList3)) {
                         try {
                             //鑾峰彇涓�涓嬪叆闄㈢敵璇峰崟
-                            Map<String, String> headers = buildRequestHeaders();
-                            Map<String, Object> requestParams = new HashMap<>();
-                            requestParams.put("orgId", "20001001");
-                            requestParams.put("20001001", patArchive.getPatidHis());
-                            String result = HttpUtils.sendPostByHeader(sltdPubPath + "/hospitalizedApply/query", new Gson().toJson(requestParams), headers);
-
-
+                            //鏍规嵁 encounterSourceId 鑾峰彇 importanceFlagCode   emergencyLevelCode
+                            if (active.equals("sltd")) {
+                                Map<String, String> applyInfo = hospitalizedApply(dto.getEncounterSourceId(), dto.getOrgId());
+                                if (ObjectUtils.isNotEmpty(applyInfo)) {
+                                    patMedInhosp.setImportanceFlagCode(applyInfo.get("importanceFlagCode"));
+                                    patMedInhosp.setEmergencyLevelCode(applyInfo.get("emergencyLevelCode"));
+                                }
+                            }
                             patMedInhospService.insertPatMedInhosp(patMedInhosp);
                             log.debug("鎴愬姛鎻掑叆棰勫叆闄㈣褰曪細serialnum={}", patMedInhosp.getSerialnum());
                         } catch (Exception e) {
@@ -842,7 +888,7 @@
         if ("1".equals(cry)) {
             patMedInhosp.setInhospstate("1");
             ServiceSLTDDiagnosisResDTO mainDischargeDiagnosis = dto.getMainDischargeDiagnosis();
-            log.info("-----------mainDischargeDiagnosis鐨勫�兼湁浜嗗悧?{}", mainDischargeDiagnosis);
+//            log.info("-----------mainDischargeDiagnosis鐨勫�兼湁浜嗗悧?{}", mainDischargeDiagnosis);
             if (!Objects.isNull(mainDischargeDiagnosis)) {
                 if (mainDischargeDiagnosis.getIsMainDiagnosis() == 1) {
                     patMedInhosp.setLeavediagname(StringUtils.defaultString(mainDischargeDiagnosis.getDiagnosisDictName(), ""));
@@ -871,11 +917,13 @@
         } else {
             setAdmissionInfo(patMedInhosp, dto);
             patMedInhosp.setEncounterSourceId(dto.getEncounterSourceId() == null ? "" : dto.getEncounterSourceId());
-            if (StringUtils.isNotEmpty(dto.getEncounterSourceId())) {
+            if (StringUtils.isNotEmpty(dto.getEncounterSourceId()) && active.equals("sltd")) {
                 //鏍规嵁 encounterSourceId 鑾峰彇 importanceFlagCode   emergencyLevelCode
                 Map<String, String> applyInfo = hospitalizedApply(dto.getEncounterSourceId(), dto.getOrgId());
-                patMedInhosp.setImportanceFlagCode(applyInfo.get("importanceFlagCode"));
-                patMedInhosp.setEmergencyLevelCode(applyInfo.get("emergencyLevelCode"));
+                if (!Objects.isNull(applyInfo)) {
+                    patMedInhosp.setImportanceFlagCode(applyInfo.get("importanceFlagCode"));
+                    patMedInhosp.setEmergencyLevelCode(applyInfo.get("emergencyLevelCode"));
+                }
             }
         }
 
@@ -897,13 +945,13 @@
             }
         }
 
-        if (active.equals("nhfy") || active.equals("sltd")) {
+        //鐩墠鍙湁鐪佺珛鍚屽痉
+        if (active.equals("sltd")) {
             Map<String, String> drugInfoMap = queryMedicalOrders(dto);
             if (drugInfoMap != null && !drugInfoMap.isEmpty()) {
                 patMedInhosp.setMedicalName(drugInfoMap.get("drugItemNames"));
                 patMedInhosp.setMedicalCode(drugInfoMap.get("drugItemIds"));
                 patMedInhosp.setMedicalCompany(drugInfoMap.get("drugManufacturerNames"));
-
                 log.info("鑾峰彇鑽搧淇℃伅鎴愬姛锛氬悕绉�={}, 缂栫爜={}, 鍘傚={}", drugInfoMap.get("drugItemNames"), drugInfoMap.get("drugItemIds"), drugInfoMap.get("drugManufacturerNames"));
             }
         }
@@ -958,7 +1006,7 @@
                 String code = BigDecimal.valueOf(((Number) codeObj).longValue()).toPlainString();
                 if (!"200".equals(code)) {
                     log.error("銆恞ueryMedicalOrders銆戞帴鍙h繑鍥炲け璐ワ紝code={}, message={}", code, responseMap.get("message"));
-                    return result;
+                    return null;
                 }
             }
 
@@ -969,7 +1017,7 @@
 
                 // 閬嶅巻鍖诲槺鍒楄〃锛屾彁鍙栬嵂鍝佷俊鎭�
                 Set<String> processedItemIds = new HashSet<>(); // 鐢ㄤ簬鍘婚噸锛堝彧鏍规嵁 itemId 鍘婚噸锛�
-                
+
                 for (Object item : dataList) {
                     if (item instanceof Map) {
                         Map<String, Object> itemMap = (Map<String, Object>) item;
@@ -995,7 +1043,7 @@
 
                         // 鑷冲皯鏈変竴涓湁鍊硷紝澶勭悊姣忎釜瀛楁
                         String itemName = (itemNameObj != null && StringUtils.isNotEmpty(itemNameObj.toString())) ? itemNameObj.toString() : "";
-                        
+
                         // itemId 鐗规畩澶勭悊锛氶伩鍏嶇瀛﹁鏁版硶锛圙son 鍙兘灏嗘暟瀛楄В鏋愪负 Double锛�
                         String itemId = "";
                         if (itemIdObj != null && StringUtils.isNotEmpty(itemIdObj.toString())) {
@@ -1006,7 +1054,7 @@
                                 itemId = itemIdObj.toString();
                             }
                         }
-                        
+
                         String manufacturerName = (manufacturerNameObj != null && StringUtils.isNotEmpty(manufacturerNameObj.toString())) ? manufacturerNameObj.toString() : "";
 
                         // 鍙牴鎹� itemId 鍘婚噸锛堝悓涓�缂栫爜鐨勮嵂鍝佸彧淇濈暀涓�涓級

--
Gitblit v1.9.3