1、摘要
乐企文件生成是一项重中之重的工作,但是单纯根据乐企文档去实现文件生成的话,是一项非常耗时且实现的效果并不一定很好的方式,目前【乐企文件生成工程】支持单独部署、支持多种文件类型(PDF、OFD、XML)、支持多类型发票(成品油、稀土、农产品、货物运输、旅客运输、不动产租赁、不动产销售、建筑服务)
2、发票文件生成方式有两种思路:
1、根据已有的OFD模板,动态替换ofd模板内容;之后将ofd转pdf(局限:单行问题不大)
可在【乐企】专栏查看详细代码
详情可以在此处了解【乐企】有关乐企能力测试接口对接-基础版(详细)
2、根据html模板动态占位:该工程就是这种方式 ,目前效果良好,可看下图。
源码获取方式: 点击下方公众号,加作者微信获取代码版本信息
目前已经支持类型如下:
- 数电专单行、多行;
- 数电普单行、多行;
- 成品油类型发票-专/普 单、多
- 稀土类型发票-专/普 单、多
- 货物运输-专-单行、多行;
- 货物运输-普-单行、多行;
- 旅客运输-专-单行、多行;
- 旅客运输-普-单行、多行;
- 不动产租赁-专
- 不动产租赁-普
亮点一:操作简单,支持本地存储以及云存储
只需要切换配置文件中的文件开启方式即可~(case如下)
# 本地文件系统
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
三种文件的生成!
{
"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即可实现不同票种动态生成~
//一个入口,实现所有发票票种实现~
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
# 本地文件系统
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对接
乐企沙箱测试
乐企电子发票
乐企板式文件生成