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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2