Files
zentao-flow/tmp/chenhao_verify.py
T

39 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
import io, sys, pymysql
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
conn = pymysql.connect(host='192.168.1.161', user='devgps', password='dev@2021GPS',
database='zentao_dev_2026', charset='utf8mb4')
cur = conn.cursor()
def q(sql):
cur.execute(sql); return cur.fetchall()
prods = [r[0] for r in q("SELECT id FROM zt_product WHERE program=139")]
prod_in = ','.join(map(str, prods))
projs = [r[0] for r in q(f"SELECT DISTINCT project FROM zt_projectproduct WHERE product IN ({prod_in})")]
proj_in = ','.join(map(str, projs))
execs = [r[0] for r in q(f"SELECT DISTINCT execution FROM zt_executionproject WHERE project IN ({proj_in})")]
# 当月窗口内(begin 或 end 落 6 月,同 getTeamAccountByExecutionIds)
exec_in = ','.join(map(str, execs))
win = [r[0] for r in q(f"""SELECT id FROM zt_project WHERE id IN ({exec_in}) AND deleted='0'
AND ((begin>='2026-06-01' AND begin<='2026-06-30') OR (end>='2026-06-01' AND end<='2026-06-30'))""")]
print("6月在窗执行:", win)
win_in = ','.join(map(str, win)) or '0'
memb = q(f"SELECT DISTINCT account FROM zt_team WHERE type='execution' AND root IN ({win_in})")
accs = [m[0] for m in memb]
acc_in = ','.join(f"'{a}'" for a in accs) or "''"
kfz = q(f"SELECT account, nickname FROM zt_user WHERE account IN ({acc_in}) AND user_type=3 AND deleted='0'")
print(f"团队 KFZ 成员 {len(kfz)} 人:", [k[1] for k in kfz])
names = [k[1] for k in kfz]
name_in = ','.join(f"'{n}'" for n in names) or "''"
lv = q(f"""SELECT SUM(a.apply_days) FROM os_system.it_approval a WHERE a.name IN ({name_in})
AND ((date(a.apply_time_start) BETWEEN '2026-06-01' AND '2026-06-30') OR (date(a.apply_time_end) BETWEEN '2026-06-01' AND '2026-06-30'))""")[0][0]
lv = float(lv or 0)
print(f"团队请假 {lv}h → {lv/8} 天")
wd, n = 22, len(kfz)
target = (wd*n - lv/8)*5/n if n else 0
consumed = 126.0
rate = consumed/target*100 if target else 0
print(f"\n陈浩(139 车服): 团队 {n} 人, 达标工时=({wd}×{n}−{lv}/8)×5÷{n} = {target:.2f}h, consumed={consumed} → {rate:.1f}% → 得分 {20 if rate>=100 else max(0,20-int(100-rate)*2)}")