From eb3195e397b023cfae1ee4dea7fbc29f1271504f Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期六, 07 六月 2025 15:37:51 +0800
Subject: [PATCH] 代码提交

---
 jh-server/src/main/resources/application-prod.yaml                                                                            |    2 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java                   |  510 +++++++++-----------
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java             |    8 
 jh-server/src/main/resources/application.yaml                                                                                 |    3 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java           |  544 ++++++++++++++++------
 jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java                             |    3 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/enums/HisCheckCodeEnum.java                               |   52 ++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java               |   58 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentSaveReqVO.java |    9 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java           |   64 +-
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java              |   25 
 jh-module-ecg/jh-module-ecg-biz/pom.xml                                                                                       |   29 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java         |   80 +++
 13 files changed, 897 insertions(+), 490 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
index e7e097e..fc083ce 100644
--- a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
+++ b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -17,6 +17,9 @@
     ErrorCode APPOINTMENT_EXIST_TODAY = new ErrorCode(1_010_001_020, "褰撳ぉ棰勭害宸插瓨鍦�");
     ErrorCode APPOINTMENT_HAVE_QUEUED = new ErrorCode(1_010_001_030, "鎮ㄥ凡缁忓湪鎺掗槦涓簡");
     ErrorCode APPOINTMENT_NOT_BILLING = new ErrorCode(1_010_001_040, "鏌ヨ涓嶅埌寮�鍗曚俊鎭�");
+    ErrorCode APPOINTMENT_CREATE_FAIL = new ErrorCode(1_010_001_050, "鐢宠鍗曞垱寤哄け璐�");
+    ErrorCode APPOINTMENT_UPDATE_FAIL = new ErrorCode(1_010_001_060, "鐢宠鍗曟洿鏂板け璐�");
+    ErrorCode APPOINTMENT_STATUS_UPDATE_FAIL = new ErrorCode(1_010_001_070, "鐢宠鍗曠姸鎬佹洿鏂�");
 
     ErrorCode ROOM_NOT_EXISTS = new ErrorCode(1_010_002_000, "璇婂鍜岃瘖鐤楀簥涓嶅瓨鍦�");
     ErrorCode ROOM_NOT_SIT = new ErrorCode(1_010_002_001, "璇烽噸鏂板氨搴�");
diff --git a/jh-module-ecg/jh-module-ecg-biz/pom.xml b/jh-module-ecg/jh-module-ecg-biz/pom.xml
index 32cead0..c9756f8 100644
--- a/jh-module-ecg/jh-module-ecg-biz/pom.xml
+++ b/jh-module-ecg/jh-module-ecg-biz/pom.xml
@@ -146,6 +146,35 @@
             <scope>test</scope>
         </dependency>
 
+        <!-- WebService鐩稿叧渚濊禆 -->
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+            <version>3.5.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http</artifactId>
+            <version>3.5.5</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.xml.ws</groupId>
+            <artifactId>jaxws-api</artifactId>
+            <version>2.3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.jws</groupId>
+            <artifactId>javax.jws-api</artifactId>
+            <version>1.1</version>
+        </dependency>
+
+        <!-- Spring Boot 閰嶇疆澶勭悊鍣� -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
     </dependencies>
 
 </project>
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentSaveReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentSaveReqVO.java
index 6dbc150..52ce8f5 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentSaveReqVO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentSaveReqVO.java
@@ -1,6 +1,7 @@
 package cn.lihu.jh.module.ecg.controller.admin.appointment.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
@@ -21,6 +22,11 @@
     @Schema(description = "灏辫瘖娴佹按鍙�", example = "2024546")
     //@NotEmpty(message = "灏辫瘖娴佹按鍙�")
     private String episodeId;
+
+    /**
+     * 鎮h�呮潵婧愮被鍨�  01闂瘖 02鎬ヨ瘖 03浣撴 04浣忛櫌
+     */
+    private Integer patSrc;
 
     @Schema(description = "鎮h�呯紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034")
     @NotEmpty(message = "鎮h�呯紪鍙蜂笉鑳戒负绌�")
@@ -82,4 +88,7 @@
 
     @Schema(description = "宸蹭粯娆�")
     private Integer paid;
+
+    @TableField(exist = false)
+    private String status;
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java
index 5ffdbc1..5e6efac 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java
@@ -1,8 +1,10 @@
 package cn.lihu.jh.module.ecg.controller.admin.devrent;
 
 import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils;
+import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceDO;
 import cn.lihu.jh.module.ecg.enums.DevStateEnum;
+import cn.lihu.jh.module.ecg.service.appointment.AppointmentService;
 import cn.lihu.jh.module.ecg.service.devmanage.DeviceService;
 import cn.lihu.jh.module.ecg.service.queue.QueueService;
 import lombok.extern.slf4j.Slf4j;
@@ -24,6 +26,7 @@
 import cn.lihu.jh.framework.excel.core.util.ExcelUtils;
 
 import cn.lihu.jh.framework.apilog.core.annotation.ApiAccessLog;
+
 import static cn.lihu.jh.framework.apilog.core.enums.OperateTypeEnum.*;
 
 import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
@@ -49,6 +52,9 @@
 
     @Resource
     private QueueService queueService;
+
+    @Resource
+    private AppointmentService appointmentService;
 
     // 甯歌妫�鏌� 瀹屾垚
     @PostMapping("/routine-finish")
@@ -135,7 +141,7 @@
     @Operation(summary = "閬楀け")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<Long> devLose(@Valid @RequestBody DevRentSaveReqVO loseReqVO) {
-        loseReqVO.setState( DevStateEnum.LOST.getState() );
+        loseReqVO.setState(DevStateEnum.LOST.getState());
         return devRentService.dismantleExceptionOperation(loseReqVO);
     }
 
@@ -143,7 +149,7 @@
     @Operation(summary = "鎹熷潖")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
     public CommonResult<Long> devDamage(@Valid @RequestBody DevRentSaveReqVO damageReqVO) {
-        damageReqVO.setState( DevStateEnum.DAMAGED.getState() );
+        damageReqVO.setState(DevStateEnum.DAMAGED.getState());
         return devRentService.dismantleExceptionOperation(damageReqVO);
     }
 
@@ -180,7 +186,7 @@
 
         DevRentRespVO devRentRespVO = BeanUtils.toBean(devRent, DevRentRespVO.class);
 
