eight
2024-10-14 24b7c98e01c211e93f00293e6e4e96ba1b9db93f
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
@@ -7,8 +7,10 @@
import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordDO;
import cn.lihu.jh.module.ecg.dal.mysql.devmanage.DeviceMapper;
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 org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@@ -48,6 +50,9 @@
    @Resource
    DeviceMapper deviceMapper;
    @Resource
    QueueMapper queueMapper;
    @Override
    public CommonResult<Long> registerOperation(DevRentSaveReqVO createReqVO) {
        Long rent_id = createDevRent(createReqVO);
@@ -55,6 +60,71 @@
    }
    @Override
    public CommonResult<Long> routineFinishOperation(RoutineFinishReqVO routineFinishReqVO) {
        DevRentSaveReqVO createReqVO = BeanUtils.toBean(routineFinishReqVO, DevRentSaveReqVO.class);
        Long userId = SecurityFrameworkUtils.getLoginUserId();
        String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
        // 同样 在预约确实时 就进入 [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();
@@ -99,7 +169,10 @@
            updateDevRent( createReqVO );
            JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId);
            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() );
@@ -110,6 +183,11 @@
                jobRecordMapper.updateById(jobRecordDO);
            }
        }
        // 更新..队列状态
        queueMapper.updateBedQueueStatus(createReqVO.getRoomId(), createReqVO.getBedNo(),
                QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus());
        return CommonResult.success(rent_id);
    }
@@ -126,7 +204,15 @@
        }
        Long rent_id = createReqVO.getId();
        if (null == rent_id) {
        // 检查 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.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState());
            if (devRentDOList.size() == 0)
                return CommonResult.error(DEV_INSTALL_NOT_RECEIVED);
@@ -156,20 +242,21 @@
        } else {
            // 撤销 放弃操作
            createReqVO.setState( DevRentStateEnum.INSTALLED.getState() );
            updateDevRent( createReqVO );
            JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId);
            if (null != jobRecordDO) {
                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);
            }
            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());
        return CommonResult.success(rent_id);
    }
@@ -185,7 +272,9 @@
        // 设备恢复到空闲
        resumeDevFree( updateReqVO.getDevId() );
        JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId);
        List<Integer> jobTypeList = new ArrayList<Integer>();
        jobTypeList.add( DevRentStateEnum.DISMANTLED.getState());
        JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
        if (jobRecordDO == null) {
            JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
            jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
@@ -213,6 +302,7 @@
    }
    @Override
    @Transactional
    public Long dataEntryOperation(DevRentSaveReqVO updateReqVO) {
        updateReqVO.setState( DevRentStateEnum.DATAENTERED.getState() );
        updateDevRent( updateReqVO );
@@ -220,7 +310,9 @@
        Long userId = SecurityFrameworkUtils.getLoginUserId();
        String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
        JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId);
        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() );
@@ -241,7 +333,6 @@
            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();
