diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/subscribemessagesendrecord/SubscribeMessageSendDataService.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/subscribemessagesendrecord/SubscribeMessageSendDataService.java new file mode 100644 index 00000000..1951a0eb --- /dev/null +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/subscribemessagesendrecord/SubscribeMessageSendDataService.java @@ -0,0 +1,11 @@ +package com.xinelu.mobile.service.subscribemessagesendrecord; + +/** + * @Description 订阅消息数据业务层 + * @Author zh + * @Date 2024-05-24 + */ +public interface SubscribeMessageSendDataService { + + void subscribeMessageSendDataTask(); +} \ No newline at end of file diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/subscribemessagesendrecord/impl/SubscribeMessageSendDataServiceImpl.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/subscribemessagesendrecord/impl/SubscribeMessageSendDataServiceImpl.java new file mode 100644 index 00000000..b91e6e43 --- /dev/null +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/subscribemessagesendrecord/impl/SubscribeMessageSendDataServiceImpl.java @@ -0,0 +1,81 @@ +package com.xinelu.mobile.service.subscribemessagesendrecord.impl; + +import com.xinelu.common.config.WeChatAppletChatConfig; +import com.xinelu.common.enums.PatientTypeEnum; +import com.xinelu.common.enums.RouteNodeNameEnum; +import com.xinelu.common.enums.SubscribeStatusEnum; +import com.xinelu.mobile.mapper.homepage.HomePageMapper; +import com.xinelu.mobile.service.subscribemessagesendrecord.SubscribeMessageSendDataService; +import com.xinelu.mobile.utils.WeChatOfficialAccountUtils; +import com.xinelu.mobile.vo.wechatofficialaccountcallback.PatientVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description 订阅消息数据实现层 + * @Author zh + * @Date 2024-05-24 + */ +@Service +@Slf4j +public class SubscribeMessageSendDataServiceImpl implements SubscribeMessageSendDataService { + + @Resource + private HomePageMapper homePageMapper; + @Resource + private WeChatAppletChatConfig weChatAppletChatConfig; + @Resource + private WeChatOfficialAccountUtils weChatOfficialAccountUtils; + + public void subscribeMessageSendDataTask() { + List patient = homePageMapper.selectResidentAndSubscribeMessageRecord(SubscribeStatusEnum.accept.getValue(), weChatAppletChatConfig.getSignTemplateId()); + List collect = patient.stream().filter(Objects::nonNull).map(PatientVO::getPatientId).filter(Objects::nonNull).collect(Collectors.toList()); + List signPatientManageRouteNodes = homePageMapper.selectSignPatientManageRouteNode(collect); + List patientVOS = new ArrayList<>(); + for (PatientVO signPatientManageRouteNode : signPatientManageRouteNodes) { + if (Objects.isNull(signPatientManageRouteNode.getAppletPushSign()) || signPatientManageRouteNode.getAppletPushSign() != 1) { + continue; + } + if (signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_DISCHARGE.getInfo()) || signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_VISIT_DISCHARGE.getInfo())) { + PatientVO patientVO = patient.stream().filter(Objects::nonNull).filter(item -> signPatientManageRouteNode.getPatientId().equals(item.getPatientId())).findFirst().orElse(new PatientVO()); + if (patientVO.getPatientType().equals(PatientTypeEnum.DISCHARGED_PATIENT.getInfo())) { + LocalDate localDate = patientVO.getDischargeTime().plusDays(signPatientManageRouteNode.getRouteNodeDay()); + boolean before = localDate.isEqual(LocalDate.now()); + if (before) { + patientVOS.add(signPatientManageRouteNode); + } + } + } + if (signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_ADMISSION.getInfo())) { + PatientVO patientVO = patient.stream().filter(Objects::nonNull).filter(item -> signPatientManageRouteNode.getPatientId().equals(item.getPatientId())).findFirst().orElse(new PatientVO()); + if (patientVO.getPatientType().equals(PatientTypeEnum.IN_HOSPITAL_PATIENT.getInfo())) { + LocalDate localDate = patientVO.getAdmissionTime().plusDays(signPatientManageRouteNode.getRouteNodeDay()); + boolean before = localDate.isEqual(LocalDate.now()); + if (before) { + patientVOS.add(signPatientManageRouteNode); + } + } + } + if (signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_CONSULTATION.getInfo()) || signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_VISIT_DISCHARGE.getInfo())) { + PatientVO patientVO = patient.stream().filter(Objects::nonNull).filter(item -> signPatientManageRouteNode.getPatientId().equals(item.getPatientId())).findFirst().orElse(new PatientVO()); + if (patientVO.getPatientType().equals(PatientTypeEnum.OUTPATIENT.getInfo()) && patientVO.getDischargeTime() == null) { + LocalDate localDate = patientVO.getVisitDate().plusDays(signPatientManageRouteNode.getRouteNodeDay()); + boolean before = localDate.isEqual(LocalDate.now()); + if (before) { + patientVOS.add(signPatientManageRouteNode); + } + } + } + } + for (PatientVO patientVO : patientVOS) { + weChatOfficialAccountUtils.sendOfficialAccountTemplateMessage(patientVO); + } + } +} diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java index c469927f..09edb168 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java @@ -39,12 +39,7 @@ public class WeChatOfficialAccountUtils { private RedisTemplate redisTemplate; @Resource private WeChatOfficialAccountConfig weChatOfficialAccountConfig; - @Resource - private HomePageMapper homePageMapper; - @Resource - private ISpecialDiseaseRouteService iSpecialDiseaseRouteService; - @Resource - private WeChatAppletChatConfig weChatAppletChatConfig; + /** * 返回成功状态码 @@ -145,51 +140,4 @@ public class WeChatOfficialAccountUtils { } } } - - - public void aaaaaa() { - List patient = homePageMapper.selectResidentAndSubscribeMessageRecord(SubscribeStatusEnum.accept.getValue(), weChatAppletChatConfig.getSignTemplateId()); - List collect = patient.stream().filter(Objects::nonNull).map(PatientVO::getPatientId).filter(Objects::nonNull).collect(Collectors.toList()); - List signPatientManageRouteNodes = homePageMapper.selectSignPatientManageRouteNode(collect); - List patientVOS = new ArrayList<>(); - for (PatientVO signPatientManageRouteNode : signPatientManageRouteNodes) { - if (Objects.isNull(signPatientManageRouteNode.getAppletPushSign()) || signPatientManageRouteNode.getAppletPushSign() != 1) { - continue; - } - if (signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_DISCHARGE.getInfo()) || signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_VISIT_DISCHARGE.getInfo())) { - PatientVO patientVO = patient.stream().filter(Objects::nonNull).filter(item -> signPatientManageRouteNode.getPatientId().equals(item.getPatientId())).findFirst().orElse(new PatientVO()); - if (patientVO.getPatientType().equals(PatientTypeEnum.DISCHARGED_PATIENT.getInfo())) { - LocalDate localDate = patientVO.getDischargeTime().plusDays(signPatientManageRouteNode.getRouteNodeDay()); - boolean before = localDate.isEqual(LocalDate.now()); - if (before) { - patientVOS.add(signPatientManageRouteNode); - } - } - } - if (signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_ADMISSION.getInfo())) { - PatientVO patientVO = patient.stream().filter(Objects::nonNull).filter(item -> signPatientManageRouteNode.getPatientId().equals(item.getPatientId())).findFirst().orElse(new PatientVO()); - if (patientVO.getPatientType().equals(PatientTypeEnum.IN_HOSPITAL_PATIENT.getInfo())) { - LocalDate localDate = patientVO.getAdmissionTime().plusDays(signPatientManageRouteNode.getRouteNodeDay()); - boolean before = localDate.isEqual(LocalDate.now()); - if (before) { - patientVOS.add(signPatientManageRouteNode); - } - } - } - if (signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_CONSULTATION.getInfo()) || signPatientManageRouteNode.getRouteNodeName().equals(RouteNodeNameEnum.AFTER_VISIT_DISCHARGE.getInfo())) { - PatientVO patientVO = patient.stream().filter(Objects::nonNull).filter(item -> signPatientManageRouteNode.getPatientId().equals(item.getPatientId())).findFirst().orElse(new PatientVO()); - if (patientVO.getPatientType().equals(PatientTypeEnum.OUTPATIENT.getInfo()) && patientVO.getDischargeTime() == null) { - LocalDate localDate = patientVO.getVisitDate().plusDays(signPatientManageRouteNode.getRouteNodeDay()); - boolean before = localDate.isEqual(LocalDate.now()); - if (before) { - patientVOS.add(signPatientManageRouteNode); - } - } - } - } - for (PatientVO patientVO : patientVOS) { - sendOfficialAccountTemplateMessage(patientVO); - } - - } } diff --git a/postdischarge-quartz/pom.xml b/postdischarge-quartz/pom.xml index 68783c4b..2008bfc2 100644 --- a/postdischarge-quartz/pom.xml +++ b/postdischarge-quartz/pom.xml @@ -32,10 +32,15 @@ com.xinelu postdischarge-common - - com.xinelu - postdischarge-manage - + + com.xinelu + postdischarge-manage + + + + com.xinelu + postdischarge-mobile + \ No newline at end of file diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SubscribeTaskService.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SubscribeTaskService.java new file mode 100644 index 00000000..7fa10a60 --- /dev/null +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SubscribeTaskService.java @@ -0,0 +1,15 @@ +package com.xinelu.quartz.service; + +/** + * @Description 消息推送定时任务业务层 + * @Author zh + * @Date 2024-05-24 + */ +public interface SubscribeTaskService { + + + /** + * 签约患者管理任务路径节点消息推送定时任务,每10分钟执行一次 + */ + void signPatientManageRouteNodeTask(); +} diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java new file mode 100644 index 00000000..a77f02d4 --- /dev/null +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java @@ -0,0 +1,21 @@ +package com.xinelu.quartz.service.impl; + +import com.xinelu.mobile.service.subscribemessagesendrecord.SubscribeMessageSendDataService; +import com.xinelu.quartz.service.SubscribeTaskService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +@Slf4j +public class subscribeTaskServiceImpl implements SubscribeTaskService { + + @Resource + private SubscribeMessageSendDataService subscribeMessageSendRecordService; + + @Override + public void signPatientManageRouteNodeTask() { + subscribeMessageSendRecordService.subscribeMessageSendDataTask(); + } +} diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SubscribeTask.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SubscribeTask.java new file mode 100644 index 00000000..92782468 --- /dev/null +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SubscribeTask.java @@ -0,0 +1,29 @@ +package com.xinelu.quartz.task; + +import com.xinelu.quartz.service.SubscribeTaskService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @Description 消息推送相关定时任务 + * @Author zh + * @Date 2024-05-24 + */ +@Slf4j +@Component("subscribeMessagesTask") +public class SubscribeTask { + + @Resource + private SubscribeTaskService subscribeTaskService; + + /** + * 签约患者管理任务路径节点消息推送定时任务,每10分钟执行一次 + */ + public void automaticSendGoodsOrderTask() { + log.info("开始执行签约患者管理任务路径节点推送定时任务......"); + subscribeTaskService.signPatientManageRouteNodeTask(); + log.info("完成订阅签约患者管理任务路径节点推送定时任务......"); + } +}