首页 > 其他分享 >前15天查询次数曲线

前15天查询次数曲线

时间:2024-11-07 15:59:10浏览次数:1  
标签:15 df 查询 次数 日期 Date import

public int getAuditCount() {
int num = 0;
try {
Example example = new Example(AuditInfo.class);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date today = df.parse(df.format(new Date()));
Date yesterday = df.parse(df.format(new Date().getTime() - 1000 * 60 * 60 * 24));
example.createCriteria().andBetween("queryTime", yesterday, today);
num = auditInfoMapper.selectCountByExample(example);
} catch (Exception e) {
log.error("查询异常", e);
return num;
}
return num;
}这是我的代码,相关的东西我全有了。现在我想获得自今天起前15天每天的查询数据,并返回前端,以便让前端绘制折线图。我怎么修改代码

要获取自今天起前15天每天的查询数据,并返回给前端以绘制折线图,你需要进行以下步骤:

  1. 计算日期范围:从今天开始,向前计算15天的日期。
  2. 构造查询条件:为每一天构造查询条件,并获取当天的记录数。
  3. 存储结果:将每天的查询结果存储在一个列表中,以便返回给前端。

以下是修改后的代码示例:

修改后的代码

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class AuditService {

    private static final Logger log = LoggerFactory.getLogger(AuditService.class);
    private AuditInfoMapper auditInfoMapper;

    public AuditService(AuditInfoMapper auditInfoMapper) {
        this.auditInfoMapper = auditInfoMapper;
    }

    public List<Integer> getAuditCountsForLast15Days() {
        List<Integer> counts = new ArrayList<>();
        try {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();

            for (int i = 0; i < 15; i++) {
                // 计算当天的日期
                Date today = calendar.getTime();
                Date yesterday = (Date) today.clone();
                calendar.add(Calendar.DAY_OF_YEAR, -1);

                // 格式化日期
                String todayStr = df.format(today);
                String yesterdayStr = df.format(yesterday);

                // 解析日期
                Date parsedToday = df.parse(todayStr);
                Date parsedYesterday = df.parse(yesterdayStr);

                // 构造查询条件
                Example example = new Example(AuditInfo.class);
                example.createCriteria().andBetween("queryTime", parsedYesterday, parsedToday);

                // 查询记录数
                int count = auditInfoMapper.selectCountByExample(example);
                counts.add(count);
            }
        } catch (ParseException e) {
            log.error("日期解析异常", e);
        } catch (Exception e) {
            log.error("查询异常", e);
        }
        return counts;
    }
}

详细说明

  1. 计算日期范围

    • 使用 Calendar 类来计算从今天开始前15天的日期。
    • 每次循环中,计算当天的日期和前一天的日期。
  2. 构造查询条件

    • 使用 SimpleDateFormat 格式化日期。
    • 解析格式化后的日期字符串。
    • 构造 Example 对象,并设置查询条件为 queryTime 在前一天和当天之间。
  3. 存储结果

    • 将每天的查询结果(记录数)存储在 counts 列表中。
  4. 返回结果

    • 最终返回 counts 列表,包含过去15天每天的记录数。

前端处理

前端可以接收这个列表,并将其用于绘制折线图。假设你使用的是 Vue.js 和 ECharts,以下是一个简单的示例:

前端代码示例

<template>
  <div>
    <div id="chart" style="width: 600px; height: 400px;"></div>
  </div>
</template>

<script>
import * as echarts from 'echarts';
import axios from 'axios';

export default {
  data() {
    return {
      auditCounts: []
    };
  },
  mounted() {
    this.fetchAuditCounts();
  },
  methods: {
    async fetchAuditCounts() {
      try {
        const response = await axios.get('/api/getAuditCountsForLast15Days');
        this.auditCounts = response.data;
        this.initChart();
      } catch (error) {
        console.error('Error fetching audit counts:', error);
      }
    },
    initChart() {
      const chartDom = document.getElementById('chart');
      const myChart = echarts.init(chartDom);
      const option = {
        title: {
          text: '过去15天的审核记录数'
        },
        tooltip: {
          trigger: 'axis'
        },
        xAxis: {
          type: 'category',
          data: this.getPast15Days()
        },
        yAxis: {
          type: 'value'
        },
        series: [
          {
            data: this.auditCounts,
            type: 'line'
          }
        ]
      };
      myChart.setOption(option);
    },
    getPast15Days() {
      const dates = [];
      const today = new Date();
      for (let i = 0; i < 15; i++) {
        const date = new Date(today);
        date.setDate(today.getDate() - i);
        dates.push(date.toLocaleDateString());
      }
      return dates.reverse();
    }
  }
};
</script>

