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()
@IsString({ each: true })
adscripciones?: number[]
adscripciones?: string[]
@IsOptional()
@IsArray()
@IsString({ each: true })
procesadores?: number[]
procesadores?: string[]
@IsOptional()
@IsArray()
@IsString({ each: true })
sistemas?: number[]
sistemas?: string[]
@IsOptional()
@IsArray()
@IsString({ each: true })
usos?: number[]
usos?: string[]
@IsOptional()
@IsArray()
+2 -2
View File
@@ -59,7 +59,7 @@ export class EquipoController {
@Post('excel/tabla')
async exceltabla(
@Res() res: Response,
@Body() filtros: FiltrosGraficaDto
@Body() filtros: FiltrosTablaDto
) {
const buffer = await this.equipoService.tablaExcel(filtros);
@@ -87,7 +87,7 @@ export class EquipoController {
res.send(buffer);
}
@UseGuards(AuthGuard('jwt'))
@Get('buscar/:inv')
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 { Cron } from '@nestjs/schedule';
import { FiltrosGraficaDto } from './dto/grafica.dto';
import { FiltrosGraficaDto, FiltrosTablaDto } from './dto/grafica.dto';
@Injectable()
export class EquipoService {
@@ -1269,7 +1269,7 @@ export class EquipoService {
}
async tabla(filtros?: FiltrosGraficaDto) {
async tabla(filtros?: FiltrosTablaDto) {
const qb = this.equipoRepository
.createQueryBuilder('equipo')
.select([])
@@ -1283,40 +1283,70 @@ export class EquipoService {
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
qb.addSelect('equipo.lugar', 'ubicacion')
const tieneFiltroReal = (arr?: string[]) => arr?.length && !arr.includes("0")
console.log(filtros)
// ADSCRIPCIONES
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) {
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) {
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) {
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
usos: filtros.usos
})
.addSelect('tipoUso.tipo_uso', 'uso')
qb.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) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad
})
.addSelect('equipo.antiguedad', 'antiguedad')
qb.addSelect('equipo.antiguedad', 'antiguedad')
if (tieneFiltroReal(filtros.antiguedad)) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad
})
}
}
return qb
@@ -1324,7 +1354,7 @@ export class EquipoService {
.getRawMany()
}
async tablaCount(filtros?: FiltrosGraficaDto) {
async tablaCount(filtros?: FiltrosTablaDto) {
const qb = this.equipoRepository
.createQueryBuilder('equipo')
.select([])
@@ -1334,11 +1364,11 @@ export class EquipoService {
qb.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo')
qb.leftJoin('equipo.tipoUso', 'tipoUso')
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
if (filtros?.adscripciones?.length) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones
})
qb.addSelect('adscripcion.adscripcion', 'adscripcion')
}
if (filtros?.procesadores?.length) {
@@ -1372,7 +1402,7 @@ export class EquipoService {
.getRawMany()
}
async tablaExcel(filtros?: FiltrosGraficaDto) {
async tablaExcel(filtros?: FiltrosTablaDto) {
const qb = this.equipoRepository
.createQueryBuilder('equipo')
.select([]);
@@ -1384,40 +1414,68 @@ export class EquipoService {
qb.addSelect('equipo.inventario', 'inventario');
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) {
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) {
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) {
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) {
qb.andWhere('tipoUso.id_uso IN (:...usos)', {
usos: filtros.usos
})
.addSelect('tipoUso.tipo_uso', 'uso');
qb.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) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad
})
.addSelect('equipo.antiguedad', 'antiguedad');
qb.addSelect('equipo.antiguedad', 'antiguedad');
if (tieneFiltroReal(filtros.antiguedad)) {
qb.andWhere('equipo.antiguedad IN (:...antiguedad)', {
antiguedad: filtros.antiguedad
});
}
}
const data = await qb
@@ -1429,7 +1487,7 @@ export class EquipoService {
const columns = [
{ 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 },
];
@@ -1469,12 +1527,12 @@ export class EquipoService {
qb.leftJoin('equipo.procesador', 'procesador');
qb.leftJoin('equipo.sistemaOperativo', 'sistemaOperativo');
qb.leftJoin('equipo.tipoUso', 'tipoUso');
qb.addSelect('adscripcion.adscripcion', 'adscripcion');
if (filtros?.adscripciones?.length) {
qb.andWhere('adscripcion.id_adscripcion IN (:...adscripciones)', {
adscripciones: filtros.adscripciones
});
qb.addSelect('adscripcion.adscripcion', 'adscripcion');
}
if (filtros?.procesadores?.length) {