-        DeviceDO deviceDO = deviceService.getDevice( devRent.getDevId() );
+        DeviceDO deviceDO = deviceService.getDevice(devRent.getDevId());
         if (null != deviceDO) {
             devRentRespVO.setCategory(deviceDO.getCategory());
             devRentRespVO.setBrand(deviceDO.getBrand());
@@ -202,21 +208,18 @@
     @Operation(summary = "瀵煎嚭瑁呮満鎷嗘満 Excel")
     @PreAuthorize("@ss.hasPermission('ecg:dev-rent:export')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportDevRentExcel(@Valid DevRentPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
+    public void exportDevRentExcel(@Valid DevRentPageReqVO pageReqVO, HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<DevRentDO> list = devRentService.getDevRentPage(pageReqVO).getList();
         // 瀵煎嚭 Excel
-        ExcelUtils.write(response, "瑁呮満鎷嗘満.xls", "鏁版嵁", DevRentRespVO.class,
-                        BeanUtils.toBean(list, DevRentRespVO.class));
+        ExcelUtils.write(response, "瑁呮満鎷嗘満.xls", "鏁版嵁", DevRentRespVO.class, BeanUtils.toBean(list, DevRentRespVO.class));
     }
 
     @GetMapping("/get-free-rent")
     @Operation(summary = "鏍规嵁鎮h�呮垨璁惧, 鑾峰彇宸查鍙栫璧佹儏鍐�")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
-    public CommonResult<DevRentRespVO> getFreeRent( @Valid DevRentSearchReqVO searchReqVO )
-    {
-        DevRentDO devRent = devRentService.getFreeRent( searchReqVO );
+    public CommonResult<DevRentRespVO> getFreeRent(@Valid DevRentSearchReqVO searchReqVO) {
+        DevRentDO devRent = devRentService.getFreeRent(searchReqVO);
         if (null == devRent) {
             return CommonResult.success(null);
         }
@@ -228,16 +231,15 @@
     @GetMapping("/get-ready-rent")
     @Operation(summary = "鑾峰彇宸查鍙栫璧佹儏鍐�")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
-    public CommonResult<DevRentRespVO> getReadyRent( @Valid DevRentSearchReqVO searchReqVO )
-    {
-        DevRentDO devRent = devRentService.getReadyOrCancelledRent( searchReqVO );
+    public CommonResult<DevRentRespVO> getReadyRent(@Valid DevRentSearchReqVO searchReqVO) {
+        DevRentDO devRent = devRentService.getReadyOrCancelledRent(searchReqVO);
         if (null == devRent) {
             return CommonResult.success(null);
         }
 
         DevRentRespVO devRentRespVO = BeanUtils.toBean(devRent, DevRentRespVO.class);
 
-        DeviceDO deviceDO = deviceService.getDevice( devRent.getDevId() );
+        DeviceDO deviceDO = deviceService.getDevice(devRent.getDevId());
         if (null != deviceDO) {
             devRentRespVO.setCategory(deviceDO.getCategory());
             devRentRespVO.setBrand(deviceDO.getBrand());
@@ -250,39 +252,37 @@
     @GetMapping("/get-existing-rent")
     @Operation(summary = "鑾峰彇宸插畨瑁呫�佸凡棰嗙敤鐨勭璧佹儏鍐�")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
-    public CommonResult<DevRentRespVO> getInstalledRent( @Valid DevRentSearchReqVO searchReqVO )
-    {
-        DevRentDO devRent = devRentService.getExistingRent( searchReqVO );
+    public CommonResult<DevRentRespVO> getInstalledRent(@Valid DevRentSearchReqVO searchReqVO) {
+        DevRentDO devRent = devRentService.getExistingRent(searchReqVO);
         if (null == devRent) {
             return CommonResult.success(null);
         }
 
-        DeviceDO deviceDO = deviceService.getDevice( devRent.getDevId() );
+        DeviceDO deviceDO = deviceService.getDevice(devRent.getDevId());
 
         DevRentRespVO devRentRespVO = BeanUtils.toBean(devRent, DevRentRespVO.class);
-        devRentRespVO.setCategory( deviceDO.getCategory() );
-        devRentRespVO.setBrand( deviceDO.getBrand() );
-        devRentRespVO.setModel( deviceDO.getModel() );
-        devRentRespVO.setDevState( devRent.getState() );
+        devRentRespVO.setCategory(deviceDO.getCategory());
+        devRentRespVO.setBrand(deviceDO.getBrand());
+        devRentRespVO.setModel(deviceDO.getModel());
+        devRentRespVO.setDevState(devRent.getState());
         return CommonResult.success(devRentRespVO);
     }
 
     @GetMapping("/get-dismantled-rent")
     @Operation(summary = "鑾峰彇宸叉媶鍗哥璧佹儏鍐�")
     @PreAuthorize("@ss.hasPermission('ecg:doctor:task')")
-    public CommonResult<DevRentRespVO> getDismantledRent( @Valid DevRentSearchReqVO searchReqVO )
-    {
-        DevRentDO devRent = devRentService.getDismantledRent( searchReqVO );
+    public CommonResult<DevRentRespVO> getDismantledRent(@Valid DevRentSearchReqVO searchReqVO) {
+        DevRentDO devRent = devRentService.getDismantledRent(searchReqVO);
         if (null == devRent) {
             return CommonResult.success(null);
         }
 
-        DeviceDO deviceDO = deviceService.getDevice( devRent.getDevId() );
+        DeviceDO deviceDO = deviceService.getDevice(devRent.getDevId());
 
         DevRentRespVO devRentRespVO = BeanUtils.toBean(devRent, DevRentRespVO.class);
-        devRentRespVO.setCategory( deviceDO.getCategory() );
-        devRentRespVO.setBrand( deviceDO.getBrand() );
-        devRentRespVO.setModel( deviceDO.getModel() );
+        devRentRespVO.setCategory(deviceDO.getCategory());
+        devRentRespVO.setBrand(deviceDO.getBrand());
+        devRentRespVO.setModel(deviceDO.getModel());
         return CommonResult.success(devRentRespVO);
     }
 
@@ -296,8 +296,7 @@
         String userHisId = SecurityFrameworkUtils.getLoginUserHisId();
 
         Integer result = devRentService.feeConfirm(rentId, userHisId, userNickname, true);
-        if (1 == result)
-            return CommonResult.error(result, "纭垂澶辫触");
+        if (1 == result) return CommonResult.error(result, "纭垂澶辫触");
 
         return CommonResult.success(result);
     }
@@ -312,8 +311,7 @@
         String userHisId = SecurityFrameworkUtils.getLoginUserHisId();
 
         Integer result = devRentService.feeConfirm(rentId, userHisId, userNickname, false);
-        if (1 == result)
-            return CommonResult.error(result, "鍙栨秷纭垂澶辫触");
+        if (1 == result) return CommonResult.error(result, "鍙栨秷纭垂澶辫触");
 
         return CommonResult.success(result);
     }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java
new file mode 100644
index 0000000..19c49b6
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/external/ExternalController.java
@@ -0,0 +1,80 @@
+package cn.lihu.jh.module.ecg.controller.admin.external;
+
+import cn.lihu.jh.framework.common.pojo.CommonResult;
+import cn.lihu.jh.module.ecg.enums.ActionTypeEnum;
+import cn.lihu.jh.module.ecg.service.appointment.AppointmentService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+import java.util.function.Consumer;
+
+import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
+import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.APPOINTMENT_CREATE_FAIL;
+
+@Tag(name = "渚涚涓夋柟璋冪敤鎺ュ彛")
+@RestController
+@RequestMapping("/ecg/external")
+@Validated
+@Slf4j
+public class ExternalController {
+
+    @Resource
+    private AppointmentService appointmentService;
+
+    /**
+     * 閫氱敤鎺ュ彛
+     * <p>
+     * 鏀寔浠ヤ笅action绫诲瀷锛�
+     * - S0201ECG: 棰勭害鍒涘缓
+     * - S0202ECG: 棰勭害鏇存柊
+     *
+     * @param dataMap 璇锋眰鏁版嵁
+     * @param headers 璇锋眰澶达紝蹇呴』鍖呭惈action瀛楁
+     * @return 澶勭悊缁撴灉
+     */
+    @PermitAll
+    @Operation(summary = "閫氱敤鎺ュ彛")
+    @PostMapping("/generalInterface")
+    public CommonResult<Boolean> generalInterface(
+            @RequestBody @NotNull(message = "璇锋眰鏁版嵁涓嶈兘涓虹┖") Map<String, Object> dataMap,
+            @RequestHeader @NotEmpty(message = "璇锋眰澶翠笉鑳戒负绌�") Map<String, String> headers) {
+        log.info("[generalInterface][寮�濮嬪鐞嗚姹� action({}) dataMap({})]", headers.get("action"), dataMap);
+
+        String actionType = headers.get("action");
+        ActionTypeEnum action = ActionTypeEnum.getByType(actionType);
+        if (action == null) {
+            log.warn("[generalInterface][鏈煡鐨刟ction绫诲瀷 action({})]", actionType);
+            throw exception(APPOINTMENT_CREATE_FAIL);
+        }
+
+        try {
+            // 浣跨敤绛栫暐妯″紡澶勭悊涓嶅悓鐨刟ction
+            Map<ActionTypeEnum, Consumer<Map<String, Object>>> actionHandlers = Map.of(
+                    ActionTypeEnum.S0201ECG, appointmentService::handleAppointmentCreate,
+                    ActionTypeEnum.S0202ECG, appointmentService::handleAppointmentUpdate,
+                    ActionTypeEnum.S040501HIS, appointmentService::handleAppointmentStateUpdate,
+                    ActionTypeEnum.S050401, appointmentService::handleCheckAppointmentUpdate,
+                    ActionTypeEnum.S050501, appointmentService::handleCheckAppointmentUpdate
+            );
+
+            Consumer<Map<String, Object>> handler = actionHandlers.get(action);
+            if (handler == null) {
+                throw exception(APPOINTMENT_CREATE_FAIL);
+            }
+
+            handler.accept(dataMap);
+            return success(true);
+        } catch (Exception e) {
+            throw exception(APPOINTMENT_CREATE_FAIL);
+        }
+    }
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java
index 1dcdebb..62ec996 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java
@@ -11,6 +11,7 @@
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.*;
 import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO;
 
@@ -57,7 +58,7 @@
     private String patName;
     /**
      * 鎮h�呮�у埆
-     *
+     * <p>
      * 鏋氫妇 {@link TODO system_user_sex 瀵瑰簲鐨勭被}
      */
     private Byte patGender;
@@ -115,7 +116,6 @@
     private LocalDateTime bookTime;
     /**
      * 棰勭害妫�鏌ョ被鍨�
-     *
      */
     private Integer bookCheckType;
     /**
@@ -137,4 +137,6 @@
     @TableField(exist = false)
     private Integer bookSeqNum;
 
-}
\ No newline at end of file
+    private String status;
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java
index c943597..98c9d1a 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java
@@ -1,11 +1,11 @@
 package cn.lihu.jh.module.ecg.dal.mysql.appointment;
 
 import cn.lihu.jh.framework.common.pojo.PageResult;
-import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX;
+import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentPageReqVO;
 import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
 import org.apache.ibatis.annotations.Mapper;
-import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -21,12 +21,9 @@
 public interface AppointmentMapper extends BaseMapperX<AppointmentDO> {
 
     default PageResult<AppointmentDO> selectPage(AppointmentPageReqVO reqVO) {
-
         return selectPage(reqVO, new LambdaQueryWrapperX<AppointmentDO>()
-                .eqIfPresent(AppointmentDO::getApplyNo, reqVO.getApplyNo())
-                .eqIfPresent(AppointmentDO::getEpisodeId, reqVO.getEpisodeId())
                 .eqIfPresent(AppointmentDO::getPatId, reqVO.getPatId())
-                .likeIfPresent(AppointmentDO::getPatName, reqVO.getPatName())
+                .eqIfPresent(AppointmentDO::getPatName, reqVO.getPatName())
                 .eqIfPresent(AppointmentDO::getPatGender, reqVO.getPatGender())
                 .eqIfPresent(AppointmentDO::getPatBirthday, reqVO.getPatBirthday())
                 .eqIfPresent(AppointmentDO::getPatMobile, reqVO.getPatMobile())
@@ -37,27 +34,25 @@
                 .eqIfPresent(AppointmentDO::getPatDeptDesc, reqVO.getPatDeptDesc())
                 .eqIfPresent(AppointmentDO::getPatWardCode, reqVO.getPatWardCode())
                 .eqIfPresent(AppointmentDO::getPatWardDesc, reqVO.getPatWardDesc())
-                .eqIfPresent(AppointmentDO::getPatBedNo, reqVO.getPatBedNo())
                 .eqIfPresent(AppointmentDO::getBookDate, reqVO.getBookDate())
                 .eqIfPresent(AppointmentDO::getBookTimeslot, reqVO.getBookTimeslot())
-                .betweenIfPresent(AppointmentDO::getBookTime, reqVO.getBookTime())
                 .eqIfPresent(AppointmentDO::getBookCheckType, reqVO.getBookCheckType())
                 .eqIfPresent(AppointmentDO::getBookSrc, reqVO.getBookSrc())
+                .eqIfPresent(AppointmentDO::getPaid, reqVO.getPaid())
                 .orderByDesc(AppointmentDO::getId));
     }
 
-/*
+
     @Select("select * from lihu.appointment where pat_id = #{patId} and to_days(book_date) = to_days(Now())")
-    List<AppointmentDO> getCurrentPatId(@Param("patId") String patId);
-*/
+    List<AppointmentDO> getCurrentPatId(String patId);
 
     @Select("select * from lihu.appointment where pat_id = #{patId} and book_check_type = #{checkType} and to_days(book_date) = to_days(Now()) limit 1")
-    AppointmentDO getCurrentByPatAndCheckType(@Param("patId") String patId, @Param("checkType") Integer checkType);
-
-    @Select("select * from lihu.appointment where pat_id = #{patId} and book_check_type = #{checkType} and to_days(book_date) = to_days(#{book_date}) limit 1")
-    AppointmentDO getByPatAndCheckTypeAndBookDate(@Param("patId") String patId, @Param("checkType") Integer checkType, @Param("book_date") LocalDate book_date);
+    AppointmentDO getByPatAndCheckTypeAndBookDate(@Param("patId") String patId, @Param("checkType") Integer checkType);
 
     @Select("select * from lihu.appointment where episode_id = #{episodeId} and apply_no = #{applyNo} limit 1")
     AppointmentDO getByEpisodeIdAndApplyNo(@Param("episodeId") String episodeId, @Param("applyNo") String applyNo);
+
+    @Select("select * from lihu.appointment where apply_no = #{applyNo} limit 1")
+    AppointmentDO getByApplyNo(@Param("applyNo") String applyNo);
 }
 
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/enums/HisCheckCodeEnum.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/enums/HisCheckCodeEnum.java
new file mode 100644
index 0000000..c22dcce
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/enums/HisCheckCodeEnum.java
@@ -0,0 +1,52 @@
+package cn.lihu.jh.module.ecg.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * His鐨凜heck_type绫诲瀷鏋氫妇
+ */
+@Getter
+@AllArgsConstructor
+public enum HisCheckCodeEnum {
+    Y691133607("691133607", "100"), Y201605("201605", "200"), Y200327("200327", "300"), Y201652("201652", "400"), Y502490914("502490914", "500"), Y419562119("419562119", "600"), Y201604("201604", "700"), Y1202042("1202042", "800"), Y1202058("1202058", "900"), Y1202065("1202065", "1000"), Y559542128("559542128", "1100"), Y590244511("590244511", "1200"), Y666454217("666454217", "1300"), Y720791490("720791490", "1400"), Y720792077("720792077", "1500");
+
+    /**
+     * 绫诲瀷
+     */
+    private final String code;
+    /**
+     * 鎻忚堪
+     */
+    private final String value;
+
+    /**
+     * 鏍规嵁绫诲瀷鑾峰彇鏋氫妇
+     *
+     * @param type 绫诲瀷
+     * @return 鏋氫妇
+     */
+    public static String getByCode(String code) {
+        for (HisCheckCodeEnum value : values()) {
+            if (value.getCode().equals(code)) {
+                return value.getValue();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鏍规嵁绫诲瀷鑾峰彇鏋氫妇
+     *
+     * @param val 鍊肩被鍨�
+     * @return 鏋氫妇
+     */
+    public static String getByValue(String val) {
+        for (HisCheckCodeEnum value : values()) {
+            if (value.getValue().equals(val)) {
+                return value.getCode();
+            }
+        }
+        return null;
+    }
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java
index 3543317..8d4b3d7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java
@@ -1,11 +1,14 @@
 package cn.lihu.jh.module.ecg.service.appointment;
 
-import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
-import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
 import cn.lihu.jh.framework.common.pojo.PageResult;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentConfirmReqVO;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentPageReqVO;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentSaveReqVO;
+import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 棰勭害 Service 鎺ュ彛
@@ -44,6 +47,45 @@
      */
     AppointmentDO getAppointment(Long id);
 
+
+    /**
+     * 鑾峰緱棰勭害鍒嗛〉
+     *
+     * @param pageReqVO 鍒嗛〉鏌ヨ
+     * @return 棰勭害鍒嗛〉
+     */
+    PageResult<AppointmentDO> getAppointmentPage(AppointmentPageReqVO pageReqVO);
+
+
+    /**
+     * 鐢宠鍗曞垱寤�
+     *
+     * @param dataMap 璇锋眰鏁版嵁
+     * @return 棰勭害缂栧彿
+     */
+    Long handleAppointmentCreate(Map<String, Object> dataMap);
+
+    /**
+     * 鐢宠鍗曟洿鏂�
+     *
+     * @param dataMap 璇锋眰鏁版嵁
+     */
+    void handleAppointmentUpdate(Map<String, Object> dataMap);
+
+    /**
+     * 鐢宠鍗曠姸鎬佹洿鏂�
+     *
+     * @param dataMap 璇锋眰鏁版嵁
+     */
+    void handleAppointmentStateUpdate(Map<String, Object> dataMap);
+
+    /**
+     * 澶勭悊妫�鏌ラ绾︾姸鎬佹柊澧�
+     *
+     * @param dataMap 璇锋眰鏁版嵁
+     */
+    void handleCheckAppointmentUpdate(Map<String, Object> dataMap);
+
     /**
      * 鑾峰緱褰撳ぉ鐨勯绾� 鏍规嵁PatID and CheckType
      *
@@ -55,20 +97,14 @@
     /**
      * 鑾峰緱棰勭害
      *
-     * @param patId 缂栧彿
+     * @param patCode 缂栧彿
      * @return 棰勭害
      */
     List<AppointmentDO> queryAndCreateAppointmentByPatId(String patCode);
 
-    /**
-     * 鑾峰緱棰勭害鍒嗛〉
-     *
-     * @param pageReqVO 鍒嗛〉鏌ヨ
-     * @return 棰勭害鍒嗛〉
-     */
-    PageResult<AppointmentDO> getAppointmentPage(AppointmentPageReqVO pageReqVO);
-
     List<AppointmentDO> getAppointmentExtermal(String patId);
 
     Integer appoitmentConfirm(AppointmentConfirmReqVO appointmentConfirmReqVO);
+
+    public AppointmentDO getByApplyNo(String applyNo);
 }
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 980feb8..13e68f3 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
@@ -1,45 +1,39 @@
 package cn.lihu.jh.module.ecg.service.appointment;
 
+import cn.lihu.jh.framework.common.pojo.PageResult;
 import cn.lihu.jh.framework.common.util.date.DateUtils;
-import cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils;
+import cn.lihu.jh.framework.common.util.object.BeanUtils;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentConfirmReqVO;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentPageReqVO;
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.AppointmentSaveReqVO;
 import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO;
-import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.patient.PatDetails;
 import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
+import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
+import cn.lihu.jh.module.ecg.enums.HisCheckCodeEnum;
 import cn.lihu.jh.module.ecg.feign.RemoteDataService;
-import cn.lihu.jh.module.ecg.feign.RestApiReqBodyVo;
-import cn.lihu.jh.module.ecg.feign.RestApiResult;
-import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
 import cn.lihu.jh.module.ecg.service.config.EcgConfigService;
 import cn.lihu.jh.module.ecg.service.queue.QueueService;
-import cn.lihu.jh.module.ecg.service.queue.QueueServiceTxFunctions;
 import cn.lihu.jh.module.ecg.service.queuesequence.QueueSequenceService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 
-import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
-import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
-import cn.lihu.jh.framework.common.pojo.PageResult;
-import cn.lihu.jh.framework.common.util.object.BeanUtils;
-
-import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
-
 import javax.annotation.Resource;
-import javax.xml.crypto.Data;
-
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
 import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
 
 /**
@@ -71,8 +65,6 @@
     public Long createAppointment(AppointmentSaveReqVO createReqVO) {
         // 鎻掑叆
         AppointmentDO appointment = BeanUtils.toBean(createReqVO, AppointmentDO.class);
-
-        appointment.setBookTime( LocalDateTime.now() );
 
         try {
             appointmentMapper.insert(appointment);
@@ -114,7 +106,7 @@
 
     @Override
     public AppointmentDO getCurAppointmentByPatIdAndCheckType(String patId, Integer checkType) {
-        AppointmentDO appointmentDO = appointmentMapper.getByPatAndCheckTypeAndBookDate( patId, checkType, LocalDate.now() );
+        AppointmentDO appointmentDO = appointmentMapper.getByPatAndCheckTypeAndBookDate(patId, checkType);
         return appointmentDO;
     }
 
@@ -125,23 +117,22 @@
     @Override
     public List<AppointmentDO> queryAndCreateAppointmentByPatId(String patCode) {
         // 浠庡尰闄㈠钩鍙版煡璇�
-        List<AppointmentDO> appointmentExtermalList = getAppointmentExtermal( patCode );
+        List<AppointmentDO> appointmentExtermalList = getAppointmentExtermal(patCode);
 
-        for ( int appointmentIndex = 0; appointmentIndex < appointmentExtermalList.size(); appointmentIndex++ ) {
+        for (int appointmentIndex = 0; appointmentIndex < appointmentExtermalList.size(); appointmentIndex++) {
             AppointmentDO appointmentExtermal = appointmentExtermalList.get(appointmentIndex);
-            if (null == appointmentExtermal )
-                continue;
+            if (null == appointmentExtermal) continue;
 
             // 浠嶥B鏌ヨ棰勭害锛屾槸鍚﹀凡缁忓瓨鍦�
             AppointmentDO appointmentDO = appointmentMapper.getByEpisodeIdAndApplyNo(appointmentExtermal.getEpisodeId(), appointmentExtermal.getApplyNo());
             if (null == appointmentDO) {
                 appointmentMapper.insert(appointmentExtermal);
             } else {
-                appointmentExtermal.setId( appointmentDO.getId() ); // 纭繚 杩斿洖鍊煎寘鍚� appointment id
+                appointmentExtermal.setId(appointmentDO.getId()); // 纭繚 杩斿洖鍊煎寘鍚� appointment id
 
                 // 澶勭悊绗竴娆$‘璁ゆ椂杩樻病鏈夐绾︽椂闂达紝鍐嶆潵纭鏃跺凡鏈夐绾︽椂闂寸殑鎯呭喌
                 if (appointmentDO.getBookDate() != appointmentExtermal.getBookDate()) {
-                    appointmentMapper.updateById( appointmentExtermal );
+                    appointmentMapper.updateById(appointmentExtermal);
                 }
             }
         }
@@ -170,74 +161,77 @@
 
     @Override
     public List<AppointmentDO> getAppointmentExtermal(String patId) {
-        List<AppointmentDO> curAppointDOList = new ArrayList<AppointmentDO>();
-
-        RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
-        if (18 == patId.length()) {
-            reqBodyVo.setSfzh( patId );
-        } else {
-            reqBodyVo.setMzzyh(patId);
-        }
-
-        // QueryRisReportList   queryEcgRequest
-        RestApiResult<AppointmentExternal> result = remoteDataService.httpApi("queryEcgRequest", "ECG", "ECG", reqBodyVo);
-        if (0 == result.getRow().size()) {
-            return curAppointDOList;
-        }
-
-        for (int appointIndex=0; appointIndex < result.getRow().size(); appointIndex++ ) {
-            AppointmentExternal appointmentExternal = result.getRow().get( appointIndex );
-
-            AppointmentDO appointmentDO = BeanUtils.toBean(appointmentExternal, AppointmentDO.class);
-            appointmentDO.setApplyNo( appointmentExternal.getReqIdeApplyno() );
-            appointmentDO.setEpisodeId( appointmentExternal.getEpisodeID() );
-            appointmentDO.setPatSrc( getCorrespondingPatientSource(appointmentExternal.getAdmTypeCode()) );
-            appointmentDO.setPatId(appointmentExternal.getPatientID()); // 鍐呭涓� 韬唤璇佸彿 鎴� 闂ㄨ瘖浣忛櫌鍙�
-            appointmentDO.setPatName(appointmentExternal.getPatName());
-            appointmentDO.setPatGender(Byte.valueOf(appointmentExternal.getPatgender()));
-            appointmentDO.setPatBirthday(DateUtils.ofUTC(appointmentExternal.getEncPatBirthDate()).toLocalDate());
-            appointmentDO.setPatIdentityId(appointmentExternal.getIdentityID());
-            appointmentDO.setPatAddr(appointmentExternal.getAddress());
-            appointmentDO.setPatDeptCode(appointmentExternal.getPatLocDeptCode());
-            appointmentDO.setPatDeptDesc(appointmentExternal.getPatLocDeptDesc());
-            appointmentDO.setPatWardCode(appointmentExternal.getPatLocWardCode());
-            appointmentDO.setPatWardDesc(appointmentExternal.getPatLocWardDesc());
-            appointmentDO.setPatMobile(appointmentExternal.getPhone());
-            appointmentDO.setPatBedNo(appointmentExternal.getEnBedno());
-            appointmentDO.setBookCheckType(getCorrespondingCheckType(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()));
-            appointmentDO.setBookTime(DateUtils.ofUTC(appointmentExternal.getReqAuthoredOn()));  // 寮�鍗曟椂闂�
-            appointmentDO.setBookSrc( 0 );
-
-            // 鍏夊紑鍗曠殑鎯呭喌锛屾病鏈夐绾︽椂闂�
-            if (null != appointmentExternal.getReqExtBooktime() ) {
-                appointmentDO.setBookDate(DateUtils.ofUTC(appointmentExternal.getReqExtBooktime()).toLocalDate());
-                LocalDateTime bookStartTime = DateUtils.ofUTC(appointmentExternal.getReqExtBooktime());
-                LocalDateTime bookEndTime = bookStartTime.plusMinutes( ecgConfigService.getTimeslotLength());
-                appointmentDO.setBookTimeslot((bookStartTime.getHour() * 100 + bookStartTime.getMinute()) * 10000 + bookEndTime.getHour() * 100 + bookEndTime.getMinute());
-            }
-
-            appointmentDO.setPaid( 0 );
-
-            curAppointDOList.add( appointmentDO );
-        }
-
-        return curAppointDOList;
+        return appointmentMapper.getCurrentPatId(patId);
     }
+
+//    @Override
+//    public List<AppointmentDO> getAppointmentExtermal(String patId) {
+//        List<AppointmentDO> curAppointDOList = new ArrayList<AppointmentDO>();
+//
+//        RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
+//        if (18 == patId.length()) {
+//            reqBodyVo.setSfzh( patId );
+//        } else {
+//            reqBodyVo.setMzzyh(patId);
+//        }
+//
+//        // QueryRisReportList   queryEcgRequest
+//        RestApiResult<AppointmentExternal> result = remoteDataService.httpApi("queryEcgRequest", "ECG", "ECG", reqBodyVo);
+//        if (0 == result.getRow().size()) {
+//            return curAppointDOList;
+//        }
+//
+//        for (int appointIndex=0; appointIndex < result.getRow().size(); appointIndex++ ) {
+//            AppointmentExternal appointmentExternal = result.getRow().get( appointIndex );
+//
+//            AppointmentDO appointmentDO = BeanUtils.toBean(appointmentExternal, AppointmentDO.class);
+//            appointmentDO.setApplyNo( appointmentExternal.getReqIdeApplyno() );
+//            appointmentDO.setEpisodeId( appointmentExternal.getEpisodeID() );
+//            appointmentDO.setPatSrc( getCorrespondingPatientSource(appointmentExternal.getAdmTypeCode()) );
+//            appointmentDO.setPatId(appointmentExternal.getPatientID()); // 鍐呭涓� 韬唤璇佸彿 鎴� 闂ㄨ瘖浣忛櫌鍙�
+//            appointmentDO.setPatName(appointmentExternal.getPatName());
+//            appointmentDO.setPatGender(Byte.valueOf(appointmentExternal.getPatgender()));
+//            appointmentDO.setPatBirthday(DateUtils.ofUTC(appointmentExternal.getEncPatBirthDate()).toLocalDate());
+//            appointmentDO.setPatIdentityId(appointmentExternal.getIdentityID());
+//            appointmentDO.setPatAddr(appointmentExternal.getAddress());
+//            appointmentDO.setPatDeptCode(appointmentExternal.getPatLocDeptCode());
+//            appointmentDO.setPatDeptDesc(appointmentExternal.getPatLocDeptDesc());
+//            appointmentDO.setPatWardCode(appointmentExternal.getPatLocWardCode());
+//            appointmentDO.setPatWardDesc(appointmentExternal.getPatLocWardDesc());
+//            appointmentDO.setPatMobile(appointmentExternal.getPhone());
+//            appointmentDO.setPatBedNo(appointmentExternal.getEnBedno());
+//            appointmentDO.setBookCheckType(getCorrespondingCheckType(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()));
+//            appointmentDO.setBookTime(DateUtils.ofUTC(appointmentExternal.getReqAuthoredOn()));  // 寮�鍗曟椂闂�
+//            appointmentDO.setBookSrc( 0 );
+//
+//            // 鍏夊紑鍗曠殑鎯呭喌锛屾病鏈夐绾︽椂闂�
+//            if (null != appointmentExternal.getReqExtBooktime() ) {
+//                appointmentDO.setBookDate(DateUtils.ofUTC(appointmentExternal.getReqExtBooktime()).toLocalDate());
+//                LocalDateTime bookStartTime = DateUtils.ofUTC(appointmentExternal.getReqExtBooktime());
+//                LocalDateTime bookEndTime = bookStartTime.plusMinutes( ecgConfigService.getTimeslotLength());
+//                appointmentDO.setBookTimeslot((bookStartTime.getHour() * 100 + bookStartTime.getMinute()) * 10000 + bookEndTime.getHour() * 100 + bookEndTime.getMinute());
+//            }
+//
+//            appointmentDO.setPaid( 0 );
+//
+//            curAppointDOList.add( appointmentDO );
+//        }
+//
+//        return curAppointDOList;
+//    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer appoitmentConfirm(AppointmentConfirmReqVO confirmReqVO) {
         AppointmentDO appointment = getAppointment(confirmReqVO.getId());
-        if (null == appointment)
-            throw exception(PATIENT_NOT_EXISTS);
+        if (null == appointment) throw exception(PATIENT_NOT_EXISTS);
 
         // 鎵嬪姩棰勭害锛岀洿鎺ヨ缃绾︽棩鏈熶负褰撳ぉ
         if (confirmReqVO.getIsVip() == 1) {
-            appointment.setBookDate( LocalDate.now() );
+            appointment.setBookDate(LocalDate.now());
         }
 
-        if ( !DateUtils.isToday(appointment.getBookDate()) )
-            throw exception( APPOINTMENT_NOT_TODAY);
+        if (!DateUtils.isToday(appointment.getBookDate())) throw exception(APPOINTMENT_NOT_TODAY);
 
 
         Integer newSeqNo = null;
@@ -249,20 +243,20 @@
 
         try {
             QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO();
-            queueSaveReqVO.setApplyNo( appointment.getApplyNo() );
-            queueSaveReqVO.setEpisodeId( appointment.getEpisodeId() );
+            queueSaveReqVO.setApplyNo(appointment.getApplyNo());
+            queueSaveReqVO.setEpisodeId(appointment.getEpisodeId());
             queueSaveReqVO.setAppointId(appointment.getId());
             queueSaveReqVO.setPatId(appointment.getPatId());
             queueSaveReqVO.setPatName(appointment.getPatName());
             queueSaveReqVO.setPatGender(appointment.getPatGender());
             queueSaveReqVO.setBookDate(appointment.getBookDate());
-            queueSaveReqVO.setBookTimeslot( confirmReqVO.getBookTimeslot() ); /*appointment.getBookTimeslot()*/
+            queueSaveReqVO.setBookTimeslot(confirmReqVO.getBookTimeslot()); /*appointment.getBookTimeslot()*/
             queueSaveReqVO.setBookCheckType(appointment.getBookCheckType());
-            queueSaveReqVO.setBookSeqNum( newSeqNo );
-            queueSaveReqVO.setIsVip( confirmReqVO.getIsVip() );
+            queueSaveReqVO.setBookSeqNum(newSeqNo);
+            queueSaveReqVO.setIsVip(confirmReqVO.getIsVip());
             queueSaveReqVO.setPassed((byte) 0);
             queueSaveReqVO.setExpired((byte) 0);
-            queueSaveReqVO.setPatDetails( getPatDetails(appointment) );
+            queueSaveReqVO.setPatDetails(getPatDetails(appointment));
             queueService.queue(queueSaveReqVO);
         } catch (DuplicateKeyException duplicateKeyException) {
             throw exception(APPOINTMENT_HAVE_QUEUED);
@@ -271,67 +265,321 @@
         return newSeqNo;
     }
 
-    private Integer getCorrespondingCheckType(String strPlanDefItemcode) {
-        if (strPlanDefItemcode.equals("691133607"))
-            return 100;
-        else if (strPlanDefItemcode.equals("201605"))
-            return 200;
-        else if (strPlanDefItemcode.equals("200327"))
-            return 300;
-        else if (strPlanDefItemcode.equals("201652"))
-            return 400;
-        else if (strPlanDefItemcode.equals("502490914"))
-            return 500;
-        else if (strPlanDefItemcode.equals("419562119"))
-            return 600;
-        else if (strPlanDefItemcode.equals("201604"))
-            return 700;
-        else if (strPlanDefItemcode.equals("1202042"))
-            return 800;
-        else if (strPlanDefItemcode.equals("1202058"))
-            return 900;
-        else if (strPlanDefItemcode.equals("1202065"))
-            return 1000;
-        else if (strPlanDefItemcode.equals("559542128"))
-            return 1100;
-        else if (strPlanDefItemcode.equals("590244511"))
-            return 1200;
-        else if (strPlanDefItemcode.equals("666454217"))
-            return 1300;
-        else if (strPlanDefItemcode.equals("720791490"))
-            return 1400;
-        else if (strPlanDefItemcode.equals("720792077"))
-            return 1500;
-
-        return 100;
-    }
-
-    private Integer getCorrespondingPatientSource(String admTypeCode) {
-        if (admTypeCode.equals("AMB"))
-            return 1;
-        else if (admTypeCode.equals("EMER"))
-            return 2;
-        else if (admTypeCode.equals("IMP"))
-            return 3;
-        else if (admTypeCode.equals("PHY"))
-            return 4;
-
-        return 0;
-    }
-
     private PatDetails getPatDetails(AppointmentDO appointment) {
         PatDetails patDetails = new PatDetails();
-        patDetails.setAppointmentId( appointment.getId() );
-        patDetails.setId( appointment.getPatId() );
-        patDetails.setName( appointment.getPatName() );
-        patDetails.setMobile( appointment.getPatMobile() );
-        patDetails.setDeptCode( appointment.getPatDeptCode() );
-        patDetails.setDeptDesc( appointment.getPatDeptDesc() );
-        patDetails.setWardCode( appointment.getPatWardCode() );
-        patDetails.setWardDesc( appointment.getPatWardDesc() );
-        patDetails.setBedNo( appointment.getPatBedNo() );
-        patDetails.setSource( appointment.getPatSrc() );
+        patDetails.setAppointmentId(appointment.getId());
+        patDetails.setId(appointment.getPatId());
+        patDetails.setName(appointment.getPatName());
+        patDetails.setMobile(appointment.getPatMobile());
+        patDetails.setDeptCode(appointment.getPatDeptCode());
+        patDetails.setDeptDesc(appointment.getPatDeptDesc());
+        patDetails.setWardCode(appointment.getPatWardCode());
+        patDetails.setWardDesc(appointment.getPatWardDesc());
+        patDetails.setBedNo(appointment.getPatBedNo());
+        patDetails.setSource(appointment.getPatSrc());
         return patDetails;
     }
+
+    @Override
+    public Long handleAppointmentCreate(Map<String, Object> dataMap) {
+        if (dataMap == null) {
+            throw exception(APPOINTMENT_CREATE_FAIL);
+        }
+
+        try {
+            // 鍒涘缓AppointmentDO瀵硅薄
+            AppointmentDO appointment = new AppointmentDO();
+
+            // 浠巇ataMap涓彁鍙栨暟鎹�
+            Map<String, Object> encounter = extractEncounter(dataMap);
+            if (encounter == null) {
+                throw exception(APPOINTMENT_CREATE_FAIL);
+            }
+
+            // 璁剧疆灏辫瘖娴佹按鍙�
+            Optional.ofNullable(encounter.get("id")).map(id -> (Map<String, Object>) id).map(id -> (List<?>) id.get("item")).filter(items -> items.size() > 1).map(items -> (Map<String, Object>) items.get(1)).map(item -> (String) item.get("extension")).ifPresent(appointment::setEpisodeId);
+
+            Optional.ofNullable(encounter.get("location")).map(location -> (Map<String, Object>) location).map(location -> (Map<String, Object>) location.get("serviceDeliveryLocation")).map(serviceDeliveryLocation -> (Map<String, Object>) serviceDeliveryLocation.get("location")).map(location -> (Map<String, Object>) location.get("id")).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(appointment::setPatBedNo);
+
+
+            // 璁剧疆鎮h�呮潵婧愮被鍨�
+            Optional.ofNullable(encounter.get("code")).map(code -> (Map<String, Object>) code).map(code -> (String) code.get("code")).map(Integer::parseInt).ifPresent(appointment::setPatSrc);
+
+            // 璁剧疆鎮h�呬俊鎭�
+            Optional.ofNullable(encounter.get("subject")).map(subject -> (Map<String, Object>) subject).map(subject -> (Map<String, Object>) subject.get("patient")).map(patient -> (Map<String, Object>) patient.get("patientPerson")).ifPresent(patientPerson -> {
+                // 璁剧疆鎮h�匢D
+                Optional.ofNullable(encounter.get("subject")).map(subject -> (Map<String, Object>) subject).map(subject -> (Map<String, Object>) subject.get("patient")).map(patient -> (Map<String, Object>) patient.get("id")).map(id -> (Map<String, Object>) id).map(id -> (List<?>) id.get("item")).filter(items -> items.size() > 1).map(items -> (Map<String, Object>) items.get(1)).map(item -> (String) item.get("extension")).ifPresent(appointment::setPatId);
+
+                // 璁剧疆鎮h�呭鍚�
+                Optional.ofNullable(patientPerson.get("name")).map(name -> (Map<String, Object>) 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::setPatName);
+
+                // 璁剧疆鎮h�呮墜鏈哄拰鐢佃瘽
+                Optional.ofNullable(patientPerson.get("telecom")).map(telecom -> (Map<String, Object>) telecom).map(telecom -> (Map<String, Object>) telecom.get("item")).map(item -> (String) item.get("value")).ifPresent(phone -> {
+                    appointment.setPatMobile(phone);
+                    appointment.setPatPhone(phone);
+                });
+
+                // 璁剧疆鎮h�呮�у埆
+                Optional.ofNullable(patientPerson.get("administrativeGenderCode")).map(genderCode -> (Map<String, Object>) genderCode).map(genderCode -> (String) genderCode.get("code")).map(Byte::parseByte).ifPresent(appointment::setPatGender);
+
+                // 璁剧疆鎮h�呯敓鏃�
+                Optional.ofNullable(patientPerson.get("birthTime")).map(birthTime -> (Map<String, Object>) birthTime).map(birthTime -> (String) birthTime.get("value")).map(birthdayStr -> LocalDate.parse(birthdayStr, DateTimeFormatter.ofPattern("yyyyMMdd"))).ifPresent(appointment::setPatBirthday);
+
+                // 璁剧疆鎮h�呭湴鍧�
+                Optional.ofNullable(patientPerson.get("addr")).map(addr -> (Map<String, Object>) addr).map(addr -> (Map<String, Object>) addr.get("item")).map(item -> (Map<String, Object>) item.get("part")).map(part -> (String) part.get("value")).ifPresent(appointment::setPatAddr);
+
+                // 璁剧疆鎮h�呰韩浠借瘉鍙�
+                Optional.ofNullable(patientPerson.get("id")).map(id -> (Map<String, Object>) id).map(id -> (List<?>) id.get("item")).filter(items -> !items.isEmpty()).map(items -> (Map<String, Object>) items.get(0)).map(item -> (String) item.get("extension")).ifPresent(appointment::setPatIdentityId);
+            });
+
+            // 璁剧疆绉戝鍜岀梾鍖轰俊鎭�
+            Optional.ofNullable(encounter.get("location")).map(location -> (Map<String, Object>) location).map(location -> (Map<String, Object>) location.get("serviceDeliveryLocation")).map(location -> (Map<String, Object>) location.get("serviceProviderOrganization")).ifPresent(org -> {
+                // 璁剧疆绉戝浠g爜鍜屽悕绉�
+                Optional.ofNullable(org.get("id")).map(id -> (Map<String, Object>) id).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(appointment::setPatDeptCode);
+
+                Optional.ofNullable(org.get("name")).map(name -> (Map<String, Object>) 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::setPatDeptDesc);
+
+                // 璁剧疆鐥呭尯浠g爜鍜屽悕绉�
+                Optional.ofNullable(org.get("asOrganizationPartOf")).map(wardOrg -> (Map<String, Object>) wardOrg).map(wardOrg -> (Map<String, Object>) wardOrg.get("wholeOrganization")).ifPresent(wardOrg -> {
+                    Optional.ofNullable(wardOrg.get("id")).map(id -> (Map<String, Object>) id).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(appointment::setPatWardCode);
+
+                    Optional.ofNullable(wardOrg.get("name")).map(name -> (Map<String, Object>) 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::setPatWardDesc);
+                });
+            });
+
+            // 璁剧疆鏀粯鐘舵��
+            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("zdy")).map(zdy -> {
+                Object payStatus = zdy.get("PayStatus");
+                if (payStatus != null) {
+                    try {
+                        return Integer.parseInt(payStatus.toString());
+                    } catch (NumberFormatException e) {
+                        log.warn("PayStatus杞崲澶辫触: {}", payStatus);
+                        return null;
+                    }
+                }
+                return null;
+            }).ifPresent(appointment::setPaid);
+            // 璁剧疆鐢宠鍗曞彿
+            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("id")).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(appointment::setApplyNo);
+
+            //璁剧疆妫�鏌ョ被鍨�
+//            String checkType = Optional.ofNullable(dataMap.get("controlActProcess")).map(controlActProcess -> (Map<String, Object>) controlActProcess).map(controlActProcess -> (Map<String, Object>) controlActProcess.get("component2")).map(component2 -> (Map<String, Object>) component2.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("code")).map(code -> (String) code.get("code")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
+            String checkType = 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("component2")).map(component2 -> (Map<String, Object>) component2.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("code")).map(code -> (String) code.get("code")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
+            if (checkType != null || checkType != "")
+                appointment.setBookCheckType(Integer.valueOf(HisCheckCodeEnum.getByCode(checkType.substring(1))));
+
+            // 灏咥ppointmentDO杞崲涓篈ppointmentSaveReqVO骞朵繚瀛�
+            AppointmentSaveReqVO saveReqVO = BeanUtils.toBean(appointment, AppointmentSaveReqVO.class);
+            return createAppointment(saveReqVO);
+        } catch (Exception e) {
+            log.error("[handleAppointmentCreate][澶勭悊棰勭害鍒涘缓澶辫触 dataMap({})]", dataMap, e);
+            throw exception(APPOINTMENT_CREATE_FAIL);
+        }
+    }
+
+    @Override
+    public void handleAppointmentUpdate(Map<String, Object> dataMap) {
+        if (dataMap == null) {
+            throw exception(APPOINTMENT_UPDATE_FAIL);
+        }
+
+        try {
+            // 浠巇ataMap涓彁鍙栫敵璇峰崟鍙�
+            String applyNo = 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("id")).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
+
+            // 鏌ヨ鐜版湁棰勭害璁板綍
+            AppointmentDO existingAppointment = appointmentMapper.getByApplyNo(applyNo);
+
+            // 濡傛灉璁板綍涓嶅瓨鍦紝鍒欒皟鐢╤andleAppointmentCreate杩涜鏂板
+            if (existingAppointment == null) {
+                handleAppointmentCreate(dataMap);
+                return;
+            }
+
+            // 浠巇ataMap涓彁鍙栨暟鎹�
+            Map<String, Object> encounter = extractEncounter(dataMap);
+            if (encounter == null) {
+                throw exception(APPOINTMENT_CREATE_FAIL);
+            }
+
+            // 鏇存柊灏辫瘖娴佹按鍙�
+            Optional.ofNullable(encounter.get("id")).map(id -> (Map<String, Object>) id).map(id -> (List<?>) id.get("item")).filter(items -> items.size() > 1).map(items -> (Map<String, Object>) items.get(1)).map(item -> (String) item.get("extension")).ifPresent(existingAppointment::setEpisodeId);
+
+            // 璁剧疆搴婁綅鍙�
+            Optional.ofNullable(encounter.get("location")).map(location -> (Map<String, Object>) location).map(location -> (Map<String, Object>) location.get("serviceDeliveryLocation")).map(serviceDeliveryLocation -> (Map<String, Object>) serviceDeliveryLocation.get("location")).map(location -> (Map<String, Object>) location.get("id")).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(existingAppointment::setPatBedNo);
+
+
+            // 鏇存柊鎮h�呮潵婧愮被鍨�
+            Optional.ofNullable(encounter.get("code")).map(code -> (Map<String, Object>) code).map(code -> (String) code.get("code")).map(Integer::parseInt).ifPresent(existingAppointment::setPatSrc);
+
+            // 鏇存柊鎮h�呬俊鎭�
+            Optional.ofNullable(encounter.get("subject")).map(subject -> (Map<String, Object>) subject).map(subject -> (Map<String, Object>) subject.get("patient")).map(patient -> (Map<String, Object>) patient.get("patientPerson")).ifPresent(patientPerson -> {
+                // 鏇存柊鎮h�匢D
+                Optional.ofNullable(encounter.get("subject")).map(subject -> (Map<String, Object>) subject).map(subject -> (Map<String, Object>) subject.get("patient")).map(patient -> (Map<String, Object>) patient.get("id")).map(id -> (Map<String, Object>) id).map(id -> (List<?>) id.get("item")).filter(items -> items.size() > 1).map(items -> (Map<String, Object>) items.get(1)).map(item -> (String) item.get("extension")).ifPresent(existingAppointment::setPatId);
+
+                // 鏇存柊鎮h�呭鍚�
+                Optional.ofNullable(patientPerson.get("name")).map(name -> (Map<String, Object>) name).map(name -> (Map<String, Object>) name.get("item")).map(item -> (Map<String, Object>) item.get("part")).map(part -> (String) part.get("value")).ifPresent(existingAppointment::setPatName);
+
+                // 鏇存柊鎮h�呮墜鏈哄拰鐢佃瘽
+                Optional.ofNullable(patientPerson.get("telecom")).map(telecom -> (Map<String, Object>) telecom).map(telecom -> (Map<String, Object>) telecom.get("item")).map(item -> (String) item.get("value")).ifPresent(phone -> {
+                    existingAppointment.setPatMobile(phone);
+                    existingAppointment.setPatPhone(phone);
+                });
+
+                // 鏇存柊鎮h�呮�у埆
+                Optional.ofNullable(patientPerson.get("administrativeGenderCode")).map(genderCode -> (Map<String, Object>) genderCode).map(genderCode -> (String) genderCode.get("code")).map(Byte::parseByte).ifPresent(existingAppointment::setPatGender);
+
+                // 鏇存柊鎮h�呯敓鏃�
+                Optional.ofNullable(patientPerson.get("birthTime")).map(birthTime -> (Map<String, Object>) birthTime).map(birthTime -> (String) birthTime.get("value")).map(birthdayStr -> LocalDate.parse(birthdayStr, DateTimeFormatter.ofPattern("yyyyMMdd"))).ifPresent(existingAppointment::setPatBirthday);
+
+                // 鏇存柊鎮h�呭湴鍧�
+                Optional.ofNullable(patientPerson.get("addr")).map(addr -> (Map<String, Object>) addr).map(addr -> (Map<String, Object>) addr.get("item")).map(item -> (Map<String, Object>) item.get("part")).map(part -> (String) part.get("value")).ifPresent(existingAppointment::setPatAddr);
+
+                // 鏇存柊鎮h�呰韩浠借瘉鍙�
+                Optional.ofNullable(patientPerson.get("id")).map(id -> (Map<String, Object>) id).map(id -> (List<?>) id.get("item")).filter(items -> !items.isEmpty()).map(items -> (Map<String, Object>) items.get(0)).map(item -> (String) item.get("extension")).ifPresent(existingAppointment::setPatIdentityId);
+            });
+
+            // 鏇存柊绉戝鍜岀梾鍖轰俊鎭�
+            Optional.ofNullable(encounter.get("location")).map(location -> (Map<String, Object>) location).map(location -> (Map<String, Object>) location.get("serviceDeliveryLocation")).map(location -> (Map<String, Object>) location.get("serviceProviderOrganization")).ifPresent(org -> {
+                // 鏇存柊绉戝浠g爜鍜屽悕绉�
+                Optional.ofNullable(org.get("id")).map(id -> (Map<String, Object>) id).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(existingAppointment::setPatDeptCode);
+
+                Optional.ofNullable(org.get("name")).map(name -> (Map<String, Object>) name).map(name -> (Map<String, Object>) name.get("item")).map(item -> (Map<String, Object>) item.get("part")).map(part -> (String) part.get("value")).ifPresent(existingAppointment::setPatDeptDesc);
+
+                // 鏇存柊鐥呭尯浠g爜鍜屽悕绉�
+                Optional.ofNullable(org.get("asOrganizationPartOf")).map(wardOrg -> (Map<String, Object>) wardOrg).map(wardOrg -> (Map<String, Object>) wardOrg.get("wholeOrganization")).ifPresent(wardOrg -> {
+                    Optional.ofNullable(wardOrg.get("id")).map(id -> (Map<String, Object>) id).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).ifPresent(existingAppointment::setPatWardCode);
+
+                    Optional.ofNullable(wardOrg.get("name")).map(name -> (Map<String, Object>) name).map(name -> (Map<String, Object>) name.get("item")).map(item -> (Map<String, Object>) item.get("part")).map(part -> (String) part.get("value")).ifPresent(existingAppointment::setPatWardDesc);
+                });
+            });
+
+            // 鏇存柊鏀粯鐘舵��
+            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("zdy")).map(zdy -> {
+                Object payStatus = zdy.get("PayStatus");
+                if (payStatus != null) {
+                    try {
+                        return Integer.parseInt(payStatus.toString());
+                    } catch (NumberFormatException e) {
+                        log.warn("PayStatus杞崲澶辫触: {}", payStatus);
+                        return null;
+                    }
+                }
+                return null;
+            }).ifPresent(existingAppointment::setPaid);
+            //璁剧疆妫�鏌ョ被鍨�
+            String checkType = 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("component2")).map(component2 -> (Map<String, Object>) component2.get("observationRequest")).map(observationRequest -> (Map<String, Object>) observationRequest.get("code")).map(code -> (String) code.get("code")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
+            if (checkType != null || checkType != "")
+                existingAppointment.setBookCheckType(Integer.valueOf(HisCheckCodeEnum.getByCode(checkType.substring(1))));
+
+            // 灏咥ppointmentDO杞崲涓篈ppointmentSaveReqVO骞舵洿鏂�
+            AppointmentSaveReqVO updateReqVO = BeanUtils.toBean(existingAppointment, AppointmentSaveReqVO.class);
+            updateAppointment(updateReqVO);
+        } catch (Exception e) {
+            log.error("[handleAppointmentUpdate][鐢宠鍗曟洿鏂板け璐� dataMap({})]", dataMap, e);
+            throw exception(APPOINTMENT_UPDATE_FAIL);
+        }
+    }
+
+    @Override
+    public void handleAppointmentStateUpdate(Map<String, Object> dataMap) {
+        if (dataMap == null) {
+            throw exception(APPOINTMENT_STATUS_UPDATE_FAIL);
+        }
+        // 浠巇ataMap涓彁鍙栫敵璇峰崟鍙�
+        String applyNo = 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("id")).map(id -> (Map<String, Object>) id.get("item")).map(item -> (String) item.get("extension")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
+
+        // 鏌ヨ鐜版湁棰勭害璁板綍
+        AppointmentDO existingAppointment = appointmentMapper.getByApplyNo(applyNo);
+
+        // 濡傛灉璁板綍涓嶅瓨鍦紝鍒欒皟鐢╤andleAppointmentCreate杩涜鏂板
+        if (existingAppointment == null) {
+            handleAppointmentCreate(dataMap);
+            return;
+        }
+
+
+        // 浠巇ataMap涓彁鍙栫敵璇峰崟鍙�
+        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 -> (Map<String, Object>) code.get("displayName")).map(displayName -> (String) displayName.get("value")).orElseThrow(() -> exception(APPOINTMENT_CREATE_FAIL));
+
+        existingAppointment.setStatus(status);
+        // 灏咥ppointmentDO杞崲涓篈ppointmentSaveReqVO骞舵洿鏂�
+        AppointmentSaveReqVO updateReqVO = BeanUtils.toBean(existingAppointment, AppointmentSaveReqVO.class);
+        updateAppointment(updateReqVO);
+    }
+
+
+    /**
+     * 浠巇ataMap涓彁鍙杄ncounter鏁版嵁
+     */
+    private Map<String, Object> extractEncounter(Map<String, Object> dataMap) {
+        return 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("componentOf1")).map(componentOf1 -> (Map<String, Object>) componentOf1.get("encounter")).orElse(null);
+    }
+
+    @Override
+    public void handleCheckAppointmentUpdate(Map<String, Object> dataMap) {
+        // 浠巇ataMap涓幏鍙朿ontrolActProcess
+        Map<String, Object> controlActProcess = (Map<String, Object>) dataMap.get("controlActProcess");
+        Map<String, Object> subject = (Map<String, Object>) controlActProcess.get("subject");
+        Map<String, Object> actAppointment = (Map<String, Object>) subject.get("actAppointment");
+
+        // 鑾峰彇鐢宠缂栧彿
+        List<Map<String, Object>> referencedOrders = (List<Map<String, Object>>) actAppointment.get("referencedOrder");
+        String applyNo = null;
+        if (!CollectionUtils.isEmpty(referencedOrders)) {
+            Map<String, Object> actOrder = (Map<String, Object>) referencedOrders.get(0).get("actOrder");
+            Map<String, Object> id = (Map<String, Object>) actOrder.get("id");
+            applyNo = (String) id.get("extension");
+        }
+
+        if (applyNo == null) {
+            log.warn("[handleCheckAppointmentUpdate][鏈壘鍒扮敵璇风紪鍙穄");
+            return;
+        }
+
+        // 鏍规嵁applyNo鏌ヨ棰勭害璁板綍
+        AppointmentDO appointment = appointmentMapper.getByApplyNo(applyNo);
+        if (appointment == null) {
+            log.warn("[handleCheckAppointmentUpdate][鏈壘鍒伴绾﹁褰� applyNo({})]", applyNo);
+            return;
+        }
+
+        // 鑾峰彇棰勭害鏃堕棿
+        Map<String, Object> effectiveTime = (Map<String, Object>) actAppointment.get("effectiveTime");
+        Map<String, Object> any = (Map<String, Object>) effectiveTime.get("any");
+        String bookTimeStr = (String) any.get("value");
+
+        // 鑾峰彇棰勭害鏉ユ簮
+        Map<String, Object> code = (Map<String, Object>) actAppointment.get("code");
+        String bookSrc = (String) code.get("code");
+
+        // 瑙f瀽棰勭害鏃堕棿
+        LocalDateTime bookTime = LocalDateTime.parse(bookTimeStr, DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+        LocalDate bookDate = bookTime.toLocalDate();
+
+        // 鑾峰彇鏃堕棿娈�
+        String timeRange = (String) ((Map<String, Object>) actAppointment.get("ZDY")).get("time");
+        String[] time1 = timeRange.split(" ");
+        String[] times = time1[1].split("-");
+        String startTime = times[0].trim();
+        String endTime = times[1].trim();
+
+        // 杞崲鏃堕棿娈垫牸寮忎负hhmmhhmm
+        int bookTimeslot = Integer.parseInt(startTime.replace(":", "")) * 10000 + Integer.parseInt(endTime.replace(":", ""));
+
+        // 鏇存柊棰勭害淇℃伅
+        appointment.setBookDate(bookDate);
+        appointment.setBookTimeslot(bookTimeslot);
+        appointment.setBookTime(bookTime);
+        appointment.setBookSrc(Integer.parseInt(bookSrc));
+
+        // 淇濆瓨鏇存柊
+        appointmentMapper.updateById(appointment);
+    }
+
+    public AppointmentDO getByApplyNo(String applyNo) {
+        return appointmentMapper.getByApplyNo(applyNo);
+    }
 }
 
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
index 4dede33..263b9a5 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
@@ -1,43 +1,42 @@
 package cn.lihu.jh.module.ecg.service.devrent;
 
 import cn.lihu.jh.framework.common.pojo.CommonResult;
+import cn.lihu.jh.framework.common.pojo.PageResult;
+import cn.lihu.jh.framework.common.util.object.BeanUtils;
 import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils;
+import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
 import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.JobRecordSaveReqVO;
+import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.patient.PatDetails;
 import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
+import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
 import cn.lihu.jh.module.ecg.dal.mysql.checktype.CheckTypeMapper;
 import cn.lihu.jh.module.ecg.dal.mysql.devmanage.DeviceMapper;
+import cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
 import cn.lihu.jh.module.ecg.dal.mysql.jobrecord.JobRecordMapper;
 import cn.lihu.jh.module.ecg.dal.mysql.queue.QueueMapper;
 import cn.lihu.jh.module.ecg.enums.DevRentStateEnum;
 import cn.lihu.jh.module.ecg.enums.DevStateEnum;
 import cn.lihu.jh.module.ecg.enums.QueueStatusEnum;
-import cn.lihu.jh.module.ecg.feign.*;
+import cn.lihu.jh.module.ecg.feign.FeeConfirmFeignService;
 import cn.lihu.jh.module.ecg.service.queue.QueueServiceTxFunctions;
+import cn.lihu.jh.module.ecg.webservice.client.JHFWWebServiceClient;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 
+import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
-import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
-import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
-import cn.lihu.jh.framework.common.pojo.PageResult;
-import cn.lihu.jh.framework.common.util.object.BeanUtils;
-
-import cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
-
-import javax.annotation.Resource;
-
 import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.lihu.jh.framework.common.util.date.DateUtils.getCurTimeString;
 import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
 
 /**
@@ -66,10 +65,17 @@
     DeviceMapper deviceMapper;
 
     @Resource
+    AppointmentMapper appointmentMapper;
+
+    @Resource
     QueueMapper queueMapper;
 
     @Resource
     CheckTypeMapper checkTypeMapper;
+
+    @Resource
+    private JHFWWebServiceClient jhfwWebServiceClient;
+
 
     @Override
     public CommonResult<Long> registerOperation(DevRentSaveReqVO createReqVO) {
@@ -90,21 +96,20 @@
         Long rent_id = createReqVO.getId();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.ROUTINE_FINISH.getState());
-        jobTypeList.add( DevRentStateEnum.ROUTINE_CANCELLED.getState());
+        jobTypeList.add(DevRentStateEnum.ROUTINE_FINISH.getState());
+        jobTypeList.add(DevRentStateEnum.ROUTINE_CANCELLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
-            if (devRentDOList.size() == 0)
-                throw  exception(DEV_INSTALL_NOT_APPOINTMENT);
+            List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
+            if (devRentDOList.size() == 0) throw exception(DEV_INSTALL_NOT_APPOINTMENT);
             else if (devRentDOList.size() != 1) {
-                throw  exception(DEV_INSTALL_EXCEPTION);
+                throw exception(DEV_INSTALL_EXCEPTION);
             }
 
             rent_id = devRentDOList.getFirst().getId();
-            createReqVO.setId( rent_id );
-            createReqVO.setState( DevRentStateEnum.ROUTINE_FINISH.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setId(rent_id);
+            createReqVO.setState(DevRentStateEnum.ROUTINE_FINISH.getState());
+            updateDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
             jobRecordSaveReqVO.setRentId(rent_id);
@@ -114,21 +119,21 @@
             jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
             jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() );
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.ROUTINE_FINISH.getState());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
-            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
+            jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType());
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
             // 鎾ら攢 鏀惧純鎿嶄綔
-            createReqVO.setState( DevRentStateEnum.ROUTINE_FINISH.getState() );
+            createReqVO.setState(DevRentStateEnum.ROUTINE_FINISH.getState());
 
-            updateDevRent( createReqVO );
+            updateDevRent(createReqVO);
 
             jobRecordDO.setDevId(createReqVO.getDevId());
-            jobRecordDO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() );
+            jobRecordDO.setJobType(DevRentStateEnum.ROUTINE_FINISH.getState());
             jobRecordDO.setJobTime(createReqVO.getRentTime());
             jobRecordDO.setRemark(createReqVO.getRemark());
             jobRecordDO.setUpdater(String.valueOf(userId));
@@ -140,16 +145,15 @@
         //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
         //        QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus());
 
-        QueueDO firstOnStageQueueItem = queueMapper.getBedFirstQueueItemByStatus(createReqVO.getRoomId(),
-                                            createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus());
+        QueueDO firstOnStageQueueItem = queueMapper.getBedFirstQueueItemByStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus());
         // QueueStatusEnum.ONSTAGE  =>  QueueStatusEnum.FINISH
         firstOnStageQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus());  // 榛樿鐘舵�� 璁剧疆
-        queueMapper.updateById( firstOnStageQueueItem );
+        queueMapper.updateById(firstOnStageQueueItem);
 
         // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
-        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstOnStageQueueItem.getBookCheckType() );
+        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem(firstOnStageQueueItem.getBookCheckType());
         if (checkTypeDO.getAffinityCheckTypes().length > 0) {
-            procAffinityWhenRoutineFinish( firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes() );
+            procAffinityWhenRoutineFinish(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes());
         }
 
         return CommonResult.success(rent_id);
@@ -157,6 +161,7 @@
 
     /**
      * 棰嗙敤瀹屾垚 鎿嶄綔
+     *
      * @param createReqVO 鍒涘缓淇℃伅
      * @return
      */
@@ -175,22 +180,29 @@
             throw exception(DEVICE_NOT_FREE);
         }
 
+//        //璁惧棰嗗彇瀹屾垚鍚庯紝姝ゆ椂妫�鏌ョ櫥璁板啓鎴愪簡锛岄渶瑕佸皢杩欎釜鍥炲啓缁欓泦鎴愬钩鍙�
+//        String action = "S0405";
+//        String message = "";
+
+
+//        jhfwWebServiceClient.callJHFWTYRK(action, message);
+
+
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.RECEIVED.getState());
-        jobTypeList.add( DevRentStateEnum.RECEIVED_CANCELLED.getState());
+        jobTypeList.add(DevRentStateEnum.RECEIVED.getState());
+        jobTypeList.add(DevRentStateEnum.RECEIVED_CANCELLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
-            if (devRentDOList.size() == 0)
-                throw exception(DEV_INSTALL_NOT_APPOINTMENT);
+            List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
+            if (devRentDOList.size() == 0) throw exception(DEV_INSTALL_NOT_APPOINTMENT);
             else if (devRentDOList.size() != 1) {
                 throw exception(DEV_INSTALL_EXCEPTION);
             }
 
             rent_id = devRentDOList.getFirst().getId();
-            createReqVO.setId( rent_id );
-            createReqVO.setState( DevRentStateEnum.RECEIVED.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setId(rent_id);
+            createReqVO.setState(DevRentStateEnum.RECEIVED.getState());
+            updateDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
             jobRecordSaveReqVO.setRentId(rent_id);
@@ -200,21 +212,21 @@
             jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
             jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.RECEIVED.getState() );
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.RECEIVED.getState());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
-            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
+            jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType());
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
             // 鎾ら攢 鏀惧純鎿嶄綔
