From 02cb4a13b2f7bba15a5eca9353a2e458efe2c602 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期四, 07 十一月 2024 11:33:50 +0800 Subject: [PATCH] 排队序号表的初始化 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queuesequence/QueueSequenceMapper.java | 4 ++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java | 29 ++++++++++++++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceServiceImpl.java | 41 ++++++++++++++++++++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java | 6 +++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceService.java | 1 5 files changed, 80 insertions(+), 1 deletions(-) diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java index 4bb172c..c36b8f5 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java @@ -5,6 +5,7 @@ import java.time.LocalTime; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -65,5 +66,33 @@ public static String formatRoomBed(Long roomId, String bedNo) { return String.format("%09d%s", roomId, bedNo); } + + public static List<LocalTime> parseTimeSlotList(String strTimeSlotList, Integer timeslotLength) { + List<LocalTime> localTimeList = new ArrayList<>(); + + // 7:30,8:30,9:30,10:30,11:30,12:30,13:30,14:30,15:30 + String[] arrTimeSlotItemStr = strTimeSlotList.split(",|锛�"); + Arrays.stream(arrTimeSlotItemStr).forEach( strTimeSlot -> { + String regex = "(\\d+)[:锛歖(\\d+)"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(strTimeSlot); + if (!matcher.find()) + return; + + // 鑾峰彇鏁翠釜鍖归厤鐨勫瓧绗︿覆 + String fullMatch = matcher.group(); + + // 鑾峰彇绗竴涓崟鑾风粍锛堝皬鏃讹級 + String strHour = matcher.group(1); + + // 鑾峰彇绗簩涓崟鑾风粍锛堝垎閽燂級 + String strMinute = matcher.group(2); + + LocalTime localTimeSlot = LocalTime.of(Integer.valueOf(strHour), Integer.valueOf(strMinute)); + localTimeList.add( localTimeSlot ); + } ); + + return localTimeList; + } } diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queuesequence/QueueSequenceMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queuesequence/QueueSequenceMapper.java index 2a5ddf6..de7fafc 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queuesequence/QueueSequenceMapper.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queuesequence/QueueSequenceMapper.java @@ -8,6 +8,7 @@ import cn.lihu.jh.module.ecg.dal.dataobject.queuesequence.QueueSequenceDO; import org.apache.ibatis.annotations.Mapper; import cn.lihu.jh.module.ecg.controller.admin.queuesequence.vo.*; +import org.apache.ibatis.annotations.Update; /** * 褰撳ぉ搴忓彿 Mapper @@ -29,4 +30,7 @@ .orderByDesc(QueueSequenceDO::getId)); } + @Update("truncate table lihu.queue_sequence") + void clearQueueSequenceTable(); + } \ No newline at end of file diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java index 7659720..a6d505b 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java @@ -2,7 +2,9 @@ import cn.lihu.jh.module.ecg.Utils; import cn.lihu.jh.module.ecg.config.DynamicSchedulingConfig; +import cn.lihu.jh.module.ecg.dal.mysql.queuesequence.QueueSequenceMapper; import cn.lihu.jh.module.ecg.service.queue.QueueService; +import cn.lihu.jh.module.ecg.service.queuesequence.QueueSequenceService; import cn.lihu.jh.module.ecg.service.room.RoomService; import cn.lihu.jh.module.infra.api.config.ConfigApi; import lombok.extern.slf4j.Slf4j; @@ -35,6 +37,9 @@ @Resource private QueueService queueService; + + @Resource + private QueueSequenceService queueSequenceService; ScheduledTask startBizTask = null; ScheduledTask closeBizTask = null; @@ -72,6 +77,7 @@ resetRoomTask = taskRegistrar.scheduleCronTask(new CronTask(() -> { System.out.println("Room Reset Task executed at: " + System.currentTimeMillis()); roomService.resetRoom(false); + queueSequenceService.resetQueueSequence(); }, roomResetCronExpression)); taskRegistrar.afterPropertiesSet(); diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceService.java index d26a588..508784b 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceService.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceService.java @@ -53,4 +53,5 @@ */ PageResult<QueueSequenceDO> getQueueSequencePage(QueueSequencePageReqVO pageReqVO); + void resetQueueSequence(); } \ No newline at end of file diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceServiceImpl.java index 0c6fffb..4216715 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceServiceImpl.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queuesequence/QueueSequenceServiceImpl.java @@ -1,9 +1,14 @@ package cn.lihu.jh.module.ecg.service.queuesequence; +import cn.lihu.jh.module.ecg.Utils; +import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO; +import cn.lihu.jh.module.ecg.dal.mysql.checktype.CheckTypeMapper; +import cn.lihu.jh.module.infra.api.config.ConfigApi; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalTime; import java.util.*; import cn.lihu.jh.module.ecg.controller.admin.queuesequence.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.queuesequence.QueueSequenceDO; @@ -16,6 +21,7 @@ import javax.annotation.Resource; import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.lihu.jh.module.ecg.Constants.*; import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; /** @@ -28,7 +34,13 @@ public class QueueSequenceServiceImpl implements QueueSequenceService { @Resource + private ConfigApi configApi; + + @Resource private QueueSequenceMapper queueSequenceMapper; + + @Resource + private CheckTypeMapper checkTypeMapper; @Override public Integer createQueueSequence(QueueSequenceSaveReqVO createReqVO) { @@ -72,4 +84,31 @@ return queueSequenceMapper.selectPage(pageReqVO); } -} \ No newline at end of file + @Override + public void resetQueueSequence() { + queueSequenceMapper.clearQueueSequenceTable(); + + // 璇诲彇鏃舵閰嶇疆 + String strBookTimeslotLength = configApi.getConfigValueByKey(BOOK_TIMESLOT_LENGTH); + String strBookTimeslotList = configApi.getConfigValueByKey(BOOK_TIMESLOT_LIST); + + // 璇诲彇鎵�鏈夌殑妫�鏌ョ被鍨� + List<CheckTypeDO> checkTypeDOList = checkTypeMapper.simpleCheckTypeList(); + checkTypeDOList.forEach( checkTypeDO -> { + List<LocalTime> timeslotList = Utils.parseTimeSlotList(strBookTimeslotList, Integer.valueOf(strBookTimeslotLength)); + for (int i=0; i < timeslotList.size(); i++) { + LocalTime timeslot = timeslotList.get(i); + QueueSequenceDO queueSequenceDO = new QueueSequenceDO(); + queueSequenceDO.setCheckType( checkTypeDO.getValue() ); + queueSequenceDO.setTimeSlot( timeslot.getHour()*100 + timeslot.getMinute() ); + queueSequenceDO.setQueueNo( i * checkTypeDO.getTimeslotBookNum() + checkTypeDO.getTimeslotReservedNum()); + queueSequenceDO.setQueueVipNo( i * checkTypeDO.getTimeslotBookNum()); + queueSequenceDO.setQueueFull( i * checkTypeDO.getTimeslotBookNum() + checkTypeDO.getTimeslotBookNum()); + queueSequenceDO.setQueueVipFull( i * checkTypeDO.getTimeslotBookNum() + checkTypeDO.getTimeslotReservedNum()); + queueSequenceMapper.insert( queueSequenceDO ); + }; + }); + } + +} + -- Gitblit v1.9.3