package cn.lihu.jh.module.ecg.service.room;
|
|
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 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 static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.ROOM_NOT_EXISTS;
|
|
/**
|
* 诊室和诊疗床 Service 实现类
|
*
|
* @author 芋道源码
|
*/
|
@Service
|
@Validated
|
public class RoomServiceImpl implements RoomService {
|
|
@Resource
|
private RoomMapper roomMapper;
|
|
@Resource
|
private OAuth2TokenApi oAuth2TokenApi;
|
|
@Resource
|
QueueService queueService;
|
|
@Override
|
public Integer createRoom(RoomSaveReqVO createReqVO) {
|
// 插入
|
RoomDO room = BeanUtils.toBean(createReqVO, RoomDO.class);
|
roomMapper.insert(room);
|
// 返回
|
return room.getId();
|
}
|
|
@Override
|
public void updateRoom(RoomSaveReqVO updateReqVO) {
|
// 校验存在
|
validateRoomExists(updateReqVO.getId());
|
// 更新
|
RoomDO updateObj = BeanUtils.toBean(updateReqVO, RoomDO.class);
|
roomMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteRoom(Integer id) {
|
// 校验存在
|
validateRoomExists(id);
|
// 删除
|
roomMapper.deleteById(id);
|
}
|
|
private void validateRoomExists(Integer id) {
|
if (roomMapper.selectById(id) == null) {
|
throw exception(ROOM_NOT_EXISTS);
|
}
|
}
|
|
@Override
|
public RoomDO getRoom(Integer id) {
|
return roomMapper.selectById(id);
|
}
|
|
@Override
|
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<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();
|
}
|
}
|