Your IP : 216.73.216.65


Current Path : /home/ataenra/www/ATA/INTRANET/Admin/Gestion_ACC/
Upload File :
Current File : /home/ataenra/www/ATA/INTRANET/Admin/Gestion_ACC/acc_simul_bdd_sites.php


<?php


require "../../Outils/co.php";
$IDpmo = $_GET['IDpmo'];

$list0 = $dbco->prepare("SELECT ID_acc_site FROM gest_acc_sites WHERE ID_pmo='$IDpmo' AND site_type = 'Conso' "); 
$list0->execute();

$a=0;
$b=0;
$csvac = new SplFileObject('../../../FICHIERS/ACC/'.$IDpmo.'/CCACC.'.$IDpmo.'.csv', 'w');

$pass=1;

$countcc =0;
$countac =0;
$countpr =0;

$checkcc = 0;

while ($R0 = $list0->fetch(PDO::FETCH_OBJ)) {if(isset($R0->ID_acc_site)){
$countcc++;
$checkcc++;
$IDsite = $R0->ID_acc_site; 

$requete = "DROP TABLE IF EXISTS `gest_acc_pmo_site_".$IDsite."_heures`";
$dbco->prepare($requete)->execute();

$C3 = $dbco->prepare("CREATE TABLE `ataenradi4lz`.`gest_acc_pmo_site_".$IDsite."_heures` (`ID` INT NOT NULL AUTO_INCREMENT ,`jour` VARCHAR(20) NOT NULL , `heure` INT NOT NULL , `conso_base` INT NOT NULL , `conso_pct` FLOAT NOT NULL , `autoconso_cor` FLOAT NOT NULL ,`autoconso_cor_kwh` FLOAT NOT NULL , PRIMARY KEY (`ID`)) ENGINE = InnoDB;");
$C3->execute();

$a=1;
//CREATION DE LA VARIABLE ET RECUP COURBES DE CHARGE

$cc = fopen("../../../FICHIERS/ACC/$IDpmo/Sites/$IDsite/CC/CCJ.$IDsite.csv", "r");

    $i=1;
    while (($data = fgetcsv($cc, 1000, ";")) !== FALSE) {

    $DBCC[$i][1] = $data[0]; //Date du jour
    $DBCC[$i][2] = $data[1]; //heure

    if($pass == 1){
    
    $lec1=$countcc;
    $lec2=$countcc+1;
    $DBCC[$i][3] = $data[2]; //Puissance conso de base
    $DBCC[$i][4] = $data[3]; //Conso de base

    $DBCCS[$i][$lec1] = $IDsite;
    
    $DBCCS[$i][$lec2] = $data[2];

    $i++;

    }else{
    
    $DBCC[$i][3] += $data[2]; //Addition des puissances de base
    $DBCC[$i][4] += $data[3]; //Addition des conso de base

    $DBCCS[$i][$lec1] = $IDsite;
    
    $DBCCS[$i][$lec2] = $data[2];


    $i++;
    
    }

}
$pass++;
$lec1+=2;
$lec2+=2;
}

}
if($checkcc !=0){
fclose($cc);}

//AJOUTER LA PUISSANCE DES CENTALES SEULES
$list0 = $dbco->prepare("SELECT ID_acc_site FROM gest_acc_sites WHERE ID_pmo='$IDpmo' AND site_type = 'Prod' "); 
$list0->execute();
$pass=1;
$checkpr =0;
 

