基于SSM框架的在线药品进销存管理平台 - 源码深度解析

JavaJavaScriptHTMLCSSSSM框架MavenMySQL
2026-02-0717 浏览

文章摘要

本项目是一款基于SSM(Spring + Spring MVC + MyBatis)框架构建的在线药品进销存管理平台,旨在为中小型药店、诊所或医药流通企业提供一体化的药品销售与库存管理解决方案。其核心业务价值在于通过数字化手段,精准解决药品流通过程中信息记录不透明、库存数据更新滞后、手工操作易出错等...

基于SSM框架的在线药品进销存管理平台 - 源码深度解析

在医药零售行业数字化转型的浪潮中,高效精准的药品管理已成为企业提升运营效率、降低运营成本的核心竞争力。传统手工记录方式面临着信息不透明、库存更新滞后、手工操作易出错等痛点,难以满足现代医药流通企业的管理需求。为此,我们开发了这款企业级医药流通管理平台,通过数字化手段为中小型药店、诊所及医药流通企业提供一体化的药品销售与库存管理解决方案。

系统架构与技术栈

该平台采用业界成熟的SSM(Spring + Spring MVC + MyBatis)框架组合,构建了稳定可靠的三层架构体系:

后端技术架构

  • Spring框架:作为核心IoC容器,通过依赖注入(DI)和面向切面编程(AOP)管理业务逻辑层和数据访问层的对象生命周期,确保各组件间的松耦合
  • Spring MVC:基于模型-视图-控制器设计模式,负责请求分发、参数绑定和视图渲染,提供清晰的Web层解决方案
  • MyBatis:作为轻量级持久层框架,通过灵活的XML映射文件完成数据库操作,支持动态SQL和存储过程

前端与工具链

  • 视图层:采用JSP结合JSTL标签库进行动态数据展示,配合Ajax技术实现无刷新操作体验
  • 项目管理:使用Maven进行依赖管理和项目构建,确保依赖版本一致性
  • 数据库:MySQL作为关系型数据存储引擎,保证事务ACID特性
<!-- Spring核心依赖配置 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.22</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>

数据库设计亮点

药品库存转移表设计

kucunzhuanyi表的设计体现了对药品流通环节的精细化管理,确保库存数据的准确性和可追溯性:

