|
|
@ -3989,7 +3989,6 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
if (sensor.tankhardwareId) sensorMap[sensor.tankhardwareId] = sensor;
|
|
|
|
if (sensor.tankhardwareId) sensorMap[sensor.tankhardwareId] = sensor;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// const customerId = supportRecord.customerId;
|
|
|
|
|
|
|
|
let customerId = supportRecord.customerId;
|
|
|
|
let customerId = supportRecord.customerId;
|
|
|
|
if (!customerId) {
|
|
|
|
if (!customerId) {
|
|
|
|
const firstSensor = sensors.find(sensor => sensor.customerId);
|
|
|
|
const firstSensor = sensors.find(sensor => sensor.customerId);
|
|
|
@ -3999,8 +3998,9 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
return reply.code(404).send({ message: "Unable to determine customerId from support or sensors." });
|
|
|
|
return reply.code(404).send({ message: "Unable to determine customerId from support or sensors." });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const orders = await Order.find({ customerId }).lean();
|
|
|
|
const orders = await Order.find({ customerId }).lean();
|
|
|
|
//console.log("orders",orders)
|
|
|
|
|
|
|
|
const orderMap = {};
|
|
|
|
const orderMap = {};
|
|
|
|
for (const order of orders) {
|
|
|
|
for (const order of orders) {
|
|
|
|
(order.master_connections || []).forEach(conn => {
|
|
|
|
(order.master_connections || []).forEach(conn => {
|
|
|
@ -4013,17 +4013,27 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const slaveOrderMap = {};
|
|
|
|
|
|
|
|
for (const order of orders) {
|
|
|
|
|
|
|
|
(order.tank_connections || []).forEach(conn => {
|
|
|
|
|
|
|
|
if (conn.hardwareId) {
|
|
|
|
|
|
|
|
slaveOrderMap[conn.hardwareId] = {
|
|
|
|
|
|
|
|
location: conn.location || null,
|
|
|
|
|
|
|
|
typeOfWater: conn.typeOfWater || null
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const masterMap = {};
|
|
|
|
const masterMap = {};
|
|
|
|
|
|
|
|
|
|
|
|
for (const issue of allIssues) {
|
|
|
|
for (const issue of allIssues) {
|
|
|
|
const masterId = issue.masterHardwareId || issue.hardwareId;
|
|
|
|
const masterId = issue.masterHardwareId || issue.hardwareId;
|
|
|
|
const masterSensor = sensorMap[masterId];
|
|
|
|
const masterSensor = sensorMap[masterId];
|
|
|
|
if (!masterSensor || masterSensor.type !== "master") continue;
|
|
|
|
if (!masterSensor || masterSensor.type !== "master") continue;
|
|
|
|
//console.log("masterSensor",masterSensor)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!masterMap[masterSensor.hardwareId]) {
|
|
|
|
if (!masterMap[masterSensor.hardwareId]) {
|
|
|
|
const enriched = orderMap[masterSensor.hardwareId] || {};
|
|
|
|
const enriched = orderMap[masterSensor.hardwareId] || {};
|
|
|
|
// console.log("enriched",enriched)
|
|
|
|
|
|
|
|
masterMap[masterSensor.hardwareId] = {
|
|
|
|
masterMap[masterSensor.hardwareId] = {
|
|
|
|
hardwareId: masterSensor.hardwareId,
|
|
|
|
hardwareId: masterSensor.hardwareId,
|
|
|
|
masterName: enriched.masterName || masterSensor.masterName || "",
|
|
|
|
masterName: enriched.masterName || masterSensor.masterName || "",
|
|
|
@ -4052,40 +4062,12 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
}).lean();
|
|
|
|
}).lean();
|
|
|
|
|
|
|
|
|
|
|
|
const slaveSet = new Set(master.connected_slaves.map(s => s.hardwareId));
|
|
|
|
const slaveSet = new Set(master.connected_slaves.map(s => s.hardwareId));
|
|
|
|
console.log("slaveSet",slaveSet)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// for (const slave of connectedSlaves) {
|
|
|
|
|
|
|
|
// const slaveHardwareId = slave.tankhardwareId || slave.hardwareId;
|
|
|
|
|
|
|
|
// if (slaveSet.has(slaveHardwareId)) continue; // Skip duplicates
|
|
|
|
|
|
|
|
// slaveSet.add(slaveHardwareId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// const slaveEnriched = {
|
|
|
|
|
|
|
|
// hardwareId: slaveHardwareId,
|
|
|
|
|
|
|
|
// tankName: slave.tankName || "",
|
|
|
|
|
|
|
|
// location: slave.location || "",
|
|
|
|
|
|
|
|
// connected_status: slave.connected_status,
|
|
|
|
|
|
|
|
// connected_lora_time: slave.connected_lora_time,
|
|
|
|
|
|
|
|
// connected_lora_date: slave.connected_lora_date,
|
|
|
|
|
|
|
|
// lora_last_check_time: slave.lora_last_check_time,
|
|
|
|
|
|
|
|
// lora_last_disconnect_time: slave.lora_last_disconnect_time,
|
|
|
|
|
|
|
|
// connected_to: slave.connected_to,
|
|
|
|
|
|
|
|
// masterName: master.masterName,
|
|
|
|
|
|
|
|
// type: "slave",
|
|
|
|
|
|
|
|
// typeOfWater: slave.typeOfWater || "",
|
|
|
|
|
|
|
|
// tankHeight: slave.tankHeight,
|
|
|
|
|
|
|
|
// support_lora_last_check_time: slave.support_lora_last_check_time,
|
|
|
|
|
|
|
|
// team_member_support_lora_last_check_time: slave.team_member_support_lora_last_check_time
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// master.connected_slaves.push(slaveEnriched);
|
|
|
|
|
|
|
|
// master.connected_slave_count++;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
for (const slave of connectedSlaves) {
|
|
|
|
for (const slave of connectedSlaves) {
|
|
|
|
const slaveHardwareId = slave.tankhardwareId || slave.hardwareId;
|
|
|
|
const slaveHardwareId = slave.tankhardwareId || slave.hardwareId;
|
|
|
|
if (slaveSet.has(slaveHardwareId)) continue;
|
|
|
|
if (slaveSet.has(slaveHardwareId)) continue;
|
|
|
|
slaveSet.add(slaveHardwareId);
|
|
|
|
slaveSet.add(slaveHardwareId);
|
|
|
|
|
|
|
|
|
|
|
|
// Fetch tank data to fill missing location/typeOfWater
|
|
|
|
|
|
|
|
const tankInfo = await Tank.findOne({
|
|
|
|
const tankInfo = await Tank.findOne({
|
|
|
|
$or: [
|
|
|
|
$or: [
|
|
|
|
{ hardwareId: slaveHardwareId },
|
|
|
|
{ hardwareId: slaveHardwareId },
|
|
|
@ -4093,12 +4075,11 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}).lean();
|
|
|
|
}).lean();
|
|
|
|
|
|
|
|
|
|
|
|
console.log("tankInfo",tankInfo)
|
|
|
|
const slaveOrderInfo = slaveOrderMap[slaveHardwareId] || {};
|
|
|
|
|
|
|
|
|
|
|
|
const slaveEnriched = {
|
|
|
|
const slaveEnriched = {
|
|
|
|
hardwareId: slaveHardwareId,
|
|
|
|
hardwareId: slaveHardwareId,
|
|
|
|
tankName: slave.tankName || (tankInfo?.tankName ?? ""),
|
|
|
|
tankName: slave.tankName || (tankInfo?.tankName ?? ""),
|
|
|
|
location: slave.location || (tankInfo?.location ?? ""),
|
|
|
|
location: slave.location || tankInfo?.tankLocation || slaveOrderInfo.location || "",
|
|
|
|
connected_status: slave.connected_status,
|
|
|
|
connected_status: slave.connected_status,
|
|
|
|
connected_lora_time: slave.connected_lora_time,
|
|
|
|
connected_lora_time: slave.connected_lora_time,
|
|
|
|
connected_lora_date: slave.connected_lora_date,
|
|
|
|
connected_lora_date: slave.connected_lora_date,
|
|
|
@ -4107,16 +4088,15 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
connected_to: slave.connected_to,
|
|
|
|
connected_to: slave.connected_to,
|
|
|
|
masterName: master.masterName,
|
|
|
|
masterName: master.masterName,
|
|
|
|
type: "slave",
|
|
|
|
type: "slave",
|
|
|
|
typeOfWater: slave.typeOfWater || (tankInfo?.typeOfWater ?? ""),
|
|
|
|
typeOfWater: slave.typeOfWater || tankInfo?.typeOfWater || slaveOrderInfo.typeOfWater || "",
|
|
|
|
tankHeight: slave.tankHeight,
|
|
|
|
tankHeight: slave.tankHeight,
|
|
|
|
support_lora_last_check_time: slave.support_lora_last_check_time,
|
|
|
|
support_lora_last_check_time: slave.support_lora_last_check_time,
|
|
|
|
team_member_support_lora_last_check_time: slave.team_member_support_lora_last_check_time
|
|
|
|
team_member_support_lora_last_check_time: slave.team_member_support_lora_last_check_time
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
master.connected_slaves.push(slaveEnriched);
|
|
|
|
master.connected_slaves.push(slaveEnriched);
|
|
|
|
master.connected_slave_count++;
|
|
|
|
master.connected_slave_count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return reply.send({
|
|
|
|
return reply.send({
|
|
|
@ -4134,6 +4114,7 @@ exports.getDisconnectedIssuesBySupportId = async (req, reply) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const { supportId } = req.params;
|
|
|
|
const { supportId } = req.params;
|
|
|
|