while ($R0 = $list0->fetch(PDO::FETCH_OBJ)) {if(isset($R0->ID_acc_site)){
$IDsite = $R0->ID_acc_site;
$countpr++;$checkpr++;

$requete = "DROP TABLE IF EXISTS `gest_acc_pmo_site_".$IDsite."_heures`";
$dbco->prepare($requete)->execute();

$C3 = $dbco->prepare("CREATE TABLE `ataenradi4lz`.`gest_acc_pmo_site_".$IDsite."_heures` (`ID` INT NOT NULL AUTO_INCREMENT , `jour` VARCHAR(20) NOT NULL , `heure` INT NOT NULL , `prod_base` INT NOT NULL , `prod_pct` FLOAT NOT NULL , `autoprod_cor` FLOAT NOT NULL ,`autoprod_cor_kwh` FLOAT NOT NULL , PRIMARY KEY (`ID`)) ENGINE = InnoDB;");
$C3->execute();



$b=1;
$cp = fopen("../../../FICHIERS/ACC/$IDpmo/Sites/$IDsite/CP/CPMJ.$IDsite.csv", "r");

    $i=1;
    while (($data1 = fgetcsv($cp, 1000, ";")) !== FALSE) {

    if($a==0){
    $DBCC[$i][1] = $data1[0]; //Date du jour
    $DBCC[$i][2] = $data1[1];} //heure

    if($pass == 1){
    

    $lec1=$countpr;
    $lec2=$countpr+1;

    $DBCC[$i][5] = $data1[2]; //Puissance de prod

    $DBPRS[$i][$lec1] = $IDsite; //Numero du site
    
    $DBPRS[$i][$lec2] = $data1[2]; //Puissance de prod
    
    $i++; 

    }else{
    
    $DBCC[$i][5] += $data1[2]; //Puissance de prod
    
    $DBPRS[$i][$lec1] = $IDsite; //Numero du site
    
    $DBPRS[$i][$lec2] = $data1[2]; //Puissance de prod

    $i++;
    }
    }
    $pass++;
    $lec1+=2;
    $lec2+=2;
}

}
if($checkpr !=0){
fclose($cp);}

//AJOUTER LA PUISSANCE Excedentaires des ACI
$list0 = $dbco->prepare("SELECT ID_acc_site FROM gest_acc_sites WHERE ID_pmo='$IDpmo' AND site_type = 'AutoConso' "); 
$list0->execute();
$pass=1;
$checkac = 0;
//boucle des sites
while ($R0 = $list0->fetch(PDO::FETCH_OBJ)) { if(isset($R0->ID_acc_site)){
$IDsite = $R0->ID_acc_site; 


$requete = "DROP TABLE IF EXISTS `gest_acc_pmo_site_".$IDsite."_heures`";
$dbco->prepare($requete)->execute();

$C3 = $dbco->prepare("CREATE TABLE `ataenradi4lz`.`gest_acc_pmo_site_".$IDsite."_heures` (`ID` INT NOT NULL AUTO_INCREMENT , `jour` VARCHAR(20) NOT NULL , `heure` INT NOT NULL , `conso_base` INT NOT NULL , `conso_pct` FLOAT NOT NULL , `autoconso_cor` FLOAT NOT NULL , `autoconso_cor_kwh` FLOAT NOT NULL , `prod_exc` INT NOT NULL , `prod_pct` FLOAT NOT NULL , `autoprod_cor` FLOAT NOT NULL , `autoprod_cor_kwh` FLOAT NOT NULL , PRIMARY KEY (`ID`)) ENGINE = InnoDB;");
$C3->execute();



$countac++;$checkac++;
$ac = fopen("../../../FICHIERS/ACC/$IDpmo/Sites/$IDsite/AC/CCAC.$IDsite.csv", "r");

    $i=1;
    while (($data2 = fgetcsv($ac, 1000, ";")) !== FALSE) {
    
        if(($a==0)&&($b==0)){
        $DBCC[$i][1] = $data2[0]; //Date du jour
        $DBCC[$i][2] = $data2[1];} //heure

        if($b==0){$DBCC[$i][5] = 0;}
                                                                
    if($pass == 1){

        

        $lec1=$countac;
        $lec2=$countac+1;
        $lec3=$countac+2;
        $DBCC[$i][6] = $data2[2]; //puissance soutirée pfinal
        $DBCC[$i][7] = $data2[6]; //puissance excedentaire

        $DBACS[$i][$lec1] = $IDsite;
        
        $DBACS[$i][$lec2] = $data2[2];
        
        $DBACS[$i][$lec3] = $data2[6];

        $i++; 

        }else{
        

        $DBCC[$i][6] += $data2[2]; //puissance soutirée pfinal
        $DBCC[$i][7] += $data2[6]; //puissance excedentaire

        $DBACS[$i][$lec1] = $IDsite;
        
        $DBACS[$i][$lec2] = $data2[2]; //puissance necessaire
        
        $DBACS[$i][$lec3] = $data2[6]; //puissance excedentaire

        $i++; 
        }
    }
$pass++;
$lec1+=3;
$lec2+=3;
$lec3+=3;
}

}
if($checkac !=0){
fclose($ac);}