CREATE TABLE `kucunzhuanyi` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
  `zhuanyibianhao` varchar(200) DEFAULT NULL COMMENT '转移编号',
  `yaopinmingcheng` varchar(200) DEFAULT NULL COMMENT '药品名称',
  `yaopinfenlei` varchar(200) DEFAULT NULL COMMENT '药品分类',
  `jixing` varchar(200) DEFAULT NULL COMMENT '剂型',
  `shuliang` int(11) DEFAULT NULL COMMENT '数量',
  `zhuanyididian` varchar(200) DEFAULT NULL COMMENT '转移地点',
  `zhuanyishijian` date DEFAULT NULL COMMENT '转移时间',
  `yuangonggonghao` varchar(200) DEFAULT NULL COMMENT '员工工号',
  `yuangongxingming` varchar(200) DEFAULT NULL COMMENT '员工姓名',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `zhuanyibianhao` (`zhuanyibianhao`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1682224928778 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=DYNAMIC COMMENT='库存转移'

设计亮点深度分析:

  1. 数据唯一性保障

    • zhuanyibianhao字段设置唯一索引,确保每次库存转移操作都有唯一标识,防止数据重复录入
    • 采用雪花算法生成分布式ID,避免单点故障和ID冲突
  2. 时间维度精细化设计

    • addtime记录系统创建时间,用于操作审计和系统监控
    • zhuanyishijian记录实际业务发生时间,满足不同业务场景的时间查询需求
  3. 数据完整性与关联性

    • 通过yuangonggonghaoyuangongxingming双字段记录操作人员,既便于关联查询又保证数据冗余备份
    • 采用外键约束确保员工信息的引用完整性
  4. 存储性能优化

    • 采用ROW_FORMAT=DYNAMIC格式,优化可变长度行的存储效率
    • 使用UTF8字符集支持多语言环境,确保药品名称国际化的兼容性

购买订单表的事务一致性设计

goumaidingdan表的设计充分考虑了电商场景下的数据一致性需求和业务扩展性:

CREATE TABLE `goumaidingdan` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
  `dingdanbianhao` varchar(200) DEFAULT NULL COMMENT '订单编号',
  `yaopinmingcheng` varchar(200) DEFAULT NULL COMMENT '药品名称',
  `yaopinfenlei` varchar(200) DEFAULT NULL COMMENT '药品分类',
  `jixing` varchar(200) DEFAULT NULL COMMENT '剂型',
  `shuliang` int(11) DEFAULT NULL COMMENT '数量',
  `jiage` int(11) DEFAULT NULL COMMENT '价格',
  `zongjiage` int(11) DEFAULT NULL COMMENT '总价格',
  `xiadanshijian` date DEFAULT NULL COMMENT '下单时间',
  `yonghuzhanghao` varchar(200) DEFAULT NULL COMMENT '用户账号',
  `yonghuxingming` varchar(200) DEFAULT NULL COMMENT '用户姓名',
  `yuangonggonghao` varchar(200) DEFAULT NULL COMMENT '员工工号',
  `yuangongxingming` varchar(200) DEFAULT NULL COMMENT '员工姓名',
  `ispay` varchar(200) DEFAULT '未支付' COMMENT '是否支付',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `dingdanbianhao` (`dingdanbianhao`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1686672013019 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=DYNAMIC COMMENT='购买订单'

业务逻辑深度设计:

  1. 价格计算策略

    • 独立存储jiage(单价)和zongjiage(总价),避免实时计算带来的性能开销
    • 支持价格历史追溯,便于后续审计和价格变动分析
  2. 订单状态机设计

    • ispay字段默认值为'未支付',通过状态机模式管理订单生命周期
    • 支持订单状态的幂等性操作,防止重复状态变更
  3. 多方关联记录机制

    • 同时记录用户信息和员工信息,便于后续的售后追踪和绩效统计
    • 采用软关联设计,支持用户信息变更时的历史数据保持

库存转移管理界面

核心功能实现

1. 通用数据查询接口设计

系统通过通用控制器实现灵活的数据查询,采用策略模式减少重复代码编写,提高代码复用性:

@RequestMapping("/option/{tableName}/{columnName}")
@IgnoreAuth
public R getOption(@PathVariable("tableName") String tableName, 
                   @PathVariable("columnName") String columnName,
                   @RequestParam(required = false) String conditionColumn,
                   @RequestParam(required = false) String conditionValue,
                   String level, String parent) {
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("table", tableName);
    params.put("column", columnName);
    
    // 多级联动查询支持
    if(StringUtils.isNotBlank(level)) {
        params.put("level", level);
    }
    if(StringUtils.isNotBlank(parent)) {
        params.put("parent", parent);
    }
    
    // 条件查询支持
    if(StringUtils.isNotBlank(conditionColumn)) {
        params.put("conditionColumn", conditionColumn);
    }
    if(StringUtils.isNotBlank(conditionValue)) {
        params.put("conditionValue", conditionValue);
    }
    
    List<String> data = commonService.getOption(params);
    return R.ok().put("data", data);
}

接口设计优势:

  • 支持多条件组合查询,满足复杂业务场景需求
  • 提供层级数据获取能力,支持前端级联选择器
  • 统一的异常处理机制,保证接口稳定性

2. 药品信息管理模块

药品信息管理采用完整的CRUD操作,结合数据验证和业务规则校验,确保数据准确性和业务合规性:

@RestController
@RequestMapping("/yaopin")
public class YaopinController {
    
    @Autowired
    private YaopinService yaopinService;
    
    /**
     * 分页查询药品信息
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params) {
        PageUtils page = yaopinService.queryPage(params);
        return R.ok().put("page", page);
    }
    
    /**
     * 保存药品信息
     */
    @RequestMapping("/save")
    public R save(@RequestBody YaopinEntity yaopin) {
        // 数据验证逻辑
        ValidatorUtils.validateEntity(yaopin);
        
        // 业务规则校验
        if(yaopinService.existsByYaopinBianhao(yaopin.getYaopinbianhao())) {
            return R.error("药品编号已存在");
        }
        
        yaopinService.save(yaopin);
        return R.ok();
    }
}

模块特色功能:

  • 支持药品图片上传和预览功能
  • 实现药品批次管理和有效期追踪
  • 提供库存预警和缺货提醒机制
  • 支持药品分类多级管理

该药品进销存管理平台通过合理的架构设计和精细的业务实现,为医药流通企业提供了完整的数字化解决方案,有效提升了药品管理的效率和准确性。

本文关键词
SSM框架药品进销存系统源码解析数据库设计库存管理

上下篇

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