
@[TOC]
## 接口介绍
在客户使用星瀚系统时,存在第三方系统对接时会有需要查询科目余额的或者核算维度余额的场景,为此提供了API余额接口供使用,可以按照科目或者核算维度的角度查询**单组织某个期间**余额数据。
## 接口说明
### 接口路径
开发服务云-->开放平台-->API开发
### 接口配置
#### 5.0.020及以后版本
系统已经在开发平台预置了余额取数接口服务,直接使用即可。详细使用可以参看API文档,菜单为API文档。
API服务路径:开放平台-->API管理列表-->财务云-->总账-->余额接口-->getBalance
请求url格式:https://xxx.kdcloud.com/test/kapi/v2/gl/getBalanceApi
#### 5.0.020以前版本
5.0.020版本之前需要自己新建API服务。路径:开放平台-->其他-->API服务管理1.0
1、打开API1.0的新增按钮配置开关,默认1.0的新增已经关闭

2、新增API服务,建立总账的自定义调用接口
3、获取总账余额服务getBalanceService,选择post方式
4、建立插件kd.fi.gl.api.BanlanceServiceApiHelper

这样一个自定义的操作服务就注册好了,访问地址为星瀚系统地址+/api+API高级信息中的URL内容。
### 使用说明
建立参数类BalanceQueryParamApi (可不建参数类,参数类主要为了方便传参)
```java
public class BalanceQueryParamApi{
//查询字段
private List<String> selectors = new ArrayList<String>();
//组织编码
private String orgNumber;
//账簿类型编码
private String bookTypeNumber;
//期间编码
private String periodNumber;
//币别编码
private String currencyNumber;
//科目表编码
private String accountTableNumber;
//科目编码:多组核算维度编码
//accountAssgrp的内部Map -> 核算维度类型编码:核算维度值的编码
private Map<String, List<Map<String, String>>> accountAssgrp = new HashMap<>();
//分组字段;只包含:余额表字段与查询的核算维度
private List<String> groupBys = new ArrayList<String>();
//是否扣减损益类金额
private boolean isSubstractPL = false;
//指定科目查询
private boolean isSpecialAccount = true;
// 省略getter setter方法
}
```
#### 参数字段说明
| 字段 | 说明 | 备注 |
| ------------ | ------------ | ------------ |
| selectors | 需要查询的余额表字段,字段标识对应gl_balance元数据,后面会有介绍 | 必录,selector加了period期间字段则只查询当期有发生的数据,当期无发生不返回 |
| orgNumber | 核算组织编码 | 必录 |
| bookTypeNumber | 账簿类型编码 | 必录 |
| accountTableNumber | 科目表 | 必录 |
| periodNumber | 期间编码 | 必录 |
| currencyNumber | 币别编码 | 非必录,不传查询综合本位币 |
| accountAssgrp | 科目维度Map参数,下文详细展开 | 科目必录 |
| groupBys | 分组字段 | |
| isSubstractPL | 是否扣减结转损益发生 | 默认为false |
|isSpecialAccount| 指定科目查询,为true时只返回查询参数的科目余额数据 | 默认为true |
accountAssgrp 科目数据传递在此详细说明下:
key是科目对应版本的ID,value是一个List<Map<String, Long>>,对应多个维度信息,Map为核算维度类型编码:核算维度值的编码,比如核算维度中客户编码为customer,客户A的编码为0001,则内部Map值为:{customer:0001}
#### 余额表gl_balance字段说明
| 字段 | 说明 | 备注 |
| ------------ | ------------ | ------------ |
| org | 核算组织 | |
| booktype | 账簿类型 | |
| period | 期间 | 该维度余额记录的发生期间 |
| endperiod | 结束期间 | 该维度下一个发生期间,无下一期则该值为99999999999L,表示最大期间 |
| accounttable | 科目表 | |
| account | 科目 | |
| currency | 币别 | |
| assgrp | 核算维度 | 弹性域,维度的横表组合 |
| measureunit | 计量单位 | |
| beginfor | 期初原币金额 |