-            createReqVO.setState( DevRentStateEnum.RECEIVED.getState() );
+            createReqVO.setState(DevRentStateEnum.RECEIVED.getState());
 
-            updateDevRent( createReqVO );
+            updateDevRent(createReqVO);
 
             jobRecordDO.setDevId(createReqVO.getDevId());
-            jobRecordDO.setJobType( DevRentStateEnum.RECEIVED.getState() );
+            jobRecordDO.setJobType(DevRentStateEnum.RECEIVED.getState());
             jobRecordDO.setJobTime(createReqVO.getRentTime());
             jobRecordDO.setRemark(createReqVO.getRemark());
             jobRecordDO.setUpdater(String.valueOf(userId));
@@ -227,18 +239,17 @@
         //        QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus());
 
         // QueueStatusEnum.ONSTAGE  =>  QueueStatusEnum.RECEIVED
-        QueueDO bedOnStageQueueItem = queueMapper.getBedFirstQueueItemByStatus(
-                createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus() );
-        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( bedOnStageQueueItem.getBookCheckType() );
+        QueueDO bedOnStageQueueItem = queueMapper.getBedFirstQueueItemByStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus());
+        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem(bedOnStageQueueItem.getBookCheckType());
         bedOnStageQueueItem.setStatus(QueueStatusEnum.RECEIVED.getStatus());  // [宸查鐢╙ 鐘舵��
