grouped object parameters
This commit is contained in:
@ -181,20 +181,81 @@ export class GeneralService {
|
||||
}
|
||||
|
||||
async getValuesByObjectId(object_id: string): Promise<any[]> {
|
||||
const generalDatabase = 'nGeneral'
|
||||
const generalDatabase = 'nGeneral';
|
||||
|
||||
const result = await this.dataSource.query(`
|
||||
SELECT id_object, id_param, CAST(v.value AS varchar(max)) AS value,
|
||||
date_s,
|
||||
date_po,
|
||||
id_user
|
||||
FROM ${generalDatabase}..tValues v
|
||||
JOIN ${generalDatabase}..tParameters p ON v.id_param = p.id
|
||||
const parameters = await this.dataSource.query(`
|
||||
SELECT
|
||||
pt.id_param,
|
||||
p.name AS name,
|
||||
p.id_group,
|
||||
p.format,
|
||||
p.vtable,
|
||||
p.unit,
|
||||
p.exact_format
|
||||
FROM ${generalDatabase}..ParametersType pt
|
||||
JOIN ${generalDatabase}..tParameters p
|
||||
ON pt.id_param = p.id
|
||||
WHERE pt.id_type = (
|
||||
SELECT TOP 1 CAST(value AS int)
|
||||
FROM ${generalDatabase}..tValues
|
||||
WHERE id_object = '${object_id}'
|
||||
`)
|
||||
return result
|
||||
AND id_param = 3
|
||||
ORDER BY date_s DESC
|
||||
)
|
||||
ORDER BY pt.id_order;
|
||||
`);
|
||||
|
||||
const values = await this.dataSource.query(`
|
||||
SELECT
|
||||
v.id_param,
|
||||
CAST(v.value AS varchar(max)) AS value,
|
||||
v.date_s,
|
||||
v.date_po,
|
||||
v.id_user
|
||||
FROM ${generalDatabase}..tValues v
|
||||
WHERE v.id_object = '${object_id}';
|
||||
`);
|
||||
|
||||
const valuesByParam = values.reduce((acc, v) => {
|
||||
if (!acc[v.id_param]) acc[v.id_param] = [];
|
||||
acc[v.id_param].push({
|
||||
value: v.value,
|
||||
date_s: v.date_s,
|
||||
date_po: v.date_po,
|
||||
id_user: v.id_user
|
||||
});
|
||||
return acc;
|
||||
}, {} as Record<number, any[]>);
|
||||
|
||||
const grouped = parameters
|
||||
.filter(p => p.id_group == null)
|
||||
.map(parent => ({
|
||||
id_param: parent.id_param,
|
||||
name: parent.name,
|
||||
format: parent.format,
|
||||
vtable: parent.vtable,
|
||||
unit: parent.unit,
|
||||
exact_format: parent.exact_format,
|
||||
values: valuesByParam[parent.id_param] || [],
|
||||
parameters: parameters
|
||||
.filter(child => child.id_group === parent.id_param)
|
||||
.map(child => ({
|
||||
id_param: child.id_param,
|
||||
name: child.name,
|
||||
id_group: child.id_group,
|
||||
format: child.format,
|
||||
vtable: child.vtable,
|
||||
unit: child.unit,
|
||||
exact_format: child.exact_format,
|
||||
values: valuesByParam[child.id_param] || []
|
||||
}))
|
||||
}));
|
||||
|
||||
return grouped;
|
||||
}
|
||||
|
||||
|
||||
|
||||
async getParamsById(param_id: number): Promise<any[]> {
|
||||
const generalDatabase = 'nGeneral'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user