Üretim Plan
Merhaba arkadaşlar,
Üretimi takip etmek amaçlı birşey yapmak istiyorum ama nasıl yapacağımı bilemiyorum yardımcı olurmusunuz?
7.15 de mesai başlıyor. 17.00 de bitiyor. 9.00 - 09.15 , 12.00 - 12.45 , 15.15 - 15.30 gibi üç molamız bulunuyor.
yapmak istediğim olay şu. zaman = 100 saniye. iş adedi: 130 adet 100x130 = 13000 saniye ediyor. 3saat 36 dakika sonra işi bitirecek yapan kişi.
ama bu süre uzayada bilir yada molaya denk gelebilir molayıda baslagıc saatine göre eklesin süreye istiyorum. işi 3 saatte değilde 12 saattede bitirebilir yani bir gün sonraya sarkacak. 17:00 a kadar olan çıkacak adedi bana bulsun bir sonraki güne aktarsın saat kaçta biteceğini yazdırayım istiyorum..
Umarım açıklayıcı olmuştur yardımlarınızı bekliyorum.
function calculate(string $start, int $count, int $time, array & $k): string
{
$to = $count * $time;
$workingDays = [1, 2, 3, 4, 5];
$from = new DateTime($start);
$interval = new DateInterval("PT1S");
$r = ($to * 10) + 172800;
$periods = new DatePeriod($from, $interval, $r);
$sec = 0;
$x = -1;
$z = $count;
$f = new DateTime($start);
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
$h = intval($period->format('H'));
$m = intval($period->format('i'));
if($period->format('N') != $x){
$e = new DateTime($period->format('Y-m-d')." 17:30:00");
$diff = $e->getTimestamp() - $f->getTimestamp();
$d = $e->modify('+1 days');
if (!in_array($d->format('N'), $workingDays)){
$d = $d->modify('+2 days');
}
$f = new DateTime($d->format('Y-m-d')." 07:15:00");
$x = $period->format('N');
$z -= ($diff / $time);
if($z > 0){
array_push($k, $z);
}
}
if($sec >= $to){
return $period->format('Y-m-d H:i:s');
break;
}
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
}
}
$baslangic_tarihi = "2021-12-01 08:00:00";
$adet = 360;
$sure = 100;
$kalan = [];
echo calculate($baslangic_tarihi, $adet, $sure, $kalan)."<br>";
print_r($kalan);
/**
* 2021-12-02 09:00:00
* Array ( [0] => 18 )
*/
burada kalanları array olarak alabilirsin.