|
@@ -15,7 +15,7 @@ class MysqlStore:
|
|
|
def insert_standard(self, data: StandardModel) -> bool:
|
|
|
try:
|
|
|
sql = """
|
|
|
- REPLACE INTO standard_data (book_number, quota_number, quota_name, work_content, unit, basic_quota, base_price, unit_weight, labor_cost, material_cost, machine_cost, main_material, created_at)
|
|
|
+ INSERT INTO standard_data (book_number, quota_number, quota_name, work_content, unit, basic_quota, base_price, unit_weight, labor_cost, material_cost, machine_cost, main_material, created_at)
|
|
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
|
|
"""
|
|
|
with self._db_helper as db:
|
|
@@ -41,22 +41,38 @@ class MysqlStore:
|
|
|
def insert_standard_batch(self, data_list: list[StandardModel]) -> bool:
|
|
|
try:
|
|
|
sql = """
|
|
|
- REPLACE INTO standard_data (book_number, quota_number, quota_name, work_content, unit, basic_quota, base_price, unit_weight, labor_cost, material_cost, machine_cost, main_material, created_at)
|
|
|
+ INSERT INTO standard_data (book_number, quota_number, quota_name, work_content, unit, basic_quota, base_price, unit_weight, labor_cost, material_cost, machine_cost, main_material, created_at)
|
|
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
|
|
"""
|
|
|
- insert_params = [(data.book_number, data.quota_number, data.quota_name, data.work_content, data.unit, data.basic_quota, data.base_price, data.unit_weight, data.labor_cost, data.material_cost, data.machine_cost, data.main_material, datetime.now()) for data in data_list]
|
|
|
- with self._db_helper as db:
|
|
|
- db.execute_many(sql, insert_params)
|
|
|
- return True
|
|
|
+ insert_params = [(
|
|
|
+ data.book_number,
|
|
|
+ data.quota_number,
|
|
|
+ data.quota_name,
|
|
|
+ data.work_content,
|
|
|
+ data.unit,
|
|
|
+ data.basic_quota,
|
|
|
+ data.base_price,
|
|
|
+ data.unit_weight,
|
|
|
+ data.labor_cost,
|
|
|
+ data.material_cost,
|
|
|
+ data.machine_cost,
|
|
|
+ data.main_material,
|
|
|
+ datetime.now()
|
|
|
+ ) for data in data_list]
|
|
|
+ self._db_helper.execute_many(sql, insert_params)
|
|
|
except Exception as e:
|
|
|
self._logger.error(f"Error inserting standard batch: {str(e)}")
|
|
|
return False
|
|
|
- def query_standard_group_by_book(self) -> dict:
|
|
|
+ def query_standard_group_by_book(self):
|
|
|
sql = """
|
|
|
- SELECT book_number
|
|
|
- FROM standard_data
|
|
|
- GROUP BY book_number
|
|
|
- ORDER BY book_number
|
|
|
+ WITH grouped_data AS (
|
|
|
+ SELECT DISTINCT book_number
|
|
|
+ FROM standard_data
|
|
|
+ )
|
|
|
+ SELECT id, book_number, quota_number, quota_name, work_content, unit, basic_quota, base_price, unit_weight, labor_cost, material_cost, machine_cost, main_material
|
|
|
+ FROM standard_data sd
|
|
|
+ INNER JOIN grouped_data gd ON sd.book_number = gd.book_number
|
|
|
+ ORDER BY sd.book_number, sd.quota_number
|
|
|
"""
|
|
|
with self._db_helper:
|
|
|
result = self._db_helper.execute_query(sql)
|
|
@@ -69,24 +85,7 @@ class MysqlStore:
|
|
|
book_number = row['book_number']
|
|
|
if book_number not in grouped_data:
|
|
|
grouped_data[book_number] = []
|
|
|
-
|
|
|
- # 由于只按book_number分组,其他字段无法从这里获取,需要重新查询
|
|
|
- standards = self.query_standards_by_book_number(book_number)
|
|
|
- grouped_data[book_number].extend(standards)
|
|
|
-
|
|
|
- return grouped_data
|
|
|
-
|
|
|
- def query_standards_by_book_number(self, book_number: str) -> list[StandardModel]:
|
|
|
- sql = """
|
|
|
- SELECT book_number, quota_number, quota_name, work_content, unit, basic_quota, base_price, unit_weight, labor_cost, material_cost, machine_cost, main_material
|
|
|
- FROM standard_data
|
|
|
- WHERE book_number = %s
|
|
|
- ORDER BY quota_number
|
|
|
- """
|
|
|
- with self._db_helper:
|
|
|
- result = self._db_helper.execute_query(sql, (book_number,))
|
|
|
- standards = []
|
|
|
- for row in result:
|
|
|
+
|
|
|
standard = StandardModel(
|
|
|
book_number=row['book_number'],
|
|
|
quota_number=row['quota_number'],
|
|
@@ -100,6 +99,8 @@ class MysqlStore:
|
|
|
material_cost=row['material_cost'],
|
|
|
machine_cost=row['machine_cost'],
|
|
|
main_material=row['main_material'],
|
|
|
+ data_id=row['id']
|
|
|
)
|
|
|
- standards.append(standard)
|
|
|
- return standards
|
|
|
+ grouped_data[book_number].append(standard)
|
|
|
+
|
|
|
+ return grouped_data
|