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)) {