# 农事任务 - 历史与统计功能完整开发文档

## 更新日期
2025-01-20

## 功能概述

完整开发了**农事任务—历史与统计**功能，实现了任务自动归档、多维度查询和三大统计报表生成功能。

## 核心功能

### 1. 自动归档机制 ✅

#### 归档规则
- **自动归档**：所有状态为"已完成"的任务自动归档
- **永久保存**：归档任务永久保存，支持历史查询
- **数据完整**：保留任务的所有信息（基本信息、工时、农资、执行人员等）

#### 归档统计概览
四大核心指标实时统计：
- **归档任务总数**：显示已完成任务数量
- **总工时**：累计所有已完成任务的工时
- **总成本**：基于工时估算的总成本（50元/小时）
- **涉及地块**：统计涉及的地块数量

### 2. 多维度组合查询 ✅

#### 查询维度（6个）
1. **地块**：选择特定地块（东区1号地、西区2号地、南区3号地等）
2. **作物**：按作物类型筛选（水稻、玉米、蔬菜等）
3. **人员**：按执行人员筛选（张三、李四、王五等）
4. **任务类型**：按操作类型筛选（播种、施肥、灌溉、除草、病虫害防治、采收）
5. **开始日期**：设置查询的起始日期
6. **结束日期**：设置查询的截止日期

#### 查询特性
- **组合筛选**：支持多个条件同时筛选
- **实时结果**：筛选后立即显示符合条件的记录数
- **重置功能**：一键清除所有筛选条件
- **结果统计**：显示"筛选结果：X 条记录"

#### 使用示例
- 查询"张三在东区1号地完成的所有水稻播种任务"
- 查询"2024年3月1日至3月31日的所有任务"
- 查询"李四完成的所有施肥任务"

### 3. 归档任务明细列表 ✅

#### 列表展示内容
每条归档任务显示：
- **任务名称**：如"东区1号地水稻播种"
- **任务类型**：带颜色标识的任务类型徽章
- **完成状态**：绿色"已完成"徽章
- **地块信息**：地块名称
- **执行人员**：负责人姓名
- **工时信息**：实际/计划工时
- **农资数量**：使用的农资种类数
- **完成日期**：实际完成日期
- **查看详情**：点击可查看完整任务信息

#### 列表特性
- **滚动加载**：最大高度限制，支持滚动查看
- **悬停效果**：鼠标悬停显示阴影
- **空状态提示**：无数据时显示友好提示
- **快速访问**：一键查看任务详情

### 4. 三大统计报表 ✅

#### 4.1 成本核算报表

**用途**：用于成本分析和财务核算

**统计维度**：
- 人工成本（基于工时，50元/小时）
- 农资成本（基于农资用量和单价）
- 总成本（人工 + 农资）

**报表汇总**：
- 总人工成本
- 总农资成本
- 总成本
- 任务数量

**明细表格包含**：
| 字段 | 说明 |
|------|------|
| 任务名称 | 完整任务名称 |
| 地块 | 执行地块 |
| 执行人 | 负责人 |
| 工时 | 实际工时 |
| 人工成本 | 工时 × 50元 |
| 农资成本 | 各农资成本汇总 |
| 总成本 | 人工 + 农资 |
| 完成日期 | 实际完成日期 |

**成本计算规则**：
- 人工成本 = 工时 × 50元/小时
- 农资成本 = Σ(农资数量 × 单价)
  - 固体（kg）：5元/kg
  - 液体（L）：10元/L
  - 其他：20元/单位

#### 4.2 绩效考评报表

**用途**：用于人员绩效考核和奖励评定

**统计维度**：
- 完成任务数
- 总工时
- 平均工时（每任务）
- 工作效率

**报表汇总**：
- 参与人员数
- 完成任务总数
- 总工时
- 平均效率

