搭建简易采购系统:从需求分析到供应商数据库设计

发布于:2025-06-20 ⋅ 阅读:(13) ⋅ 点赞:(0)

一、需求分析框架(4大核心模块)

关键需求清单

  1. 需求提报(含审批流)

  2. 供应商准入与评估

  3. 比价与订单生成

  4. 基础报表功能


二、技术选型方案

组件 推荐方案 替代方案
前端框架 Vue.js + ElementUI React + Ant Design
后端语言 Python Django Java Spring Boot
数据库 PostgreSQL MySQL
部署方式 Docker容器化 传统虚拟机

三、供应商数据库设计(MySQL示例)

sql

-- 供应商主表
CREATE TABLE suppliers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    tax_id VARCHAR(20) UNIQUE,
    category ENUM('生产商','代理商','服务商') NOT NULL,
    credit_rating TINYINT DEFAULT 3,
    is_approved BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 联系人表
CREATE TABLE contacts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    supplier_id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    phone VARCHAR(20),
    email VARCHAR(100),
    FOREIGN KEY (supplier_id) REFERENCES suppliers(id)
);

-- 评估记录表
CREATE TABLE evaluations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    supplier_id INT NOT NULL,
    delivery_score DECIMAL(3,1),
    quality_score DECIMAL(3,1),
    audit_date DATE,
    FOREIGN KEY (supplier_id) REFERENCES suppliers(id)
);

四、核心功能实现代码

1. 需求审批流(Python示例)

python

复制

下载

# views.py
from django.db import models

class PurchaseRequest(models.Model):
    STATUS_CHOICES = [
        ('draft', '草稿'),
        ('pending', '待审批'),
        ('approved', '已批准'),
        ('rejected', '已拒绝')
    ]
    
    requester = models.ForeignKey(User, on_delete=models.CASCADE)
    product_name = models.CharField(max_length=200)
    quantity = models.IntegerField()
    budget = models.DecimalField(max_digits=10, decimal_places=2)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft')
    
    def approve(self):
        if self.status == 'pending':
            self.status = 'approved'
            self.save()
            # 自动生成采购订单
            PurchaseOrder.objects.create(
                request=self,
                supplier=self.select_supplier()
            )

    def select_supplier(self):
        # 简单的比价算法
        return Supplier.objects.filter(
            category__in=['生产商','代理商']
        ).order_by('price').first()
2. 比价功能(JavaScript示例)

javascript

复制

下载

// compareSuppliers.js
function comparePrices(suppliers) {
  return suppliers.map(s => {
    const totalCost = s.unitPrice * quantity + s.shippingFee;
    return {
      ...s,
      totalCost,
      costPerformance: s.qualityScore / totalCost 
    };
  }).sort((a,b) => a.totalCost - b.totalCost);
}

五、系统部署方案

最小化架构

text

前端Nginx → Django应用 → PostgreSQL
       ↑           ↑
    (静态文件)   (Redis缓存)

Docker-compose配置

yaml

version: '3'
services:
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: example
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

六、实施路线图(8周计划)

阶段 任务 交付物
第1周 需求确认与原型设计 系统原型图
第2周 数据库搭建 可运行的数据库结构
第3-4周 核心功能开发 需求/订单管理模块
第5周 供应商管理模块 供应商CRUD功能
第6周 基础报表功能 采购数据分析看板
第7周 系统集成测试 测试报告
第8周 部署上线 可运行的生产环境

七、扩展性设计建议

  1. API接口预留

    python

    # api/views.py
    from rest_framework import viewsets
    
    class SupplierViewSet(viewsets.ModelViewSet):
        queryset = Supplier.objects.all()
        serializer_class = SupplierSerializer
  2. 数据导出功能

    sql

    -- 定期备份脚本
    pg_dump -U postgres procurement > backup_$(date +%Y%m%d).sql

常见问题解决方案

  1. 性能瓶颈

    • 添加数据库索引:

      sql

      CREATE INDEX idx_supplier_category ON suppliers(category);
    • 启用查询缓存:

      python

      # settings.py
      CACHES = {
          'default': {
              'BACKEND': 'django.core.cache.backends.redis.RedisCache',
              'LOCATION': 'redis://127.0.0.1:6379',
          }
      }
  2. 权限控制

    python

    # permissions.py
    class IsPurchaser(BasePermission):
        def has_permission(self, request, view):
            return request.user.groups.filter(name='Purchasers').exists()

该方案可实现基础采购管理功能,成本控制在5万元以内(自研团队)。如需增强功能,建议后续逐步添加:

  1. 电子签章集成

  2. 移动端审批

  3. 供应商门户自助服务

参考案例:

鲸采云SRM是一个全程数字化采购管理系统(Supplier Relationship Management),旨在满足企业采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招投标、合同订单执行的全过程管理。 


网站公告

今日签到

点亮在社区的每一天
去签到