|
@@ -0,0 +1,57 @@
|
|
|
|
|
+package com.nb.im.listener;
|
|
|
|
|
+
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
+import com.nb.im.entity.ImRoomEntity;
|
|
|
|
|
+import com.nb.im.enums.ImStatusEnum;
|
|
|
|
|
+import com.nb.im.service.LocalImRoomService;
|
|
|
|
|
+import com.nb.web.api.event.ClinicFinishedEvent;
|
|
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
|
|
+import org.springframework.context.event.EventListener;
|
|
|
|
|
+
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.ZoneId;
|
|
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @author lifang
|
|
|
|
|
+ * @version 1.0.0
|
|
|
|
|
+ * @ClassName MonitorStatusListener.java
|
|
|
|
|
+ * @Description TODO
|
|
|
|
|
+ * @createTime 2022年08月24日 09:27:00
|
|
|
|
|
+ */
|
|
|
|
|
+@Configuration
|
|
|
|
|
+@AllArgsConstructor
|
|
|
|
|
+public class MonitorStatusListener {
|
|
|
|
|
+ private final LocalImRoomService roomService;
|
|
|
|
|
+ @EventListener
|
|
|
|
|
+ public void monitorFinished(ClinicFinishedEvent event){
|
|
|
|
|
+ String patientId = event.getPatientId();
|
|
|
|
|
+
|
|
|
|
|
+ roomService.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
|
|
+ .lambda()
|
|
|
|
|
+ .eq(ImRoomEntity::getPatientId,patientId)
|
|
|
|
|
+ .in(ImRoomEntity::getStatus, ImStatusEnum.WAITING,ImStatusEnum.SUCCESS)
|
|
|
|
|
+ .set(ImRoomEntity::getMonitorFinishedTime,new Date())
|
|
|
|
|
+ .set(ImRoomEntity::getMonitorFinished,true)
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @EventListener
|
|
|
|
|
+ public void monitorReset(ClinicFinishedEvent event){
|
|
|
|
|
+ String patientId = event.getPatientId();
|
|
|
|
|
+ //两小时前的时间
|
|
|
|
|
+ LocalDateTime dateTime = LocalDateTime.now().plus(-2, ChronoUnit.HOURS);
|
|
|
|
|
+ Date date = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
|
|
+ //临床结束未满两小时的进行处理
|
|
|
|
|
+ roomService.update(new UpdateWrapper<ImRoomEntity>()
|
|
|
|
|
+ .lambda()
|
|
|
|
|
+ .eq(ImRoomEntity::getPatientId,patientId)
|
|
|
|
|
+ .in(ImRoomEntity::getStatus, ImStatusEnum.WAITING,ImStatusEnum.SUCCESS)
|
|
|
|
|
+ .eq(ImRoomEntity::getMonitorFinished,true)
|
|
|
|
|
+ .gt(ImRoomEntity::getMonitorFinishedTime,date)
|
|
|
|
|
+ .set(ImRoomEntity::getMonitorFinished,false)
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+}
|