PostDischargePatientManage/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SendTextMessageTask.java

80 lines
3.4 KiB
Java
Raw Normal View History

2024-07-23 18:05:38 +08:00
package com.xinelu.quartz.task;
2026-04-29 22:33:39 +08:00
import com.alibaba.fastjson.JSON;
2024-07-23 18:05:38 +08:00
import com.aliyuncs.exceptions.ClientException;
2026-04-29 22:33:39 +08:00
import com.xinelu.manage.domain.shortmessagesendrecord.ShortMessageSendRecord;
import com.xinelu.manage.domain.textmessage.SmsReport;
import com.xinelu.manage.domain.textmessage.TaskMessageBackEntity;
import com.xinelu.manage.mapper.shortmessagesendrecord.ShortMessageSendRecordMapper;
2024-07-23 18:05:38 +08:00
import com.xinelu.quartz.service.SendTextMessageService;
import lombok.extern.slf4j.Slf4j;
2026-05-09 18:04:49 +08:00
import org.apache.commons.collections4.CollectionUtils;
2024-07-23 18:05:38 +08:00
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
2026-04-29 22:33:39 +08:00
import java.util.ArrayList;
import java.util.List;
2026-05-09 18:04:49 +08:00
import java.util.Objects;
import java.util.stream.Collectors;
2024-07-23 18:05:38 +08:00
/**
* @Description 短信相关定时任务
* @Author zh
2024-07-24 10:40:48 +08:00
* @Date 2024-07-22
2024-07-23 18:05:38 +08:00
*/
@Slf4j
@Component("sendTextMessageTask")
public class SendTextMessageTask {
@Resource
private SendTextMessageService sendTextMessageService;
2026-04-29 22:33:39 +08:00
@Resource
private ShortMessageSendRecordMapper shortMessageSendRecordMapper;
2024-07-23 18:05:38 +08:00
/**
2024-07-24 10:40:48 +08:00
* 签约患者管理任务路径节点短信发送定时任务
2024-07-23 18:05:38 +08:00
*/
public void automaticSendTextMessageTask() throws ClientException {
log.info("开始执行签约患者管理任务短信推送定时任务......");
sendTextMessageService.sendTextMessageSendTask();
log.info("完成订阅签约患者管理任务路径节点推送定时任务......");
}
2026-04-29 22:33:39 +08:00
public void smsReportBack() {
log.info("开始执行同步短信回调数据定时任务......");
TaskMessageBackEntity taskMessageBackEntity = new TaskMessageBackEntity();
taskMessageBackEntity.setReadState(0);
List<TaskMessageBackEntity> taskMessageBackEntityList = sendTextMessageService.taskMessageBack(taskMessageBackEntity);
List<ShortMessageSendRecord> shortMessageSendRecords = new ArrayList<>();
if (!CollectionUtils.isEmpty(taskMessageBackEntityList)) {
2026-05-09 18:04:49 +08:00
// 回调数据提取
List<SmsReport> smsReports = new ArrayList<>();
2026-04-29 22:33:39 +08:00
taskMessageBackEntityList.forEach(entity -> {
2026-05-09 18:04:49 +08:00
// JSONString 转 SmsReport
smsReports.addAll(JSON.parseArray(entity.getMessageBackData().toString(), SmsReport.class));
2026-04-29 22:33:39 +08:00
});
2026-05-09 18:04:49 +08:00
if (CollectionUtils.isNotEmpty(smsReports)) {
for (SmsReport smsReport : smsReports) {
// 回调数据解析
sendTextMessageService.taskTextMessageSendBack(smsReport, shortMessageSendRecords);
}
}
if (CollectionUtils.isNotEmpty(shortMessageSendRecords)) {
shortMessageSendRecordMapper.insertShortMessageSendRecords(shortMessageSendRecords);
}
List<Integer> ids = taskMessageBackEntityList.stream().filter(Objects::nonNull).map(TaskMessageBackEntity::getId).collect(Collectors.toList());
// 修改阿里云服务器回调数据已读状态
sendTextMessageService.updateReadState(1, ids);
2026-04-29 22:33:39 +08:00
}
log.info("完成同步百度外呼回调数据定时任务......");
}
public void clearCallbackData() {
log.info("开始执行清除过期的百度外呼回调数据定时任务......");
// 清除一个月前的数据
int count = sendTextMessageService.deleteData();
log.info("完成清除过期的百度外呼回调数据定时任务,共清除" + count + "条......");
}
2024-07-23 18:05:38 +08:00
}