Browse Source

benchmark import done, form wip

master
Daniel 2 years ago
parent
commit
2751cdb1d7
8 changed files with 365 additions and 112 deletions
  1. BIN
      httpdocs/import/mpp_import_din.xlsx
  2. +50
    -12
      httpdocs/src/Command/CmdImportBenchmark.php
  3. +3
    -7
      httpdocs/src/Command/CmdImportDinAssets.php
  4. +20
    -0
      httpdocs/src/Controller/UserController.php
  5. +80
    -3
      httpdocs/src/Entity/DinAsset.php
  6. +198
    -0
      httpdocs/src/Entity/DinAssetBenchmark.php
  7. +0
    -85
      httpdocs/src/Entity/DinAssetTask.php
  8. +14
    -5
      httpdocs/templates/pages/risk_analysis.html.twig

BIN
httpdocs/import/mpp_import_din.xlsx View File


+ 50
- 12
httpdocs/src/Command/CmdImportBenchmark.php View File

@@ -1,6 +1,8 @@
<?php

namespace App\Command;
use App\Entity\DinAsset;
use App\Entity\DinAssetBenchmark;
use Doctrine\ORM\EntityManagerInterface;
use PhpOffice\PhpSpreadsheet\IOFactory;
use Psr\Container\ContainerInterface;
@@ -54,24 +56,60 @@ class CmdImportBenchmark extends Command
return Command::FAILURE;
}

$worksheetData = [];
$this->em->getConnection()->beginTransaction();

$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
try {
$this->em->createQuery('DELETE FROM App\Entity\DinAssetBenchmark')->execute();

$dinAssetsByDinAndName = [];
$dinAssets = $this->em->getRepository(DinAsset::class)->findAll();
/** @var DinAsset $dinAsset */
foreach ($dinAssets as $dinAsset) {
$dinAssetsByDinAndName[$dinAsset->getDinNumber().$dinAsset->getName()] = $dinAsset;
}

$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();

$startRow = 2;
$startCol = 'A';

for ($row = $startRow; $row <= $highestRow; $row++) {
$rowData = [];
for ($col = $startCol; $col <= $highestColumn; $col++) {
$cell = $worksheet->getCell($col . $row);
$rowData[] = $cell->getValue();
}
$dinNumber = $rowData[0];
$name = $rowData[5];
$key = $dinNumber.$name;

if (!array_key_exists($key, $dinAssetsByDinAndName)) {
$output->writeln("No din asset found: ". $key);
} else {
/** @var DinAsset $dinAsset */
$dinAsset = $dinAssetsByDinAndName[$key];

$dinBenchmark = new DinAssetBenchmark();
$dinBenchmark->setDinAsset($dinAsset);
$dinBenchmark->setComponent($rowData[7]);
$dinBenchmark->setType($rowData[9]);
$dinBenchmark->setBandwidth($rowData[11]);
$dinBenchmark->setDeviation($rowData[16]);
$dinBenchmark->setAverageCosts($rowData[17]);
$dinBenchmark->setMinAverageCosts($rowData[18]);
$dinBenchmark->setMaxAverageCosts($rowData[19]);

$startRow = 2;
$startCol = 'A';

for ($row = $startRow; $row <= $highestRow; $row++) {
$rowData = [];
for ($col = $startCol; $col <= $highestColumn; $col++) {
$cell = $worksheet->getCell($col . $row);
$rowData[] = $cell->getValue();
$this->em->persist($dinBenchmark);
}
}
$worksheetData[] = $rowData;
$this->em->flush();
$this->em->getConnection()->commit();
} catch (\Exception $e) {
$this->em->getConnection()->rollBack();
}

$a = 0;
return Command::SUCCESS;
}


+ 3
- 7
httpdocs/src/Command/CmdImportDinAssets.php View File

@@ -50,7 +50,6 @@ class CmdImportDinAssets extends Command
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($excelFile);

/** @var Connection $con */
$this->em->getConnection()->beginTransaction();

try {
@@ -66,7 +65,6 @@ class CmdImportDinAssets extends Command
$isDinWorksheet = $dinNumber >= 100 && $dinNumber < 1000;

if ($isDinWorksheet) {
$worksheetData = [];

$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
@@ -92,6 +90,9 @@ class CmdImportDinAssets extends Command
$dinAsset = new DinAsset();
$dinAsset->setDinNumber($rowData[0]);
$dinAsset->setName($rowData[1]);
$dinAsset->setCycleMonthsMin($rowData[11]);
$dinAsset->setCycleMonthsMax($rowData[12]);
$dinAsset->setCycleMonthsRecommended($rowData[13]);
$this->em->persist($dinAsset);
$this->em->flush();
$dinAssetsByDinAndName[$key] = $dinAsset;
@@ -108,12 +109,7 @@ class CmdImportDinAssets extends Command
$dinAssetTask->setSpecialist($rowData[8] !== null);
$dinAssetTask->setSkilledPersonnel($rowData[9] !== null);
$dinAssetTask->setNorm($rowData[10]);
$dinAssetTask->setMinMonths($rowData[11]);
$dinAssetTask->setMaxMonths($rowData[12]);
$dinAssetTask->setMonthRecommendedInspection($rowData[13]);
$dinAssetTask->setMonthRecommendedMaintenance($rowData[14]);
$this->em->persist($dinAssetTask);
$this->em->flush();
}
}
}


