PMFlow/scripts/daily_task_report.sh

52 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# 每日工单报表脚本
# 用法: ./daily_task_report.sh [feishu_chat_id]
set -e
DATE_STR=$(date -v-1d +%Y-%m-%d 2>/dev/null || date -d "yesterday" +%Y-%m-%d)
CSV_FILE="/tmp/工单报表_${DATE_STR}.csv"
XLSX_FILE="/tmp/工单报表_${DATE_STR}.xlsx"
FEISHU_CHAT_ID="${1:-ou_b6d2d}" # 默认发送给用户
echo "=== 每日工单报表 $(date) ==="
echo "报表日期: ${DATE_STR}"
# 1. 查询工单数据
echo "1. 查询 ${DATE_STR} 工单数据..."
docker exec pmflow-db psql "postgresql://readonly:readonly%40%232025@173.1.1.32:5432/middle_platform" -c "
COPY (
SELECT * FROM plat_task_center.task_instance
WHERE start_time >= DATE '${DATE_STR}'
AND start_time < DATE '${DATE_STR}' + INTERVAL '1 day'
AND ext3 IN ('90101', '901')
ORDER BY start_time DESC
) TO STDOUT WITH CSV HEADER
" > "$CSV_FILE"
RECORD_COUNT=$(wc -l < "$CSV_FILE")
echo " 查询到 $((RECORD_COUNT - 1)) 条记录"
# 2. 转换为 Excel
echo "2. 转换为 Excel..."
python3 << EOF
import pandas as pd
df = pd.read_csv('${CSV_FILE}')
df.to_excel('${XLSX_FILE}', index=False, engine='openpyxl')
print(f" 已生成: ${XLSX_FILE}")
EOF
# 3. 发送到飞书
echo "3. 发送到飞书..."
if command -v openclaw &> /dev/null; then
# 使用 OpenClaw 的 feishu 工具发送
openclaw message send --chat "$FEISHU_CHAT_ID" --file "$XLSX_FILE" 2>/dev/null || \
echo " 请手动配置飞书发送"
else
echo " 文件已生成: ${XLSX_FILE}"
echo " 需要手动发送到飞书"
fi
echo "=== 完成 ==="
echo "文件路径: ${XLSX_FILE}"