From af7b492bf862218323ba7dd5bdb667acbdf51cdb Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Tue, 22 Apr 2025 17:11:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=B3=A8=E5=86=8C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nursing-unit-admin/nu-admin-biz/pom.xml | 6 ++ .../AdvisoryMQExceptionHandler.java | 35 ++++++++++ .../listener/NuBizAdvisoryInfoListener.java | 28 ++++++++ .../java/com/nu/config/RabbitMQConfig.java | 17 +++++ .../java/com/nu/dto/NuBizAdvisoryInfoDto.java | 68 +++++++++++++++++++ .../ConfigServiceDirectiveController.java | 3 + 6 files changed, 157 insertions(+) create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/exceptionhandler/AdvisoryMQExceptionHandler.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/listener/NuBizAdvisoryInfoListener.java create mode 100644 nursing-unit-common/src/main/java/com/nu/dto/NuBizAdvisoryInfoDto.java diff --git a/nursing-unit-admin/nu-admin-biz/pom.xml b/nursing-unit-admin/nu-admin-biz/pom.xml index fa319c6..d165514 100644 --- a/nursing-unit-admin/nu-admin-biz/pom.xml +++ b/nursing-unit-admin/nu-admin-biz/pom.xml @@ -35,6 +35,12 @@ nursing-unit-api ${nursingunit.version} + + + com.nursingunit.boot + nursing-unit-common + ${nursingunit.version} + diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/exceptionhandler/AdvisoryMQExceptionHandler.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/exceptionhandler/AdvisoryMQExceptionHandler.java new file mode 100644 index 0000000..8d8eaec --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/exceptionhandler/AdvisoryMQExceptionHandler.java @@ -0,0 +1,35 @@ +package com.nu.mq.directive.exceptionhandler; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.AmqpRejectAndDontRequeueException; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.listener.api.RabbitListenerErrorHandler; +import org.springframework.amqp.rabbit.support.ListenerExecutionFailedException; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("AdvisoryMQExceptionHandler") +public class AdvisoryMQExceptionHandler implements RabbitListenerErrorHandler { + + @Override + public Object handleError(Message message, org.springframework.messaging.Message message1, ListenerExecutionFailedException e) { + log.error("MQ消息处理失败 | 消息体: {} | 异常原因: {}", new String(message.getBody()), e.getCause().getMessage()); + + // 根据异常类型选择处理策略 + if (isRetryable(e)) { + // 可重试异常:抛出异常触发重试 + throw e; + } else { + // 不可恢复异常:拒绝消息且不重新入队 + throw new AmqpRejectAndDontRequeueException("消息处理失败且禁止重试", e); + } + } + + /** + * 判断异常是否可重试 + */ + private boolean isRetryable(ListenerExecutionFailedException e) { + // 示例:网络异常、数据库临时锁超时可重试 + return e.getCause() instanceof RuntimeException; // 根据实际业务调整 + } +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/listener/NuBizAdvisoryInfoListener.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/listener/NuBizAdvisoryInfoListener.java new file mode 100644 index 0000000..a171bf5 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/mq/NuBizAdvisoryInfo/listener/NuBizAdvisoryInfoListener.java @@ -0,0 +1,28 @@ +package com.nu.mq.NuBizAdvisoryInfo.listener; + +import com.nu.dto.NuBizAdvisoryInfoDto; +import com.nu.modules.NuBizAdvisoryInfo.entity.NuBizAdvisoryInfo; +import com.nu.modules.NuBizAdvisoryInfo.service.INuBizAdvisoryInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class NuBizAdvisoryInfoListener { + @Autowired + private INuBizAdvisoryInfoService nuBizAdvisoryInfoService; + @RabbitListener(queues = "register.addData", errorHandler = "AdvisoryMQExceptionHandler") + public void handleMessage(NuBizAdvisoryInfoDto dto) { + try { + System.out.println(111); + NuBizAdvisoryInfo nuBizAdvisoryInfo = new NuBizAdvisoryInfo(); + BeanUtils.copyProperties(dto,nuBizAdvisoryInfo); + nuBizAdvisoryInfoService.save(nuBizAdvisoryInfo); + } catch (Exception e) { + System.out.println("异常了:" + e.getMessage()); + } + } +} diff --git a/nursing-unit-common/src/main/java/com/nu/config/RabbitMQConfig.java b/nursing-unit-common/src/main/java/com/nu/config/RabbitMQConfig.java index 2d30697..1fe3a70 100644 --- a/nursing-unit-common/src/main/java/com/nu/config/RabbitMQConfig.java +++ b/nursing-unit-common/src/main/java/com/nu/config/RabbitMQConfig.java @@ -49,6 +49,7 @@ public class RabbitMQConfig { public Queue nu002FwzlStatusQueue() { return new Queue("nu002.fwzl.status", true); } + @Bean public Binding binding1(Queue nu001FwzlAsyncQueue, DirectExchange fwzlExchange) { return BindingBuilder.bind(nu001FwzlAsyncQueue).to(fwzlExchange).with("nu001.fwzl.async"); @@ -65,4 +66,20 @@ public class RabbitMQConfig { public Binding binding4(Queue nu002FwzlStatusQueue, DirectExchange fwzlExchange) { return BindingBuilder.bind(nu002FwzlStatusQueue).to(fwzlExchange).with("nu002.fwzl.status"); } + + + + //注册 + @Bean + public DirectExchange registerExchange() { + return new DirectExchange("hldy.register"); + } + @Bean + public Queue registerAddQueue() { + return new Queue("register.addData", true); + } + @Bean + public Binding binding5(Queue registerAddQueue, DirectExchange registerExchange) { + return BindingBuilder.bind(registerAddQueue).to(registerExchange).with("register.addData"); + } } diff --git a/nursing-unit-common/src/main/java/com/nu/dto/NuBizAdvisoryInfoDto.java b/nursing-unit-common/src/main/java/com/nu/dto/NuBizAdvisoryInfoDto.java new file mode 100644 index 0000000..3391e08 --- /dev/null +++ b/nursing-unit-common/src/main/java/com/nu/dto/NuBizAdvisoryInfoDto.java @@ -0,0 +1,68 @@ +package com.nu.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description: 咨询信息 + * @Author: jeecg-boot + * @Date: 2025-04-07 + * @Version: V1.0 + */ +@Data +public class NuBizAdvisoryInfoDto implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + private String id; + /**微信id*/ + private String openId; + /**微信名称*/ + private String wechatName; + /**咨询人姓名*/ + private String name; + /**性别*/ + private String sex; + /**联系电话*/ + private String tel; + /**咨询类型 1入住nu 2入驻机构 3我要加盟*/ + private String advisoryType; + /**状态 1审核中 2审核完成 3驳回*/ + private String status; + /**审核备注*/ + private String content; + /**机构访问地址*/ + private String serverUrl; + /**创建人*/ + private String createBy; + /**创建日期*/ + private java.util.Date createTime; + /**更新人*/ + private String updateBy; + /**更新日期*/ + private java.util.Date updateTime; + /**所属部门*/ + private String sysOrgCode; + /**老人姓名*/ + private String oldManName; + /**老人年龄*/ + private String oldManAge; + /**医保类型*/ + private String medicalInsuranceType; + /**老人性别*/ + private String oldManSex; + /**报销类型*/ + private String reimbType; + /**护理单元*/ + private String nuId; + private String advisoryTypeName; + private String sexName; + private String sysOrgCodeName; + private String statusName; + private String oldManSexName; + private String medicalInsuranceTypeName; + private String reimbTypeName; + + +} diff --git a/nursing-unit-service-directive/nu-service-directive-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java b/nursing-unit-service-directive/nu-service-directive-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java index 2eb912e..46eac71 100644 --- a/nursing-unit-service-directive/nu-service-directive-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java +++ b/nursing-unit-service-directive/nu-service-directive-biz/src/main/java/com/nu/modules/servicedirective/controller/ConfigServiceDirectiveController.java @@ -109,6 +109,9 @@ public class ConfigServiceDirectiveController extends JeecgController async(@RequestBody DirectiveMQDto dto) { + //TODO 源数据的服务指令更新了 不处理 到日子后只能增量 + //TODO 服务指令相关的字典(服务类别、类型等)需要加个是否已被同步标识 + //TODO 前台选择机构后刷新数据应该有个更新中的效果 List dicts = sysBaseAPI.getDictItems("mq_org_queue"); String queue = dicts.stream().filter(d -> d.getValue().equals(dto.getOrgCode())).findFirst().map(DictModel::getText).orElse(null); if (StringUtils.isNotBlank(queue)) {