From 984990f8643a5f3f091e61aa0fd2a6271295c279 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Tue, 30 Jun 2026 11:17:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E5=9B=9E=E6=89=A7=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShortMessageSendRecordMapper.java | 8 ++++ .../SignPatientManageRouteMapper.java | 9 ++++- .../impl/BatchSendTaskInfoServiceImpl.java | 38 +++++++++++++++++-- .../ShortMessageSendRecordMapper.xml | 6 +++ .../SignPatientManageRouteMapper.xml | 3 +- .../impl/SendTextMessageServiceImpl.java | 19 +++++++--- .../quartz/task/SendTextMessageTask.java | 7 +++- 7 files changed, 76 insertions(+), 14 deletions(-) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/shortmessagesendrecord/ShortMessageSendRecordMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/shortmessagesendrecord/ShortMessageSendRecordMapper.java index a89f64a4..53ac98c2 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/shortmessagesendrecord/ShortMessageSendRecordMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/shortmessagesendrecord/ShortMessageSendRecordMapper.java @@ -123,4 +123,12 @@ public interface ShortMessageSendRecordMapper { * @return int */ int updateShortMessageSendRecordByIds(@Param("ids") List ids , @Param("billId") Long billId); + + /** + * 根据任务明细id查询短信推送记录 + * + * @param nodeId 任务明细id + * @return int + */ + int selectSendRecordCountByNodeId(Long nodeId); } \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroute/SignPatientManageRouteMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroute/SignPatientManageRouteMapper.java index 1146f8df..7294c84c 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroute/SignPatientManageRouteMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroute/SignPatientManageRouteMapper.java @@ -6,6 +6,7 @@ import com.xinelu.manage.vo.manualfollowup.ManualFollowPatientVO; import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO; import com.xinelu.manage.vo.signpatientmanageroute.PhonePush; import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -157,5 +158,11 @@ public interface SignPatientManageRouteMapper { */ int insertBatch(List signPatientManageRoutes); - List selectRouteByBatchSendTaskRecordId(List batchSendTaskRecordId); + /** + * 根据推送任务id查询手机号信息 + * + * @param batchSendTaskRecordId 推送任务id + * @return SignPatientManageRouteVO + */ + List selectRouteByBatchSendTaskRecordId(@Param("batchSendTaskRecordId") List batchSendTaskRecordId); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java index b4001b72..ea668cc7 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java @@ -61,6 +61,7 @@ import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -228,6 +229,10 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { for (BatchSendTaskInfo batchSendTaskInfo : list) { batchSendTaskInfo.setSn(sn); batchSendTaskInfo.setHospitalAgencyId(agency.getId()); + //剔除空白字符(空格、制表符、换行符、回车等) + if (StringUtils.isNotBlank(batchSendTaskInfo.getPatientPhone())) { + batchSendTaskInfo.setPatientPhone(batchSendTaskInfo.getPatientPhone().replaceAll("\\s+", "")); + } batchSendTaskInfo.setHospitalAgencyName(agency.getAgencyName()); batchSendTaskInfo.setImportName(importName); batchSendTaskInfo.setCreateTime(LocalDateTime.now()); @@ -286,6 +291,21 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { @Override public AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException, IllegalAccessException { log.info("开始创建批量推送任务---------------"); + if (CollectionUtils.isEmpty(batchSendTaskRecordDto.getList())) { + return new AjaxResult(); + } + int start = batchSendTaskRecordDto.getList().size(); + batchSendTaskRecordDto.setList(new ArrayList<>(batchSendTaskRecordDto.getList().stream() + .filter(Objects::nonNull) + .filter(item -> StringUtils.isNotEmpty(item.getPatientName()) + && StringUtils.isNotEmpty(item.getPatientPhone())) + .collect(Collectors.toMap( + BatchSendTaskInfo::getPatientPhone, // 按手机号去重,也可按其他字段 + Function.identity(), + (existing, replacement) -> existing.getId() > replacement.getId() ? existing : replacement + )) + .values())); + int end = batchSendTaskRecordDto.getList().size(); //新增批量推送任务记录 BatchSendTaskRecordInfo batchSendTaskRecordInfo = new BatchSendTaskRecordInfo(); batchSendTaskRecordInfo.setBatchTaskName(batchSendTaskRecordDto.getManageRouteName()); @@ -516,8 +536,13 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { importTaskDto.setCustomerInfoList(customerInfoList); aiobService.importTask(importTaskDto); //根据机器人id查询智能外呼系统的任务id - log.info("创建批量电话推送任务执行完成......"); - return AjaxResult.success("创建批量电话推送任务执行完成"); + int filteredCount = start - end; + String message = "创建批量电话推送任务执行完成,共计" + start + "条任务"; + if (filteredCount > 0) { + message += ",过滤重复手机号" + filteredCount + "条"; + } + log.info(message); + return AjaxResult.success(message); } if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) { log.info("创建批量短信推送任务---------------"); @@ -542,8 +567,13 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { if (!aBoolean) { return AjaxResult.error("短信上传失败"); } - log.info("创建批量短信推送任务执行完成......"); - return AjaxResult.success("短信上传成功"); + int filteredCount = start - end; + String message = "创建批量短信推送任务执行完成,共计" + start + "条任务"; + if (filteredCount > 0) { + message += ",过滤重复手机号" + filteredCount + "条"; + } + log.info(message); + return AjaxResult.success(message); } return AjaxResult.success(); } 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 3fa6c70d..c93f93f8 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml @@ -430,4 +430,10 @@ #{id} + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml index 9cfeeac2..f22558b1 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml @@ -784,7 +784,8 @@