2025-08-17 13:24:36 +08:00
|
|
|
|
import sqlite3
|
|
|
|
|
|
from sqlite3 import Error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DBService:
|
2025-08-17 22:39:59 +08:00
|
|
|
|
db_file = "verify.db"
|
2025-08-17 13:24:36 +08:00
|
|
|
|
conn = None
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
初始化函数
|
|
|
|
|
|
"""
|
|
|
|
|
|
self.conn = self.get_conn()
|
|
|
|
|
|
print("DBService init")
|
|
|
|
|
|
self.create_file_data_table()
|
|
|
|
|
|
self.create_invoice_table()
|
|
|
|
|
|
self.create_verify_log_table()
|
|
|
|
|
|
pass
|
|
|
|
|
|
def get_conn(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
创建数据库连接
|
|
|
|
|
|
该函数用于创建数据库连接,并返回连接对象
|
|
|
|
|
|
返回值:
|
|
|
|
|
|
连接对象
|
|
|
|
|
|
"""
|
|
|
|
|
|
if self.conn is not None:
|
|
|
|
|
|
return self.conn
|
|
|
|
|
|
try:
|
|
|
|
|
|
self.conn = sqlite3.connect(self.db_file)
|
|
|
|
|
|
except Error as e:
|
|
|
|
|
|
print(e)
|
|
|
|
|
|
return self.conn
|
|
|
|
|
|
def create_verify_log_table(self):
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
创建验证记录表
|
|
|
|
|
|
该函数用于创建表,并返回创建结果
|
|
|
|
|
|
"""
|
|
|
|
|
|
try:
|
|
|
|
|
|
# delete_table_sql = """DROP TABLE IF EXISTS verify_log;"""
|
|
|
|
|
|
# c = self.get_conn().cursor()
|
|
|
|
|
|
# c.execute(delete_table_sql)
|
|
|
|
|
|
create_table_sql = """CREATE TABLE IF NOT EXISTS verify_log (
|
|
|
|
|
|
id integer PRIMARY KEY,
|
|
|
|
|
|
cyjgxx text NOT NULL,
|
|
|
|
|
|
inspectionAmount text NOT NULL,
|
|
|
|
|
|
verify_time text NOT NULL,
|
|
|
|
|
|
file_path text NOT NULL
|
|
|
|
|
|
);"""
|
|
|
|
|
|
c = self.get_conn().cursor()
|
|
|
|
|
|
c.execute(create_table_sql)
|
|
|
|
|
|
except Error as e:
|
|
|
|
|
|
print(e)
|
|
|
|
|
|
# 文件数据表
|
|
|
|
|
|
def create_file_data_table(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
创建文件数据表
|
|
|
|
|
|
该函数用于创建表,并返回创建结果
|
|
|
|
|
|
"""
|
|
|
|
|
|
try:
|
|
|
|
|
|
# delete_table_sql = """DROP TABLE IF EXISTS file_data;"""
|
|
|
|
|
|
# c = self.get_conn().cursor()
|
|
|
|
|
|
# c.execute(delete_table_sql)
|
|
|
|
|
|
create_table_sql = """CREATE TABLE IF NOT EXISTS file_data (
|
|
|
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
|
|
file_name text NOT NULL,
|
|
|
|
|
|
file_path text NOT NULL,
|
|
|
|
|
|
file_size integer NOT NULL,
|
|
|
|
|
|
file_type text NOT NULL,
|
|
|
|
|
|
file_time text NOT NULL,
|
|
|
|
|
|
file_hash text NOT NULL,
|
|
|
|
|
|
UNIQUE (file_hash) -- 联合唯一约束
|
|
|
|
|
|
);"""
|
|
|
|
|
|
c = self.get_conn().cursor()
|
|
|
|
|
|
c.execute(create_table_sql)
|
|
|
|
|
|
self.get_conn().commit()
|
|
|
|
|
|
except Error as e:
|
|
|
|
|
|
print(e)
|
|
|
|
|
|
|
|
|
|
|
|
# 发票数据表
|
|
|
|
|
|
def create_invoice_table(self):
|
|
|
|
|
|
# delete_table_sql = """DROP TABLE IF EXISTS invoice;"""
|
|
|
|
|
|
# c = self.get_conn().cursor()
|
|
|
|
|
|
# c.execute(delete_table_sql)
|
|
|
|
|
|
create_table_sql = """
|
|
|
|
|
|
-- 主表存储发票基本信息
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS invoice (
|
|
|
|
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
|
|
|
checkCode TEXT NOT NULL UNIQUE, -- 校验码(唯一)
|
|
|
|
|
|
drawer TEXT, -- 开票人
|
|
|
|
|
|
formType TEXT, -- 表单类型
|
|
|
|
|
|
invoiceAmountPreTax REAL, -- 税前金额
|
|
|
|
|
|
invoiceCode TEXT NOT NULL, -- 发票代码
|
|
|
|
|
|
invoiceDate TEXT, -- 开票日期
|
|
|
|
|
|
invoiceNumber TEXT NOT NULL, -- 发票号码
|
|
|
|
|
|
invoiceTax REAL, -- 发票税额
|
|
|
|
|
|
invoiceType TEXT, -- 发票类型
|
|
|
|
|
|
machineCode TEXT, -- 机器编号
|
|
|
|
|
|
passwordArea TEXT, -- 密码区
|
|
|
|
|
|
printedInvoiceCode TEXT, -- 打印发票代码
|
|
|
|
|
|
printedInvoiceNumber TEXT, -- 打印发票号码
|
|
|
|
|
|
purchaserBankAccountInfo TEXT, -- 购买方银行信息
|
|
|
|
|
|
purchaserContactInfo TEXT, -- 购买方联系信息
|
|
|
|
|
|
purchaserName TEXT, -- 购买方名称
|
|
|
|
|
|
purchaserTaxNumber TEXT, -- 购买方税号
|
|
|
|
|
|
recipient TEXT, -- 收款人
|
|
|
|
|
|
remarks TEXT, -- 备注
|
|
|
|
|
|
reviewer TEXT, -- 复核人
|
|
|
|
|
|
sellerBankAccountInfo TEXT, -- 销售方银行信息
|
|
|
|
|
|
sellerContactInfo TEXT, -- 销售方联系信息
|
|
|
|
|
|
sellerName TEXT, -- 销售方名称
|
|
|
|
|
|
sellerTaxNumber TEXT, -- 销售方税号
|
|
|
|
|
|
specialTag TEXT, -- 特殊标记
|
|
|
|
|
|
title TEXT, -- 发票标题
|
|
|
|
|
|
totalAmount REAL, -- 合计金额
|
|
|
|
|
|
totalAmountInWords TEXT, -- 大写金额
|
|
|
|
|
|
file_path TEXT, -- 文件哈希
|
|
|
|
|
|
UNIQUE (invoiceCode, invoiceNumber) -- 联合唯一约束
|
|
|
|
|
|
);
|
|
|
|
|
|
"""
|
|
|
|
|
|
try:
|
|
|
|
|
|
c = self.get_conn().cursor()
|
|
|
|
|
|
c.execute(create_table_sql)
|
|
|
|
|
|
except Error as e:
|
|
|
|
|
|
print(e)
|