SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts

这篇具有很好参考价值的文章主要介绍了SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

继续上一节的内容,本节学习Apache ECharts,实现营业额统计、用户统计、订单统计和销量排名Top10功能。

数据统计效果图:

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

Apache ECharts

Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

常见效果:柱形图、饼形图、折线图

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库




入门案例

Apache Echarts官方提供的快速入门

实现步骤:

1). 引入echarts.js 文件(当天资料已提供)

2). 为 ECharts 准备一个设置宽高的 DOM

3). 初始化echarts实例

4). 指定图表的配置项和数据

5). 使用指定的配置项和数据显示图表

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>ECharts</title>
    <!-- 引入刚刚下载的 ECharts 文件 -->
    <script src="echarts.js"></script>
  </head>
  <body>
    <!-- 为 ECharts 准备一个定义了宽高的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById('main'));

      // 指定图表的配置项和数据
      var option = {
        title: { // 图表标题
          text: 'ECharts 入门示例'
        },
        tooltip: {},
        legend: { // 图例
          data: ['销量']
        },
        xAxis: { // x轴
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [ // y轴数据
          {
            name: '销量',
            type: 'bar', // 指定柱状图类型
            data: [5, 20, 36, 10, 10, 20]
          }
        ]
      };

      // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option);
    </script>
  </body>
</html>

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式要求的动态数据,然后响应给前端来展示图表。






营业额统计

营业额统计基于折现图来展现,并且按照天来展示的,不管光标放在哪个点上,就会把具体的数值展示出来。并且日期并不是固定写死的,是由上边时间选择器来决定。比如选择是近7天、或者是近30日,或者是本周,就会把相应这个时间段之内的每一天日期通过横坐标展示。

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

业务规则:营业额指订单状态为已完成的订单金额合计、基于可视化报表的折线图展示营业额数据,X轴为日期,Y轴为营业额、根据时间选择区间,展示每天的营业额数据

通过上述原型图,设计出对应的接口。具体返回数据一般由前端来决定,前端展示图表,具体折现图对应数据是什么格式,是有固定的要求的。所以后端需要去适应前端,它需要什么格式的数据,我们就给它返回什么格式的数据。

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

根据接口定义设计对应的VO,在sky-pojo模块,TurnoverReportVO.java已定义。

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TurnoverReportVO implements Serializable {

    //日期,以逗号分隔,例如:2022-10-01,2022-10-02,2022-10-03
    private String dateList;

    //营业额,以逗号分隔,例如:406.0,1520.0,75.0
    private String turnoverList;

}

根据接口定义创建admin.ReportController:

/**
 * 报表
 */
@RestController
@RequestMapping("/admin/report")
@Slf4j
@Api(tags = "统计报表相关接口")
public class ReportController {

    @Autowired
    private ReportService reportService;

    /**
     * 营业额数据统计
     *
     * @param begin
     * @param end
     * @return
     */
    @GetMapping("/turnoverStatistics")
    @ApiOperation("营业额数据统计")
    public Result<TurnoverReportVO> turnoverStatistics(
            @DateTimeFormat(pattern = "yyyy-MM-dd")
            LocalDate begin,
            @DateTimeFormat(pattern = "yyyy-MM-dd")
            LocalDate end) {
        return Result.success(reportService.getTurnover(begin, end));
    }

}

创建ReportServiceImpl实现类,实现getTurnover方法:

@Service
@Slf4j
public class ReportServiceImpl implements ReportService {

    @Autowired
    private OrderMapper orderMapper;

    /**
     * 根据时间区间统计营业额
     * @param begin
     * @param end
     * @return
     */
    public TurnoverReportVO getTurnover(LocalDate begin, LocalDate end) {
        //dateList用于存放从begin到end范围内的每天的日期
        List<LocalDate> dateList = new ArrayList<>();
        dateList.add(begin);

        while (!begin.equals(end)){
            begin = begin.plusDays(1);//日期计算,获得指定日期后1天的日期
            dateList.add(begin);
        }

        List<Double> turnoverList = new ArrayList<>();
        for (LocalDate date : dateList) { //计算每个日期该天的营业额
            //查询data日期对应的营业额 要求状态为"已完成"的订单金额合计

            //给data日期加上时分秒 因为数据库里存的是LocalDateTime类型 而data是LocalDate类型
            LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN);//LocalTime.MIN对应一天开始的时刻'00:00'
            LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX);//LocalTime.MAX对应一天结束的时刻'23:59:59.999999999'
            Map map = new HashMap();
            map.put("status", Orders.COMPLETED);
            map.put("begin",beginTime);
            map.put("end", endTime);
            Double turnover = orderMapper.sumByMap(map);
            turnover = turnover == null ? 0.0 : turnover;
            turnoverList.add(turnover);
        }

        //数据封装
        return TurnoverReportVO.builder()
                .dateList(StringUtils.join(dateList,",")) //指定分隔符拼接list里的字符串
                .turnoverList(StringUtils.join(turnoverList,","))
                .build();
    }
}

