目次
- 前言
- 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 投稿