eight
2024-08-15 8c2f79b721a05fbf73c50a78b267ea3868c632d2
update
已添加2个文件
已修改9个文件
202 ■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-server/src/main/resources/application-local.yaml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package cn.lihu.jh.module.ecg.enums;
import cn.hutool.core.util.ObjUtil;
import cn.lihu.jh.framework.common.core.IntArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
 * é€šç”¨çŠ¶æ€æžšä¸¾
 *
 * @author èŠ‹é“æºç 
 */
@Getter
@AllArgsConstructor
public enum QueueStatusEnum implements IntArrayValuable {
    //10:排队中 20:候诊准备 30:就诊中 40:就诊完成 50:过号 60:过期
    WAITING((byte)10, "排队中"),
    READY((byte)20, "候诊准备"),
    ONSTAGE((byte)30, "就诊中"),
    FINISH((byte)40, "就诊完成"),
    PASSED((byte)50, "过号");
    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(QueueStatusEnum::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);
    }
*/
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -128,14 +128,8 @@
                        BeanUtils.toBean(list, AppointmentRespVO.class));
    }
    @PostMapping("/confirm")
    @Operation(summary = "预约确认")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')")
    public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) {
        //TODO å¤„理排队逻辑
        //AppointmentDO appointment = appointmentService.getAppointment(id);
        //return success(BeanUtils.toBean(appointment, AppointmentRespVO.class));
    // TODO å¯¹æŽ¥æ•°æ®å¹³å°
    private void getRemoteAppointment(AppointmentConfirmReqVO confirmReqVO) {
        RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
        reqBodyVo.setSfzh(confirmReqVO.getPatId());
        reqBodyVo.setMzzyh("A34343");
@@ -172,7 +166,7 @@
        LocalDateTime bookEndTime = bookStartTime.plusMinutes(30);
        queueSaveReqVO.setBookTimeslot(
                (bookStartTime.getHour()*100 + bookStartTime.getMinute())*10000
                + bookEndTime.getHour()*100 + bookEndTime.getMinute() );
                        + bookEndTime.getHour()*100 + bookEndTime.getMinute() );
        //queueSaveReqVO.setBookCheckType( Byte.valueOf(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) );
        queueSaveReqVO.setBookCheckType( (byte)10 );
@@ -186,42 +180,24 @@
        queueSaveReqVO.setBedNum("-");
        queueService.createqueue(queueSaveReqVO);
    }
    @PostMapping("/confirm")
    @Operation(summary = "预约确认")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')")
    public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) {
        //TODO å…ˆä»Žé¢„约表取数据,后续对接数据平台查预约数据
        AppointmentDO appointment = appointmentService.getAppointment(confirmReqVO.getId());
        // èŽ·å–å€™è¯Šå‡†å¤‡çš„é…ç½®äººæ•°  ï¼Œ è¥ä¸šçš„诊室
/*
        List<DeptDO> list = deptService.getDeptList(
                new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
        return success(BeanUtils.toBean(list, DeptSimpleRespVO.class));
*/
        List<DeptRespDTO> deptRespDTOList = deptApi.getSimpleDeptList();
        Optional<DeptRespDTO> ecgDept = deptRespDTOList.stream()
                .filter(a -> a.getName().equals("ECG"))
                .findAny();
        if (ecgDept.isPresent()){
            System.out.println(ecgDept.get().getName());
            List<DeptRespDTO> list2 = deptRespDTOList.stream()
                    .filter(a -> Objects.equals(a.getParentId(), ecgDept.get().getId()))
                    .toList();
            list2.forEach(System.out::println);
            list2.size();
        }
        // èŽ·å–é—¨è¯Šå®¤ è¯Šç–—床的统计
        List<RoomStatisticsDO> roomStatisticsList = roomService.roomStatistics();
        roomStatisticsList.size();
        // èŽ·å– æ¯ä¸ªè¥ä¸šçš„诊室 å€™è¯Šå‡†å¤‡çš„当前人数  å°±è¯Šä¸­çš„当前人数
        // queueService.get
        List statusList = new ArrayList<Byte>();
        statusList.add((byte)20);
        statusList.add((byte)30);
        List<QueueStatisticDO> queueStatisticDOList = queueService.queueStatistics(statusList);
        queueStatisticDOList.size();
        QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO();
        queueSaveReqVO.setPatId( appointment.getPatId());
        queueSaveReqVO.setPatName( appointment.getPatName() );
        queueSaveReqVO.setPatGender( appointment.getPatGender());
        queueSaveReqVO.setBookTimeslot( appointment.getBookTimeslot() );
        queueSaveReqVO.setBookCheckType( appointment.getBookCheckType() );
        queueSaveReqVO.setPassed((byte)0);
        queueSaveReqVO.setExpired((byte)0);
        queueService.queue(queueSaveReqVO);
        return success("hello");
    }
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java
@@ -11,6 +11,8 @@
@Data
public class AppointmentConfirmReqVO {
    private Integer id;
    @Schema(description = "患者编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034")
    //@NotEmpty(message = "患者编号不能为空")
    private String patId;
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java
@@ -5,5 +5,6 @@
@Data
public class RoomStatisticsDO {
    Long roomId;
    String roomName;
    Integer bedNum;
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
@@ -45,6 +45,8 @@
            " </foreach> )" +
            " group by status; "
            +"</script>")
    List<QueueStatisticDO> queueStatistic(@Param("statusList")List<Byte> statusList);
    @Select("SELECT max(seq_num) FROM lihu.queue")
    int getMaxSeqNum();
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
@@ -28,10 +28,10 @@
                .orderByDesc(RoomDO::getId));
    }
    @Select({ "SELECT room_id, count(1) as bed_num FROM lihu.clinic_room group by room_id;" })
    @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" })
    List<RoomStatisticsDO> roomStatistic();
    @Select({ "SELECT room_id, room_name FROM lihu.clinic_room where onstage=true group by room_id;" })
    @Select({ "SELECT id, room_id, room_name, bed_no, onstage FROM lihu.clinic_room where onstage=true;" })
    List<RoomDO> simpleRoomList();
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package cn.lihu.jh.module.ecg.service.queue;
import lombok.Data;
import org.jetbrains.annotations.NotNull;
@Data
public class BedQueueBO implements Comparable<BedQueueBO> {
    String bedNo;
    Long roomId;
    String roomName;
    Integer queueNum;
    Integer maxQueueNum;
    @Override
    public int compareTo(@NotNull BedQueueBO o) {
        return Integer.compare(o.queueNum, this.queueNum);
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -56,4 +56,9 @@
    List<QueueStatisticDO> queueStatistics(List<Byte> statusList);
    /**
     * æ‚£è€…排队
     * @param queueSaveReqVO
     */
    void queue(QueueSaveReqVO queueSaveReqVO);
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -1,6 +1,12 @@
package cn.lihu.jh.module.ecg.service.queue;
import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueStatisticDO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
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.QueueStatusEnum;
import lombok.Data;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -11,9 +17,12 @@
import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.PriorityQueue;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
@@ -27,8 +36,17 @@
@Validated
public class QueueServiceImpl implements QueueService {
    final static Integer MAX_QUEUE_NUM = 2;
    Integer  curSeqNum = 0;
    PriorityQueue<BedQueueBO> priorityQueue = new PriorityQueue<>();
    @Resource
    private queueMapper queueMapper;
    @Resource
    private RoomMapper roomMapper;
    @Override
    public Integer createqueue(QueueSaveReqVO createReqVO) {
@@ -77,4 +95,35 @@
        return queueMapper.queueStatistic(statusList);
    }
}
    @Override
    public void queue(QueueSaveReqVO queueSaveReqVO) {
        BedQueueBO bedQueueBO = priorityQueue.peek();
        if (bedQueueBO.queueNum == bedQueueBO.maxQueueNum) {
            queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //排队中
        } else if (bedQueueBO.queueNum < bedQueueBO.maxQueueNum) {
            queueSaveReqVO.setStatus(QueueStatusEnum.READY.getStatus()); //候诊准备中
            queueSaveReqVO.setRoomNum(bedQueueBO.getRoomName());
            queueSaveReqVO.setBedNum(bedQueueBO.getBedNo());
            queueSaveReqVO.setSeqNum(curSeqNum++);
            QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
            queueMapper.insert(queue);  // queue.getId();
            bedQueueBO.queueNum++;
        }
    }
    @PostConstruct
    private void initQueue() {
        List<RoomDO> roomDOList = roomMapper.simpleRoomList();
        List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList();
        bedQueueBOList.forEach(item -> {
            item.maxQueueNum = MAX_QUEUE_NUM;
            item.queueNum = 0;
            priorityQueue.add(item);
        });
        curSeqNum = queueMapper.getMaxSeqNum();
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
@@ -58,4 +58,5 @@
    List<RoomStatisticsDO> roomStatistics();
    List<RoomDO> simpleRoomList();
}
jh-server/src/main/resources/application-local.yaml
@@ -76,7 +76,7 @@
  redis:
    host: 116.62.18.175   #r-bp1zyjl0g07e1ry08rpd.redis.rds.aliyuncs.com # åœ°å€
    port: 6020            #端口 6379
    database: 2 # æ•°æ®åº“索引
    database: 15 # æ•°æ®åº“索引
    password: Smartor    #Root@yinyu # å¯†ç ï¼Œå»ºè®®ç”Ÿäº§çŽ¯å¢ƒå¼€å¯
--- #################### å®šæ—¶ä»»åŠ¡ç›¸å…³é…ç½® ####################