在OrderMapper接口声明sumByMap方法:

/**
 * 根据动态条件统计营业额
 * @param map
 */
Double sumByMap(Map map);

在OrderMapper.xml文件中编写动态SQL:

<select id="sumByMap" resultType="java.lang.Double">
    select sum(amount) from orders
    <where>
        <if test="status != null">
            and status = #{status}
        </if>
        <if test="begin != null">
            and order_time <![CDATA[>]]>= #{begin}
        </if>
        <if test="end != null">
            and order_time <![CDATA[<]]>= #{end}
        </if>
    </where>
</select>

这里日期的大于等于和小于等于因为是占位符,原本需要用一些占位符代替:

>=写成&gt;=
<=写成&lt;=

我使用了CDATA区,这种写法也可以,可以参考:java特殊文件 属性文件properties和XML文件

进入数据统计模块查看近7日营业额统计

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

进入开发者模式,查看返回数据

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库






用户统计

通过折线图来展示用户的数量,蓝色线代表的是用户总量,绿色线代表的是新增用户数量,具体到每一天。所以说用户统计主要统计两个数据,一个是总的用户数量,另外一个是新增用户数量。

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

业务规则:基于可视化报表的折线图展示用户数据,X轴为日期,Y轴为用户数、根据时间选择区间,展示每天的用户总量和新增用户量数据

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

根据用户统计接口的返回结果设计VO,在sky-pojo模块,UserReportVO.java已定义

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserReportVO implements Serializable {

    //日期,以逗号分隔,例如:2022-10-01,2022-10-02,2022-10-03
    private String dateList;

    //用户总量,以逗号分隔,例如:200,210,220
    private String totalUserList;

    //新增用户,以逗号分隔,例如:20,21,10
    private String newUserList;

}

ReportController中创建userStatistics方法:

/**
 * 用户数据统计
 * @param begin
 * @param end
 * @return
 */
@GetMapping("/userStatistics")
@ApiOperation("用户数据统计")
public Result<UserReportVO> userStatistics(
        @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
        @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){

    return Result.success(reportService.getUserStatistics(begin,end));
}

在ReportServiceImpl实现类中实现getUserStatistics方法:

/**
 * 根据时间区间统计用户数量
 * @param begin
 * @param end
 * @return
 */
public UserReportVO getUserStatistics(LocalDate begin, LocalDate end) {
    //dateList用于存放从begin到end范围内的每天的日期
    List<LocalDate> dateList = new ArrayList<>();
    dateList.add(begin);

    while (!begin.equals(end)){
        begin = begin.plusDays(1);//日期计算,获得指定日期后1天的日期
        dateList.add(begin);
    }
    List<Integer> newUserList = new ArrayList<>(); //新增用户数
    List<Integer> totalUserList = new ArrayList<>(); //总用户数

    for (LocalDate date : dateList) {//计算每个日期该天的新增用户数量和总用户数量
        //给data日期加上时分秒 因为数据库里存的是LocalDateTime类型 而data是LocalDate类型
        LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN);//LocalTime.MIN对应一天开始的时刻'00:00'
        LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX);//LocalTime.MAX对应一天结束的时刻'23:59:59.999999999'
        //新增用户数量 select count(id) from user where create_time >= ? and create_time <= ?
        Integer newUser = getUserCount(beginTime, endTime);
        //总用户数量 select count(id) from user where  create_time <= ?
        Integer totalUser = getUserCount(null, endTime);

        newUserList.add(newUser);
        totalUserList.add(totalUser);
    }

    return UserReportVO.builder()
            .dateList(StringUtils.join(dateList,","))
            .newUserList(StringUtils.join(newUserList,","))
            .totalUserList(StringUtils.join(totalUserList,","))
            .build();
}

在ReportServiceImpl实现类中创建私有方法getUserCount:

/**
 * 根据时间区间统计用户数量
 * @param beginTime
 * @param endTime
 * @return
 */
