# 有无畜户数据填报 — 技术方案 > 依据:同目录功能需求;模板 `baqing-admin/src/main/resources/templates/livestock_ownership_household_import_template.xlsx`。对齐牦牛出栏数据填报骨架。 ## 1. 架构 Controller `/dataModel/livestockOwnershipHousehold` → Service → Mapper;Excel:`LivestockOwnershipHouseholdExcelParser` / `LivestockOwnershipHouseholdExcelExporter`;校验:`LivestockOwnershipHouseholdValidation`(村反推乡镇)。 ## 2. 表 `biz_livestock_ownership_household` 唯一键 `uk_year_month_village (stat_year, stat_month, village_dept_id)`;含乡镇/村冗余及有畜户/无畜户计数字段。DDL:`sql/biz_livestock_ownership_household.sql`。 | 列(Excel 0-based) | 字段 | | --- | --- | | 1~2 | 乡镇、村居 | | 3~6 | 有畜户:户数、人数、有劳力、牲畜数 | | 7~9 | 无畜户:户数、人数、有劳力 | 主表头行含「乡镇/村居/有畜户」;次表头为其下指标名;**数据起始行 = 主表头行 + 2**。 ## 3. 接口 | URI | 说明 | | --- | --- | | CRUD `/list` `/{id}` POST/PUT/DELETE | 常规;权限 `dataModel:livestockOwnershipHousehold:*` | | `/yearOptions` `/monthOptions` `/townOptions` `/villageTree` | 选项 | | `/importData` | 按唯一键 upsert;任一行失败整批不写 | | `/importTemplate` | 下载模板 | | `/export` | 按年月导出;可选 `townDeptId` | ## 4. 导入 / 导出 - 导入:系统选年月 → 解析 → 乡镇/村识别 → 非负校验 → upsert。 - 导出:改标题年月、填表人/时间;写村行;末行「合计」(合并序号~村列)。 ## 5. 前端 详见同目录 **[有无畜户数据填报前端技术方案.md](./有无畜户数据填报前端技术方案.md)**。 - 页面:`ruoyi-ui/src/views/dataModel/livestockOwnershipHousehold/index.vue` - API:`ruoyi-ui/src/api/dataModel/livestockOwnershipHousehold.js` - 菜单组件:`dataModel/livestockOwnershipHousehold/index` - i18n:`dataModel.livestockOwnershipHousehold`(zh/bo) ## 6. 修订记录 | 版本 | 说明 | | --- | --- | | 1.0 | 初版 | | 1.1 | 补充前端技术方案链接 |