|
|
@ -1541,23 +1541,114 @@ exports.masterConnectedSlaveList = async (req, reply) => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Step 7: Process each slave
|
|
|
|
// Step 7: Process each slave
|
|
|
|
|
|
|
|
// const processedSlaves = await Promise.all(slaveTanks.map(async slave => {
|
|
|
|
|
|
|
|
// const originalHardwareId = slave.connected_to;
|
|
|
|
|
|
|
|
// const tankHardwareId = slave.tankhardwareId;
|
|
|
|
|
|
|
|
// console.log("originalHardwareId",originalHardwareId)
|
|
|
|
|
|
|
|
// console.log("tankHardwareId",tankHardwareId)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// const finalHardwareId = tankHardwareId || originalHardwareId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// const matchingTankData = latestIotData?.tanks?.find(t =>
|
|
|
|
|
|
|
|
// t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId
|
|
|
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // Fetch slave's tank metadata
|
|
|
|
|
|
|
|
// const slaveTankMeta = await Tank.findOne(
|
|
|
|
|
|
|
|
// // { hardwareId: slave.connected_to },
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// $or: [
|
|
|
|
|
|
|
|
// { hardwareId: slave.connected_to },
|
|
|
|
|
|
|
|
// { hardwareId: slave.tankhardwareId } // assuming tankhardwareId is saved as hardwareId in Tank collection
|
|
|
|
|
|
|
|
// ]
|
|
|
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
// { height: 1, length: 1, width: 1 }
|
|
|
|
|
|
|
|
// ).lean();
|
|
|
|
|
|
|
|
// console.log("slaveTankMeta",slaveTankMeta)
|
|
|
|
|
|
|
|
// return {
|
|
|
|
|
|
|
|
// ...slave,
|
|
|
|
|
|
|
|
// isMaster: false,
|
|
|
|
|
|
|
|
// hardwareId: finalHardwareId,
|
|
|
|
|
|
|
|
// tankHeight: matchingTankData?.tankHeight ?? null,
|
|
|
|
|
|
|
|
// typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null),
|
|
|
|
|
|
|
|
// height: slaveTankMeta?.height || null,
|
|
|
|
|
|
|
|
// length: slaveTankMeta?.length || null,
|
|
|
|
|
|
|
|
// width: slaveTankMeta?.width || null
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
// }));
|
|
|
|
|
|
|
|
|
|
|
|
const processedSlaves = await Promise.all(slaveTanks.map(async slave => {
|
|
|
|
const processedSlaves = await Promise.all(slaveTanks.map(async slave => {
|
|
|
|
const originalHardwareId = slave.hardwareId;
|
|
|
|
// const finalHardwareId = slave.tankhardwareId || slave.connected_to;
|
|
|
|
const tankHardwareId = slave.tankhardwareId;
|
|
|
|
// console.log("finalHardwareId",finalHardwareId)
|
|
|
|
|
|
|
|
// // Find matching tank meta by hardwareId in Tank collection
|
|
|
|
|
|
|
|
// const slaveTankMeta = await Tank.findOne(
|
|
|
|
|
|
|
|
// { hardwareId: finalHardwareId },
|
|
|
|
|
|
|
|
// { height: 1, length: 1, width: 1 }
|
|
|
|
|
|
|
|
// ).lean();
|
|
|
|
|
|
|
|
// const finalHardwareId = slave.tankhardwareId || slave.connected_to;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // Try match by tankhardwareId first
|
|
|
|
|
|
|
|
// let slaveTankMeta = await Tank.findOne(
|
|
|
|
|
|
|
|
// { tankhardwareId: slave.tankhardwareId },
|
|
|
|
|
|
|
|
// { height: 1, length: 1, width: 1 }
|
|
|
|
|
|
|
|
// ).lean();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // If not found, fallback to match by hardwareId
|
|
|
|
|
|
|
|
// if (!slaveTankMeta && slave.connected_to) {
|
|
|
|
|
|
|
|
// slaveTankMeta = await Tank.findOne(
|
|
|
|
|
|
|
|
// { hardwareId: slave.connected_to },
|
|
|
|
|
|
|
|
// { height: 1, length: 1, width: 1 }
|
|
|
|
|
|
|
|
// ).lean();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// console.log("slaveTankMeta",slaveTankMeta)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // Find matching IoT tank data (for tankHeight)
|
|
|
|
|
|
|
|
// const matchingTankData = latestIotData?.tanks?.find(t =>
|
|
|
|
|
|
|
|
// t.tankhardwareId === finalHardwareId || t.connected_to === finalHardwareId
|
|
|
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
// console.log("matchingTankData",matchingTankData)
|
|
|
|
|
|
|
|
|
|
|
|
const finalHardwareId = tankHardwareId || originalHardwareId;
|
|
|
|
// return {
|
|
|
|
|
|
|
|
// ...slave,
|
|
|
|
|
|
|
|
// isMaster: false,
|
|
|
|
|
|
|
|
// hardwareId: finalHardwareId,
|
|
|
|
|
|
|
|
// tankHeight: matchingTankData?.tankHeight ?? null,
|
|
|
|
|
|
|
|
// typeOfWater: masterTypeOfWater === 'bore' ? 'bore' : (slave.typeOfWater || null),
|
|
|
|
|
|
|
|
// height: slaveTankMeta?.height || null,
|
|
|
|
|
|
|
|
// length: slaveTankMeta?.length || null,
|
|
|
|
|
|
|
|
// width: slaveTankMeta?.width || null
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
const finalHardwareId = slave.tankhardwareId || slave.connected_to;
|
|
|
|
|
|
|
|
|
|
|
|
const matchingTankData = latestIotData?.tanks?.find(t =>
|
|
|
|
// Try match by tankhardwareId first, filtered by customerId
|
|
|
|
t.tankhardwareId === finalHardwareId || t.hardwareId === finalHardwareId
|
|
|
|
let slaveTankMeta = await Tank.findOne(
|
|
|
|
);
|
|
|
|
{
|
|
|
|
|
|
|
|
tankhardwareId: slave.tankhardwareId,
|
|
|
|
|
|
|
|
customerId: customerId
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{ height: 1, length: 1, width: 1 }
|
|
|
|
|
|
|
|
).lean();
|
|
|
|
|
|
|
|
|
|
|
|
// Fetch slave's tank metadata
|
|
|
|
// If not found, fallback to match by hardwareId + customerId
|
|
|
|
const slaveTankMeta = await Tank.findOne(
|
|
|
|
if (!slaveTankMeta && slave.connected_to) {
|
|
|
|
{ hardwareId: slave.hardwareId },
|
|
|
|
slaveTankMeta = await Tank.findOne(
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
hardwareId: slave.connected_to,
|
|
|
|
|
|
|
|
customerId: customerId
|
|
|
|
|
|
|
|
},
|
|
|
|
{ height: 1, length: 1, width: 1 }
|
|
|
|
{ height: 1, length: 1, width: 1 }
|
|
|
|
).lean();
|
|
|
|
).lean();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
console.log("slaveTankMeta", slaveTankMeta);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Find matching IoT tank data (for tankHeight)
|
|
|
|
|
|
|
|
const matchingTankData = latestIotData?.tanks?.find(t =>
|
|
|
|
|
|
|
|
t.tankhardwareId === finalHardwareId || t.connected_to === finalHardwareId
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
...slave,
|
|
|
|
...slave,
|
|
|
|
isMaster: false,
|
|
|
|
isMaster: false,
|
|
|
|
hardwareId: finalHardwareId,
|
|
|
|
hardwareId: finalHardwareId,
|
|
|
@ -1566,8 +1657,10 @@ exports.masterConnectedSlaveList = async (req, reply) => {
|
|
|
|
height: slaveTankMeta?.height || null,
|
|
|
|
height: slaveTankMeta?.height || null,
|
|
|
|
length: slaveTankMeta?.length || null,
|
|
|
|
length: slaveTankMeta?.length || null,
|
|
|
|
width: slaveTankMeta?.width || null
|
|
|
|
width: slaveTankMeta?.width || null
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Step 8: Combine into one array
|
|
|
|
// Step 8: Combine into one array
|
|
|
|
const combinedData = [masterResponse, ...processedSlaves];
|
|
|
|
const combinedData = [masterResponse, ...processedSlaves];
|
|
|
|