From 4924f5e98bfbc78693466b667e768092181112eb Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期三, 20 十一月 2024 16:22:19 +0800 Subject: [PATCH] 预约小票打印 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java | 146 ++++++++++++++++++++++++++++++++---------------- 1 files changed, 98 insertions(+), 48 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 278c4cc..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; @@ -81,7 +83,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 +106,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); @@ -123,21 +126,38 @@ } // 鏇存柊..闃熷垪鐘舵�� - queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), - QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); + //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), + // QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); + + QueueDO firstOnStageQueueItem = queueMapper.getFirstItemByBedAndStatus(createReqVO.getRoomId(), + createReqVO.getBedNo(), QueueStatusEnum.ONSTAGE.getStatus()); + // QueueStatusEnum.ONSTAGE => QueueStatusEnum.FINISH + firstOnStageQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus()); // 榛樿鐘舵�� 璁剧疆 + queueMapper.updateById( firstOnStageQueueItem ); + + // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 + CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( firstOnStageQueueItem.getBookCheckType() ); + if (checkTypeDO.getAffinityCheckTypes().length > 0) { + 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); + Integer ret = markDevRecieved(createReqVO.getDevId(), rent_id, createReqVO.getPatDetails()); if (null == ret || 0 == ret) { throw exception(DEVICE_NOT_FREE); } @@ -147,7 +167,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) { @@ -170,6 +190,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); @@ -192,37 +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> 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); } @@ -253,7 +255,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) { @@ -276,6 +278,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); @@ -297,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); @@ -345,6 +343,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 { @@ -383,6 +382,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 { @@ -414,7 +414,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); @@ -434,6 +434,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); @@ -474,7 +475,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); @@ -494,6 +495,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); @@ -534,7 +536,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); @@ -554,6 +556,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); @@ -612,6 +615,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 { @@ -704,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); } @@ -758,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