预算数据结构(二次开发)

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

预算数据结构(二次开发)

预算管理(老预算)

预算的数据存储在T_BG_BgData中,主要的字段包括FOrgUnitID(组织ID),FBgSchemeID(方案ID),FFormula(项目公式),FBgValue(预算数),FBizActual(实际数),FBgItemCombinID(预算项目组合ID),FBgPeriodID(预算期间ID),FBgElementID(要素ID),FCurrencyID(币别ID);数据保持在同一组织,同一方案下项目公式唯一。
T_BG_BgTmpData预算临时数据表,该表存储预算调整表及调整单、汇编表中修改未审批的预算调整数

FBgSchemeID 关联预算方案数据表T_BG_BgScheme
FBgItemCombinID 关联预算项目组合数据表T_BG_BgItemCombination,在该表中FKey的字段存储了预算项目组合的编码FKey,这个编码拆分后可以在T_BG_BgItem里以FNumber编码字段进行查询
FBgPeriodID 关联预算期间数据表T_BG_BgPeriod
FBgElementID 关联预算要素数据表_BG_BgElement
FCurrencyID 关联币别T_BD_Currency

预算控制记录表 T_BG_BgCtrlRecord
FBgDataId 预算表记录ID -> T_BG_BgData -> FID
FBillId -> 业务单据ID
FBillName -> 业务单据名称
FBillNumber -> 业务单据编码
FBillAlias -> 单据别旬(费用报销单、付款单)
FBillType ->单据类型
FBizDate -> 业务日期
FActualAmount -> 预算控制值
FBillOperate ->
FBgPeriodId -> 预算期间ID -> T_BG_BgPeriod -> FID
FItemName -> 项目名称
FBgTraceType -> 预算执行跟踪类型(预算实际数初始化 =1, BgActual=2, 单据控制=3, 下级汇总=4, 方案间取数=5,  下级项目汇总=6, 下级组织项目汇总=7)
FOrgUnitId -> T_ORG_COSTCENTER -> FID(成本中心ID)
FBgSchemeId -> T_BG_BGSCHEME -> FID(预算方案ID)
FItemFormula -> 项目公式
FPayState -> 0
FISCollected -> 实际数是否已经向上汇总(1:汇总过,0:没有汇总)
FDayDate -> 预算控制日期(根据业务控制的业务期间对应的日期,并不是业务发生日期)
FActualType-> 扣减类型 (占用数=1, 实际数=2)



预算编制平台(新预算)

多维预算的数据结构,在多维预算中预算的数据存储是动态表结构,每个方案都有一套完整的数据存储结构,
预算方案T_MBG_BgScheme的FRefCube字段中存储了预算数的动态表名,一般是T_MBG_BgData????????(后面是随机数,每套方案的随机数都是一样的,也就是预算表后面的随机数与实际数日常维护及实际数表的随机数一样)
预算数包括两张表
T_MBG_BgData???????? 和 T_MBG_BgDataEntry????????

实际数日常维护
T_MBG_BGDAILYACTUAL???????? 和 T_MBG_BGDAILYACENTRY????????

实际数
T_MBG_BGACTUAL????????

维度:T_MBG_DIM
维度来源:T_MBG_DIMSRC
在T_MBG_BgData预算事实表中增加了情景及版本的字段

FVersion Int -> T_MBG_BgVerison -> FVersionId
FScenario Int -> T_MBG_BgScenario -> FScenarioId
其它的文字与预算管理的数据结构类似



预算读写接口

// 相关的工具类

com.kingdee.eas.ma.mbg.dimension.utils.DimUtils

// 查询参数
com.kingdee.eas.ma.mbg.dimension.face.IDimensionParameter parameter = new com.kingdee.eas.ma.mbg.dimension.impl.DimensionParameter();
parameter.setBgSchemeId(?); // 预算方案ID
parameter.setBgOrgViewId(?); // 预算的组织视图ID 可以使用com.kingdee.eas.ma.mbg.BgSchemeInfo -> getEditOrgViewId()
parameter.setOrgUnitId(?); // 查询的成本中心ID
parameter.setBgTemplateId(?); //查询的数据关联的模板
parameter.setValueType(com.kingdee.eas.ma.mbg.dimension.DimensionConstants.BUDGET_TYPE); //默认检查预算数

/*
* 数据类型如下:因为预算数和实际数类型由情景来区分了,因此现在预算数和实际数可以通用,实际数日常维度单独用,余额是用来查询控制余额的
*
* public static int BUDGET_TYPE = 1;
* public static int BUDGET_AUDIT_TYPE = BUDGET_TYPE << 2; // 描述:已审批预算数
* public static int ACTUAL_TYPE = BUDGET_TYPE << 3;
* public static int BALANCE_TYPE = BUDGET_TYPE << 4;
* public static int DAILY_ACTUAL_TYPE = BUDGET_TYPE << 5; // 维护实际数
* public static int DAILY_ACTUAL_TYPE_AUDIT = BUDGET_TYPE << 6;  // 维护实际数-审批状态(用于取数公式)
*/

