天穹外卖 作業日9

目次

  • 前言
  • 1. 作業台
  • 2. Apache POI
  • 3. 営業データ Excel レポートのエクスポート
  • 4. HttpServletResponse の本質
  • 結論

前言

本日は、天穹外卖プロジェクトの作業日12に該当し、プロジェクトの終盤を迎えています。

本日の作業内容:

  • 作業台のコード開発
  • Apache POI(Excelファイルへのデータ出力)
  • 営業データ Excel レポートのエクスポート(Apache POI を活用)

1. 作業台

1) ニーズ分析と設計

作業台は、システム運営のためのデータダッシュボードです。また、各種操作のショートカット入口を提供し、店舗の業務効率を向上させます。

作業台で表示されるデータ:

  • 当日のデータ
  • 注文管理
  • メニューの概要
  • セットメニューの概要
  • 注文情報

注文管理では、当日のデータを表示します。下部にある青い「待受け」ボタンは、全ての注文を示します。

用語説明:

  • 売上高:完了した注文の合計金額
  • 有効注文数:完了した注文の件数
  • 注文完了率:有効注文数 / 総注文数 × 100%
  • 平均客単価:売上高 / 有効注文数
  • 新規ユーザー数:当日に新規登録したユーザーの件数

2) インターフェース設計

  • 当日データインターフェース
  • 注文管理インターフェース
  • メニュー概要インターフェース
  • セットメニュー概要インターフェース
  • 注文検索(完了済み)
  • 各種ステータスの注文数集計(完了済み)

3) コード開発

今回はシンプルなクエリーメソッドの実装です。

DashboardController.java


/**
 * 作業台
 */
@RestfulController
@RequestMapping("/admin/dashboard")
@Slf4j
public class DashboardController {

    @Autowired
    private DashboardService dashboardService;

    /**
     * 作業台 当日データの取得
     * @return
     */
    @GetMapping("/salesData")
    public Result<SalesReportVO> getSalesData() {
        //当日の開始時刻
        LocalDateTime start = LocalDateTime.now().with(LocalTime.MIN);
        //当日の終了時刻
        LocalDateTime end = LocalDateTime.now().with(LocalTime.MAX);

        SalesReportVO report = dashboardService.getSalesData(start, end);
        return Result.success(report);
    }

    /**
     * 注文管理データの取得
     * @return
     */
    @GetMapping("/orderOverview")
    public Result<OrderSummaryVO> getOrderOverview() {
        return Result.success(dashboardService.getOrderSummary());
    }

    /**
     * メニュー概要データの取得
     * @return
     */
    @GetMapping("/menuOverview")
    public Result<MenuSummaryVO> getMenuOverview() {
        return Result.success(dashboardService getMenuSummary());
    }

    /**
     * セットメニュー概要データの取得
     * @return
     */
    @GetMapping("/setMenuOverview")
    public Result<SetMenuSummaryVO> getSetMenuOverview() {
        return Result.success(dashboardService.getSetMenuSummary());
    }
}

DashboardService.java


import com.sky.vo.SalesReportVO;
import com.sky.vo.OrderSummaryVO;
import com.sky.vo.MenuSummaryVO;
import com.sky.vo.SetMenuSummaryVO;
import java.time.LocalDateTime;

public interface DashboardService {

    /**
     * 時間範囲に基づく営業データの取得
     * @param startTime
     * @param endTime
     * @return
     */
    SalesReportVO getSalesData(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 注文管理データの取得
     * @return
     */
    OrderSummaryVO getOrderSummary();

    /**
     * メニュー概要データの取得
     * @return
     */
    MenuSummaryVO getMenuSummary();

    /**
     * セットメニュー概要データの取得
     * @return
     */
    SetMenuSummaryVO getSetMenuSummary();

}

6月14日 22:00 投稿