modified table

This commit is contained in:
2026-03-19 11:00:09 -05:00
parent a3eea6bf2e
commit b76c98b7fc
3 changed files with 110 additions and 52 deletions
+4 -4
View File
@@ -33,22 +33,22 @@ export class FiltrosTablaDto {
@IsArray() @IsArray()
@IsString({ each: true }) @IsString({ each: true })
adscripciones?: number[] adscripciones?: string[]
@IsOptional() @IsOptional()
@IsArray() @IsArray()
@IsString({ each: true }) @IsString({ each: true })
procesadores?: number[] procesadores?: string[]
@IsOptional() @IsOptional()
@IsArray() @IsArray()
@IsString({ each: true }) @IsString({ each: true })
sistemas?: number[] sistemas?: string[]
@IsOptional() @IsOptional()
@IsArray() @IsArray()
@IsString({ each: true }) @IsString({ each: true })
usos?: number[] usos?: string[]
@IsOptional() @IsOptional()
@IsArray() @IsArray()
+2 -2
View File
@@ -59,7 +59,7 @@ export class EquipoController {
@Post('excel/tabla') @Post('excel/tabla')
async exceltabla( async exceltabla(
@Res() res: Response, @Res() res: Response,
@Body() filtros: FiltrosGraficaDto @Body() filtros: FiltrosTablaDto
) { ) {
const buffer = await this.equipoService.tablaExcel(filtros); const buffer = await this.equipoService.tablaExcel(filtros);
@@ -87,7 +87,7 @@ export class EquipoController {
res.send(buffer); res.send(buffer);
} }
@UseGuards(AuthGuard('jwt')) @UseGuards(AuthGuard('jwt'))
@Get('buscar/:inv') @Get('buscar/:inv')
async serch(@Param('inv') inv: string) { async serch(@Param('inv') inv: string) {
+104 -46
View File
@@ -28,7 +28,7 @@ import { CreateEquipoDto } from './dto/create-equipo.dto';
import { MovimientoService } from 'src/movimiento/movimiento.service'; import { MovimientoService } from 'src/movimiento/movimiento.service';
import { Cron } from '@nestjs/schedule'; import { Cron } from '@nestjs/schedule';
import { FiltrosGraficaDto } from './dto/grafica.dto'; import { FiltrosGraficaDto, FiltrosTablaDto } from './dto/grafica.dto';
@Injectable() @Injectable()
export class EquipoService { export class EquipoService {
@@ -1269,7 +1269,7 @@ export class EquipoService {
} }
async tabla(filtros?: FiltrosGraficaDto) { async tabla(filtros?: FiltrosTablaDto) {
const qb = this.equipoRepository const qb = this.equipoRepository
.createQueryBuilder('equipo') .createQueryBuilder('equipo')
.select([]) .select([])
@@ -1283,40 +1283,70 @@ export class EquipoService {
qb.addSelect('adscripcion.adscripcion', 'adscripcion') qb.addSelect('adscripcion.adscripcion', 'adscripcion')
qb.addSelect('equipo.lugar', 'ubicacion') qb.addSelect('equipo.lugar', 'ubicacion')
const tieneFiltroReal = (arr?: string[]) => arr?.length && !arr.includes("0")
console.log(filtros)
// ADSCRIPCIONES
if (filtros?.adscripciones?.length) { if (filtros?.adscripciones?.length) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones // siempre selecciona
}) qb.addSelect('adscripcion.adscripcion', 'adscripcion')
// solo filtra si no es "Todos"
if (tieneFiltroReal(filtros.adscripciones)) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones
})
}
} }
// PROCESADOR
if (filtros?.procesadores?.length) { if (filtros?.procesadores?.length) {
qb.andWhere('procesador.id_procesador IN (:...procesadores)', {
procesadores: filtros.procesadores
})
.addSelect('procesador.procesador', 'procesador')
qb.addSelect('procesador.procesador', 'procesador')
if (tieneFiltroReal(filtros.procesadores)) {
qb.andWhere('procesador.id_procesador IN (:...procesadores)', {
procesadores: filtros.procesadores
})
}
} }
// SISTEMA OPERATIVO
if (filtros?.sistemas?.length) { if (filtros?.sistemas?.length) {
qb.andWhere('sistemaOperativo.id_sistema_operativo IN (:...sistemas)', {
sistemas: filtros.sistemas
})
.addSelect('sistemaOperativo.sistema_operativo', 'so')
qb.addSelect('sistemaOperativo.sistema_operativo', 'so')
if (tieneFiltroReal(filtros.sistemas)) {
qb.andWhere('sistemaOperativo.id_sistema_operativo IN (:...sistemas)', {
sistemas: filtros.sistemas
})
}
} }
// USO
if (filtros?.usos?.length) { if (filtros?.usos?.length) {
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
usos: filtros.usos qb.addSelect('tipoUso.tipo_uso', 'uso')
})
.addSelect('tipoUso.tipo_uso', 'uso') if (tieneFiltroReal(filtros.usos)) {
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
usos: filtros.usos
})
}
} }
// ANTIGÜEDAD
if (filtros?.antiguedad?.length) { if (filtros?.antiguedad?.length) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad qb.addSelect('equipo.antiguedad', 'antiguedad')
})
.addSelect('equipo.antiguedad', 'antiguedad') if (tieneFiltroReal(filtros.antiguedad)) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad
})
}
} }
return qb return qb
@@ -1324,7 +1354,7 @@ export class EquipoService {
.getRawMany() .getRawMany()
} }
async tablaCount(filtros?: FiltrosGraficaDto) { async tablaCount(filtros?: FiltrosTablaDto) {
const qb = this.equipoRepository const qb = this.equipoRepository
.createQueryBuilder('equipo') .createQueryBuilder('equipo')
.select([]) .select([])
@@ -1334,11 +1364,11 @@ export class EquipoService {
qb.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo') qb.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo')
qb.leftJoin('equipo.tipoUso', 'tipoUso') qb.leftJoin('equipo.tipoUso', 'tipoUso')
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
if (filtros?.adscripciones?.length) { if (filtros?.adscripciones?.length) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', { qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones adscripciones: filtros.adscripciones
}) })
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
} }
if (filtros?.procesadores?.length) { if (filtros?.procesadores?.length) {
@@ -1372,7 +1402,7 @@ export class EquipoService {
.getRawMany() .getRawMany()
} }
async tablaExcel(filtros?: FiltrosGraficaDto) { async tablaExcel(filtros?: FiltrosTablaDto) {
const qb = this.equipoRepository const qb = this.equipoRepository
.createQueryBuilder('equipo') .createQueryBuilder('equipo')
.select([]); .select([]);
@@ -1384,40 +1414,68 @@ export class EquipoService {
qb.addSelect('equipo.inventario', 'inventario'); qb.addSelect('equipo.inventario', 'inventario');
qb.addSelect('adscripcion.adscripcion', 'adscripcion'); qb.addSelect('adscripcion.adscripcion', 'adscripcion');
qb.addSelect('equipo.lugar', 'ubicacion') qb.addSelect('equipo.lugar', 'ubicacion');
const tieneFiltroReal = (arr?: string[]) => arr?.length && !arr.includes("0");
// ADSCRIPCIONES
if (filtros?.adscripciones?.length) { if (filtros?.adscripciones?.length) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones qb.addSelect('adscripcion.adscripcion', 'adscripcion');
});
if (tieneFiltroReal(filtros.adscripciones)) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones
});
}
} }
// PROCESADOR
if (filtros?.procesadores?.length) { if (filtros?.procesadores?.length) {
qb.andWhere('procesador.id_procesador IN (:...procesadores)', {
procesadores: filtros.procesadores qb.addSelect('procesador.procesador', 'procesador');
})
.addSelect('procesador.procesador', 'procesador'); if (tieneFiltroReal(filtros.procesadores)) {
qb.andWhere('procesador.id_procesador IN (:...procesadores)', {
procesadores: filtros.procesadores
});
}
} }
// SISTEMA OPERATIVO
if (filtros?.sistemas?.length) { if (filtros?.sistemas?.length) {
qb.andWhere('sistemaOperativo.id_sistema_operativo IN (:...sistemas)', {
sistemas: filtros.sistemas qb.addSelect('sistemaOperativo.sistema_operativo', 'so');
})
.addSelect('sistemaOperativo.sistema_operativo', 'so'); if (tieneFiltroReal(filtros.sistemas)) {
qb.andWhere('sistemaOperativo.id_sistema_operativo IN (:...sistemas)', {
sistemas: filtros.sistemas
});
}
} }
// USO
if (filtros?.usos?.length) { if (filtros?.usos?.length) {
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
usos: filtros.usos qb.addSelect('tipoUso.tipo_uso', 'uso');
})
.addSelect('tipoUso.tipo_uso', 'uso'); if (tieneFiltroReal(filtros.usos)) {
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
usos: filtros.usos
});
}
} }
// ANTIGÜEDAD
if (filtros?.antiguedad?.length) { if (filtros?.antiguedad?.length) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad qb.addSelect('equipo.antiguedad', 'antiguedad');
})
.addSelect('equipo.antiguedad', 'antiguedad'); if (tieneFiltroReal(filtros.antiguedad)) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad
});
}
} }
const data = await qb const data = await qb
@@ -1429,7 +1487,7 @@ export class EquipoService {
const columns = [ const columns = [
{ header: 'Inventario', key: 'inventario', width: 20 }, { header: 'Inventario', key: 'inventario', width: 20 },
{ header: 'Ubicacion', key: 'ubicacion', width: 40 }, { header: 'Ubicación', key: 'ubicacion', width: 40 },
{ header: 'Adscripción', key: 'adscripcion', width: 40 }, { header: 'Adscripción', key: 'adscripcion', width: 40 },
]; ];
@@ -1469,12 +1527,12 @@ export class EquipoService {
qb.leftJoin('equipo.procesador', 'procesador'); qb.leftJoin('equipo.procesador', 'procesador');
qb.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo'); qb.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo');
qb.leftJoin('equipo.tipoUso', 'tipoUso'); qb.leftJoin('equipo.tipoUso', 'tipoUso');
qb.addSelect('adscripcion.adscripcion', 'adscripcion');
if (filtros?.adscripciones?.length) { if (filtros?.adscripciones?.length) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', { qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones adscripciones: filtros.adscripciones
}); });
qb.addSelect('adscripcion.adscripcion', 'adscripcion');
} }
if (filtros?.procesadores?.length) { if (filtros?.procesadores?.length) {