From 4ec8c306229e53951c7cb445f027d3b37f47f742 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 22 八月 2024 14:32:25 +0800
Subject: [PATCH] update

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java                                          |    5 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java             |   11 
 jh-module-ecg/jh-module-ecg-biz/src/test/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImplTest.java     |  258 +++++++-------------------------
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java                     |   43 +++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java |    7 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java                     |   28 +++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java                     |   25 ++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java           |    5 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java                                              |   30 +++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java                         |    4 
 jh-module-ecg/jh-module-ecg-biz/pom.xml                                                                                     |   10 +
 11 files changed, 209 insertions(+), 217 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/pom.xml b/jh-module-ecg/jh-module-ecg-biz/pom.xml
index 42a4ca9..bb42c4b 100644
--- a/jh-module-ecg/jh-module-ecg-biz/pom.xml
+++ b/jh-module-ecg/jh-module-ecg-biz/pom.xml
@@ -130,6 +130,16 @@
             <artifactId>spring-cloud-starter-openfeign</artifactId>
             <version>${openfeign.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java
new file mode 100644
index 0000000..b127159
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java
@@ -0,0 +1,5 @@
+package cn.lihu.jh.module.ecg;
+
+public interface Constants {
+    static final String ECG_OPENING_TIME_KEY = "ecg.openingtime";
+}
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
new file mode 100644
index 0000000..57a0132
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java
@@ -0,0 +1,30 @@
+package cn.lihu.jh.module.ecg;
+
+import jodd.typeconverter.impl.LocalTimeConverter;
+
+import java.time.LocalTime;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Utils {
+    public static LocalTime parseOpeningTime(String strOpeningTime) {
+        String regex = "(\\d+)[:锛歖(\\d+)";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(strOpeningTime);
+
+        if (!matcher.find())
+            return null;
+
+        // 鑾峰彇鏁翠釜鍖归厤鐨勫瓧绗︿覆
+        String fullMatch = matcher.group();
+
+        // 鑾峰彇绗竴涓崟鑾风粍锛堝皬鏃讹級
+        String strHour = matcher.group(1);
+
+        // 鑾峰彇绗簩涓崟鑾风粍锛堝垎閽燂級
+        String strMinute = matcher.group(2);
+
+        LocalTime localTime = LocalTime.of(Integer.valueOf(strHour), Integer.valueOf(strMinute));
+        return localTime;
+    }
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java
new file mode 100644
index 0000000..6b2108d
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java
@@ -0,0 +1,43 @@
+package cn.lihu.jh.module.ecg.config;
+
+import cn.lihu.jh.module.ecg.Utils;
+import cn.lihu.jh.module.ecg.service.queue.QueueService;
+import cn.lihu.jh.module.infra.api.config.ConfigApi;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+
+import javax.annotation.Resource;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.concurrent.Executors;
+
+import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
+
+@Configuration
+@EnableScheduling
+public class DynamicSchedulingConfig implements SchedulingConfigurer {
+
+    @Resource
+    private ConfigApi configApi;
+
+    @Resource
+    private QueueService queueService;
+
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(1));
+
+        String strOpeningTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
+        LocalTime openingTime = Utils.parseOpeningTime(strOpeningTime);
+        String cronExpression = String.format("0 %d %d  * * ?", openingTime.getMinute(), openingTime.getHour());
+        System.out.println(cronExpression);
+
+        taskRegistrar.addCronTask(() -> {
+            System.out.println("Dynamic Task executed at: " + System.currentTimeMillis());
+            queueService.startBiz();
+        }, cronExpression);
+    }
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
index 8db650a..ed203d6 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -1,6 +1,8 @@
 package cn.lihu.jh.module.ecg.controller.admin.appointment;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.lihu.jh.framework.common.exception.ErrorCode;
+import cn.lihu.jh.framework.common.util.date.DateUtils;
 import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO;
 import cn.lihu.jh.module.ecg.feign.RemoteDataService;
 import cn.lihu.jh.module.ecg.feign.RestApiReqBodyVo;
@@ -27,6 +29,8 @@
 import cn.lihu.jh.framework.common.pojo.PageResult;
 import cn.lihu.jh.framework.common.pojo.CommonResult;
 import cn.lihu.jh.framework.common.util.object.BeanUtils;
+
+import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
 import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
 
 import cn.lihu.jh.framework.excel.core.util.ExcelUtils;
@@ -180,6 +184,9 @@
         //TODO 鍏堜粠棰勭害琛ㄥ彇鏁版嵁锛屽悗缁鎺ユ暟鎹钩鍙版煡棰勭害鏁版嵁
         AppointmentDO appointment = appointmentService.getAppointment(confirmReqVO.getId());
 
+        if ( !DateUtils.isToday(appointment.getBookDate()) )
+            return error( new ErrorCode(101, "涓嶆槸浠婂ぉ鐨勯绾︾敤鎴�"));
+
         QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO();
         queueSaveReqVO.setPatId( appointment.getPatId());
         queueSaveReqVO.setPatName( appointment.getPatName() );
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java
index 88f81ef..12c988c 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java
@@ -96,16 +96,17 @@
     @Operation(summary = "寮�璇婅缃�")
     @PreAuthorize("@ss.hasPermission('ecg:queue:setting')")
     public CommonResult<Integer> openingSetting() {
+        // 浠嶥B鍚屾宸ヤ綅鐨勬偅鑰呴槦鍒楁暟鎹埌 宸ヤ綅浼樺厛闃熷垪, 鍙兘鏈夋柊寮�宸ヤ綅
         queueService.initQueue();
         return success(0);
     }
 
-    @GetMapping("/reorder")
-    @Operation(summary = "寮�璇婂墠涓�鍒伙紝瀵瑰氨璇婂噯澶囩殑浜哄憳閲嶆柊鎺掑簭")
+    @GetMapping("/startbiz")
+    @Operation(summary = "鎵嬪姩寮�璇�")
     @PreAuthorize("@ss.hasPermission('ecg:queue:setting')")
-    public CommonResult<Integer> queueReorder() {
-        queueService.reorderQueue();
+    public CommonResult<Integer> startBiz() {
+        queueService.startBiz();
         return success(0);
     }
 
-}
\ No newline at end of file
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java
index ae75e8f..aef75c0 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java
@@ -5,6 +5,7 @@
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
 
 
 @Schema(description = "绠$悊鍚庡彴 - 鎺掗槦鏂板/淇敼 Request VO")
@@ -25,6 +26,10 @@
     @Schema(description = "鎮h�呮�у埆")
     private Byte patGender;
 
+    @Schema(description = "棰勭害鏃ユ湡", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "棰勭害鏃ユ湡涓嶈兘涓虹┖")
+    private LocalDateTime bookDate;
+
     @Schema(description = "棰勭害鏃堕棿娈�", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "棰勭害鏃堕棿娈典笉鑳戒负绌�")
     private Integer bookTimeslot;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
index c0acc02..0a00279 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
@@ -1,22 +1,46 @@
 package cn.lihu.jh.module.ecg.listener;
 
+import cn.lihu.jh.module.ecg.Utils;
 import cn.lihu.jh.module.ecg.service.queue.QueueService;
+import cn.lihu.jh.module.infra.api.config.ConfigApi;
 import org.springframework.boot.context.event.ApplicationStartedEvent;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
 
 @Component
 public class MySpringEventListener {
+
+    @Resource
+    private ConfigApi configApi;
 
     @Resource
     private QueueService queueService;
 
     @EventListener
     public void onApplicationEvent(ApplicationStartedEvent event) {
-        System.out.println("搴旂敤鍚姩瀹屾垚锛岄�氱煡鐩戝惉鍣ㄦ墽琛岀紦瀛橀鍔犺浇鎿嶄綔");
+        System.out.println("搴旂敤鍚姩瀹屾垚锛岀郴缁熷垵濮嬨�傘�傘��");
+
         queueService.initQueue();
-        queueService.hurryup();
+
+        String strOpeningTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
+        LocalTime openingTime = Utils.parseOpeningTime(strOpeningTime);
+
+        // 鑾峰彇褰撳墠鏃堕棿
+        LocalTime currentTime = LocalTime.now();
+
+        // 姣旇緝鏃堕棿
+        if (currentTime.isBefore(openingTime)) {
+            // NO OP
+        } else if (currentTime.isAfter(openingTime)) {
+            queueService.startBiz();
+        } else {
+            queueService.startBiz();
+        }
     }
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
index bbb31e8..e1f1b63 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -14,6 +14,8 @@
  */
 public interface QueueService {
 
+    void startBiz();
+
     /**
      * 鍒涘缓鎺掗槦
      *
@@ -59,7 +61,7 @@
     void queue(QueueSaveReqVO queueSaveReqVO);
 
     /**
-     *
+     * 绯荤粺閲嶅惎鏃讹紝浠嶥B鍚屾宸ヤ綅鐨勬偅鑰呴槦鍒楁暟鎹埌 宸ヤ綅浼樺厛闃熷垪
      */
     void initQueue();
 
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
index b280271..b961cb3 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -35,6 +35,14 @@
 
     final static Integer MAX_QUEUE_NUM = 3;
 
+    @Resource
+    private queueMapper queueMapper;
+
+    @Resource
+    private RoomMapper roomMapper;
+
+    AtomicInteger openingFlag = new AtomicInteger(0);
+
     AtomicInteger curSeqNum = new AtomicInteger(0);
 
     PriorityBlockingQueue<BedQueueBO> priorityQueue = new PriorityBlockingQueue<>();
@@ -42,11 +50,6 @@
 
     ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
 
-    @Resource
-    private queueMapper queueMapper;
-
-    @Resource
-    private RoomMapper roomMapper;
 
     @Override
     public Integer createqueue(QueueSaveReqVO createReqVO) {
@@ -91,7 +94,7 @@
     }
 
     /**
-     * 绯荤粺閲嶅惎鏃讹紝浠嶥B鍚屾闃熷垪鏁版嵁鍒� 宸ヤ綅浼樺厛闃熷垪
+     * 绯荤粺閲嶅惎鏃讹紝浠嶥B鍚屾宸ヤ綅鐨勬偅鑰呴槦鍒楁暟鎹埌 宸ヤ綅浼樺厛闃熷垪
      */
     public void initQueue() {
         priorityQueue.clear();
@@ -145,7 +148,7 @@
      * 绛夊埌鍙栦笅涓�涓� 鎺掗槦涓汉鍛� 鐨勯�昏緫瀹屾垚鍚庯紝鍐嶅洖鏉ヤ笉閿�
      */
     public void hurryup() {
-        while (true) {
+        while (1 == openingFlag.get()) {
             BedQueueBO bedQueueBO = priorityQueue.peek();
             if (null == bedQueueBO)
                 return;
@@ -190,6 +193,9 @@
         queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //鎺掗槦涓�
         QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
         queueMapper.insert(queue);
+
+        if (0 == openingFlag.get())
+            return;
 
         singleThreadExecutor.execute( () -> {
             hurryup();
@@ -259,4 +265,9 @@
         return patientStatisticVO;
     }
 
+    public void startBiz() {
+        openingFlag.set(1);
+        hurryup();
+    }
+
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/test/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImplTest.java b/jh-module-ecg/jh-module-ecg-biz/src/test/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImplTest.java
index 6343c89..456246d 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/test/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImplTest.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/test/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImplTest.java
@@ -1,202 +1,56 @@
-//package cn.lihu.jh.module.ecg.service.appointment;
-//
-//import org.junit.jupiter.api.Disabled;
-//import org.junit.jupiter.api.Test;
-//import org.springframework.boot.test.mock.mockito.MockBean;
-//
-//import jakarta.annotation.Resource;
-//
-//import cn.lihu.jh.framework.test.core.ut.BaseDbUnitTest;
-//
-//import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
-//import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
-//import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
-//import cn.lihu.jh.framework.common.pojo.PageResult;
-//
-//import jakarta.annotation.Resource;
-//import org.springframework.context.annotation.Import;
-//import java.util.*;
-//import java.time.LocalDateTime;
-//
-//import static cn.hutool.core.util.RandomUtil.*;
-//import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
-//import static cn.lihu.jh.framework.test.core.util.AssertUtils.*;
-//import static cn.lihu.jh.framework.test.core.util.RandomUtils.*;
-//import static cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils.*;
-//import static cn.lihu.jh.framework.common.util.object.ObjectUtils.*;
-//import static cn.lihu.jh.framework.common.util.date.DateUtils.*;
-//import static org.junit.jupiter.api.Assertions.*;
-//import static org.mockito.Mockito.*;
-//
-///**
-// * {@link AppointmentServiceImpl} 鐨勫崟鍏冩祴璇曠被
-// *
-// * @author 椹墤娉�
-// */
-//@Import(AppointmentServiceImpl.class)
-//public class AppointmentServiceImplTest extends BaseDbUnitTest {
-//
-//    @Resource
-//    private AppointmentServiceImpl appointmentService;
-//
-//    @Resource
-//    private AppointmentMapper appointmentMapper;
-//
-//    @Test
-//    public void testCreateAppointment_success() {
-//        // 鍑嗗鍙傛暟
-//        AppointmentSaveReqVO createReqVO = randomPojo(AppointmentSaveReqVO.class).setId(null);
-//
-//        // 璋冪敤
-//        Integer appointmentId = appointmentService.createAppointment(createReqVO);
-//        // 鏂█
-//        assertNotNull(appointmentId);
-//        // 鏍¢獙璁板綍鐨勫睘鎬ф槸鍚︽纭�
-//        AppointmentDO appointment = appointmentMapper.selectById(appointmentId);
-//        assertPojoEquals(createReqVO, appointment, "id");
-//    }
-//
-//    @Test
-//    public void testUpdateAppointment_success() {
-//        // mock 鏁版嵁
-//        AppointmentDO dbAppointment = randomPojo(AppointmentDO.class);
-//        appointmentMapper.insert(dbAppointment);// @Sql: 鍏堟彃鍏ュ嚭涓�鏉″瓨鍦ㄧ殑鏁版嵁
-//        // 鍑嗗鍙傛暟
-//        AppointmentSaveReqVO updateReqVO = randomPojo(AppointmentSaveReqVO.class, o -> {
-//            o.setId(dbAppointment.getId()); // 璁剧疆鏇存柊鐨� ID
-//        });
-//
-//        // 璋冪敤
-//        appointmentService.updateAppointment(updateReqVO);
-//        // 鏍¢獙鏄惁鏇存柊姝g‘
-//        AppointmentDO appointment = appointmentMapper.selectById(updateReqVO.getId()); // 鑾峰彇鏈�鏂扮殑
-//        assertPojoEquals(updateReqVO, appointment);
-//    }
-//
-//    @Test
-//    public void testUpdateAppointment_notExists() {
-//        // 鍑嗗鍙傛暟
-//        AppointmentSaveReqVO updateReqVO = randomPojo(AppointmentSaveReqVO.class);
-//
-//        // 璋冪敤, 骞舵柇瑷�寮傚父
-//        assertServiceException(() -> appointmentService.updateAppointment(updateReqVO), APPOINTMENT_NOT_EXISTS);
-//    }
-//
-//    @Test
-//    public void testDeleteAppointment_success() {
-//        // mock 鏁版嵁
-//        AppointmentDO dbAppointment = randomPojo(AppointmentDO.class);
-//        appointmentMapper.insert(dbAppointment);// @Sql: 鍏堟彃鍏ュ嚭涓�鏉″瓨鍦ㄧ殑鏁版嵁
-//        // 鍑嗗鍙傛暟
-//        Integer id = dbAppointment.getId();
-//
-//        // 璋冪敤
-//        appointmentService.deleteAppointment(id);
-//       // 鏍¢獙鏁版嵁涓嶅瓨鍦ㄤ簡
-//       assertNull(appointmentMapper.selectById(id));
-//    }
-//
-//    @Test
-//    public void testDeleteAppointment_notExists() {
-//        // 鍑嗗鍙傛暟
-//        Integer id = randomIntegerId();
-//
-//        // 璋冪敤, 骞舵柇瑷�寮傚父
-//        assertServiceException(() -> appointmentService.deleteAppointment(id), APPOINTMENT_NOT_EXISTS);
-//    }
-//
-//    @Test
-//    @Disabled  // TODO 璇蜂慨鏀� null 涓洪渶瑕佺殑鍊硷紝鐒跺悗鍒犻櫎 @Disabled 娉ㄨВ
-//    public void testGetAppointmentPage() {
-//       // mock 鏁版嵁
-//       AppointmentDO dbAppointment = randomPojo(AppointmentDO.class, o -> { // 绛変細鏌ヨ鍒�
-//           o.setPatId(null);
-//           o.setPatName(null);
-//           o.setPatGender(null);
-//           o.setPatBirthday(null);
-//           o.setPatMobile(null);
-//           o.setPatPhone(null);
-//           o.setPatIdentityId(null);
-//           o.setPatAddr(null);
-//           o.setPatDeptCode(null);
-//           o.setPatDeptDesc(null);
-//           o.setPatWardCode(null);
-//           o.setPatWardDesc(null);
-//           o.setPatBedNo(null);
-//           o.setBookId(null);
-//           o.setBookPeriodStart(null);
-//           o.setBookPeriodEnd(null);
-//           o.setBookTime(null);
-//           o.setBookCheckType(null);
-//           o.setBookSrc(null);
-//       });
-//       appointmentMapper.insert(dbAppointment);
-//       // 娴嬭瘯 patId 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatId(null)));
-//       // 娴嬭瘯 patName 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatName(null)));
-//       // 娴嬭瘯 patGender 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatGender(null)));
-//       // 娴嬭瘯 patBirthday 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatBirthday(null)));
-//       // 娴嬭瘯 patMobile 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatMobile(null)));
-//       // 娴嬭瘯 patPhone 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatPhone(null)));
-//       // 娴嬭瘯 patIdentityId 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatIdentityId(null)));
-//       // 娴嬭瘯 patAddr 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatAddr(null)));
-//       // 娴嬭瘯 patDeptCode 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatDeptCode(null)));
-//       // 娴嬭瘯 patDeptDesc 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatDeptDesc(null)));
-//       // 娴嬭瘯 patWardCode 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatWardCode(null)));
-//       // 娴嬭瘯 patWardDesc 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatWardDesc(null)));
-//       // 娴嬭瘯 patBedNo 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatBedNo(null)));
-//       // 娴嬭瘯 bookId 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookId(null)));
-//       // 娴嬭瘯 bookPeriodStart 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookPeriodStart(null)));
-//       // 娴嬭瘯 bookPeriodEnd 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookPeriodEnd(null)));
-//       // 娴嬭瘯 bookTime 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookTime(null)));
-//       // 娴嬭瘯 bookCheckType 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookCheckType(null)));
-//       // 娴嬭瘯 bookSrc 涓嶅尮閰�
-//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookSrc(null)));
-//       // 鍑嗗鍙傛暟
-//       AppointmentPageReqVO reqVO = new AppointmentPageReqVO();
-//       reqVO.setPatId(null);
-//       reqVO.setPatName(null);
-//       reqVO.setPatGender(null);
-//       reqVO.setPatBirthday(null);
-//       reqVO.setPatMobile(null);
-//       reqVO.setPatPhone(null);
-//       reqVO.setPatIdentityId(null);
-//       reqVO.setPatAddr(null);
-//       reqVO.setPatDeptCode(null);
-//       reqVO.setPatDeptDesc(null);
-//       reqVO.setPatWardCode(null);
-//       reqVO.setPatWardDesc(null);
-//       reqVO.setPatBedNo(null);
-//       reqVO.setBookId(null);
-//       reqVO.setBookPeriodStart(null);
-//       reqVO.setBookPeriodEnd(null);
-//       reqVO.setBookTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-//       reqVO.setBookCheckType(null);
-//       reqVO.setBookSrc(null);
-//
-//       // 璋冪敤
-//       PageResult<AppointmentDO> pageResult = appointmentService.getAppointmentPage(reqVO);
-//       // 鏂█
-//       assertEquals(1, pageResult.getTotal());
-//       assertEquals(1, pageResult.getList().size());
-//       assertPojoEquals(dbAppointment, pageResult.getList().get(0));
-//    }
-//
-//}
\ No newline at end of file
+package cn.lihu.jh.module.ecg.service.appointment;
+
+import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
+import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
+import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
+import cn.lihu.jh.framework.common.pojo.PageResult;
+
+import org.junit.Test;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+/**
+ * {@link AppointmentServiceImpl} 鐨勫崟鍏冩祴璇曠被
+ *
+ * @author 椹墤娉�
+ */
+@SpringBootTest
+public class AppointmentServiceImplTest {
+
+    @Resource
+    private AppointmentServiceImpl appointmentService;
+
+    @Resource
+    private AppointmentMapper appointmentMapper;
+
+    @Test
+    public void test() {
+        String regex = "(\\d+)[:锛歖(\\d+)";
+        String input = "08锛�00";
+
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(input);
+
+        if (matcher.find()) {
+            // 鑾峰彇鏁翠釜鍖归厤鐨勫瓧绗︿覆
+            String fullMatch = matcher.group();
+            System.out.println("Full match: " + fullMatch);
+
+
+            // 鑾峰彇绗竴涓崟鑾风粍锛堢敤鎴峰悕锛�
+            String username = matcher.group(1);
+            System.out.println("Username: " + username);
+            System.out.println("Username: " + Integer.valueOf(username));
+
+
+            // 鑾峰彇绗簩涓崟鑾风粍锛堝煙鍚嶏級
+            String domain = matcher.group(2);
+            System.out.println("Domain: " + domain);
+            System.out.println("Domain: " + Integer.valueOf(domain));
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3