-        bedOnStageQueueItem.setAffinityItem( 0 ); // 浜插拰鏍囪 娓呴櫎锛屽湪瀹夎闃舵閲嶆柊浜插拰
+        bedOnStageQueueItem.setAffinityItem(0); // 浜插拰鏍囪 娓呴櫎锛屽湪瀹夎闃舵閲嶆柊浜插拰
 
         // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 , 鏇存柊 bedOnStageQueueItem
         if (checkTypeDO.getAffinityCheckTypes().length > 0) {
             procAffinityWhenReadyFinish(/*IN, OUT*/bedOnStageQueueItem, checkTypeDO.getAffinityCheckTypes());
         }
 
-        queueMapper.updateById( bedOnStageQueueItem );
+        queueMapper.updateById(bedOnStageQueueItem);
         return CommonResult.success(rent_id);
     }
 
@@ -252,7 +263,7 @@
         DevRentDO devRentDO = getDevRent(rent_id);
 
         // 瀵逛簬宸叉湁棰嗙敤锛屼絾鏄鏈烘椂浣跨敤鐨勪笉鏄凡棰嗙敤璁惧锛屾姤閿�
-        if ( null != devRentDO.getDevId() && !createReqVO.getDevId().equals(devRentDO.getDevId()) ) {
+        if (null != devRentDO.getDevId() && !createReqVO.getDevId().equals(devRentDO.getDevId())) {
             throw exception(DEVICE_NOT_PAT_RECEIVED);
         }
 
@@ -264,23 +275,22 @@
 
         // 妫�鏌� job_record 鐢ㄤ簬纭鏄惁鏄涓�娆″畨瑁呮搷浣�
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.INSTALLED.getState());
-        jobTypeList.add( DevRentStateEnum.INSTALL_CANCELLED.getState());
+        jobTypeList.add(DevRentStateEnum.INSTALLED.getState());
+        jobTypeList.add(DevRentStateEnum.INSTALL_CANCELLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
 
         // 绗竴娆� 瀹夎鎿嶄綔
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.RECEIVED.getState());
-            if (devRentDOList.size() == 0)
-                throw exception(DEV_INSTALL_NOT_RECEIVED);
+            List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.RECEIVED.getState());
+            if (devRentDOList.size() == 0) throw exception(DEV_INSTALL_NOT_RECEIVED);
             else if (devRentDOList.size() != 1) {
                 throw exception(DEV_INSTALL_EXCEPTION);
             }
 
             rent_id = devRentDOList.getFirst().getId();
