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 ec3ff75..0ae0eff 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 @@ -32,43 +32,6 @@ public class RabbitMQConfig { return new DirectExchange("hldy.fwzl"); } - // 队列 - @Bean - public Queue nu001FwzlAsyncQueue() { - return new Queue("nu001.fwzl.async", true); - } - @Bean - public Queue nu001FwzlStatusQueue() { - return new Queue("nu001.fwzl.status", true); - } - @Bean - public Queue nu002FwzlAsyncQueue() { - return new Queue("nu002.fwzl.async", true); - } - @Bean - 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"); - } - @Bean - public Binding binding2(Queue nu001FwzlStatusQueue, DirectExchange fwzlExchange) { - return BindingBuilder.bind(nu001FwzlStatusQueue).to(fwzlExchange).with("nu001.fwzl.status"); - } - @Bean - public Binding binding3(Queue nu002FwzlAsyncQueue, DirectExchange fwzlExchange) { - return BindingBuilder.bind(nu002FwzlAsyncQueue).to(fwzlExchange).with("nu002.fwzl.async"); - } - @Bean - public Binding binding4(Queue nu002FwzlStatusQueue, DirectExchange fwzlExchange) { - return BindingBuilder.bind(nu002FwzlStatusQueue).to(fwzlExchange).with("nu002.fwzl.status"); - } - - - //注册 @Bean public DirectExchange registerExchange() { diff --git a/nursing-unit-common/src/main/java/com/nu/dto/StatusMQDto.java b/nursing-unit-common/src/main/java/com/nu/dto/StatusMQDto.java index ecc5a82..ad639c0 100644 --- a/nursing-unit-common/src/main/java/com/nu/dto/StatusMQDto.java +++ b/nursing-unit-common/src/main/java/com/nu/dto/StatusMQDto.java @@ -16,4 +16,5 @@ public class StatusMQDto { private String dictId; private String orgCode; + private String orgName; } diff --git a/nursing-unit-services/nu-services-biz/pom.xml b/nursing-unit-services/nu-services-biz/pom.xml index 5ac98e6..6bd8fad 100644 --- a/nursing-unit-services/nu-services-biz/pom.xml +++ b/nursing-unit-services/nu-services-biz/pom.xml @@ -44,6 +44,12 @@ nursing-unit-common ${nursingunit.version} - + + com.nursingunit.boot + nu-system-local-api + 2.0.0 + compile + + diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DirectiveMQListener.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DirectiveMQListener.java index 2671b75..fff25ac 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DirectiveMQListener.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DirectiveMQListener.java @@ -20,6 +20,10 @@ import com.nu.modules.servicetype.service.IConfigServiceTypeService; import com.nu.utils.RabbitMQUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.Lists; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -65,7 +69,14 @@ public class DirectiveMQListener { * * @param dto */ -// @RabbitListener(queues = "nu002.fwzl.async", errorHandler = "directiveMQErrorHandler") + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{directiveAsyncDQNP.getQueueName()}"), + exchange = @Exchange(name = "hldy.fwzl", type = ExchangeTypes.DIRECT), + key = "#{directiveAsyncDQNP.getKeyName()}" + ), + errorHandler = "directiveMQErrorHandler" + ) @DSTransactional(rollbackFor = {Exception.class}) public void handleMessage(DirectiveMQDto dto) { try { @@ -82,8 +93,7 @@ public class DirectiveMQListener { statusMQDto.setMessage(e.getMessage()); statusMQDto.setAsyncId(dto.getAsyncId()); statusMQDto.setCode("data"); - //TODO 返回的key应该是动态获取该机构编码 然后使用topic - rabbitMQUtil.sendToExchange("hldy.fwzl", "nu002.fwzl.status", statusMQDto); + rabbitMQUtil.sendToExchange("hldy.fwzl", "fwzl.async.result", statusMQDto); throw new RuntimeException(e); } StatusMQDto statusMQDto = new StatusMQDto(); @@ -91,7 +101,7 @@ public class DirectiveMQListener { statusMQDto.setMessage("数据同步成功!"); statusMQDto.setAsyncId(dto.getAsyncId()); statusMQDto.setCode("data"); - rabbitMQUtil.sendToExchange("hldy.fwzl", "nu002.fwzl.status", statusMQDto); + rabbitMQUtil.sendToExchange("hldy.fwzl", "fwzl.async.result", statusMQDto); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DynamicQueueNameProvider.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DynamicQueueNameProvider.java new file mode 100644 index 0000000..8a454d5 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/listener/DynamicQueueNameProvider.java @@ -0,0 +1,26 @@ +package com.nu.mq.directive.listener; + +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component("directiveAsyncDQNP") +public class DynamicQueueNameProvider { + + @Autowired + private ISysBaseAPI sysBaseAPI; + + public String getQueueName() { + String orgCode = sysBaseAPI.getDeptCode(); + if (StringUtils.isNotBlank(orgCode)) { + return orgCode + ".fwzl.async"; + } else { + return ""; + } + } + + public String getKeyName() { + return getQueueName(); + } +} diff --git a/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java b/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java index 092e4e5..8d5e8b2 100644 --- a/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java +++ b/nursing-unit-system/nu-system-api/nu-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java @@ -544,4 +544,9 @@ public interface ISysBaseAPI extends CommonAPI { */ boolean dictTableWhiteListCheckByDict(String tableOrDictCode, String... fields); + /** + * 获取本机构编码 + * @return + */ + String getDeptCode(); } diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java index ec33261..213e006 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java @@ -1828,4 +1828,17 @@ public class SysBaseApiImpl implements ISysBaseAPI { } } + @Override + public String getDeptCode() { + String result = null; + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("org_category","1"); + qw.eq("del_flag","0"); + List list = sysDepartService.list(qw); + if(list!=null && !list.isEmpty()){ + result = list.get(0).getOrgCode(); + } + return result; + } + } diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java index 7912a69..7844a0f 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java @@ -43,10 +43,11 @@ public class DictMQListener { * 字典同步 * 如果 没有字典则创建 然后把每一项字典项新增进去 * 有字典项 则检查每一项字典项是否存在,不存在则插入 + *

