基于SSM的西餐厅物料调配管理系统 - 源码深度解析
在连锁西餐厅的运营中,物料管理效率直接决定了整体运营成本和服务质量。传统的手工记录或孤立信息系统往往导致库存数据不一致、调配指令延迟、物料浪费与短缺并存等痛点。针对这一行业需求,我们设计并实现了一套基于SSM框架的西餐厅智能物料调配管理平台,通过集中化、实时化的库存管控,有效优化采购决策,降低运营成本,确保各分店高效协同。
系统架构与技术栈
该平台采用经典的SSM(Spring + SpringMVC + MyBatis)三层架构,结合MySQL数据库构建稳定可靠的企业级应用。这种架构模式在Java Web开发领域被广泛应用,具有成熟度高、社区支持完善的优势。
Spring框架核心作用
Spring作为整个系统的核心容器,承担着以下关键职责:
- Bean生命周期管理:通过IoC容器统一管理所有业务组件的创建和依赖注入
- 声明式事务管理:通过
@Transactional注解确保库存更新、调配记录写入等关键操作的原子性与数据一致性 - AOP编程支持:实现统一的日志记录、权限验证和性能监控
// Spring配置示例
@Configuration
@EnableTransactionManagement
@ComponentScan("com.jly.service")
public class AppConfig {
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setInitialSize(5);
dataSource.setMaxActive(20);
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
SpringMVC与MyBatis协同工作
- SpringMVC:承担Web层职责,通过
@Controller注解定义请求处理器,接收并解析前端发起的物料查询、调配申请等HTTP请求 - MyBatis:作为持久层框架,通过XML映射文件将Java方法调用与复杂的SQL语句解耦,提供灵活高效的数据访问能力
数据库设计亮点
商品表设计优化
商品表(smbms_product)的设计体现了对餐饮行业特性的深度理解,特别关注了库存管理和食品安全的业务需求。
CREATE TABLE `smbms_product` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`categoryId` bigint(20) DEFAULT NULL COMMENT '分类编号',
`productName` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品名称',
`productPhoto` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品图片',
`primeCost` decimal(10,2) DEFAULT NULL COMMENT '进货价格',
`salePrice` decimal(10,2) DEFAULT NULL COMMENT '销售价格',
`quantityStock` int(10) DEFAULT NULL COMMENT '库存数量',
`quantityWarning` int(10) DEFAULT NULL COMMENT '预警数量',
`purchasTime` datetime DEFAULT NULL COMMENT '进货时间',
`productionTtime` datetime DEFAULT NULL COMMENT '生产日期',
`expirationTime` datetime DEFAULT NULL COMMENT '过期时间',
`state` int(11) DEFAULT NULL COMMENT '状态(1为上架,2为下架)',
`barCodePicure` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品条形码',
`createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
`creationDate` datetime DEFAULT NULL COMMENT '创建时间',
`modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
`modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品表'
设计亮点分析:
- 库存预警机制:
quantityWarning字段实现智能预警,当库存低于设定阈值时自动提醒补货 - 全生命周期追踪:通过
productionTtime和expirationTime字段实现食品保质期管理,避免食品安全问题 - 成本利润控制:
primeCost和salePrice字段支持精确的成本核算和利润分析 - 状态管理:
state字段实现商品的上下架状态控制,避免过期商品流通 - 审计追踪:完整的创建和修改记录支持操作追溯和责任认定

进货订单表业务逻辑设计
进货订单表(smbms_bill)的设计充分考虑了业务流程的完整性和数据一致性,支持复杂的业务流转。
CREATE TABLE `smbms_bill` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`billCode` varchar(20) DEFAULT NULL COMMENT '订单编码',
`productName` varchar(20) DEFAULT NULL COMMENT '商品名称',
`productDesc` varchar(50) DEFAULT NULL COMMENT '订单状态(0:审核中,1:已确认,2:已取消)',
`productUnit` varchar(10) DEFAULT NULL COMMENT '商品单位',
`productCount` decimal(20,2) DEFAULT NULL COMMENT '商品数量',
`totalPrice` decimal(20,2) DEFAULT NULL COMMENT '商品总额',
`isPayment` int(10) DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)',
`createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
`creationDate` datetime DEFAULT NULL COMMENT '创建时间',
`modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
`modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
`providerId` int(20) DEFAULT NULL COMMENT '供应商ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='进货订单表'
业务逻辑设计优势:
- 订单状态流转:通过
productDesc字段实现订单的审核流程控制,确保业务流程规范化 - 金额精度控制:
decimal(20,2)类型确保财务计算的精确性,避免浮点数运算误差 - 供应商关联:
providerId字段建立与供应商表的关联关系,支持供应商绩效分析 - 操作审计:完整的创建和修改记录支持操作追溯和权限控制
核心功能实现
订单管理功能
订单管理模块实现了进货订单的全生命周期管理,包括订单查询、添加、修改、删除等核心操作。该模块采用MVC模式设计,实现了业务逻辑与表现层的有效分离。
@Controller
@RequestMapping("/sys")
public class BillController {
@Autowired
private BillService billService;
@Autowired
private ProviderService providerService;
@RequestMapping("/billlist")
public String findAll(
@RequestParam(value = "queryProductName", required = false) String proName,
@RequestParam(value = "queryProviderId", required = false) Integer proid,
@RequestParam(value = "queryIsPayment", required = false) Integer ispay,
Model model) {
List<Bill> billList = billService.findByCondition(proName, proid, ispay);
List<Provider> providerList = providerService.findAll();
model.addAttribute("billList", billList);
model.addAttribute("queryProductName", proName);
model.addAttribute("queryProviderId", proid);
model.addAttribute("queryIsPayment", ispay);
model.addAttribute("providerList", providerList);
return "billlist";
}
// 其他订单管理方法...
}
功能特性:
- 多条件查询:支持按商品名称、供应商、支付状态等多维度组合查询
- 数据绑定:利用SpringMVC的数据绑定机制简化参数传递
- 视图解析:通过返回逻辑视图名实现页面跳转的统一管理
- 依赖注入:使用
@Autowired注解实现服务的自动装配
该系统通过精细化的数据库设计和严谨的架构实现,为连锁西餐厅提供了完整的物料调配解决方案,显著提升了运营效率和成本控制能力。