From accc48fdd579b455c423adfde45ea6090b049b8f Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期三, 20 十一月 2024 10:20:44 +0800 Subject: [PATCH] 手动预约 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java | 102 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 64 insertions(+), 38 deletions(-) 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 40d53a8..5607b22 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 @@ -6,6 +6,7 @@ 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.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.devmanage.DeviceMapper; import cn.lihu.jh.module.ecg.dal.mysql.jobrecord.JobRecordMapper; @@ -22,6 +23,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Map; import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO; @@ -136,12 +138,7 @@ // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstOnStageQueueItem.getBookCheckType() ); if (checkTypeDO.getAffinityCheckTypes().length > 0) { - List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus()); - if (!affinityAffinityWaitingItems.isEmpty()) { - QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0); - tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); - queueMapper.updateById(tmpQueueDO); - } + procAffinityWhenRoutineFinish( firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes() ); } return CommonResult.success(rent_id); @@ -160,7 +157,7 @@ Long rent_id = createReqVO.getId(); // dev_rent 琛ㄧ殑ID // 鏍囨敞璁惧 宸查鍙� - Integer ret = markDevRecieved(createReqVO.getDevId(), rent_id); + Integer ret = markDevRecieved(createReqVO.getDevId(), rent_id, createReqVO.getPatDetails()); if (null == ret || 0 == ret) { throw exception(DEVICE_NOT_FREE); } @@ -216,30 +213,18 @@ //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), // QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus()); - QueueDO firstOnStageQueueItem = queueMapper.getFirstItemByBedAndStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus()); - CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstOnStageQueueItem.getBookCheckType() ); - // QueueStatusEnum.ONSTAGE => QueueStatusEnum.RECEIVED - firstOnStageQueueItem.setStatus(QueueStatusEnum.RECEIVED.getStatus()); // 榛樿鐘舵�� 璁剧疆 - // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 - if (checkTypeDO.getAffinityCheckTypes().length > 0) { - List<QueueDO> affinityInstallingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.INSTALLING.getStatus()); - if (!affinityInstallingItems.isEmpty()) { - firstOnStageQueueItem.setStatus(QueueStatusEnum.AFFINITY_RECEIVED.getStatus()); - } - } - queueMapper.updateById( firstOnStageQueueItem ); + QueueDO bedOnStageQueueItem = queueMapper.getFirstItemByBedAndStatus( + createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus() ); + CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( bedOnStageQueueItem.getBookCheckType() ); + bedOnStageQueueItem.setStatus(QueueStatusEnum.RECEIVED.getStatus()); // [宸查鐢╙ 鐘舵�� - // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 + // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 , 鏇存柊 bedOnStageQueueItem if (checkTypeDO.getAffinityCheckTypes().length > 0) { - List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus()); - if (!affinityAffinityWaitingItems.isEmpty()) { - QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0); - tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); - queueMapper.updateById(tmpQueueDO); - } + procAffinityWhenReadyFinish(/*IN, OUT*/bedOnStageQueueItem, checkTypeDO.getAffinityCheckTypes()); } + queueMapper.updateById( bedOnStageQueueItem ); return CommonResult.success(rent_id); } @@ -315,21 +300,16 @@ //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), // QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus()); - QueueDO firstInstallingQueueItem = queueMapper.getFirstItemByBedAndStatus(createReqVO.getRoomId(), - createReqVO.getBedNo(), QueueStatusEnum.INSTALLING.getStatus()); // QueueStatusEnum.INSTALLING => QueueStatusEnum.FINISH - firstInstallingQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus()); // 榛樿鐘舵�� 璁剧疆 - queueMapper.updateById( firstInstallingQueueItem ); + QueueDO bedInstallingQueueItem = queueMapper.getFirstItemByBedAndStatus( + createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.INSTALLING.getStatus()); + bedInstallingQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus()); // 榛樿鐘舵�� 璁剧疆 + queueMapper.updateById( bedInstallingQueueItem ); // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 - CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstInstallingQueueItem.getBookCheckType() ); + CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( bedInstallingQueueItem.getBookCheckType() ); if (checkTypeDO.getAffinityCheckTypes().length > 0) { - List<QueueDO> affinityAffinityReceivedItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstInstallingQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_RECEIVED.getStatus()); - if (!affinityAffinityReceivedItems.isEmpty()) { - QueueDO tmpQueueDO = affinityAffinityReceivedItems.get(0); - tmpQueueDO.setStatus(QueueStatusEnum.INSTALLING.getStatus()); - queueMapper.updateById(tmpQueueDO); - } + procAffinityWhenInstallFinish(bedInstallingQueueItem, checkTypeDO.getAffinityCheckTypes()); } return CommonResult.success(rent_id); @@ -728,13 +708,14 @@ } // 鏍囪 璁惧宸茶棰嗗彇 - private Integer markDevRecieved(String devId, Long rentId) { + private Integer markDevRecieved(String devId, Long rentId, PatDetails patDetails) { // 璁惧鏍囨敞 宸查鍙� 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 ); return deviceMapper.updateById(deviceDO); } @@ -782,11 +763,56 @@ 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_WAITING.getStatus()); + if (!affinityAffinityWaitingItems.isEmpty()) { + QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0); + tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); + queueMapper.updateById(tmpQueueDO); + } + } + + private void procAffinityWhenReadyFinish(/*IN,OUT*/QueueDO bedOnStageQueueItem, Integer[] affinityCheckTypes) { + // 濡傛灉瀛樺湪 [瀹夎涓璢 浜插拰椤癸紝鍒欒窡闅忓叾涓竴涓翰鍜岄」 + List<QueueDO> affinityInstallingItems = queueMapper.getCurPatGivenCheckTypesAndStatus( + bedOnStageQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.INSTALLING.getStatus()); + if (!affinityInstallingItems.isEmpty()) { + QueueDO affinityInstallingItem = affinityInstallingItems.get(0); + bedOnStageQueueItem.setStatus(QueueStatusEnum.AFFINITY_RECEIVED.getStatus()); // 浜插拰-棰嗙敤 + bedOnStageQueueItem.setRoomId( affinityInstallingItem.getRoomId() ); + bedOnStageQueueItem.setBedNo( affinityInstallingItem.getBedNo() ); // 棰嗙敤 鍒� 瀹夎 鍙兘浼氬湪涓嶅悓宸ヤ綅 + } + + // 濡傛灉瀛樺湪 [浜插拰-鎺掗槦] 浜插拰椤癸紝鍒欓�夋嫨 鍏朵腑涓�涓翰鍜岄」 鎺ユ浛鍏� 澶勪簬 [灏辫瘖涓璢 + List<QueueDO> affinityAffinityWaitingItems = queueMapper.getCurPatGivenCheckTypesAndStatus( + bedOnStageQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY_WAITING.getStatus()); + if (!affinityAffinityWaitingItems.isEmpty()) { + QueueDO tmpQueueDO = affinityAffinityWaitingItems.get(0); + tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); + queueMapper.updateById( tmpQueueDO ); + } + } + + private void procAffinityWhenInstallFinish(QueueDO bedInstallingQueueItem, Integer[] affinityCheckTypes) { + List<QueueDO> affinityAffinityReceivedItems = queueMapper.getCurPatGivenCheckTypesAndStatus( + bedInstallingQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY_RECEIVED.getStatus()); + if (!affinityAffinityReceivedItems.isEmpty()) { + QueueDO tmpQueueDO = affinityAffinityReceivedItems.get(0); + tmpQueueDO.setStatus(QueueStatusEnum.INSTALLING.getStatus()); + tmpQueueDO.setRoomId( bedInstallingQueueItem.getRoomId() ); + tmpQueueDO.setBedNo( bedInstallingQueueItem.getBedNo() ); // 浠� [棰嗙敤] 鍒� [瀹夎]锛� 鍙灔鍦ㄤ笉鍚屽伐浣嶄笂鎿嶄綔 + queueMapper.updateById(tmpQueueDO); + } + } + } -- Gitblit v1.9.3