{ "properties" : { }, "id" : "b2c3d4e5f678901234567890abcdef01", "script" : null, "groupId" : "f8e3d2c1b0a94e5f8a7b6c5d4e3f2a1", "name" : "市场环境监控", "createTime" : 1781196000000, "updateTime" : null, "lock" : null, "createBy" : "admin", "updateBy" : "admin", "path" : "/market-environment", "method" : "GET", "parameters" : [ ], "options" : [ ], "requestBody" : "", "headers" : [ ], "paths" : [ ], "responseBody" : null, "description" : "市场环境监控:温湿度(iot_device_env_data)+ 气象(iot_device_weather_data)最新一条,只读。", "requestBodyDefinition" : null, "responseBodyDefinition" : null } ================================ // 只读查询,不修改任何数据 var envSql = """ SELECT temperature, humidity, to_char(collect_time, 'YYYY-MM-DD HH24:MI:SS') AS collect_time FROM iot_device_env_data ORDER BY collect_time DESC NULLS LAST LIMIT 1 """ var weatherSql = """ SELECT air_pressure, pm25, pm10, uv_index, rainfall, wind_speed, wind_direction, to_char(collect_time, 'YYYY-MM-DD HH24:MI:SS') AS collect_time FROM iot_device_weather_data ORDER BY collect_time DESC NULLS LAST LIMIT 1 """ var envRows = db.select(envSql) var weatherRows = db.select(weatherSql) var env = envRows && envRows.length > 0 ? envRows[0] : null var weather = weatherRows && weatherRows.length > 0 ? weatherRows[0] : null var pickNum = (row, camelKey, snakeKey) => { if (!row) { return null } if (row[camelKey] != null) { return row[camelKey] } if (row[snakeKey] != null) { return row[snakeKey] } return null } var pickText = (row, camelKey, snakeKey) => { if (!row) { return '' } if (row[camelKey]) { return row[camelKey] } if (row[snakeKey]) { return row[snakeKey] } return '' } return { temperature: pickNum(env, 'temperature', 'temperature'), humidity: pickNum(env, 'humidity', 'humidity'), envCollectTime: pickText(env, 'collectTime', 'collect_time'), airPressure: pickNum(weather, 'airPressure', 'air_pressure'), pm25: pickNum(weather, 'pm25', 'pm25'), pm10: pickNum(weather, 'pm10', 'pm10'), uvIndex: pickNum(weather, 'uvIndex', 'uv_index'), rainfall: pickNum(weather, 'rainfall', 'rainfall'), windSpeed: pickNum(weather, 'windSpeed', 'wind_speed'), windDirection: pickNum(weather, 'windDirection', 'wind_direction'), weatherCollectTime: pickText(weather, 'collectTime', 'collect_time') }