假如工厂有现有产品50个,产品配件500套,工厂每天生产20个产品,(也就是说500套生产完毕需要25天),如果现有产品数量满足单个订单的产品购买数量,1天就发货,如果不够,就根据配件每天生产量,和现有产品数量,求计算达到单个订单的购买数量所需的发货天数?(现有产品的数量是根据订单所购买产品的数量逐渐减少的)

解决方案 »

  1.   

    你的需求没有看的太明白   如果现在有50    需要500个  每天生产20个  那生产完的话不是22.5天吗
    我下面就简单写了个demo 大概就是这个思路 如果不对 你稍微修改一下就可以 关键地方给你写了备注
    /**
         * @param $orderNum 订单需要生产的数量
         */
        function getOrderDays($orderNum)
        {
            static $stockNum = 1000;//商品的库存 这里最好存在数据库中 可以实时更改数量 如果是实际项目可以加locked
            $outputNum = 20; //可生产的效率 20/天
            $is_enough = $stockNum - $orderNum;
            if($is_enough >= 0){
                //如果库存足够的话 当天发货
                $returnDays = 1;
                //下面是操作减少库存数量 具体视你库存的获取方式 可以单独写一个改变库存的方法 记得加log
                $stockNum = $is_enough;
            }else{
                //库存不够 计算实际发货天数
                $returnDays = ceil(abs($is_enough)/$outputNum);
                //下面是操作减少库存数量 具体视你库存的获取方式 可以单独写一个改变库存的方法 记得加log
                $stockNum = 0;
            }
            return $returnDays;
        }
      

  2.   

    需求我重新理一遍 :假如有订单a,b,c 3个订单,a买10件,b买30件,c买30件, 已有产品库存50件,配件100件,对于a:产品库存 >a所购买的,那么就当天发货,产品库存还剩40件,对于b:40>b说购买的,那么就当天发货,产品库存还剩10件,对于c:产品库存<c所购买的,那么c有20件需要从配件库获取,配件每天生成20件,c的发货天数=c剩余20件的生产天数 + a发货所需时间+b发货所需时间,(之所以要加a的发货天数,加b的发货天数,是因为订单是排期的,)求c的发货天数?
      

  3.   

    <?phpfunction getOrderDays($ordernum)
    {
        //这里可以调用函数自己输入数组
        $ordernum = array(10, 200);//输入几个订单的数量
        //库存和生产效率建议使用数据库
        static $stockNum = 10;//库存
        $outputNum = 20; //生产效率;
        $data = 0; //天数
        $alldata = 0;//总天数
        foreach ($ordernum as $value) {
            if ($value > $stockNum) {
                $data = ($value - $stockNum) / $outputNum;
                $data = $data + 1;//如果生产完以后需要的发货时间,用的都是1;
            } else {
                $stockNum = $stockNum - $value;
                $data = 1;//不知道你的发货天数是怎么算的,这里用1代替
            }
            $alldata = $data + $alldata;
        }
        echo $alldata;
    }