基于SSM框架的在线药品采购与库存管理系统 - 源码深度解析

JavaJavaScriptMavenHTMLCSSSSM框架MySQL
2026-02-0714 浏览

文章摘要

本项目是一款基于SSM(Spring+SpringMVC+MyBatis)框架开发的在线药品采购与库存管理系统,旨在为医药流通企业、连锁药店及医疗机构提供一体化的药品供应链管理解决方案。其核心业务价值在于通过数字化手段,显著提升药品采购的计划性、库存周转的效率以及信息流转的准确性,有效解决传统模式下...

基于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='采购单'

设计亮点分析

  1. 数据类型优化:使用tinyint存储状态字段,节省存储空间并提高查询效率
  2. 时间戳管理ctime记录创建时间,mtime自动更新最后修改时间,满足审计需求
  3. 主键设计AUTO_INCREMENT确保主键的唯一性和连续性
  4. 索引建议:为didsidstatus等高频查询字段建立复合索引

库存管理表的关系设计

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);
    }
}

系统特色功能

  1. 智能预警机制:基于安全库存水平自动生成采购建议
  2. 事务管理:使用Spring声明式事务确保数据一致性
  3. 状态机设计:清晰的采购状态流转(录入→入库/拒绝)
  4. 异常处理:完善的业务异常处理机制

该系统通过SSM框架的有机结合,为医药企业提供了稳定、高效的供应链管理解决方案,具有良好的可扩展性和维护性。

本文关键词
SSM框架药品采购系统库存管理系统医药供应链源码解析

上下篇

上一篇
没有更多文章
下一篇
没有更多文章