# 重启后端服务指南

## 问题确认
后端日志显示执行的 SQL：
```sql
UPDATE vehicle SET license_plate=?, ..., update_time=?, updated_by=? 
WHERE id=? AND is_delete=0
```

**这是旧代码！** 说明后端服务没有重启，还在使用旧的编译版本。

## 解决步骤

### 方法1：IDEA 重启服务（推荐）

1. **停止当前运行的服务**
   - 在 IDEA 底部找到 "Run" 或 "Services" 窗口
   - 找到正在运行的 Spring Boot 应用
   - 点击红色方块按钮 ⬛ 停止服务

2. **清理编译缓存**（可选但推荐）
   - IDEA 菜单：`Build` → `Clean Project`
   - 或者：`Build` → `Rebuild Project`

3. **重新启动服务**
   - 点击绿色三角按钮 ▶️ 启动服务
   - 等待服务启动完成（看到 "Started Application" 日志）

### 方法2：命令行重启

#### Windows PowerShell
```powershell
# 1. 停止后端服务（找到 Java 进程并结束）
tasklist | findstr java
# 记下 PID，例如 21056

# 2. 结束进程
taskkill /F /PID 21056

# 3. 清理并重新编译
cd C:\cattleTransport\tradeCattle
mvn clean package -DskipTests

# 4. 重新启动服务
cd aiotagro-cattle-trade
java -jar target\aiotagro-cattletrade-1.0.1.jar
```

#### Linux/Mac
```bash
# 1. 找到并停止 Java 进程
ps aux | grep java
kill -9 <PID>

# 2. 清理并重新编译
cd /path/to/tradeCattle
mvn clean package -DskipTests

# 3. 重新启动服务
cd aiotagro-cattle-trade
java -jar target/aiotagro-cattletrade-1.0.1.jar
```

### 方法3：使用 Spring Boot DevTools（如果已配置）
如果项目配置了 Spring Boot DevTools：
- 保存文件后会自动重启
- 但完全替换方法时，建议手动重启

## 验证步骤

### 1. 检查后端日志
重启后，后端应该显示新的启动日志：
```
Started Application in X.XXX seconds
```

### 2. 测试删除功能
1. 刷新前端页面（Ctrl+F5）
2. 进入"车辆管理"页面
3. 点击"删除"按钮
4. 观察后端日志

### 3. 期望的日志输出
**新代码应该显示**：
```
[VEHICLE-DELETE] 开始逻辑删除车辆，ID: 3
[VEHICLE-DELETE] 车辆信息 - 车牌号: 鄂A 66662, 当前 is_delete: 0
UPDATE vehicle SET is_delete=1 WHERE id=3
[VEHICLE-DELETE] ✅ 逻辑删除成功，车牌号: 鄂A 66662, 操作人ID: 11
```

**关键点**：
- ✅ SQL 中只有 `SET is_delete=1`
- ✅ 没有更新 `license_plate`, `car_front_photo` 等其他字段
- ✅ 日志显示 `[VEHICLE-DELETE]` 标签

### 4. 验证数据库
```sql
-- 查看该记录
SELECT id, license_plate, is_delete, update_time 
FROM vehicle 
WHERE id = 3;

-- 预期结果：is_delete = 1
```

### 5. 验证前端列表
- ✅ 列表自动刷新
- ✅ 已删除的车辆不再显示
- ✅ 显示"删除成功"提示

## 常见问题

### Q1: 找不到正在运行的服务？
**检查**:
```powershell
# Windows
netstat -ano | findstr :16200
# 查看哪个进程占用了 16200 端口

# 结束进程
taskkill /F /PID <进程ID>
```

### Q2: Maven 编译失败？
**清理并重试**:
```powershell
cd C:\cattleTransport\tradeCattle
mvn clean
mvn compile -DskipTests
```

### Q3: 重启后还是旧代码？
**可能原因**:
1. IDEA 没有自动编译
   - 解决：`Build` → `Rebuild Project`
2. 启动了错误的配置
   - 解决：检查 Run Configuration
3. 类加载器缓存
   - 解决：完全关闭 IDEA 并重新打开

### Q4: 端口被占用？
```powershell
# 查看占用端口的进程
netstat -ano | findstr :16200

# 结束进程
taskkill /F /PID <进程ID>
```

## 快速重启脚本

### Windows (PowerShell)
创建 `restart-backend.ps1`：
```powershell
# 停止后端服务
$process = Get-Process | Where-Object {$_.ProcessName -eq "java" -and $_.MainWindowTitle -like "*cattletrade*"}
if ($process) {
    Stop-Process -Id $process.Id -Force
    Write-Host "已停止后端服务"
}

# 重新编译
cd C:\cattleTransport\tradeCattle
mvn clean compile -DskipTests

# 重新启动（在 IDEA 中手动启动）
Write-Host "编译完成，请在 IDEA 中重新启动服务"
```

运行：
```powershell
powershell -ExecutionPolicy Bypass -File restart-backend.ps1
```

## 总结

✅ **关键步骤**：
1. 停止后端服务
2. 清理编译缓存（可选）
3. 重新启动服务
4. 验证日志输出

✅ **验证标志**：
- 日志显示 `UPDATE vehicle SET is_delete=1`
- 数据库中 `is_delete` 变为 `1`
- 前端列表中记录消失

⚠️ **注意**：
- 必须完全停止旧服务
- 确保编译成功
- 验证新代码是否生效

