Ver Fonte

Finalización de funciones de codificación y visualización gráfica de la arborescencia

Jose Brito há 2 anos atrás
pai
commit
293e2fb48d

+ 1 - 1
sistema-mantenimiento-front/src/app/components/equipment-management/equipment-card/change-pre-code-status/change-pre-code-status.component.html

@@ -1,6 +1,6 @@
 <h1 mat-dialog-title class="prevent-select">{{ action }} código</h1>
 <div mat-dialog-content class="prevent-select">
-  <p><b>{{ code }}</b></p>
+  <p style="overflow-wrap: anywhere;"><b>{{ code }}</b></p>
   <mat-form-field appearance="outline" class="w-100">
     <mat-label>Comentarios</mat-label>
     <textarea matInput [formControl]="commentsControl" style="resize: none;" rows="5"></textarea>

+ 76 - 76
sistema-mantenimiento-front/src/app/components/equipment-management/new-equipment/locate-pcc/locate-pcc.component.ts

@@ -15,83 +15,83 @@ export class LocatePccComponent implements OnInit{
 
   map: Map<string, any>;
   elements = [
-    {coord: '0N', element: 'PDC', code: 'PDCXX', color: '#337a91'},
-    {coord: '1F', element: 'BAT', code: 'BATXX', color: '#8e3596'},
-    {coord: '1I', element: 'BAT', code: 'BATXX', color: '#cfc763'},
-    {coord: '1R', element: 'SAP/IHM OA', code: 'SAIOA', color: '#3ba896'},
-    {coord: '2F', element: 'UPS', code: 'UPSXX', color: '#d4735b'},
-    {coord: '2I', element: 'UPS', code: 'UPSXX', color: '#e62e34'},
-    {coord: '2R', element: 'PIU/DDP', code: 'PIUDD', color: '#065240'},
-    {coord: '2V', element: 'ODF', code: 'ODFXX', color: '#94e687'},
-    {coord: '3F', element: 'BAT', code: 'BATXX', color: '#05c9f0'},
-    {coord: '3I', element: 'BAT', code: 'BATXX', color: '#574494'},
-    {coord: '3Ñ', element: 'SRV-COMMS PCC-A', code: 'SRCPA', color: '#4dd907'},
-    {coord: '3R', element: 'CCTV', code: 'CCTVX', color: '#3d36ba'},
-    {coord: '4F', element: 'BAT', code: 'BATXX', color: '#9336ba'},
-    {coord: '4I', element: 'BAT', code: 'BATXX', color: '#ba8336'},
-    {coord: '4Ñ', element: 'SRV-COMMS PCC-B', code: 'SRCPB', color: '#a9ba36'},
-    {coord: '4R', element: 'LTE', code: 'LTEXX', color: '#36ba4e'},
-    {coord: '4V', element: 'AC', code: 'ACXXX', color: '#ba4336'},
-    {coord: '5Ñ', element: 'SRV-COMMS PCC-C', code: 'SRCPC', color: '#a1107f'},
-    {coord: '6F', element: 'UPS', code: 'UPSXX', color: '#c781b7'},
-    {coord: '6I', element: 'UPS', code: 'UPSXX', color: '#060733'},
-    {coord: '6R', element: 'TEL/GDA', code: 'TELGD', color: '#173306'},
-    {coord: '6V', element: 'AC', code: 'ACXXX', color: '#06332a'},
-    {coord: '7Ñ', element: 'SCADA E&M', code: 'SCAEM', color: '#47edcc'},
-    {coord: '7R', element: 'CLK/CDA', code: 'CLKCD', color: '#1629f7'},
-    {coord: '8B', element: 'INTERRUPTOR ELECTROMAGNÉTICO 3x1600 AMP', code: 'IE316', color: '#f0f716'},
-    {coord: '8R', element: 'RMS', code: 'RMSXX', color: '#f71629'},
-    {coord: '9V', element: 'LTE-B', code: 'LTEBX', color: '#8e16f7'},
-    {coord: '10B', element: 'TRANSFORMADOR TIPO SECO 500 KVA', code: 'TTS5K', color: '#f716e8'},
-    {coord: '11U', element: 'ARMARIOS RECUPERACIÓN DE MANDO L1 A L6', code: 'ARM16', color: '#f78316'},
-    {coord: '11V', element: 'ARMARIOS RECUPERACIÓN DE MANDO L1 A L6', code: 'ARM16', color: '#3cf716'},
-    {coord: '11W', element: 'MDF', code: 'MDFXX', color: '#167cf7'},
-    {coord: '11Y', element: 'ODF', code: 'ODFXX', color: '#c7f716'},
-    {coord: '12F', element: 'UPS', code: 'UPSXX', color: '#576620'},
-    {coord: '12J', element: 'COBRE', code: 'COBRE', color: '#205266'},
-    {coord: '12L', element: 'COBRE', code: 'COBRE', color: '#382066'},
-    {coord: '12M', element: 'COBRE', code: 'COBRE', color: '#663720'},
-    {coord: '12Ñ', element: 'RED', code: 'REDXX', color: '#662022'},
-    {coord: '12O', element: 'RED', code: 'REDXX', color: '#337a91'},
-    {coord: '12Q', element: 'RED', code: 'REDXX', color: '#8e3596'},
-    {coord: '13B', element: 'TABLERO A', code: 'TABLA', color: '#cfc763'},
-    {coord: '14F', element: 'BAT', code: 'BATXX', color: '#3ba896'},
-    {coord: '15F', element: 'UPS', code: 'UPSXX', color: '#d4735b'},
-    {coord: '15K', element: 'CCTV L1 A L6', code: 'CCT16', color: '#e62e34'},
-    {coord: '15Ñ', element: 'RED C Y S L1 A L6', code: 'RCS16', color: '#065240'},
-    {coord: '15W', element: 'TRACCIÓN', code: 'TRACC', color: '#94e687'},
-    {coord: '16B', element: 'TABLERO P', code: 'TABLP', color: '#05c9f0'},
-    {coord: '16F', element: 'BAT', code: 'BATXX', color: '#574494'},
-    {coord: '16K', element: 'CCTV L1 A L6', code: 'CCT16', color: '#4dd907'},
-    {coord: '16Ñ', element: 'RED C Y S L1 A L6', code: 'RCS16', color: '#3d36ba'},
-    {coord: '16W', element: 'TRACCIÓN', code: 'TRACC', color: '#9336ba'},
-    {coord: '17W', element: 'DISTRIBUCIÓN DE ENERGÍA L2', code: 'DIEL2', color: '#ba8336'},
-    {coord: '19B', element: 'TABLERO B', code: 'TABLB', color: '#a9ba36'},
-    {coord: '19K', element: 'TELECOM L2', code: 'TELL2', color: '#36ba4e'},
-    {coord: '19Ñ', element: 'SERVIDOR BASE DE DATOS L2', code: 'SBDL2', color: '#ba4336'},
-    {coord: '19R', element: 'SERVIDOR DE APLICACIONES L2', code: 'SEAL2', color: '#a1107f'},
-    {coord: '19W', element: 'DISTRIBUCIÓN DE ENERGÍA L3', code: 'DIEL3', color: '#c781b7'},
-    {coord: '20F', element: 'UPS', code: 'UPSXX', color: '#060733'},
-    {coord: '20K', element: 'TELECOM L3', code: 'TELL3', color: '#173306'},
-    {coord: '20Ñ', element: 'SERVIDOR BASE DE DATOS L3', code: 'SBDL3', color: '#06332a'},
-    {coord: '20R', element: 'SERVIDOR DE APLICACIONES L3', code: 'SEAL3', color: '#47edcc'},
-    {coord: '20W', element: 'DISTRIBUCIÓN DE ENERGÍA L4', code: 'DIEL4', color: '#1629f7'},
-    {coord: '21B', element: 'TRANSFORMADOR TIPO SECO 500 KVA', code: 'TTS5K', color: '#f0f716'},
-    {coord: '21F', element: 'BAT', code: 'BATXX', color: '#f71629'},
-    {coord: '22F', element: 'UPS', code: 'UPSXX', color: '#8e16f7'},
-    {coord: '22K', element: 'TELECOM L4', code: 'TELL4', color: '#f716e8'},
-    {coord: '22Ñ', element: 'SERVIDOR BASE DE DATOS L4', code: 'SBDL4', color: '#f78316'},
-    {coord: '22R', element: 'SERVIDOR DE APLICACIONES L4', code: 'SEAL4', color: '#3cf716'},
-    {coord: '22W', element: 'DISTRIBUCIÓN DE ENERGÍA L5', code: 'DIEL5', color: '#167cf7'},
-    {coord: '23F', element: 'BAT', code: 'BATXX', color: '#c7f716'},
-    {coord: '23K', element: 'TELECOM L5', code: 'TELL5', color: '#576620'},
-    {coord: '23Ñ', element: 'SERVIDOR BASE DE DATOS L5', code: 'SBDL5', color: '#205266'},
-    {coord: '23R', element: 'SERVIDOR DE APLICACIONES L5', code: 'SEAL5', color: '#382066'},
+    {coord: '0N',  element: 'PDC',                                     code: 'PDCXX', color: '#337a91'},
+    {coord: '1F',  element: 'BAT',                                     code: 'BATXX', color: '#8e3596'},
+    {coord: '1I',  element: 'BAT',                                     code: 'BATXX', color: '#cfc763'},
+    {coord: '1R',  element: 'SAP/IHM OA',                              code: 'SAIOA', color: '#3ba896'},
+    {coord: '2F',  element: 'UPS',                                     code: 'UPSXX', color: '#d4735b'},
+    {coord: '2I',  element: 'UPS',                                     code: 'UPSXX', color: '#e62e34'},
+    {coord: '2R',  element: 'PIU/DDP',                                 code: 'PIUDD', color: '#065240'},
+    {coord: '2V',  element: 'ODF',                                     code: 'ODFXX', color: '#94e687'},
+    {coord: '3F',  element: 'BAT',                                     code: 'BATXX', color: '#05c9f0'},
+    {coord: '3I',  element: 'BAT',                                     code: 'BATXX', color: '#574494'},
+    {coord: '3Ñ',  element: 'SRV-COMMS PCC-A',                         code: 'SRCPA', color: '#4dd907'},
+    {coord: '3R',  element: 'CCTV',                                    code: 'CCTVX', color: '#3d36ba'},
+    {coord: '4F',  element: 'BAT',                                     code: 'BATXX', color: '#9336ba'},
+    {coord: '4I',  element: 'BAT',                                     code: 'BATXX', color: '#ba8336'},
+    {coord: '4Ñ',  element: 'SRV-COMMS PCC-B',                         code: 'SRCPB', color: '#a9ba36'},
+    {coord: '4R',  element: 'LTE',                                     code: 'LTEXX', color: '#36ba4e'},
+    {coord: '4V',  element: 'AC',                                      code: 'ACXXX', color: '#ba4336'},
+    {coord: '5Ñ',  element: 'SRV-COMMS PCC-C',                         code: 'SRCPC', color: '#a1107f'},
+    {coord: '6F',  element: 'UPS',                                     code: 'UPSXX', color: '#c781b7'},
+    {coord: '6I',  element: 'UPS',                                     code: 'UPSXX', color: '#060733'},
+    {coord: '6R',  element: 'TEL/GDA',                                 code: 'TELGD', color: '#173306'},
+    {coord: '6V',  element: 'AC',                                      code: 'ACXXX', color: '#06332a'},
+    {coord: '7Ñ',  element: 'SCADA E&M',                               code: 'SCAEM', color: '#47edcc'},
+    {coord: '7R',  element: 'CLK/CDA',                                 code: 'CLKCD', color: '#1629f7'},
+    {coord: '8B',  element: 'INTERRUPTOR ELECTROMAGNÉTICO 3x1600 AMP', code: 'IE316', color: '#f0f716'},
+    {coord: '8R',  element: 'RMS',                                     code: 'RMSXX', color: '#f71629'},
+    {coord: '9V',  element: 'LTE-B',                                   code: 'LTEBX', color: '#8e16f7'},
+    {coord: '10B', element: 'TRANSFORMADOR TIPO SECO 500 KVA',         code: 'TTS5K', color: '#f716e8'},
+    {coord: '11U', element: 'ARMARIOS RECUPERACIÓN DE MANDO L1 A L6',  code: 'ARM16', color: '#f78316'},
+    {coord: '11V', element: 'ARMARIOS RECUPERACIÓN DE MANDO L1 A L6',  code: 'ARM16', color: '#3cf716'},
+    {coord: '11W', element: 'MDF',                                     code: 'MDFXX', color: '#167cf7'},
+    {coord: '11Y', element: 'ODF',                                     code: 'ODFXX', color: '#c7f716'},
+    {coord: '12F', element: 'UPS',                                     code: 'UPSXX', color: '#576620'},
+    {coord: '12J', element: 'COBRE',                                   code: 'COBRE', color: '#205266'},
+    {coord: '12L', element: 'COBRE',                                   code: 'COBRE', color: '#382066'},
+    {coord: '12M', element: 'COBRE',                                   code: 'COBRE', color: '#663720'},
+    {coord: '12Ñ', element: 'RED',                                     code: 'REDXX', color: '#662022'},
+    {coord: '12O', element: 'RED',                                     code: 'REDXX', color: '#337a91'},
+    {coord: '12Q', element: 'RED',                                     code: 'REDXX', color: '#8e3596'},
+    {coord: '13B', element: 'TABLERO A',                               code: 'TABLA', color: '#cfc763'},
+    {coord: '14F', element: 'BAT',                                     code: 'BATXX', color: '#3ba896'},
+    {coord: '15F', element: 'UPS',                                     code: 'UPSXX', color: '#d4735b'},
+    {coord: '15K', element: 'CCTV L1 A L6',                            code: 'CCT16', color: '#e62e34'},
+    {coord: '15Ñ', element: 'RED C Y S L1 A L6',                       code: 'RCS16', color: '#065240'},
+    {coord: '15W', element: 'TRACCIÓN',                                code: 'TRACC', color: '#94e687'},
+    {coord: '16B', element: 'TABLERO P',                               code: 'TABLP', color: '#05c9f0'},
+    {coord: '16F', element: 'BAT',                                     code: 'BATXX', color: '#574494'},
+    {coord: '16K', element: 'CCTV L1 A L6',                            code: 'CCT16', color: '#4dd907'},
+    {coord: '16Ñ', element: 'RED C Y S L1 A L6',                       code: 'RCS16', color: '#3d36ba'},
+    {coord: '16W', element: 'TRACCIÓN',                                code: 'TRACC', color: '#9336ba'},
+    {coord: '17W', element: 'DISTRIBUCIÓN DE ENERGÍA L2',              code: 'DIEL2', color: '#ba8336'},
+    {coord: '19B', element: 'TABLERO B',                               code: 'TABLB', color: '#a9ba36'},
+    {coord: '19K', element: 'TELECOM L2',                              code: 'TELL2', color: '#36ba4e'},
+    {coord: '19Ñ', element: 'SERVIDOR BASE DE DATOS L2',               code: 'SBDL2', color: '#ba4336'},
+    {coord: '19R', element: 'SERVIDOR DE APLICACIONES L2',             code: 'SEAL2', color: '#a1107f'},
+    {coord: '19W', element: 'DISTRIBUCIÓN DE ENERGÍA L3',              code: 'DIEL3', color: '#c781b7'},
+    {coord: '20F', element: 'UPS',                                     code: 'UPSXX', color: '#060733'},
+    {coord: '20K', element: 'TELECOM L3',                              code: 'TELL3', color: '#173306'},
+    {coord: '20Ñ', element: 'SERVIDOR BASE DE DATOS L3',               code: 'SBDL3', color: '#06332a'},
+    {coord: '20R', element: 'SERVIDOR DE APLICACIONES L3',             code: 'SEAL3', color: '#47edcc'},
+    {coord: '20W', element: 'DISTRIBUCIÓN DE ENERGÍA L4',              code: 'DIEL4', color: '#1629f7'},
+    {coord: '21B', element: 'TRANSFORMADOR TIPO SECO 500 KVA',         code: 'TTS5K', color: '#f0f716'},
+    {coord: '21F', element: 'BAT',                                     code: 'BATXX', color: '#f71629'},
+    {coord: '22F', element: 'UPS',                                     code: 'UPSXX', color: '#8e16f7'},
+    {coord: '22K', element: 'TELECOM L4',                              code: 'TELL4', color: '#f716e8'},
+    {coord: '22Ñ', element: 'SERVIDOR BASE DE DATOS L4',               code: 'SBDL4', color: '#f78316'},
+    {coord: '22R', element: 'SERVIDOR DE APLICACIONES L4',             code: 'SEAL4', color: '#3cf716'},
+    {coord: '22W', element: 'DISTRIBUCIÓN DE ENERGÍA L5',              code: 'DIEL5', color: '#167cf7'},
+    {coord: '23F', element: 'BAT',                                     code: 'BATXX', color: '#c7f716'},
+    {coord: '23K', element: 'TELECOM L5',                              code: 'TELL5', color: '#576620'},
+    {coord: '23Ñ', element: 'SERVIDOR BASE DE DATOS L5',               code: 'SBDL5', color: '#205266'},
+    {coord: '23R', element: 'SERVIDOR DE APLICACIONES L5',             code: 'SEAL5', color: '#382066'},
     {coord: '24B', element: 'INTERRUPTOR ELECTROMAGNÉTICO 3x1600 AMP', code: 'IE316', color: '#663720'},
-    {coord: '24K', element: 'TELECOM L6', code: 'TELL6', color: '#662022'},
-    {coord: '24Ñ', element: 'SERVIDOR BASE DE DATOS L6', code: 'SBDL6', color: '#827474'},
-    {coord: '24R', element: 'SERVIDOR DE APLICACIONES L6', code: 'SEAL6', color: '#b4aae6'},
-    {coord: '24W', element: 'DISTRIBUCIÓN DE ENERGÍA L6', code: 'DIEL6', color: '#120d2e'},
+    {coord: '24K', element: 'TELECOM L6',                              code: 'TELL6', color: '#662022'},
+    {coord: '24Ñ', element: 'SERVIDOR BASE DE DATOS L6',               code: 'SBDL6', color: '#827474'},
+    {coord: '24R', element: 'SERVIDOR DE APLICACIONES L6',             code: 'SEAL6', color: '#b4aae6'},
+    {coord: '24W', element: 'DISTRIBUCIÓN DE ENERGÍA L6',              code: 'DIEL6', color: '#120d2e'},
   ];
 
   constructor(

+ 6 - 6
sistema-mantenimiento-front/src/app/components/equipment-management/new-equipment/new-equipment.component.html

@@ -185,9 +185,9 @@
                 <input matInput formControlName="pccPositionControl" (input)="pccPositionChange(pccPosition.value)" #pccPosition>
               </mat-form-field>
             </div>
-            <div class="form-cell C03 animated fadeIn" *ngIf="codeType.value == '3'">
+            <div class="form-cell C03 animated fadeIn" *ngIf="codeType.value == '3' || (codeType.value == '6' && formGroup.controls['mixOriginControl'].value == '3')">
               <mat-form-field appearance="outline" class="w-100">
-                <mat-label>Kilometro de origen</mat-label>
+                <mat-label>Kilómetro de origen</mat-label>
                 <input matInput (input)="kilometersChange(originKilometers.value, 'originKilometersControl')" #originKilometers 
                 formControlName="originKilometersControl">
               </mat-form-field>
@@ -249,9 +249,9 @@
                 </button>
               </mat-form-field>
             </div>
-            <div class="form-cell C03 animated fadeIn" *ngIf="codeType.value == '3'">
+            <div class="form-cell C03 animated fadeIn" *ngIf="codeType.value == '3' || (codeType.value == '6' && formGroup.controls['mixDestinyControl'].value == '3')">
               <mat-form-field appearance="outline" class="w-100">
-                <mat-label>Kilometro de destino</mat-label>
+                <mat-label>Kilómetro de destino</mat-label>
                 <input matInput (input)="kilometersChange(destinyKilometers.value, 'destinyKilometersControl')" #destinyKilometers 
                 formControlName="destinyKilometersControl">
               </mat-form-field>
@@ -412,7 +412,7 @@
             <div class="form-cell C03">
               <mat-form-field appearance="outline" class="w-100">
                 <mat-label>Fecha de inicio de la garantía</mat-label>
-                <input matInput [matDatepicker]="warrantyStartDatePicker" formControlName="warrantyStartDateControl">
+                <input matInput [matDatepicker]="warrantyStartDatePicker" formControlName="warrantyStartDateControl" [max]="warrantyEndDate">
                 <mat-datepicker-toggle matIconSuffix [for]="warrantyStartDatePicker">
                   <mat-icon matDatepickerToggleIcon>arrow_drop_down</mat-icon>
                 </mat-datepicker-toggle>
@@ -422,7 +422,7 @@
             <div class="form-cell C03">
               <mat-form-field appearance="outline" class="w-100">
                 <mat-label>Fecha de término de la garantía</mat-label>
-                <input matInput [matDatepicker]="warrantyEndDatePicker" formControlName="warrantyEndDateControl">
+                <input matInput [matDatepicker]="warrantyEndDatePicker" formControlName="warrantyEndDateControl" [min]="warrantyStartDate">
                 <mat-datepicker-toggle matIconSuffix [for]="warrantyEndDatePicker">
                   <mat-icon matDatepickerToggleIcon>arrow_drop_down</mat-icon>
                 </mat-datepicker-toggle>

+ 290 - 13
sistema-mantenimiento-front/src/app/components/equipment-management/new-equipment/new-equipment.component.ts

@@ -50,6 +50,8 @@ export class NewEquipmentComponent implements OnInit {
   generatedTag: string;
   formGroup: FormGroup;
   disableAttachActions: boolean;
+  warrantyStartDate: Date | null;
+  warrantyEndDate: Date | null;
 
   locationsArr: LocationsListItem[];
   levelsArr: any[];
@@ -103,6 +105,8 @@ export class NewEquipmentComponent implements OnInit {
     this.errorStr = "";
     this.generatedTag = "";
     this.disableAttachActions = false;
+    this.warrantyStartDate = null;
+    this.warrantyEndDate = null;
 
     this.locationsArr = [];
     this.levelsArr = [];
@@ -161,8 +165,8 @@ export class NewEquipmentComponent implements OnInit {
       destinyKilometersControl: new FormControl({disabled: true, value: ''}, Validators.required),
       //Controles de información complementaria
       acquisitionDateControl: new FormControl('', Validators.required),
-      warrantyStartDateControl: new FormControl('', Validators.required),
-      warrantyEndDateControl: new FormControl('', Validators.required),
+      warrantyStartDateControl: new FormControl(this.warrantyStartDate, Validators.required),
+      warrantyEndDateControl: new FormControl(this.warrantyEndDate, Validators.required),
       equipmentProviderControl: new FormControl('', Validators.required),
       serialNumberControl: new FormControl('', Validators.required),
       hasSoftwareControl: new FormControl('', Validators.required),
@@ -214,6 +218,14 @@ export class NewEquipmentComponent implements OnInit {
       }
     });
 
+    this.formGroup.controls['warrantyStartDateControl'].valueChanges.subscribe((selected: Date) => {
+      this.warrantyStartDate = selected;
+    });
+
+    this.formGroup.controls['warrantyEndDateControl'].valueChanges.subscribe((selected: Date) => {
+      this.warrantyEndDate = selected;
+    });
+
     this.filteredEquipments = this.formGroup.controls['fatherControl'].valueChanges.pipe(
       startWith(''),
       map(value => this._filterEquipments(value || '')),
@@ -567,7 +579,7 @@ export class NewEquipmentComponent implements OnInit {
     let controlValues: Map<string, string> = new Map();
     let line = this.formGroup.controls['lineControl'].value;
     controlValues.set('lineControl', line);
-
+    
     for(const control of this.codeControlsStr){
       if(!controlValues.has(control)){
         let controlValue = "";
@@ -603,6 +615,8 @@ export class NewEquipmentComponent implements OnInit {
           }else if(control == 'trainAreaControl'){
             let valueArr = controlValue.split('(').reverse();
             controlValue = valueArr[0].replace(')', '');
+          }else if(control == 'equipmentModelControl'){
+            controlValue = controlValue.replace('-', '');
           }
         }
 
@@ -928,6 +942,178 @@ export class NewEquipmentComponent implements OnInit {
           equipmentTag4 = equipmentTag4.substring(0, equipmentTag4.length - 1);
           this.generatedTag = `${lbsTag3}_${pbsTag4}.${equipmentTag4}`;
         break;
+        case "6":
+          let originCodeType = this.formGroup.controls['mixOriginControl'].value;
+          let originCode = this.formGroup.controls['originElementControl'].value;
+          let pbsOrigin = "N/D";
+
+          if(originCodeType == '3' && originCode != null){
+            let codeArr6 = originCode.split('_');
+            if(codeArr6.length > 1){
+              let pbsArr6 = codeArr6[0].split(':');
+              if(pbsArr6.length > 1){
+                let pbsOriginArr6 = pbsArr6[0].split('.');
+
+                let lbsOriginArr6 = codeArr6[1].split('.').reverse();
+                let lbsOrigin6 = lbsOriginArr6[0].split('-');
+                if(lbsOrigin6.length > 2){
+                  pbsOrigin = "";
+  
+                  for(let i = 0; i < 4; i++){
+                    pbsOrigin += `${pbsOriginArr6[i]}.`;
+                  }
+
+                  let kilometers = 'N/D';
+                  let kilometersVal = this.formGroup.controls['originKilometersControl'].value;
+                  if(kilometersVal != null){
+                    let kilometersArr = kilometersVal.split('.');
+                    kilometers = kilometersArr.join(',');
+                  }
+                  
+                  pbsOrigin += `${lbsOrigin6[0]}.${kilometers}`;
+                  if(pbsOrigin.charAt(pbsOrigin.length - 1) == ','){
+                    pbsOrigin = pbsOrigin.substring(0, pbsOrigin.length - 1);
+                  }
+                }
+              }
+            }
+          }else if(originCodeType == '4' && originCode != null){
+            let codeArr4 = originCode.split('_');
+            if(codeArr4.length > 1){
+              let pbsArr4 = codeArr4[0].split(':');
+              if(pbsArr4.length > 1){
+                let pbsOriginArr6 = pbsArr4[0].split('.');
+
+                let lbsOriginArr4 = codeArr4[1].split('.').reverse();
+                let lbsOrigin4 = lbsOriginArr4[0].split('-');
+                if(lbsOrigin4.length > 2){
+                  pbsOrigin = "";
+  
+                  for(let i = 0; i < 4; i++){
+                    pbsOrigin += `${pbsOriginArr6[i]}.`;
+                  }
+                  
+                  pbsOrigin += `${lbsOrigin4[0]}.${lbsOrigin4[2]}`;
+                }
+              }
+            }
+          }else if(originCode != null){
+            let codeArrO = originCode.split('_');
+            if(codeArrO.length > 1){
+              let lbsCodeArrO = codeArrO[1].split('.').reverse();
+              let lbsArrO = lbsCodeArrO[0].split('-').reverse();
+
+              pbsOrigin = `${codeArrO[0]}.${lbsArrO[0]}`;
+            }
+          }else{
+            pbsOrigin = "N/D";
+          }
+
+          let destinyCodeType = this.formGroup.controls['mixDestinyControl'].value;
+          let detinyCode = this.formGroup.controls['destinyElementControl'].value;
+          let pbsDestiny = "N/D";
+
+          if(destinyCodeType == '3' && detinyCode != null){
+            let codeArr6 = detinyCode.split('_');
+            if(codeArr6.length > 1){
+              let pbsArr6 = codeArr6[0].split(':');
+              if(pbsArr6.length > 1){
+                let pbsDestinyArr6 = pbsArr6[1].split('.');
+
+                let lbsDesinyArr6 = codeArr6[1].split('.').reverse();
+                let lbsDestiny6 = lbsDesinyArr6[0].split('-');
+                if(lbsDestiny6.length > 2){
+                  pbsDestiny = "";
+  
+                  for(let i = 0; i < 3; i++){
+                    pbsDestiny += `${pbsDestinyArr6[i]}.`;
+                  }
+
+                  let kilometers = 'N/D';
+                  let kilometersVal = this.formGroup.controls['destinyKilometersControl'].value;
+                  if(kilometersVal != null){
+                    let kilometersArr = kilometersVal.split('.');
+                    kilometers = kilometersArr.join(',');
+                  }
+                  
+                  pbsDestiny += `${lbsDestiny6[0]}.${kilometers}`;
+                  if(pbsDestiny.charAt(pbsDestiny.length - 1) == ','){
+                    pbsDestiny = pbsDestiny.substring(0, pbsDestiny.length - 1);
+                  }
+                }
+              }
+            }
+          }else if(destinyCodeType == '4' && detinyCode != null){
+            let codeArr4 = detinyCode.split('_');
+            if(codeArr4.length > 1){
+              let pbsArr4 = codeArr4[0].split(':');
+              if(pbsArr4.length > 1){
+                let pbsDestinyArr6 = pbsArr4[1].split('.');
+
+                let lbsDestinyArr4 = codeArr4[1].split('.').reverse();
+                let lbsDestiny4 = lbsDestinyArr4[0].split('-');
+                if(lbsDestiny4.length > 2){
+                  pbsDestiny = "";
+  
+                  for(let i = 0; i < 3; i++){
+                    pbsDestiny += `${pbsDestinyArr6[i]}.`;
+                  }
+                  
+                  pbsDestiny += `${lbsDestiny4[0]}.${lbsDestiny4[2]}`;
+                }
+              }
+            }
+          }else if(detinyCode != null){
+            let codeArrO = detinyCode.split('_');
+            let pbsDestinyArr = codeArrO[0].split('.').reverse();
+
+            pbsDestinyArr.pop();
+            pbsDestinyArr.reverse();
+            codeArrO[0] = pbsDestinyArr.join('.');
+            
+            if(codeArrO.length > 1){
+              let lbsCodeArrO = codeArrO[1].split('.').reverse();
+              let lbsArrO = lbsCodeArrO[0].split('-').reverse();
+
+              pbsDestiny = `${codeArrO[0]}.${lbsArrO[0]}`;
+            }
+          }else{
+            pbsDestiny = "N/D";
+          }
+
+          let pbsControls6 = ['familyControl', 'subfamilyControl', 'statusControl'];
+          let pbsTag6 = "";
+  
+          for(const key of pbsControls6){
+            let val = controlValues.get(key);
+            let codePart = 'N/D';
+  
+            if(val != null && val != undefined && val != ''){
+              codePart = val;
+            }
+  
+            pbsTag6 += `${codePart}.`;
+          }
+  
+          pbsTag6 = pbsTag6.substring(0, pbsTag6.length - 1);
+          let equipmentControls6 = ['equipmentTypeControl', 'equipmentModelControl', 'equipmentIDControl'];
+          let equipmentTag6 = "";
+  
+          for(const key of equipmentControls6){
+            let val = controlValues.get(key);
+            let codePart = 'N/D';
+  
+            if(val != null && val != undefined && val != ''){
+              let type = key == 'equipmentModelControl' ? 'model' : 'element';
+              codePart = this.processElement(val, type);
+            }
+  
+            equipmentTag6 += `${codePart}-`;
+          }
+
+          equipmentTag6 = equipmentTag6.substring(0, equipmentTag6.length - 1);
+          this.generatedTag = `${pbsOrigin}:${pbsDestiny}_${pbsTag6}.${equipmentTag6}`;
+        break;
       }
     }
   }
@@ -1339,17 +1525,41 @@ export class NewEquipmentComponent implements OnInit {
   }
 
   async openEquipmentSearch(type: string){
+    let generalCodeType = this.formGroup.controls['codeTypeControl'].value;
     let originElementVal = this.formGroup.controls['originElementControl'].value;
     let destinyElementVal = this.formGroup.controls['destinyElementControl'].value;
     let originElementEnc = originElementVal == undefined || originElementVal == null ? undefined : await this._encService.encrypt(originElementVal);
     let destinyElementEnc = destinyElementVal == undefined || destinyElementVal == null ? undefined : await this._encService.encrypt(destinyElementVal);
 
+    let originCodificationType = this.formGroup.controls['mixOriginControl'].value;
+    let originCodificationTypeEnc: string | null = null;
+    
+    if(type == 'origin' && generalCodeType == '6' && (originCodificationType == null || originCodificationType == undefined)){
+      this._resourcesService.openSnackBar('Primero seleccione el tipo de codificación del origen');
+      return;
+    }else if(type == 'origin' && generalCodeType == '6' && originCodificationType != null && originCodificationType != undefined){
+      originCodificationTypeEnc = await this._encService.encrypt(originCodificationType);
+    }
+
+    let destinyCodificationType = this.formGroup.controls['mixDestinyControl'].value;
+    let destinyCodificationTypeEnc: string | null = null;
+    
+    if(type == 'destiny' && generalCodeType == '6' && (destinyCodificationType == null || destinyCodificationType == undefined)){
+      this._resourcesService.openSnackBar('Primero seleccione el tipo de codificación del destino');
+      return;
+    }else if(type == 'destiny' && generalCodeType == '6' && destinyCodificationType != null && destinyCodificationType != undefined){
+      destinyCodificationTypeEnc = await this._encService.encrypt(destinyCodificationType);
+    }
+
     let dialogRef = this._dialog.open(SearchEquipmentComponent, {
       disableClose: true,
       width: '920px',
       data: {
         originElement: originElementEnc,
         destinyElement: destinyElementEnc,
+        equipmentType: type,
+        originCodificationType: originCodificationTypeEnc,
+        destinyCodificationType: destinyCodificationTypeEnc,
       }
     });
 
@@ -1618,10 +1828,69 @@ export class NewEquipmentComponent implements OnInit {
         let status = formValue.statusControl.replace('-enc', '');
   
         formData.append('code_type', formValue.codeTypeControl);
+        if(formValue.codeTypeControl == '1'){
+          formData.append('origin_occupation', originOccupation);
+          formData.append('origin_element', formValue.originElementControl);
+        }else if(formValue.codeTypeControl == '2'){
+          formData.append('origin_occupation', originOccupation);
+          formData.append('origin_element', formValue.originElementControl);
+
+          formData.append('pcc_intersection', formValue.pccIntersectionControl);
+          formData.append('pcc_position', formValue.pccPositionControl);
+        }else if(formValue.codeTypeControl == '3'){
+          formData.append('origin_occupation', originOccupation);
+          formData.append('origin_element', formValue.originElementControl);
+
+          let destinyLocation = formValue.destinyLocationControl.replace('-enc', '');
+          let destinyLevel = formValue.destinyLevelControl.replace('-enc', '');
+          let destinyOccupation = formValue.destinyOccupationControl.replace('-enc', '');
+
+          formData.append('origin_kilometer', formValue.originKilometersControl);
+          formData.append('destiny_location', destinyLocation);
+          formData.append('destiny_level', destinyLevel);
+          formData.append('destiny_occupation', destinyOccupation);
+          formData.append('destiny_element', formValue.destinyElementControl);
+          formData.append('destiny_kilometer', formValue.destinyKilometersControl);
+        }else if(formValue.codeTypeControl == '4'){
+          formData.append('origin_occupation', originOccupation);
+
+          let originElementEnc = await this._encService.encrypt(formValue.originElementControl);
+          formData.append('origin_element_enc', originElementEnc);
+
+          let destinyElementEnc = await this._encService.encrypt(formValue.destinyElementControl);
+          let destinyLocation = formValue.destinyLocationControl.replace('-enc', '');
+          let destinyLevel = formValue.destinyLevelControl.replace('-enc', '');
+          let destinyOccupation = formValue.destinyOccupationControl.replace('-enc', '');
+
+          formData.append('destiny_element_enc', destinyElementEnc);
+          formData.append('destiny_location', destinyLocation);
+          formData.append('destiny_level', destinyLevel);
+          formData.append('destiny_occupation', destinyOccupation);
+        }else if(formValue.codeTypeControl == '5'){
+          let originOccupationEnc = await this._encService.encrypt(originOccupation);
+          formData.append('origin_occupation', originOccupationEnc);
+          
+          let originElement = formValue.originElementControl.replace('-enc', '');
+          formData.append('origin_element', originElement);
+
+          let trainAreaArr = formValue.trainAreaControl.split('(').reverse();
+          let trainAreaStr = trainAreaArr[0].replace(')', '');
+          let trainAreaEnc = await this._encService.encrypt(trainAreaStr);
+          formData.append('train_area', trainAreaEnc);
+        }else if(formValue.codeTypeControl == '6'){
+          formData.append('origin_occupation', originOccupation);
+          formData.append('origin_code_type', formValue.mixOriginControl);
+          formData.append('destiny_code_type', formValue.mixDestinyControl);
+
+          let originElementEnc = await this._encService.encrypt(formValue.originElementControl);
+          formData.append('origin_element', originElementEnc);
+
+          let destinyElementEnc = await this._encService.encrypt(formValue.destinyElementControl);
+          formData.append('destiny_element', destinyElementEnc);
+        }
+
         formData.append('origin_location', originLocation);
         formData.append('origin_level', originLevel);
-        formData.append('origin_occupation', originOccupation);
-        formData.append('origin_element', formValue.originElementControl);
         formData.append('family', family);
         formData.append('subfamily', subfamily);
         formData.append('status', status);
@@ -1664,10 +1933,10 @@ export class NewEquipmentComponent implements OnInit {
   
         formData.append('pre_generated_code', equipmentCodeEnc);
 
-        await lastValueFrom(this._equipmentManagementService.equipmentPreCodification(formData));
+        /*await lastValueFrom(this._equipmentManagementService.equipmentPreCodification(formData));
         this._resourcesService.openSnackBar('El registro del equipamiento fue enviado para su revisión correctamente.');
 
-        this.goBack(1);
+        this.goBack(1);*/
       }
     }catch(error: any){
       if(error.error == undefined){
@@ -1785,15 +2054,23 @@ export class NewEquipmentComponent implements OnInit {
 
   mixChange(type: string, value: string){
     if(type == 'mixOriginControl'){
-      if(value == '1'){
-        this.formGroup.controls['originLocationControl'].enable();
-        this.formGroup.controls['originLevelControl'].enable();
-        this.formGroup.controls['originOccupationControl'].enable();
-        this.formGroup.controls['originElementControl'].enable();
+      this.formGroup.controls['originElementControl'].enable();
+      this.formGroup.controls['originElementControl'].setValue(null);
+      this.formGroup.controls['destinyKilometersControl'].disable();
+
+      if(value == '3'){
+        this.formGroup.controls['originKilometersControl'].enable();
       }
-      console.log(value);
     }else{
+      this.formGroup.controls['destinyElementControl'].enable();
+      this.formGroup.controls['destinyElementControl'].setValue(null);
+      this.formGroup.controls['originKilometersControl'].disable();
 
+      if(value == '3'){
+        this.formGroup.controls['destinyKilometersControl'].enable();
+      }
     }
+
+    this.buildPreviewTag('', '');
   }
 }

+ 1 - 1
sistema-mantenimiento-front/src/app/components/equipment-management/new-equipment/search-equipment/search-equipment.component.html

@@ -19,7 +19,7 @@
     <table mat-table [dataSource]="dataSource" matSort class="animated fadeIn">
       <ng-container matColumnDef="CODIGO">
         <th mat-header-cell *matHeaderCellDef mat-sort-header>Código</th>
-        <td mat-cell *matCellDef="let element">{{ element.CODIGO }}</td>
+        <td mat-cell *matCellDef="let element" style="overflow-wrap: anywhere;">{{ element.CODIGO }}</td>
       </ng-container>
       <ng-container matColumnDef="TIPO">
         <th mat-header-cell *matHeaderCellDef mat-sort-header>Tipo</th>

+ 52 - 1
sistema-mantenimiento-front/src/app/components/equipment-management/new-equipment/search-equipment/search-equipment.component.ts

@@ -59,7 +59,58 @@ export class SearchEquipmentComponent implements OnInit {
       this.destinyElement = await this._encService.decrypt(this._data.destinyElement);
     }
     
-    this.getEquipments(); 
+    if(this._data.originCodificationType != null && this._data.equipmentType == 'origin'){
+      this.getEquipmentsByCodeType(this._data.originCodificationType);
+    }else if(this._data.destinyCodificationType != null && this._data.equipmentType == 'destiny'){
+      this.getEquipmentsByCodeType(this._data.destinyCodificationType);
+    }else{
+      this.getEquipments(); 
+    }
+  }
+
+  async getEquipmentsByCodeType(codeType: string){
+    try{
+      let idUser = localStorage.getItem('idusuario')!;
+      let equipments: EquipmentsListResponse = await lastValueFrom(this._equipmentManagementService.equipmentConsultByCodeType(
+        codeType,
+        idUser, 
+        1
+      ));
+
+      this.hasError = equipments.error;
+      this.errorStr = equipments.msg;
+
+      if(!this.hasError){
+        let equipmentsArr: EquipmentsListItem[] = [];
+        for(const equipment of equipments.response){
+          equipment.CODIGO = await this._encService.decrypt(equipment.CODIGO);
+          let idDec = await this._encService.decrypt(equipment.ID_EQUIPO);
+          let idEquipment = this.processEquipmentID(idDec);
+
+          equipment.ID_EQUIPO = idEquipment;
+          if(this.originElement != equipment.CODIGO && this.destinyElement != equipment.CODIGO){
+            equipmentsArr.push(equipment);
+          }
+        }
+
+        this.dataSource = new MatTableDataSource(equipmentsArr);
+        this.dataSource.paginator = this.paginator!;
+        this.dataSource.sort = this.sort!;
+      }
+
+      this.isLoading = false;
+    }catch(error: any){
+      if(error.error == undefined){
+        this.errorStr = 'Ocurrió un error inesperado.';
+      }else if(error.error.msg == undefined){
+        this.errorStr = 'Ocurrió un error inesperado.';
+      }else{
+        this.errorStr = error.error.msg;
+      }
+
+      this.hasError = true;
+      this.isLoading = false;
+    }
   }
 
   async getEquipments() {

+ 4 - 0
sistema-mantenimiento-front/src/app/services/equipment-management.service.ts

@@ -66,6 +66,10 @@ export class EquipmentManagementService {
     return this.getQuery(`equipment/consult/only/${code}/${idUser}/${line}`).pipe(map((data: any) => data));
   }
 
+  equipmentConsultByCodeType(codeType: string, idUser: string, line: number){
+    return this.getQuery(`equipment/consult/by-code-type/${codeType}/${idUser}/${line}`).pipe(map((data: any) => data));
+  }
+
   getQuery(query: string){
     const JWT = `Bearer ${localStorage.getItem('token')}`;
     // const URL = `${apiTemp}${query}`;