eight
2024-08-29 cd9b85533a35ae804fde9b1ee7af51ebb1630aeb
问诊重置功能
已修改7个文件
58 ■■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java
@@ -3,5 +3,6 @@
public interface Constants {
    static final String ECG_OPENING_TIME_KEY = "ecg.openingtime";
    static final String ECG_QUEUE_READY_MAX_KEY = "ecg.queue.ready.max";
    static final String ECG_ROOM_RESET_TIME_KEY = "ecg.room.reset.time";
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java
@@ -9,6 +9,27 @@
import java.util.regex.Pattern;
public class Utils {
    public static LocalTime parseTime(String strTime) {
        String regex = "(\\d+)[::](\\d+)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(strTime);
        if (!matcher.find())
            return null;
        // 获取整个匹配的字符串
        String fullMatch = matcher.group();
        // 获取第一个捕获组(小时)
        String strOpenHour = matcher.group(1);
        // 获取第二个捕获组(分钟)
        String strOpenMinute = matcher.group(2);
        LocalTime localTime = LocalTime.of(Integer.valueOf(strOpenHour), Integer.valueOf(strOpenMinute));
        return localTime;
    }
    public static List<LocalTime> parseOpeningTime(String strOpeningTime) {
        String regex = "(\\d+)[::](\\d+)~(\\d+)[::](\\d+)";
        Pattern pattern = Pattern.compile(regex);
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java
@@ -2,6 +2,7 @@
import cn.lihu.jh.module.ecg.Utils;
import cn.lihu.jh.module.ecg.service.queue.QueueService;
import cn.lihu.jh.module.ecg.service.room.RoomService;
import cn.lihu.jh.module.infra.api.config.ConfigApi;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -15,6 +16,7 @@
import java.util.concurrent.Executors;
import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
import static cn.lihu.jh.module.ecg.Constants.ECG_ROOM_RESET_TIME_KEY;
@Configuration
@EnableScheduling
@@ -25,6 +27,9 @@
    @Resource
    private QueueService queueService;
    @Resource
    private RoomService roomService;
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -37,6 +42,10 @@
        String openCronExpression = String.format("0 %d %d  * * ?", openingTime.getMinute(), openingTime.getHour());
        String closeCronExpression = String.format("0 %d %d  * * ?", closeTime.getMinute(), closeTime.getHour());
        String strRoomResetTime = configApi.getConfigValueByKey(ECG_ROOM_RESET_TIME_KEY);
        LocalTime roomResetTime = Utils.parseTime(strRoomResetTime);
        String roomResetCronExpression = String.format("0 %d %d  * * ?", roomResetTime.getMinute(), roomResetTime.getHour());
        taskRegistrar.addCronTask(() -> {
            System.out.println("Opening Task executed at: " + System.currentTimeMillis());
            queueService.startBiz();
@@ -46,6 +55,11 @@
            System.out.println("Close Task executed at: " + System.currentTimeMillis());
            queueService.closeBiz();
        }, closeCronExpression);
        taskRegistrar.addCronTask(() -> {
            System.out.println("Room Reset Task executed at: " + System.currentTimeMillis());
            roomService.resetRoom();
        }, roomResetCronExpression);
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java
@@ -152,4 +152,12 @@
        Map<String, List<RoomRespVO>> map = list2.stream().collect(Collectors.groupingBy(RoomRespVO::getRoomName));
        return success(map);
    }
    @GetMapping(value = {"/reset-room"})
    @Operation(summary = "重置门诊室", description = "主要用于每天关闭工位")
    public CommonResult<String> resetRoom() {
        roomService.resetRoom();
        return success("reset room ok");
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
@@ -31,8 +31,11 @@
                .orderByDesc(RoomDO::getId));
    }
    @Update(" update lihu.clinic_room set status=#{newStatus.status}, doc_id=null, doc_name=null")
    Integer resetRoom(@Param("newStatus") BedStatusEnum newStatus);
    @Update("<script> " +
            "update lihu.clinic_room set status=#{newStatus}, doc_id=null, doc_name=null " +
            " where 1 = 1 " +
            "</script>")
    Integer resetRoom(@Param("newStatus") Integer newStatus);
    @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" })
    List<RoomStatisticsDO> roomStatistic();
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
@@ -58,4 +58,6 @@
    List<RoomDO> simpleRoomList();
    void resetRoom();
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
@@ -91,13 +91,14 @@
        return  roomMapper.simpleRoomList(bedStatusEnumList);
    }
    private void resetRoom() {
    @Override
    public void resetRoom() {
        List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>();
        bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON);
        bedStatusEnumList.add(BedStatusEnum.PAUSE);
        List<RoomDO> roomDOList = roomMapper.simpleRoomList(bedStatusEnumList);
        Integer ret = roomMapper.resetRoom(BedStatusEnum.CLOSED);
        Integer ret = roomMapper.resetRoom(BedStatusEnum.CLOSED.getStatus());
        //
        List<Long> userIdList = roomDOList.stream().map(roomDO -> roomDO.getDocId()).toList();