+ * 动态生成队列名称,避免每次部署新系统都需要改动 * * @param dto */ -// @RabbitListener(queues = "sysdict.async", errorHandler = "dictMQErrorHandler") @RabbitListener( bindings = @QueueBinding( value = @Queue( @@ -60,10 +61,12 @@ public class DictMQListener { ), errorHandler = "dictMQErrorHandler" ) public void handleMessage(SysDictMQDto dto) { - String orgCode = "业务系统未查询到"; - String orgName = "业务系统未查询到"; + //查询此业务系统的机构编码、名称 + String orgCode = "业务系统中未设置"; + String orgName = "业务系统中未设置"; QueryWrapper sysDepartQueryWrapper = new QueryWrapper<>(); sysDepartQueryWrapper.eq("org_category", "1"); + sysDepartQueryWrapper.eq("del_flag", "0"); List list = departService.list(sysDepartQueryWrapper); if (list != null && list.size() > 0) { orgCode = list.get(0).getOrgCode(); @@ -107,17 +110,19 @@ public class DictMQListener { } catch (Exception e) { StatusMQDto statusMQDto = new StatusMQDto(); statusMQDto.setStatus(MQStatus.PROCESS_FAILED.getCode()); - statusMQDto.setMessage(orgName + " 同步失败:" + e.getMessage()); + statusMQDto.setMessage(e.getMessage()); statusMQDto.setDictId(dto.getId()); statusMQDto.setOrgCode(orgCode); + statusMQDto.setOrgName(orgName); rabbitMQUtil.sendToExchange("hldy.sysdict", "sysdict.async.result", statusMQDto); throw new RuntimeException(e); } StatusMQDto statusMQDto = new StatusMQDto(); statusMQDto.setStatus(MQStatus.SUCCESS.getCode()); - statusMQDto.setMessage(orgName + " 数据同步成功!"); + statusMQDto.setMessage("数据同步成功!"); statusMQDto.setDictId(dto.getId()); statusMQDto.setOrgCode(orgCode); + statusMQDto.setOrgName(orgName); rabbitMQUtil.sendToExchange("hldy.sysdict", "sysdict.async.result", statusMQDto); } diff --git a/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml b/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml index f0a72ad..41cad9e 100644 --- a/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml +++ b/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml @@ -1,5 +1,5 @@ server: - port: 8081 + port: 8084 tomcat: max-swallow-size: -1 error: diff --git a/pom.xml b/pom.xml index 071a19d..bfafb89 100644 --- a/pom.xml +++ b/pom.xml @@ -491,7 +491,7 @@ dev - false + true @@ -543,7 +543,7 @@ uat - true + false