123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- import { successResponse, errorResponse } from "../utils/response.js";
- import { generateBarChart } from "../utils/chartsCom/BarChart.js";
- import { generateLineChart } from "../utils/chartsCom/lineChartsFen.js";
- import { generateLineAndChildLine } from "../utils/chartsCom/lineAndChildLine.js";
- import { generateHeatmapChart } from "../utils/chartsCom/HeatmapCharts.js";
- import { generate3DDrawingChart } from "../utils/chartsCom/3DDrawingChart.js";
- import { generateTime3DChart } from "../utils/chartsCom/Time3DChart.js";
- import { generateTwoDMarkersChart } from "../utils/chartsCom/TwoDMarkersChart.js";
- import { generateTwoDMarkersChart1 } from "../utils/chartsCom/TwoDMarkersChart1.js";
- import { generateColorbarInitTwoDmarkersChart } from "../utils/chartsCom/ColorbarInitTwoDmarkersChart.js";
- import { generatepowerMarkers2DCharts } from "../utils/chartsCom/powerMarkers2DCharts.js";
- import axios from "axios";
- // 提取公共逻辑到辅助函数
- const handleChartGeneration = async (
- req,
- res,
- generateChartFn,
- successMessage,
- additionalParams = {}
- ) => {
- try {
- const { fileAddr } = req.body;
- if (!fileAddr) {
- return errorResponse(res, "缺少数据URL", 400);
- }
- // 从URL获取数据
- const response = await axios.get(fileAddr);
- let data = [];
- // console.log("获取到的数据:", data);/
- if (typeof response.data === "string") {
- let dataString = response.data;
- dataString = dataString.trim(); // 去除前后空格
- dataString = dataString.replace(/Infinity/g, '"Infinity"'); // 替换 Infinity 为 "Infinity"
- try {
- const parsedData = JSON.parse(dataString);
- data = parsedData;
- } catch (error) {
- console.error("JSON 解析失败:", error);
- }
- } else {
- data = response.data;
- }
- console.log(data, " data");
- // 验证数据格式
- if (
- !data ||
- !data.data ||
- !data.data[0] ||
- !data.data[0].xData ||
- !data.data[0].yData
- ) {
- return errorResponse(res, "获取的数据格式不正确", 400);
- }
- // 生成图表并上传
- const imageUrl = await generateChartFn(
- data,
- ...Object.values(additionalParams)
- );
- successResponse(
- res,
- {
- imageUrl: imageUrl,
- },
- successMessage
- );
- } catch (error) {
- console.error(`${successMessage.replace("生成成功", "生成失败")}:`, error);
- if (error.response) {
- errorResponse(
- res,
- `获取数据失败: ${error.response.status}`,
- error.response.status
- );
- } else {
- errorResponse(
- res,
- `${successMessage.replace("生成成功", "生成失败")}`,
- 500
- );
- }
- }
- };
- export const createBarChart = async (req, res) => {
- await handleChartGeneration(req, res, generateBarChart, "柱状图生成成功");
- };
- export const createLineChart = async (req, res) => {
- const { fieldEngineCode } = req.body;
- await handleChartGeneration(req, res, generateLineChart, "折线图生成成功", {
- fieldEngineCode,
- });
- };
- export const createLineAndChildLine = async (req, res) => {
- await handleChartGeneration(
- req,
- res,
- generateLineAndChildLine,
- "折线图生成成功"
- );
- };
- export const createHeatmapCharts = async (req, res) => {
- await handleChartGeneration(req, res, generateHeatmapChart, "热力图生成成功");
- };
- export const create3DDrawingChart = async (req, res) => {
- await handleChartGeneration(req, res, generate3DDrawingChart, "3D图生成成功");
- };
- export const createTime3DChart = async (req, res) => {
- await handleChartGeneration(req, res, generateTime3DChart, "3D 分图生成成功");
- };
- export const createTwoDMarkersChart = async (req, res) => {
- await handleChartGeneration(
- req,
- res,
- generateTwoDMarkersChart,
- "2D 分图生成成功"
- );
- };
- export const createTwoDMarkersChart1 = async (req, res) => {
- await handleChartGeneration(
- req,
- res,
- generateTwoDMarkersChart1,
- "2D 分图生成成功"
- );
- };
- //
- export const createColorbarInitTwoDmarkersChart = async (req, res) => {
- await handleChartGeneration(
- req,
- res,
- generateColorbarInitTwoDmarkersChart,
- "2D 分图生成成功"
- );
- };
- export const createpowerMarkers2DCharts = async (req, res) => {
- await handleChartGeneration(
- req,
- res,
- generatepowerMarkers2DCharts,
- "2D 分图生成成功"
- );
- };
- //
|