Skip to content

BGLP 总账平台

一、系统概述

1.1 基本信息

属性
Artifactcn.webank.cnc.cluster.glp:glp-cluster-parent
系统名称glp-cluster-parent - 总账平台 (General Ledger Platform)
Java版本Java 8 (source/target 1.8)
父POMcn.webank.cnc.sdk:zcnc-sdk-starter-parent:3.35.0-SNAPSHOT
构建工具Maven多模块项目
源码规模约1,029个Java文件
数据库TiDB (MySQL协议兼容),测试用H2
SCMGit (git@10.6.222.54:cnc/glp.git)

1.2 技术栈

  • 框架: Spring Boot + Spring Batch (批处理框架)
  • ORM: MyBatis / JPA (MyBatis-Plus 3.1.0)
  • 参数管理: zcnc-sdk 统一参数平台 (UnifiedParameterFacility)
  • 银团参数: zbmp-service-sdk (BMP银团管理平台)
  • 表达式引擎: MVEL 2.4.13 (规则/科目映射)
  • 分布式: 多IDC/DCN部署架构,支持Region热点打散
  • 序列号: TiDB自增主键 + 手动序列号双模式
  • 测试: JUnit 4.13 + DBUnit + H2 + simpletester
  • 代码覆盖: JaCoCo 0.8.8
  • 代码质量: SonarQube + Maven Enforcer (循环依赖检测、包层次校验、依赖收敛)

1.3 系统定位

BGLP (Bank General Ledger Platform) 是微众银行核心会计核算系统的总账子平台,负责:

  1. 会计分录生成 - 根据交易流水和套型参数自动生成借贷分录
  2. 科目映射 - 多层次科目替换链,支持产品、银团、资产证券化等维度的科目映射
  3. 增值税价税分离 - 收入科目自动拆分税额
  4. 总账余额管理 - 维护科目级别的日/月/季/年多维度余额
  5. 银团分账 - 银团贷款按银行份额拆分流水和余额
  6. 资产证券化处理 - ABS出表、回购、清仓回购等全生命周期核算
  7. 日终批处理 - 50+步骤的完整日终总账处理流程
  8. 年终结转 - 总账余额年终结转到TM_GL_BAL_YEAR
  9. 对账与平衡检查 - GLP与CPS总分对账、调账平衡校验

二、模块结构

项目包含8个正式Maven模块 + 1个数据库升级模块(glp-core-upgrade):

glp-cluster-parent (pom)
├── glp-core-param-def          # 参数定义层
├── glp-core-infrastructure     # 基础设施层(DAO/DTO,空模块,代码已迁移)
├── glp-core-param-generator    # 参数生成器(测试工具)
├── glp-core-facility           # 基础工具设施层
├── glp-core-batch              # 核心批处理引擎
├── glp-cluster-batch-adm       # 集群批处理调度(ADM部署包)
├── glp-cluster-service-adm     # 集群联机服务(ADM部署包)
├── glp-cluster-test            # 集群测试模块
└── glp-core-upgrade            # 数据库升级脚本(非Maven模块)

2.1 glp-core-param-def(参数定义层)

职责: 定义所有业务参数的数据结构(POJO),不包含业务逻辑。

关键参数类:

类名说明Key结构
TxnGlt交易套型(交易码→科目映射模板)txnCd + currCd + ageGroup + bnpGroup
Subject会计科目定义subject
TxnCd交易代码定义txnCd
BnpGroup / BnpGroupMapping余额成分组及映射planNbr + bucketType
AgeGroup / AgeGroupMapping账龄组及映射ageCd
ProductCredit产品参数(含税率、递延息标志等)productCd
ProductSubjectMap产品科目映射表productCd
SubjectMapping科目通用映射subject
BankGroupSubjectMapping银团科目映射subject + dbCrInd
CommonSubjectMap通用科目映射(如OCI)mappingFactor
DeferredIncomeMapping递延收入科目映射subject
ForceAcSubjectMapping强制AC科目映射org
ReserveTaxSplitMapping预缴税科目拆分映射subject + dbCrInd + redBlueInd
DeferredIncomeVatSplitMapping递延息已缴税拆分映射subject
SystemConfig系统配置参数org
BgTxnGroup银团交易分组参数org
Branch / CurrencyCd机构/币种branch / currCd
PlanSubjectMapping计划科目映射productCd + planNbr + bnpGroup
VatParam / VatFreeConfig增值税参数/免税配置productCd
AssetDisposalConfig资产处置配置-

枚举类 (package: param.def.enums):

  • DbCrInd - 借贷标志 (D/C)
  • RedBlueInd - 红蓝字标志 (R/B)
  • PostGlIndicator - 总账入账标识 (N/S/W/M)
  • SubjectType - 科目类型 (A资产/B负债/C损益/D共同/E表外)
  • BalDbCrFlag / AmtDbCrFlag - 余额/发生额借贷方向
  • Indicator - 通用Y/N标志
  • BucketType - 余额成分 (Interest/Penalty/Principal等)
  • LoanProcessFlag - 贷款处理标志 (WTO_P/W/ABSD等)
  • AssetPoolType - 资产池类型 (OCI/AC等)
  • LoanTermType - 贷款期限类型 (S/M/L)
  • BgFlag / BgTxnGroupType - 银团相关标志

2.2 glp-core-infrastructure(基础设施层)

职责: 原本承载DAO和DTO,当前已迁移到glp-core-batch,此模块保留以维持依赖兼容。

DTO和DAO类主要包含:

  • TM_前缀: 主表数据对象 (TmGlBal, TmLoanGlp, TmLoanBg, TmLoanVms, TmLoanAbs, TmScheduleBg, TmBankGroup, TmBankGroupMember, TmGlBalYear等)
  • TT_前缀: 临时/流水表数据对象 (TtTxnGl, TtGlSuccess, TtTxnGlBg, TtTxnGlAbs, TtGroupGlSuccess, TtGlBalYearAdm, TtAccountingAdj等)
  • DAO接口: 基于MyBatis Generator生成,提供CRUD操作

2.3 glp-core-param-generator(参数生成器)

职责: 测试辅助工具,从Excel读取参数数据并生成SQL或参数文件。

关键类 (package: test.param):

  • GenerateSubject - 生成科目参数
  • GenerateGlt / GenerateTxnCode / GenerateTxnGroup - 生成套型/交易码/交易分组
  • GenerateProduct / GenerateProductSubject - 生成产品参数和产品科目映射
  • GenerateSubjectMapping / GenerateBankGroupSubjectMapping - 生成科目映射
  • GenerateVatFreeConfig / GenerateTaxSupplyConfig - 生成税务配置
  • GenerateOrgGlp / GenerateOrgBmp - 生成机构参数
  • ExcelParser - Excel解析器
  • PrmCompare - 参数比较工具

2.4 glp-core-facility(基础工具设施层)

职责: 提供跨步骤共享的工具类、缓存、Reader/Writer基础设施。

核心组件:

类/包说明
ParamFacility参数查询工具(按Key查参数值)
ParamCache参数缓存管理
ParamSubjectMappingCache科目映射缓存
SubjectMappingFacility通用科目映射规则执行引擎
ParaAssetDisposalFacility资产处置参数缓存和查询
ParaSubjectReconFacility科目对账参数
DataMigrationInfoFacility数据迁移信息管理
GlpCoreSeqNo / SeqNoForTidb序列号生成(TiDB适配)
MvelMethodsMVEL表达式工具方法
FileItemInfoContextHolder文件项上下文持有
ParameterFactoryBean参数工厂Bean
region/*TiDB Region热点打散工具集
reader/*分页Key读取器(TiDB/通用/数据迁移)
writer/DbFileParallelMultiWriter并行多写Writer
processor/PDataMigration数据迁移处理器
bean/*数据迁移信息Key、DCN行项目等
dao/TmDataMigrationInfoDefDao数据迁移信息DAO

2.5 glp-core-batch(核心批处理引擎)

职责: 系统核心模块,包含所有批处理步骤、会计引擎、科目映射、银团处理、年终处理等。

这是最大的模块,详细内容将在后续章节展开。

2.6 glp-cluster-batch-adm(集群批处理ADM部署包)

职责: 集群批处理的ADM部署入口,整合Spring Batch Job定义、Step编排、Spring上下文配置。

核心资源文件:

文件说明
jobs.xml主日终批处理Job定义(50+步骤)
jobsAdm.xmlADM模式Job定义
jobsDcn.xmlDCN模式Job定义
jobs-year.xml年终结转Job定义
jobs-yearAdm.xmlADM年终Job
jobs-yearDcn.xmlDCN年终Job
jobs-glp-compare.xml对账Job
jobs-glp-data-bak.xml数据备份Job
jobs-glp-clean.xml数据清理Job
jobs-glp-test.xml测试Job
batch-context.xmlBatch上下文配置
facility-context.xmlFacility Bean装配
rpc-context.xmlRPC服务配置
service-context.xml服务层配置
step-beans.xmlStep Bean定义
steps/*.xml各步骤详细配置

部署模式:

  • ADM模式: 集中式部署,包含所有步骤
  • DCN模式: 分布式部署,按DCN分区执行,需要文件同步和等待机制

2.7 glp-cluster-service-adm(集群联机服务)

职责: 提供联机查询和管理接口,主要面向BMP参数管理场景。

主要功能:

  • 银行/银团参数维护 (AddBankSceneImpl, AddBankGroupSceneImpl)
  • 资产处置参数管理 (RTmParaAssetDisposal)
  • 资产所属机构映射 (RTmParaAssetOwnerMap)
  • 保险项目管理 (MaintInsuProjectSceneImpl)
  • 银行映射查询 (BankMapQueryService)

2.8 glp-cluster-test(集群测试模块)

职责: 独立测试应用,提供HTTP接口触发完整总账处理流程。

关键类:

  • GlpCoreAutoTestApplication - 测试应用启动类
  • FullGlpProcessorController - 完整GL处理HTTP接口
  • TestConnection - 连接测试
  • AcctNoHolder - 账号持有器
  • SeqNoMock - 序列号Mock
  • SystemStatusFacilityImpl - 系统状态实现

2.9 glp-core-upgrade(数据库升级脚本)

职责: 维护版本升级的DDL/DML脚本。

包含按版本组织的数据库变更脚本,如:

  • 3.20.0/ - 版本升级脚本
  • 22.08.29/ - 历史升级脚本
  • db/base/ - 基础建表脚本

三、包架构

3.1 顶层包结构

cn.webank.cnc.glp.core
├── param.def              # 参数定义(POJO + 枚举)
│   └── enums              # 枚举定义
│       └── asset          # 资产相关枚举
├── infrastructure         # 基础设施(DAO + DTO,已迁移)
│   ├── dao                # MyBatis DAO接口
│   └── dto                # 数据传输对象
├── facility               # 基础工具设施
│   ├── region             # TiDB Region打散
│   ├── reader             # 分页读取器
│   └── writer             # 并行写入器
├── batch                  # 批处理步骤
│   ├── s0000-s7000        # 日终批处理步骤包
│   ├── year               # 年终结转步骤
│   ├── checksum           # 数据校验
│   ├── common             # 批处理公共工具
│   └── listener           # 批处理监听器
├── facility (core-batch内) # 核心业务设施
│   ├── accting            # 会计引擎
│   ├── subject            # 科目映射
│   ├── bg                 # 银团处理
│   ├── abs                # 资产证券化
│   ├── vms                # 增值税管理
│   ├── year               # 年终结转
│   └── cleanMemo          # 清理备注
└── service                # 联机服务(cluster-service-adm内)
    └── bmp                # BMP参数管理服务

3.2 核心包依赖关系

glp-core-param-def (无依赖)

glp-core-infrastructure (依赖 param-def)

glp-core-facility (依赖 param-def, infrastructure)

glp-core-batch (依赖 param-def, infrastructure, facility, bmp-sdk)

glp-cluster-batch-adm / glp-cluster-service-adm (依赖 core-batch)

glp-cluster-test (依赖 cluster-batch-adm)

四、核心类详解

4.1 AcctingHelper(会计引擎入口)

位置: glp-core-batch/.../facility/accting/AcctingHelper.java

职责: 会计分录生成的核心协调器,接收交易流水列表,协调分录生成全过程。

核心流程:

accting(List<TtTxnGl>) → IAcctEntry
  1. cleanMemoFacility.cleanMemo()     # 清理备注交易
  2. 对每条流水调用 acctEntry()         # 逐笔处理
    2.1 校验 owningBranch / dbCrInd / ageGroup
    2.2 getTransferTxnGlt()             # 获取套型(零元回购时替换Y账龄组)
    2.3 factory.getTxnGlt()             # 科目映射替换
    2.4 判断银团/自营
      - 自营/单银行银团 → acctEntryHandler.genAcctEntries()
      - 多银行银团 → factory.getBankGroupTxnGlAndTxnGlt() → 逐银行 genAcctEntries()
    2.5 psr.replaceWebankOciSubject()   # OCI科目替换

依赖组件:

  • GltMappingFactory - 科目映射工厂
  • AcctEntryHandler - 分录生成处理器
  • CommonSubjectReplace - 通用科目替换
  • BgMemberCache - 银团成员缓存
  • CleanMemoFacility - 备注清理
  • AssetDisposalDetailFacility - 资产处置明细

4.2 VatHelper(增值税价税分离)

位置: glp-core-batch/.../facility/accting/VatHelper.java

职责: 执行价税分离计算,支持普通收入和预缴税(代垫税)两种模式。

核心方法:

方法说明
splitIncome(productCd, postAmt)标准价税分离(收入/(1+税率))
splitIncome(productCd, postAmt, specificTaxAmt)指定税额拆分
splitIncome4ReservedTax(...)代垫税拆分(含兜底逻辑,保证余额非负)
createVatAcctEntry(...)生成增值税分录

价税分离公式: incomeAmt = postAmt / (1 + taxRate), vatAmt = postAmt - incomeAmt

代垫税兜底规则:

  1. 代垫税余额 >= 0
  2. 代垫税息余额 = 0 时,代垫税余额也为 0
  3. 代垫税息余额 >= 代垫税余额

4.3 AcctEntryHandler(分录生成处理器)

位置: glp-core-batch/.../facility/accting/AcctEntryHandler.java

职责: 根据交易类型和套型参数生成具体会计分录。

分录生成逻辑 (根据 PostGlIndicator):

标识类型生成的分录
N/M正常入账ntDb借 + ntCr贷 + ntDbOs借(表外) + ntCrOs贷(表外) + ntCarryover借贷(结转)
S挂账交易stDb借 + stCr贷
W核销交易woDb借 + woCr贷 + nt系列分录(正常入账)

增值税拆分逻辑:

  • 仅对损益类科目 (SubjectType.C) 且 needVatSplit != N 的科目执行价税分离
  • 仅对Webank或BXJG的银行号执行
  • 拆分后: queue=11/21 (收入), queue=12/22 (增值税, 使用VAT_CNC_SUBJECT)
  • 递延息已缴税产品(isPreTax4Defer=Y): 延后统一拆分

虚拟科目处理: 通过 SubjectInterceptor 链判断虚拟科目是否可处理或忽略,无法处理则抛出异常断批。

4.4 GltMappingFactory(套型科目映射工厂)

位置: glp-core-batch/.../facility/subject/GltMappingFactory.java

职责: 核心科目映射协调器,执行完整的科目替换链。

科目替换链 (replaceSubject方法):

原始科目 (来自TxnGlt套型)
  → SubjectMapper[].mapping()           # 循环执行所有SubjectMapper
      ├── AbsdMapper                    # 资产证券化科目映射
      └── LoanTermMapper                # 贷款期限科目映射 (S<=5期/M 6-12期/L>12期)
  → subjectMappingFacility.ruleExecute() # 通用科目映射规则引擎
  → ProductSubjectReplace.replace()     # 产品级科目替换
  → DeferredIncomeReplace.replace()     # 递延收入科目替换 (isDeferredIncome=Y)
  → ForceAcSubjectReplace.replace()     # 强制AC科目替换 (forceAc=Y)
  → PlanSubjectReplace.replace()        # 计划级科目替换

银团处理 (getBankGroupTxnGlAndTxnGlt):

  • 根据BankGroupSubjectMapping获取合作银行→我行的科目映射
  • 生成两套流水: 一套合作银行科目 + 一套我行科目
  • 助贷产品(assistBgNotSpiltWbGl=Y)不拆分WB流水

4.5 SubjectMapper(科目映射抽象基类)

位置: glp-core-batch/.../facility/subject/SubjectMapper.java

职责: 科目映射的抽象模板,子类实现 doMapping() 方法。

实现类:

实现类映射逻辑
AbsdMapper根据SubjectMapping + LoanProcessFlag.ABSD替换,条件: 有资产计划号或保险项目号且银行号≠资产所属机构号
LoanTermMapper根据贷款期数映射: S(<=5期), M(6-12期), L(>12期),特殊处理3期

4.6 CommonSubjectReplace(通用科目替换)

位置: glp-core-batch/.../facility/subject/CommonSubjectReplace.java

职责: 基于映射因子的科目替换,主要用于OCI资产池类型科目替换。

逻辑:

  • replace(subject, mappingFactor): 查找ProductSubjectMap参数,命中则替换
  • replaceWebankOciSubject(glSucc): 当资产池类型=OCI且银行号=WEBANK时,将科目替换为OCI映射科目

4.7 ProductSubjectReplace(产品科目替换)

位置: glp-core-batch/.../facility/subject/ProductSubjectReplace.java

职责: 按产品编号查找个性化科目映射。

逻辑:

  • 产品号以"Z"开头的统一使用"ABSD"产品映射
  • 从ProductSubjectMap参数表查找科目映射关系

4.8 BankGroupSplit(银团分账处理)

位置: glp-core-batch/.../facility/bg/BankGroupSplit.java

职责: 银团贷款流水按银行份额反算拆分。

核心流程:

split(BgSplitContext) → BgSplitContext
  1. 初始化 (BgTxnGroup + SystemConfig)
  2. fristDayHandler()           # 上线首日90天外利息/罚息初始化
  3. 银团Handler链处理:
     AutoAdjustTypeHandler → LendTypeHandler → AcruRevokeTypeHandler
     → XfrTypeHandler → SettleDbTypeHandler → PrePaymentTypeHandler
     → LoanCancelForOutPlanTypeHandler → CrTypeHandler
     → DepositCollectTypeHandler → PaymentTypeHandler → LoanCancelTypeHandler
     → BgRepoTypeHandler → BgTfrTypeHandler → BgWtoTypeHandler
     → BgWtoTypeSpecialHandler → AgeXfrTypeHandler
  4. saveOrUpdateLoanBg()        # 保存/更新银团借据
  5. saveOrUpdateScheduleBg()    # 保存/更新银团还款计划

Handler排序机制: 通过 BankGroupHandler.comparator 对处理器进行排序,确保处理顺序正确。

4.9 GlBalYearFacility(年终结转设施)

位置: glp-core-batch/.../facility/year/GlBalYearFacility.java

职责: 总账余额年终处理的核心工具类。

核心方法:

方法说明
getTmGlBalList(key)按条件查询当前总账余额
getCurAndLastTmGlBalYearList(key)查询今年和去年的年结记录
getTmGlBalYear(list, tmGlBal)匹配年结记录(去重校验)
saveOrUpdateTmGlBalYear(glBalYear)保存/更新年结记录
addTtGlBalYearAdm(...)添加年结管理流水(含OF机构号匹配)

4.10 P2010LoadGlTxn(流水加载处理器)

位置: glp-core-batch/.../batch/s2000/P2010LoadGlTxn.java

职责: 从CPS交易流水表(TM_GL_TXN_ITEM)加载并转换为总账交易流水(TtTxnGl)。

核心处理逻辑:

  1. 获取余额成分组映射 (BnpGroupMapping)
  2. 获取账龄组映射 (AgeGroupMapping)
  3. 获取产品参数 (ProductCredit)
  4. 判断是否走ABS处理 → putTxnGlAbs() 生成 TtTxnGlAbs
  5. 判断是否走银团处理 → genTxnGlBgItem() 生成 TtTxnGlBg
  6. 普通流水 → genTxnGlItem() 生成 TtTxnGl
  7. 设置各种细标: 资产处置标识、核销标识、保险标识、递延息标志等

4.11 P2030Accting(会计核算处理器)

位置: glp-core-batch/.../batch/s2000/P2030Accting.java

职责: 调用会计引擎对流水进行分录生成。

处理逻辑:

  • 遍历按REF_NBR分组的交易流水
  • 调用 acctingHelper.accting() 生成会计分录
  • 收集成功分录、失败报告、成功报告

4.12 P4100GlBal(总账余额处理器)

位置: glp-core-batch/.../batch/s4100/P4100GlBal.java

职责: 将分组汇总后的分录信息累加到总账余额表(TM_GL_BAL)。

处理逻辑:

  1. 按GlSuccessKey分组遍历汇总分录
  2. 查找或创建对应的TmGlBal记录
  3. 将每条分录的借贷金额累加到余额
  4. 分发为INSERT/UPDATE列表

TmGlBal余额维度 (GlSuccessKey):

  • subject (科目) + productCd (产品) + branchId (机构) + org (组织)
  • bankGroupId (银团) + bankNo (银行) + dcnNo (DCN) + assetOwnerNo (资产所属)

五、数据模型

5.1 核心业务表

TM_GL_BAL(总账余额表)

字段类型说明
BAL_IDbigint PK顺序号
SUBJECTvarchar(40)科目
PRODUCT_CDvarchar(6)产品编号
BRANCH_IDvarchar(9)分支行号
ORGchar(12)机构号
DB_BAL / CR_BALdecimal(20,2)借方/贷方余额
DB_AMT / CR_AMTdecimal(20,2)借方/贷方发生额
DB_COUNT / CR_COUNTint借方/贷方笔数
LAST_DB_BAL / LAST_CR_BALdecimal(20,2)昨日余额
LAST_MTH_DB_BAL / LAST_MTH_CR_BALdecimal(20,2)上月末余额
LAST_QTR_DB_BAL / LAST_QTR_CR_BALdecimal(20,2)上季末余额
LAST_YR_DB_BAL / LAST_YR_CR_BALdecimal(20,2)上年末余额
BANK_GROUP_IDvarchar(5)银团编号
BANK_NOvarchar(10)银行号
DCN_NOvarchar(5)DCN编号
ASSET_OWNER_NOvarchar(10)资产所属机构号

索引:

  • IDX_GLBAL_BG_DCN (BANK_GROUP_ID, DCN_NO)
  • IDX_GLBAL_SUBJ_PRDCD_BRCID_ORG (SUBJECT, PRODUCT_CD, BRANCH_ID, ORG)

TM_GL_TXN_ITEM(CPS交易流水表)

字段类型说明
IDbigint PK主键
PART_DAYint分区天数
ORGchar(12)机构号
CARD_NOvarchar(19)卡号
ACCT_NObigint账号
TXN_SEQvarchar(36)CPS交易流水号
TXN_CODEchar(4)交易码
DB_CR_INDchar(1)借贷标志
POST_AMOUNTdecimal(15,2)入账金额
POST_GL_INDchar(1)总账入账标识 (N/S/W/M)
BUCKET_TYPEvarchar(20)余额成分类型
PRODUCT_CDvarchar(6)产品编号
REF_NBRvarchar(23)交易参考号
BANK_GROUP_IDvarchar(5)银团编号
LOAN_PROCESS_FLAGvarchar(5)贷款后期处理标志
ASSET_PLAN_NOvarchar(15)资管计划号
ASSET_POOL_TYPEvarchar(5)资产类型
IS_DEFERRED_INCOMEchar(1)是否递延收入

TT_GL_SUCCESS(当日入账成功流水)

字段类型说明
FLOW_IDbigint PK流水号
SUBJECTvarchar(40)科目
DB_CR_INDchar(1)借贷标志
POST_AMTdecimal(15,2)入账金额
RED_BLUE_INDchar(1)红蓝字
QUEUEint排序序号
AC_SUBJECTvarchar(40)AC科目
POST_GL_INDchar(1)总账入账标识
BATCH_DATEdate批量日期

TM_LOAN_GLP(总账借据表)

最简借据表,仅含LOAN_KEY主键,作为总账处理的借据索引。

TM_LOAN_BG(银团贷款备份表)

关键字段说明
LOAN_ID顺序号(PK)
BANK_GROUP_ID / BANK_NO银团/银行标识
CARD_NO / REF_NBR卡号/交易参考号
LOAN_INIT_PRIN / PRIN_BAL放款金额/欠款本金
INT_BAL / PENALTY_BAL欠款利息/罚息
INT_ACRU应计利息
AGE_CD / CURR_TERM账龄/当前期数
LOAN_PROCESS_FLAG贷款处理标志
ASSET_DISPOSAL_FLAG资产处置标识
WRITEOFF_FLAG / INSURANCE_FLAG核销/保险标识

TM_LOAN_VMS(借据纳税加工表)

关键字段说明
BIZ_TAX_INTEREST营业税下应计和应收息
VAT_INT_BAL90天内应纳税息余额
VAT_TAX记账增值税
ABS_REPO_INT / ABS_REPO_INT_BALABS回购利息/余额
TAXED_INT_BAL_OB / INT_TAX_BAL_OB出表已纳税利息/已缴税余额
TAXED_PENALTY_BAL_OB / PENALTY_TAX_BAL_OB出表已纳税罚息/已缴税余额

TM_LOAN_ABS(ABS借据表)

关键字段说明
CARD_NO + REF_NBR + BANK_NO联合主键
LOAN_BAL_PRINCIPAL本金余额
LOAN_PROCESS_FLAG贷款后期处理标志
ASSET_PLAN_NO资产计划号
LAST_LOAN_PROCESS_FLAG上一次处理标志

TM_GL_BAL_YEAR(年终结转表)

关键字段说明
BAL_ID顺序号(PK)
ACCOUNTING_DATE年结日期
PRE_YEAR_DB_BAL / PRE_YEAR_CR_BAL年结前借贷余额
AFT_YEAR_DB_BAL / AFT_YEAR_CR_BAL年结后借贷余额

5.2 参数定义表

TM_PARA_SUBJECT(会计科目参数表)

字段说明
SUBJECT科目9位(PK)
BAL_TYPE余额类型
ACCT_TYPE核算类型
LOAN_CATEGORY贷款分类
IS_OVER_DUE是否逾期
IS_OUTER是否表外
BAL_DB_CR_FLAG余额借贷方向
IS_NEED_CARRY_OVER是否年终结转
IS_USE_BAL_CHECK是否用于平衡检查
IS_EAST是否EAST报表推送科目

TxnGlt(套型参数)

Key: txnCd|currCd|ageGroup|bnpGroup

包含字段:

  • 正常交易: ntDbSubject/ntCrSubject + ntDbRedFlag/ntCrRedFlag
  • 正常交易(表外): ntDbSubjectOs/ntCrSubjectOs + ntDbRedFlagOs/ntCrRedFlagOs
  • 挂账交易: stDbSubject/stCrSubject + stDbRedFlag/stCrRedFlag
  • 核销交易: woDbSubject/woCrSubject + woDbRedFlag/woCrRedFlag
  • 结转科目: ntCarryoverDbSubject/ntCarryoverCrSubject

5.3 辅助表

表名说明
TM_BANK / TM_BANK_GROUP / TM_BANK_GROUP_MEMBER银行/银团/银团成员
TM_BANK_MAP银行映射
TM_DCNDCN配置
TM_GL_BAL_B总账余额备份表
TM_GL_BAL_HST总账余额历史表
TM_GL_HST总账历史表
TM_GL_TXN_ADJ / TM_GL_TXN_ADJ_B交易调整表
TM_SCHEDULE_BG / TM_SCHEDULE_BG_B银团还款计划
TM_VAT_ADJ / TM_VAT_ADJ_HST增值税调整
TM_VAT_TAX_RATES增值税税率表
TM_SHADOW_PLAN_REPO影子计划回购
TM_ABS_CLEAR_REPO_INFO / TM_ABS_CLEAR_REPO_CR_INFOABS清仓回购信息
TT_TXN_GL / TT_TXN_GL_BG / TT_TXN_GL_ABS临时交易流水表
TT_GROUP_GL_SUCCESS分组汇总分录
TT_ACCOUNTING_ADJ / TT_ACCOUNTING_ADJ_HST会计调整流水
TT_GL_BAL_OF / TT_GL_BAL_ADM总账余额输出/管理
TT_ERROR_DATA异常数据表
YAK_*文件传输相关表

六、会计引擎

6.1 分录处理流程

TM_GL_TXN_ITEM (CPS流水)
      ↓ P2010LoadGlTxn
TtTxnGl / TtTxnGlBg / TtTxnGlAbs (总账流水)
      ↓ P2020BankGroupSplit (银团拆分)
TtTxnGl (拆分后流水)
      ↓ P2030Accting
      ↓ AcctingHelper.accting()
      ↓ AcctEntryHandler.genAcctEntries()
TtGlSuccess (成功分录)
      ↓ P2090GlSummary (汇总)
      ↓ P4050/P4051/P4052 (分组汇总)
TtGroupGlSuccess (分组汇总分录)
      ↓ P4100GlBal
TM_GL_BAL (总账余额更新)

6.2 分录生成规则

分录生成基于 PostGlIndicator 区分交易类型:

N/M - 正常入账交易:

  • queue 1: 正常借方分录 (ntDbSubject)
  • queue 2: 正常贷方分录 (ntCrSubject)
  • queue 3: 表外借方分录 (ntDbSubjectOs)
  • queue 4: 表外贷方分录 (ntCrSubjectOs)
  • queue 9: 借方结转分录 (ntCarryoverDbSubject)
  • queue 10: 贷方结转分录 (ntCarryoverCrSubject)

S - 挂账交易:

  • queue 5: 挂账借方 (stDbSubject)
  • queue 6: 挂账贷方 (stCrSubject)

W - 核销交易:

  • queue 7: 核销借方 (woDbSubject)
  • queue 8: 核销贷方 (woCrSubject)
  • 同时生成N类型分录 (queue 1-4)

收入科目增值税拆分 (仅损益类 + Webank/BXJG):

  • queue 11/21: 收入金额分录
  • queue 12/22: 增值税金额分录 (VAT_CNC_SUBJECT)

6.3 科目映射

科目映射是一个多层替换链,在GltMappingFactory.replaceSubject()中执行:

原始科目 (来自TxnGlt套型参数)
    ↓ [循环] SubjectMapper链
    ├── AbsdMapper        # ABS资产证券化映射
    └── LoanTermMapper    # 贷款期限映射
    ↓ SubjectMappingFacility  # 通用科目映射规则引擎 (MVEL)
    ↓ ProductSubjectReplace   # 产品级科目替换
    ↓ DeferredIncomeReplace   # 递延收入科目替换 (条件: isDeferredIncome=Y)
    ↓ ForceAcSubjectReplace   # 强制AC科目替换 (条件: forceAc=Y, 可通过参数开关控制)
    ↓ PlanSubjectReplace      # 计划级科目替换 (productCd + planNbr + bnpGroup)

科目替换链特点:

  • 每一层替换都是可选的(查不到映射则保持原科目)
  • 替换顺序有严格依赖关系
  • 产品号以"Z"开头的统一走ABS映射
  • 通用科目映射使用 SubjectMappingFacility 支持复杂规则表达式

6.4 增值税价税分离

触发条件: 损益类科目 (SubjectType.C) + needVatSplit != N + 银行号为Webank或BXJG

分离公式:

  • 收入额 = 入账金额 / (1 + 税率)
  • 税额 = 入账金额 - 收入额

特殊场景:

场景处理方式
普通收入当场拆分税额,生成两笔分录
递延息 + 已缴税产品(isPreTax4Defer=Y)不当场拆税,在splitAcctEntry()统一处理
预缴税(needReserveTax=Y)使用ReserveTaxSplitMapping映射到预缴税科目
代垫税使用splitIncome4ReservedTax(),含余额兜底逻辑
指定税额specificTaxAmt直接拆分

七、批处理流程

7.1 日终批处理主流程 (jobs.xml - clusterGlpJob)

完整的日终批处理流程包含以下步骤:

阶段一: 批前准备 (s0000 - s0100)

步骤说明
parameter-check银团+税率参数检查
fileCleanStepYak文件数据清理
before-clean-table批前临时表清理(都市TT表)
s0010-para-refresh刷新参数
s0050-s0058各类数据还原(loanBg/loanVms/scheduleBg/glBal/shadowPlan/loanAbs/repoPlan/clearRepo/txnAdj/vatAdj)
s0060-s0062重跑历史数据清理(TmGlHst/TmVatAdjHst/TtAccountingAdjHst)
s0063YakFileItem清理
split-gl-region / split-loan-region / simple-split-regionTiDB大表Region热点打散
s0100-init-gl总账预处理

阶段二: 文件等待与处理 (s1240 - s1440)

步骤说明
s1240-inscLoan-wait等待索赔文件
s1250-tfrLoanPlan-wait等待银团交割文件
s1250-tfrLoanPlan-wb-wait等待自营交割文件
s1250-abs-dm-checksum批前资产处置文件DM同步检查
s1241-insc-loan-proc自营+银团索赔处理
s1251-tfrloan-proc银团交割处理
s1261-tfrloan-proc自营交割处理
s1300-deliveryprice-adj银团交割折价处理
vatAdj-file-wait + s1410小微企业免税调账
loanledger-file-wait + s1415分户账调整文件处理
accting-adj-wait + s1420小会计调账文件落库
s1425RONF小会计调账文件落库
s1430 + s1430merge小会计调账平衡校验
s1440AccountingAdj调整交易入会计流水

阶段三: 数据同步与校验 (s1800 - s1860)

步骤说明
s1800-file-wait检查CPS数据同步完成
s1800_TSP_signal大数据校验DM同步信号
s1800-file-checkDM同步数据校验
s1800-dm-checksumCPS同步数据明细校验
s1810 + s1820借据迁移初始化
s1860借据同步处理

阶段四: 总账核算核心 (s2000 - s2200)

步骤说明
outer-finished-wait批量完成文件等待
s2000-gl-txn-master预处理入总账交易文件同步
s2000-error-data-check异常数据检查
s2100glFromOuter外部入总账交易文件处理
s2200-adj-master调整交易处理

s2000步骤内部子步骤:

  • P2005: 贷款数据加工
  • P2010: 加载CPS流水→生成TtTxnGl
  • P2012: 索赔流水处理
  • P2015: 交易调整
  • P2020: 银团分账拆分
  • P2021: ABS科目拆分
  • P2025: ABS清仓回购处理
  • P2026: 预缴税VMS处理
  • P2030: 会计核算(核心分录生成)
  • P2040: VMS代垫税计算
  • P2080: 自动调整已还清本金
  • P2081: 银团自动调整
  • P2090: 分录汇总
  • P2095: 贷款ABS处理
  • P2100: 更新数据处理
  • P2200: 存款转出流水处理

阶段五: ABS回购处理 (s2600 - s2850)

步骤说明
s2600-clear-repo-wait清仓回购文件等待
s2600-repo-dm-checksum回购文件DM同步检查
s2800-genrepo-flow-masterABS回购/撤销处理
s2850-absc-discountprofit-masterABS清仓回购折价收益处理

阶段六: 总账余额更新 (s4050 - s4900)

步骤说明
s4051GlGroupPartition分组汇总分录分区
s4052GlGroup分组汇总分录
s4100-gl-bal-master交易入总账(余额更新)
s4500SubjectAdj科目调整
s4700-check-cps-balanceGLP与CPS总分对账
s4800GlBalPartition总账余额分区
s4900-after-accting-master出并账文件,记录历史

阶段七: 输出与清理 (s4900 - s7000)

步骤说明
s5150FileDataCheckToOF文件数据校验
s4900-genOFYakFileItemByDay生成OF Yak文件项
s4900_TSP_signal发送大数据抽数信号
after-truncate批后数据清理
s5200-genOFYakFileByDay生成OF Yak文件
s6000sync同步TxnGlt
s7000_TSP_signal大数据抽数信号
s7000-job-finished-fileJob完成标志文件
gen-split-gl-region / gen-split-loan-region生成Region打散SQL

7.2 数据备份流程 (jobs-glp-data-bak.xml)

步骤说明
s0500已结清借据清理
s0550已结清ABS借据清理
s0600已结清历史数据清理
s1000银团借据备份(TM_LOAN_BG → TM_LOAN_BG_B)
s2000VMS数据备份(TM_LOAN_VMS → TM_LOAN_VMS_B)
s3000银团还款计划备份
s4000总账余额备份

7.3 对账流程 (jobs-glp-compare.xml)

专门的总分对账批处理,对比GLP与CPS的数据一致性。

7.4 数据清理流程 (jobs-glp-clean.xml)

历史数据定期清理,包含:

  • 数据清理配置管理
  • 清理计划执行
  • 清理日志记录

7.5 年终结转流程 (jobs-year.xml - clusterGlpYearJob)

步骤说明
wait-file-glp-adm-finish等待主批结束文件
before-clean-table-year临时表清理
s2000-year-account-master年结处理(更新TM_GL_BAL_YEAR)
s2010-s2040-year-bal-check年结余额校验(4轮)
s5000-TSP-signal发送大数据信号
s5000-acct-bal-webank-transform我行部分金额累加+文件转换
s6000-acct-bal-other-bank-transform他行部分金额累加+文件转换
s6100-genOFYakFileByYear生成年终OF文件

年结内部处理 (year包):

  • P2000AccountingDate - 年结日期处理
  • P2200AcctBalTransformAdm / P2300AcctBalTransformAdm - ADM余额转换
  • P3000AcctBalTransform - 余额结转
  • P4000AcctBalTransform - 余额结转(补充)
  • P5000AcctBalWeBankTransform - 我行余额转换输出
  • P6000AcctBalOtherBankTransform - 他行余额转换输出

八、科目管理

8.1 科目体系

科目定义 (Subject 类) 包含以下属性:

  • 科目编号 (subject): 9位科目编码
  • 余额方向 (balDbCrFlag): D(只借)/C(只贷)/B(轧差)/双向
  • 发生额方向 (amtDbCrFlag): D(只借)/C(只贷)/B(双向)
  • 科目类型 (type): A资产/B负债/C损益/D共同/E表外
  • 币种 (currCd)
  • 价税分离标志 (needVatSplit)
  • 增值税科目 (incomeVatSubject)
  • 虚拟科目标志 (isVirtualSubject)
  • 年结结转标志 (needYearCarryOver)

8.2 科目映射机制

科目映射通过8层替换链实现,确保最终科目符合业务要求:

第1层: SubjectMapper链 (AbsdMapper + LoanTermMapper)

  • 根据ABS标志和贷款期限进行初步科目映射
  • 通过SubjectMapping参数表查找映射关系

第2层: 通用科目映射规则引擎 (SubjectMappingFacility)

  • 使用SubjectMappingCache缓存映射规则
  • 支持TM_PARA_SUBJECT_MAPPINGTM_PARA_SUBJECT_MAPPING_TYPE表定义的映射规则
  • 支持MVEL表达式规则

第3层: 产品科目替换 (ProductSubjectReplace)

  • 根据产品编号查找ProductSubjectMap参数
  • ABS产品(Z开头)统一使用ABSD产品映射

第4层: 递延收入科目替换 (DeferredIncomeReplace)

  • 条件: isDeferredIncome = Y
  • 查找DeferredIncomeMapping参数替换为递延科目

第5层: 强制AC科目替换 (ForceAcSubjectReplace)

  • 条件: forceAc = Y (清仓回购场景)
  • 可通过系统参数IS_OPEN_FORCE_AC开关控制
  • 查找ForceAcSubjectMapping按机构替换

第6层: 计划科目替换 (PlanSubjectReplace)

  • 基于 productCd + planNbr + bnpGroup 维度
  • 查找PlanSubjectMapping参数

第7层: OCI科目替换 (CommonSubjectReplace)

  • 在分录生成后执行
  • 资产池类型=OCI且银行号=WEBANK时替换
  • 映射因子格式: ACCT|OCI

第8层: 银团科目映射 (BankGroupSubjectMapping)

  • 仅银团交易生效
  • 将合作银行科目替换为我行对应科目
  • 同时生成一套我行科目分录

8.3 科目映射参数表

参数类Key用途
SubjectMappingsubject通用科目映射(含LoanTerm/ABS维度)
ProductSubjectMapproductCd产品级科目映射
BankGroupSubjectMappingsubject + dbCrInd银团科目映射
DeferredIncomeMappingsubject递延收入科目替换
ForceAcSubjectMappingorg强制AC科目替换
PlanSubjectMappingproductCd + planNbr + bnpGroup计划级科目映射
ReserveTaxSplitMappingsubject + dbCrInd + redBlueInd预缴税科目拆分
DeferredIncomeVatSplitMappingsubject递延息已缴税拆分
CommonSubjectMapmappingFactor通用映射(如OCI)

九、余额管理

9.1 总账余额 (TM_GL_BAL)

余额维度: SUBJECT + PRODUCT_CD + BRANCH_ID + ORG + BANK_GROUP_ID + BANK_NO + DCN_NO + ASSET_OWNER_NO

余额字段:

  • 当日余额: DB_BAL / CR_BAL
  • 当日发生额: DB_AMT / CR_AMT
  • 当日笔数: DB_COUNT / CR_COUNT
  • 昨日余额: LAST_DB_BAL / LAST_CR_BAL
  • 上月末余额: LAST_MTH_DB_BAL / LAST_MTH_CR_BAL
  • 上季末余额: LAST_QTR_DB_BAL / LAST_QTR_CR_BAL
  • 上年末余额: LAST_YR_DB_BAL / LAST_YR_CR_BAL

余额更新流程:

  1. 分录按GlSuccessKey分组汇总 (P4050/P4051/P4052)
  2. 查找或创建TM_GL_BAL记录 (P4100)
  3. 将分录金额累加到发生额和余额
  4. INSERT或UPDATE到数据库

余额计算规则 (AcctEntry.accumulateTo):

  • 借方分录: DB_BAL += amount, DB_AMT += amount, DB_COUNT++
  • 贷方分录: CR_BAL += amount, CR_AMT += amount, CR_COUNT++

9.2 对账机制

GLP与CPS总分对账 (s4700):

  • 对比总账余额与CPS系统的明细汇总
  • 发现差异时生成对账报告

科目平衡校验 (s1430):

  • 调账文件的借贷平衡校验
  • 确保每笔调整交易的借方金额 = 贷方金额

9.3 年终结转

年结流程:

  1. 余额快照: 将TM_GL_BAL当前余额记录到TM_GL_BAL_YEAR
  2. 损益结转: 损益类科目(C类)余额结转到利润科目
  3. 余额校验: 4轮年结余额校验(s2010-s2040)
  4. 输出文件:
    • 我行部分: 累加金额 + 文件格式转换 (P5000)
    • 他行部分: 累加金额 + 文件格式转换 (P6000)
  5. OF文件: 生成年终OF Yak文件

年结记录字段 (TM_GL_BAL_YEAR):

  • PRE_YEAR_DB_BAL/CR_BAL: 年结前余额
  • AFT_YEAR_DB_BAL/CR_BAL: 年结后余额
  • ACCOUNTING_DATE: 年结日期

十、业务流程

10.1 日终GL处理流程

完整日终处理时序:

[日终开始]

    ├─ 1. 参数检查与刷新
    │   ├─ 银团/税率参数校验
    │   ├─ Yak文件清理
    │   ├─ 临时表清理
    │   ├─ 参数刷新(BMP参数同步)
    │   └─ 数据还原(重跑场景恢复)

    ├─ 2. Region热点打散
    │   └─ TiDB大表(TT_GL_SUCCESS, TT_LOAN_MIGRATION)Region打散

    ├─ 3. 总账预处理
    │   └─ 初始化总账环境

    ├─ 4. 文件等待与业务处理
    │   ├─ 索赔文件等待与处理
    │   ├─ 银团交割文件等待与处理
    │   ├─ 自营交割文件等待与处理
    │   ├─ 资产处置DM同步检查
    │   ├─ 银团折价处理
    │   ├─ 免税调账
    │   ├─ 分户账调整
    │   └─ 小会计调账

    ├─ 5. 数据同步与校验
    │   ├─ CPS数据同步等待与校验
    │   ├─ DM同步检查
    │   └─ 借据同步处理

    ├─ 6. 总账核算核心
    │   ├─ 流水加载(P2010)
    │   ├─ 银团分账(P2020)
    │   ├─ ABS处理(P2021/P2025)
    │   ├─ 预缴税处理(P2026)
    │   ├─ 会计核算/分录生成(P2030)
    │   ├─ VMS计算(P2040)
    │   ├─ 分录汇总(P2090)
    │   └─ 外部流水处理(P2100/P2200)

    ├─ 7. ABS回购处理
    │   ├─ 清仓回购等待
    │   ├─ ABS回购/撤销处理
    │   └─ 折价收益处理

    ├─ 8. 余额更新与对账
    │   ├─ 分录分组汇总
    │   ├─ 总账余额更新(P4100)
    │   ├─ 科目调整(P4500)
    │   └─ GLP与CPS对账(P4700)

    ├─ 9. 输出与清理
    │   ├─ 出并账文件
    │   ├─ OF Yak文件生成
    │   ├─ 大数据抽数信号
    │   ├─ 批后数据清理
    │   ├─ TxnGlt同步
    │   └─ Region打散SQL生成

[日终结束]

10.2 DCN/ADM双模式部署

ADM模式 (集中式):

  • 所有步骤在单节点执行
  • 不需要文件同步等待
  • 适合小规模或开发环境

DCN模式 (分布式):

  • 按DCN分区执行批处理
  • 需要文件同步和等待机制
  • 步骤间通过文件标志(File Wait Tasklet)协调
  • 支持多IDC部署
  • 关键等待点: s1800(CPS同步), s2600(清仓回购), outer-finished-wait

DCN特有步骤:

  • s0050-s0058: 各类数据还原
  • s0060-s0062: 重跑历史数据清理
  • s0063: YakFileItem清理
  • Region打散步骤

10.3 年终处理流程

[年终处理开始] (clusterGlpYearJob)

    ├─ 等待主批(clusterGlpJob)结束
    ├─ 临时表清理
    ├─ 年结处理 (更新TM_GL_BAL_YEAR)
    ├─ 年结余额校验 (4轮)
    ├─ 发送大数据信号
    ├─ 我行余额转换输出
    ├─ 他行余额转换输出
    └─ 生成年终OF文件
[年终处理结束]

十一、配置与部署

11.1 集群配置 (13种)

系统支持多集群部署,每个集群有独立的配置目录:

配置目录说明
conf/glp-cluster-batch-adm标准集群批处理(新)
conf/glp-cluster-service-adm(隐含)标准联机服务
conf/glp-cluster-test测试集群
conf/bglp-batch-admBGLP批处理ADM
conf/bglp-batch-dcnBGLP批处理DCN
conf/bglp-cluster-batch-admBGLP集群批处理ADM
conf/glp-cluster4gicGIC集群配置
conf/glp-cluster4wbpWBP集群配置
conf/glp-dcluster-batch-admD集群批处理
conf/glp-gcluster-batch-admG集群批处理
conf/glp-zcluster-batch-admZ集群批处理
conf/pglp-cluster-batch-admPGLP集群批处理
conf/rciglp-cluster-batch-admRCI GLP集群批处理
conf/sglp-cluster-batch-admSGLP集群批处理

11.2 配置文件结构

每个集群配置包含:

文件说明
*.properties核心配置(数据源、参数等)
*-env.properties环境变量配置
*-nodes.env节点配置
gns-api.propertiesGNS API配置
gns-client.propertiesGNS客户端配置
rmb-client.propertiesRMB客户端配置
weservice.propertiesWeb服务配置
log4j2.xml日志配置

11.3 Spring上下文配置

配置文件说明
batch-basic-context.xmlBatch基础上下文
batch-context.xmlBatch运行上下文
biz/biz-context.xml业务Bean装配
biz-context-jdbc.xmlJDBC数据源配置
biz-context-jdbc-cps.xmlCPS数据源配置
biz-context-jdbc-glp-tdsql.xmlGLP TDSQL数据源
cache-context.xml缓存配置
facility-context.xmlFacility Bean装配(含AcctingHelper等)
fps-context.xmlFPS配置
rpc-context.xmlRPC服务配置
service-context.xml服务层配置
check-listener.xml检查监听器
step-beans.xmlStep Bean定义

11.4 部署架构

  • 数据库: TiDB集群,多表按PART_DAY分区
  • Region打散: 对热点大表(TT_GL_SUCCESS, TT_LOAN_MIGRATION)自动打散Region
  • 序列号: TiDB自增主键 + 手动序列号双模式
  • 文件传输: 基于Yak文件传输框架
  • 参数管理: BMP统一参数管理平台
  • 监控: 批处理状态通过BatchStatusFacility管理,TSP信号通知大数据平台

十二、DB迁移

12.1 数据库版本管理

数据库升级脚本组织结构:

glp-core-upgrade/db/
├── base/                    # 基础建表脚本
│   └── ddl/
│       ├── acct_009_ddl_glpclusterdb_erm_create.sql
│       ├── acct_034_ddl_glpdb_b_create.sql
│       ├── acct_120_ddl_glpclusterdb_gl_bal_adj_create.sql
│       └── ...
├── 3.20.0/                  # 版本3.20.0升级
│   └── ddl/
│       └── acct_094_glpcluster_gl_bal_year_add_index_alter.sql
├── 22.08.29/                # 历史升级
│   └── 829_acct_003_ddl_glpclusterdb_gl_bal_adj_create.sql
└── ...

dbScript/                    # 外部维护的DB脚本
├── 24.05.28/                # 按日期组织的变更
├── 24.06.04/
├── 24.08.30/
└── ...

12.2 DDL脚本分类

前缀说明
acct_000Docker表
acct_001双写表
acct_002系统状态表
acct_003NAS相关
acct_004RMB相关
acct_005批量插入表
acct_006Spring Batch表
acct_007参数表
acct_008SDK表
acct_009ERM表(总账核心表)
acct_011增值税调整表
acct_017总账历史表
acct_031BDP表
acct_034B备份表
acct_037产品参数表
acct_040科目参数表
acct_054公允价值表
acct_103交易调整备份表
acct_110主表
acct_116多IDC表
acct_117开关表
acct_120总账余额调整表
acct_121总账余额Key表
acct_200ABS利润转移删除表
acct_201规则检查表

12.3 数据迁移工具

DataMigrationInfoFacility: 管理数据迁移信息的工具类。

Reader/Writer:

  • AbstractPagingKeyTidbReader - TiDB分页Key读取器基类
  • ChunkPagingKeyReader / ChunkPagingKeyTidbReader - 分块分页读取
  • DataCopyChunkPagingReader - 数据复制分页读取
  • DbMigrationInfoFilePageReader / DbMigrationInfoStringPageReader - 迁移信息分页读取
  • DbFileParallelMultiWriter - 并行多写Writer

数据备份/还原:

  • s0050-s0058: 批前数据还原(从备份表恢复)
  • s1000-s4000 (data-bak): 批后数据备份(主表→备份表)

十三、外部系统集成

13.1 CPS (Core Processing System)

集成方式: 数据库表同步 + 文件传输

  • 输入: TM_GL_TXN_ITEM表(CPS写入交易流水)
  • 输出: TT_GL_SUCCESS / TT_GL_BAL_OF(总账分录和余额供CPS查询)
  • 对账: s4700步骤进行GLP与CPS总分对账
  • 同步等待: s1800步骤等待CPS数据同步完成
  • DM同步: 通过大数据平台DM同步检查(s1250/s2600)

13.2 BMP (Bank Management Platform)

集成方式: SDK调用 (zbmp-service-sdk)

  • 参数管理: 银行/银团/成员等参数通过BMP管理
  • 参数刷新: s0010步骤刷新BMP参数
  • 缓存: 通过bmpsdk-client-db缓存参数数据
  • 联机服务: glp-cluster-service-adm提供BMP参数维护接口

13.3 大数据平台

集成方式: TSP信号 + 文件传输 (Yak)

  • TSP信号: 批处理关键节点发送信号通知大数据平台抽数
    • TSP_S1800: 数据同步信号
    • TSP_S4900: 抽数信号
    • TSP_S5000: 年终信号
    • TSP_S7000: 最终抽数信号
  • Yak文件: 通过Yak文件传输框架输出数据文件
    • OF Yak文件: 日终/年终输出文件
    • YakFileItem: 文件传输项管理

13.4 RMB (Reliable Message Bus)

集成方式: 消息总线

  • 配置文件: rmb-client.properties
  • 用于跨系统消息通信

13.5 GNS (Global Naming Service)

集成方式: 服务发现

  • 配置文件: gns-api.properties / gns-client.properties
  • 用于服务注册和发现

13.6 外部交易系统

集成方式: 文件传输 (s2100步骤)

  • 外部系统通过文件抛入总账交易
  • P2100LoadGlTxnFromOutter 处理外部交易文件
  • P2200LoadGlTxnAdj / P2200DepositXfrOutGlTxn 处理调整交易和存款转出

13.7 小会计系统

集成方式: 文件传输 + 数据库

  • s1420/s1425: 小会计调账文件落库
  • s1430: 调账平衡校验
  • s1440: 调整交易入会计流水
  • 支持FON(From Other Network)和RONF(Reverse Other Network File)模式

13.8 多集群协同

集成方式: 文件等待 + 数据库

  • DCN模式: 各DCN节点独立处理,通过文件标志协调
  • ADM模式: 集中处理,包含DCN汇聚
  • 年终处理: 各DCN年结完成后汇聚到ADM

附录

A. 关键常量 (GlpConstants)

常量说明
BANK_NO_WEBANK"WEBANK"我行银行号
AGE_GROUP_Y"Y"Y账龄组(零元回购)
AGE_GROUP_W"W"W账龄组(核销)
AGE_GROUP_G"G"G账龄组(逾期)
AGE_GROUP_J"J"J账龄组
VAT_CNC_SUBJECT(配置值)增值税科目
BG_ACRU_INIT_FLAG(配置值)银团应计初始化标志

B. 批处理步骤包对照表

包名步骤范围说明
s0000数据准备数据生成
s0010参数刷新参数同步
s0100总账初始化预处理
s1000数据备份LoanBg备份
s11000清理数据清理
s1200索赔保险索赔处理
s1240索赔等待文件等待
s1250交割银团/自营交割
s1260自营交割自营交割处理
s1300折价银团交割折价
s1410免税小微免税调账
s1415分户账分户账调整
s1420调账落库小会计调账
s1425FON调账RONF调账
s1430平衡校验调账校验
s1440调整入账调整交易入流水
s1810迁移初始化借据迁移
s1820迁移处理迁移执行
s1860借据同步借据数据同步
s2000总账核心流水加载/核算/分录
s2100外部流水外部交易处理
s2200调整流水调整交易处理
s2650影子计划Shadow Plan
s2750清仓回购ABS清仓回购初始化
s2800回购处理ABS回购/撤销
s2850折价收益ABS清仓回购折价
s4050分组汇总分录分组
s4100余额更新总账余额
s4500科目调整科目级调整
s4700总分对账GLP-CPS对账
s4800余额分区余额分区处理
s4900出账文件输出处理
s5000OF文件OF文件生成
s5100数据校验文件数据校验
s5500(预留)-
s6000同步TxnGlt同步
s7000结束信号/标志文件
year/s2000年结年终结转
year/s3000年结文件余额文件
year/s4000年结补充补充余额
year/s5000我行输出我行年结文件
year/s6000他行输出他行年结文件

C. 数据库表清单

共约120张表,主要分类:

类别前缀表数量说明
主数据TM_~60业务主表
临时表TT_~25批处理临时表
批处理BATCH_~9Spring Batch元数据
文件传输YAK_~8Yak文件传输
参数TM_PARA_~15参数配置表

本报告基于BGLP总账平台源码分析生成,涵盖系统架构、核心业务逻辑、数据模型、批处理流程等各个方面。