$i=1;
foreach($DBCC as $bd){

//echo "Ligne ".$i." Date : ".$DBCC[$i][1]." heure : ".$DBCC[$i][2]." <br>";

$cc1=16;
$cc2=17;
$cc3=18;
$cc4=19;

    if(isset($DBCC[$i][3])){$consocc = $DBCC[$i][3]; }else{$consocc =0;}
    if(isset($DBCC[$i][5])){$prodcc = $DBCC[$i][5]; }else{$prodcc =0;}
    if(isset($DBCC[$i][6])){$ACIcc = $DBCC[$i][6]; }else{$ACIcc =0;}
    if(isset($DBCC[$i][7])){$ACIpr = $DBCC[$i][7]; }else{$ACIpr =0;}

    $Pconso = $consocc+$ACIcc; //puissance a consommer, CC + reste soutirage aci
    
    $Pprod = $prodcc+$ACIpr; //production des centrales + excendents des aci
    
    $Econso = $Pconso/1000;
    $Eprod = $Pprod/1000;
    $Pcalc = $Pconso-$Pprod;
    
    if($Pcalc > 0){
        $Pfinal = $Pcalc; 
        $Efinal = $Pfinal/1000; 
        $Pautoconso=$Pprod; 
        $Eautoconso=($Pprod)/1000;
        $Pexc =0;
        $Eexc =0;
     }
    
    //Si conso = la production => Reste de la Conso
    if($Pcalc == 0){
        $Pfinal = 0; 
        $Efinal = 0; 
        $Pautoconso=$Pconso; 
        $Eautoconso=$Pautoconso/1000;
        $Pexc = 0;
        $Eexc = 0;
    }
    //Si conso inférieure à la production => Conso = 0 + Autoconsommation = Conso de base + Excedent.
    if($Pcalc < 0){
        $Pfinal = 0; 
        $Efinal = 0; 
        $Pautoconso=$Pconso;
        $Eautoconso=$Pautoconso/1000;
        $Pexc =($Pcalc*-1);
        $Eexc = $Pexc/1000;
    
    }

    $DBCC[$i][8] = $Econso;
    $DBCC[$i][9] = $Eprod;
    $DBCC[$i][10] = $Pfinal;
    $DBCC[$i][11] = $Efinal;
    $DBCC[$i][12] = $Pautoconso;
    $DBCC[$i][13] = $Eautoconso;
    $DBCC[$i][14] = $Pexc;
    $DBCC[$i][15] = $Eexc;

    $sitecc = 1;
    $champ1 = $sitecc;
    $champ2 = $sitecc+1;

    //Rajout des colonnes par site
    while(($sitecc < $countcc)||($sitecc == $countcc)){

    if($Pconso != 0){
    $CCpctsite = round((($DBCCS[$i][$champ2]/$Pconso)*100),2); //calcul du pourcentage de la conso du site par rapport a la conso globale instantannée
    $CCpac = $Pautoconso * $CCpctsite/100;}else{

    $CCpctsite =0;
    $CCpac=0;
    }

    //echo "Colonne N° ".$cc1." / Site N° ".$DBCCS[$i][$champ1]." Colonne ".$cc2."/ Puissance ".$DBCCS[$i][$champ2]." colonne ".$cc3." / pourcentage ".$CCpctsite." / colonne ".$cc4." Puissance corrigée ".$CCpac." <br>";
    $DBCC[$i][$cc1] = $DBCCS[$i][$champ1]; 
    $DBCC[$i][$cc2] = $DBCCS[$i][$champ2]; 
    $DBCC[$i][$cc3] = $CCpctsite;  
    $DBCC[$i][$cc4] = $CCpac; 

    $cc1+=4;
    $cc2+=4;
    $cc3+=4;
    $cc4+=4;
    $sitecc++;
    $champ1+=2;
    $champ2+=2;
    }




    $sitepr = 1;
    $champ1 = $sitepr;
    $champ2 = $sitepr+1;



    //Rajout des lignes par site
    while(($sitepr < $countpr)||($sitepr == $countpr)){
   
    if($Pprod != 0){
    $PRpctsite = round((($DBPRS[$i][($champ2)]/$Pprod)*100),2);     
    $PRpac = $Pprod * $PRpctsite/100;}
    else{
    $PRpctsite = 0;
    $PRpac = 0;

    }

    //echo "Colonne N° ".$cc1." / Site N° ".$DBPRS[$i][$champ1]." Colonne ".$cc2."/ Puissance ".$DBPRS[$i][$champ2]." colonne ".$cc3." / pourcentage ".$PRpctsite." / colonne ".$cc4." Puissance corrigée ".$PRpac." <br>";

    $DBCC[$i][$cc1] = $DBPRS[$i][$champ1]; 
    $DBCC[$i][$cc2] = $DBPRS[$i][$champ2]; 
    $DBCC[$i][$cc3] = $PRpctsite; 
    $DBCC[$i][$cc4] = $PRpac; 

    $cc1+=4;
    $cc2+=4;
    $cc3+=4;
    $cc4+=4;
    $sitepr++;
    $champ1+=2;
    $champ2+=2;
    }




    $siteac = 1;
    $cc5 = $cc4+1;
    $cc6 = $cc5+1;
    $cc7 = $cc6+1;
    $champ1 = $siteac;
    $champ2 = $siteac+1;
    $champ3 = $siteac+2;


    //Rajout des lignes par site
    while(($siteac < $countac)||($siteac == $countac)){
    if($Pautoconso != 0){
    $ACccpctsite = round((($DBACS[$i][$champ2]/$Pconso)*100),2); //calcul du pourcentage de la conso restante du site par rapport a la conso globale instantannée
    $CCpac = $Pautoconso * $ACccpctsite/100;}else{

    $ACccpctsite = 0;
    $CCpac =0;    
    }

    if($Pautoconso != 0){
    $ACprpctsite = round((($DBACS[$i][$champ3]/$Pprod)*100),2); //calcul du pourcentage de la prod exedentaire du site par rapport a la prod globale instantannée
    $PRpac = $Pautoconso * $ACprpctsite/100;}else{

    $ACprpctsite=0;
    $PRpac = 0;

    }

    //echo "Colonne N° ".$cc1." / Site N° ".$DBACS[$i][$champ1]." Colonne ".$cc2."/ Puissance ".$DBACS[$i][$champ2]." colonne ".$cc3." / pourcentage ".$ACccpctsite." / colonne ".$cc4." Puissance corrigée ".$CCpac." colonne ".$cc5." pourcentage ".$ACprpctsite." colonne ".$cc6." Prod corrigée ".$PRpac." <br>";

    $DBCC[$i][$cc1] = $DBACS[$i][$champ1]; 
    $DBCC[$i][$cc2] = $DBACS[$i][$champ2]; 
    $DBCC[$i][$cc3] = $ACccpctsite;
    $DBCC[$i][$cc4] = $CCpac;
    $DBCC[$i][$cc5] = $DBACS[$i][$champ3]; 
    $DBCC[$i][$cc6] = $ACprpctsite;
    $DBCC[$i][$cc7] = $PRpac;

    $cc1+=7;
    $cc2+=7;
    $cc3+=7;
    $cc4+=7;
    $cc5+=7;
    $cc6+=7;
    $cc7+=7;
    $siteac++;
    $champ1+=3;
    $champ2+=3;
    $champ3+=3;
    }

    $csvac->fputcsv($DBCC[$i], ';');
    $i++;

}

