You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用纯PHP实现库存预测,计算后续5个数值?

PHP库存预测逻辑实现

需求明确

  • 库存状态判定
    • 红色预警:库存数值 低于最小库存值
    • 橙色预警:(可根据业务补充规则,当前按优先处理逻辑预留)
    • 绿色正常:库存数值处于「最小库存值 ≤ 库存 ≤ 最大库存值」区间
  • 预测规则
    • 存在红/橙预警的库存时,优先对这类库存计算补库预测值
    • 所有库存均为绿色正常状态时,以「最小库存值 + 固定生产增量」为基准,生成后续5个预测数值
  • 生产触发:生产指定品类(如band 2)时,对应库存增加固定增量(如+4)

核心实现代码

<?php
// 模拟从数据库获取的库存数据(示例:4个库存项,含品类、当前库存、最小/最大库存)
$inventoryData = [
    ['category' => 'band 1', 'current_stock' => 3, 'min_stock' => 5, 'max_stock' => 15],
    ['category' => 'band 2', 'current_stock' => 6, 'min_stock' => 5, 'max_stock' => 15],
    ['category' => 'band 3', 'current_stock' => 12, 'min_stock' => 5, 'max_stock' => 15],
    ['category' => 'band 4', 'current_stock' => 4, 'min_stock' => 5, 'max_stock' => 15],
];

// 固定生产增量(生产指定品类时的库存增加值)
$productionIncrement = 4;
// 预测数量
$predictCount = 5;

/**
 * 判断库存状态
 * @param int $currentStock 当前库存
 * @param int $minStock 最小库存
 * @param int $maxStock 最大库存
 * @return string 状态标识:red/orange/green
 */
function getStockStatus(int $currentStock, int $minStock, int $maxStock): string
{
    if ($currentStock < $minStock) {
        return 'red';
    }
    // 可在此补充橙色状态的判定规则,比如当前库存介于min和min+增量之间
    // elseif ($currentStock >= $minStock && $currentStock < $minStock + $productionIncrement) {
    //     return 'orange';
    // }
    elseif ($currentStock <= $maxStock) {
        return 'green';
    }
    // 超出最大库存的情况可自行扩展
    return 'green';
}

/**
 * 生成库存预测值
 * @param array $inventoryData 库存数据集
 * @param int $productionIncrement 生产增量
 * @param int $predictCount 预测数量
 * @return array 预测结果
 */
function generateStockPredictions(array $inventoryData, int $productionIncrement, int $predictCount): array
{
    $predictions = [];
    $hasWarningStock = false;

    // 先检查是否存在红/橙预警的库存
    foreach ($inventoryData as $item) {
        $status = getStockStatus($item['current_stock'], $item['min_stock'], $item['max_stock']);
        if ($status === 'red' || $status === 'orange') {
            $hasWarningStock = true;
            break;
        }
    }

    if ($hasWarningStock) {
        // 优先处理预警库存:计算补库到最小库存后的预测值(可根据业务调整补库目标)
        foreach ($inventoryData as &$item) {
            $status = getStockStatus($item['current_stock'], $item['min_stock'], $item['max_stock']);
            if ($status === 'red' || $status === 'orange') {
                $current = $item['current_stock'];
                $itemPredict = [];
                // 每次生产指定品类时库存+增量,直到达到安全线(示例:补到最小库存)
                for ($i = 0; $i < $predictCount; $i++) {
                    // 如果当前库存已达标,维持在最小库存水平
                    if ($current >= $item['min_stock']) {
                        $current = $item['min_stock'];
                    } else {
                        // 生产对应品类,库存增加增量
                        if ($item['category'] === 'band 2') {
                            $current += $productionIncrement;
                        } else {
                            // 其他品类的生产规则可在此扩展
                            $current += $productionIncrement;
                        }
                    }
                    $itemPredict[] = $current;
                }
                $predictions[$item['category']] = $itemPredict;
            }
        }
    } else {
        // 所有库存正常:基于最小库存+增量生成后续预测值
        foreach ($inventoryData as $item) {
            $baseValue = $item['min_stock'] + $productionIncrement;
            $itemPredict = [];
            for ($i = 0; $i < $predictCount; $i++) {
                // 可根据业务调整是否持续增长或维持,示例为维持基准值
                $itemPredict[] = $baseValue;
                // 如果需要每次生产递增,可改为 $baseValue + ($i * $productionIncrement)
            }
            $predictions[$item['category']] = $itemPredict;
        }
    }

    return $predictions;
}

// 执行预测并输出结果
$predictResult = generateStockPredictions($inventoryData, $productionIncrement, $predictCount);
print_r($predictResult);
?>

代码说明

  1. 库存状态判断函数:getStockStatus 实现基础的红/绿状态判定,橙色状态可根据业务规则补充(比如库存接近最小库存的区间)
  2. 预测生成函数:generateStockPredictions 核心逻辑:
    • 先遍历库存数据,检查是否存在预警状态(红/橙)
    • 有预警时,针对预警库存计算补库后的预测值(示例为补到最小库存水平,可按需调整补库目标)
    • 无预警时,以「最小库存+生产增量」为基准生成5个预测值
  3. 生产规则:针对指定品类(如band 2)的增量逻辑已在代码中预留,可扩展其他品类的生产规则

内容的提问来源于stack exchange,提问作者Bba Kku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:08:34