¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.lihu.jh.module.ecg.enums; |
| | | |
| | | import cn.lihu.jh.framework.common.core.IntArrayValuable; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | /** |
| | | * éç¨ç¶ææä¸¾ |
| | | * |
| | | * @author èéæºç |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum BedStatusEnum implements IntArrayValuable { |
| | | CLOSED((byte)0, "å·²å
³é"), |
| | | CLOSING((byte)1, "å
³éä¸"), |
| | | OPENING((byte)10, "å·²å¼é"), |
| | | DOCTOR_ON((byte)20, "æå»ç"), |
| | | PAUSE((byte)30, "æå"); |
| | | |
| | | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(BedStatusEnum::getStatus).toArray(); |
| | | |
| | | /** |
| | | * ç¶æå¼ |
| | | */ |
| | | private final Byte status; |
| | | /** |
| | | * ç¶æå |
| | | */ |
| | | private final String name; |
| | | |
| | | @Override |
| | | public int[] array() { |
| | | return ARRAYS; |
| | | } |
| | | |
| | | /* |
| | | public static boolean isEnable(Integer status) { |
| | | return ObjUtil.equal(ENABLE.status, status); |
| | | } |
| | | |
| | | public static boolean isDisable(Integer status) { |
| | | return ObjUtil.equal(DISABLE.status, status); |
| | | } |
| | | */ |
| | | |
| | | } |
| | |
| | | BeanUtils.toBean(list, QueueRespVO.class)); |
| | | } |
| | | |
| | | @GetMapping("/opening-setting") |
| | | @Operation(summary = "å¼è¯è®¾ç½®") |
| | | @PreAuthorize("@ss.hasPermission('ecg:queue:setting')") |
| | | public CommonResult<Integer> openingSetting() { |
| | | // ä»DB忥工ä½çæ£è
éåæ°æ®å° å·¥ä½ä¼å
éå, å¯è½ææ°å¼å·¥ä½ |
| | | queueService.initBedQueueAndSeqNumFromDB(); |
| | | @GetMapping("/bed-control") |
| | | @Operation(summary = "工使§å¶") |
| | | @PreAuthorize("@ss.hasPermission('ecg:queue:bedcontrol')") |
| | | public CommonResult<Integer> bedControl( |
| | | @RequestParam("roomId") Long roomId, |
| | | @RequestParam("bedNo") String bedNo, |
| | | @RequestParam("status") Integer status) |
| | | { |
| | | queueService.bedControl(roomId, bedNo, status); |
| | | return success(0); |
| | | } |
| | | |
| | |
| | | private String bedNo; |
| | | |
| | | @Schema(description = "å¼è¯ç¶æ") |
| | | private Boolean onstage; |
| | | private Integer status; |
| | | |
| | | @Schema(description = "å»çå") |
| | | private String doctorName; |
| | | |
| | | @Schema(description = "å建æ¶é´") |
| | | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| | |
| | | |
| | | @Schema(description = "å¼è¯ç¶æ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @ExcelProperty("å¼è¯ç¶æ") |
| | | private Boolean onstage; |
| | | private Integer status; |
| | | |
| | | @Schema(description = "å»çå", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @ExcelProperty("å»çå") |
| | | private String doctorName; |
| | | |
| | | @Schema(description = "å建æ¶é´", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @ExcelProperty("å建æ¶é´") |
| | |
| | | private String bedNo; |
| | | |
| | | @Schema(description = "å¼è¯ç¶æ", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | @NotNull |
| | | private Boolean onstage; |
| | | private Integer status; |
| | | |
| | | @Schema(description = "å»çå", requiredMode = Schema.RequiredMode.REQUIRED) |
| | | private String doctorName; |
| | | |
| | | } |
| | |
| | | * è¯çåºç¼å· |
| | | */ |
| | | private String bedNo; |
| | | /** |
| | | * è¯çåºå¼è¯ç¶æ |
| | | */ |
| | | private Boolean onstage; |
| | | |
| | | } |
| | | /** |
| | | * è¯çåºç¶æ 0:åè¯ 10:å¼è¯ 20:æå |
| | | */ |
| | | private Integer status; |
| | | /** |
| | | * å»çå |
| | | */ |
| | | private String doctorName; |
| | | } |
| | |
| | | public class RoomStatisticsDO { |
| | | Long roomId; |
| | | String roomName; |
| | | Integer bedNum; |
| | | Integer bedNo; |
| | | } |
| | |
| | | import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Select; |
| | | import org.apache.ibatis.annotations.Update; |
| | | |
| | | /** |
| | | * è¯å®¤åè¯çåº Mapper |
| | |
| | | @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" }) |
| | | List<RoomStatisticsDO> roomStatistic(); |
| | | |
| | | @Select({ "SELECT id, room_id, room_name, bed_no, onstage FROM lihu.clinic_room where onstage=true;" }) |
| | | @Select({ "SELECT id, room_id, room_name, bed_no, status, doctor_name FROM lihu.clinic_room where status > 0;" }) |
| | | List<RoomDO> simpleRoomList(); |
| | | |
| | | } |
| | | @Update( "update lihu.clinic_room set status=#{status} where room_id=#{roomId} and bed_no=#{bedNo}" ) |
| | | Integer setBedStatus(Long roomId, String bedNo, Integer status); |
| | | } |
| | |
| | | void deletequeue(Integer id); |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | Integer bedControl(Long roomId, String bedNo, Integer status); |
| | | |
| | | /** |
| | | * è·å¾æé |
| | | * |
| | | * @param id ç¼å· |
| | |
| | | * @param queueSaveReqVO |
| | | */ |
| | | void queue(QueueSaveReqVO queueSaveReqVO); |
| | | |
| | | /** |
| | | * ç³»ç»é坿¶ï¼ä»DB忥工ä½çæ£è
éåæ°æ®å° å·¥ä½ä¼å
éå |
| | | */ |
| | | void initBedQueueAndSeqNumFromDB(); |
| | | |
| | | /** |
| | | * æå»çåè¯çéå塿»¡ |
| | |
| | | queueMapper.deleteById(id); |
| | | } |
| | | |
| | | @Override |
| | | public Integer bedControl(Long roomId, String bedNo, Integer status) { |
| | | // è¥ä¸æé´ä¸è½å
³éå·¥ä½ |
| | | if ( status == 0 && openingFlag.get() == 1 ) |
| | | return 301; |
| | | |
| | | // å½åç¶æ |
| | | roomMapper.select |
| | | |
| | | // DB update |
| | | Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, status); |
| | | if ( null==updateNum || 0 == updateNum ) |
| | | return 310; |
| | | |
| | | if ( status == 10 ) { |
| | | BedQueueBO bedQueueBO = new BedQueueBO(); |
| | | bedQueueBO.setRoomId(roomId); |
| | | bedQueueBO.setBedNo(bedNo); |
| | | bedQueueBO.setMaxQueueNum(MAX_QUEUE_NUM); |
| | | bedQueueBO.setQueueNum(new AtomicInteger(0)); |
| | | priorityQueue.offer(bedQueueBO); |
| | | mapBedVsQueue.put(String.format("%09d%s", bedQueueBO.roomId, bedQueueBO.bedNo), bedQueueBO); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | private void validatequeueExists(Integer id) { |
| | | if (queueMapper.selectById(id) == null) { |
| | | throw exception(QUEUE_NOT_EXISTS); |
| | |
| | | `room_id` BIGINT NOT NULL COMMENT 'è¯å®¤ç¼å·', |
| | | `room_name` varchar(10) NOT NULL COMMENT 'è¯å®¤åç§°', |
| | | `bed_no` varchar(10) NOT NULL COMMENT 'è¯çåºç¼å·', |
| | | `onstage` bit(1) 1 COMMENT 'å¼è¯', |
| | | `status` int 0 COMMENT '0:åè¯ 10:å¼è¯ 20:æå', |
| | | `doctor_name` varchar(10) NOT NULL COMMENT 'å»çåç§°', |
| | | `tenant_id` int DEFAULT 1 COMMENT 'ç§æ·ç¼å·', |
| | | `creator` varchar(10) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', |