| Current Path : /home/ataenra/www/ATA/INTRANET/Admin/Gestion_ACC/ |
| 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");
?>