From eb3195e397b023cfae1ee4dea7fbc29f1271504f Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期六, 07 六月 2025 15:37:51 +0800 Subject: [PATCH] 代码提交 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java | 998 +++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 635 insertions(+), 363 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 c0fcb55..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,33 +1,40 @@ 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.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.module.ecg.enums.ErrorCodeConstants.*; @@ -39,7 +46,14 @@ */ @Service @Validated +@Slf4j public class DevRentServiceImpl implements DevRentService { + + @Resource + QueueServiceTxFunctions queueServiceTxFunctions; + + @Resource + private FeeConfirmFeignService feeConfirmFeignService; @Resource private DevRentMapper devRentMapper; @@ -51,7 +65,17 @@ DeviceMapper deviceMapper; @Resource + AppointmentMapper appointmentMapper; + + @Resource QueueMapper queueMapper; + + @Resource + CheckTypeMapper checkTypeMapper; + + @Resource + private JHFWWebServiceClient jhfwWebServiceClient; + @Override public CommonResult<Long> registerOperation(DevRentSaveReqVO createReqVO) { @@ -60,168 +84,32 @@ } @Override - public CommonResult<Long> routineFinishOperation(DevRentSaveReqVO createReqVO) { + @Transactional(rollbackFor = Exception.class) + public CommonResult<Long> routineFinishOperation(RoutineFinishReqVO routineFinishReqVO) { + DevRentSaveReqVO createReqVO = BeanUtils.toBean(routineFinishReqVO, DevRentSaveReqVO.class); + Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + String userHisId = SecurityFrameworkUtils.getLoginUserHisId(); - // 鍚屾牱 鍦ㄩ绾︾‘瀹炴椂 灏辫繘鍏� [dev_rent] 琛ㄤ簡 - Long rent_id = createReqVO.getId(); - if (null == rent_id) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); - if (devRentDOList.size() == 0) - return CommonResult.error(DEV_INSTALL_NOT_APPOINTMENT); - else if (devRentDOList.size() != 1) { - return CommonResult.error(DEV_INSTALL_EXCEPTION); - } - - rent_id = devRentDOList.getFirst().getId(); - createReqVO.setId( rent_id ); - createReqVO.setState( DevRentStateEnum.ROUTINE_FINISH.getState() ); - updateDevRent( createReqVO ); - - JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); - jobRecordSaveReqVO.setRentId(rent_id); - jobRecordSaveReqVO.setDevId(createReqVO.getDevId()); - jobRecordSaveReqVO.setDocId(userId); - jobRecordSaveReqVO.setDocName(userNickname); - jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); - jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); - jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); - jobRecordSaveReqVO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() ); - jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); - jobRecordSaveReqVO.setSummary(""); - - JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); - jobRecordMapper.insert(jobRecord); - } else { - // 鎾ら攢 鏀惧純鎿嶄綔 - createReqVO.setState( DevRentStateEnum.ROUTINE_FINISH.getState() ); - - updateDevRent( createReqVO ); - - List<Integer> jobTypeList = new ArrayList<Integer>(); - jobTypeList.add( DevRentStateEnum.ROUTINE_FINISH.getState()); - jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState()); - JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); - if (null != jobRecordDO) { - jobRecordDO.setDevId(createReqVO.getDevId()); - jobRecordDO.setJobType( DevRentStateEnum.ROUTINE_FINISH.getState() ); - jobRecordDO.setJobTime(createReqVO.getRentTime()); - jobRecordDO.setRemark(createReqVO.getRemark()); - jobRecordDO.setUpdater(String.valueOf(userId)); - jobRecordDO.setUpdateTime(LocalDateTime.now()); - jobRecordMapper.updateById(jobRecordDO); - } - } - - // 鏇存柊..闃熷垪鐘舵�� - queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), - QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); - - return CommonResult.success(rent_id); - } - - @Override - @Transactional - public CommonResult<Long> readyOperation(DevRentSaveReqVO createReqVO) { - Long userId = SecurityFrameworkUtils.getLoginUserId(); - String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); - - // 鏍囨敞璁惧 宸查鍙� - Integer ret = markDevRecieved(createReqVO.getDevId()); - if (null == ret || 0 == ret) { - return CommonResult.error(DEVICE_NOT_FREE); - } - - Long rent_id = createReqVO.getId(); - if (null == rent_id) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); - if (devRentDOList.size() == 0) - return CommonResult.error(DEV_INSTALL_NOT_APPOINTMENT); - else if (devRentDOList.size() != 1) { - return CommonResult.error(DEV_INSTALL_EXCEPTION); - } - - rent_id = devRentDOList.getFirst().getId(); - createReqVO.setId( rent_id ); - createReqVO.setState( DevRentStateEnum.READY.getState() ); - updateDevRent( createReqVO ); - - JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); - jobRecordSaveReqVO.setRentId(rent_id); - jobRecordSaveReqVO.setDevId(createReqVO.getDevId()); - jobRecordSaveReqVO.setDocId(userId); - jobRecordSaveReqVO.setDocName(userNickname); - jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); - jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); - jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); - jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY.getState() ); - jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); - jobRecordSaveReqVO.setSummary(""); - - JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); - jobRecordMapper.insert(jobRecord); - } else { - // 鎾ら攢 鏀惧純鎿嶄綔 - createReqVO.setState( DevRentStateEnum.READY.getState() ); - - updateDevRent( createReqVO ); - - List<Integer> jobTypeList = new ArrayList<Integer>(); - jobTypeList.add( DevRentStateEnum.READY.getState()); - jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState()); - JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); - if (null != jobRecordDO) { - jobRecordDO.setDevId(createReqVO.getDevId()); - jobRecordDO.setJobType( DevRentStateEnum.READY.getState() ); - jobRecordDO.setJobTime(createReqVO.getRentTime()); - jobRecordDO.setRemark(createReqVO.getRemark()); - jobRecordDO.setUpdater(String.valueOf(userId)); - jobRecordDO.setUpdateTime(LocalDateTime.now()); - jobRecordMapper.updateById(jobRecordDO); - } - } - - // 鏇存柊..闃熷垪鐘舵�� - queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), - QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus()); - - return CommonResult.success(rent_id); - } - - @Override - @Transactional - public CommonResult<Long> installOperation(DevRentSaveReqVO createReqVO) { - Long userId = SecurityFrameworkUtils.getLoginUserId(); - String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); - - // 璁剧疆璁惧 浣跨敤涓� - Integer ret = markDevInUse(createReqVO.getDevId()); - if (null == ret || 0 == ret) { - return CommonResult.error(DEVICE_NOT_RECEIVED); - } - + // 鍦ㄩ绾︾‘璁ゆ椂 灏辫繘鍏� [dev_rent] 琛ㄤ簡 Long rent_id = createReqVO.getId(); - // 妫�鏌� job_record 鐢ㄤ簬纭鏄惁鏄涓�娆″畨瑁呮搷浣� List<Integer> jobTypeList = new ArrayList<Integer>(); - jobTypeList.add( DevRentStateEnum.INSTALLED.getState()); - jobTypeList.add( DevRentStateEnum.INSTALL_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.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState()); - if (devRentDOList.size() == 0) - return CommonResult.error(DEV_INSTALL_NOT_RECEIVED); + 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) { - return CommonResult.error(DEV_INSTALL_EXCEPTION); + 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.ROUTINE_FINISH.getState()); + updateDevRent(createReqVO); JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); jobRecordSaveReqVO.setRentId(rent_id); @@ -231,19 +119,21 @@ jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); - jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALLED.getState() ); + 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); } else { // 鎾ら攢 鏀惧純鎿嶄綔 - createReqVO.setState( DevRentStateEnum.INSTALLED.getState() ); - updateDevRent( createReqVO ); + createReqVO.setState(DevRentStateEnum.ROUTINE_FINISH.getState()); + + updateDevRent(createReqVO); jobRecordDO.setDevId(createReqVO.getDevId()); - jobRecordDO.setJobType( DevRentStateEnum.INSTALLED.getState() ); + jobRecordDO.setJobType(DevRentStateEnum.ROUTINE_FINISH.getState()); jobRecordDO.setJobTime(createReqVO.getRentTime()); jobRecordDO.setRemark(createReqVO.getRemark()); jobRecordDO.setUpdater(String.valueOf(userId)); @@ -252,180 +142,309 @@ } // 鏇存柊..闃熷垪鐘舵�� - queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), - QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus()); + //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), + // QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); + + QueueDO firstOnStageQueueItem = queueMapper.getBedFirstQueueItemByStatus(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(); + + // 鍦ㄩ绾︾‘璁ゆ椂 灏辫繘鍏� [dev_rent] 琛ㄤ簡 + Long rent_id = createReqVO.getId(); // dev_rent 琛ㄧ殑ID + + // 鏍囨敞璁惧 宸查鍙� + Integer ret = markDevRecieved(createReqVO.getDevId(), rent_id, createReqVO.getPatDetails()); + if (null == ret || 0 == ret) { + 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()); + 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); + 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); + + JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); + jobRecordSaveReqVO.setRentId(rent_id); + jobRecordSaveReqVO.setDevId(createReqVO.getDevId()); + jobRecordSaveReqVO.setDocId(userId); + jobRecordSaveReqVO.setDocName(userNickname); + jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); + jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); + jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); + jobRecordSaveReqVO.setJobType(DevRentStateEnum.RECEIVED.getState()); + jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); + jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType()); + + JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); + jobRecordMapper.insert(jobRecord); + } else { + // 鎾ら攢 鏀惧純鎿嶄綔 + createReqVO.setState(DevRentStateEnum.RECEIVED.getState()); + + updateDevRent(createReqVO); + + jobRecordDO.setDevId(createReqVO.getDevId()); + jobRecordDO.setJobType(DevRentStateEnum.RECEIVED.getState()); + jobRecordDO.setJobTime(createReqVO.getRentTime()); + jobRecordDO.setRemark(createReqVO.getRemark()); + jobRecordDO.setUpdater(String.valueOf(userId)); + jobRecordDO.setUpdateTime(LocalDateTime.now()); + jobRecordMapper.updateById(jobRecordDO); + } + + // 鏇存柊..闃熷垪鐘舵�� + //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), + // 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()); + bedOnStageQueueItem.setStatus(QueueStatusEnum.RECEIVED.getStatus()); // [宸查鐢╙ 鐘舵�� + bedOnStageQueueItem.setAffinityItem(0); // 浜插拰鏍囪 娓呴櫎锛屽湪瀹夎闃舵閲嶆柊浜插拰 + + // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 , 鏇存柊 bedOnStageQueueItem + if (checkTypeDO.getAffinityCheckTypes().length > 0) { + procAffinityWhenReadyFinish(/*IN, OUT*/bedOnStageQueueItem, checkTypeDO.getAffinityCheckTypes()); + } + + queueMapper.updateById(bedOnStageQueueItem); + return CommonResult.success(rent_id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult<Long> installOperation(DevRentSaveReqVO createReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + Long rent_id = createReqVO.getId(); + + DevRentDO devRentDO = getDevRent(rent_id); + + // 瀵逛簬宸叉湁棰嗙敤锛屼絾鏄鏈烘椂浣跨敤鐨勪笉鏄凡棰嗙敤璁惧锛屾姤閿� + if (null != devRentDO.getDevId() && !createReqVO.getDevId().equals(devRentDO.getDevId())) { + throw exception(DEVICE_NOT_PAT_RECEIVED); + } + + // 璁剧疆璁惧 浣跨敤涓� + Integer ret = markDevInUse(createReqVO.getDevId(), rent_id); + if (null == ret || 0 == ret) { + throw exception(DEVICE_NOT_RECEIVED); + } + + // 妫�鏌� job_record 鐢ㄤ簬纭鏄惁鏄涓�娆″畨瑁呮搷浣� + List<Integer> jobTypeList = new ArrayList<Integer>(); + 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); + 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); + + JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); + jobRecordSaveReqVO.setRentId(rent_id); + jobRecordSaveReqVO.setDevId(createReqVO.getDevId()); + jobRecordSaveReqVO.setDocId(userId); + jobRecordSaveReqVO.setDocName(userNickname); + jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); + jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); + jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); + 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); + } else { + // 鎾ら攢 鏀惧純鎿嶄綔 + createReqVO.setState(DevRentStateEnum.INSTALLED.getState()); + updateDevRent(createReqVO); + + jobRecordDO.setDevId(createReqVO.getDevId()); + jobRecordDO.setJobType(DevRentStateEnum.INSTALLED.getState()); + jobRecordDO.setJobTime(createReqVO.getRentTime()); + jobRecordDO.setRemark(createReqVO.getRemark()); + jobRecordDO.setUpdater(String.valueOf(userId)); + jobRecordDO.setUpdateTime(LocalDateTime.now()); + jobRecordMapper.updateById(jobRecordDO); + } + + // 鏇存柊..闃熷垪鐘舵�� + //queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), + // QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus()); + + // QueueStatusEnum.INSTALLING => QueueStatusEnum.FINISH + QueueDO bedInstallingQueueItem = queueMapper.getBedFirstQueueItemByStatus(createReqVO.getRoomId(), createReqVO.getBedNo(), QueueStatusEnum.INSTALLING.getStatus()); + bedInstallingQueueItem.setStatus(QueueStatusEnum.FINISH.getStatus()); // 榛樿鐘舵�� 璁剧疆 + queueMapper.updateById(bedInstallingQueueItem); + + // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 + CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem(bedInstallingQueueItem.getBookCheckType()); + if (checkTypeDO.getAffinityCheckTypes().length > 0) { + procAffinityWhenInstallFinish(bedInstallingQueueItem, checkTypeDO.getAffinityCheckTypes()); + } return CommonResult.success(rent_id); } @Override - @Transactional + @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(); // 璁惧鎭㈠鍒扮┖闂� - resumeDevFree( updateReqVO.getDevId() ); + 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 (jobRecordDO == null) { + 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() ); - 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() ); - jobRecordMapper.updateById(jobRecordDO); - } - return updateReqVO.getId(); - } - - @Override - @Transactional - public Long dataEntryOperation(DevRentSaveReqVO 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()); - JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList); - if (jobRecordDO == null) { - 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() ); - 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) ); - jobRecordMapper.updateById(jobRecordDO); - } - return updateReqVO.getId(); - } - - @Override - @Transactional - public CommonResult<Long> cancelReadyOperation(DevCancelReqVO cancelReqVO) { - Long userId = SecurityFrameworkUtils.getLoginUserId(); - String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); - - // 鑻ヤ粠 瑁呮満 鏀逛负 鍙栨秷瑁呮満锛屾仮澶嶈澶囩姸鎬� - if (null != cancelReqVO.getDevId()) { - resumeDevFree( cancelReqVO.getDevId() ); - } - - DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class); - createReqVO.setDevId(null); - createReqVO.setState( DevRentStateEnum.READY_CANCELLED.getState()); - - Long rent_id = createReqVO.getId(); - if (null == rent_id) { - List<DevRentDO> devRentDOList = devRentMapper.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.FREE.getState()); - if (devRentDOList.size() != 1) - return CommonResult.error(DEV_INSTALL_EXIST); - - rent_id = devRentDOList.getFirst().getId(); - createReqVO.setId( rent_id ); - createReqVO.setState( DevRentStateEnum.READY_CANCELLED.getState() ); - updateDevRent( createReqVO ); - - JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); - jobRecordSaveReqVO.setRentId(rent_id); - jobRecordSaveReqVO.setDevId(null); + jobRecordSaveReqVO.setRentId(updateReqVO.getId()); + jobRecordSaveReqVO.setDevId(updateReqVO.getDevId()); jobRecordSaveReqVO.setDocId(userId); jobRecordSaveReqVO.setDocName(userNickname); - jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); - jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); - jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY_CANCELLED.getState() ); - jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); - jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); - jobRecordSaveReqVO.setSummary(""); - + 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 { - updateDevRent( createReqVO ); - - List<Integer> jobTypeList = new ArrayList<Integer>(); - jobTypeList.add( DevRentStateEnum.READY.getState()); - jobTypeList.add( DevRentStateEnum.READY_CANCELLED.getState()); - JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId, jobTypeList); - if (null != jobRecordDO) { - jobRecordDO.setDevId(null); - jobRecordDO.setJobType(DevRentStateEnum.READY_CANCELLED.getState()); - jobRecordDO.setJobTime(createReqVO.getRentTime()); - jobRecordDO.setRemark(createReqVO.getRemark()); - jobRecordDO.setUpdater(String.valueOf(userId)); - jobRecordDO.setUpdateTime(LocalDateTime.now()); - jobRecordMapper.updateById(jobRecordDO); - } + 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 CommonResult.success(rent_id); + return updateReqVO.getId(); } @Override - @Transactional - public CommonResult<Long> cancelInstallOperation(DevCancelReqVO cancelReqVO) { + @Transactional(rollbackFor = Exception.class) + public Long dataEntryOperation(DevRentSaveReqVO updateReqVO) { + updateReqVO.setState(DevRentStateEnum.DATAENTERED.getState()); + updateDevRent(updateReqVO); + Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); - // 鑻ヤ粠 瑁呮満 鏀逛负 鍙栨秷瑁呮満锛屾仮澶嶈澶囩姸鎬� - if (null != cancelReqVO.getDevId()) { - resumeDevFree( cancelReqVO.getDevId() ); + List<Integer> jobTypeList = new ArrayList<Integer>(); + 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()); + 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)); + jobRecordMapper.updateById(jobRecordDO); } + return updateReqVO.getId(); + } + + // 甯歌妫�鏌� 鍙栨秷 + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult<Long> cancelRoutineOperation(DevCancelReqVO cancelReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class); createReqVO.setDevId(null); - createReqVO.setState( DevRentStateEnum.INSTALL_CANCELLED.getState() ); + createReqVO.setState(DevRentStateEnum.ROUTINE_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.ROUTINE_FINISH.getState()); + 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.READY.getState()); - if (devRentDOList.size() != 1) - return CommonResult.error(DEV_INSTALL_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.INSTALL_CANCELLED.getState() ); - updateDevRent( createReqVO ); + createReqVO.setId(rent_id); + createReqVO.setState(DevRentStateEnum.ROUTINE_CANCELLED.getState()); + updateDevRent(createReqVO); JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); jobRecordSaveReqVO.setRentId(rent_id); @@ -434,18 +453,19 @@ jobRecordSaveReqVO.setDocName(userNickname); jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); - jobRecordSaveReqVO.setJobType( DevRentStateEnum.INSTALL_CANCELLED.getState() ); + jobRecordSaveReqVO.setJobType(DevRentStateEnum.ROUTINE_CANCELLED.getState()); jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); jobRecordSaveReqVO.setSummary(""); + 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.ROUTINE_CANCELLED.getState()); jobRecordDO.setJobTime(createReqVO.getRentTime()); jobRecordDO.setRemark(createReqVO.getRemark()); jobRecordDO.setUpdater(String.valueOf(userId)); @@ -456,41 +476,173 @@ } @Override - @Transactional - public CommonResult<Long> loseOperation(DevRentSaveReqVO updateReqVO) { - // 璁惧閬楀け鏃�, 鏍囨敞閬楀け - markDevLost( updateReqVO.getDevId(), updateReqVO.getReturnTime().toLocalDate() ); + @Transactional(rollbackFor = Exception.class) + public CommonResult<Long> cancelReadyOperation(DevCancelReqVO cancelReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + Long rentId = cancelReqVO.getId(); - updateReqVO.setState( DevRentStateEnum.LOST.getState() ); - updateDevRent( updateReqVO ); + // 鑻ヤ粠 瑁呮満 鏀逛负 鍙栨秷瑁呮満锛屾仮澶嶈澶囩姸鎬� + if (null != cancelReqVO.getDevId()) { + markDevFree(cancelReqVO.getDevId(), rentId); + } + + DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class); + createReqVO.setDevId(null); + 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()); + 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); + + rent_id = devRentDOList.getFirst().getId(); + createReqVO.setId(rent_id); + createReqVO.setState(DevRentStateEnum.RECEIVED_CANCELLED.getState()); + updateDevRent(createReqVO); + + JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); + jobRecordSaveReqVO.setRentId(rent_id); + jobRecordSaveReqVO.setDevId(null); + jobRecordSaveReqVO.setDocId(userId); + jobRecordSaveReqVO.setDocName(userNickname); + jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); + jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); + jobRecordSaveReqVO.setJobType(DevRentStateEnum.RECEIVED_CANCELLED.getState()); + jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); + jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); + jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType()); + + JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); + jobRecordMapper.insert(jobRecord); + } else { + updateDevRent(createReqVO); + + jobRecordDO.setDevId(null); + jobRecordDO.setJobType(DevRentStateEnum.RECEIVED_CANCELLED.getState()); + jobRecordDO.setJobTime(createReqVO.getRentTime()); + jobRecordDO.setRemark(createReqVO.getRemark()); + jobRecordDO.setUpdater(String.valueOf(userId)); + jobRecordDO.setUpdateTime(LocalDateTime.now()); + jobRecordMapper.updateById(jobRecordDO); + } + return CommonResult.success(rent_id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult<Long> cancelInstallOperation(DevCancelReqVO cancelReqVO) { + Long userId = SecurityFrameworkUtils.getLoginUserId(); + String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); + Long rentId = cancelReqVO.getId(); + + // 鑻ヤ粠 瑁呮満 鏀逛负 鍙栨秷瑁呮満锛屾仮澶嶈澶囩姸鎬� + if (null != cancelReqVO.getDevId()) { + markDevFree(cancelReqVO.getDevId(), rentId); + } + + DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class); + createReqVO.setDevId(null); + 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()); + 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); + + rent_id = devRentDOList.getFirst().getId(); + createReqVO.setId(rent_id); + createReqVO.setState(DevRentStateEnum.INSTALL_CANCELLED.getState()); + updateDevRent(createReqVO); + + JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO(); + jobRecordSaveReqVO.setRentId(rent_id); + jobRecordSaveReqVO.setDevId(null); + jobRecordSaveReqVO.setDocId(userId); + jobRecordSaveReqVO.setDocName(userNickname); + jobRecordSaveReqVO.setPatId(createReqVO.getPatId()); + jobRecordSaveReqVO.setPatName(createReqVO.getPatName()); + jobRecordSaveReqVO.setJobType(DevRentStateEnum.INSTALL_CANCELLED.getState()); + jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime()); + jobRecordSaveReqVO.setRemark(createReqVO.getRemark()); + jobRecordSaveReqVO.setSummary(""); + jobRecordSaveReqVO.setCheckType(createReqVO.getCheckType()); + + JobRecordDO jobRecord = BeanUtils.toBean(jobRecordSaveReqVO, JobRecordDO.class); + jobRecordMapper.insert(jobRecord); + } else { + updateDevRent(createReqVO); + + jobRecordDO.setDevId(null); + jobRecordDO.setJobType(DevRentStateEnum.INSTALL_CANCELLED.getState()); + jobRecordDO.setJobTime(createReqVO.getRentTime()); + jobRecordDO.setRemark(createReqVO.getRemark()); + jobRecordDO.setUpdater(String.valueOf(userId)); + jobRecordDO.setUpdateTime(LocalDateTime.now()); + jobRecordMapper.updateById(jobRecordDO); + } + return CommonResult.success(rent_id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult<Long> dismantleExceptionOperation(DevRentSaveReqVO updateReqVO) { + DevStateEnum devStateEnum = null; + DevRentStateEnum devRentStateEnum = null; + if (updateReqVO.getState() == DevStateEnum.DAMAGED.getState()) { + devStateEnum = DevStateEnum.DAMAGED; + devRentStateEnum = DevRentStateEnum.DAMAGED; + } else if (updateReqVO.getState() == DevStateEnum.LOST.getState()) { + devStateEnum = DevStateEnum.LOST; + devRentStateEnum = DevRentStateEnum.LOST; + } else throw exception(DEV_DISMANTLE_EXCEPTION); + + // 璁惧閬楀け鏃�, 鏍囨敞閬楀け + markDevDismantleException(updateReqVO.getDevId(), updateReqVO.getId(), updateReqVO.getReturnTime().toLocalDate(), devStateEnum); + + updateReqVO.setState(devRentStateEnum.getState()); + updateDevRent(updateReqVO); Long userId = SecurityFrameworkUtils.getLoginUserId(); String userNickname = SecurityFrameworkUtils.getLoginUserNickname(); List<Integer> jobTypeList = new ArrayList<Integer>(); - jobTypeList.add( DevRentStateEnum.LOST.getState()); + jobTypeList.add(DevRentStateEnum.DAMAGED.getState()); + jobTypeList.add(DevRentStateEnum.LOST.getState()); JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList); - if (jobRecordDO == null) { + 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.LOST.getState() ); - jobRecordSaveReqVO.setRemark( updateReqVO.getRemark() ); - jobRecordSaveReqVO.setSummary( updateReqVO.getInterference() + " " + updateReqVO.getBaseline() + " " + updateReqVO.getDetachment() ); + 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.LOST.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); } @@ -499,8 +651,6 @@ @Override public Long createDevRent(DevRentSaveReqVO createReqVO) { - // - // 鎻掑叆 DevRentDO devRent = BeanUtils.toBean(createReqVO, DevRentDO.class); devRentMapper.insert(devRent); @@ -538,82 +688,204 @@ @Override public PageResult<DevRentDO> getDevRentPage(DevRentPageReqVO pageReqVO) { + pageReqVO.setState(0); return devRentMapper.selectPage(pageReqVO); } @Override - public DevRentDO getInstalledOrCancelledRent(DevRentSearchReqVO searchReqVO) { + public DevRentDO getExistingRent(DevRentSearchReqVO searchReqVO) { List<Integer> stateList = new ArrayList<>(); - stateList.add( DevRentStateEnum.INSTALLED.getState() ); - stateList.add( DevRentStateEnum.INSTALL_CANCELLED.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); return devRentMapper.getRentByState(searchReqVO); } @Override public DevRentDO getReadyOrCancelledRent(DevRentSearchReqVO searchReqVO) { List<Integer> stateList = new ArrayList<>(); - stateList.add( DevRentStateEnum.READY.getState() ); - stateList.add( DevRentStateEnum.READY_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); } - private Integer markDevRecieved(String devId) { + // 纭垂澶勭悊 + // 杩斿洖鍊�: 0 鎴愬姛 1 澶辫触 2 涓嶇敤纭垂 + @Override + public Integer feeConfirm(Long rentId, String hisId, String userNickname, Boolean isFeeConfirmOrCancel) { + DevRentDO devRentDO = devRentMapper.selectById(rentId); + + // 鏌ヨ妫�鏌ョ被鍨嬶紝纭畾鏄惁闇�瑕佺‘璐� + CheckTypeDO checkTypeDO = checkTypeMapper.getCheckTypeByValue(devRentDO.getCheckType()); + if (0 == checkTypeDO.getExpenseRecognition()) { + return 2; + } + + Integer returnValue = 1; + try { + AppointmentDO appointmentDO = appointmentMapper.getByApplyNo(devRentDO.getApplyNo()); + returnValue = appointmentDO.getPaid() == 1 ? 0 : 1; + } catch (RuntimeException ex) { + returnValue = 1; + } + + if (0 == returnValue) { + devRentMapper.setPaid(rentId, isFeeConfirmOrCancel ? 1 : 0); + } + return returnValue; // 0 鎴愬姛 1 澶辫触 2 涓嶇敤纭垂 + } + + // 鏍囪 璁惧宸茶棰嗗彇 + private Integer markDevRecieved(String devId, Long rentId, PatDetails patDetails) { // 璁惧鏍囨敞 宸查鍙� - DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId); - if (null != deviveDO && deviveDO.getState() == DevStateEnum.FREE.getState()) { - deviveDO.setState( DevStateEnum.RECEIVED.getState() ); - deviveDO.setStateDate( LocalDate.now() ); - return deviceMapper.updateById(deviveDO); + 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); } return 0; } - private Integer markDevInUse(String devId) { - // 璁惧鏍囨敞 鍦ㄤ娇鐢� - DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId); - if (null != deviveDO && (deviveDO.getState() == DevStateEnum.RECEIVED.getState() || deviveDO.getState() == DevStateEnum.FREE.getState())) { - deviveDO.setState( DevStateEnum.INUSE.getState() ); - deviveDO.setStateDate( LocalDate.now() ); - return deviceMapper.updateById(deviveDO); + // 鏍囪 璁惧宸茶浣跨敤 + private Integer markDevInUse(String devId, Long rentId) { + DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId); + if (null == deviceDO) return 0; + + if (DevStateEnum.RECEIVED.isEqual(deviceDO.getState()) && rentId.equals(deviceDO.getRentId())) { + 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); + return deviceMapper.updateById(deviceDO); } return 0; } - private Integer markDevLost(String devId, LocalDate localDate) { + private Integer markDevDismantleException(String devId, Long rentId, LocalDate localDate, DevStateEnum devStateEnum) { // 璁惧鏍囨敞閬楀け - DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId); - if (null != deviveDO) { - deviveDO.setState( DevStateEnum.LOST.getState() ); - deviveDO.setStateDate( localDate ); - return deviceMapper.updateById(deviveDO); + DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId); + if (null != deviceDO && DevStateEnum.INUSE.isEqual(deviceDO.getState()) && rentId.equals(deviceDO.getRentId())) { + deviceDO.setState(devStateEnum.getState()); + deviceDO.setStateDate(localDate); + return deviceMapper.updateById(deviceDO); } return 0; } - private Integer resumeDevFree(String devId) { + private Integer markDevFree(String devId, Long rentId) { // 璁惧鏍囨敞閬楀け 鎭㈠涓虹┖闂� - DeviceDO deviveDO = deviceMapper.getDeviceByDevId( devId ); - if (null != deviveDO) { - deviveDO.setState( DevStateEnum.FREE.getState() ); - deviveDO.setStateDate( LocalDate.now() ); - return deviceMapper.updateById(deviveDO); + DeviceDO deviceDO = deviceMapper.getDeviceByDevId(devId); + if (null != deviceDO && rentId.equals(deviceDO.getRentId())) { + 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()); + 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.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()); // 棰嗙敤 鍒� 瀹夎 鍙兘浼氬湪涓嶅悓宸ヤ綅 + } + + // 濡傛灉瀛樺湪 [浜插拰-鎺掗槦] 浜插拰椤癸紝鍒欓�夋嫨 鍏朵腑涓�涓翰鍜岄」 鎺ユ浛鍏� 澶勪簬 [灏辫瘖涓璢 + 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); + } + } + + // 濡傛灉瀛樺湪 [浜插拰-棰嗙敤] 浜插拰椤癸紝鍒欓�夋嫨 鍏朵腑涓�涓翰鍜岄」 鎺ユ浛鍏� 澶勪簬 [瀹夎涓璢 + private void procAffinityWhenInstallFinish(QueueDO bedInstallingQueueItem, Integer[] affinityCheckTypes) { + 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()); // 浠� [棰嗙敤] 鍒� [瀹夎]锛� 鍙灔鍦ㄤ笉鍚屽伐浣嶄笂鎿嶄綔 + 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"; + + 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"; + + return "01"; + } + } -- Gitblit v1.9.3