+ 20
- 0
httpdocs/src/Controller/UserController.php View File

@@ -10,6 +10,7 @@ namespace App\Controller;
use App\Entity\Catalogue;
use App\Entity\CatalogueDetail;
use App\Entity\DinAsset;
use App\Entity\DinAssetBenchmark;
use App\Entity\User;
use App\Repository\UserRepository;
use App\Utils\Utils;
@@ -67,9 +68,28 @@ class UserController extends AbstractController
$user = $this->getUser();

$dinAssets = $em->getRepository(DinAsset::class)->findAll();
/** @var DinAsset $initialDinAsset */
$initialDinAsset = null;
$benchmarkValues = [];
if (count($dinAssets) > 0) {
$initialDinAsset = $dinAssets[0];
$benchmarks = $initialDinAsset->getBenchmarks();
/** @var DinAssetBenchmark $benchmark */
foreach ($benchmarks as $benchmark) {
$value = $benchmark->getComponent() ? $benchmark->getComponent() . " | " : "";
$value.= $benchmark->getType() ? $benchmark->getType() . " | " : "";
$value.= $benchmark->getBandwidth() ? $benchmark->getBandwidth() . " | " : "";
if (substr($value, -3) === " | ") {
$value = rtrim($value, " | ");
}
$benchmarkValues[$benchmark->getId()] = $value;
}
}

return $this->render('pages/risk_analysis.html.twig',
[
'initialDinAsset' => $initialDinAsset,
'benchmarkValues' => $benchmarkValues,
'dinAssets' => $dinAssets,
'riskFailure' => Utils::$riskFailure,
'riskCosts' => Utils::$riskCosts,


+ 80
- 3
httpdocs/src/Entity/DinAsset.php View File

@@ -27,11 +27,31 @@ class DinAsset
*/
protected $name;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $cycleMonthsMin;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $cycleMonthsMax;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $cycleMonthsRecommended;

/**
* @ORM\OneToMany(targetEntity="DinAssetTask", mappedBy="dinAsset", cascade={"persist", "remove"})
*/
private $tasks;

/**
* @ORM\OneToMany(targetEntity="DinAssetBenchmark", mappedBy="dinAsset", cascade={"persist", "remove"})
*/
private $benchmarks;

/**
* @return mixed
*/
@@ -80,6 +100,54 @@ class DinAsset
$this->name = $name;
}

/**
* @return mixed
*/
public function getCycleMonthsMin()
{
return $this->cycleMonthsMin;
}

/**
* @param mixed $cycleMonthsMin
*/
public function setCycleMonthsMin($cycleMonthsMin): void
{
$this->cycleMonthsMin = $cycleMonthsMin;
}

/**
* @return mixed
*/
public function getCycleMonthsMax()
{
return $this->cycleMonthsMax;
}

/**
* @param mixed $cycleMonthsMax
*/
public function setCycleMonthsMax($cycleMonthsMax): void
{
$this->cycleMonthsMax = $cycleMonthsMax;
}

/**
* @return mixed
*/
public function getCycleMonthsRecommended()
{
return $this->cycleMonthsRecommended;
}

/**
* @param mixed $cycleMonthsRecommended
*/
public function setCycleMonthsRecommended($cycleMonthsRecommended): void
{
$this->cycleMonthsRecommended = $cycleMonthsRecommended;
}

/**
* @return mixed
*/
@@ -97,10 +165,19 @@ class DinAsset
}

/**
* @param mixed $task
* @return mixed
*/
public function addTask($task): void
public function getBenchmarks()
{
$this->tasks[] = $task;
return $this->benchmarks;
}

/**
* @param mixed $benchmarks
*/
public function setBenchmarks($benchmarks): void
{
$this->benchmarks = $benchmarks;
}

}

+ 198
- 0
httpdocs/src/Entity/DinAssetBenchmark.php View File

@@ -0,0 +1,198 @@
<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="din_asset_benchmark")
*/
class DinAssetBenchmark
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
protected $id;

/**
* @ORM\ManyToOne(targetEntity="DinAsset", inversedBy="tasks")
* @ORM\JoinColumn(name="din_asset_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $dinAsset;

/**
* @ORM\Column(type="string", nullable=true)
*/
protected $component;

/**
* @ORM\Column(type="string", nullable=true)
*/
protected $type;

/**
* @ORM\Column(type="string", nullable=true)
*/
protected $bandwidth;

/**
* @ORM\Column(type="decimal", precision=10, scale=2))
*/
protected $deviation;

/**
* @ORM\Column(type="decimal", precision=10, scale=2))
*/
protected $average_costs;

