From 91f151d14bc2c34d2819b866d3be7393a9d378cc Mon Sep 17 00:00:00 2001 From: Emilio Date: Tue, 4 Nov 2025 10:01:02 -0600 Subject: [PATCH] Se agregaron --- mariadb/aria_log.00000001 | Bin 4947968 -> 4972544 bytes mariadb/aria_log_control | Bin 52 -> 52 bytes src/equipo/entities/catalogo.entities.ts | 3 ++ src/equipo/entities/equipo.entity.ts | 4 +++ src/equipo/equipo.service.ts | 40 +++++++++++++++++++++++ 5 files changed, 47 insertions(+) diff --git a/mariadb/aria_log.00000001 b/mariadb/aria_log.00000001 index 64fd4b1d61fa7b0f1f7a374a3f330b413c824aed..61f3c9037d562abe09b1212f1e796413e8992af7 100644 GIT binary patch delta 11810 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 diff --git a/mariadb/aria_log_control b/mariadb/aria_log_control index 5b88e4dd85425a1e4566331f3249089aaecd81b0..60663fa1ba66fcf39307f370c0bfbae803d3c824 100644 GIT binary patch delta 27 fcmXppnII>|#Pm&wk%6J)yf*`oVi02o5)2FgNoxb< delta 27 fcmXppnII>YHnTB>k%1ws+?xSNF^I7O2?hoLRJsI4 diff --git a/src/equipo/entities/catalogo.entities.ts b/src/equipo/entities/catalogo.entities.ts index e9b3738..1308b46 100644 --- a/src/equipo/entities/catalogo.entities.ts +++ b/src/equipo/entities/catalogo.entities.ts @@ -65,6 +65,9 @@ export class TipoEquipo { @OneToMany(() => ProcesadorTipoEquipo, (pte) => pte.tipoEquipo) procesadorTipoEquipos: ProcesadorTipoEquipo[]; + + @OneToMany(() => Equipo, (eqp) => eqp.tipoEquipo) + equipo: Equipo[]; } @Entity() diff --git a/src/equipo/entities/equipo.entity.ts b/src/equipo/entities/equipo.entity.ts index 1f6bd96..37ec707 100644 --- a/src/equipo/entities/equipo.entity.ts +++ b/src/equipo/entities/equipo.entity.ts @@ -62,6 +62,10 @@ export class Equipo { ) sistemaOperativo: SistemaOperativo; + @JoinColumn({ name: 'id_tipo_equipo' }) + @ManyToOne(() => TipoEquipo, (tipoEquipo) => tipoEquipo.equipo) + tipoEquipo: TipoEquipo; + @JoinColumn({ name: 'id_procesador_tipoEquipo' }) @ManyToOne( () => ProcesadorTipoEquipo, diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index ba812b9..fefb81b 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -293,4 +293,44 @@ export class EquipoService { relations: ['procesador', 'tipoEquipo'], }); } + + async contar_tipoEquipos_tipoUso(): Promise { + try { + const count = await this.equipoRepository + .createQueryBuilder('e') + .innerJoin('e.tipoEquipo', 't') // une la tabla usuario + .innerJoin('e.tipoUso', 'u') // une la tabla categoria + .select(['u.tipo_uso AS uso', 't.tipo_equipo AS categoria']) + .addSelect('COUNT(*) AS total') + .groupBy('t.id_tipo_de_equipo') + .addGroupBy('u.id_tipo_uso') + .getRawMany(); + + return count; + } catch (error) { + console.error('Error al contar equipos por tipo y uso:', error); + throw error; + } + } + + async contar_tipoEquipos_sistemasOperativos( + tipo_equipo: string[], + ): Promise { + try { + const count = await this.equipoRepository + .createQueryBuilder('e') + .innerJoin('e.tipoEquipo', 't') // une la tabla usuario + .innerJoin('e.sistemaOperativo', 's') // une la tabla categoria + .where('t.tipo_equipo IN (:...tipo_equipo)', { tipo_equipo }) + .select(['s.sistema_operativo AS sistema_operativo']) + .addSelect('COUNT(*) AS total') + .groupBy('s.sistema_operativo') + .getRawMany(); + + return count; + } catch (error) { + console.error('Error al contar equipos por tipo y uso:', error); + throw error; + } + } }