-            createReqVO.setId( rent_id );
-            createReqVO.setState( DevRentStateEnum.INSTALLED.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setId(rent_id);
+            createReqVO.setState(DevRentStateEnum.INSTALLED.getState());
+            updateDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
             jobRecordSaveReqVO.setRentId(rent_id);
@@ -290,20 +300,20 @@
             jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
             jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALLED.getState() );
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.INSTALLED.getState());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
-            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
+            jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType());
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
             // 鎾ら攢 鏀惧純鎿嶄綔
-            createReqVO.setState( DevRentStateEnum.INSTALLED.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setState(DevRentStateEnum.INSTALLED.getState());
+            updateDevRent(createReqVO);
 
             jobRecordDO.setDevId(createReqVO.getDevId());
-            jobRecordDO.setJobType( DevRentStateEnum.INSTALLED.getState() );
+            jobRecordDO.setJobType(DevRentStateEnum.INSTALLED.getState());
             jobRecordDO.setJobTime(createReqVO.getRentTime());
             jobRecordDO.setRemark(createReqVO.getRemark());
             jobRecordDO.setUpdater(String.valueOf(userId));
@@ -316,13 +326,12 @@
         //        QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus());
 
         // QueueStatusEnum.INSTALLING  =>  QueueStatusEnum.FINISH
-        QueueDO bedInstallingQueueItem = queueMapper.getBedFirstQueueItemByStatus(
-                            createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.INSTALLING.getStatus());
+        QueueDO bedInstallingQueueItem = queueMapper.getBedFirstQueueItemByStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.INSTALLING.getStatus());
         bedInstallingQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus());  // 榛樿鐘舵�� 璁剧疆
