Added NBCH datasource for SOURCE table (bus_category searching)

This commit is contained in:
Mikhail Trofimov 2026-06-15 13:04:14 +03:00
parent c3abd1ef6c
commit f734f9147b
7 changed files with 140 additions and 0 deletions

View file

@ -48,6 +48,20 @@ ct.scoring-data-source-settings.max-lifetime=${MAX_LIFETIME_SCORING:1800000}
ct.scoring-data-source-settings.keepalive-time=${KEEPALIVE_TIME_SCORING:0} ct.scoring-data-source-settings.keepalive-time=${KEEPALIVE_TIME_SCORING:0}
ct.scoring-data-source-settings.leak-detection-threshold=${LEAK_DETECTION_THRESHOLD_SCORING:0} ct.scoring-data-source-settings.leak-detection-threshold=${LEAK_DETECTION_THRESHOLD_SCORING:0}
# nbch
ct.nbch-data-source-settings.driver=com.ibm.db2.jcc.DB2Driver
ct.nbch-data-source-settings.url=${DB_URL_NBCH:jdbc:db2://10.230.227.102:2668/cprosd22:currentSchema=NBCH;}
ct.nbch-data-source-settings.username=${USERNAME_NBCH:ros9appl}
ct.nbch-data-source-settings.password=${PASSWORD_NBCH:R0s9Appl}
ct.nbch-data-source-settings.maximum-pool-size=${MAXIMUM_POOL_SIZE_NBCH:30}
ct.nbch-data-source-settings.minimum-idle=${MINIMUM_IDLE_NBCH:10}
ct.nbch-data-source-settings.connection-timeout=${CONNECTION_TIMEOUT_NBCH:10000}
ct.nbch-data-source-settings.validation-timeout=${VALIDATION_TIMEOUT_NBCH:5000}
ct.nbch-data-source-settings.idle-timeout=${IDLE_TIMEOUT_NBCH:600000}
ct.nbch-data-source-settings.max-lifetime=${MAX_LIFETIME_NBCH:1800000}
ct.nbch-data-source-settings.keepalive-time=${KEEPALIVE_TIME_NBCH:0}
ct.nbch-data-source-settings.leak-detection-threshold=${LEAK_DETECTION_THRESHOLD_NBCH:0}
ct.max_xml_file_size=${ACCEPTED_XML_SIZE:1024} ct.max_xml_file_size=${ACCEPTED_XML_SIZE:1024}
spring.servlet.multipart.max-file-size=${ACCEPTED_ARCHIVE_SIZE:2048MB} spring.servlet.multipart.max-file-size=${ACCEPTED_ARCHIVE_SIZE:2048MB}
spring.servlet.multipart.max-request-size=${ACCEPTED_ARCHIVE_SIZE:2048MB} spring.servlet.multipart.max-request-size=${ACCEPTED_ARCHIVE_SIZE:2048MB}

View file

@ -62,6 +62,19 @@ MAX_LIFETIME_SCORING=1800000
KEEPALIVE_TIME_SCORING=0 KEEPALIVE_TIME_SCORING=0
LEAK_DETECTION_THRESHOLD_SCORING=0 LEAK_DETECTION_THRESHOLD_SCORING=0
# nbch
DB_URL_NBCH=jdbc:db2://10.230.227.102:2668/cprosd22:currentSchema=NBCH;
USERNAME_NBCH=ros9appl
PASSWORD_NBCH=R0s9Appl
MAXIMUM_POOL_SIZE_NBCH=30
MINIMUM_IDLE_NBCH=10
CONNECTION_TIMEOUT_NBCH=10000
VALIDATION_TIMEOUT_NBCH=5000
IDLE_TIMEOUT_NBCH=600000
MAX_LIFETIME_NBCH=1800000
KEEPALIVE_TIME_NBCH=0
LEAK_DETECTION_THRESHOLD_NBCH=0
# размер в mb # размер в mb
ACCEPTED_XML_SIZE=1024 ACCEPTED_XML_SIZE=1024
ACCEPTED_ARCHIVE_SIZE=2048MB ACCEPTED_ARCHIVE_SIZE=2048MB

View file

@ -58,6 +58,17 @@ services:
- MAX_LIFETIME_SCORING=${MAX_LIFETIME_SCORING} - MAX_LIFETIME_SCORING=${MAX_LIFETIME_SCORING}
- KEEPALIVE_TIME_SCORING=${KEEPALIVE_TIME_SCORING} - KEEPALIVE_TIME_SCORING=${KEEPALIVE_TIME_SCORING}
- LEAK_DETECTION_THRESHOLD_SCORING=${LEAK_DETECTION_THRESHOLD_SCORING} - LEAK_DETECTION_THRESHOLD_SCORING=${LEAK_DETECTION_THRESHOLD_SCORING}
- DB_URL_NBCH=${DB_URL_NBCH}
- USERNAME_NBCH=${USERNAME_NBCH}
- PASSWORD_NBCH=${PASSWORD_NBCH}
- MAXIMUM_POOL_SIZE_NBCH=${MAXIMUM_POOL_SIZE_NBCH}
- MINIMUM_IDLE_NBCH=${MINIMUM_IDLE_NBCH}
- CONNECTION_TIMEOUT_NBCH=${CONNECTION_TIMEOUT_NBCH}
- VALIDATION_TIMEOUT_NBCH=${VALIDATION_TIMEOUT_NBCH}
- IDLE_TIMEOUT_NBCH=${IDLE_TIMEOUT_NBCH}
- MAX_LIFETIME_NBCH=${MAX_LIFETIME_NBCH}
- KEEPALIVE_TIME_NBCH=${KEEPALIVE_TIME_NBCH}
- LEAK_DETECTION_THRESHOLD_NBCH=${LEAK_DETECTION_THRESHOLD_NBCH}
- ACCEPTED_XML_SIZE=${ACCEPTED_XML_SIZE} - ACCEPTED_XML_SIZE=${ACCEPTED_XML_SIZE}
- ACCEPTED_ARCHIVE_SIZE=${ACCEPTED_ARCHIVE_SIZE} - ACCEPTED_ARCHIVE_SIZE=${ACCEPTED_ARCHIVE_SIZE}
- SIGNALS_ROOT_URI=${SIGNALS_ROOT_URI} - SIGNALS_ROOT_URI=${SIGNALS_ROOT_URI}
@ -142,6 +153,17 @@ services:
- MAX_LIFETIME_SCORING=${MAX_LIFETIME_SCORING} - MAX_LIFETIME_SCORING=${MAX_LIFETIME_SCORING}
- KEEPALIVE_TIME_SCORING=${KEEPALIVE_TIME_SCORING} - KEEPALIVE_TIME_SCORING=${KEEPALIVE_TIME_SCORING}
- LEAK_DETECTION_THRESHOLD_SCORING=${LEAK_DETECTION_THRESHOLD_SCORING} - LEAK_DETECTION_THRESHOLD_SCORING=${LEAK_DETECTION_THRESHOLD_SCORING}
- DB_URL_NBCH=${DB_URL_NBCH}
- USERNAME_NBCH=${USERNAME_NBCH}
- PASSWORD_NBCH=${PASSWORD_NBCH}
- MAXIMUM_POOL_SIZE_NBCH=${MAXIMUM_POOL_SIZE_NBCH}
- MINIMUM_IDLE_NBCH=${MINIMUM_IDLE_NBCH}
- CONNECTION_TIMEOUT_NBCH=${CONNECTION_TIMEOUT_NBCH}
- VALIDATION_TIMEOUT_NBCH=${VALIDATION_TIMEOUT_NBCH}
- IDLE_TIMEOUT_NBCH=${IDLE_TIMEOUT_NBCH}
- MAX_LIFETIME_NBCH=${MAX_LIFETIME_NBCH}
- KEEPALIVE_TIME_NBCH=${KEEPALIVE_TIME_NBCH}
- LEAK_DETECTION_THRESHOLD_NBCH=${LEAK_DETECTION_THRESHOLD_NBCH}
- SIGNALS_ROOT_URI=${SIGNALS_ROOT_URI} - SIGNALS_ROOT_URI=${SIGNALS_ROOT_URI}
- SIGNALS_TOKEN=${SIGNALS_TOKEN} - SIGNALS_TOKEN=${SIGNALS_TOKEN}
- SIGNALS_USER=${SIGNALS_USER} - SIGNALS_USER=${SIGNALS_USER}

View file

@ -0,0 +1,61 @@
package ru.nbch.credit_tracker.config.datasource;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.config.settings.DataSourceSettings;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@Slf4j
@Configuration
@MapperScan(
basePackages = "ru.nbch.credit_tracker.mapper.nbch",
sqlSessionFactoryRef = "sqlSessionNbch"
)
public class NbchDataSourceConfig extends DatabaseConfig {
@Value("classpath:mybatis/mapper/nbch/*.xml")
private Resource[] resources;
@Bean(name = "nbchDataSource")
public DataSource dataSource(CreditTrackerSettings config) throws SQLException {
DataSourceSettings signalSetings = config.getNbchDataSourceSettings();
HikariDataSource dataSource = createDataSource(signalSetings);
dataSource.setMaximumPoolSize(signalSetings.maximumPoolSize());
dataSource.setMinimumIdle(signalSetings.minimumIdle());
dataSource.setConnectionTimeout(signalSetings.connectionTimeout());
dataSource.setValidationTimeout(signalSetings.validationTimeout());
dataSource.setIdleTimeout(signalSetings.idleTimeout());
dataSource.setMaxLifetime(signalSetings.maxLifetime());
dataSource.setKeepaliveTime(signalSetings.keepaliveTime());
dataSource.setLeakDetectionThreshold(signalSetings.leakDetectionThreshold());
try (Connection connection = dataSource.getConnection()) {
connection.isValid(3);
} catch (SQLException e) {
log.error("Unable to connect to NBCH url={}", signalSetings.url(), e);
throw e;
}
log.info("Connected to NBCH: url={}", signalSetings.url());
return dataSource;
}
@Bean(name = "sqlSessionNbch")
public SqlSessionFactory sqlSessionFactory(@Qualifier("nbchDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(resources);
return sqlSessionFactoryBean.getObject();
}
}

View file

@ -20,6 +20,8 @@ public class CreditTrackerSettings {
@NestedConfigurationProperty @NestedConfigurationProperty
private DataSourceSettings scoringDataSourceSettings; private DataSourceSettings scoringDataSourceSettings;
@NestedConfigurationProperty @NestedConfigurationProperty
private DataSourceSettings nbchDataSourceSettings;
@NestedConfigurationProperty
private XsdValidation xsdValidation; private XsdValidation xsdValidation;
@NestedConfigurationProperty @NestedConfigurationProperty
private PipelineSettings pipeline; private PipelineSettings pipeline;

View file

@ -0,0 +1,12 @@
package ru.nbch.credit_tracker.mapper.nbch;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SourceMapper {
List<String> findBusCategories(@Param("memberCodes") List<String> memberCodes);
}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ru.nbch.credit_tracker.mapper.nbch.SourceMapper">
<select id="findBusCategories" resultType="java.lang.String">
SELECT CATEGORY
FROM SOURCE
WHERE MEMBER_CODE IN
<foreach item='memberCode' collection='memberCodes' open='(' separator=',' close=')'>
#{memberCode}
</foreach>
</select>
</mapper>