**明细表格包含**：
| 字段 | 说明 | 计算方法 |
|------|------|----------|
| 人员 | 姓名 | - |
| 完成任务数 | 个数 | 统计该人员完成的任务 |
| 总工时 | 小时 | 累计所有任务工时 |
| 平均工时 | h/任务 | 总工时 / 任务数 |
| 工作效率 | 数值 | 任务数 / (总工时 / 8) |
| 绩效评价 | 等级 | 见下方 |

**效率评价标准**：
- **优秀**（绿色）：效率 ≥ 1.2（高于平均水平20%）
- **良好**（蓝色）：0.8 ≤ 效率 < 1.2（正常水平）
- **合格**（黄色）：效率 < 0.8（需改进）

**效率计算说明**：
- 基准：每8小时完成1个任务
- 公式：工作效率 = 完成任务数 / (总工时 / 8)
- 示例：16小时完成3个任务，效率 = 3 / (16/8) = 1.5（优秀）

#### 4.3 生产追溯报表

**用途**：用于农产品质量追溯和生产过程管理

**统计维度**：
- 按地块分组
- 作业时间顺序
- 完整操作历史

**报表汇总**：
- 地块数量
- 作业记录总数
- 操作类型数
- 涉及作物种类

**追溯信息结构**：
每个地块包含：
- **地块基本信息**
  - 地块名称
  - 种植作物
  - 作业次数
- **完整作业历史**（按时间排序）
  - 操作类型
  - 任务名称
  - 执行人
  - 完成日期
  - 工时

**应用场景**：
- 农产品溯源查询
- 生产过程审计
- 质量问题追溯
- 生产规范检查

### 5. 数据可视化 ✅

#### 饼图：归档任务类型分布
- 展示各类型任务的占比
- 百分比标签
- 彩色区分

#### 折线图：任务完成趋势
- 完成任务趋势线（绿色）
- 新增任务趋势线（蓝色）
- 时间轴展示

## 技术实现

### 数据结构

```typescript
// 归档任务（已完成的任务）
const archivedTasks = tasks.filter(t => t.status === '已完成');

// 筛选状态
const [statisticsFilters, setStatisticsFilters] = useState({
  fieldId: '',          // 地块ID
  crop: '',             // 作物
  assignedTo: '',       // 执行人
  startDate: '',        // 开始日期
  endDate: '',          // 结束日期
  taskType: '',         // 任务类型
});

// 报表类型
type ReportType = 'cost' | 'performance' | 'traceability';
```

### 核心函数

```typescript
// 1. 成本核算报表生成
const generateCostReport = () => {
  return filteredArchivedTasks.map(task => ({
    taskName: task.name,
    fieldName: task.fieldName,
    executor: task.assignedTo,
    laborCost: (task.actualHours || task.estimatedHours) * 50,
    materialCost: task.materials.reduce(...),
    totalCost: laborCost + materialCost,
    workHours: task.actualHours || task.estimatedHours,
    completedDate: task.actualEndDate || task.plannedEndDate,
  }));
};

// 2. 绩效考评报表生成
const generatePerformanceReport = () => {
  // 按人员分组统计
  const performanceByPerson = {};
  filteredArchivedTasks.forEach(task => {
    // 累计任务数、工时
    // 计算平均工时、效率
  });
  return Object.values(performanceByPerson);
};

// 3. 生产追溯报表生成
const generateTraceabilityReport = () => {
  // 按地块分组
  const traceByField = {};
  filteredArchivedTasks.forEach(task => {
    // 按时间排序
  });
  return Object.entries(traceByField).map(...);
};
```

### 多维度筛选逻辑

