From a8050ed6feefa637e88cd1412fe928db0541f64c Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Wed, 31 Jul 2024 14:10:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SubscribeMessageSendRecord.java | 2 +- .../SubscribeMessageSendRecordMapper.java | 10 +++++++ .../subscribemessagesendrecord/RecordNum.java | 23 ++++++++++++++++ .../SubscribeMessageSendRecordMapper.xml | 13 +++++++++ .../impl/subscribeTaskServiceImpl.java | 27 ++++++++++++++++--- 5 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/subscribemessagesendrecord/RecordNum.java diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/subscribemessagesendrecord/SubscribeMessageSendRecord.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/subscribemessagesendrecord/SubscribeMessageSendRecord.java index 074a0550..b43b0b9a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/subscribemessagesendrecord/SubscribeMessageSendRecord.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/subscribemessagesendrecord/SubscribeMessageSendRecord.java @@ -101,7 +101,7 @@ public class SubscribeMessageSendRecord extends BaseEntity { * 推送结果状态码(0表示成功) */ @ApiModelProperty(value = "推送结果状态码") - @Excel(name = "推送结果状态码", readConverterExp = "0=表示成功") + @Excel(name = "推送结果状态码", readConverterExp = "0表示成功") private Integer errorCode; /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.java index 7ceb8caa..3cce61e1 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.java @@ -1,6 +1,8 @@ package com.xinelu.manage.mapper.subscribemessagesendrecord; import com.xinelu.manage.domain.subscribemessagesendrecord.SubscribeMessageSendRecord; +import com.xinelu.manage.vo.subscribemessagesendrecord.RecordNum; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -66,4 +68,12 @@ public interface SubscribeMessageSendRecordMapper { * @return int **/ int insertSubscribeMessageSendRecordList(List subscribeMessageSendRecordList); + + /** + * 节点推送数量 + * + * @param manageRouteNodeIds 节点id + * @return RecordNum + */ + List selectRecordCountByManageRouteNodeIds(@Param("manageRouteNodeIds") List manageRouteNodeIds); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/subscribemessagesendrecord/RecordNum.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/subscribemessagesendrecord/RecordNum.java new file mode 100644 index 00000000..88150b44 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/subscribemessagesendrecord/RecordNum.java @@ -0,0 +1,23 @@ +package com.xinelu.manage.vo.subscribemessagesendrecord; + +import lombok.Data; + +/** + * 微信小程序订阅消息发送结果记录数量 + * + * @author zh + * @date 2024-07-31 + */ +@Data +public class RecordNum { + + /* + *推送数量 + */ + private Long num; + + /** + * 节点id + */ + private Long manageRouteNodeId; +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.xml index cf4ac9e2..364a478a 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/subscribemessagesendrecord/SubscribeMessageSendRecordMapper.xml @@ -231,4 +231,17 @@ ) + + \ No newline at end of file diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java index e7b1d490..ba130a15 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/subscribeTaskServiceImpl.java @@ -6,6 +6,7 @@ import com.xinelu.common.enums.*; import com.xinelu.common.utils.SecurityUtils; import com.xinelu.manage.domain.subscribemessagesendrecord.SubscribeMessageSendRecord; import com.xinelu.manage.mapper.subscribemessagesendrecord.SubscribeMessageSendRecordMapper; +import com.xinelu.manage.vo.subscribemessagesendrecord.RecordNum; import com.xinelu.mobile.domain.TemplateContent; import com.xinelu.mobile.mapper.homepage.HomePageMapper; import com.xinelu.mobile.utils.WeChatOfficialAccountUtils; @@ -53,6 +54,9 @@ public class subscribeTaskServiceImpl implements SubscribeTaskService { } // 患者节点表 List signPatientManageRouteNodes = homePageMapper.selectSignPatientManageRouteNode(patientIdList); + if (CollectionUtils.isEmpty(signPatientManageRouteNodes)) { + return; + } // 注:PatientVO 包含签约路径节点相关属性,后面用于推送消息 List patientVOList = new ArrayList<>(); //发送消息到期节点id集合 @@ -138,11 +142,19 @@ public class subscribeTaskServiceImpl implements SubscribeTaskService { // } // } // } - //发送 - //发送失败id集合 + if (CollectionUtils.isEmpty(patientVOList)) { + return; + } + //节点推送数量 + List collect = patientVOList.stream().filter(Objects::nonNull).map(PatientVO::getSignPatientManageRouteNodeId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + List recordNums = subscribeMessageSendRecordMapper.selectRecordCountByManageRouteNodeIds(collect); + //发送成功id集合 List signPatientManageRouteNodeIds = new ArrayList<>(); + //发送失败 + List failSignPatientManageRouteNodeIds = new ArrayList<>(); for (PatientVO patientVO : patientVOList) { try { + //判断推送内容格式是否符合 JSON.parseArray(patientVO.getAppletNodeContent(), TemplateContent.class); } catch (Exception e) { continue; @@ -150,13 +162,18 @@ public class subscribeTaskServiceImpl implements SubscribeTaskService { // 开始推送消息 Integer integer = weChatOfficialAccountUtils.sendAppletTemplateMessage(patientVO); SubscribeMessageSendRecord subscribeMessageSendRecord = new SubscribeMessageSendRecord(); + //推送结果 if (integer == 0) { signPatientManageRouteNodeIds.add(patientVO.getSignPatientManageRouteNodeId()); subscribeMessageSendRecord.setErrorCode(0); subscribeMessageSendRecord.setErrorStatus(ErrorStatusEnum.success.getValue()); } else { - subscribeMessageSendRecord.setErrorCode(1); + subscribeMessageSendRecord.setErrorCode(integer); subscribeMessageSendRecord.setErrorStatus(ErrorStatusEnum.fail.getValue()); + RecordNum recordNum = recordNums.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getManageRouteNodeId()) && item.getManageRouteNodeId().equals(patientVO.getSignPatientManageRouteNodeId())).findFirst().orElse(new RecordNum()); + if (Objects.nonNull(recordNum.getNum()) && recordNum.getNum() >= 2) { + failSignPatientManageRouteNodeIds.add(patientVO.getSignPatientManageRouteNodeId()); + } } subscribeMessageSendRecord.setPatientId(patientVO.getPatientId()); subscribeMessageSendRecord.setManageRouteNodeId(patientVO.getSignPatientManageRouteNodeId()); @@ -172,5 +189,9 @@ public class subscribeTaskServiceImpl implements SubscribeTaskService { if (CollectionUtils.isNotEmpty(signPatientManageRouteNodeIds)) { homePageMapper.updateNodeExecuteStatusByIds(signPatientManageRouteNodeIds, NodeExecuteStatusEnum.EXECUTED.getInfo(), NodeExecuteResultStatusEnum.SUCCESS.getInfo()); } + //更改失败执行状态 + if (CollectionUtils.isNotEmpty(failSignPatientManageRouteNodeIds)) { + homePageMapper.updateNodeExecuteStatusByIds(failSignPatientManageRouteNodeIds, NodeExecuteStatusEnum.EXECUTED.getInfo(), NodeExecuteResultStatusEnum.FAILURE.getInfo()); + } } }