From 88ca2e40cdd8b209b7c13f97de9e98564e0e75ba Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 22 七月 2025 16:20:22 +0800
Subject: [PATCH] 代码提交

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java |   76 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 73 insertions(+), 3 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
index 4badfac..fb98ade 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
@@ -20,6 +20,8 @@
 import cn.lihu.jh.module.ecg.service.queuesequence.QueueSequenceService;
 import cn.lihu.jh.module.ecg.webservice.WebServiceClient;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;
@@ -29,12 +31,11 @@
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -199,6 +200,29 @@
 
     @Override
     public PageResult<AppointmentDO> getAppointmentPage(AppointmentPageReqVO pageReqVO) {
+        //1. 鍏堟牴鎹畃atId鍘绘煡
+        PageResult<AppointmentDO> result = appointmentMapper.selectPage(pageReqVO);
+        log.info("--------------PATID    result鐨勫�间负锛歿}", result);
+        if (!result.getList().isEmpty()) {
+            return result;
+        }
+
+        if (StringUtils.isNotEmpty(pageReqVO.getPatId())) {
+            // 2. 鐢� applyNo 鏌ヨ
+            pageReqVO.setApplyNo(pageReqVO.getPatId());
+            pageReqVO.setPatId(null);
+            log.info("------------------ApplyNo    pageReqVO鐨勫�间负锛歿}", pageReqVO);
+            result = appointmentMapper.selectPage(pageReqVO);
+            if (!result.getList().isEmpty()) {
+                return result;
+            }
+
+            // 3. 鐢� episodeId 鏌ヨ
+            pageReqVO.setEpisodeId(pageReqVO.getApplyNo());
+            pageReqVO.setPatId(null);
+            pageReqVO.setApplyNo(null);
+            log.info("-----------EpisodeId    pageReqVO鐨勫�间负锛歿}", pageReqVO);
+        }
         return appointmentMapper.selectPage(pageReqVO);
     }
 
@@ -351,6 +375,23 @@
                 }
                 return null;
             }).ifPresent(appointment::setTolerance);
+
+            // 鍖荤敓寮�鍗曟椂闂�
+            Optional.ofNullable(dataMap.get("controlActProcess")).map(controlActProcess -> (Map<String, Object>) controlActProcess).map(controlActProcess -> (Map<String, Object>) controlActProcess.get("subject")).map(subject -> (Map<String, Object>) subject.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("author")).map(author -> (Map<String, Object>) author.get("time")).map(time -> (String) time.get("value")).map(str -> {
+                try {
+                    return new SimpleDateFormat("yyyyMMddHHmmss").parse(str);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    return null;
+                }
+            }).filter(Objects::nonNull).ifPresent(appointment::setDoctorTime);
+
+            //璁剧疆寮�鍗曞尰鐢熷鍚�
+            Optional.ofNullable(dataMap.get("controlActProcess")).map(controlActProcess -> (Map<String, Object>) controlActProcess).map(controlActProcess -> (Map<String, Object>) controlActProcess.get("subject")).map(subject -> (Map<String, Object>) subject.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("author")).map(author -> (Map<String, Object>) author.get("assignedEntity")).map(assignedEntity -> (Map<String, Object>) assignedEntity.get("assignedPerson")).map(assignedPerson -> (Map<String, Object>) assignedPerson.get("name")).map(name -> (Map<String, Object>) name.get("item")).map(item -> (Map<String, Object>) item.get("part")).map(part -> (String) part.get("value")).ifPresent(appointment::setDoctor);
+
+            //璁剧疆寮�鍗曞尰鐢熺紪鐮�
+            Optional.ofNullable(dataMap.get("controlActProcess")).map(controlActProcess -> (Map<String, Object>) controlActProcess).map(controlActProcess -> (Map<String, Object>) controlActProcess.get("subject")).map(subject -> (Map<String, Object>) subject.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("author")).map(author -> (Map<String, Object>) author.get("assignedEntity")).map(assignedEntity -> (Map<String, Object>) assignedEntity.get("id")).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(appointment::setDoctorCode);
+
 
             // 璁剧疆鎮h�呮潵婧愮被鍨�
             Optional.ofNullable(encounter.get("code")).map(code -> (Map<String, Object>) code).map(code -> (String) code.get("code")).map(Integer::parseInt).ifPresent(appointment::setPatSrc);
@@ -564,6 +605,9 @@
         String status = Optional.ofNullable(dataMap.get("controlActProcess")).map(controlActProcess -> (Map<String, Object>) controlActProcess).map(controlActProcess -> (Map<String, Object>) controlActProcess.get("subject")).map(subject -> (Map<String, Object>) subject.get("placerGroup")).map(placerGroup -> (Map<String, Object>) placerGroup.get("component2")).map(component2 -> (Map<String, Object>) component2.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("component1")).map(component1 -> (Map<String, Object>) component1.get("processStep")).map(processStep -> (Map<String, Object>) processStep.get("code")).map(code -> (String) code.get("code")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
 
         existingAppointment.setStatus(status);
+        if ("3".equals(status)) {
+            existingAppointment.setRegisterDate(new Date());
+        }
         // 灏咥ppointmentDO杞崲涓篈ppointmentSaveReqVO骞舵洿鏂�
         AppointmentSaveReqVO updateReqVO = BeanUtils.toBean(existingAppointment, AppointmentSaveReqVO.class);
         updateAppointment(updateReqVO);
@@ -643,6 +687,32 @@
         appointmentMapper.updateById(appointment);
     }
 
+    @Override
+    public void handleAppointmentStatusUpdate(Map<String, Object> dataMap) {
+        if (dataMap == null) {
+            throw exception(APPOINTMENT_STATUS_REGISTER_UPDATE_FAIL);
+        }
+        //鑾峰彇applyNo
+        Map<String, Object> controlActProcess = (Map<String, Object>) dataMap.get("controlActProcess");
+        Map<String, Object> subject = (Map<String, Object>) controlActProcess.get("subject");
+        Map<String, Object> placerGroup = (Map<String, Object>) subject.get("placerGroup");
+        Map<String, Object> component2 = (Map<String, Object>) placerGroup.get("component2");
+        Map<String, Object> observationRequest = (Map<String, Object>) component2.get("observationRequest");
+        Map<String, Object> id = (Map<String, Object>) observationRequest.get("id");
+        String applyNo = String.valueOf(id.get("extension"));
+
+        //鑾峰彇status
+        Map<String, Object> component1 = (Map<String, Object>) observationRequest.get("component1");
+        Map<String, Object> processStep = (Map<String, Object>) component1.get("processStep");
+        Map<String, Object> codeMap = (Map<String, Object>) processStep.get("code");
+        String status = String.valueOf(codeMap.get("code"));
+
+        //鐘舵�佹洿鏂�
+        Integer i = appointmentMapper.updateStatusByApplyNo(applyNo, status, null);
+        log.info("鐢宠鍗曠櫥璁癮pplyNo:{},鐘舵�乻tatus:{},鏇存柊缁撴灉锛歿}", applyNo, status, i);
+
+    }
+
     public AppointmentDO getByApplyNo(String applyNo) {
         return appointmentMapper.getByApplyNo(applyNo);
     }

--
Gitblit v1.9.3