From 652d89029380e62952f580284713bbd06efb7bbd Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Fri, 25 Apr 2025 16:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8C=87=E4=BB=A4=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/NuBizAdvisoryInfoServiceImpl.java | 5 +- .../java/com/nu/config/RabbitMQConfig.java | 7 ++ .../main/java/com/nu/dto/DirectiveMQDto.java | 5 + .../src/main/java/com/nu/dto/StatusMQDto.java | 11 ++- .../entity/DirectiveTagRelation.java | 28 ++++++ .../mapper/DirectiveTagRelationMapper.java | 18 ++++ .../mapper/xml/DirectiveTagRelationMapper.xml | 16 ++++ .../service/IDirectiveTagService.java | 9 ++ .../service/impl/DirectiveTagServiceImpl.java | 28 +++++- .../mapper/ConfigServiceDirectiveMapper.java | 4 + .../xml/ConfigServiceDirectiveMapper.xml | 4 + .../IConfigServiceDirectiveService.java | 6 ++ .../ConfigServiceDirectiveServiceImpl.java | 30 +++++- .../DirectiveMQExceptionHandler.java | 21 ++--- .../listener/DirectiveMQListener.java | 91 +++++++++++++++++-- ...tion-dev.yml => application-dev-nu002.yml} | 19 ++-- 16 files changed, 266 insertions(+), 36 deletions(-) create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/entity/DirectiveTagRelation.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/DirectiveTagRelationMapper.java create mode 100644 nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/xml/DirectiveTagRelationMapper.xml rename nursing-unit-system/nu-system-start/src/main/resources/{application-dev.yml => application-dev-nu002.yml} (96%) diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuBizAdvisoryInfo/service/impl/NuBizAdvisoryInfoServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuBizAdvisoryInfo/service/impl/NuBizAdvisoryInfoServiceImpl.java index 3ed1e08..e74c187 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuBizAdvisoryInfo/service/impl/NuBizAdvisoryInfoServiceImpl.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuBizAdvisoryInfo/service/impl/NuBizAdvisoryInfoServiceImpl.java @@ -53,7 +53,10 @@ public class NuBizAdvisoryInfoServiceImpl extends ServiceImpl idList; + + //同步主表id + private String asyncId; + //同步子表code + private String code; } 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 c78a7c1..ec4955b 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 @@ -4,6 +4,13 @@ import lombok.Data; @Data public class StatusMQDto { - int status; - String message; + //同步状态 MQStatus枚举类 + private int status; + //同步结果 + private String message; + + //同步表主表id + private String asyncId; + //同步表子表code + private String code; } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/entity/DirectiveTagRelation.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/entity/DirectiveTagRelation.java new file mode 100644 index 0000000..19248b9 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/entity/DirectiveTagRelation.java @@ -0,0 +1,28 @@ +package com.nu.modules.directivetag.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @Description: 服务指令-指令标签中间表 + * @Author: 张明远 + * @Date: 2025-4-23 09:26:04 + * @Version: V1.0 + */ +@Data +@TableName("nu_directive_tag") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_directive_tag对象", description="服务指令-指令标签中间表") +public class DirectiveTagRelation implements Serializable { + private static final long serialVersionUID = 1L; + + private String directiveId; + private String tagId; + +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/DirectiveTagRelationMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/DirectiveTagRelationMapper.java new file mode 100644 index 0000000..44eabd5 --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/DirectiveTagRelationMapper.java @@ -0,0 +1,18 @@ +package com.nu.modules.directivetag.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.nu.modules.directivetag.entity.DirectiveTagRelation; + +import java.util.List; + +/** + * @Description: 指令标签 + * @Author: 张明远 + * @Date: 2025-03-17 + * @Version: V1.0 + */ +public interface DirectiveTagRelationMapper extends BaseMapper { + void removeAllRelation(); + + List selectAllRelation(List ids); +} diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/xml/DirectiveTagRelationMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/xml/DirectiveTagRelationMapper.xml new file mode 100644 index 0000000..630ebaf --- /dev/null +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/mapper/xml/DirectiveTagRelationMapper.xml @@ -0,0 +1,16 @@ + + + + + delete from nu_directive_tag + + + diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/IDirectiveTagService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/IDirectiveTagService.java index 3d39dc8..abab7e2 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/IDirectiveTagService.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/IDirectiveTagService.java @@ -2,6 +2,9 @@ package com.nu.modules.directivetag.service; import com.nu.modules.directivetag.entity.DirectiveTag; import com.baomidou.mybatisplus.extension.service.IService; +import com.nu.modules.directivetag.entity.DirectiveTagRelation; + +import java.util.List; /** * @Description: 指令标签 @@ -17,4 +20,10 @@ public interface IDirectiveTagService extends IService { * @return */ boolean isUsed(String id); + + public void removeAllRelation(); + + public List selectAllRelation(String dataSourceCode, List ids); + + void insertAllRelation(List relations); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/impl/DirectiveTagServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/impl/DirectiveTagServiceImpl.java index 75d292c..5418ccf 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/impl/DirectiveTagServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/directivetag/service/impl/DirectiveTagServiceImpl.java @@ -1,16 +1,20 @@ package com.nu.modules.directivetag.service.impl; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import com.nu.modules.directivetag.entity.DirectiveTag; +import com.nu.modules.directivetag.entity.DirectiveTagRelation; import com.nu.modules.directivetag.mapper.DirectiveTagMapper; +import com.nu.modules.directivetag.mapper.DirectiveTagRelationMapper; import com.nu.modules.directivetag.service.IDirectiveTagService; import com.nu.modules.servicedirective.mapper.ConfigServiceDirectiveMapper; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - import java.util.Arrays; +import java.util.List; /** * @Description: 指令标签 @@ -23,6 +27,8 @@ public class DirectiveTagServiceImpl extends ServiceImpl selectAllRelation(String dataSourceCode, List ids) { + return tagRelationMapper.selectAllRelation(ids); + } + + @Override + public void insertAllRelation(List idRelations) { + idRelations.forEach(ir -> { + tagRelationMapper.insert(ir); + }); + } } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/ConfigServiceDirectiveMapper.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/ConfigServiceDirectiveMapper.java index d9131c9..d1a8dfc 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/ConfigServiceDirectiveMapper.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/ConfigServiceDirectiveMapper.java @@ -5,6 +5,7 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.nu.modules.servicedirective.entity.ConfigServiceDirective; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import retrofit2.http.DELETE; /** * @Description: 服务指令 @@ -44,4 +45,7 @@ public interface ConfigServiceDirectiveMapper extends BaseMapper tagIds); + + + int removeAll(); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/xml/ConfigServiceDirectiveMapper.xml b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/xml/ConfigServiceDirectiveMapper.xml index 80d6fe6..4264925 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/xml/ConfigServiceDirectiveMapper.xml +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/mapper/xml/ConfigServiceDirectiveMapper.xml @@ -105,4 +105,8 @@ (#{directive.id}, #{tagId}) + + + delete from nu_config_service_directive + diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java index bf7c54e..209b4fe 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/IConfigServiceDirectiveService.java @@ -31,4 +31,10 @@ public interface IConfigServiceDirectiveService extends IService queryDirectiveIdByTagIds(String tags); + + void removeAll(); + + List selectAllByIds(String dataSourceCode, List idList); + + void insertAllDirectives(List directives); } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java index 44e7e72..a2f10c7 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/modules/servicedirective/service/impl/ConfigServiceDirectiveServiceImpl.java @@ -1,5 +1,9 @@ package com.nu.modules.servicedirective.service.impl; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nu.modules.directivetag.entity.DirectiveTag; @@ -22,8 +26,8 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl pageList(ConfigServiceDirective configServiceDirective,IPage list_) { - if(list_.getRecords() == null || list_.getRecords().isEmpty()){ + public List pageList(ConfigServiceDirective configServiceDirective, IPage list_) { + if (list_.getRecords() == null || list_.getRecords().isEmpty()) { return list_.getRecords(); } List list = baseMapper.pageList(configServiceDirective, list_.getRecords()); @@ -165,6 +169,7 @@ public class ConfigServiceDirectiveServiceImpl extends ServiceImpl queryDirectiveIdByTagIds(String tags) { return baseMapper.queryDirectiveIdByTagIds(tags); } + + @Override + public void removeAll() { + baseMapper.removeAll(); + } + + @Override + @DS("#dataSourceCode") + public List selectAllByIds(String dataSourceCode, List idList) { + QueryWrapper qw = new QueryWrapper<>(); + qw.in("id", idList); + return baseMapper.selectList(qw); + } + + @Override + public void insertAllDirectives(List directives) { + directives.forEach(d -> { + baseMapper.insert(d); + }); + } + } diff --git a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/exceptionhandler/DirectiveMQExceptionHandler.java b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/exceptionhandler/DirectiveMQExceptionHandler.java index 549a827..3b9286e 100644 --- a/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/exceptionhandler/DirectiveMQExceptionHandler.java +++ b/nursing-unit-services/nu-services-biz/src/main/java/com/nu/mq/directive/exceptionhandler/DirectiveMQExceptionHandler.java @@ -16,20 +16,13 @@ public class DirectiveMQExceptionHandler implements RabbitListenerErrorHandler { log.error("MQ消息处理失败 | 消息体: {} | 异常原因: {}", new String(message.getBody()), e.getCause().getMessage()); // 根据异常类型选择处理策略 - if (isRetryable(e)) { - // 可重试异常:抛出异常触发重试 - throw e; - } else { - // 不可恢复异常:拒绝消息且不重新入队 - throw new AmqpRejectAndDontRequeueException("消息处理失败且禁止重试", e); - } +// 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-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 777e4ac..cd0252d 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 @@ -1,33 +1,108 @@ package com.nu.mq.directive.listener; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nu.dto.DirectiveMQDto; import com.nu.dto.StatusMQDto; import com.nu.enums.MQStatus; +import com.nu.modules.directivetag.entity.DirectiveTagRelation; +import com.nu.modules.directivetag.service.IDirectiveTagService; +import com.nu.modules.servicedirective.entity.ConfigServiceDirective; +import com.nu.modules.servicedirective.service.IConfigServiceDirectiveService; import com.nu.utils.RabbitMQUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Arrays; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @Slf4j @Component public class DirectiveMQListener { - + @Autowired + private IConfigServiceDirectiveService directiveService; + @Autowired + private IDirectiveTagService tagService; @Autowired private RabbitMQUtil rabbitMQUtil; - @RabbitListener(queues = "nu001.fwzl.async", errorHandler = "directiveMQErrorHandler") - public void handleMessage(DirectiveMQDto msg) { + /** + * if 未到运营开始时间时 全量变更 + * else 增量 + * 备注:指令相应的字典表有相应的实时更新处理 这里无需处理字典表 但是需要处理中间关系表 + *

