Blame view

scripts/py/query_laundry_cost.py 4.08 KB
d9aced6a   “wangming”   优化工资计算逻辑,确保未锁定且未确...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  #!/usr/bin/env python3
  # -*- coding: utf-8 -*-
  """
  查询绿纤明信店202512月毛巾总成本
  """
  
  import pymysql
  from datetime import datetime
  
  # 数据库配置
  DB_CONFIG = {
      'host': 'rm-2vccze142rc9a8f58bo.mysql.cn-chengdu.rds.aliyuncs.com',
      'port': 3306,
      'user': 'lvqiansql',
      'password': 'LvQ1@n!20251211',
      'database': 'lqerp_dev',
      'charset': 'utf8mb4',
      'connect_timeout': 60,
      'read_timeout': 300,
      'write_timeout': 300
  }
  
  def query_laundry_cost():
      """查询绿纤明信店2025年12月毛巾总成本"""
      connection = None
      try:
          connection = pymysql.connect(**DB_CONFIG)
          cursor = connection.cursor(pymysql.cursors.DictCursor)
          
          # 门店ID:绿纤明信店
          store_id = '1649328471923847187'
          month_str = '202512'  # 2025年12月
          
          # 查询总成本
          sql = """
          SELECT 
              F_StoreId as 门店ID,
              SUM(F_TotalPrice) as 毛巾总成本,
              COUNT(*) as 记录数量,
              MIN(COALESCE(F_SendTime, F_CreateTime)) as 最早记录时间,
              MAX(COALESCE(F_SendTime, F_CreateTime)) as 最晚记录时间
          FROM lq_laundry_flow
          WHERE F_IsEffective = 1
              AND F_FlowType = 0
              AND F_StoreId = %s
              AND DATE_FORMAT(COALESCE(F_SendTime, F_CreateTime), '%%Y%%m') = %s
          GROUP BY F_StoreId
          """
          
          cursor.execute(sql, (store_id, month_str))
          result = cursor.fetchone()
          
          if result:
              print("=" * 60)
              print("绿纤明信店 2025年12月 毛巾成本统计")
              print("=" * 60)
              print(f"门店ID: {result['门店ID']}")
              print(f"毛巾总成本: {result['毛巾总成本']:.2f} 元")
              print(f"记录数量: {result['记录数量']} 条")
              print(f"最早记录时间: {result['最早记录时间']}")
              print(f"最晚记录时间: {result['最晚记录时间']}")
              print("=" * 60)
              
              # 查询详细信息
              detail_sql = """
              SELECT 
                  F_Id as 记录ID,
                  F_BatchNumber as 批次号,
                  F_ProductType as 产品类型,
                  F_Quantity as 数量,
                  F_LaundryPrice as 清洗单价,
                  F_TotalPrice as 总费用,
                  F_SendTime as 送出时间,
                  F_CreateTime as 创建时间,
                  COALESCE(F_SendTime, F_CreateTime) as 统计时间
              FROM lq_laundry_flow
              WHERE F_IsEffective = 1
                  AND F_FlowType = 0
                  AND F_StoreId = %s
                  AND DATE_FORMAT(COALESCE(F_SendTime, F_CreateTime), '%%Y%%m') = %s
              ORDER BY COALESCE(F_SendTime, F_CreateTime)
              """
              
              cursor.execute(detail_sql, (store_id, month_str))
              details = cursor.fetchall()
              
              if details:
                  print(f"\n详细记录列表(共{len(details)}条):")
                  print("-" * 100)
                  print(f"{'批次号':<20} {'产品类型':<10} {'数量':<8} {'单价':<10} {'总费用':<12} {'统计时间':<20}")
                  print("-" * 100)
                  for detail in details:
                      print(f"{detail['批次号'] or '':<20} "
                            f"{detail['产品类型'] or '':<10} "
                            f"{detail['数量']:<8} "
                            f"{detail['清洗单价']:<10.2f} "
                            f"{detail['总费用']:<12.2f} "
                            f"{str(detail['统计时间']):<20}")
                  print("-" * 100)
                  print(f"总计: {result['毛巾总成本']:.2f} 元")
          else:
              print(f"未找到绿纤明信店({store_id})2025年12月的毛巾送出记录")
              
          return result
          
      except Exception as e:
          print(f"查询失败: {str(e)}")
          import traceback
          traceback.print_exc()
          return None
      finally:
          if connection:
              connection.close()
  
  if __name__ == '__main__':
      query_laundry_cost()