石材利润计算库存管理系统设计原理

我们设计这个系统的核心目标:精确计算利润、实时更新库存、优化材料利用率。

系统设计核心原理

这个系统需要详细记录每个业务环节的数据,并通过算法(如排料优化)提高板材利用率,从而最大化利润。


设计方法思路

边角料与废料的判断逻辑和计算原理

一、核心判断标准

1. 尺寸标准(硬性指标)

边角料:可用于后续生产的剩余板材
废料:无法再利用的剩余板材

尺寸界限表

分类最小尺寸要求面积要求形状要求
优质边角料长≥600mm,宽≥400mm≥0.24㎡规整矩形
普通边角料长≥400mm,宽≥300mm≥0.12㎡基本矩形
小型边角料长≥300mm,宽≥200mm≥0.06㎡允许不规则
废料<300mm或<200mm<0.06㎡任何形状

2. 形状和质量标准

形状评分系统

-- 形状完整度计算
CREATE FUNCTION 计算形状完整度(@长度 DECIMAL, @宽度 DECIMAL, @形状描述 NVARCHAR(50))
RETURNS DECIMAL(5,2)
AS
BEGIN
    DECLARE @完整度 DECIMAL(5,2) = 100;

    -- 长宽比异常扣分
    IF @长度 / @宽度 > 3 OR @宽度 / @长度 > 3
        SET @完整度 = @完整度 - 30;

    -- 根据形状描述判断
    IF @形状描述 LIKE '%不规则%'
        SET @完整度 = @完整度 - 20;
    IF @形状描述 LIKE '%三角%'
        SET @完整度 = @完整度 - 15;
    IF @形状描述 LIKE '%梯形%'
        SET @完整度 = @完整度 - 10;

    -- 必须达到60分才算边角料
    RETURN @完整度;
END

质量标准

  • 边角料要求
  • 无贯穿性裂纹
  • 边角完整度≥80%
  • 表面无明显划痕(深度<1mm)
  • 无大面积污染
  • 废料特征
  • 有贯穿性裂纹
  • 断裂或严重破损
  • 表面深度划痕
  • 污染无法清洗

二、智能判断算法

1. 自动化判断流程

CREATE PROCEDURE 自动判断边角料废料
    @原板材编号 NVARCHAR(30),
    @切割后尺寸 NVARCHAR(100),  -- 格式:"1200×800,400×300,200×150"
    @切割质量评分 INT,
    @操作人员判断 NVARCHAR(50) = NULL
AS
BEGIN
    -- 1. 解析切割后的各个碎片尺寸
    CREATE TABLE #碎片表 (
        序号 INT IDENTITY(1,1),
        长度 DECIMAL(10,2),
        宽度 DECIMAL(10,2),
        面积 DECIMAL(10,3),
        形状描述 NVARCHAR(50),
        临时分类 NVARCHAR(20)
    );

    -- 2. 解析尺寸字符串并插入临时表
    -- (实际实现需要解析字符串逻辑)

    -- 3. 自动分类算法
    UPDATE #碎片表
    SET 临时分类 = 
        CASE 
            -- 优质边角料条件
            WHEN 长度 >= 600 AND 宽度 >= 400 AND 面积 >= 0.24 
                 AND dbo.计算形状完整度(长度, 宽度, 形状描述) >= 70
                 AND @切割质量评分 >= 80
                THEN N'优质边角料'

            -- 普通边角料条件
            WHEN 长度 >= 400 AND 宽度 >= 300 AND 面积 >= 0.12
                 AND dbo.计算形状完整度(长度, 宽度, 形状描述) >= 60
                 AND @切割质量评分 >= 70
                THEN N'普通边角料'

            -- 小型边角料条件
            WHEN 长度 >= 300 AND 宽度 >= 200 AND 面积 >= 0.06
                 AND dbo.计算形状完整度(长度, 宽度, 形状描述) >= 50
                 AND @切割质量评分 >= 60
                THEN N'小型边角料'

            -- 否则为废料
            ELSE N'废料'
        END;

    -- 4. 考虑人工判断(如果有)
    IF @操作人员判断 IS NOT NULL
    BEGIN
        UPDATE #碎片表
        SET 临时分类 = @操作人员判断
        WHERE 序号 = 1;  -- 假设只针对主要碎片
    END

    -- 5. 返回分类结果
    SELECT * FROM #碎片表;

    -- 6. 自动入库处理
    INSERT INTO 边角料库存表 (边角料编号, 原板材编号, 尺寸描述, 总面积, 可用状态, 价值评估)
    SELECT 
        dbo.生成边角料编号(),
        @原板材编号,
        尺寸描述,
        面积,
        CASE 
            WHEN 临时分类 IN (N'优质边角料', N'普通边角料', N'小型边角料') 
            THEN N'可用' 
            ELSE N'废料' 
        END,
        dbo.计算边角料价值(长度, 宽度, 面积, 临时分类)
    FROM #碎片表;

    DROP TABLE #碎片表;
