1. 项目背景与需求分析
在乡村振兴战略背景下,传统养殖业数字化转型已成为必然趋势。乡村养鸭户作为典型的农业生产单元,长期面临以下痛点:
- 养殖数据记录依赖纸质台账,易丢失且难以统计分析
- 饲料、疫苗等投入品管理粗放,成本控制缺乏依据
- 销售渠道单一,市场价格信息获取滞后
- 疫病防控缺乏系统化记录和预警机制
本平台采用SpringBoot框架构建,旨在为中小型养鸭场提供涵盖养殖全流程的数字化管理解决方案。通过实际调研,我们确定了三大核心需求模块:
-
养殖过程管理
- 鸭群存栏动态记录(日龄、数量、批次)
- 饲料投喂量与成本核算
- 疫苗接种计划与执行跟踪
- 环境参数监测(温度、湿度等)
-
经营分析系统
- 投入产出比自动计算
- 成本构成可视化分析
- 历史价格趋势图表
-
产销对接服务
- 周边收购商信息库
- 线上订单处理功能
- 物流运输协调模块
2. 技术架构设计
2.1 整体技术栈选型
采用分层架构设计,主要技术组件如下表所示:
| 层级 | 技术选型 | 选型理由 |
|---|---|---|
| 前端 | Thymeleaf + Bootstrap | 适合农业场景的轻量级模板引擎,降低硬件配置要求 |
| 后端框架 | SpringBoot 2.7.3 | 快速构建生产级应用,内置Tomcat简化部署 |
| 数据持久化 | MyBatis-Plus + MySQL 8.0 | MP提供高效CRUD操作,MySQL满足农业数据存储需求且成本低 |
| 安全认证 | Spring Security | 完善的权限控制体系,保障农户数据安全 |
| 消息队列 | RabbitMQ | 处理异步任务如预警通知、数据同步等 |
| 缓存 | Redis | 高频访问数据(如价格行情)缓存 |
2.2 核心架构设计
系统采用模块化设计,主要包含以下组件:
code复制com.yangya
├── config # 配置类
├── controller # 控制层
├── service # 业务逻辑
│ ├── impl # 实现类
├── dao # 数据访问
├── entity # 实体类
├── dto # 数据传输对象
├── util # 工具类
└── exception # 异常处理
数据库设计遵循农业数据特点:
- 采用软删除设计(is_deleted字段)
- 关键业务表增加操作日志(如feed_operation_log)
- 建立历史数据归档机制(按养殖批次分表)
3. 关键功能实现
3.1 养殖过程管理模块
3.1.1 鸭群批次管理
java复制// 批次实体类设计
@Data
@TableName("duck_batch")
public class DuckBatch {
@TableId(type = IdType.AUTO)
private Long id;
private String batchNo; // 批次号规则:农场ID+年月+序号
private LocalDate startDate;
private Integer initialQuantity;
private Integer currentQuantity;
private Integer breedType; // 品种编码
private Integer farmId;
@TableLogic
private Integer isDeleted;
}
批次管理核心功能点:
- 智能批次编号生成(避免人工输入错误)
- 存栏量自动计算(关联出入栏记录)
- 批次状态机设计(育苗期/生长期/出栏期)
3.1.2 环境监测集成
通过Modbus TCP协议对接物联网设备:
java复制// 环境数据采集服务
@Service
@RequiredArgsConstructor
public class EnvironmentService {
private final ModbusMaster modbusMaster;
@Scheduled(fixedRate = 300000)
public void collectData() {
try {
ReadInputRegistersRequest request = new ReadInputRegistersRequest(
device.getUnitId(),
device.getStartAddress(),
device.getQuantity()
);
// 数据处理逻辑...
envMapper.insert(new EnvironmentData(...));
} catch (ModbusException e) {
log.error("传感器数据采集失败", e);
alertService.sendDeviceAlert(device);
}
}
}
3.2 智能预警系统实现
3.2.1 规则引擎设计
采用Drools规则引擎构建预警规则:
drl复制rule "高温预警"
when
$env : EnvironmentData(temperature > 30, time > (new Date().getTime() - 3600000))
$farm : Farm(id == $env.farmId)
then
alertService.sendAlert(
$farm.getOwnerId(),
"高温预警!当前鸭舍温度:" + $env.getTemperature() + "℃"
);
end
常见预警类型包括:
- 环境异常(温湿度、氨气浓度)
- 疫苗到期提醒
- 饲料库存预警
- 市场价格波动提示
3.2.2 消息推送集成
多通道消息通知方案:
java复制public interface NotifyHandler {
void send(AlertMessage message);
}
@Service
@Primary
public class CompositeNotifier implements NotifyHandler {
private final List<NotifyHandler> handlers;
@Override
public void send(AlertMessage message) {
handlers.forEach(h -> {
try {
h.send(message);
} catch (Exception e) {
log.error("通知发送失败", e);
}
});
}
}
// 微信通知实现
@Service
@ConditionalOnProperty(prefix = "notify", name = "wechat.enabled")
public class WechatNotifier implements NotifyHandler {
@Override
public void send(AlertMessage message) {
// 调用微信接口实现...
}
}
4. 生产环境部署方案
4.1 服务器配置建议
针对农村网络环境特点,推荐以下部署方案:
| 组件 | 最低配置 | 备注 |
|---|---|---|
| 应用服务器 | 2核4G | 建议使用阿里云/腾讯云农村振兴专项服务器 |
| 数据库 | MySQL 5.7+ 1核2G | 开启binlog用于数据同步 |
| Redis | 1核1G | 持久化配置必须开启 |
| 备份方案 | 每日全量备份+binlog | 建议配置异地备份(如OSS存储) |
4.2 高可用设计
考虑到农村地区网络不稳定性,系统实现以下容错机制:
- 本地缓存策略:
java复制@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder()
.expireAfterWrite(2, TimeUnit.HOURS)
.maximumSize(1000));
return new TransactionAwareCacheManagerProxy(cacheManager);
}
}
- 离线模式支持:
- 前端使用LocalStorage暂存操作记录
- 通过Service Worker实现基础功能离线可用
- 网络恢复后自动同步数据
5. 实际应用案例
5.1 某养鸭合作社实施效果
基础信息:
- 存栏量:约5万羽
- 使用模块:全功能版
- 部署方式:云服务器+移动端APP
量化收益:
- 饲料浪费减少23%(通过精准投喂计算)
- 疫病发生率下降18%(疫苗提醒+环境监控)
- 销售溢价15%(通过行情分析选择最佳出栏时机)
5.2 系统优化实践
性能调优经验:
- 养殖日志表按批次分表,查询性能提升40%
- 采用ClickHouse分析历史数据,报表生成速度从分钟级降到秒级
- 前端启用Gzip压缩,移动端加载速度提升65%
典型问题解决方案:
sql复制-- 慢查询优化案例
-- 原查询(执行时间>2s)
SELECT * FROM feed_record WHERE farm_id = ? AND feed_type = ?;
-- 优化方案
ALTER TABLE feed_record ADD INDEX idx_farm_feed (farm_id, feed_type);
-- 并改为只查询必要字段
SELECT id, amount, operator FROM feed_record WHERE farm_id = ? AND feed_type = ?;
6. 扩展开发建议
对于希望二次开发的团队,推荐以下扩展方向:
-
物联网深度集成
- 增加水质监测传感器
- 实现自动喂料机控制
- 开发智能环控设备联动
-
区块链溯源
- 养殖记录上链存证
- 生成防伪溯源二维码
- 对接电商平台溯源系统
-
AI辅助决策
- 基于历史数据的出栏时间预测
- 图像识别鸭群健康状态
- 语音交互操作支持
项目源码已遵循Apache 2.0协议开源,开发者可以根据实际需求进行定制化修改。建议在规模化养殖场部署时,考虑增加分布式锁机制防止并发操作问题,以及引入Prometheus进行系统监控。
