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();