说明

  1. 获取数据

    • 使用 axios 发送请求,获取过去15天的审核记录数。
    • 将获取到的数据存储在 auditCounts 中。
  2. 初始化图表

    • 使用 ECharts 初始化图表,并设置数据和配置项。
    • xAxis 的数据是过去15天的日期,series 的数据是对应的记录数。
  3. 生成日期标签

    • getPast15Days 方法生成过去15天的日期标签,用于图表的 x 轴。

通过这些步骤,你可以获取过去15天每天的查询数据,并在前端绘制折线图。如果有任何具体问题或需要进一步的帮助,请随时提问。

好的,我将在你提供的代码基础上进行修改,以实现获取自今天起前15天每天的查询数据。以下是修改后的后端代码:

public List<Integer> getAuditCountsForLast15Days() {
    List<Integer> counts = new ArrayList<>();
    try {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();

        for (int i = 0; i < 15; i++) {
            // 计算当天的日期
            Date today = calendar.getTime();
            Date yesterday = (Date) today.clone();
            calendar.add(Calendar.DAY_OF_YEAR, -1);

            // 格式化日期
            String todayStr = df.format(today);
            String yesterdayStr = df.format(yesterday);

            // 解析日期
            Date parsedToday = df.parse(todayStr);
            Date parsedYesterday = df.parse(yesterdayStr);

            // 构造查询条件
            Example example = new Example(AuditInfo.class);
            example.createCriteria().andBetween("queryTime", parsedYesterday, parsedToday);

            // 查询记录数
            int count = auditInfoMapper.selectCountByExample(example);
            counts.add(count);
        }
    } catch (ParseException e) {
        log.error("日期解析异常", e);
    } catch (Exception e) {
        log.error("查询异常", e);
    }
    return counts;
}

详细说明

  1. 计算日期范围

    • 使用 Calendar 类来计算从今天开始前15天的日期。
    • 每次循环中,计算当天的日期和前一天的日期。
  2. 构造查询条件

    • 使用 SimpleDateFormat 格式化日期。
    • 解析格式化后的日期字符串。
    • 构造 Example 对象,并设置查询条件为 queryTime 在前一天和当天之间。
  3. 存储结果

    • 将每天的查询结果(记录数)存储在 counts 列表中。
  4. 返回结果

    • 最终返回 counts 列表,包含过去15天每天的记录数。

方法签名

  • 返回类型List<Integer>,包含过去15天每天的记录数。
  • 方法名getAuditCountsForLast15Days,用于获取过去15天每天的记录数。

使用示例

假设你在控制器中调用这个方法并返回给前端:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class AuditController {

    private final AuditService auditService;

    public AuditController(AuditService auditService) {
        this.auditService = auditService;
    }

    @GetMapping("/api/getAuditCountsForLast15Days")
    public List<Integer> getAuditCountsForLast15Days() {
        return auditService.getAuditCountsForLast15Days();
    }
}

前端调用示例

前端可以通过发送 HTTP GET 请求来获取这些数据:

axios.get('/api/getAuditCountsForLast15Days')
  .then(response => {
    const auditCounts = response.data;
    // 处理数据并绘制图表
  })
  .catch(error => {
    console.error('Error fetching audit counts:', error);
  });

希望这些修改能满足你的需求。如果有任何其他问题或需要进一步的帮助,请随时提问。

标签:15,df,查询,次数,日期,Date,import
From: https://www.cnblogs.com/lmzzr24/p/18532474

