52 lines
1.5 KiB
Bash
Executable File
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}"
|