-        queueMapper.updateById( bedInstallingQueueItem );
+        queueMapper.updateById(bedInstallingQueueItem);
 
         // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
-        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( bedInstallingQueueItem.getBookCheckType() );
+        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem(bedInstallingQueueItem.getBookCheckType());
         if (checkTypeDO.getAffinityCheckTypes().length > 0) {
             procAffinityWhenInstallFinish(bedInstallingQueueItem, checkTypeDO.getAffinityCheckTypes());
         }
@@ -333,41 +342,41 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long dismantleOperation(DevRentSaveReqVO updateReqVO) {
-        updateReqVO.setState( DevRentStateEnum.DISMANTLED.getState() );
-        updateDevRent( updateReqVO );
+        updateReqVO.setState(DevRentStateEnum.DISMANTLED.getState());
+        updateDevRent(updateReqVO);
         Long rentId = updateReqVO.getId();
 
         Long userId = SecurityFrameworkUtils.getLoginUserId();
         String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
 
         // 璁惧鎭㈠鍒扮┖闂�
-        markDevFree( updateReqVO.getDevId(), rentId );
+        markDevFree(updateReqVO.getDevId(), rentId);
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.DISMANTLED.getState());
+        jobTypeList.add(DevRentStateEnum.DISMANTLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
         if (null == jobRecordDO) {
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
-            jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
-            jobRecordSaveReqVO.setDevId( updateReqVO.getDevId() );
-            jobRecordSaveReqVO.setDocId( userId );
-            jobRecordSaveReqVO.setDocName( userNickname );
-            jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
-            jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
-            jobRecordSaveReqVO.setJobTime( updateReqVO.getReturnTime() );
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.DISMANTLED.getState() );
-            jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
-            jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
-            jobRecordSaveReqVO.setCheckType( updateReqVO.getCheckType() );
+            jobRecordSaveReqVO.setRentId(updateReqVO.getId());
+            jobRecordSaveReqVO.setDevId(updateReqVO.getDevId());
+            jobRecordSaveReqVO.setDocId(userId);
+            jobRecordSaveReqVO.setDocName(userNickname);
+            jobRecordSaveReqVO.setPatId(updateReqVO.getPatId());
+            jobRecordSaveReqVO.setPatName(updateReqVO.getPatName());
+            jobRecordSaveReqVO.setJobTime(updateReqVO.getReturnTime());
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.DISMANTLED.getState());
+            jobRecordSaveReqVO.setRemark(updateReqVO.getRemark());
+            jobRecordSaveReqVO.setSummary(updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment());
+            jobRecordSaveReqVO.setCheckType(updateReqVO.getCheckType());
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            jobRecordDO.setJobType( DevRentStateEnum.DISMANTLED.getState() );
-            jobRecordDO.setJobTime( updateReqVO.getReturnTime() );
-            jobRecordDO.setRemark( updateReqVO.getRemark() );
-            jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
-            jobRecordDO.setUpdater( String.valueOf(userId) );
-            jobRecordDO.setUpdateTime( LocalDateTime.now() );
+            jobRecordDO.setJobType(DevRentStateEnum.DISMANTLED.getState());
+            jobRecordDO.setJobTime(updateReqVO.getReturnTime());
+            jobRecordDO.setRemark(updateReqVO.getRemark());
+            jobRecordDO.setSummary(updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment());
+            jobRecordDO.setUpdater(String.valueOf(userId));
+            jobRecordDO.setUpdateTime(LocalDateTime.now());
             jobRecordMapper.updateById(jobRecordDO);
         }
         return updateReqVO.getId();
@@ -376,36 +385,36 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long dataEntryOperation(DevRentSaveReqVO updateReqVO) {
-        updateReqVO.setState( DevRentStateEnum.DATAENTERED.getState() );
-        updateDevRent( updateReqVO );
+        updateReqVO.setState(DevRentStateEnum.DATAENTERED.getState());
+        updateDevRent(updateReqVO);
 
         Long userId = SecurityFrameworkUtils.getLoginUserId();
         String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.DATAENTERED.getState());
+        jobTypeList.add(DevRentStateEnum.DATAENTERED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
         if (null == jobRecordDO) {
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
-            jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
-            jobRecordSaveReqVO.setDevId( updateReqVO.getDevId() );
-            jobRecordSaveReqVO.setDocId( userId );
-            jobRecordSaveReqVO.setDocName( userNickname );
-            jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
-            jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
-            jobRecordSaveReqVO.setJobTime( updateReqVO.getEntryTime() );
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.DATAENTERED.getState() );
-            jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
-            jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
-            jobRecordSaveReqVO.setCheckType( updateReqVO.getCheckType() );
+            jobRecordSaveReqVO.setRentId(updateReqVO.getId());
+            jobRecordSaveReqVO.setDevId(updateReqVO.getDevId());
+            jobRecordSaveReqVO.setDocId(userId);
+            jobRecordSaveReqVO.setDocName(userNickname);
+            jobRecordSaveReqVO.setPatId(updateReqVO.getPatId());
+            jobRecordSaveReqVO.setPatName(updateReqVO.getPatName());
+            jobRecordSaveReqVO.setJobTime(updateReqVO.getEntryTime());
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.DATAENTERED.getState());
+            jobRecordSaveReqVO.setRemark(updateReqVO.getRemark());
+            jobRecordSaveReqVO.setSummary(updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment());
+            jobRecordSaveReqVO.setCheckType(updateReqVO.getCheckType());
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            jobRecordDO.setJobType( DevRentStateEnum.DATAENTERED.getState() );
-            jobRecordDO.setJobTime( updateReqVO.getEntryTime() );
-            jobRecordDO.setRemark( updateReqVO.getRemark() );
-            jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
-            jobRecordDO.setUpdater( String.valueOf(userId) );
+            jobRecordDO.setJobType(DevRentStateEnum.DATAENTERED.getState());
+            jobRecordDO.setJobTime(updateReqVO.getEntryTime());
+            jobRecordDO.setRemark(updateReqVO.getRemark());
+            jobRecordDO.setSummary(updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment());
+            jobRecordDO.setUpdater(String.valueOf(userId));
             jobRecordMapper.updateById(jobRecordDO);
         }
         return updateReqVO.getId();
