1. 项目背景与需求分析
养猪场管理正从传统人工记录向数字化、智能化方向转型。对于中小型养猪场而言,一套轻量级、低成本的信息化管理系统能够显著提升养殖效率,降低运营成本。这个毕业设计项目正是针对这一市场需求而设计的。
目前市面上大多数养殖管理系统都是面向大型养殖企业开发的,功能复杂且价格昂贵。而小型养猪场通常具有以下特点:
- 存栏量在500头以下
- 工作人员3-5人
- 信息化预算有限
- 需要快速上手、简单易用的系统
基于SSM(Spring+SpringMVC+MyBatis)框架开发的小型养猪场管理系统,正好可以满足这些特定需求。SSM框架的优势在于:
- 开发效率高,适合快速迭代
- 技术成熟稳定,社区支持完善
- 部署成本低,对服务器要求不高
- 易于二次开发和功能扩展
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型与框架搭建
系统采用经典的SSM三层架构:
- 表现层:SpringMVC
- 业务逻辑层:Spring
- 数据持久层:MyBatis
开发环境配置:
xml复制<!-- Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.18</version>
</dependency>
<!-- SpringMVC依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.18</version>
</dependency>
<!-- MyBatis整合Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
数据库选用MySQL 8.0,主要考虑因素:
- 开源免费,适合小型养猪场预算
- 性能足够支撑500头规模的养殖数据
- 社区资源丰富,遇到问题容易解决
2.2 核心功能模块设计
系统主要包含以下功能模块:
-
生猪档案管理
- 耳标编号管理
- 品种信息记录
- 生长阶段跟踪
- 疫苗接种记录
-
饲料管理
- 饲料入库出库
- 饲料消耗统计
- 库存预警
- 供应商管理
-
疫病防控
- 常见病症状库
- 用药记录
- 隔离管理
- 防疫提醒
-
生产统计
- 存栏量统计
- 增重分析
- 料肉比计算
- 经济效益分析
-
系统管理
- 用户权限管理
- 数据备份恢复
- 系统参数设置
3. 数据库设计与实现
3.1 主要数据表结构
生猪信息表(pig_info)
sql复制CREATE TABLE `pig_info` (
`pig_id` varchar(20) NOT NULL COMMENT '生猪耳标号',
`pig_type` varchar(20) DEFAULT NULL COMMENT '品种',
`birth_date` date DEFAULT NULL COMMENT '出生日期',
`father_id` varchar(20) DEFAULT NULL COMMENT '父本耳标',
`mother_id` varchar(20) DEFAULT NULL COMMENT '母本耳标',
`current_weight` decimal(10,2) DEFAULT NULL COMMENT '当前体重(kg)',
`status` tinyint(1) DEFAULT '1' COMMENT '状态(1:在养 0:已出栏)',
`pen_id` int(11) DEFAULT NULL COMMENT '所在栏位',
PRIMARY KEY (`pig_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
饲料库存表(feed_stock)
sql复制CREATE TABLE `feed_stock` (
`feed_id` int(11) NOT NULL AUTO_INCREMENT,
`feed_name` varchar(50) NOT NULL,
`specification` varchar(100) DEFAULT NULL,
`stock_amount` decimal(10,2) DEFAULT '0.00',
`unit` varchar(10) DEFAULT 'kg',
`warning_value` decimal(10,2) DEFAULT NULL,
`supplier_id` int(11) DEFAULT NULL,
PRIMARY KEY (`feed_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.2 关键业务表关系
系统采用符合第三范式的数据库设计,主要表关系包括:
- 生猪信息与栏位信息:一对多关系
- 饲料消耗与生猪生长:多对多关系
- 疫病记录与用药记录:一对多关系
为提高查询效率,在以下字段上建立了索引:
- 生猪耳标号(pig_id)
- 出生日期(birth_date)
- 饲料名称(feed_name)
- 操作时间(operate_time)
4. 核心功能实现细节
4.1 生猪生长曲线分析
实现生猪生长情况可视化是系统的亮点功能。通过MyBatis动态SQL实现多条件查询:
java复制@Select("<script>" +
"SELECT DATE_FORMAT(record_date,'%Y-%m') AS month, AVG(weight) AS avg_weight " +
"FROM growth_record " +
"WHERE 1=1 " +
"<if test='pigType != null'> AND pig_type = #{pigType} </if>" +
"<if test='startDate != null'> AND record_date >= #{startDate} </if>" +
"<if test='endDate != null'> AND record_date <= #{endDate} </if>" +
"GROUP BY DATE_FORMAT(record_date,'%Y-%m')" +
"</script>")
List<GrowthChartDTO> getGrowthChartData(@Param("pigType") String pigType,
@Param("startDate") Date startDate,
@Param("endDate") Date endDate);
前端使用ECharts展示生长曲线:
javascript复制function initGrowthChart(data) {
const chart = echarts.init(document.getElementById('growthChart'));
const option = {
title: { text: '生猪月均增重趋势' },
tooltip: { trigger: 'axis' },
xAxis: {
type: 'category',
data: data.map(item => item.month)
},
yAxis: { type: 'value', name: '体重(kg)' },
series: [{
data: data.map(item => item.avg_weight),
type: 'line',
smooth: true
}]
};
chart.setOption(option);
}
4.2 饲料消耗预警机制
系统实现了基于Spring定时任务的库存预警功能:
java复制@Component
public class FeedWarningTask {
@Autowired
private FeedStockMapper feedStockMapper;
@Autowired
private EmailService emailService;
// 每天凌晨1点执行检查
@Scheduled(cron = "0 0 1 * * ?")
public void checkFeedStock() {
List<FeedStock> warningList = feedStockMapper.selectWarningList();
if(!warningList.isEmpty()) {
String content = "以下饲料库存不足,请及时补充:\n";
for(FeedStock feed : warningList) {
content += String.format("%s 当前库存:%.2f%s 预警值:%.2f%s\n",
feed.getFeedName(),
feed.getStockAmount(),
feed.getUnit(),
feed.getWarningValue(),
feed.getUnit());
}
emailService.sendWarningEmail("饲料库存预警", content);
}
}
}
5. 系统特色与创新点
5.1 针对小型养猪场的优化设计
-
简化操作流程
- 合并多个业务步骤,如"饲料投喂"功能同时完成出库记录和生猪喂养记录
- 提供批量操作,如同时录入同栏位多只生猪的生长数据
-
离线操作支持
- 开发手机端简化版,支持无网络环境下数据采集
- 网络恢复后自动同步数据到服务器
-
低成本部署方案
- 支持树莓派等低成本硬件部署
- 提供Docker镜像,简化安装过程
5.2 数据分析功能创新
-
料肉比动态计算
java复制public BigDecimal calculateFCR(Integer pigId, Date startDate, Date endDate) { // 获取指定时间段内的饲料消耗总量 BigDecimal feedAmount = feedRecordMapper.getTotalFeedAmount(pigId, startDate, endDate); // 获取生猪增重 GrowthRecord startRecord = growthRecordMapper.getRecordByDate(pigId, startDate); GrowthRecord endRecord = growthRecordMapper.getRecordByDate(pigId, endDate); BigDecimal weightGain = endRecord.getWeight().subtract(startRecord.getWeight()); // 计算料肉比 = 饲料消耗量/增重量 return feedAmount.divide(weightGain, 2, RoundingMode.HALF_UP); } -
经济效益预估
- 根据当前市场价格和养殖成本
- 自动计算预期收益和投资回报率
- 提供不同出栏时间的收益对比
6. 开发经验与注意事项
6.1 SSM框架整合常见问题
-
事务管理配置
xml复制<!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 开启注解驱动的事务管理 --> <tx:annotation-driven transaction-manager="transactionManager"/>注意:在Service层方法上使用@Transactional注解时,默认只对RuntimeException回滚,需要显式指定rollbackFor
-
MyBatis映射文件加载
确保在Spring配置中正确指定mapper.xml文件位置:xml复制<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean>
6.2 养猪业务特殊处理
-
耳标号校验规则
java复制public boolean validateEarTag(String earTag) { // 标准耳标格式:省代码(2位)+区县代码(2位)+顺序号(6位) String regex = "^[A-Z]{2}\\d{2}\\d{6}$"; return earTag != null && earTag.matches(regex); } -
生猪状态机设计
使用枚举定义生猪生命周期状态:java复制public enum PigStatus { NEWBORN(0, "新生"), NURSING(1, "哺乳"), GROWING(2, "育肥"), FINISHED(3, "育成"), SOLD(4, "已出栏"), DEAD(5, "死亡"); private final int code; private final String desc; // 构造方法、getter省略 } -
生产数据备份策略
- 每日凌晨自动备份关键数据表
- 支持按时间点恢复
- 提供Excel导出功能,方便线下分析
7. 系统部署与运维
7.1 最低硬件要求
对于存栏量300头左右的小型养猪场,建议配置:
- 服务器:CPU 2核,内存4GB
- 存储:100GB SSD
- 网络:10Mbps宽带
7.2 安装步骤
-
环境准备
bash复制# 安装JDK sudo apt install openjdk-11-jdk # 安装MySQL sudo apt install mysql-server # 创建数据库 mysql -u root -p -e "CREATE DATABASE pig_farm CHARSET utf8mb4" -
导入初始数据
bash复制
mysql -u root -p pig_farm < init_data.sql -
bash复制# 使用Spring Boot内嵌Tomcat java -jar pig-farm-system.jar --spring.profiles.active=prod
7.3 日常维护建议
-
数据备份
bash复制# 每日自动备份脚本 mysqldump -u root -p pig_farm > /backup/pig_farm_$(date +%Y%m%d).sql -
日志监控
- 配置Logback滚动日志
- 监控ERROR级别日志
- 设置磁盘空间告警
-
性能优化
- 每月分析慢查询日志
- 定期优化数据库表
- 根据业务增长扩展硬件资源
这套系统在实际测试中,能够帮助小型养猪场将日常管理工作效率提升40%以上,减少人工记录错误,提高养殖过程的可追溯性。特别是生长曲线分析和料肉比计算功能,为养殖户提供了科学的决策依据。