private Integer getUserCount(LocalDateTime beginTime, LocalDateTime endTime) {
    Map map = new HashMap();
    map.put("begin",beginTime);
    map.put("end", endTime);
    return userMapper.countByMap(map);
}

在UserMapper接口中声明countByMap方法:

/**
 * 根据动态条件统计用户数量
 * @param map
 * @return
 */
Integer countByMap(Map map);

在UserMapper.xml文件中编写动态SQL:

<select id="countByMap" resultType="java.lang.Integer">
    select count(id) from user
    <where>
        <if test="begin != null">
            and create_time &gt;= #{begin}
        </if>
        <if test="end != null">
            and create_time &lt;= #{end}
        </if>
    </where>
</select>

进入数据统计模块,查看近7日用户统计

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

进入开发者模式,查看返回数据

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库






订单统计

通过一个折现图来展现订单,蓝色的线代表的是订单总数,而下边这根绿色的线代表的是有效订单数,即状态是已完成的订单,分别反映的是每一天的数据。上面还有3个数字,分别是订单总数、有效订单、订单完成率,它指的是整个时间区间之内总的数据。

业务规则:有效订单指状态为 “已完成” 的订单、基于可视化报表的折线图展示订单数据,X轴为日期,Y轴为订单数量、根据时间选择区间,展示每天的订单总数和有效订单数、展示所选时间区间内的有效订单数、总订单数、订单完成率,订单完成率 = 有效订单数 / 总订单数 * 100%

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

根据订单统计接口的返回结果设计VO,在sky-pojo模块,OrderReportVO.java已定义

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderReportVO implements Serializable {

    //日期,以逗号分隔,例如:2022-10-01,2022-10-02,2022-10-03
    private String dateList;

    //每日订单数,以逗号分隔,例如:260,210,215
    private String orderCountList;

    //每日有效订单数,以逗号分隔,例如:20,21,10
    private String validOrderCountList;

    //订单总数
    private Integer totalOrderCount;

    //有效订单数
    private Integer validOrderCount;

    //订单完成率
    private Double orderCompletionRate;

}

在ReportController中根据订单统计接口创建orderStatistics方法:

/**
 * 订单数据统计
 * @param begin
 * @param end
 * @return
 */
@GetMapping("/ordersStatistics")
@ApiOperation("用户数据统计")
public Result<OrderReportVO> orderStatistics(
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        LocalDate begin,
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        LocalDate end){

    return Result.success(reportService.getOrderStatistics(begin,end));
}

在ReportServiceImpl实现类中实现getOrderStatistics方法:

/**
 * 根据时间区间统计订单数量
 * @param begin
 * @param end
 * @return
 */
public OrderReportVO getOrderStatistics(LocalDate begin, LocalDate end){
    //dateList用于存放从begin到end范围内的每天的日期
    List<LocalDate> dateList = new ArrayList<>();
    dateList.add(begin);

    while (!begin.equals(end)){
        begin = begin.plusDays(1);//日期计算,获得指定日期后1天的日期
        dateList.add(begin);
    }
    //每天订单总数集合
    List<Integer> orderCountList = new ArrayList<>();
    //每天有效订单数集合
    List<Integer> validOrderCountList = new ArrayList<>();
    for (LocalDate date : dateList) {//计算每个日期该天的总订单数和有效订单数
        //给data日期加上时分秒 因为数据库里存的是LocalDateTime类型 而data是LocalDate类型
        LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN);//LocalTime.MIN对应一天开始的时刻'00:00'
        LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX);//LocalTime.MAX对应一天结束的时刻'23:59:59.999999999'
        //查询每天的总订单数 select count(id) from orders where order_time >= ? and order_time <= ?
        Integer orderCount = getOrderCount(beginTime, endTime, null);

        //查询每天的有效订单数 select count(id) from orders where order_time >= ? and order_time <= ? and status = ?
        Integer validOrderCount = getOrderCount(beginTime, endTime, Orders.COMPLETED);

        orderCountList.add(orderCount);
        validOrderCountList.add(validOrderCount);
    }

    //时间区间内的总订单数
    Integer totalOrderCount = orderCountList.stream().reduce(Integer::sum).get();
    //时间区间内的总有效订单数
    Integer validOrderCount = validOrderCountList.stream().reduce(Integer::sum).get();
    //订单完成率
    Double orderCompletionRate = 0.0;
    if(totalOrderCount != 0){
        orderCompletionRate = validOrderCount.doubleValue() / totalOrderCount;
    }
    return OrderReportVO.builder()
            .dateList(StringUtils.join(dateList, ","))
            .orderCountList(StringUtils.join(orderCountList, ","))
            .validOrderCountList(StringUtils.join(validOrderCountList, ","))
            .totalOrderCount(totalOrderCount)
            .validOrderCount(validOrderCount)
            .orderCompletionRate(orderCompletionRate)
            .build();

}

