# 引江济太填报模块 - 产品需求文档

## Overview
- **Summary**: 实现引江济太填报模块，包含水量数据和水质数据两大功能模块，每个模块提供文件上传、数据展示、条件查询和数据导出功能。
- **Purpose**: 解决引江济太项目中水量和水质数据的批量导入、统一管理和便捷查询需求，支持江苏、上海、浙江三省的数据上报。
- **Target Users**: 太湖流域水环境综合治理信息共享平台的运维人员和数据管理人员。

## Goals
- 实现水量数据的Excel文件上传功能，支持江苏、上海、浙江三省模板
- 实现水量数据的查询展示功能，支持多条件筛选和导出
- 实现水质数据的Excel文件上传功能，支持江苏、上海、浙江三省模板
- 实现水质数据的查询展示功能，支持多条件筛选和导出

## Non-Goals (Out of Scope)
- 数据编辑功能（仅支持导入、查询、导出）
- 实时数据同步功能
- 数据校验规则的复杂配置
- 移动端适配

## Background & Context
- 现有系统已存在引江济太模块目录结构（yjjtgl）
- 已存在水量数据实体类 YjjtSlData 和水质数据实体类 YjjtSzData
- 已存在文件管理实体类 YjjtFile
- 需要在现有基础上增强上传功能和查询条件

## Functional Requirements

### FR-1: 水量数据文件上传
- **FR-1.1**: 支持上传Excel格式的水量数据文件
- **FR-1.2**: 提供三种上传模板：江苏省水量(js-station-sl-model.xlsx)、上海市水量(sh-station-sl-model.xlsx)、浙江省水量(zj-station-sl-model.xlsx)
- **FR-1.3**: 上传文件记录保存到YJJT_FILE表
- **FR-1.4**: 解析Excel数据并存储到YJJT_SL_DATA表

### FR-2: 水量数据查询展示
- **FR-2.1**: 展示导入的水量数据列表（分页）
- **FR-2.2**: 支持按断面名称查询
- **FR-2.3**: 支持按测站编码查询
- **FR-2.4**: 支持按数据来源(ADDVCD)查询：WX(无锡)、JS(江苏)、SH(上海)、ZJ(浙江)
- **FR-2.5**: 支持按监测时间(SPT)时间段查询(YYYY-MM-DD~YYYY-MM-DD)
- **FR-2.6**: 支持数据导出功能

### FR-3: 水质数据文件上传
- **FR-3.1**: 支持上传Excel格式的水质数据文件
- **FR-3.2**: 提供三种上传模板：江苏省水质(js-station-sz-model.xlsx)、上海市水质(sh-station-sz-model.xlsx)、浙江省水质(zj-station-sz-model.xlsx)
- **FR-3.3**: 上传文件记录保存到YJJT_FILE表
- **FR-3.4**: 解析Excel数据并存储到YJJT_SZ_DATA表

### FR-4: 水质数据查询展示
- **FR-4.1**: 展示导入的水质数据列表（分页）
- **FR-4.2**: 支持按断面名称查询
- **FR-4.3**: 支持按测站编码查询
- **FR-4.4**: 支持按数据来源(ADDVCD)查询：WX(无锡)、JS(江苏)、SH(上海)、ZJ(浙江)
- **FR-4.5**: 支持按监测时间(SPT)时间段查询(YYYY-MM-DD~YYYY-MM-DD)
- **FR-4.6**: 支持数据导出功能

## Non-Functional Requirements
- **NFR-1**: 上传文件大小限制不超过10MB
- **NFR-2**: 数据查询响应时间不超过2秒
- **NFR-3**: 支持并发上传（同一时刻不超过5个上传任务）
- **NFR-4**: 上传失败时提供明确的错误提示信息

## Constraints
- **Technical**: Java 17, Spring Boot 3.x, MyBatis, Vue 3.x, Element Plus
- **Business**: 数据来源固定为WX/JS/SH/ZJ四个选项
- **Dependencies**: 需要依赖Apache POI进行Excel解析

## Assumptions
- Excel模板格式已确定，包含固定字段顺序
- ADDVCD字段值固定为：WX(无锡)、JS(江苏)、SH(上海)、ZJ(浙江)
- 用户具备上传和查询权限

## Acceptance Criteria

### AC-1: 水量数据文件上传成功
- **Given**: 用户进入水量数据上传页面，选择有效的Excel文件
- **When**: 用户点击上传按钮
- **Then**: 文件记录保存到YJJT_FILE表，数据解析后保存到YJJT_SL_DATA表，页面提示上传成功
- **Verification**: `programmatic`

### AC-2: 水量数据查询功能
- **Given**: 系统中已存在水量数据
- **When**: 用户输入断面名称、测站编码、数据来源、时间范围等查询条件并点击搜索
- **Then**: 表格展示符合条件的数据，支持分页
- **Verification**: `programmatic`

### AC-3: 水量数据导出功能
- **Given**: 系统中已存在水量数据
- **When**: 用户点击导出按钮
- **Then**: 生成Excel文件并下载，包含所有查询条件过滤后的字段
- **Verification**: `programmatic`

### AC-4: 水质数据文件上传成功
- **Given**: 用户进入水质数据上传页面，选择有效的Excel文件
- **When**: 用户点击上传按钮
- **Then**: 文件记录保存到YJJT_FILE表，数据解析后保存到YJJT_SZ_DATA表，页面提示上传成功
- **Verification**: `programmatic`

### AC-5: 水质数据查询功能
- **Given**: 系统中已存在水质数据
- **When**: 用户输入断面名称、测站编码、数据来源、时间范围等查询条件并点击搜索
- **Then**: 表格展示符合条件的数据，支持分页
- **Verification**: `programmatic`

### AC-6: 水质数据导出功能
- **Given**: 系统中已存在水质数据
- **When**: 用户点击导出按钮
- **Then**: 生成Excel文件并下载，包含所有查询条件过滤后的字段
- **Verification**: `programmatic`

### AC-7: 数据来源选项显示
- **Given**: 用户打开水量或水质数据查询页面
- **When**: 用户点击数据来源下拉框
- **Then**: 显示选项：无锡(WX)、江苏(JS)、上海(SH)、浙江(ZJ)
- **Verification**: `human-judgment`

## Open Questions
- [ ] Excel模板的具体字段结构需要确认
- [ ] 是否需要对上传数据进行唯一性校验（如按测站编码+监测时间）
- [ ] 是否需要支持上传失败时的回滚机制