/**
* @ORM\Column(type="decimal", precision=10, scale=2))
*/
protected $min_average_costs;

/**
* @ORM\Column(type="decimal", precision=10, scale=2))
*/
protected $max_average_costs;

/**
* @return mixed
*/
public function getId()
{
return $this->id;
}

/**
* @return mixed
*/
public function getDinAsset()
{
return $this->dinAsset;
}

/**
* @param mixed $dinAsset
*/
public function setDinAsset($dinAsset): void
{
$this->dinAsset = $dinAsset;
}

/**
* @return mixed
*/
public function getComponent()
{
return $this->component;
}

/**
* @param mixed $component
*/
public function setComponent($component): void
{
$this->component = $component;
}

/**
* @return mixed
*/
public function getType()
{
return $this->type;
}

/**
* @param mixed $type
*/
public function setType($type): void
{
$this->type = $type;
}

/**
* @return mixed
*/
public function getBandwidth()
{
return $this->bandwidth;
}

/**
* @param mixed $bandwidth
*/
public function setBandwidth($bandwidth): void
{
$this->bandwidth = $bandwidth;
}

/**
* @return mixed
*/
public function getDeviation()
{
return $this->deviation;
}

/**
* @param mixed $deviation
*/
public function setDeviation($deviation): void
{
$this->deviation = $deviation;
}

/**
* @return mixed
*/
public function getAverageCosts()
{
return $this->average_costs;
}

/**
* @param mixed $average_costs
*/
public function setAverageCosts($average_costs): void
{
$this->average_costs = $average_costs;
}

/**
* @return mixed
*/
public function getMinAverageCosts()
{
return $this->min_average_costs;
}

/**
* @param mixed $min_average_costs
*/
public function setMinAverageCosts($min_average_costs): void
{
$this->min_average_costs = $min_average_costs;
}

/**
* @return mixed
*/
public function getMaxAverageCosts()
{
return $this->max_average_costs;
}

/**
* @param mixed $max_average_costs
*/
public function setMaxAverageCosts($max_average_costs): void
{
$this->max_average_costs = $max_average_costs;
}


}

+ 0
- 85
httpdocs/src/Entity/DinAssetTask.php View File

@@ -72,26 +72,6 @@ class DinAssetTask
*/
protected $norm;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $minMonths;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $maxMonths;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $monthRecommendedInspection;

/**
* @ORM\Column(type="smallint", nullable=false, options={"unsigned" = true})
*/
protected $monthRecommendedMaintenance;

/**
* @return mixed
*/
@@ -260,69 +240,4 @@ class DinAssetTask
$this->norm = $norm;
}

/**
* @return mixed
*/
public function getMinMonths()
{
return $this->minMonths;
}

/**
* @param mixed $minMonths
*/
public function setMinMonths($minMonths): void
{
$this->minMonths = $minMonths;
}

/**
* @return mixed
*/
public function getMaxMonths()
{
return $this->maxMonths;
}

/**
* @param mixed $maxMonths
*/
public function setMaxMonths($maxMonths): void
{
$this->maxMonths = $maxMonths;
}

/**
* @return mixed
*/
public function getMonthRecommendedInspection()
{
return $this->monthRecommendedInspection;
}

/**
* @param mixed $monthRecommendedInspection
*/
public function setMonthRecommendedInspection($monthRecommendedInspection): void
{
$this->monthRecommendedInspection = $monthRecommendedInspection;
}

/**
* @return mixed
*/
public function getMonthRecommendedMaintenance()
{
return $this->monthRecommendedMaintenance;
}

/**
* @param mixed $monthRecommendedMaintenance
*/
public function setMonthRecommendedMaintenance($monthRecommendedMaintenance): void
{
$this->monthRecommendedMaintenance = $monthRecommendedMaintenance;
}


}

+ 14
- 5
httpdocs/templates/pages/risk_analysis.html.twig View File

@@ -44,10 +44,19 @@
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
<label for="cycle">Genügt eine einfache Sichtkontrolle im Rahmen des regelmäßigen Rundgangs?</label>
<input name="cycle" type="number" disabled>
<label for="bandwidth">Genügt eine einfache Sichtkontrolle im Rahmen des regelmäßigen Rundgangs?</label>
<select name="bandwidth" id="bandwidth" disabled>
</select>
<label for="cycle">Aktueller Zyklus (in Monaten)</label>
{% if initialDinAsset is not null %}
<input name="cycle" type="number" value="{{ initialDinAsset.cycleMonthsRecommended }}" min="{{ initialDinAsset.cycleMonthsMin }}" max ="{{ initialDinAsset.cycleMonthsMax }}">
{% else %}
<input name="cycle" type="number" disabled>
{% endif %}

<label for="bandwidth">Bandbreite Anlage</label>
<select name="bandwidth" id="bandwidth">
{% for key, benchmarkValue in benchmarkValues %}
<option value="{{ key }}">{{ benchmarkValue }}</option>
{% endfor %}
</select>

</form>
{% endblock %}

Loading…
Cancel
Save