END
GO

2. 边角料价值评估算法

CREATE FUNCTION 计算边角料价值(
    @长度 DECIMAL(10,2),
    @宽度 DECIMAL(10,2),
    @面积 DECIMAL(10,3),
    @分类 NVARCHAR(20)
)
RETURNS DECIMAL(10,2)
AS
BEGIN
    DECLARE @基准单价 DECIMAL(10,2);
    DECIMAL @折扣系数 DECIMAL(5,2);

    -- 根据材料类型获取基准单价(假设有外部表或参数)
    SET @基准单价 = 500;  -- 元/平方米,假设值

    -- 根据分类确定折扣
    SET @折扣系数 = 
        CASE @分类
            WHEN N'优质边角料' THEN 0.5  -- 原价的50%
            WHEN N'普通边角料' THEN 0.3  -- 原价的30%
            WHEN N'小型边角料' THEN 0.2  -- 原价的20%
            ELSE 0  -- 废料无价值
        END;

    -- 考虑尺寸折扣
    IF @面积 < 0.1  -- 小于0.1平方米,进一步打折
        SET @折扣系数 = @折扣系数 * 0.8;

    -- 考虑形状折扣
    DECLARE @长宽比 DECIMAL(10,2) = 
        CASE WHEN @长度 > @宽度 THEN @长度/@宽度 ELSE @宽度/@长度 END;

    IF @长宽比 > 2  -- 长宽比过大,利用率低
        SET @折扣系数 = @折扣系数 * 0.9;

    RETURN @面积 * @基准单价 * @折扣系数;
END
GO

三、业务规则和判断流程

1. 现场判断检查表

┌─────────────────┬─────────────────┬─────────────────┐
│   检查项目      │   边角料标准    │   废料特征      │
├─────────────────┼─────────────────┼─────────────────┤
│ 尺寸           │ ≥300×200mm      │ <300×200mm      │
│ 形状           │ 基本规整        │ 极不规则        │
│ 完整性         │ 边角完整        │ 有缺口/裂纹     │
│ 表面质量       │ 轻微划痕        │ 深度损伤        │
│ 厚度均匀性     │ 厚度一致        │ 厚度不均        │
│ 可用性评估     │ 有明确用途      │ 无可用场景      │
└─────────────────┴─────────────────┴─────────────────┘

2. 决策流程图

graph TD
    A[切割完成] --> B{尺寸≥300×200mm?}
    B -->|是| C{形状是否规整?}
    B -->|否| D[标记为废料]
    C -->|是| E{有无裂纹/破损?}
    C -->|否| F[评估:形状不规整<br>可能降级为废料]
    E -->|无| G[标记为边角料]
    E -->|有| H{裂纹是否轻微?}
    H -->|是| I[标记为次等边角料]
    H -->|否| J[标记为废料]

    F --> K{能否二次加工<br>变为规整形状?}
    K -->|能| L[标记为待加工边角料]
    K -->|不能| M[标记为废料]

    G --> N[记录入库<br>计算价值]
    I --> N
    L --> O[安排二次加工]
    D --> P[废料处理流程]
    M --> P
    O --> N

3. 具体尺寸应用场景

不同尺寸边角料的用途