$list0 = $dbco->prepare("SELECT DISTINCT ID_pmo FROM gest_acc_pmo_heures WHERE ID_pmo='$IDpmo'"); 
$list0->execute();
$R0 = $list0->fetch(PDO::FETCH_OBJ);

if(isset($R0->ID_pmo)){
    $del=$dbco->prepare("DELETE FROM `gest_acc_pmo_heures` WHERE ID_pmo='$IDpmo'");
    $del->execute();
}


$i=1;
foreach($DBCC as $DB){

    if(isset($DB[3])){$consocc = $DB[3]; }else{$consocc =0;}
    if(isset($DB[5])){$prodcc = $DB[5]; }else{$prodcc =0;}
    if(isset($DB[6])){$ACIcc = $DB[6]; }else{$ACIcc =0;}
    if(isset($DB[7])){$ACIpr = $DB[7]; }else{$ACIpr =0;}
    
    $Pconso = $consocc+$ACIcc; //puissance a consommer, CC + reste soutirage aci
    $Econso = $Pconso/1000;
    $Pprod = $prodcc+$ACIpr; //production des centrales + excendents des aci
    $Eprod = $Pprod/1000;


$UP3 = $dbco->prepare("INSERT INTO gest_acc_pmo_heures (ID_pmo, jour, heure, base_puissance, base_conso_kwh, soutirage_puissance, soutirage_kwh, prod_puissance, prod_kwh, autoconso_puissance, autoconso_kwh, injection_puissance, injection_kwh) 
VALUES (:ID_pmo, :jour, :heure, :base_puissance, :base_conso_kwh, :soutirage_puissance, :soutirage_kwh, :prod_puissance, :prod_kwh, :autoconso_puissance, :autoconso_kwh, :injection_puissance, :injection_kwh)");
$UP3->bindparam(':ID_pmo',$IDpmo);
$UP3->bindparam(':jour',$DB[1]);
$UP3->bindparam(':heure',$DB[2]);
$UP3->bindparam(':base_puissance',$Pconso);
$UP3->bindparam(':base_conso_kwh',$Econso);
$UP3->bindparam(':soutirage_puissance',$DB[10]);
$UP3->bindparam(':soutirage_kwh',$DB[11]);
$UP3->bindparam(':prod_puissance',$Pprod);
$UP3->bindparam(':prod_kwh',$Eprod);
$UP3->bindparam(':autoconso_puissance',$DB[12]);
$UP3->bindparam(':autoconso_kwh',$DB[13]);
$UP3->bindparam(':injection_puissance',$DB[14]);
$UP3->bindparam(':injection_kwh',$DB[15]);
$UP3->execute();
$i++;
}


$UP6 = $dbco->prepare('UPDATE gest_acc_pmo SET pmo_simul = :pmo_simul,countcc = :countcc, countpr = :countpr, countac = :countac WHERE ID_pmo = :ID_pmo');
$UP6->bindvalue('pmo_simul',1);
$UP6->bindvalue('ID_pmo',$IDpmo);
$UP6->bindvalue('countcc',$countcc);
$UP6->bindvalue('countpr',$countpr);
$UP6->bindvalue('countac',$countac);
$UP6->execute();


require 'acc_calcul_journalier_ACC.php';
require 'acc_calcul_mois_ACC.php';

//echo "ON ATTAQUE LES SITES";
require 'acc_calcul_sites.php';

$chart5 = $dbco->prepare("SELECT SUM(base_conso_kwh) AS cc, SUM(soutirage_kwh) AS ss, SUM(prod_kwh) AS pr, SUM(autoconso_kwh) AS ac, SUM(injection_kwh) AS inj FROM gest_acc_pmo_mois WHERE ID_pmo='$IDpmo'"); 
$chart5->execute();
$C5 = $chart5->fetch(PDO::FETCH_OBJ);

$today = date('Y');
$year = $today-1;

$UP3 = $dbco->prepare("INSERT INTO gest_acc_pmo_annee (ID_pmo, annee, base_conso_kwh, soutirage_kwh, prod_kwh, autoconso_kwh, injection_kwh) 
VALUES (:ID_pmo, :annee, :base_conso_kwh, :soutirage_kwh, :prod_kwh, :autoconso_kwh, :injection_kwh) ");
$UP3->bindparam(':ID_pmo',$IDpmo);
$UP3->bindparam(':annee',$year);
$UP3->bindparam(':base_conso_kwh',$C5->cc);
$UP3->bindparam(':soutirage_kwh',$C5->ss);
$UP3->bindparam(':prod_kwh',$C5->pr);
$UP3->bindparam(':autoconso_kwh',$C5->ac);
$UP3->bindparam(':injection_kwh',$C5->inj);
$UP3->execute();

require 'acc_calcul_journalier_ACC_sites.php';

//echo "FIN DU SCRIPT !!!!!";
header("location:acc_config.php?IDpmo=$IDpmo");

?>