相关文章

  • BTTP|cas:1341215-17-5
    基本信息英文名称:BTTP英文同义词:3-(4-((bis((1-tert-butyl-1H-1,2,3-triazol-4-yl)methyl)amino)methyl)-1H-1,2,3-triazol-1-yl)propan-1-ol分子式:C20H34N10O分子量:430.556Cas:1341215-17-5沸点:605.4±65.0°C(Predicted)密度:1.25±0.1g/cm3(Predicted)酸度系数(pK......
  • BTTPS|cas:1341215-19-7
    BTTPS是一种化学物质,以下是对其的详细介绍:一、基本信息CAS号:1341215-19-7分子式:C20H34N10O4S分子量:510.62外观:淡灰白色固体溶解度:可溶于水、DMSO、DMF、甲醇等存储条件:避光,在-20摄氏度下保存保存时间:三年结构式:二、化学性质与用途性质:BTTPS是一种铜盐催化的“叠氮-炔基”......
  • BTTES一种水溶性配体|cas:2101505-88-6
    BTTES(也称作TBTA)是一种化学物质,以下是对其的详细介绍:一、基本信息CAS号:2101505-88-6分子式:C20H34N10O3S分子量:494.62外观:白色或黄色/橙色固体密度:约1.4±0.1g/cm³水溶性:具有一定的水溶性,能在水基反应混合物中使用存储条件:应储存在阴凉、干燥、通风良好的库房中,避免光、空气......
  • WEB_方案查询F7的类型设置为F7某个字段的查询
    如下图,在方案查询条件中,【票据号码】与【软通票据】在单据上其实都是F7字段,但是票据号码在这里是字符串查询,而软通票据是F7的样式,这是怎么样将F7的字段查询弄成文本框查询的呢,实际上是通过修改单据列表的query里的属性来实现的,具体修改如下:如果选择的使用F7,则在方案查询中,字段......
  • 十一 MyBatis查询语句专题
    十一、MyBatis查询语句专题模块名:mybatis-007-select打包方式:jar引入依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml创建pojo类:Car创建Mapper接口:CarMapper创建Mapper接口对应的映射文件:co......
  • Java面试系列-MySQL面试题20道,InnoDB,索引类型,事务隔离级别,锁机制,MVCC,主从复制,慢查询,分
    文章目录1.MySQL中的InnoDB和MyISAM存储引擎有什么区别?2.MySQL中的索引类型有哪些?3.MySQL中的索引是如何工作的?4.MySQL中的事务隔离级别有哪些?5.MySQL中的锁机制有哪些?6.MySQL中的MVCC(多版本并发控制)是如何工作的?7.MySQL中的主从复制是如何工作的?8.MySQL中的分区......
  • 高级SQL技巧:提升数据库性能与查询效率
    索引优化索引类型B树索引:B树索引适用于多种数据库操作,包括等值查询、范围查询和排序。B树索引通过将数据存储在一个平衡树结构中,允许快速的数据访问。B树索引的深度影响查询性能,因此,选择正确的索引列和维护索引的健康状况是至关重要的。例如,对于一个大型的电子商务数据库,对产......
  • 158java ssm springboot基于Hive的大数据高校学生考试分析可视化系统考试评估(源码+文
         文章目录系列文章目录前言一、详细视频演示二、项目部分实现截图三、技术栈后端框架springboot前端框架vue持久层框架MyBaitsPlus系统测试四、代码参考源码获取前言......
  • 156java ssm springboot基于hive的大数据安顺旅游景点数据分析可视化系统旅游门票(源码
        文章目录系列文章目录前言一、详细视频演示二、项目部分实现截图三、技术栈后端框架springboot前端框架vue持久层框架MyBaitsPlus系统测试四、代码参考源码获取前言......
  • SQL Server 2022 RTM Cumulative Update 15 发布下载 (累积更新包)
    SQLServer2022RTMCumulativeUpdate15发布下载(累积更新包)最新的累积更新(CU)下载,包含自SQLServer2022RTM发布以来的所有更新。请访问原文链接:https://sysin.org/blog/sql-server-2022/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSQLServer202......