尺寸范围分类可能用途备注
≥1200×600mm大型边角料小灶台面、窗台板可单独接单
800×400mm ~ 1200×600mm中型边角料洗手台、茶几面需要拼接
400×300mm ~ 800×400mm小型边角料锅垫、装饰板批量使用
300×200mm ~ 400×300mm微型边角料马赛克、小饰品特殊工艺
<300×200mm废料填料、垃圾无经济价值

四、数据库设计优化

1. 边角料库存表扩展

ALTER TABLE 边角料库存表
ADD 
    -- 尺寸详细字段
    长度 DECIMAL(10,2),
    宽度 DECIMAL(10,2),
    厚度 DECIMAL(5,1),

    -- 质量评估字段
    质量等级 NVARCHAR(20) DEFAULT N'普通'
        CHECK (质量等级 IN (N'优质', N'普通', N'次等', N'待处理')),
    完整度评分 DECIMAL(5,2),  -- 0-100分
    表面状态 NVARCHAR(50),    -- 描述表面状况

    -- 可用性字段
    建议用途 NVARCHAR(200),
    适用最小订单面积 DECIMAL(10,3),
    拼接复杂度 INT DEFAULT 1,  -- 1-5,越高拼接越复杂

    -- 经济性字段
    评估单价 DECIMAL(10,2),    -- 元/平方米
    总价值 DECIMAL(10,2),
    入库成本 DECIMAL(10,2),    -- 存储、管理成本

    -- 时效性字段
    最佳使用期限 DATE,         -- 建议在此日期前使用
    呆滞标记 BIT DEFAULT 0,    -- 是否呆滞料
    呆滞天数 AS DATEDIFF(DAY, 入库日期, GETDATE());

2. 废料处理记录表

CREATE TABLE 废料处理记录表 (
    记录编号 INT IDENTITY(1,1) PRIMARY KEY,
    来源订单编号 NVARCHAR(30),
    来源板材编号 NVARCHAR(30),
    废料类型 NVARCHAR(20),  -- 切割废料、破损废料等
    废料面积 DECIMAL(10,3),
    废料重量 DECIMAL(10,2),
    处理方式 NVARCHAR(50)  -- 填埋、回收、出售等
        CHECK (处理方式 IN (N'填埋', N'专业回收', N'建筑填料', N'出售', N'其他')),
    处理单价 DECIMAL(10,2),  -- 处理成本或出售收入
    处理总金额 DECIMAL(10,2),
    处理日期 DATETIME DEFAULT GETDATE(),
    处理单位 NVARCHAR(100),
    环保处理证明号 NVARCHAR(50),
    备注 NVARCHAR(MAX),
    CONSTRAINT FK_废料_订单 FOREIGN KEY (来源订单编号) REFERENCES 客户订单表(订单编号),
    CONSTRAINT FK_废料_板材 FOREIGN KEY (来源板材编号) REFERENCES 板材库存表(库存编号)
);

五、实际判断示例

示例1:标准切割场景

-- 场景:2400×1200mm板材切割后
DECLARE @碎片表 TABLE (
    碎片描述 NVARCHAR(100),
    长度 DECIMAL,
    宽度 DECIMAL
);

INSERT INTO @碎片表 VALUES
    (N'主台面', 2200, 600),   -- 订单使用部分
    (N'剩余块1', 2400, 400),  -- 优质边角料
    (N'剩余块2', 2000, 200),  -- 普通边角料(长宽比10:1,利用率低)
    (N'剩余块3', 400, 300),   -- 小型边角料
    (N'剩余块4', 200, 100),   -- 废料
    (N'边角碎料', 50, 30);    -- 废料

-- 系统自动判断
SELECT 
    碎片描述,
    长度,
    宽度,
    长度 * 宽度 / 1000000 AS 面积平方米,
    CASE 
        WHEN 长度 >= 600 AND 宽度 >= 400 THEN N'优质边角料'
        WHEN 长度 >= 400 AND 宽度 >= 300 THEN N'普通边角料'
        WHEN 长度 >= 300 AND 宽度 >= 200 THEN N'小型边角料'
        ELSE N'废料'
    END AS 系统判断,
    CASE 
        WHEN 长度 * 宽度 / 1000000 < 0.06 THEN N'面积太小,废料'
        WHEN 长度 / 宽度 > 3 OR 宽度 / 长度 > 3 THEN N'形状不佳,降级处理'
        ELSE N'符合标准'
    END AS 判断依据
