#!/bin/bash

echo "=== 为所有LocalDateTime字段添加@JsonFormat注解 ==="
echo

# 获取所有包含LocalDateTime的实体类文件
files=$(find src/main/java -path "*/entity/*" -name "*.java" -exec grep -l "private LocalDateTime" {} \;)

for file in $files; do
    echo "处理文件: $file"
    
    # 检查是否已经导入JsonFormat
    if ! grep -q "import com.fasterxml.jackson.annotation.JsonFormat" "$file"; then
        echo "  添加JsonFormat导入..."
        # 在import部分添加JsonFormat导入
        sed -i '' '/import.*LocalDateTime;/a\
import com.fasterxml.jackson.annotation.JsonFormat;
' "$file"
    fi
    
    # 为没有@JsonFormat注解的LocalDateTime字段添加注解
    echo "  添加@JsonFormat注解..."
    
    # 创建临时文件
    temp_file=$(mktemp)
    
    # 处理文件，为LocalDateTime字段添加@JsonFormat注解
    awk '
    /^[[:space:]]*private LocalDateTime/ {
        # 检查前一行是否已经有@JsonFormat注解
        if (prev_line !~ /@JsonFormat/) {
            # 获取当前行的缩进
            match($0, /^[[:space:]]*/)
            indent = substr($0, RSTART, RLENGTH)
            # 添加@JsonFormat注解
            print indent "@JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")"
        }
        print
        next
    }
    { 
        prev_line = $0
        print 
    }
    ' "$file" > "$temp_file"
    
    # 替换原文件
    mv "$temp_file" "$file"
    
    echo "  完成处理: $file"
done

echo
echo "=== 批量添加@JsonFormat注解完成 ==="

# 统计处理结果
total_files=$(echo "$files" | wc -l)
echo "总共处理了 $total_files 个实体类文件"

echo
echo "请重启应用程序测试效果"
