eight
2025-04-08 fdc1034997607adbe8da9939c45bd48c3cb03b98
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
@@ -1,23 +1,26 @@
package cn.lihu.jh.module.ecg.service.room;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomResVO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO;
import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper;
import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
import java.util.*;
import javax.annotation.Resource;
import cn.lihu.jh.framework.common.pojo.PageResult;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomProfile;
import cn.lihu.jh.module.ecg.enums.RoomCallingScreenEnum;
import cn.lihu.jh.module.ecg.service.queue.QueueService;
import cn.lihu.jh.module.system.api.oauth2.OAuth2TokenApi;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import cn.lihu.jh.framework.common.pojo.PageResult;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO;
import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper;
import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
import cn.lihu.jh.framework.common.util.object.BeanUtils;
import javax.annotation.Resource;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.ROOM_NOT_EXISTS;
/**
 * 诊室和诊疗床 Service 实现类
@@ -31,10 +34,16 @@
    @Resource
    private RoomMapper roomMapper;
    @Resource
    private OAuth2TokenApi oAuth2TokenApi;
    @Resource
    QueueService queueService;
    @Override
    public Integer createRoom(RoomSaveReqVO createReqVO) {
        // 插入
        RoomResVO room = BeanUtils.toBean(createReqVO, RoomResVO.class);
        RoomDO room = BeanUtils.toBean(createReqVO, RoomDO.class);
        roomMapper.insert(room);
        // 返回
        return room.getId();
@@ -45,7 +54,7 @@
        // 校验存在
        validateRoomExists(updateReqVO.getId());
        // 更新
        RoomResVO updateObj = BeanUtils.toBean(updateReqVO, RoomResVO.class);
        RoomDO updateObj = BeanUtils.toBean(updateReqVO, RoomDO.class);
        roomMapper.updateById(updateObj);
    }
@@ -64,26 +73,85 @@
    }
    @Override
    public RoomResVO getRoom(Integer id) {
    public RoomDO getRoom(Integer id) {
        return roomMapper.selectById(id);
    }
    @Override
    public PageResult<RoomResVO> getRoomPage(RoomPageReqVO pageReqVO) {
    public RoomProfile getRoomByIP(String ip) {
        List<RoomDO> roomDOList = roomMapper.queueByIp(ip);
        RoomProfile roomProfile = new RoomProfile();
        roomProfile.setBedNum( 0 );
        roomProfile.setCallingScreenType( RoomCallingScreenEnum.NONE.getCallingScreenType() );
        for (RoomDO roomDO : roomDOList) {
            roomProfile.setRoomId(roomDO.getRoomId());
            roomProfile.setRoomName(roomDO.getRoomName());
            roomProfile.setBedNum( roomProfile.getBedNum() + 1);
            // 0 检查 1 领用 2 装机
            // 计算 诊间屏类型
            if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.NONE.getCallingScreenType()) {
                if ( roomDO.getOpType() == 0 ) {
                    roomProfile.setCallingScreenType(RoomCallingScreenEnum.CHECK_ONLY.getCallingScreenType());
                } else if ( roomDO.getOpType() == 1 ) {
                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.RECEIVE_ONLY.getCallingScreenType());
                } else if ( roomDO.getOpType() == 2 ) {
                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.INSTALL_ONLY.getCallingScreenType());
                }
            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.CHECK_ONLY.getCallingScreenType()) {
                if ( roomDO.getOpType() == 0 || roomDO.getOpType() == 1 ) {
                    // do nothing
                } else if ( roomDO.getOpType() == 2 ) {
                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.CHECK_INSTALL.getCallingScreenType());
                }
            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.RECEIVE_ONLY.getCallingScreenType()) {
                if ( roomDO.getOpType() == 0 || roomDO.getOpType() == 1 ) {
                    // do nothing
                } else if ( roomDO.getOpType() == 2 ) {
                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.RECEIVE_INSTALL.getCallingScreenType());
                }
            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.INSTALL_ONLY.getCallingScreenType()) {
                if ( roomDO.getOpType() == 0 ) {
                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.CHECK_INSTALL.getCallingScreenType());
                } else if ( roomDO.getOpType() == 1 ) {
                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.RECEIVE_INSTALL.getCallingScreenType());
                } else if ( roomDO.getOpType() == 2 ) {
                    // do nothing
                }
            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.RECEIVE_INSTALL.getCallingScreenType()) {
                // do nothing
            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.CHECK_INSTALL.getCallingScreenType()) {
                // do nothing
            }
        }
        return roomProfile;
    }
    @Override
    public PageResult<RoomDO> getRoomPage(RoomPageReqVO pageReqVO) {
        return roomMapper.selectPage(pageReqVO);
    }
    @Override
    public List<RoomStatisticsDO> roomStatistics() {
        return roomMapper.roomStatistic();
    }
    @Override
    public List<RoomResVO> simpleRoomList() {
    public List<RoomDO> simpleRoomList() {
        List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>();
        bedStatusEnumList.add(BedStatusEnum.OPENING);
        bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON);
        bedStatusEnumList.add(BedStatusEnum.PAUSE);
        return  roomMapper.simpleRoomList(bedStatusEnumList);
    }
    @Override
    public void resetRoom(Boolean needCloseBed) {
        queueService.startResetRoom(needCloseBed);
    }
    @Override
    public MonitorInfoVO getMonitorInfo() {
        return queueService.getMonitorInfo();
    }
}