本文共 2809 字,大约阅读时间需要 9 分钟。
其实,主要是做一点记录!
在项目中,涉及到会计与财务的的内容,在涉及实体时,如资产类,负债类,成本类,损益类,还有权益类,在初期的需求下,
每个实体主要的Field有编号(Id), 科目代码(code), 科目名称(subject)。
由于,需要在数据库中生成相应的数据,一级科目有大量的的子科目,在生成数据库后,可通过数据库添加记录,也可以在程序中
new 出实体并set属性,我觉得这些工作量较大并且全是重复的工作,所以通过读取Properties文件,动态的实例化,并通过JPA持久化实体。
以资产类为例,会计科目有:
1001=库存现金1002=银行存款1015=其他货币资金1121=应收票据 1122=应收账款1123=预付账款1131=应收股利1132=应收利息1231=其他应收款 1241=坏账准备1401=材料采购1402=在途物资1403=原材料1406=库存商品1407=发出商品1412=包装物及低值易耗品1461=存货跌价准备1501=待摊费用1531=长期应收款1601=固定资产1602=累计折旧1603=固定资产减值准备1606=固定资产清理1701=无形资产1702=累计摊销1703=无形资产减值准备1711=商誉1801=长期待摊费用1811=递延所得税资产1901=待处理财产损溢其他科目略
单元测试代码
public void saveSubject() { try { Properties p = new Properties(); Reader reader = new InputStreamReader(this.getClass().getResourceAsStream("group_debts.properties"), "utf-8"); p.load(reader); //保存负债 save(p,DebtGroup.class.getName()); //保存资产 reader = new InputStreamReader(this.getClass().getResourceAsStream("group_assets.properties"), "utf-8"); p.load(reader); save(p,AssetsGroup.class.getName()); //保存成本 reader = new InputStreamReader(this.getClass().getResourceAsStream("group_cost.properties"), "utf-8"); p.load(reader); save(p,CostGroup.class.getName()); //保存权益 reader = new InputStreamReader(this.getClass().getResourceAsStream("group_equity.properties"), "utf-8"); p.load(reader); save(p,OwnersEquity.class.getName()); //保存损益 reader = new InputStreamReader(this.getClass().getResourceAsStream("group_pl.properties"), "utf-8"); p.load(reader); save(p,ProfileLossGroup.class.getName()); } catch (Exception e) { e.printStackTrace(); } } //保存实体,通过泛型保存 void save(Properties p, String str) throws Exception { Set思路是:通过Class.forName(xxx), 加载类, 并通过newInstance单例方法生成一个类对象,再通过反射调用set写方法,并设置属性的值。
记录于此,聊以安慰。
转载地址:http://zrlbi.baihongyu.com/