```typescript
const filteredArchivedTasks = archivedTasks.filter(t => {
  if (statisticsFilters.fieldId && t.fieldId !== statisticsFilters.fieldId) 
    return false;
  if (statisticsFilters.crop && t.crop !== statisticsFilters.crop) 
    return false;
  if (statisticsFilters.assignedTo && t.assignedTo !== statisticsFilters.assignedTo) 
    return false;
  if (statisticsFilters.taskType && t.type !== statisticsFilters.taskType) 
    return false;
  if (statisticsFilters.startDate && t.actualEndDate < statisticsFilters.startDate) 
    return false;
  if (statisticsFilters.endDate && t.actualEndDate > statisticsFilters.endDate) 
    return false;
  return true;
});
```

## 使用指南

### 访问路径
农事任务 > 历史与统计

### 基本操作流程

#### 1. 查看归档任务概览
进入页面后，页面顶部自动显示：
- 归档任务总数
- 总工时
- 总成本
- 涉及地块数

#### 2. 多维度筛选
1. 在"多维度组合查询"卡片中选择筛选条件
2. 可选择地块、作物、人员、任务类型、时间范围
3. 支持多个条件组合
4. 实时显示筛选结果数量
5. 点击"重置筛选"清除所有条件

#### 3. 查看归档任务明细
- 在"归档任务明细"列表中查看所有符合条件的任务
- 点击"查看详情"查看任务完整信息
- 支持滚动查看更多任务

#### 4. 生成统计报表

##### 成本核算报表
1. 点击黄色"成本核算报表"卡片中的"生成报表"按钮
2. 弹出对话框显示：
   - 成本汇总（人工、农资、总成本、任务数）
   - 详细明细表格
3. 点击"下载报表"导出数据

##### 绩效考评报表
1. 点击绿色"绩效考评报表"卡片中的"生成报表"按钮
2. 弹出对话框显示：
   - 绩效汇总（人员数、任务数、工时、平均效率）
   - 人员绩效明细表格
   - 绩效评价等级
3. 点击"下载报表"导出数据

##### 生产追溯报表
1. 点击蓝色"生产追溯报表"卡片中的"生成报表"按钮
2. 弹出对话框显示：
   - 追溯汇总（地块数、记录数、操作类型、作物）
   - 按地块分组的完整作业历史
3. 点击"下载报表"导出数据

## 应用场景

### 场景1：月度成本核算
**需求**：统计本月所有地块的人工和农资成本

**操作**：
1. 设置时间范围：2024-03-01 至 2024-03-31
2. 点击"成本核算报表"
3. 查看汇总成本和明细
4. 下载报表提交财务部门

### 场景2：人员绩效考评
**需求**：评估本季度各作业人员的工作表现

**操作**：
1. 设置时间范围：2024-01-01 至 2024-03-31
2. 点击"绩效考评报表"
3. 查看各人员的完成量和效率
4. 根据绩效等级发放奖金

### 场景3：农产品追溯
**需求**：某批次农产品出现质量问题，需要追溯生产过程

**操作**：
1. 选择问题产品的地块
2. 选择对应的作物
3. 点击"生产追溯报表"
4. 查看该地块的完整作业历史
5. 定位问题环节

### 场景4：地块作业历史查询
**需求**：查看某个地块本年度的所有操作记录

**操作**：
1. 选择目标地块（如"东区1号地"）
2. 设置时间范围为本年度
3. 在"归档任务明细"中查看所有记录
4. 点击详情查看具体操作信息

### 场景5：作物种植成本分析
**需求**：分析水稻种植的总成本

**操作**：
1. 选择作物：水稻
2. 点击"成本核算报表"
3. 查看水稻相关任务的成本明细
4. 分析人工和农资成本占比

## UI设计亮点

### 1. 渐变色卡片
四个统计卡片使用渐变色背景：
- 绿色：归档任务总数（成功感）
- 蓝色：总工时（专业感）
- 黄色：总成本（金钱感）
- 紫色：涉及地块（空间感）

### 2. 颜色编码系统
报表卡片颜色与内容对应：
- 黄色：成本核算（金钱相关）
- 绿色：绩效考评（正向激励）
- 蓝色：生产追溯（信息查询）