@@ -420,23 +429,22 @@
 
         DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
         createReqVO.setDevId(null);
-        createReqVO.setState( DevRentStateEnum.ROUTINE_CANCELLED.getState());
+        createReqVO.setState(DevRentStateEnum.ROUTINE_CANCELLED.getState());
 
         Long rent_id = createReqVO.getId();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.ROUTINE_FINISH.getState());
-        jobTypeList.add( DevRentStateEnum.ROUTINE_CANCELLED.getState());
+        jobTypeList.add(DevRentStateEnum.ROUTINE_FINISH.getState());
+        jobTypeList.add(DevRentStateEnum.ROUTINE_CANCELLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
-            if (devRentDOList.size() != 1)
-                throw exception(ROUTINE_CHECK_EXIST);
+            List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
+            if (devRentDOList.size() != 1) throw exception(ROUTINE_CHECK_EXIST);
 
             rent_id = devRentDOList.getFirst().getId();
-            createReqVO.setId( rent_id );
-            createReqVO.setState( DevRentStateEnum.ROUTINE_CANCELLED.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setId(rent_id);
+            createReqVO.setState(DevRentStateEnum.ROUTINE_CANCELLED.getState());
+            updateDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
             jobRecordSaveReqVO.setRentId(rent_id);
@@ -445,16 +453,16 @@
             jobRecordSaveReqVO.setDocName(userNickname);
             jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
             jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_CANCELLED.getState() );
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.ROUTINE_CANCELLED.getState());
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
-            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
+            jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType());
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            updateDevRent( createReqVO );
+            updateDevRent(createReqVO);
 
             jobRecordDO.setDevId(null);
             jobRecordDO.setJobType(DevRentStateEnum.ROUTINE_CANCELLED.getState());
@@ -476,28 +484,27 @@
 
         // 鑻ヤ粠 瑁呮満 鏀逛负 鍙栨秷瑁呮満锛屾仮澶嶈澶囩姸鎬�
         if (null != cancelReqVO.getDevId()) {
-            markDevFree( cancelReqVO.getDevId(),  rentId );
+            markDevFree(cancelReqVO.getDevId(), rentId);
         }
 
         DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
         createReqVO.setDevId(null);
-        createReqVO.setState( DevRentStateEnum.RECEIVED_CANCELLED.getState());
+        createReqVO.setState(DevRentStateEnum.RECEIVED_CANCELLED.getState());
 
         Long rent_id = createReqVO.getId();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.RECEIVED.getState());
-        jobTypeList.add( DevRentStateEnum.RECEIVED_CANCELLED.getState());
+        jobTypeList.add(DevRentStateEnum.RECEIVED.getState());
+        jobTypeList.add(DevRentStateEnum.RECEIVED_CANCELLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
-            if (devRentDOList.size() != 1)
-                throw exception(DEV_INSTALL_EXIST);
+            List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState());
+            if (devRentDOList.size() != 1) throw exception(DEV_INSTALL_EXIST);
 
             rent_id = devRentDOList.getFirst().getId();
-            createReqVO.setId( rent_id );
-            createReqVO.setState( DevRentStateEnum.RECEIVED_CANCELLED.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setId(rent_id);
+            createReqVO.setState(DevRentStateEnum.RECEIVED_CANCELLED.getState());
+            updateDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
             jobRecordSaveReqVO.setRentId(rent_id);
@@ -506,16 +513,16 @@
             jobRecordSaveReqVO.setDocName(userNickname);
             jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
             jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.RECEIVED_CANCELLED.getState() );
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.RECEIVED_CANCELLED.getState());
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
-            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
+            jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType());
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            updateDevRent( createReqVO );
+            updateDevRent(createReqVO);
 
             jobRecordDO.setDevId(null);
             jobRecordDO.setJobType(DevRentStateEnum.RECEIVED_CANCELLED.getState());
@@ -537,28 +544,27 @@
 
         // 鑻ヤ粠 瑁呮満 鏀逛负 鍙栨秷瑁呮満锛屾仮澶嶈澶囩姸鎬�
         if (null != cancelReqVO.getDevId()) {
-            markDevFree( cancelReqVO.getDevId(), rentId );
+            markDevFree(cancelReqVO.getDevId(), rentId);
         }
 
         DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
         createReqVO.setDevId(null);
-        createReqVO.setState( DevRentStateEnum.INSTALL_CANCELLED.getState() );
+        createReqVO.setState(DevRentStateEnum.INSTALL_CANCELLED.getState());
 
         Long rent_id = createReqVO.getId();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.INSTALLED.getState());
-        jobTypeList.add( DevRentStateEnum.INSTALL_CANCELLED.getState());
+        jobTypeList.add(DevRentStateEnum.INSTALLED.getState());
+        jobTypeList.add(DevRentStateEnum.INSTALL_CANCELLED.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList);
         if (null == jobRecordDO) {
-            List<DevRentDO>  devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.RECEIVED.getState());
-            if (devRentDOList.size() != 1)
-                throw exception(DEV_INSTALL_EXIST);
+            List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.RECEIVED.getState());
+            if (devRentDOList.size() != 1) throw exception(DEV_INSTALL_EXIST);
 
             rent_id = devRentDOList.getFirst().getId();
-            createReqVO.setId( rent_id );
-            createReqVO.setState( DevRentStateEnum.INSTALL_CANCELLED.getState() );
-            updateDevRent( createReqVO );
+            createReqVO.setId(rent_id);
+            createReqVO.setState(DevRentStateEnum.INSTALL_CANCELLED.getState());
+            updateDevRent(createReqVO);
 
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
             jobRecordSaveReqVO.setRentId(rent_id);
@@ -567,19 +573,19 @@
             jobRecordSaveReqVO.setDocName(userNickname);
             jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
             jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
-            jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALL_CANCELLED.getState() );
+            jobRecordSaveReqVO.setJobType(DevRentStateEnum.INSTALL_CANCELLED.getState());
             jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
             jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
             jobRecordSaveReqVO.setSummary("");
-            jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() );
+            jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType());
 
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            updateDevRent( createReqVO );
+            updateDevRent(createReqVO);
 
             jobRecordDO.setDevId(null);
-            jobRecordDO.setJobType( DevRentStateEnum.INSTALL_CANCELLED.getState() );
+            jobRecordDO.setJobType(DevRentStateEnum.INSTALL_CANCELLED.getState());
             jobRecordDO.setJobTime(createReqVO.getRentTime());
             jobRecordDO.setRemark(createReqVO.getRemark());
             jobRecordDO.setUpdater(String.valueOf(userId));
@@ -597,49 +603,46 @@
         if (updateReqVO.getState() == DevStateEnum.DAMAGED.getState()) {
             devStateEnum = DevStateEnum.DAMAGED;
             devRentStateEnum = DevRentStateEnum.DAMAGED;
-        }
-        else if (updateReqVO.getState() == DevStateEnum.LOST.getState()) {
+        } else if (updateReqVO.getState() == DevStateEnum.LOST.getState()) {
             devStateEnum = DevStateEnum.LOST;
             devRentStateEnum = DevRentStateEnum.LOST;
-        }
-        else
-            throw exception(DEV_DISMANTLE_EXCEPTION);
+        } else throw exception(DEV_DISMANTLE_EXCEPTION);
 
         // 璁惧閬楀け鏃�, 鏍囨敞閬楀け
-        markDevDismantleException( updateReqVO.getDevId(), updateReqVO.getId(), updateReqVO.getReturnTime().toLocalDate(), devStateEnum );
+        markDevDismantleException(updateReqVO.getDevId(), updateReqVO.getId(), updateReqVO.getReturnTime().toLocalDate(), devStateEnum);
 
-        updateReqVO.setState( devRentStateEnum.getState() );
-        updateDevRent( updateReqVO );
+        updateReqVO.setState(devRentStateEnum.getState());
+        updateDevRent(updateReqVO);
 
         Long userId = SecurityFrameworkUtils.getLoginUserId();
         String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
 
         List<Integer> jobTypeList = new ArrayList<Integer>();
-        jobTypeList.add( DevRentStateEnum.DAMAGED.getState());
-        jobTypeList.add( DevRentStateEnum.LOST.getState());
+        jobTypeList.add(DevRentStateEnum.DAMAGED.getState());
+        jobTypeList.add(DevRentStateEnum.LOST.getState());
         JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
         if (null == jobRecordDO) {
             JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
-            jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
-            jobRecordSaveReqVO.setDevId( updateReqVO.getDevId() );
-            jobRecordSaveReqVO.setDocId( userId );
-            jobRecordSaveReqVO.setDocName( userNickname );
-            jobRecordSaveReqVO.setPatId( updateReqVO.getPatId() );
-            jobRecordSaveReqVO.setPatName( updateReqVO.getPatName() );
-            jobRecordSaveReqVO.setJobTime( updateReqVO.getReturnTime() );
-            jobRecordSaveReqVO.setJobType( devRentStateEnum.getState() );
-            jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() );
-            jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
-            jobRecordSaveReqVO.setCheckType( updateReqVO.getCheckType() );
+            jobRecordSaveReqVO.setRentId(updateReqVO.getId());
+            jobRecordSaveReqVO.setDevId(updateReqVO.getDevId());
+            jobRecordSaveReqVO.setDocId(userId);
+            jobRecordSaveReqVO.setDocName(userNickname);
+            jobRecordSaveReqVO.setPatId(updateReqVO.getPatId());
+            jobRecordSaveReqVO.setPatName(updateReqVO.getPatName());
+            jobRecordSaveReqVO.setJobTime(updateReqVO.getReturnTime());
+            jobRecordSaveReqVO.setJobType(devRentStateEnum.getState());
+            jobRecordSaveReqVO.setRemark(updateReqVO.getRemark());
+            jobRecordSaveReqVO.setSummary(updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment());
+            jobRecordSaveReqVO.setCheckType(updateReqVO.getCheckType());
             JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class);
             jobRecordMapper.insert(jobRecord);
         } else {
-            jobRecordDO.setJobType( devRentStateEnum.getState() );
-            jobRecordDO.setJobTime( updateReqVO.getReturnTime() );
-            jobRecordDO.setRemark( updateReqVO.getRemark() );
-            jobRecordDO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() );
-            jobRecordDO.setUpdater( String.valueOf(userId) );
-            jobRecordDO.setUpdateTime( LocalDateTime.now() );
+            jobRecordDO.setJobType(devRentStateEnum.getState());
+            jobRecordDO.setJobTime(updateReqVO.getReturnTime());
+            jobRecordDO.setRemark(updateReqVO.getRemark());
+            jobRecordDO.setSummary(updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment());
+            jobRecordDO.setUpdater(String.valueOf(userId));
+            jobRecordDO.setUpdateTime(LocalDateTime.now());
             jobRecordMapper.updateById(jobRecordDO);
         }
 
@@ -692,34 +695,34 @@
     @Override
     public DevRentDO getExistingRent(DevRentSearchReqVO searchReqVO) {
         List<Integer> stateList = new ArrayList<>();
-        stateList.add( DevRentStateEnum.INSTALLED.getState() );
-        stateList.add( DevRentStateEnum.RECEIVED.getState());
-        searchReqVO.setStateList( stateList );
+        stateList.add(DevRentStateEnum.INSTALLED.getState());
+        stateList.add(DevRentStateEnum.RECEIVED.getState());
+        searchReqVO.setStateList(stateList);
         return devRentMapper.getRentByState(searchReqVO);
     }
 
     @Override
     public DevRentDO getFreeRent(DevRentSearchReqVO searchReqVO) {
         List<Integer> stateList = new ArrayList<>();
-        stateList.add( DevRentStateEnum.FREE.getState() );
-        searchReqVO.setStateList( stateList );
+        stateList.add(DevRentStateEnum.FREE.getState());
+        searchReqVO.setStateList(stateList);
         return devRentMapper.getRentByState(searchReqVO);
     }
 
     @Override
     public DevRentDO getReadyOrCancelledRent(DevRentSearchReqVO searchReqVO) {
         List<Integer> stateList = new ArrayList<>();
-        stateList.add( DevRentStateEnum.RECEIVED.getState() );
-        stateList.add( DevRentStateEnum.RECEIVED_CANCELLED.getState());
-        searchReqVO.setStateList( stateList );
+        stateList.add(DevRentStateEnum.RECEIVED.getState());
+        stateList.add(DevRentStateEnum.RECEIVED_CANCELLED.getState());
+        searchReqVO.setStateList(stateList);
         return devRentMapper.getRentByState(searchReqVO);
     }
 
     @Override
     public DevRentDO getDismantledRent(DevRentSearchReqVO searchReqVO) {
         List<Integer> stateList = new ArrayList<>();
-        stateList.add( DevRentStateEnum.DISMANTLED.getState() );
-        searchReqVO.setStateList( stateList );
+        stateList.add(DevRentStateEnum.DISMANTLED.getState());
+        searchReqVO.setStateList(stateList);
         return devRentMapper.getRentByState(searchReqVO);
     }
 
@@ -735,34 +738,10 @@
             return 2;
         }
 
