Merge remote-tracking branch 'origin/dev' into dev_hekoufirsthospital

This commit is contained in:
zhangheng 2025-12-20 18:19:19 +08:00
commit 4343d60bbd
5 changed files with 43 additions and 29 deletions

View File

@ -730,7 +730,9 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
boolean before = localDate.isBefore(LocalDate.now()) || localDate.isEqual(LocalDate.now());
if (before) {
//转换成中文
if(StringUtils.isNotBlank(manualFollowUpVO.getRouteNodeName())){//1219应对任务管理添加管理
manualFollowUpVO.setRouteNodeName(RouteNodeNameEnum.getNameByInfo(manualFollowUpVO.getRouteNodeName()).getName());
}
manualFollowUpVO.setPlanTime(localDate);
// 3.6 放入集合
manualFollowUps.add(manualFollowUpVO);

View File

@ -66,4 +66,10 @@ public class TextMessage {
@ApiModelProperty(value = "节点id")
private Long signPatientManageRouteNodeId;
@ApiModelProperty(value = "电话短信提醒")
private String phoneMessageRemind;
@ApiModelProperty(value = "电话短信code")
private String phoneMessageTemplateCode;
}

View File

@ -206,7 +206,7 @@
COUNT(1) num
from short_message_send_record
where manage_route_node_id IN
<foreach item="manageRouteNodeId" collection="manageRouteNodeId" open="(" separator="," close=")">
<foreach item="manageRouteNodeId" collection="manageRouteNodeIds" open="(" separator="," close=")">
#{manageRouteNodeId}
</foreach>
</select>

View File

@ -1008,14 +1008,16 @@
pi.discharge_time,
pi.visit_date,
pi.visit_method,
tm.text_message_id
tm.text_message_id,
(SELECT text_message_id FROM text_message WHERE id = spmrn.phone_message_template_id) phoneMessageTemplateCode,
spmrn.phone_message_remind
from sign_patient_manage_route_node spmrn
LEFT JOIN sign_patient_manage_route spmr ON spmr.id = spmrn.manage_route_id
LEFT JOIN patient_info pi ON pi.id = spmr.patient_id
LEFT JOIN text_message tm ON tm.id = spmrn.message_template_id
where spmrn.message_push_sign = 1
where (spmrn.message_push_sign = 1 or (spmrn.phone_message_remind is not null and spmrn.phone_message_remind != 'NOT_SEND_MESSAGE'))
and spmrn.del_flag = 0
and spmrn.node_execute_status = 'UNEXECUTED'
and spmrn.node_execute_status = 'EXECUTED'
and (spmrn.message_node_execute_result_status is null or spmrn.message_node_execute_result_status = ' ')
</select>

View File

@ -3,11 +3,7 @@ package com.xinelu.quartz.service.impl;
import com.aliyuncs.exceptions.ClientException;
import com.xinelu.common.config.AliYunSmsTwoConfig;
import com.xinelu.common.config.PushMessageRestrictions;
import com.xinelu.common.enums.ErrorStatusEnum;
import com.xinelu.common.enums.NodeExecuteResultStatusEnum;
import com.xinelu.common.enums.NodeExecuteStatusEnum;
import com.xinelu.common.enums.RouteNodeNameEnum;
import com.xinelu.common.enums.ShortMessageTypeEnum;
import com.xinelu.common.enums.*;
import com.xinelu.manage.domain.shortmessagesendrecord.ShortMessageSendRecord;
import com.xinelu.manage.dto.smssend.SmsInfoDTO;
import com.xinelu.manage.mapper.shortmessagesendrecord.ShortMessageSendRecordMapper;
@ -17,21 +13,18 @@ import com.xinelu.manage.vo.signpatientmanageroutenode.TextMessage;
import com.xinelu.manage.vo.subscribemessagesendrecord.RecordNum;
import com.xinelu.mobile.utils.SmsSendUtils;
import com.xinelu.quartz.service.SendTextMessageService;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description 短信发送定时任务业务层
* @Author zh
@ -71,30 +64,35 @@ public class SendTextMessageServiceImpl implements SendTextMessageService {
//超时短信ids
List<Long> expiredManageRouteNodeIds = new ArrayList<>();
LocalDateTime now = LocalDateTime.now();
LocalDate nowDate = LocalDate.now();
for (TextMessage textMessage : textMessages) {
//判断推送状态
if (Objects.isNull(textMessage.getMessagePushSign()) || textMessage.getMessagePushSign() != 1) {
if ((Objects.isNull(textMessage.getMessagePushSign()) || textMessage.getMessagePushSign() != 1) && (StringUtils.isBlank(textMessage.getPhoneMessageRemind()) || textMessage.getPhoneMessageRemind().equals("NOT_SEND_MESSAGE"))) {
continue;
}
//过滤脏数据
if (StringUtils.isBlank(textMessage.getPatientType()) || Objects.isNull(textMessage.getRouteNodeDay())) {
//过滤脏数据 if (StringUtils.isBlank(textMessage.getPatientType()) || Objects.isNull(textMessage.getRouteNodeDay()))
if (StringUtils.isBlank(textMessage.getPatientType())) {
continue;
}
//模版暂时处理
if (StringUtils.isBlank(textMessage.getTextMessageId()) || !aliYunSmsTwoConfig.getTemplateCode().equals(textMessage.getTextMessageId())) {
if ((StringUtils.isBlank(textMessage.getTextMessageId()) || !aliYunSmsTwoConfig.getTemplateCode().equals(textMessage.getTextMessageId())) && (StringUtils.isBlank(textMessage.getPhoneMessageTemplateCode()) || !aliYunSmsTwoConfig.getTemplateCode().equals(textMessage.getPhoneMessageTemplateCode()))) {
continue;
}
LocalDate localDate = null;
if (Objects.nonNull(textMessage.getDischargeTime())) {
//后续加入根据类型判断使用具体那个时间
if (Objects.nonNull(textMessage.getDischargeTime()) && Objects.nonNull(textMessage.getRouteNodeDay())) {
localDate = textMessage.getDischargeTime().plusDays(textMessage.getRouteNodeDay());
}
if (Objects.isNull(textMessage.getDischargeTime()) && Objects.nonNull(textMessage.getVisitDate())) {
localDate = textMessage.getVisitDate().plusDays(textMessage.getRouteNodeDay());
// if (Objects.isNull(textMessage.getDischargeTime()) && Objects.nonNull(textMessage.getVisitDate())) {
// localDate = textMessage.getVisitDate().plusDays(textMessage.getRouteNodeDay());
// }
if (Objects.isNull(textMessage.getRouteNodeDay())){
localDate = nowDate;//新加的外呼立即执行没有getRouteNodeDay
}
if (Objects.isNull(localDate)) {
continue;
}
boolean before = localDate.isBefore(LocalDate.now()) || localDate.isEqual(LocalDate.now());
boolean before = localDate.isBefore(nowDate) || localDate.isEqual(nowDate);
if (before) {
//超出7天更改状态
long until = localDate.until(LocalDate.now(), ChronoUnit.DAYS);
@ -158,7 +156,13 @@ public class SendTextMessageServiceImpl implements SendTextMessageService {
smsInfoDTO.setPhoneNumbers(message.getPatientPhone());
smsInfoDTO.setSignName(aliYunSmsTwoConfig.getSignName());
// 根据模版id发送
if (StringUtils.isNotBlank(message.getTextMessageId()) && StringUtils.isBlank(message.getPhoneMessageTemplateCode())){
smsInfoDTO.setTemplateCode(message.getTextMessageId());
} else if (StringUtils.isNotBlank(message.getPhoneMessageTemplateCode()) && StringUtils.isBlank(message.getTextMessageId())){
smsInfoDTO.setTemplateCode(message.getPhoneMessageTemplateCode());
}else {
smsInfoDTO.setTemplateCode(aliYunSmsTwoConfig.getTemplateCode());
}
Boolean aBoolean = smsSendUtils.sendTextMessage(smsInfoDTO);
ShortMessageSendRecord shortMessageSendRecord = new ShortMessageSendRecord();
shortMessageSendRecord.setMessageType(ShortMessageTypeEnum.COMMON.getInfo());