#!/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}"