ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于SpringBoot的药品库存与进销存系统毕业设计源码(源码+lw+部署文档+讲解等)

基于SpringBoot的药品库存与进销存系统毕业设计源码(源码+lw+部署文档+讲解等) 博主介绍✌ 专注于VUE,小程序安卓Java,python,物联网专业有18年开发经验长年从事毕业指导项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的本研究聚焦于药品库存与进销存管理的数字化转型旨在通过构建基于SpringBoot框架的系统实现药品全生命周期的可视化追踪与精准调度。当前传统药品库存管理多依赖纸质记录或分散的电子表格导致数据更新滞后、信息孤岛现象突出进而影响库存周转率与采购决策的科学性。尤其在药品监管日趋严格的背景下缺乏统一的数据平台不仅增加了合规成本也提升了药品安全风险。为此本研究计划搭建一套集成化、模块化的进销存系统以满足现代药品管理对实时性、准确性与可追溯性的高标准要求。系统设计将采用SpringBoot微服务架构利用其快速开发与高可扩展性的优势构建包括库存管理、采购管理、销售管理及报表分析等核心模块。通过RESTful API实现前后端分离前端采用Vue.js或React框架进行交互式展示从而提升用户体验与操作效率。数据层将使用MySQL或PostgreSQL数据库并结合Redis缓存技术确保高并发访问下的数据一致性与查询性能。为满足药品追溯需求系统将内置批次号、有效期及生产厂家等属性并支持条码扫描与二维码识别实现从采购到销售的全链路追踪。研究目标包括一是实现药品库存的实时监控与自动预警机制降低库存积压与过期损失二是构建基于数据分析的需求预测模型提升采购决策的科学性与精准度三是提供合规报告生成模块支持药监部门的审计与监管需求四是通过系统化的数据治理提升信息共享与协同效率。研究贡献在于将SpringBoot生态与药品管理业务深度融合为中小型药品企业提供低成本、高可维护性的解决方案并为后续在大数据、人工智能等领域的扩展奠定技术基础。预期成果将包括一份完整的系统设计文档与实现代码一套可交付使用的药品进销存管理系统一篇基于实验数据验证系统性能与业务价值的学术论文。通过本研究期望为药品行业提供一种高效、透明、合规的库存管理模式促进药品供应链的健康发展并为相关领域的技术创新与应用推广提供可借鉴的经验与方法。二、研究意义本研究的意义体现在多维度的技术创新与社会价值提升。首先在药品供应链管理领域传统的人工记录与分散系统已难以满足日益增长的监管要求与运营效率需求导致库存积压、过期损失以及药品安全风险显著增加。通过构建基于SpringBoot框架的进销存系统可实现数据统一、实时更新与可视化展示从而显著降低库存周转时间、提升采购决策精准度并在合规审计中提供完整可追溯的记录满足药监部门对药品全生命周期管理的严格标准。其次该系统通过微服务架构与RESTful接口实现前后端分离兼容多种终端与业务场景具备高度可扩展性与易维护性为中小型药企提供低成本、高性能的数字化升级路径促进行业整体技术水平的提升。再次系统内置批次号、有效期、生产厂家等关键属性并支持条码扫描与二维码识别实现从采购到销售的全链路追踪为药品召回与安全预警提供技术支撑显著增强公共健康保障能力。最后通过对库存数据的实时分析与预测模型的构建可为企业提供基于大数据的需求预测与库存优化方案提升资源配置效率降低运营成本同时为学术界在供应链管理、数据挖掘与人工智能应用方面提供可验证的案例研究。本研究亦具有深远的社会意义。药品安全关系到公众健康与生命安全而系统化、数字化的库存管理能够及时发现并处理潜在风险降低因过期或错误配药导致的医疗事故概率。与此同时系统对数据完整性与可追溯性的强调为监管部门提供了透明、高效的监督手段有助于提升药品市场的公平竞争环境。经济层面而言通过降低库存成本、提升周转率企业可实现利润最大化并将节省的成本投入研发与创新从而形成良性循环。技术层面本研究通过将SpringBoot生态与行业业务深度融合验证了微服务架构在复杂业务场景下的可行性为后续在医疗健康、物流管理等领域的技术推广提供了可复制、可扩展的范式。综上所述本研究不仅在技术实现层面推动了药品进销存系统的现代化升级也在监管合规、公共安全与经济效益等多重维度产生积极影响。其成果将为药品行业提供一套高效、透明、可持续的管理框架并为相关学科的交叉研究与应用实践奠定坚实基础。三、国内外研究现状国内外在药品库存与进销存系统研究领域均已形成多条技术路线且各自取得了显著成果。总体来看研究重点可划分为三大方向一是系统集成与架构优化二是数据驱动的决策支持三是合规与安全保障。在系统集成与架构优化方面国外学者普遍采用微服务架构、容器化技术以及云原生理念以提升系统弹性与可维护性。通过将业务模块拆分为独立服务能够实现按需扩容、灰度发布及快速迭代。国内研究则侧重于基于SpringBoot的快速开发框架将其与传统ERP系统进行深度集成利用Spring Data JPA、MyBatis等持久化技术实现数据库操作的简化并通过Actuator监控服务健康状态。两者共同关注的核心是如何在保证业务连续性的前提下实现高并发访问与实时数据同步。数据驱动的决策支持是当前研究热点之一。国外团队多利用大数据平台如Hadoop、Spark对历史库存、采购与销售数据进行挖掘构建需求预测模型、库存优化算法及动态补货策略。国内研究则以机器学习为核心结合时间序列分析与深度学习技术对药品需求波动进行精准预测并将预测结果通过RESTful API实时推送至前端展示。两者在算法精度与实现效率上均取得了较大进展但在模型可解释性与业务可操作性方面仍存在差距。合规与安全保障方面国外研究多聚焦于区块链技术在药品溯源中的应用通过分布式账本实现不可篡改的批次信息记录提升监管透明度。国内则侧重于基于标准化数据模型如HL7、FHIR的信息互通与合规审计模块利用Spring Security实现权限控制与日志审计满足药监部门对数据完整性与可追溯性的严格要求。两者均强调在系统设计中嵌入合规检查点以降低监管风险。在技术成果层面国外已有若干开源项目提供了完整的药品库存管理框架支持多租户、分布式事务与弹性伸缩。国内则出现了多套基于SpringBoot的企业级解决方案涵盖库存盘点、采购审批、销售报表等核心功能并通过自研插件实现条码扫描、二维码识别与RFID读取。两者在功能完整性、性能表现与易用性方面均获得了业界认可。尽管国内外研究已取得显著进展但仍存在技术融合度不足、跨系统数据一致性难以保证以及对人工智能深度学习模型的可解释性关注不足等问题。未来研究可进一步探索微服务与区块链的协同治理、强化模型可解释性与业务决策的透明度并通过标准化接口实现与医疗信息系统的无缝对接以推动药品库存管理向更高效、更安全、更合规的方向发展。四、预期达到目标及解决的关键问题预期目标在于构建一套基于SpringBoot技术栈的药品库存与进销存系统该系统能够实现药品全生命周期的实时可视化管理、精准需求预测以及合规审计支持从而显著提升企业运营效率与药品安全保障。首先系统应通过微服务架构将库存管理、采购审批、销售订单及报表分析等核心业务模块解耦实现按需扩容与灰度发布保证在高并发访问场景下的稳定性与可维护性其次系统需集成条码扫描、二维码识别及RFID读取等硬件接口实现药品批次号、有效期及生产厂家信息的自动采集与校验从而降低人工录入错误率并提升数据完整性再次系统应嵌入基于时间序列预测与机器学习算法的需求预测模型为采购决策提供科学依据并通过库存优化算法实现安全库存水平与周转率的平衡最后系统需提供合规报表生成模块支持药监部门对药品进销存数据的实时审计与追溯查询并通过权限控制与日志审计机制保障数据安全与可追溯性。在实现上述目标的过程中将面临若干关键技术问题。首要问题是如何在多租户环境下实现数据隔离与一致性尤其是在分布式事务处理与缓存同步方面需要设计可靠的补偿机制与最终一致性协议以避免库存信息冲突与错误。其次系统需兼容现有的企业资源计划ERP系统及药品管理信息系统如何进行跨系统数据映射、实时同步与格式标准化是实现无缝集成的核心挑战第三高并发访问场景下的性能瓶颈将主要集中在数据库读写压力与缓存失效策略上需要通过读写分离、分表分库以及Redis等缓存技术来提升响应速度第四药品信息涉及个人健康与安全数据隐私与安全性要求极高如何在保证业务功能的前提下实现加密存储、访问控制与审计日志完整记录是系统设计不可忽视的要点第五预测模型的可解释性与业务可操作性同样重要如何将复杂的机器学习结果转化为易于理解的决策建议并在系统中提供可视化解释界面将直接影响模型在实际业务中的接受度。为解决上述关键问题本研究计划采用分布式事务框架如Saga模式与消息队列技术实现最终一致性通过统一数据接口层与标准化数据模型如HL7、FHIR实现跨系统的数据映射与同步在数据库层面引入分库分表与读写分离策略并结合Redis缓存及Cache Aside模式降低数据库压力在安全层面使用TLS加密传输、AES对称加密存储关键字段、RBAC权限模型以及审计日志链式记录在预测模型方面采用LIME或SHAP等解释技术将模型输出与业务规则相结合并通过可视化仪表盘呈现预测结果与不确定性指标。通过上述技术路径系统将实现高可用、高性能、合规安全的药品库存与进销存管理为企业提供可靠的数据支撑与决策依据。五、研究内容本研究以构建基于SpringBoot技术栈的药品库存与进销存系统为核心目标整体研究内容可划分为需求分析、系统架构设计、关键技术实现、性能评估与应用验证四大模块。首先在需求分析阶段将通过访谈与问卷方式获取药品企业在库存管理、采购审批、销售订单处理以及报表分析等方面的痛点与功能需求并结合药监部门对药品溯源与合规审计的法规要求形成系统功能规格说明书。随后在系统架构设计阶段将采用微服务架构模式将业务层拆分为库存服务、采购服务、销售服务、报表服务以及通用基础设施服务并通过Spring Cloud Gateway实现统一路由与鉴权在数据层面引入分库分表策略与读写分离机制使用MySQL或PostgreSQL作为主数据库并配合Redis缓存实现热点数据的快速访问在消息总线层面采用Kafka或RabbitMQ实现服务间异步通信保证系统的可伸缩性与高可用性。在关键技术实现阶段首先针对库存管理模块将设计基于条码扫描、二维码识别及RFID读取的硬件接口层实现药品批次号、有效期及生产厂家信息的自动采集与校验其次在采购服务中引入基于时间序列预测与机器学习算法的需求预测模型利用历史采购与销售数据训练LSTM或Prophet模型并通过RESTful API将预测结果实时推送至前端展示再次在销售服务中实现订单管理、库存扣减与退货处理并通过Saga模式实现跨服务的最终一致性随后在报表服务中集成Spring Batch进行批量数据处理支持多维度报表生成与自定义查询并提供可视化仪表盘展示库存周转率、采购成本及合规指标在安全层面将采用JWT鉴权、RBAC权限控制与TLS加密传输并通过日志审计链记录关键操作满足药监部门对数据完整性与可追溯性的监管要求。在性能评估与应用验证阶段将通过构建测试环境模拟高并发访问场景对系统的响应时间、吞吐量以及数据库压力进行基准测试同时利用A/B测试方法验证需求预测模型对采购决策的影响并通过药品库存周转率、过期损失率等关键指标评估系统改进效果此外将与现有ERP系统进行接口对接测试验证数据映射与同步的完整性与一致性最后将在实际药品企业中部署试点收集用户反馈并进行迭代优化形成可推广的技术方案。综上所述本研究通过需求分析、系统架构设计、关键技术实现以及性能评估与应用验证四个层面系统性地构建了一套高可用、高性能、合规安全的药品库存与进销存管理系统为药品企业提供数字化转型的技术支撑并为相关学术研究与行业实践提供可复制、可扩展的技术范式。六、需求分析用户需求方面系统的主要使用者包括药房管理人员、采购主管、销售人员、系统管理员以及监管部门审计人员。药房管理人员需要能够实时查看各类药品的库存数量、批次信息及有效期并在库存低于预设阈值或即将到期时获得自动提醒以便及时补货或处理过期药品采购主管则关注采购订单的生成、审批流程以及与供应商的对账情况需通过系统快速下单并跟踪到货状态销售人员需要在点单过程中能够即时查询库存避免因缺货导致的客户流失并支持退货操作及相应库存调整系统管理员负责用户权限管理、系统监控与维护要求系统具备灵活的角色分配与日志审计功能以满足企业内部治理需求监管部门审计人员则需要通过系统获取完整的药品进销存记录支持批次溯源查询和合规报告生成从而便于进行药品安全监管。上述各类用户共同要求系统界面友好、操作流程简洁、数据更新及时并且在多终端PC、移动设备之间保持一致的使用体验。功能需求方面系统需实现完整的进销存业务流程具体包括库存管理模块、采购管理模块、销售管理模块及报表与分析模块。库存管理模块应支持药品入库、出库、盘点及调拨操作并能够记录批次号、生产厂家、有效期等关键信息在库存低于预设阈值或药品即将到期时系统需自动触发告警并推送至相关人员采购管理模块需要提供订单创建、审批工作流、供应商信息维护以及到货确认功能并支持与外部采购系统的接口对接销售管理模块应实现点单、库存扣减、退货处理以及销售统计所有操作均需记录时间戳和操作者信息报表与分析模块则需提供库存周转率、成本核算、销量趋势等多维度报表并支持自定义查询与导出功能此外系统还必须具备条码扫描与RFID读取接口以实现药品信息的自动采集在安全层面系统需实现基于角色的访问控制、数据加密传输、审计日志记录以及合规报表生成以满足监管要求。通过上述功能模块的协同工作系统能够为药品企业提供高效、准确且合规的库存与进销存管理解决方案。七、可行性分析经济可行性方面本系统采用开源技术栈主要依托SpringBoot、Spring Cloud、MySQL、Redis等成熟框架避免了昂贵的商业软件许可费用在硬件投入上仅需标准服务器与条码扫描设备即可满足业务需求降低初期资本支出系统模块化设计使得后期功能扩展可按需增购或自行开发进一步降低维护成本通过实现库存周转率提升与过期损失减少企业可在短期内收回投入并实现利润增长从而证明项目的经济效益。社会可行性方面药品库存管理直接关系到公共健康与安全系统能够提高药品供应链的透明度与可追溯性满足监管部门对药品安全的合规要求在提升企业运营效率的同时也为消费者提供更可靠的药品供应保障增强社会信任度此外本研究将采用开放接口与标准化数据模型促进不同企业之间的信息互通推动行业整体数字化升级通过对中小药企低成本、高可维护性的解决方案可缓解行业数字鸿沟实现技术普惠。技术可行性方面SpringBoot生态已在国内外众多企业中得到广泛验证其微服务架构、自动配置与插件化特性能够快速满足业务模块的拆分与扩展需求基于Kafka或RabbitMQ的消息总线可实现高并发下的异步通信保障系统弹性通过Saga模式与分布式事务补偿机制可在多服务协同中保持数据一致性Redis缓存与读写分离策略能够显著提升数据库访问性能在安全层面JWT鉴权、RBAC权限控制以及TLS加密传输已成为行业标准可满足药品信息的保密与审计需求对条码扫描与RFID读取的硬件接口已成熟且可通过现有SDK实现快速集成。综上所述技术实现路径成熟可靠具备实现目标的充分可行性。八、功能分析系统功能模块可划分为用户管理与权限控制、库存管理、采购管理、销售管理、报表与分析以及合规与安全保障六大核心部分。用户管理与权限控制模块负责系统用户的注册、登录、角色分配以及权限校验采用JWT鉴权机制实现无状态身份验证并通过RBAC模型细粒度授权以满足不同岗位的业务需求库存管理模块涵盖药品入库、出库、盘点与调拨功能系统能够自动识别条码或二维码并读取批次号、生产厂家及有效期信息在库存数量低于阈值或药品即将到期时触发告警并支持手动调整与历史记录查询采购管理模块提供采购订单创建、审批工作流、供应商信息维护以及到货确认流程订单状态可在系统中实时跟踪支持与外部采购系统的接口对接实现数据同步销售管理模块实现点单、库存扣减、退货处理与销售统计所有操作均记录时间戳与操作者信息并支持快速查询历史交易记录报表与分析模块提供库存周转率、成本核算、销量趋势等多维度报表并支持自定义查询与导出功能利用Spring Batch进行批量数据处理合规与安全保障模块集成数据加密存储、传输加密、审计日志链以及合规报表生成满足药监部门对药品进销存数据完整性与可追溯性的监管要求。通过上述模块的协同工作系统能够实现药品库存与进销存全过程的数字化管理并提供高效、准确且合规的数据支持。九、数据库设计表users字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 用户编号 | 36 | varchar(36) | 主键UUID| 唯一标识用户username | 登录名 | 50 | varchar(50) | 唯一约束| 必填字段password_hash | 密码哈希值 | 255 | varchar(255) | -| 使用bcrypt等加密算法email | 邮箱地址 | 100 | varchar(100) | 唯一约束| 可用于找回密码phone | 联系电话 | 20 | varchar(20) | -| 可为空status | 用户状态0禁用1启用 | 1 | tinyint(1) | -| 默认1created_at | 创建时间 | 19 | datetime | -| 自动生成表roles字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 角色编号 | 36 | varchar(36) | 主键UUID| 唯一标识角色name | 角色名称 | 50 | varchar(50) | 唯一约束| 如管理员、采购员、销售员表permissions字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 权限编号 | 36 | varchar(36) | 主键UUID| 唯一标识权限name | 权限名称 | 100 | varchar(100) | 唯一约束| 如“查看库存”“编辑采购”表user_role字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注user_id | 用户编号 | 36 | varchar(36) | 外键users.id| 与用户关联role_id | 角色编号 | 36 | varchar(36) | 外键roles.id| 与角色关联表role_permission字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注role_id | 角色编号 | 36 | varchar(36) | 外键roles.id| 与角色关联permission_id | 权限编号 | 36 | varchar(36) | 外键permissions.id| 与权限关联表categories字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 分类编号 | 36 | varchar(36) | 主键UUID|name | 分类名称 | 100 | varchar(100) | -|parent_id | 父级分类编号若无则为空 | 36 | varchar(36) | 外键categories.id|表products字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 产品编号 | 36 | varchar(36) | 主键UUID|name | 产品名称 | 200 | varchar(200) | -|specs | 产品规格描述如“500mg/片” | 100 | varchar(100) | -|category_id | 所属分类编号 | 36 | varchar(36) | 外键categories.id|表suppliers字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 供应商编号 | 36 | varchar(36) | 主键UUID|name | 供应商名称 | 200 | varchar(200) | -|address | 地址信息 | 255 | varchar(255) | -|contact_phone | 联系电话 | 20 | varchar(20) | -|email | 邮箱地址 | 100 | varchar(100) | -|表batches字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 批次编号内部唯一 | 36 | varchar(36) | 主键UUID|batch_number | 批号供应商提供 | 50 | varchar(50) | 唯一约束|product_id | 产品编号 | 36 | varchar(36) | 外键products.id|supplier_id | 供应商编号 | 36 | varchar(36) | 外键suppliers.id|manufacture_date | 生产日期 | 10 | date | -|expiry_date | 有效期截止日 | 10 | date | -|cost_price | 成本价单价 | 10,2 | decimal(10,2) | -|retail_price | 零售价单价 | 10,2 | decimal(10,2) | -|stock_quantity | 当前库存数量 | 11 | int(11) | -|表stock_movements字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 移动记录编号 | 36 | varchar(36) | 主键UUID|movement_type | 移动类型IN/OUT/ADJUST | 10 | varchar(10) | -|product_id | 产品编号 | 36 | varchar(36) | 外键products.id|batch_id | 批次编号 | 36 | varchar(36) | 外键batches.id|quantity | 移动数量正数 | 11 | int(11) | -|reason | 移动原因如采购、销售、盘点 | 255 | varchar(255) | -|user_id | 操作者编号 | 36 | varchar(36) | 外键users.id|timestamp | 操作时间戳 | 19 | datetime | -|表purchase_orders字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 采购单编号 | 36 | varchar(36) | 主键UUID|purchase_order_no | 系统生成的采购单号如PO20231001 | 20 | varchar(20) | 唯一约束|supplier_id | 供应商编号 | 36 | varchar(36) | 外键suppliers.id|status | 单据状态0待审批1已审批2已收货3已完成 | 1 | tinyint(1) | -|total_amount | 总金额含税 | 10,2 | decimal(10,2) | -|created_at | 创建时间戳 | 19 | datetime | -|approved_by | 审批人编号若已审批 | 36 | varchar(36) | 外键users.id|表purchase_order_items字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 采购单行项目编号 | 36 | varchar(36) | 主键UUID|purchase_order_id | 所属采购单编号 | 36 | varchar(36) | 外键purchase_orders.id|product_id | 产品编号 | 36 | varchar(36) | 外键products.id|batch_id | 批次编号预期到货批号 | 36 | varchar(36) | 外键batches.id|quantity | 订购数量 | 11 | int(11) | -|unit_price | 单价采购价 | 10,2 | decimal(10,2) | -|total_price | 行项目总价quantity*unit_price | 10,2 | decimal(10,2) | -|表sales_orders字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 销售单编号 | 36 | varchar(36) | 主键UUID|sales_order_no | 系统生成的销售单号如SO20231001 | 20 | varchar(20) | 唯一约束|customer_name | 客户名称或客户编号 | 200 | varchar(200) | -|status | 单据状态0待付款1已付款2已发货3已完成 | 1 | tinyint(1) | -|total_amount | 总金额含税 | 10,2 | decimal(10,2) | -|created_at | 创建时间戳 | 19 | datetime | -|user_id | 操作者编号创建人 | 36 | varchar(36) | 外键users.id|表sales_order_items字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 销售单行项目编号 | 36 | varchar(36) | 主键UUID|sales_order_id | 所属销售单编号 | 36 | varchar(36) | 外键sales_orders.id|product_id | 产品编号 | 36 | varchar(36) | 外键products.id|batch_id | 批次编号实际发货批号 | 36 | varchar(36) | 外键batches.id|quantity | 销售数量 | 11 | int(11) | -|unit_price | 单价零售价 | 10,2 | decimal(10,2) | -|total_price | 行项目总价quantity*unit_price | 10,2 | decimal(10,2) | -|表audit_logs字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注id | 日志编号 | 36 | varchar(36) | 主键UUID|user_id | 操作者编号 | 36 | varchar(36) | 外键users.id|event_type | 事件类型如LOGIN、CREATE_ORDER、UPDATE_STOCK | 50 | varchar(50) | -|description | 事件描述信息 | 255 | varchar(255) | -|timestamp | 事件时间戳 | 19 | datetime | -|以上表结构遵循第一范式至第三范式避免重复数据与冗余主键采用UUID保证全局唯一外键约束确保参照完整性字段类型与大小根据业务需求合理设定。十、建表语句CREATE DATABASE IF NOT EXISTS pharma_inventory CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE pharma_inventory;-- 用户表CREATE TABLE users (id VARCHAR(36) NOT NULL,username VARCHAR(50) NOT NULL,password_hash VARCHAR(255) NOT NULL,email VARCHAR(100),phone VARCHAR(20),status TINYINT(1) DEFAULT 1,created_at DATETIME DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (id),UNIQUE KEY uq_users_username (username),UNIQUE KEY uq_users_email (email)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 角色表CREATE TABLE roles (id VARCHAR(36) NOT NULL,name VARCHAR(50) NOT NULL,PRIMARY KEY (id),UNIQUE KEY uq_roles_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 权限表CREATE TABLE permissions (id VARCHAR(36) NOT NULL,name VARCHAR(100) NOT NULL,PRIMARY KEY (id),UNIQUE KEY uq_permissions_name (name)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 用户角色关联表CREATE TABLE user_role (user_id VARCHAR(36) NOT NULL,role_id VARCHAR(36) NOT NULL,PRIMARY KEY (user_id, role_id),CONSTRAINT fk_user_role_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_user_role_role FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 角色权限关联表CREATE TABLE role_permission (role_id VARCHAR(36) NOT NULL,permission_id VARCHAR(36) NOT NULL,PRIMARY KEY (role_id, permission_id),CONSTRAINT fk_role_permission_role FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_role_permission_permission FOREIGN KEY (permission_id) REFERENCES permissions(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 分类表CREATE TABLE categories (id VARCHAR(36) NOT NULL,name VARCHAR(100) NOT NULL,parent_id VARCHAR(36),PRIMARY KEY (id),CONSTRAINT fk_categories_parent FOREIGN KEY (parent_id) REFERENCES categories(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 产品表CREATE TABLE products (id VARCHAR(36) NOT NULL,name VARCHAR(200) NOT NULL,specs VARCHAR(100),category_id VARCHAR(36),PRIMARY KEY (id),CONSTRAINT fk_products_category FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 供应商表CREATE TABLE suppliers (id VARCHAR(36) NOT NULL,name VARCHAR(200) NOT NULL,address VARCHAR(255),contact_phone VARCHAR(20),email VARCHAR(100),PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 批次表CREATE TABLE batches (id VARCHAR(36) NOT NULL,batch_number VARCHAR(50) NOT NULL,product_id VARCHAR(36) NOT NULL,supplier_id VARCHAR(36) NOT NULL,manufacture_date DATE,expiry_date DATE,cost_price DECIMAL(10,2),retail_price DECIMAL(10,2),stock_quantity INT DEFAULT 0,PRIMARY KEY (id),UNIQUE KEY uq_batches_batch_number (batch_number),CONSTRAINT fk_batches_product FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_batches_supplier FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 库存变动表CREATE TABLE stock_movements (id VARCHAR(36) NOT NULL,movement_type VARCHAR(10) NOT NULL,product_id VARCHAR(36) NOT NULL,batch_id VARCHAR(36) NOT NULL,quantity INT NOT NULL,reason VARCHAR(255),user_id VARCHAR(36),timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (id),CONSTRAINT fk_stock_movements_product FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_stock_movements_batch FOREIGN KEY (batch_id) REFERENCES batches(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_stock_movements_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 采购单表CREATE TABLE purchase_orders (id VARCHAR(36) NOT NULL,purchase_order_no VARCHAR(20) NOT NULL,supplier_id VARCHAR(36) NOT NULL,status TINYINT(1) DEFAULT 0,total_amount DECIMAL(10,2),created_at DATETIME DEFAULT CURRENT_TIMESTAMP,approved_by VARCHAR(36),PRIMARY KEY (id),UNIQUE KEY uq_purchase_orders_no (purchase_order_no),CONSTRAINT fk_purchase_orders_supplier FOREIGN KEY (supplier_id) REFERENCES suppliers(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_purchase_orders_user FOREIGN KEY (approved_by) REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 采购单行项目表CREATE TABLE purchase_order_items (id VARCHAR(36) NOT NULL,purchase_order_id VARCHAR(36) NOT NULL,product_id VARCHAR(36) NOT NULL,batch_id VARCHAR(36),quantity INT NOT NULL,unit_price DECIMAL(10,2),total_price DECIMAL(10,2),PRIMARY KEY (id),CONSTRAINT fk_purchase_order_items_order FOREIGN KEY (purchase_order_id) REFERENCES purchase_orders(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_purchase_order_items_product FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_purchase_order_items_batch FOREIGN KEY (batch_id) REFERENCES batches(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 销售单表CREATE TABLE sales_orders (id VARCHAR(36) NOT NULL,sales_order_no VARCHAR(20) NOT NULL,customer_name VARCHAR(200),status TINYINT(1) DEFAULT 0,total_amount DECIMAL(10,2),created_at DATETIME DEFAULT CURRENT_TIMESTAMP,user_id VARCHAR(36) NOT NULL,PRIMARY KEY (id),UNIQUE KEY uq_sales_orders_no (sales_order_no),CONSTRAINT fk_sales_orders_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 销售单行项目表CREATE TABLE sales_order_items (id VARCHAR(36) NOT NULL,sales_order_id VARCHAR(36) NOT NULL,product_id VARCHAR(36) NOT NULL,batch_id VARCHAR(36),quantity INT NOT NULL,unit_price DECIMAL(10,2),total_price DECIMAL(10,2),PRIMARY KEY (id),CONSTRAINT fk_sales_order_items_order FOREIGN KEY (sales_order_id) REFERENCES sales_orders(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_sales_order_items_product FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_sales_order_items_batch FOREIGN KEY (batch_id) REFERENCES batches(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 审计日志表CREATE TABLE audit_logs (id VARCHAR(36) NOT NULL,user_id VARCHAR(36),event_type VARCHAR(50),description VARCHAR(255),timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (id),CONSTRAINT fk_audit_logs_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 索引优化CREATE INDEX idx_stock_movements_product ON stock_movements(product_id);CREATE INDEX idx_stock_movements_batch ON stock_movements(batch_id);CREATE INDEX idx_purchase_order_items_order ON purchase_order_items(purchase_order_id);CREATE INDEX idx_sales_order_items_order ON sales_order_items(sales_order_id);CREATE INDEX idx_batches_product ON batches(product_id);CREATE INDEX idx_batches_supplier ON batches(supplier_id);文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式
返回列表