Sfoglia il codice sorgente

FD3-759 Se comienzan a guardar valores de PSN y SN para las ONUs.

Maximiliano Schvindt 6 anni fa
parent
commit
9a62d59165

+ 1 - 0
src/StatsBundle/Admin/OnuAdmin.php

@@ -67,6 +67,7 @@ class OnuAdmin extends BaseAdmin
         $listMapper
             ->add('oltDeviceId', 'string', array('template' => 'StatsBundle:Onu:base_list_field_olt.html.twig'))
             ->add('ponSerialNumber', 'string', array('template' => 'StatsBundle:Onu:show_link.html.twig'))
+            ->add('serialNumber', 'string', array('template' => 'StatsBundle:Templates:base_list_field_upper.html.twig'))
             ->add('index')
             ->add('ponPort')
             ->add('status',null, array('template' => 'StatsBundle:Templates:field_status.html.twig'))

+ 2 - 2
src/StatsBundle/Command/BaseCommand.php

@@ -222,9 +222,9 @@ abstract class BaseCommand extends ContainerAwareCommand
             
             $extra = $device->jsonExtraData();
 
-            if(isset($extra['ponSerialNumber'])) {
+            if(isset($extra['ponSerialNumberAux'])) {
 
-                $sn = strtolower($extra['ponSerialNumber']);
+                $sn = strtolower($extra['ponSerialNumberAux']);
 
                 $lat = $lng = NULL;
                 if(isset($extra['location']) && isset($extra['location']['extraData'])) 

+ 64 - 2
src/StatsBundle/Command/StatsOnuCommand.php

@@ -80,8 +80,8 @@ class StatsOnuCommand extends BaseCommand
             $row['tenancyId'] = $tenancyId;
             $row['ip'] = "NULL";
             $row['mac'] = "NULL";
-            $row['serialNumber'] = "NULL";
-            $row['ponSerialNumber'] = "'".strtolower($sn)."'";
+            $row['serialNumber'] = "'".$this->snCalulate($sn)."'";
+            $row['ponSerialNumber'] = "'".$this->psnCalulate($sn)."'";
             $row['ponPort'] = "'".$ponPort."'";
 
             foreach($metrics as $m => $metric) {
@@ -185,4 +185,66 @@ class StatsOnuCommand extends BaseCommand
 
         return $rx;
     }
+
+    private function hex2str($hex) {
+        $hex = strtoupper($hex);
+        $str = "";
+        for($i=0;$i<strlen($hex);$i+=2)
+            $str .= chr(hexdec(substr($hex,$i,2)));
+
+        return $str;
+    }
+
+    private function str2hex($string){
+        $string = strtoupper($string);
+        $hex = "";
+        for ($i=0; $i < strlen($string); $i++)
+            $hex .= dechex(ord($string[$i]));
+
+        return $hex;
+    }
+
+    //HWTC22BDED0C > 4857544322BDED0C
+    private function snCalulate($value) {
+        $value = str_replace(" ","",$value);
+        
+        if(strlen($value) == 16)
+            return strtolower($value);
+        
+        if(strlen($value) == 12) {
+            $vendoId = $this->str2hex(substr($value,0,4));
+            $rest = substr($value,4);
+            return strtolower($vendoId.$rest);
+        }
+
+        return strtolower($value);
+    }
+
+    //4857544322BDED0C > HWTC22BDED0C
+    private function psnCalulate($value) {
+        $value = str_replace(" ","",$value);
+        
+        if(strlen($value) == 12)
+            return strtolower($value);
+        
+        if(strlen($value) == 16) {
+            $vendorId = substr($value,0,8);
+            $hex = strtoupper($vendorId);
+            $isNumeric = true;
+            for($i=0;$i<strlen($hex);$i+=2) {
+                if(!is_numeric(substr($hex,$i,2))) {
+                    $isNumeric = false;
+                    break;
+                }
+            }
+            
+            if($isNumeric) {
+                $vendoId = $this->hex2str($hex);
+                $rest = substr($value,8);
+                return strtolower($vendoId.$rest);
+            }
+        }
+
+        return strtolower($value);
+    }
 }

+ 6 - 1
src/StatsBundle/Controller/StatsController.php

@@ -861,7 +861,12 @@ class StatsController extends Controller
         $ponSerialNumber = $object->getPonSerialNumber();
         $filters = array("tenancyId" => $tenancyId, "ponSerialNumber" => $ponSerialNumber);
         $onu = $this->get('webservice')->getData($apiOnu, $filters);
-
+        
+        if(!$onu) {
+            // if onu doesn't exist, find for ponSerialNumberAux
+            $filters = array("tenancyId" => $tenancyId, "ponSerialNumberAux" => $ponSerialNumber);
+            $onu = $this->get('webservice')->getData($apiOnu, $filters);
+        }
         
         if($onu && isset($urls['get_clients'])) {
             if(isset($onu[0]['clientId'])) {

+ 1 - 0
src/StatsBundle/Resources/translations/StatsBundle.es.yml

@@ -263,6 +263,7 @@ list:
     label_usage_profile: % sobre el límite
     label_usage_total: % sobre el total
     label_disp: Diferencia (GB)
+    label_serial_number: Serial Number
 
 info:
     info_onu_1: Información básica de ONU obtenida desde API FTTH

+ 2 - 2
src/StatsBundle/Resources/views/Stats/Template/ponport_onus.html.twig

@@ -22,8 +22,8 @@
                 {% set style = 'opacity:1' %}
             {% endif %}
             <tr class="sonata-ba-view-container" style="{{style}}">
-                <td>{{onu['psn']}}</td>
-                <td>{{onu['sn']}}</td>
+                <td>{{onu['psn']|upper}}</td>
+                <td>{{onu['sn']|upper}}</td>
                 <td>{{onu['port']}}</td>
                 <td>{{onu['index']}}</td>
                 <td>{% include 'StatsBundle:Templates:macro_status.html.twig' with {'value': onu['status']} only %}</td>

+ 7 - 0
src/StatsBundle/Resources/views/Templates/base_list_field_upper.html.twig

@@ -0,0 +1,7 @@
+{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
+
+{% block field %}
+
+    {{ value|upper }}
+
+{% endblock %}