add_id_to_salary_excel.py 2.63 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
为健康师工资Excel文件添加ID列
从数据库查询ID,根据员工姓名和门店名称匹配
"""

import openpyxl
import json
import sys
import os

# 数据库查询结果(从之前的查询中获取)
# 这里使用MCP MySQL工具查询的结果
db_records = [
    {"F_Id": "742726471423886597", "F_StoreName": "绿纤华润店", "F_EmployeeName": "王瑞琳"},
    {"F_Id": "742726471453246725", "F_StoreName": "绿纤华润店", "F_EmployeeName": "雷朝霞"},
    {"F_Id": "742726471453246726", "F_StoreName": "绿纤华润店", "F_EmployeeName": "赵玉晓"},
    {"F_Id": "742726471453246727", "F_StoreName": "绿纤川音店", "F_EmployeeName": "贺丽"},
    {"F_Id": "742726471453246728", "F_StoreName": "绿纤红光店", "F_EmployeeName": "包竹梅"},
    # ... 更多记录需要从数据库查询
]

def create_id_mapping_from_db():
    """从数据库创建ID映射字典"""
    # 这里应该从数据库查询,但为了测试,先使用部分数据
    # 实际应该通过MCP MySQL工具查询所有记录
    mapping = {}
    for record in db_records:
        key = (record["F_StoreName"], record["F_EmployeeName"])
        mapping[key] = record["F_Id"]
    return mapping

def add_id_column(excel_path, output_path=None):
    """为Excel文件添加ID列"""
    if output_path is None:
        output_path = excel_path.replace('.xlsx', '_带ID.xlsx')
    
    wb = openpyxl.load_workbook(excel_path)
    ws = wb['健康师工资']
    
    # 创建ID映射(实际应该从数据库查询)
    # 这里先读取Excel数据,准备匹配
    id_mapping = {}
    
    # 读取所有数据行(跳过标题行)
    data_rows = []
    for row_idx, row in enumerate(ws.iter_rows(min_row=2, values_only=True), start=2):
        if len(row) >= 2:
            store_name = str(row[0]).strip() if row[0] else ""
            employee_name = str(row[1]).strip() if len(row) > 1 and row[1] else ""
            data_rows.append((row_idx, store_name, employee_name, row))
    
    print(f"需要匹配的数据行数: {len(data_rows)}")
    
    # 这里需要从数据库查询所有记录的ID映射
    # 由于数据量大,需要分批查询或一次性查询
    print("提示:需要从数据库查询所有记录的ID映射")
    print("可以使用MCP MySQL工具查询: SELECT F_Id, F_StoreName, F_EmployeeName FROM lq_salary_statistics WHERE F_StatisticsMonth = '202509'")
    
    return output_path

if __name__ == "__main__":
    excel_path = "ExportFiles/工资导入/健康师工资_20260109211750.xlsx"
    output_path = add_id_column(excel_path)
    print(f"输出文件: {output_path}")