@@ -249,7 +340,7 @@
    @Override
    @Transactional
    public CommonResult<Long> cancelOperation(DevCancelReqVO cancelReqVO) {
    public CommonResult<Long> cancelReadyOperation(DevCancelReqVO cancelReqVO) {
        Long userId = SecurityFrameworkUtils.getLoginUserId();
        String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
@@ -260,18 +351,17 @@
        DevRentSaveReqVO createReqVO = BeanUtils.toBean(cancelReqVO, DevRentSaveReqVO.class);
        createReqVO.setDevId(null);
        createReqVO.setState( DevRentStateEnum.CANCELLED.getState() );
        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.CANCELLED.getState() );
            createReqVO.setState( DevRentStateEnum.READY_CANCELLED.getState() );
            updateDevRent( createReqVO );
            JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
@@ -281,7 +371,7 @@
            jobRecordSaveReqVO.setDocName(userNickname);
            jobRecordSaveReqVO.setPatId(createReqVO.getPatId());
            jobRecordSaveReqVO.setPatName(createReqVO.getPatName());
            jobRecordSaveReqVO.setJobType( DevRentStateEnum.CANCELLED.getState() );
            jobRecordSaveReqVO.setJobType( DevRentStateEnum.READY_CANCELLED.getState() );
            jobRecordSaveReqVO.setJobTime(createReqVO.getRentTime());
            jobRecordSaveReqVO.setRemark(createReqVO.getRemark());
            jobRecordSaveReqVO.setSummary("");
@@ -291,16 +381,78 @@
        } else {
            updateDevRent( createReqVO );
            JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(rent_id, userId);
            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.CANCELLED.getState() );
                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);
            }
        }
        return CommonResult.success(rent_id);
    }
    @Override
    @Transactional
    public CommonResult<Long> cancelInstallOperation(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.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.selectByPatIdAndState(createReqVO.getPatId(), DevRentStateEnum.READY.getState());
            if (devRentDOList.size() != 1)
                return CommonResult.error(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("");
            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);
    }
@@ -317,7 +469,9 @@
        Long userId = SecurityFrameworkUtils.getLoginUserId();
        String userNickname = SecurityFrameworkUtils.getLoginUserNickname();
        JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId);
        List<Integer> jobTypeList = new ArrayList<Integer>();
        jobTypeList.add( DevRentStateEnum.LOST.getState());
        JobRecordDO jobRecordDO = jobRecordMapper.selectByRentIdDocId(updateReqVO.getId(), userId, jobTypeList);
        if (jobRecordDO == null) {
            JobRecordSaveReqVO jobRecordSaveReqVO = new JobRecordSaveReqVO();
            jobRecordSaveReqVO.setRentId( updateReqVO.getId() );
@@ -393,7 +547,7 @@
    public DevRentDO getInstalledOrCancelledRent(DevRentSearchReqVO searchReqVO) {
        List<Integer> stateList = new ArrayList<>();
        stateList.add( DevRentStateEnum.INSTALLED.getState() );
        stateList.add( DevRentStateEnum.CANCELLED.getState() );
        stateList.add( DevRentStateEnum.INSTALL_CANCELLED.getState());
        searchReqVO.setStateList( stateList );
        return devRentMapper.getRentByState(searchReqVO);
    }
@@ -402,7 +556,7 @@
    public DevRentDO getReadyOrCancelledRent(DevRentSearchReqVO searchReqVO) {
        List<Integer> stateList = new ArrayList<>();
        stateList.add( DevRentStateEnum.READY.getState() );
        stateList.add( DevRentStateEnum.CANCELLED.getState() );
        stateList.add( DevRentStateEnum.READY_CANCELLED.getState());
        searchReqVO.setStateList( stateList );
        return devRentMapper.getRentByState(searchReqVO);
    }
@@ -420,6 +574,7 @@
        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);
        }
@@ -429,8 +584,9 @@
    private Integer markDevInUse(String devId) {
        // 设备标注 在使用
        DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId);
        if (null != deviveDO && deviveDO.getState() == DevStateEnum.RECEIVED.getState()) {
        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);
        }
@@ -442,7 +598,7 @@
        DeviceDO deviveDO = deviceMapper.getDeviceByDevId(devId);
        if (null != deviveDO) {
            deviveDO.setState( DevStateEnum.LOST.getState() );
            deviveDO.setLoseDate( localDate ); // createReqVO.getReturnTime().toLocalDate()
            deviveDO.setStateDate( localDate );
            return deviceMapper.updateById(deviveDO);
        }
@@ -454,7 +610,7 @@
        DeviceDO deviveDO = deviceMapper.getDeviceByDevId( devId );
        if (null != deviveDO) {
            deviveDO.setState( DevStateEnum.FREE.getState() );
            deviveDO.setLoseDate( null );
            deviveDO.setStateDate( LocalDate.now() );
            return deviceMapper.updateById(deviveDO);
        }