在ReportServiceImpl实现类中提供私有方法getOrderCount:

/**
 * 根据时间区间统计指定状态的订单数量
 * @param beginTime
 * @param endTime
 * @param status
 * @return
 */
private Integer getOrderCount(LocalDateTime beginTime, LocalDateTime endTime, Integer status) {
    Map map = new HashMap();
    map.put("status", status);
    map.put("begin",beginTime);
    map.put("end", endTime);
    return orderMapper.countByMap(map);
}

在OrderMapper接口中声明countByMap方法:

/**
 *根据动态条件统计订单数量
 * @param map
 */
Integer countByMap(Map map);

在OrderMapper.xml文件中编写动态SQL:

<select id="countByMap" resultType="java.lang.Integer">
    select count(id) from orders
    <where>
        <if test="status != null">
            and status = #{status}
        </if>
        <if test="begin != null">
            and order_time &gt;= #{begin}
        </if>
        <if test="end != null">
            and order_time &lt;= #{end}
        </if>
    </where>
</select>

进入数据统计模块查看近7日订单统计

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

进入开发者模式,查看返回数据

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库






销量排名Top10

销量排名指的就是菜品和套餐销售的数量排名。通过柱形图来展示销量排名,这些销量是按照降序来排列,并且只需要统计销量排名前十的商品。

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

业务规则:根据时间选择区间,展示销量前10的商品(包括菜品和套餐)、基于可视化报表的柱状图降序展示商品销量、此处的销量为商品销售的份数

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

根据销量排名接口的返回结果设计VO,在sky-pojo模块,SalesTop10ReportVO.java已定义

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalesTop10ReportVO implements Serializable {

    //商品名称列表,以逗号分隔,例如:鱼香肉丝,宫保鸡丁,水煮鱼
    private String nameList;

    //销量列表,以逗号分隔,例如:260,215,200
    private String numberList;

}

在ReportController中根据销量排名接口创建top10方法:

/**
 * 销量排名统计
 * @param begin
 * @param end
 * @return
 */
@GetMapping("/top10")
@ApiOperation("销量排名统计")
public Result<SalesTop10ReportVO> top10(
        @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
        @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
    return Result.success(reportService.getSalesTop10(begin,end));
}

在ReportServiceImpl实现类中实现getSalesTop10方法:

/**
 * 查询指定时间区间内的销量排名top10
 * @param begin
 * @param end
 * @return
 * */
public SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end){
    //给data日期加上时分秒 因为数据库里存的是LocalDateTime类型 而data是LocalDate类型
    LocalDateTime beginTime = LocalDateTime.of(begin, LocalTime.MIN);//LocalTime.MIN对应一天开始的时刻'00:00'
    LocalDateTime endTime = LocalDateTime.of(end, LocalTime.MAX);//LocalTime.MAX对应一天结束的时刻'23:59:59.999999999'
    List<GoodsSalesDTO> goodsSalesDTOList = orderMapper.getSalesTop10(beginTime, endTime);

    String nameList = StringUtils.join(goodsSalesDTOList.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList()),",");
    String numberList = StringUtils.join(goodsSalesDTOList.stream().map(GoodsSalesDTO::getNumber).collect(Collectors.toList()),",");

    return SalesTop10ReportVO.builder()
            .nameList(nameList)
            .numberList(numberList)
            .build();
}

在OrderMapper接口中声明getSalesTop10方法:

/**
 * 查询商品销量排名
 * @param begin
 * @param end
 */
List<GoodsSalesDTO> getSalesTop10(LocalDateTime begin, LocalDateTime end);

在OrderMapper.xml文件中编写动态SQL:

<select id="getSalesTop10" resultType="com.sky.dto.GoodsSalesDTO">
    select od.name name,sum(od.number) number from order_detail od ,orders o
    where od.order_id = o.id
    and o.status = 5
    <if test="begin != null">
        and order_time &gt;= #{begin}
    </if>
    <if test="end != null">
        and order_time &lt;= #{end}
    </if>
    group by name
    order by number desc
    limit 0, 10
