工厂订单排期算法问题 假如工厂有现有产品50个,产品配件500套,工厂每天生产20个产品,(也就是说500套生产完毕需要25天),如果现有产品数量满足单个订单的产品购买数量,1天就发货,如果不够,就根据配件每天生产量,和现有产品数量,求计算达到单个订单的购买数量所需的发货天数?(现有产品的数量是根据订单所购买产品的数量逐渐减少的) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的需求没有看的太明白 如果现在有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; } 需求我重新理一遍 :假如有订单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的发货天数? <?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;} 关于我的apache是安装在 c盘 , 但是出现c 盘没有空间,d盘有更多空间.以及wamp中apache是否可移植问题。 菜菜鸟求助哦~ 只能读出第一个数据,循环不了哦 如何在网站空间,部署运行socket服务器? 关于php中mb_strlen函数问题!! 同志们,PHP如何清除服务器缓存? 页面刷新问题 问一个正则表达式的问题 phpmyadmin问题 刚学PHP,改了个socks sendmail的类。呵呵。大家指教一下。支持验证的 PHP程序中如何使浏览器弹出对话框??? PHP调用静态方法 怎样做到分数不重置呀?大神求解!!!
我下面就简单写了个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;
}
{
//这里可以调用函数自己输入数组
$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;
}