【乐企板式文件生成工程】关于乐企板式文件(PDF/OFD/XML)生成工程介绍

1、摘要

乐企文件生成是一项重中之重的工作,但是单纯根据乐企文档去实现文件生成的话,是一项非常耗时且实现的效果并不一定很好的方式,目前【乐企文件生成工程】支持单独部署、支持多种文件类型(PDF、OFD、XML)、支持多类型发票(成品油、稀土、农产品、货物运输、旅客运输、不动产租赁、不动产销售、建筑服务)

2、发票文件生成方式有两种思路:

1、根据已有的OFD模板,动态替换ofd模板内容;之后将ofd转pdf(局限:单行问题不大)
可在【乐企】专栏查看详细代码详情可以在此处了解【乐企】有关乐企能力测试接口对接-基础版(详细)
2、根据html模板动态占位:该工程就是这种方式 ,目前效果良好,可看下图。
源码获取方式: 点击下方公众号,加作者微信获取代码版本信息

目前已经支持类型如下:

  • 数电专单行、多行;
  • 数电普单行、多行;
  • 成品油类型发票-专/普 单、多
  • 稀土类型发票-专/普 单、多
  • 货物运输-专-单行、多行;
  • 货物运输-普-单行、多行;
  • 旅客运输-专-单行、多行;
  • 旅客运输-普-单行、多行;
  • 不动产租赁-专
  • 不动产租赁-普

亮点一:操作简单,支持本地存储以及云存储

只需要切换配置文件中的文件开启方式即可~(case如下)

java 复制代码
# 本地文件系统
file:
  local:
    enable: true  #这里如果是true 则按照本地文件路径存储
    basePath: /Users/yanjun.hou/Downloads/files

  # 云存储文件系统
  oss:
    enable: false #这里如果是true 则按照OSS方式存储
    endpoint: "" #对象存储服务的URL
    customDomain: "" #自定义域名
    appId: "" #应用ID
    region: "" #区域
    accessKey: ""
    secretKey: ""

亮点二:无需二次实体映射,直接按照乐企官方文档的JSON报文传输即可实现PDF、OFD、XML三种文件的生成!

java 复制代码
{
    "ptbh": "ptbh-111222333",
    "bz": "这个是备注信息,销售方地址:北京市区朝阳区南京街道,销售方电话:这个是销售方3213213121122 购买方地址:这个是购买方地址,苏州市吴中区郭巷街道,新时代撒,购买方电话:这个是购买方电话,3123213213",
    "fphm": "24123421232324342484",
    "fppz": "01",
    "gmfmc": "购买方名称",
    "gmfnsrsbh": "31232198381273982",
    "hjje": 100,
    "hjse": 10,
    "jshj": 110,
    "kpr": "开票人",
    "kprq": "2024-10-19 17:22:06",
    "lzfpbz": "0",
    "qyDm": "11100",
    "tdys": "03",
    "xsfmc": "销售方名称",
    "xsfnsrsbh": "32131287869082372",
    "jzfwtdys": {
        "tdzzsxmbh": "tdzzsxmbh",
        "kdsbz": "N"
    },
    "fpmxList": [
        {
            "jzfwfsd":"建筑服务发生地",
            "jzxmmc":"建筑项目名称",
            "mxxh": 1,
            "dj": "100",
            "dw": "单位",
            "ggxh": "92",
            "hwhyslwfwmc": "*测试*测试商品",
            "sphfwssflhbbm": "11111",
            "xmmc": "测试商品",
            "spfwjc": "测试",
            "hsje": "110",
            "je": "100",
            "se": "10",
            "sl": "1",
            "slv": "0.1",
            "fphxz": "01"
        }
    ]
}

亮点三:切换tdys即可实现不同票种动态生成~


java 复制代码
//一个入口,实现所有发票票种实现~
invoiceFileFactory.getInvoiceFileService(baseUploadInvoiceReq.getTdys()).makeInvoiceFile(baseUploadInvoiceReq);

实现效果

增值税专用发票--单行

增值税普通发票--单行

增值税专用发票--多行

增值税普通发票--多行

增值税专/普/多行 稀土

增值税专/普/多行 成品油

货物运输-(专普票都支持)单行

货物运输(专普票都支持)-多行

不动产租赁

旅客运输(身份信息未做加密处理,可以自己针对出生日期进行分段加密)

项目结构说明

lq-Invoice-project

├── common-oss#文件工程

│ ├── src

│ │ ├── main

│ │ │ ├── java

│ │ │ │ └── com.lq.file

│ │ │ │ ├── core #文件核心包:配置文件读取、操作模板方法定义

│ │ │ │ ├── local # 本地文件存储方式实现

│ │ │ │ ├── oss # OSS文件存储方式实现(支持aws)

│ │ │ │ └── utils

│ │ │ │ └── FileAutoConfiguration.java

│ │ │ └── resources

│ ├── pom.xml

└── lq-invoice#乐企工程

├── src

│ ├── main

│ │ ├── java

│ │ │ └── com.lq.invoice

│ │ │ ├── controller

│ │ │ ├── domain

│ │ │ ├── enums

│ │ │ ├── exception

│ │ │ ├── factory

│ │ │ ├── service

│ │ │ └── util

│ └── resources

└── pom.xml

common-oss模块

application.yml

xml 复制代码
# 本地文件系统
file:
  local:
    enable: true
    basePath: /Users/yanjun.hou/Downloads/files

  # 云存储文件系统
  oss:
    enable: false
    endpoint: "" #对象存储服务的URL
    customDomain: "" #自定义域名
    appId: "" #应用ID
    region: "" #区域
    accessKey: ""
    secretKey: ""

根据注解ConditionalOnProperty动态选择文件上传实现方式,默认本地

项目支持:

1、沙箱环境/正式环境测试

2、文件生成

其中:file文件夹下的数据是关于文件生成的实现

impl文件夹下的数据是关于乐企业务接口的具体实现。

业务实现大致如下:

文件实现大致如下:


  • 乐企接口

  • 乐企API对接

  • 乐企沙箱测试

  • 乐企电子发票

  • 乐企板式文件生成

相关推荐
一杯科技拿铁10 小时前
从 XML 到 JSON,再到 CBOR:数据交换格式的演进之路
xml·json
fareast_mzh11 小时前
Remove anti-piracy XML in media (.mp4,.mkv) files using ffmpeg, mkvproedit
xml·ffmpeg·反反盗版
Mr Aokey11 小时前
注解退散!纯XML打造MyBatis持久层的终极形态
xml·java·mybatis
_oP_i17 小时前
wps创建编辑excel customHeight 属性不是标准 Excel Open XML导致比对异常
xml·excel·wps
.m21 小时前
Word怎样转换为PDF
pdf
Data-Miner21 小时前
417页PDF | 2025年“人工智能+”行业标杆案例荟萃
人工智能·pdf
liunim901 天前
linux服务器上word转pdf后乱码问题
linux·服务器·pdf
2301_787725651 天前
PPT 转高精度 PDF API 接口
pdf·powerpoint
hbh112233abc1 天前
PDF源码解析
pdf