基于SSM框架的在线药品采购与库存管理系统 - 源码深度解析
在医药行业数字化转型的浪潮中,药品供应链管理的信息化水平直接关系到企业的运营效率和合规性。传统的手工记录和分散的Excel表格管理方式,已难以应对药品批次追踪、库存预警、采购计划等复杂业务需求。本文介绍的智能医药供应链管理平台,采用成熟的SSM(Spring+SpringMVC+MyBatis)技术栈,为医药企业提供了一套完整的数字化解决方案。
系统架构与技术栈
该平台采用经典的三层架构设计,体现了良好的软件工程实践:
- 表现层:使用SpringMVC框架处理Web请求,通过清晰的控制器映射实现前后端分离
- 业务逻辑层:由Spring框架统一管理,利用IoC容器实现组件依赖注入,通过声明式事务管理保证数据一致性
- 数据持久层:采用MyBatis框架,通过灵活的XML配置实现复杂的数据操作
技术选型详情:
- 后端技术:Java 8 + Spring 4.x + SpringMVC + MyBatis 3.x
- 数据库:MySQL 5.7,支持事务处理和ACID特性
- 项目管理:Maven进行依赖管理和项目构建
- 前端技术:HTML5 + CSS3 + JavaScript + Bootstrap 3.x,实现响应式界面设计
数据库设计亮点分析
采购订单表的设计优化
CREATE TABLE `t_purchase_order` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`did` int(10) unsigned NOT NULL COMMENT '药品ID',
`sid` int(10) unsigned NOT NULL COMMENT '供应商ID',
`rid` int(10) unsigned NOT NULL COMMENT '仓库ID',
`total` int(10) NOT NULL COMMENT '采购数量',
`status` tinyint(4) NOT NULL COMMENT '1.录入 2.入库 3.拒绝',
`ctime` datetime NOT NULL COMMENT '创建时间',
`mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='采购单'
设计亮点分析:
- 数据类型优化:使用
tinyint存储状态字段,节省存储空间并提高查询效率 - 时间戳管理:
ctime记录创建时间,mtime自动更新最后修改时间,满足审计需求 - 主键设计:
AUTO_INCREMENT确保主键的唯一性和连续性 - 索引建议:为
did、sid、status等高频查询字段建立复合索引
库存管理表的关系设计
CREATE TABLE `t_repertory` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL COMMENT '仓库名称',
`address` varchar(50) NOT NULL COMMENT '仓库地址',
`contacts` varchar(50) NOT NULL COMMENT '联系人',
`ctime` datetime NOT NULL COMMENT '创建时间',
`mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='仓库'
设计特点:
- 字段长度优化:
varchar(50)长度设置平衡了数据完整性和存储效率 - 自动化机制:时间戳字段自动更新,减少应用层逻辑复杂度
- 扩展性考虑:表结构设计支持未来业务扩展需求

核心功能实现详解
药品信息管理模块
药品管理作为系统的核心基础模块,实现了完整的CRUD操作,采用标准的MVC模式进行架构。
控制器层设计:
@Controller
@RequestMapping("drug")
public class DrugController {
private static Logger logger = Logger.getLogger(DrugController.class);
@Autowired
private DrugService drugService;
@RequestMapping("/list")
public String list(Model model) {
model.addAttribute("list", drugService.getDrugList());
return "drug/list";
}
@RequestMapping("/add")
public String add() {
return "drug/add";
}
@ResponseBody
@RequestMapping("/save")
public String save(Drug drug) {
try {
drugService.saveDrug(drug);
} catch (Exception e) {
logger.error(e.getMessage(), e);
return "0";
}
return "1";
}
}
业务逻辑层实现:
@Service
public class DrugServiceImpl implements DrugService {
@Autowired
private DrugMapper drugMapper;
@Override
@Transactional
public void saveDrug(Drug drug) {
drug.setCtime(new Date());
drugMapper.insert(drug);
}
@Override
public List<Drug> getDrugList() {
return drugMapper.selectAll();
}
}
数据访问层配置:
<!-- DrugMapper.xml -->
<mapper namespace="edu.nxu.mdps.mapper.DrugMapper">
<insert id="insert" parameterType="Drug" useGeneratedKeys="true" keyProperty="id">
INSERT INTO t_drug (name, price, unit, ctime)
VALUES (#{name}, #{price}, #{unit}, #{ctime})
</insert>
<select id="selectAll" resultType="Drug">
SELECT id, name, price, unit, ctime, mtime
FROM t_drug
ORDER BY mtime DESC
</select>
</mapper>

采购流程管理
采购管理模块实现了从采购计划生成到订单执行的全流程管理,包含智能库存预警和审批流程。
采购业务逻辑实现:
@Service
public class PurchaseServiceImpl implements PurchaseService {
@Autowired
private PurchaseOrderMapper purchaseOrderMapper;
@Autowired
private InventoryMapper inventoryMapper;
@Override
@Transactional
public void createPurchaseOrder(PurchaseOrder order) {
// 检查库存水平
Inventory inventory = inventoryMapper.selectByDrugId(order.getDid());
if (inventory.getStock() > inventory.getSafetyStock()) {
throw new BusinessException("库存充足,无需采购");
}
order.setStatus(1); // 录入状态
order.setCtime(new Date());
purchaseOrderMapper.insert(order);
}
@Override
@Transactional
public void approvePurchase(Integer orderId, boolean approved) {
PurchaseOrder order = purchaseOrderMapper.selectById(orderId);
if (approved) {
order.setStatus(2); // 入库状态
// 更新库存
updateInventory(order);
} else {
order.setStatus(3); // 拒绝状态
}
purchaseOrderMapper.update(order);
}
}
系统特色功能:
- 智能预警机制:基于安全库存水平自动生成采购建议
- 事务管理:使用Spring声明式事务确保数据一致性
- 状态机设计:清晰的采购状态流转(录入→入库/拒绝)
- 异常处理:完善的业务异常处理机制
该系统通过SSM框架的有机结合,为医药企业提供了稳定、高效的供应链管理解决方案,具有良好的可扩展性和维护性。