From 28314081239ddbdb0bec61ab7fc87bcab05202d8 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期四, 14 十一月 2024 13:01:41 +0800 Subject: [PATCH] refactor 亲和性 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java | 129 ++++++++++++++++++++++++++---------------- 1 files changed, 79 insertions(+), 50 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 9342922..fc52a46 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 @@ -81,7 +81,7 @@ jobTypeList.add( DevRentStateEnum.ROUTINE_CANCELLED.getState()); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); if (null == jobRecordDO) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); + 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) { @@ -104,6 +104,7 @@ jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() ); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); @@ -135,23 +136,23 @@ // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 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); } + /** + * 棰嗙敤瀹屾垚 鎿嶄綔 + * @param createReqVO 鍒涘缓淇℃伅 + * @return + */ @Override @Transactional(rollbackFor = Exception.class) public CommonResult<Long> readyOperation(DevRentSaveReqVO createReqVO) { Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); - Long rent_id = createReqVO.getId(); + Long rent_id = createReqVO.getId(); // dev_rent 琛ㄧ殑ID // 鏍囨敞璁惧 宸查鍙� Integer ret = markDevRecieved(createReqVO.getDevId(), rent_id); @@ -164,7 +165,7 @@ jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState()); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); if (null == jobRecordDO) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); + 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) { @@ -187,6 +188,7 @@ jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY.getState() ); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); @@ -209,37 +211,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> affinityReadyItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstOnStageQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.READY.getStatus()); - if (!affinityReadyItems.isEmpty()) { - QueueDO tmpQueueDO = affinityReadyItems.get(0); - tmpQueueDO.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); - queueMapper.updateById(tmpQueueDO); - } else { - 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); } @@ -270,7 +253,7 @@ // 绗竴娆� 瀹夎鎿嶄綔 if (null == jobRecordDO) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState()); + List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.READY.getState()); if (devRentDOList.size() == 0) throw exception(DEV_INSTALL_NOT_RECEIVED); else if (devRentDOList.size() != 1) { @@ -293,6 +276,7 @@ jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALLED.getState() ); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); @@ -314,21 +298,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); @@ -362,6 +341,7 @@ 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 { @@ -400,6 +380,7 @@ 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 { @@ -431,7 +412,7 @@ jobTypeList.add( DevRentStateEnum.ROUTINE_CANCELLED.getState()); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); if (null == jobRecordDO) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); + List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState()); if (devRentDOList.size() != 1) throw exception(ROUTINE_CHECK_EXIST); @@ -451,6 +432,7 @@ jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); @@ -491,7 +473,7 @@ jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState()); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); if (null == jobRecordDO) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); + List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.FREE.getState()); if (devRentDOList.size() != 1) throw exception(DEV_INSTALL_EXIST); @@ -511,6 +493,7 @@ jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); @@ -551,7 +534,7 @@ jobTypeList.add( DevRentStateEnum.INSTALL_CANCELLED.getState()); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); if (null == jobRecordDO) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState()); + List<DevRentDO> devRentDOList = devRentMapper.selectByPatAndChecktypeAndState(createReqVO.getPatId(), createReqVO.getCheckType(), DevRentStateEnum.READY.getState()); if (devRentDOList.size() != 1) throw exception(DEV_INSTALL_EXIST); @@ -571,6 +554,7 @@ jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType( createReqVO.getCheckType() ); JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); jobRecordMapper.insert(jobRecord); @@ -629,6 +613,7 @@ 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 { @@ -781,5 +766,49 @@ 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(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