v2.5.2
Giriş yap

Üretim Plan

okan
944 defa görüntülendi ve 2 kişi tarafından değerlendirildi

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.

makifgokce
1083 gün önce
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.