本文介绍了预算报表自动创建和填充的相关接口及其实体定义。支持通过三个接口(GetBudgetReport、FillBudgetReport、ImportBudgetReport)分别实现预算报表的自动创建、单元格值填充和Excel文件导入填充。详细说明了接口的参数、返回值及功能,并列举了报表实体及其相关维度和填充方式的定义,为理解和使用这些接口提供了必要的参考信息。
(仅支持客户端方式预算报表,暂不支持H5端预算报表)
一、接口说明:
预算报表自动创建提供了三个接口,
GetBudgetReport:自动创建预算报表,单元格默认值0,创建成功后,返回新创建或已存在的预算报表ID,及表页的单元格数据格式,用于填充报表数值;
FillBudgetReport:按照报表表页的单元格格式,填充新创建报表的单元格值;
ImportBudgetReport:引入Excel文件填充报表数值。
导入命名空间:
Kingdee.K3.FIN.BM.App.Core.CommonService
Kingdee.K3.FIN.BM.ServiceHelper.BMCommonServiceHelper
Kingdee.K3.FIN.BM.Common.BusinessEntity.BudgetReportEntity
Kingdee.K3.FIN.BM.Common.BusinessEntity.DimsionTypeEntity
Kingdee.K3.FIN.BM.Common.BusinessEntity.DimFilldWay
Kingdee.K3.FIN.BM.Common.BusinessEntity.ImportExcelType
Kingdee.K3.FIN.ReportEntity.PivotGrid.PivotGridCellValue
/// 预算报表自动创建
bool GetBudgetReport(Context ctx, //上下文环境
BudgetReportEntity budgetReportEntity, //报表头信息
Dictionary<string, Dictionary<int, DimsionTypeEntity>> dimValueDic,
//表页控制维度填充值key:表页名称value:[key]报告维度类别ID
Dictionary<string, DimFilldWay> sheetFillWayDic,
//表页控制维度组合填充方式key:表页名称
List<string> lstSheetNames, //表页名称
out Dictionary<string, List<FIN.ReportEntity.PivotGrid.PivotGridCellValue>> sheetValueDic,
//返回创建成功报表的表页单元格数据key:表页名称
out List<string> lstErrors, //错误提示
bool isReCreateReport = false, //是否重新填充已存在报表
bool isReFillDimension = false); //是否重新填充控制维度
/// 预算报表自动填充单元格值
bool FillBudgetReport(Context ctx, //上下文环境
BudgetReportEntity budgetReportEntity, //报表头信息
List<string> lstSheetNames, //表页名称
Dictionary<string, List<FIN.ReportEntity.PivotGrid.PivotGridCellValue>> sheetValueDic,
//表页填充单元格数据key:表页名称
out List<string> lstErrors); //错误提示
/// 预算报表Excel填充
bool ImportBudgetReport(Context ctx, //上下文环境
BudgetReportEntity budgetReportEntity, //报表头信息
System.IO.FileStream fstream, //引入Excel文件
ImportExcelType excelType, //引入Excel文件类型
Dictionary<string, DimFilldWay> selectFillWayDic,
//表页引入控制维度组合填充方式key:表页名称
out List<string> lstErrors); //错误提示
二、测试试例:
发布或二开调用”报表创建接口界面”,
首先选择预算模板、预算组织、预算方案、年度、期间等报表头信息,可以创建空维度值的预算报表;预算维度单据体选择维度值,可以填充报表预算维度。
其次,预算报表创建成功后,接口返回报表ID、表页单元格数据格式,可以按照返回的表页单元格数据格式进行数据赋值、或引入Excel数据,填充报表数值;
三、实体定义:
/// 报表实体
public class BudgetReportEntity
{
[必录]
public string ID ; /// 报表ID
public string SampleID ; /// 预算模板ID
public long EntryOrgId ; /// 预算组织ID
public int SchemeID ; /// 预算方案ID
public int Year ; /// 年度
public int Period ; /// 期间
public int CurrencyID ; /// 币别
public int BwbCurrencyId ; /// 综合本位币币别
public string ReportType ;/// 报表类型
public int DimensionType_Id ; /// 主维度类别ID
public int DimensionId; /// 维度值ID(基础资料)
public string AssistantId ; /// 维度值ID(辅助资料)
[默认值]
public string CycleID ;/// 周期
public int AmountunitID ; /// 金额单位
…………
}
///维度填充值对象
public class DimsionTypeEntity
{
public List<DimsionValueEntity> DimsionValueEntityList { get; set; }
/// 维度填充值集合
…………
}
///维度填充值对象
public class DimsionValueEntity
{
[关键标识]
public string DimsionId ; /// 维度ID
[保留]
public string DimsionName ; /// 维度名称
public string DimsionNumber ; /// 维度编码
}
/// 预算报表维度填充方式
public enum DimFilldWay
{
CrossFillWay = 0, /// 笛卡尔积方式
GroupFillWay = 1, /// 组合排列
}
/// 透视表单元格数据
public class PivotGridCellValue
{
[关键标识]
public string Key; /// 单元格标示:期间类型_期间_数据类型_维度[唯一标识]
public CycleType PeriodType ; /// 期间周期类型,如:半年、月、季[最小周期]
public int Period ; /// 期间,如:1、2、3期,跟预算日历对应
public int ValueDataType ; /// 预算项目数据类型
public List<DimensionEntity> LstDimensionEntity ; /// 维度集合
[单元格值]
public object Value ; /// 数据或者维度名称
[保留]
public string GroupID ; /// 维度组合ID
public long DeptOrgId ; /// 预算组织部门ID
public long BudgetOrgId ; /// 预算组织基础资料
public string Id ; /// 单元格Id
public string Number ; /// 单元格Number
public string Formula ; /// 取数公式
public string ActualFormula ; /// 实际数取数公式
public string Remark ; /// 备注
public int BusinessType ; /// 预算业务类型
public string Tag ; /// 单元格标签
public string ErrMsg ; /// 计算错误时的错误信息
public int Year ;/// 年度
}
/// 单元格维度属性实体
public class DimensionEntity
{
[关键标识]
public long Id ; /// 报告维度类别ID(基础资料)
public object DimValue ; /// 具体维度的值,如:供应商ID 100001
[保留]
public string Number ; /// 报告维度编码
public string Name ; /// 报告维度名称
public object DimNumber ; /// 具体维度的编码,如:供应商编码 VEN00001
public object DimName ; /// 具体维度的名称,如:供应商名称 蓝海机械
public long FlexId ; /// 报告维度对应核算维度Id
public string FlexNumber ; /// 报告维度对应核算维度编码
public string FlexName ; /// 报告维度对应核算维度名称
public bool IsBudgetOrg ; /// 是否预算组织
}
/// EXCEL导入类型
public enum ImportExcelType
{
RowExcel = 0, /// 列表
PivotExcel = 1, /// 透视表
}
推荐阅读