编辑款式下拉框修复
This commit is contained in:
47
database.py
47
database.py
@@ -32,6 +32,7 @@ class DatabaseManager:
|
||||
CREATE TABLE IF NOT EXISTS fabrics (
|
||||
model TEXT PRIMARY KEY,
|
||||
category TEXT DEFAULT '未分类',
|
||||
fabric_type TEXT,
|
||||
supplier TEXT,
|
||||
color TEXT,
|
||||
width REAL,
|
||||
@@ -47,6 +48,7 @@ class DatabaseManager:
|
||||
|
||||
# 为fabrics表添加索引
|
||||
conn.execute('CREATE INDEX IF NOT EXISTS idx_fabrics_category ON fabrics(category)')
|
||||
conn.execute('CREATE INDEX IF NOT EXISTS idx_fabrics_fabric_type ON fabrics(fabric_type)')
|
||||
conn.execute('CREATE INDEX IF NOT EXISTS idx_fabrics_supplier ON fabrics(supplier)')
|
||||
|
||||
# 衣服款号表
|
||||
@@ -66,6 +68,7 @@ class DatabaseManager:
|
||||
style_number TEXT,
|
||||
category TEXT,
|
||||
fabric_type TEXT,
|
||||
model TEXT,
|
||||
usage_per_piece REAL,
|
||||
unit TEXT DEFAULT '米',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
@@ -77,12 +80,21 @@ class DatabaseManager:
|
||||
# 为garment_materials表添加索引
|
||||
conn.execute('CREATE INDEX IF NOT EXISTS idx_garment_materials_style ON garment_materials(style_number)')
|
||||
conn.execute('CREATE INDEX IF NOT EXISTS idx_garment_materials_category ON garment_materials(category)')
|
||||
conn.execute('CREATE INDEX IF NOT EXISTS idx_garment_materials_model ON garment_materials(model)')
|
||||
|
||||
# 添加新字段(如果不存在)
|
||||
try:
|
||||
conn.execute("ALTER TABLE garment_materials ADD COLUMN fabric_type TEXT")
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
conn.execute("ALTER TABLE garment_materials ADD COLUMN model TEXT")
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
conn.execute("ALTER TABLE fabrics ADD COLUMN fabric_type TEXT")
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
conn.execute("ALTER TABLE fabrics ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP")
|
||||
except:
|
||||
@@ -131,6 +143,21 @@ class DatabaseManager:
|
||||
conn.execute("ALTER TABLE fabric_consumption ADD COLUMN updated_at DATETIME DEFAULT CURRENT_TIMESTAMP")
|
||||
except:
|
||||
pass
|
||||
|
||||
# 数据迁移:将fabrics表中category字段的"类目-类型"格式拆分成两个字段
|
||||
try:
|
||||
cursor = conn.execute("SELECT model, category FROM fabrics WHERE category LIKE '%-%' AND (fabric_type IS NULL OR fabric_type = '')")
|
||||
rows = cursor.fetchall()
|
||||
for model, category in rows:
|
||||
if '-' in category:
|
||||
parts = category.split('-', 1)
|
||||
new_category = parts[0]
|
||||
new_fabric_type = parts[1]
|
||||
conn.execute("UPDATE fabrics SET category = ?, fabric_type = ? WHERE model = ?",
|
||||
(new_category, new_fabric_type, model))
|
||||
conn.commit()
|
||||
except:
|
||||
pass
|
||||
|
||||
# 管理员设置表
|
||||
conn.execute('''
|
||||
@@ -246,14 +273,10 @@ def get_fabric_categories(db_path):
|
||||
try:
|
||||
with get_db_connection(db_path) as conn:
|
||||
cursor = conn.execute("""
|
||||
SELECT DISTINCT
|
||||
CASE
|
||||
WHEN category LIKE '%-%' THEN SUBSTR(category, 1, INSTR(category, '-') - 1)
|
||||
ELSE category
|
||||
END as major_category
|
||||
SELECT DISTINCT category
|
||||
FROM fabrics
|
||||
WHERE category IS NOT NULL AND category != ''
|
||||
ORDER BY major_category
|
||||
ORDER BY category
|
||||
""")
|
||||
categories = set()
|
||||
for row in cursor.fetchall():
|
||||
@@ -272,19 +295,15 @@ def get_fabric_types_by_category(db_path, category):
|
||||
try:
|
||||
with get_db_connection(db_path) as conn:
|
||||
cursor = conn.execute("""
|
||||
SELECT DISTINCT
|
||||
CASE
|
||||
WHEN category LIKE '%-%' THEN SUBSTR(category, INSTR(category, '-') + 1)
|
||||
ELSE '默认类型'
|
||||
END as fabric_type
|
||||
SELECT DISTINCT fabric_type
|
||||
FROM fabrics
|
||||
WHERE category LIKE ? OR category = ?
|
||||
WHERE category = ? AND fabric_type IS NOT NULL AND fabric_type != ''
|
||||
ORDER BY fabric_type
|
||||
""", (f"{category}-%", category))
|
||||
""", (category,))
|
||||
|
||||
types = []
|
||||
for row in cursor.fetchall():
|
||||
if row[0] and row[0] != '默认类型':
|
||||
if row[0] and row[0].strip():
|
||||
types.append(row[0])
|
||||
return types
|
||||
except:
|
||||
|
||||
Reference in New Issue
Block a user