FROM @碎片表;

示例2:实际业务判断规则

实际生产中的判断经验:

1. "三指原则"(现场简易判断):
   - 能用三根手指稳定抓握的 → 废料
   - 需要双手搬运的 → 边角料

2. "用途倒推法":
   - 问:这个碎片能做什么具体产品?
   - 能明确说出1-2种用途 → 边角料
   - 想不到具体用途 → 废料

3. "经济性判断":
   - 存储成本 > 潜在价值 → 废料
   - 加工成本 > 材料价值 → 废料
   - 快速变现可能性高 → 边角料

4. "工艺可行性":
   - 能否直接二次切割? → 边角料
   - 需要复杂加工才能用? → 谨慎评估
   - 加工后尺寸更小? → 可能废料

六、优化建议

1. 动态调整判断标准

-- 基于历史数据的智能调整
CREATE PROCEDURE 动态调整判断标准
AS
BEGIN
    -- 分析过去3个月边角料利用率
    DECLARE @实际利用率 DECIMAL(5,2);

    SELECT @实际利用率 = 
        SUM(CASE WHEN 使用状态 = N'已使用' THEN 1 ELSE 0 END) * 100.0 / COUNT(*)
    FROM 边角料库存表
    WHERE 入库日期 >= DATEADD(MONTH, -3, GETDATE());

    -- 如果利用率低,提高标准
    IF @实际利用率 < 30
    BEGIN
        -- 自动调高标准,减少边角料入库
        UPDATE 系统参数表
        SET 边角料最小尺寸 = N'400×300',
            边角料最小面积 = 0.12
        WHERE 参数类型 = N'边角料标准';
    END
    ELSE IF @实际利用率 > 60
    BEGIN
        -- 利用率高,可以适当放宽标准
        UPDATE 系统参数表
        SET 边角料最小尺寸 = N'300×200',
            边角料最小面积 = 0.06
        WHERE 参数类型 = N'边角料标准';
    END
END
GO

2. 员工培训判断标准

培训要点:
1. 标准工具:准备标准尺寸模板卡(300×200mm、400×300mm等)
2. 现场对比:新切割碎片与模板对比
3. 质量检查:使用强光灯检查裂纹
4. 用途思考:每个碎片思考至少一个潜在用途
5. 记录习惯:及时记录判断理由,便于追溯

考核指标:
- 边角料判断准确率(与最终使用情况对比)
- 废料率控制(目标<15%)
- 边角料再利用价值

3. 技术升级方向

  1. 视觉识别系统:摄像头+AI识别碎片尺寸和质量
  2. 自动测量设备:激光测量,自动记录尺寸
  3. 二维码标签:每个碎片贴码,跟踪全生命周期
  4. 智能推荐系统:根据碎片尺寸推荐最合适用途

七、关键绩效指标

-- 废料率监控
SELECT 
    月份,
    总切割面积,
    废料总面积,
    废料率 = 废料总面积 / 总切割面积 * 100,
    边角料总面积,
    边角料利用率 = 
        (SELECT SUM(使用面积) 
         FROM 订单用料明细表 
         WHERE 库存编号 IN (SELECT 边角料编号 FROM 边角料库存表)
           AND MONTH(切割日期) = MONTH(主表.月份)) 
        / 边角料总面积 * 100
FROM 月度切割统计表
ORDER BY 月份 DESC;

通过这套系统,您可以:

  1. 标准化判断:减少主观因素影响
  2. 价值最大化:每个碎片都评估经济价值
  3. 持续优化:根据数据调整判断标准
  4. 责任追溯:每个判断都有记录可查
© 版权声明
THE END
喜欢就点赞吧
点赞10 分享
石材利润计算库存管理系统设计原理-本牛千智丨专注WorkFine开发
石材利润计算库存管理系统设计原理
此内容为付费阅读,请付费后查看
1000积分
付费阅读