### 3. 数据密度优化
- 概览卡片：大字号数字，一目了然
- 筛选器：6个条件横向排列，紧凑高效
- 列表视图：5列信息网格，信息丰富
- 报表表格：固定表头，支持滚动

### 4. 交互反馈
- 筛选实时显示结果数量
- 卡片悬停阴影效果
- 按钮点击即时响应
- 空状态友好提示

## 数据示例

### 成本核算报表示例
```
成本汇总：
- 人工成本：¥5,500
- 农资成本：¥92,640
- 总成本：¥98,140
- 任务数量：5

明细（示例）：
任务名称：东区1号地水稻播种
地块：东区1号地
执行人：张三
工时：22h
人工成本：¥1,100
农资成本：¥887
总成本：¥1,987
完成日期：2024-03-02
```

### 绩效考评报表示例
```
绩效汇总：
- 参与人员：3人
- 完成任务：5个
- 总工时：55h
- 平均效率：0.73

明细（示例）：
人员：张三
完成任务数：2
总工时：27.0h
平均工时：13.5h/任务
工作效率：0.59
绩效评价：合格
```

### 生产追溯报表示例
```
追溯汇总：
- 地块数量：3块
- 作业记录：5条
- 操作类型：3种
- 涉及作物：2种

东区1号地（水稻）- 2次作业：
1. [播种] 东区1号地水稻播种 - 执行人：张三 - 2024-03-02 - 22h
2. [施肥] 东区1号地追肥 - 执行人：李四 - 2024-03-15 - 8h
```

## 注意事项

1. **归档条件**：只有状态为"已完成"的任务才会被归档
2. **时间筛选**：基于任务的实际完成日期，如无实际日期则使用计划日期
3. **成本计算**：当前使用固定单价估算，实际应用需配置真实价格
4. **效率评价**：基于8小时/任务的基准，不同任务类型可能需要不同基准
5. **数据导出**：当前为模拟导出，实际需要后端支持Excel/PDF生成

## 后续优化建议

1. **成本配置**：
   - 支持自定义人工单价
   - 支持按人员设置不同工资标准
   - 农资价格动态配置

2. **报表扩展**：
   - 支持自定义报表字段
   - 多种图表类型（柱状图、雷达图等）
   - 报表模板管理

3. **导出功能**：
   - 真实的Excel导出
   - PDF格式报表
   - 支持打印预览

4. **高级筛选**：
   - 保存常用筛选条件
   - 筛选条件预设
   - 快速筛选按钮

5. **数据分析**：
   - 同比环比分析
   - 趋势预测
   - 异常数据标记

6. **权限控制**：
   - 不同角色查看不同报表
   - 敏感数据脱敏
   - 审计日志记录

## 测试建议

### 功能测试
- [ ] 验证归档任务数量统计准确
- [ ] 测试各维度筛选条件
- [ ] 测试多条件组合筛选
- [ ] 验证成本计算准确性
- [ ] 验证绩效计算准确性
- [ ] 验证追溯记录完整性
- [ ] 测试报表对话框显示
- [ ] 测试下载功能提示

### 性能测试
- [ ] 测试大量归档任务的加载速度
- [ ] 测试筛选响应速度
- [ ] 测试报表生成速度
- [ ] 测试滚动列表流畅度

### 兼容性测试
- [ ] Chrome浏览器
- [ ] Firefox浏览器
- [ ] Safari浏览器
- [ ] Edge浏览器

## 总结

农事任务—历史与统计功能已完整开发完成，提供了：
- ✅ 自动归档机制
- ✅ 多维度组合查询（6个维度）
- ✅ 三大统计报表（成本、绩效、追溯）
- ✅ 数据可视化展示
- ✅ 详细的报表对话框
- ✅ 友好的用户界面

该功能可以满足农业生产中的成本核算、绩效考评和产品追溯需求，为农业生产管理提供数据支持。
