程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python电子发票管理工具4:前后端业务逻辑实现

hfteth 2025-01-18 20:04:09 技术文章 13 ℃

用一系列文章介绍如何用python写一个发票管理小工具。

在前面的文章中前端页面和后端框架已经实现,本文将介绍功能实现的代码。

数据库操作

使用sqlalchemy操作sqlite数据库。sqlalchemy对sqlite的增删改查资料很多,使用起来很简单。主要代码分成两个包:model(对应数据库表模型)、dao(数据存取操作)。

以下为创建连接代码:

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import appConfig

engine = create_engine(appConfig.database['url'], echo=appConfig.database['echo'])
Base = declarative_base(engine)
session = sessionmaker(bind=engine)()

pydantic数据校验

fastapi可以使用pydantic类型来作为请求和返回,并且支持参数格式校验。因此,我们可以给数据库表Model创建对应的pydantic类来做数据格式校验(Models - pydantic)。为了在swagger文档中为不同的接口展示不同的请求和响应描述,可以针对不同的接口分别创建pydantic类(https://fastapi.tiangolo.com/tutorial/response-model/#add-an-output-model)。


功能示例

导入发票:支持批量选择发票文件导入,会校验发票抬头是否与设置中的发票抬头一致(没有维护发票抬头则不校验),并校验发票是否重复导入。

导出excel:批量导出发票主要内容。

合并PDF发票:对于pdf格式导入的发票,可以合并pdf,方便打印发票。

提供发票修改、删除、查看(批量导入的才可以查看)功能。

设置有效的发票抬头,设置费用类型。

源码

github:https://github.com/xy12358/my-invoice-folder.git

gitee:https://gitee.com/xinying/my-invoice-folder

Tags:

最近发表
标签列表