/* **************************************************************************************************** */
/*
* 描述:设置查询参数的维度及维度成员信息
*/
/* **************************************************************************************************** */
// 查询参数中行维和列维度的查询信息 (有关维度的信息可以通过 DimUtils.getDimensionColls(Context ctx) 得到)
// 重要: 这里的维度数量必须与方案使用的维度信息保持一致(组织维度可以不要)
com.kingdee.eas.ma.mbg.dimension.face.IDimension dimension = new com.kingdee.eas.ma.mbg.dimension.vo.DimensionObject();
dimension.setNumber(?); // 维度编码
dimension.setField(?); // 维度分组号
dimension.setSrcNumber(?); //维度来源编码
parameter.getDimensionMap().put(dimension.getNumber(), dimension);

IMember member = new MemberObject();
member.setName(?); // 维度成员名称(可不要)
member.setNumber(?); // 维度成员编码
if (!com.kingdee.eas.ma.mbg.dimension.utils.DimUtils.checkBaseDimension(dimension)) {
       member.setSrcNumber(dimension.getSrcNumber()); // 来源编码(从维度中得到) //基本的维度成员不用设置来源编码
}
dimension.addMember(member); //将维度成员添加到维度中

/* 描述:如果是组织或者是扩展维度都要查询长编码 */
com.kingdee.eas.ma.mbg.dimension.utils.DimUtils.queryItemLongNumber(ctx, parameter, dimension);                        
/* 描述:处理情景维度编码  */
com.kingdee.eas.ma.mbg.dimension.utils.DimUtils.transScenarioNumber(ctx, dimension);
/* 描述:处理版本维度编码  */
com.kingdee.eas.ma.mbg.dimension.utils.DimUtils.transVersionNumber(ctx, dimension);
/* 描述:处理维度成员的MDX编码转换 */
com.kingdee.eas.ma.mbg.dimension.utils.DimUtils.transMdxMemberNumber(ctx, parameter, dimension);

/* **************************************************************************************************** */
/*
* 描述:设置查询参数的维度及维度成员信息
*/
/* **************************************************************************************************** */
Object obj = com.kingdee.eas.ma.mbg.BgDimensionFacadeFactory.getLocalInstance(ctx).dimQuery(parameter);
//结果是Map -> Key -> 项目公式 + 版本编码
//                  -> Value -> com.kingdee.eas.ma.mbg.common.BgNDataInfo 根据不同的情景类型,数值在budgetValue及ActualValue上

/* **************************************************************************************************** */
/*
* 描述:数据写接口定义(目前这个是关联数据表数据保存的)
*/
/* **************************************************************************************************** */
UserInfo user = ContextUtil.getCurrentUserInfo(ctx);
String _userId = user != null ? user.getId().toString() : null;

String _bgSchemeId = getParameter().getDataManager().getBgScheme().getId().toString();
String _orgUnitId = getParameter().getOrgUnitId().toString();

int dataType = DimensionConstants.DEFAULT_DATA_TYPE;
if (getParameter().getValueType() == DimensionConstants.CFS_TYPE) {
dataType = DimensionConstants.CFS_DATA_TYPE;
} else if (getParameter().getValueType() == DimensionConstants.DAILY_ACTUAL_TYPE || getParameter().getValueType() == DimensionConstants.DAILY_ACTUAL_TYPE_AUDIT) {
dataType = DimensionConstants.ADDACTUAL_DATA_TYPE;
} else {
if (getParameter().getControlManager().isAdjust()) {
dataType = DimensionConstants.ADJUST_DATA_TYPE;
}
}


com.kingdee.eas.ma.mbg.app.data.IMbgDataFacade facade = MbgDataFacade.getInstance(ctx, _userId, _bgSchemeId, dataType);
facade.setCanRemoveData(false);

if (getParameter().getBillId() != null)
facade.setBillId(getParameter().getBillId().toString());
if (getParameter().getUnionId() != null)
facade.setUnionId(getParameter().getUnionId().toString());

ICalcData calcData = null;
for(Iteratoriter=result.values().iterator(); iter.hasNext();) {
calcData = iter.next();

facade.addMbgData(_orgUnitId, calcData.getFormula(), calcData.getBgVersionNumber(), calcData.getValue());
}
facade.submit();




关于WebService开发,参考以下文档:

BOS开发指南_WebService.doc

预算数据结构(二次开发)

预算管理(老预算)预算的数据存储在T_BG_BgData中,主要的字段包括FOrgUnitID(组织ID),FBgSchemeID(方案ID),FFormula(项目公式),FB...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息