新增:利元亨现场增加外部数据获取公共模块

This commit is contained in:
yangyang01000846
2025-12-19 13:53:48 +08:00
parent 0f3cfc380d
commit 51472b2e29
21 changed files with 382 additions and 14 deletions

142
outbridge/pom.xml Normal file
View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.sdm</groupId>
<artifactId>SDM</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>outbridge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>outbridge</name>
<description>outbridge</description>
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>3.3.5</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>4.1.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>4.1.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- FTP -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.11.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>
<!--aop-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>
<!-- Spring Boot 3.x 适配Jakarta EE Servlet API仅编译期依赖 -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version> <!-- 与 Spring Boot 3.x 兼容,对应 Servlet 5.0 规范 -->
<scope>provided</scope> <!-- 关键:运行时由 web 模块的容器(如 Tomcat提供实现 -->
</dependency>
<!-- 引入模块common -->
<dependency>
<groupId>com.sdm</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!-- <plugin>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-maven-plugin</artifactId>-->
<!-- &lt;!&ndash;命名可执行jar名字默认可执行Jar包与普通jar命名相同前者会将后者覆盖可执行Jar不能够被其他模块引用&ndash;&gt;-->
<!-- <configuration>-->
<!-- <classifier>exec</classifier>-->
<!-- </configuration>-->
<!-- </plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-maven-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <excludes>-->
<!-- <exclude>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok</artifactId>-->
<!-- </exclude>-->
<!-- </excludes>-->
<!-- <includeSystemScope>true</includeSystemScope>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
</project>

View File

@@ -1,5 +1,4 @@
// common模块com.xxx.common.config.CommonConfig
package com.sdm.common.config;
package com.sdm.outbridge.config; //// common模块com.xxx.common.config.CommonConfig
import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.context.annotation.Configuration;

View File

@@ -0,0 +1,79 @@
package com.sdm.outbridge.config;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
import java.io.IOException;
/**
* 第二个数据源的MyBatis-Plus配置
* 扫描专属的Mapper包使用独立的数据源
*/
@Configuration
// 扫描第二个数据源的Mapper包指定专属的sqlSessionFactory
@MapperScan(
basePackages = "com.sdm.outbridge.dao",
sqlSessionFactoryRef = "secondSqlSessionFactory"
)
public class SecondMybatisPlusConfig {
/**
* 初始化第二个数据源
*/
@Bean(name = "secondDataSource")
@ConfigurationProperties(prefix = "spring.datasource.second") // 对应yml中的second数据源配置
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
/**
* 第二个数据源的事务管理器
* 非Primary因为原有动态数据源已标记为Primary
*/
@Bean(name = "secondTransactionManager")
public DataSourceTransactionManager secondTransactionManager(
@Qualifier("secondDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
/**
* 第二个数据源的SqlSessionFactory
*/
@Bean(name = "secondSqlSessionFactory")
public MybatisSqlSessionFactoryBean secondSqlSessionFactory(
@Qualifier("secondDataSource") DataSource dataSource) throws IOException {
MybatisSqlSessionFactoryBean fb = new MybatisSqlSessionFactoryBean();
// 设置第二个数据源的Mapper.xml路径建议独立存放避免冲突
fb.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath*:mapper/second/*.xml"));
// 绑定第二个数据源
fb.setDataSource(dataSource);
// 开启下划线转驼峰(和原有配置保持一致)
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setMapUnderscoreToCamelCase(true);
fb.setConfiguration(configuration);
// 如需分页插件,可在此添加(和原有配置一致)
// fb.setPlugins(new MybatisPlusInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)));
return fb;
}
/**
* 第二个数据源的SqlSessionTemplate可选MyBatis-Plus可自动适配建议添加
*/
@Bean(name = "secondSqlSessionTemplate")
public SqlSessionTemplate secondSqlSessionTemplate(
@Qualifier("secondSqlSessionFactory") MybatisSqlSessionFactoryBean sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory.getObject());
}
}

View File

@@ -0,0 +1,13 @@
package com.sdm.outbridge.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sdm.outbridge.entity.ViewLyricconfig;
/**
*
* @author author
* @since 2025-11-05
*/
public interface ViewLyricConfigMapper extends BaseMapper<ViewLyricconfig> {
}

View File

@@ -0,0 +1,50 @@
package com.sdm.outbridge.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 测试查询视图
* </p>
*
* @author author
* @since 2025-12-01
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("view_lyricconfig")
@Schema(description = "测试查询视图")
public class ViewLyricconfig implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "自增主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "占位符英文名称")
@TableField("keyEnName")
private String keyEnName;
@Schema(description = "占位符中文名称")
@TableField("keyCnName")
private String keyCnName;
@Schema(description = "创建时间")
@TableField(value = "createTime", fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonIgnore
private LocalDateTime createTime;
}

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
public class HkCloudSignObject {

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
public class LyricAttachmentInfo {

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
public class LyricProjectBaseInfo {
public String project_num;

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,6 +1,5 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.mode;
import io.netty.channel.ChannelHandler;
import io.swagger.v3.oas.annotations.media.Schema;
public class LyricTodoEntity {

View File

@@ -0,0 +1,11 @@
package com.sdm.outbridge.service.impl.lyric;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sdm.outbridge.dao.ViewLyricConfigMapper;
import com.sdm.outbridge.entity.ViewLyricconfig;
import com.sdm.outbridge.service.lyric.IViewLyricConfigService;
import org.springframework.stereotype.Service;
@Service
public class ViewLyricConfigServiceImpl extends ServiceImpl<ViewLyricConfigMapper, ViewLyricconfig> implements IViewLyricConfigService {
}

View File

@@ -0,0 +1,8 @@
package com.sdm.outbridge.service.lyric;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sdm.outbridge.entity.ViewLyricconfig;
/* 这个接口只是测试的 */
public interface IViewLyricConfigService extends IService<ViewLyricconfig> {
}

View File

@@ -1,12 +1,12 @@
package com.sdm.common.service.lyric;
package com.sdm.outbridge.service.lyric;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.JSONWriter;
import com.fasterxml.jackson.databind.ser.SerializerFactory;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.utils.HttpUtil;
import com.sdm.outbridge.mode.HkUploadFileReq;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;

View File

@@ -1,3 +1,13 @@
spring:
application:
name: pbs
datasource:
second:
username: root
password: mysql
jdbc-url: jdbc:mysql://192.168.65.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
# 测试开发环境
#appKey : 380ad3deb578424c9ca5178383f732c1
#appSecret : 805c316f35024b8b9566ca67b4991c42

View File

@@ -30,6 +30,19 @@
</exclusion>
</exclusions>
</dependency>
<!--外部系统交互-->
<dependency>
<groupId>com.sdm</groupId>
<artifactId>outbridge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>

View File

@@ -6,7 +6,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = {"com.sdm.pbs","com.sdm.common"})
@SpringBootApplication(scanBasePackages = {"com.sdm.pbs","com.sdm.common","com.sdm.outbridge"})
@EnableDiscoveryClient
@EnableScheduling
@EnableFeignClients(basePackages = "com.sdm.common.feign")

View File

@@ -0,0 +1,43 @@
package com.sdm.pbs.controller;
import com.alibaba.fastjson2.JSONObject;
import com.sdm.common.common.SdmResponse;
import com.sdm.outbridge.entity.ViewLyricconfig;
import com.sdm.outbridge.service.lyric.IViewLyricConfigService;
import com.sdm.pbs.model.entity.SimulationCommandPlaceholder;
import com.sdm.pbs.service.ISimulationCommandPlaceholderService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/sec")
@Tag(name = "测试外部模块系统交互", description = "测试外部模块系统交互")
public class TestSecondDbController {
@Autowired
private ISimulationCommandPlaceholderService simulationCommandPlaceholderService;
@Autowired
private IViewLyricConfigService viewLyricConfigService;
@GetMapping("/testSec")
@Operation(summary = "测试多数据源")
public SdmResponse<String> testSec() {
// 查询主数据源
List<SimulationCommandPlaceholder> placeholders = simulationCommandPlaceholderService.lambdaQuery().list();
// 查询从数据源
List<ViewLyricconfig> seconds = viewLyricConfigService.lambdaQuery().list();
System.out.println(JSONObject.toJSONString(placeholders));
System.out.println(JSONObject.toJSONString(seconds));
return SdmResponse.success(JSONObject.toJSONString(seconds));
}
}

View File

@@ -21,6 +21,7 @@
<module>system</module>
<module>common</module>
<module>flowable</module>
<module>outbridge</module>
</modules>
<!--引入Spring Boot项目子项目都是这个版本-->