diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java index 9a225f28..00b19817 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java @@ -730,7 +730,9 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout boolean before = localDate.isBefore(LocalDate.now()) || localDate.isEqual(LocalDate.now()); if (before) { //转换成中文…… - manualFollowUpVO.setRouteNodeName(RouteNodeNameEnum.getNameByInfo(manualFollowUpVO.getRouteNodeName()).getName()); + if(StringUtils.isNotBlank(manualFollowUpVO.getRouteNodeName())){//1219应对任务管理添加管理 + manualFollowUpVO.setRouteNodeName(RouteNodeNameEnum.getNameByInfo(manualFollowUpVO.getRouteNodeName()).getName()); + } manualFollowUpVO.setPlanTime(localDate); // 3.6 放入集合 manualFollowUps.add(manualFollowUpVO); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/signpatientmanageroutenode/TextMessage.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/signpatientmanageroutenode/TextMessage.java index cfcdaa81..00106ff4 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/signpatientmanageroutenode/TextMessage.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/signpatientmanageroutenode/TextMessage.java @@ -66,4 +66,10 @@ public class TextMessage { @ApiModelProperty(value = "节点id") private Long signPatientManageRouteNodeId; + + @ApiModelProperty(value = "电话短信提醒") + private String phoneMessageRemind; + + @ApiModelProperty(value = "电话短信code") + private String phoneMessageTemplateCode; } diff --git a/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml index 071f8da9..a6fe4f25 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml @@ -206,7 +206,7 @@ COUNT(1) num from short_message_send_record where manage_route_node_id IN - + #{manageRouteNodeId} diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml index 16b3aff2..26bc5029 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml @@ -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 = ' ') diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java index eeb38add..34124295 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java @@ -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 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发送 - smsInfoDTO.setTemplateCode(message.getTextMessageId()); + 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());