定时任务

This commit is contained in:
zhangheng 2024-05-24 17:50:23 +08:00
parent 6da534c93d
commit fd1f709db5
7 changed files with 167 additions and 57 deletions

View File

@ -0,0 +1,11 @@
package com.xinelu.mobile.service.subscribemessagesendrecord;
/**
* @Description 订阅消息数据业务层
* @Author zh
* @Date 2024-05-24
*/
public interface SubscribeMessageSendDataService {
void subscribeMessageSendDataTask();
}

View File

@ -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<PatientVO> patient = homePageMapper.selectResidentAndSubscribeMessageRecord(SubscribeStatusEnum.accept.getValue(), weChatAppletChatConfig.getSignTemplateId());
List<Long> collect = patient.stream().filter(Objects::nonNull).map(PatientVO::getPatientId).filter(Objects::nonNull).collect(Collectors.toList());
List<PatientVO> signPatientManageRouteNodes = homePageMapper.selectSignPatientManageRouteNode(collect);
List<PatientVO> 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);
}
}
}

View File

@ -39,12 +39,7 @@ public class WeChatOfficialAccountUtils {
private RedisTemplate<String, Object> 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<PatientVO> patient = homePageMapper.selectResidentAndSubscribeMessageRecord(SubscribeStatusEnum.accept.getValue(), weChatAppletChatConfig.getSignTemplateId());
List<Long> collect = patient.stream().filter(Objects::nonNull).map(PatientVO::getPatientId).filter(Objects::nonNull).collect(Collectors.toList());
List<PatientVO> signPatientManageRouteNodes = homePageMapper.selectSignPatientManageRouteNode(collect);
List<PatientVO> 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);
}
}
}

View File

@ -32,10 +32,15 @@
<groupId>com.xinelu</groupId>
<artifactId>postdischarge-common</artifactId>
</dependency>
<dependency>
<groupId>com.xinelu</groupId>
<artifactId>postdischarge-manage</artifactId>
</dependency>
<dependency>
<groupId>com.xinelu</groupId>
<artifactId>postdischarge-manage</artifactId>
</dependency>
<dependency>
<groupId>com.xinelu</groupId>
<artifactId>postdischarge-mobile</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,15 @@
package com.xinelu.quartz.service;
/**
* @Description 消息推送定时任务业务层
* @Author zh
* @Date 2024-05-24
*/
public interface SubscribeTaskService {
/**
* 签约患者管理任务路径节点消息推送定时任务每10分钟执行一次
*/
void signPatientManageRouteNodeTask();
}

View File

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

View File

@ -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("完成订阅签约患者管理任务路径节点推送定时任务......");
}
}