+ * 具体逻辑说明 + * 1、未到运营开始时间时:dto.isIzInc()为true时 + * 1)先将指令主表、指令标签关系表数据全部删除 + * 2)将指令标签关系表数据增加进去 + * 3)将指令主表数据增加进去 + *

+ * 2、已到运营开始时间:dto.isIzInc()为false时 + * 1)只传递过来需要增加的指令 + * 2)先将指令标签关系表数据增加进去 + * 3)再将指令主表数据增加 + * + * @param dto + */ + @RabbitListener(queues = "nu002.fwzl.async", errorHandler = "directiveMQErrorHandler") + @DSTransactional(rollbackFor = {Exception.class}) + public void handleMessage(DirectiveMQDto dto) { try { + if (!dto.isIzInc()) { + //全量移除所有服务指令主表、指令标签中间表数据 + directiveService.removeAll(); + tagService.removeAllRelation(); + dto.setIdList(Arrays.asList(dto.getIdStr().split(","))); + } else { + //增量:传过来的是已勾选的全部数据,需将重复部分去除 + //先查出所有指令id 然后进行去重 + QueryWrapper dtw = new QueryWrapper<>(); + dtw.select("id"); + List tempList = directiveService.list(dtw); + Set existingIds = tempList.stream() + .map(ConfigServiceDirective::getId) + .map(String::valueOf) + .collect(Collectors.toSet()); - StatusMQDto statusMQDto = new StatusMQDto(); - statusMQDto.setStatus(MQStatus.SUCCESS.getCode()); - statusMQDto.setMessage("成了!"); - rabbitMQUtil.sendToExchange("hldy.fwzl", "nu001.fwzl.status", statusMQDto); + String idStr = dto.getIdStr(); + List inputIds = Arrays.asList(idStr.split(",")); + + List uniqueIds = inputIds.stream() + .filter(id -> !existingIds.contains(id)) + .collect(Collectors.toList()); + + dto.setIdList(uniqueIds); + } + //查询指令标签关系 并将指令标签关系表数据增加进自己的库表中 + if (dto.getIdList() != null && !dto.getIdList().isEmpty()) { + List relations = tagService.selectAllRelation("nuro", dto.getIdList()); + if (relations != null && !relations.isEmpty()) { + tagService.insertAllRelation(relations); + } + //查询服务指令,并将服务指令新增进自己的数据库表中 + List directives = directiveService.selectAllByIds("nuro", dto.getIdList()); + if (directives != null && !directives.isEmpty()) { + directiveService.insertAllDirectives(directives); + } + } } catch (Exception e) { - System.out.println("异常了:" + e.getMessage()); + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setStatus(MQStatus.PROCESS_FAILED.getCode()); + statusMQDto.setMessage(e.getMessage()); + statusMQDto.setAsyncId(dto.getAsyncId()); + statusMQDto.setCode("data"); + rabbitMQUtil.sendToExchange("hldy.fwzl", "nu002.fwzl.status", statusMQDto); + throw new RuntimeException(e); } + StatusMQDto statusMQDto = new StatusMQDto(); + statusMQDto.setStatus(MQStatus.SUCCESS.getCode()); + statusMQDto.setMessage("数据同步成功!"); + statusMQDto.setAsyncId(dto.getAsyncId()); + statusMQDto.setCode("data"); + rabbitMQUtil.sendToExchange("hldy.fwzl", "nu002.fwzl.status", statusMQDto); } } diff --git a/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml b/nursing-unit-system/nu-system-start/src/main/resources/application-dev-nu002.yml similarity index 96% rename from nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml rename to nursing-unit-system/nu-system-start/src/main/resources/application-dev-nu002.yml index f67a39c..fc59dde 100644 --- a/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml +++ b/nursing-unit-system/nu-system-start/src/main/resources/application-dev-nu002.yml @@ -1,5 +1,5 @@ server: - port: 8081 + port: 8082 tomcat: max-swallow-size: -1 error: @@ -7,7 +7,7 @@ server: include-stacktrace: ALWAYS include-message: ALWAYS servlet: - context-path: /nursing-unit_001 + context-path: /nursing-unit_002 compression: enabled: true min-response-size: 1024 @@ -21,7 +21,7 @@ management: spring: application: - name: nursing-unit-001 + name: nursing-unit-002 # flyway配置 flyway: # 是否启用flyway @@ -166,9 +166,9 @@ spring: slow-sql-millis: 5000 datasource: master: - url: jdbc:mysql://192.168.2.199:3306/nursing_unit_001?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai - username: nu001 - password: nu001 + url: jdbc:mysql://192.168.2.199:3306/nursing_unit_002?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + username: nu002 + password: nu002 driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置-运维系统 multi-datasource1: @@ -176,6 +176,12 @@ spring: username: nu_sys password: nu_sys driver-class-name: com.mysql.cj.jdbc.Driver + # 多数据源配置-运维系统 + nuro: + url: jdbc:mysql://192.168.2.199:3306/nursing_unit_001?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + username: nu_ro + password: nu_ro + driver-class-name: com.mysql.cj.jdbc.Driver #redis 配置 redis: database: 0 @@ -189,7 +195,6 @@ spring: username: hldy password: hldy virtual-host: /hldy - #mybatis plus 设置 mybatis-plus: mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml,classpath*:com/nu/**/xml/*Mapper.xml