</select>

这个select需要注意,返回的是List类型,并且查询语句也容易写错。

查看近30日销量排名Top10统计

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库

进入开发者模式,查看返回数据

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts,SpringBoot+SSM项目实战 苍穹外卖,前端,spring boot,后端,java,spring,数据库文章来源地址https://www.toymoban.com/news/detail-797734.html

到了这里,关于SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(二)开发环境搭建

    黑马程序员最新Java项目实战《苍穹外卖》,最适合新手的SpringBoot+SSM的企业级Java项目实战。 前端工程基于 nginx 运行,因为《苍穹外卖》项目侧重于后端开发,所以黑马程序员给我们直接提供了前端的代码部分,我们只需要在本地搭建好前端环境,并运行起来,专注于后端开

    2024年02月10日
    浏览(33)
  • Java项目-苍穹外卖-Day11-Apache ECharts数据统计

    主要是以下四项的统计,以不同形式的图形进行展示 自己去网站上看一哈,我不太懂前端 com.sky.controller.admin.ReportController com.sky.service.impl.ReportServiceImpl.java orderMapper orderMapper.xml Reportcontroller ReportServiceImpl orderMapper.xml reportController ReportServiceImpl orderMapper.xml

    2024年02月09日
    浏览(35)
  • 项目实战————苍穹外卖(DAY11)

    Apache ECharts 营业额统计 用户统计 订单统计 销量排名Top10 功能实现: 数据统计 数据统计效果图: 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:Apache ECharts 常见效果展示: 1). 柱形图

    2024年01月20日
    浏览(38)
  • 《苍穹外卖》知识梳理P11-Apache POI导出报表

    可以通过Apache POI处理excel文件,核心操作是读和写 应用场景 银行网银交易明细 各种业务系统导出Excel报表 批量导入业务数据 使用步骤 1.导入maven坐标 2.测试代码(写操作) 3.运行结果(写操作) 4.测试代码(读操作) 5.运行结果(读操作) 由于实际业务中可能会有复杂的报

    2024年02月19日
    浏览(31)
  • 苍穹外卖day11——数据统计图形报表(Apache ECharts)

    常见图表     快速上手 - Handbook - Apache ECharts   VO设计 对应的映射文件     对应的映射文件     对应的映射文件         对应的映射文件    

    2024年02月14日
    浏览(31)
  • 苍穹外卖 Spring Task 来单提醒 催单Apache ECharts day10~11

    Spring Task 订单状态定时处理 WebSocket 来单提醒 客户催单 功能实现: 订单状态定时处理 、 来单提醒 和 客户催单 订单状态定时处理: 来单提醒: 客户催单: 1.1 介绍 Spring Task 是Spring框架提供的 任务调度工具 ,可以按照约定的时间自动执行某个代码逻辑。 定位: 定时任务框

    2024年02月14日
    浏览(28)
  • 【学习笔记】java项目—苍穹外卖day11

    Apache ECharts 营业额统计 用户统计 订单统计 销量排名Top10 功能实现: 数据统计 数据统计效果图: 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:https://echarts.apache.org/zh/index.html 常见效果

    2024年04月09日
    浏览(35)
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(四)

    1.1 需求分析与设计 1.1.1 产品原型 在员工管理列表页面点击 “编辑” 按钮,跳转到编辑页面,在编辑页面回显员工信息并进行修改,最后点击 “保存” 按钮完成编辑操作。 修改页面原型 : 注:点击修改时,数据应该正常回显到修改页面。 1.1.2 接口设计 根据上述原型图分

    2024年02月05日
    浏览(36)
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖集成Redis(九)

    1.1 Redis的Java客户端 Redis 的 Java 客户端很多,常用的几种: Jedis Lettuce Spring Data Redis Spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis,在Spring Boot项目中还提供了对应的Starter,即 spring-boot-starter-data-redis。 1.2 Spring Data Redis使用方式 1.2.1 介绍 Spring Data Redis 是 Spring 的一部分

    2024年02月05日
    浏览(40)
  • 【java苍穹外卖项目实战三】nginx反向代理和负载均衡

    我们思考一个问题: 前端发送的请求,是如何请求到后端服务的? 前端请求地址:http://localhost/api/employee/login 后端接口地址:http://localhost:8080/admin/employee/login 很明显,两个地址不一致,那是如何请求到后端服务的呢? 1、nginx反向代理 nginx 反向代理 ,就是将前端发送的动态

    2024年02月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包