-        PatDetails patDetails = devRentDO.getPatDetails();
-        HisFeeConfirmReqBody hisFeeConfirmReqBody = new HisFeeConfirmReqBody();
-        MsgHeader msgHeader = new MsgHeader();
-        msgHeader.setMsgType("ODS_2212");
-        msgHeader.setMsgVersion("3.0");
-        msgHeader.setSender("ECG");
-        hisFeeConfirmReqBody.setMsgHeader(msgHeader);
-        Item item = new Item();
-        item.setItemCode( getHisCheckCode(devRentDO.getCheckType()) ); //
-        item.setItemStatus( isFeeConfirmOrCancel? "5" : "6" ); // 5 纭垂 6 鍙栨秷纭垂
-        item.setExeOrganization("47162057-2");
-        item.setExeDeptName("蹇冪數绉�");
-        item.setExeDept("蹇冪數绉�");
-        item.setExeDoctor( hisId ); //
-        item.setExeDoctorName( userNickname ); //
-        item.setExeDateTime( getCurTimeString() ); //
-        ExmRequest exmRequest = new ExmRequest();
-        exmRequest.setAuthorOrganization("47162057-2");
-        exmRequest.setRequestId( devRentDO.getApplyNo() );  //
-        exmRequest.setPatientType( getPatientType(patDetails.getSource()) ); //
-        exmRequest.setItem(item);
-        hisFeeConfirmReqBody.setExmRequest(exmRequest);
-
         Integer returnValue = 1;
         try {
-            HisFeeConfirmRespResult result = feeConfirmFeignService.httpFeeApi("UpdateExmRequestStatus", "ECG", "ECG", hisFeeConfirmReqBody);
-            log.info( result.getMsgHeader().getStatus() );
-            returnValue = result.getMsgHeader().getStatus().equals("true") ? 0 : 1;
+            AppointmentDO appointmentDO = appointmentMapper.getByApplyNo(devRentDO.getApplyNo());
+            returnValue = appointmentDO.getPaid() == 1 ? 0 : 1;
         } catch (RuntimeException ex) {
             returnValue = 1;
         }
@@ -778,10 +757,10 @@
         // 璁惧鏍囨敞 宸查鍙�
         DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId);
         if (null != deviceDO && DevStateEnum.FREE.isEqual(deviceDO.getState())) {
-            deviceDO.setState( DevStateEnum.RECEIVED.getState() );
-            deviceDO.setRentId( rentId );
-            deviceDO.setStateDate( LocalDate.now() );
-            deviceDO.setPatDetails( patDetails );
+            deviceDO.setState(DevStateEnum.RECEIVED.getState());
+            deviceDO.setRentId(rentId);
+            deviceDO.setStateDate(LocalDate.now());
+            deviceDO.setPatDetails(patDetails);
             return deviceMapper.updateById(deviceDO);
         }
 
@@ -791,19 +770,18 @@
     // 鏍囪 璁惧宸茶浣跨敤
     private Integer markDevInUse(String devId, Long rentId) {
         DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId);
-        if (null == deviceDO)
-            return 0;
+        if (null == deviceDO) return 0;
 
         if (DevStateEnum.RECEIVED.isEqual(deviceDO.getState()) && rentId.equals(deviceDO.getRentId())) {
-            deviceDO.setState( DevStateEnum.INUSE.getState() );
-            deviceDO.setStateDate( LocalDate.now() );
+            deviceDO.setState(DevStateEnum.INUSE.getState());
+            deviceDO.setStateDate(LocalDate.now());
             return deviceMapper.updateById(deviceDO);
         }
 
         if (DevStateEnum.FREE.isEqual(deviceDO.getState())) {
-            deviceDO.setState( DevStateEnum.INUSE.getState() );
-            deviceDO.setStateDate( LocalDate.now() );
-            deviceDO.setRentId( rentId );
+            deviceDO.setState(DevStateEnum.INUSE.getState());
+            deviceDO.setStateDate(LocalDate.now());
+            deviceDO.setRentId(rentId);
             return deviceMapper.updateById(deviceDO);
         }
 
@@ -814,8 +792,8 @@
         // 璁惧鏍囨敞閬楀け
         DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId);
         if (null != deviceDO && DevStateEnum.INUSE.isEqual(deviceDO.getState()) && rentId.equals(deviceDO.getRentId())) {
-            deviceDO.setState( devStateEnum.getState() );
-            deviceDO.setStateDate( localDate );
+            deviceDO.setState(devStateEnum.getState());
+            deviceDO.setStateDate(localDate);
             return deviceMapper.updateById(deviceDO);
         }
 
@@ -824,22 +802,21 @@
 
     private Integer markDevFree(String devId, Long rentId) {
         // 璁惧鏍囨敞閬楀け 鎭㈠涓虹┖闂�
-        DeviceDO deviceDO = deviceMapper.getDeviceByDevId( devId );
+        DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId);
         if (null != deviceDO && rentId.equals(deviceDO.getRentId())) {
-            deviceDO.setState( DevStateEnum.FREE.getState() );
-            deviceDO.setStateDate( LocalDate.now() );
+            deviceDO.setState(DevStateEnum.FREE.getState());
+            deviceDO.setStateDate(LocalDate.now());
             deviceDO.setRentId(null);
             deviceDO.setPatDetails(null);
             return deviceMapper.updateById(deviceDO);
         }
-        
+
         return 0;
     }
 
     private void procAffinityWhenRoutineFinish(String patId, Integer[] affinityCheckTypes) {
         // 濡傛灉瀛樺湪 [浜插拰-鎺掗槦] 浜插拰椤癸紝鍒欓�夋嫨 鍏朵腑涓�涓翰鍜岄」 鎺ユ浛鍏� 澶勪簬 [灏辫瘖涓璢
-        List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(
-                                patId, affinityCheckTypes, QueueStatusEnum.AFFINITY.getStatus());
+        List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(patId, affinityCheckTypes, QueueStatusEnum.AFFINITY.getStatus());
         if (!affinityAffinityWaitingItems.isEmpty()) {
             QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0);
             tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus());
@@ -852,83 +829,60 @@
      */
     private void procAffinityWhenReadyFinish(/*IN,OUT*/QueueDO bedOnStageQueueItem, Integer[] affinityCheckTypes) {
         // 濡傛灉瀛樺湪 [瀹夎涓璢 [瀹夎杩囧彿] [瀹夎鍙洖] 鑳借渚濋檮鐨勬鏌ラ」锛屽垯渚濋檮鍒板叾涓竴涓鏌ラ」
-        List<QueueDO> affinityInstallingItems = queueMapper.getCurPatGivenCheckTypesAndStatusList(
-                bedOnStageQueueItem.getPatId(), affinityCheckTypes,
-                List.of(QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.PASSED_INSTALL.getStatus(),
-                        QueueStatusEnum.RECALLED_INSTALL.getStatus()));
+        List<QueueDO> affinityInstallingItems = queueMapper.getCurPatGivenCheckTypesAndStatusList(bedOnStageQueueItem.getPatId(), affinityCheckTypes, List.of(QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.PASSED_INSTALL.getStatus(), QueueStatusEnum.RECALLED_INSTALL.getStatus()));
         if (!affinityInstallingItems.isEmpty()) {
             QueueDO affinityInstallingItem = affinityInstallingItems.get(0);
             bedOnStageQueueItem.setStatus(QueueStatusEnum.AFFINITY_INSTALL.getStatus()); // 浜插拰-棰嗙敤
             bedOnStageQueueItem.setAffinityItem(1);
-            bedOnStageQueueItem.setRoomId( affinityInstallingItem.getRoomId() );
-            bedOnStageQueueItem.setBedNo( affinityInstallingItem.getBedNo() );  // 棰嗙敤 鍒� 瀹夎 鍙兘浼氬湪涓嶅悓宸ヤ綅
+            bedOnStageQueueItem.setRoomId(affinityInstallingItem.getRoomId());
+            bedOnStageQueueItem.setBedNo(affinityInstallingItem.getBedNo());  // 棰嗙敤 鍒� 瀹夎 鍙兘浼氬湪涓嶅悓宸ヤ綅
         }
 
         // 濡傛灉瀛樺湪 [浜插拰-鎺掗槦] 浜插拰椤癸紝鍒欓�夋嫨 鍏朵腑涓�涓翰鍜岄」 鎺ユ浛鍏� 澶勪簬 [灏辫瘖涓璢
-        List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(
-                bedOnStageQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY.getStatus());
+        List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(bedOnStageQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY.getStatus());
         if (!affinityAffinityWaitingItems.isEmpty()) {
             QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0);
             tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus());
-            queueMapper.updateById( tmpQueueDO );
+            queueMapper.updateById(tmpQueueDO);
         }
     }
 
     // 濡傛灉瀛樺湪 [浜插拰-棰嗙敤] 浜插拰椤癸紝鍒欓�夋嫨 鍏朵腑涓�涓翰鍜岄」 鎺ユ浛鍏� 澶勪簬 [瀹夎涓璢
     private void procAffinityWhenInstallFinish(QueueDO bedInstallingQueueItem, Integer[] affinityCheckTypes) {
-        List<QueueDO> affinityAffinityReceivedItems = queueMapper.getCurPatGivenCheckTypesAndStatus(
-                bedInstallingQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY_INSTALL.getStatus());
+        List<QueueDO> affinityAffinityReceivedItems = queueMapper.getCurPatGivenCheckTypesAndStatus(bedInstallingQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY_INSTALL.getStatus());
         if (!affinityAffinityReceivedItems.isEmpty()) {
             QueueDO tmpQueueDO = affinityAffinityReceivedItems.get(0);
             tmpQueueDO.setStatus(QueueStatusEnum.INSTALLING.getStatus());
-            tmpQueueDO.setRoomId( bedInstallingQueueItem.getRoomId() );
-            tmpQueueDO.setBedNo( bedInstallingQueueItem.getBedNo() ); // 浠� [棰嗙敤] 鍒� [瀹夎]锛� 鍙灔鍦ㄤ笉鍚屽伐浣嶄笂鎿嶄綔
+            tmpQueueDO.setRoomId(bedInstallingQueueItem.getRoomId());
+            tmpQueueDO.setBedNo(bedInstallingQueueItem.getBedNo()); // 浠� [棰嗙敤] 鍒� [瀹夎]锛� 鍙灔鍦ㄤ笉鍚屽伐浣嶄笂鎿嶄綔
             queueMapper.updateById(tmpQueueDO);
         }
     }
 
     private String getHisCheckCode(Integer checkType) {
-        if (100 == checkType)
-            return "691133607";
-        else if (200 == checkType)
-            return "201605";
-        else if (300 == checkType)
-            return "200327";
-        else if (400 == checkType)
-            return "201652";
-        else if (500 == checkType)
-            return "502490914";
-        else if (600 == checkType)
-            return "419562119";
-        else if (700 == checkType)
-            return "201604";
-        else if (800 == checkType)
-            return "1202042";
-        else if (900 == checkType)
-            return "1202058";
-        else if (1000 == checkType)
-            return "1202065";
-        else if (1100 == checkType)
-            return "559542128";
-        else if (1200 == checkType)
-            return "590244511";
-        else if (1300 == checkType)
-            return "666454217";
-        else if (1400 == checkType)
-            return "720791490";
-        else if (1500 == checkType)
-            return "720792077";
+        if (100 == checkType) return "691133607";
+        else if (200 == checkType) return "201605";
+        else if (300 == checkType) return "200327";
+        else if (400 == checkType) return "201652";
+        else if (500 == checkType) return "502490914";
+        else if (600 == checkType) return "419562119";
+        else if (700 == checkType) return "201604";
+        else if (800 == checkType) return "1202042";
+        else if (900 == checkType) return "1202058";
+        else if (1000 == checkType) return "1202065";
+        else if (1100 == checkType) return "559542128";
+        else if (1200 == checkType) return "590244511";
+        else if (1300 == checkType) return "666454217";
+        else if (1400 == checkType) return "720791490";
+        else if (1500 == checkType) return "720792077";
 
         return "691133607";
     }
 
-    String getPatientType( Integer patientSource ) {
-        if (1 == patientSource || 2 == patientSource)
-            return "01";
-        else if (3 == patientSource)
-            return "03";
-        else if (4 == patientSource)
-            return "04";
+    String getPatientType(Integer patientSource) {
+        if (1 == patientSource || 2 == patientSource) return "01";
+        else if (3 == patientSource) return "03";
+        else if (4 == patientSource) return "04";
 
         return "01";
     }
diff --git a/jh-server/src/main/resources/application-prod.yaml b/jh-server/src/main/resources/application-prod.yaml
index beb7b64..fac211f 100644
--- a/jh-server/src/main/resources/application-prod.yaml
+++ b/jh-server/src/main/resources/application-prod.yaml
@@ -58,7 +58,7 @@
           #          url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 杩炴帴鐨勭ず渚�
           #          url: jdbc:kingbase8://127.0.0.1:54321/test  # 浜哄ぇ閲戜粨 KingbaseES 杩炴帴鐨勭ず渚�
           #          url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 杩炴帴鐨勭ず渚�
-          username: root
+          username: lihu
           password: Smartor.2023
           #          username: sa # SQL Server 杩炴帴鐨勭ず渚�
           #          password: Jh@2024 # SQL Server 杩炴帴鐨勭ず渚�
diff --git a/jh-server/src/main/resources/application.yaml b/jh-server/src/main/resources/application.yaml
index bd496d3..54a1011 100644
--- a/jh-server/src/main/resources/application.yaml
+++ b/jh-server/src/main/resources/application.yaml
@@ -3,6 +3,7 @@
     name: jh-server
 
   profiles:
+#    active: prod
     active: stage
 
   main:
@@ -314,4 +315,4 @@
         key: pLXUGAwK5305
         customer: E77DF18BE109F454A5CD319E44BF5177
 
-debug: false
\ No newline at end of file
+debug: false

--
Gitblit v1.9.3