HFM深入技术学习系列之四--调用API生成日记账

2024-08-27 14:20

本文主要是介绍HFM深入技术学习系列之四--调用API生成日记账,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

本文描述使用HFM提供的SDK自动生成日记账

介绍

分为三个步骤
1 获得进入HFM的session
2 获得JournalOM
3 使用JournalOM保存日记账

用到的包

fmcommon.jar
fm-web-objectmodel.jar
hssutil.jar

代码示例

获取JournalOM

ISecurityManager tpMNG  = HSSUtilManager.getSecurityManager();
String ssoToken = tpMNG.authenticateUser(USERNAME, PASSWORD);
SessionOM adminSessionOM = new SessionOM();
adminSessionInfo1 = adminSessionOM.createSession(ssoToken, Locale.ENGLISH, HFM_DEV, FINCAPP);
JournalOM adminJournalOM = new JournalOM(adminSessionInfo1);

生成日记账

JSONObject json = (JSONObject) jsonObj;
labels.add((String) json.get("label")) ;
try {journal = journalOM.getJournalByName((String) json.get("label"), (String) json.get("scenario"), (String) json.get("year"), (String) json.get("period"));journalOM.performJournalAction(labels, (String) json.get("scenario"), (String) json.get("year"), (String) json.get("period"), JOURNAL_ACTION.JBA_DELETE);
}
catch (Exception e){System.out.println(e.getMessage());
}
journal.setLabel((String) json.get("label"));
journal.setBalancedType(JOURNAL_BALANCE_TYPE.JBTF_UNBALANCED);
journal.setSecurity((String) json.get("security"));
journal.setType(JOURNAL_TYPE.JTF_REGULAR);
journal.setSingleEntity((String) json.get("singleEntity"));
journal.setSingleParent((String) json.get("singleParent"));
journal.setStatus(JOURNAL_STATUS.JSF_WORKING);
year = new JournalDimension();
period = new JournalDimension();
value = new JournalDimension();
scenario = new JournalDimension();
scenario.setName("Scenario");
scenario.setMember((String) json.get("scenario"));
year.setName("Year");
year.setMember((String) json.get("year"));
period.setName("Period");
period.setMember((String) json.get("period"));
value.setName("Value");
value.setMember((String) json.get("value"));
povs.add(scenario);
povs.add(year);
povs.add(period);
povs.add(value);
JSONArray journalLines = (JSONArray) json.get("lines");
List<JournalLineItem> journalLineItems = new ArrayList<JournalLineItem>();
i=0;
for (Object jsonLineObj : journalLines) {JSONObject jsonLine = (JSONObject) jsonLineObj;entity = new JournalDimension();account = new JournalDimension();icp = new JournalDimension();custom1 = new JournalDimension();custom2 = new JournalDimension();custom3 = new JournalDimension();custom4 = new JournalDimension();journalDimensions = new ArrayList<JournalDimension>();lineItem = new JournalLineItem();entity.setName("Entity");entity.setMember((String) jsonLine.get("entity"));account.setName("Account");account.setMember((String) jsonLine.get("account"));icp.setName("ICP");icp.setMember((String) jsonLine.get("icp"));custom1.setName("Custom1");custom1.setMember((String) jsonLine.get("custom1"));custom2.setName("Custom2");custom2.setMember((String) jsonLine.get("custom2"));custom3.setName("Custom3");custom3.setMember((String) jsonLine.get("custom3"));custom4.setName("Custom4");custom4.setMember((String) jsonLine.get("custom4"));journalDimensions.add(entity);journalDimensions.add(account);journalDimensions.add(icp);journalDimensions.add(custom1);journalDimensions.add(custom2);journalDimensions.add(custom3);journalDimensions.add(custom4);lineItem.setLineItemDimensions(journalDimensions);lineItem.setAmount((String) jsonLine.get("amount"));lineType = (String) jsonLine.get("linetype");if (lineType.equals("dr")) {lineItem.setDebitUnit(DEBIT_CREDIT_UNIT.JE_TYPE_DEBIT);} else {lineItem.setDebitUnit(DEBIT_CREDIT_UNIT.JE_TYPE_CREDIT);}journalLineItems.add(i, lineItem);i++;
}
journal.setPov(povs);
journal.setLineItems(journalLineItems);
journalOM.saveJournal(journal);

这篇关于HFM深入技术学习系列之四--调用API生成日记账的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111911

相关文章

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

python如何调用java的jar包

《python如何调用java的jar包》这篇文章主要为大家详细介绍了python如何调用java的jar包,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录一、安装包二、使用步骤三、代码演示四、自己写一个jar包五、打包步骤六、方法补充一、安装包pip3 install