32 lines
1.6 KiB
Python
32 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""检查微信账单与已导入的支付宝/邮储卡支出的重叠"""
|
|
import json, pymysql, collections
|
|
cfg = json.load(open('db_config.json'))
|
|
conn = pymysql.connect(host=cfg['host'], port=cfg['port'], user=cfg['user'],
|
|
password=cfg.get('password'), database=cfg['database'], charset='utf8mb4')
|
|
cur = conn.cursor()
|
|
cur.execute("""SELECT amount, recorded_date FROM variable_expenses
|
|
WHERE member_id=3 AND recorded_date BETWEEN '2026-01-01' AND '2026-06-30'
|
|
AND (note LIKE '%[支付宝]%' OR note LIKE '%[邮储卡]%')""")
|
|
imported = set()
|
|
for a, d in cur.fetchall():
|
|
imported.add((d.strftime('%Y-%m-%d'), round(float(a), 2)))
|
|
print(f"已导入支付宝+邮储卡支出: {len(imported)}笔")
|
|
|
|
d = json.load(open('/tmp/wx_juaner.json'))
|
|
def fp(s): return float(s)
|
|
wx_pay = [(r[0][:10], round(fp(r[5]), 2), r[1].strip(), r[2], r[6].strip())
|
|
for r in d['records'] if r[4].strip() == '支出']
|
|
overlap = 0; dupe_amt = 0.0; over_pay = collections.Counter()
|
|
for t, amt, typ, peer, pay in wx_pay:
|
|
if (t, amt) in imported:
|
|
overlap += 1; dupe_amt += amt; over_pay[pay] += 1
|
|
print(f"微信支出中与已导入(支付宝/邮储卡)同日同金额重叠: {overlap}笔 ¥{dupe_amt:.2f}")
|
|
print(" 重叠按微信支付方式:", dict(over_pay))
|
|
for pay in ['邮储银行储蓄卡(8719)', '零钱通', '零钱', '徽商银行储蓄卡(1491)']:
|
|
sub = [x for x in wx_pay if x[4] == pay]
|
|
ov = sum(1 for x in sub if (x[0], x[1]) in imported)
|
|
print(f" {pay}: {len(sub)}笔, 其中与已导入重叠 {ov}笔")
|
|
conn.close()
|