master
Varun 12 months ago
parent 063476085b
commit 2d90cbc199

@ -4413,14 +4413,17 @@ client.on('message', async (topic, message) => {
//const moment = require('moment'); //const moment = require('moment');
exports.consumptionofparticulartank = async (request, reply) => { exports.consumptionofparticulartank = async (request, reply) => {
try { try {
const { customerId } = request.params; const { customerId } = request.params;
const { startDate, stopDate, tankName, tankLocation, block } = request.body; const { startDate, stopDate, tankName, tankLocation, block } = request.body;
console.log("hii")
// Convert input dates into strings in the same format as stored in the database // Convert input dates into proper JavaScript Date objects for comparison
const start = moment(startDate, "DD-MMM-YYYY - HH:mm").format("DD-MMM-YYYY - HH:mm"); const start = moment(startDate, "DD-MMM-YYYY - HH:mm").toDate();
const end = moment(stopDate, "DD-MMM-YYYY - HH:mm").format("DD-MMM-YYYY - HH:mm"); const end = moment(stopDate, "DD-MMM-YYYY - HH:mm").toDate();
// Find the tank by customerId, tankLocation, and tankName // Find the tank by customerId, tankLocation, and tankName
const tank = await Tank.findOne({ const tank = await Tank.findOne({
@ -4440,19 +4443,21 @@ exports.consumptionofparticulartank = async (request, reply) => {
const total_water_added_from_midnight = parseInt(tank.total_water_added_from_midnight.replace(/,/g, ""), 10); const total_water_added_from_midnight = parseInt(tank.total_water_added_from_midnight.replace(/,/g, ""), 10);
const waterlevel = parseInt(tank.waterlevel.replace(/,/g, ""), 10); const waterlevel = parseInt(tank.waterlevel.replace(/,/g, ""), 10);
// Find consumption records by comparing string dates // Fetch all records for the tank (no date filtering yet)
const tankConsumptions = await TankConsumptionOriginalSchema.find({ const tankConsumptions = await TankConsumptionOriginalSchema.find({
customerId, customerId,
tankName, tankName,
tankLocation: tankLocation, tankLocation: tankLocation,
time: {
$gte: start, // Start date as string
$lte: end, // End date as string
}
}).sort({ time: 1 }); }).sort({ time: 1 });
// Calculate total consumption from records // Filter records in JavaScript by comparing the 'time' field after converting to Date
const total_consumption_from_records = tankConsumptions.reduce((acc, record) => { const filteredConsumptions = tankConsumptions.filter((record) => {
const recordTime = moment(record.time, "DD-MMM-YYYY - HH:mm").toDate();
return recordTime >= start && recordTime <= end;
});
// Calculate total consumption from filtered records
const total_consumption_from_records = filteredConsumptions.reduce((acc, record) => {
return acc + parseInt(record.consumption, 10); return acc + parseInt(record.consumption, 10);
}, 0); }, 0);
@ -4470,12 +4475,12 @@ exports.consumptionofparticulartank = async (request, reply) => {
waterlevel: tank.waterlevel, waterlevel: tank.waterlevel,
}; };
// Send the response, including both total consumption and tankConsumptions data // Send the response, including both total consumption and filtered consumption records
reply.send({ reply.send({
status_code: 200, status_code: 200,
tankData, tankData,
totalConsumption: consumption, totalConsumption: consumption,
consumptionRecords: tankConsumptions, // Add the consumption records here consumptionRecords: filteredConsumptions,
}); });
} catch (err) { } catch (err) {
throw boom.boomify(err); throw boom.boomify(err);
@ -4485,3 +4490,4 @@ exports.consumptionofparticulartank = async (request, reply) => {

Loading…
Cancel
Save