/** * 高级功能测试类,测试审批工作流和报表生成功能 */ package com.orderprocessing; import java.util.ArrayList; import java.util.List; import java.util.Map; public class AdvancedFeaturesTest { public static void main(String[] args) { // 创建日志记录器 Logger logger = new ConsoleLogger(); System.out.println("=== 测试1: 订单审批工作流 ==="); testApprovalWorkflow(logger); System.out.println(); System.out.println("=== 测试2: 订单数据分析和报表生成 ==="); testOrderReportGeneration(logger); } /** * 测试订单审批工作流 */ private static void testApprovalWorkflow(Logger logger) { // 创建审批工作流 ApprovalWorkflow workflow = new ApprovalWorkflow(logger); // 添加审批规则 workflow.addApprovalRule(new AmountBasedApprovalRule(5000, 1)); // 超过5000元需要1级审批 workflow.addApprovalRule(new AmountBasedApprovalRule(10000, 2)); // 超过10000元需要2级审批 // 创建测试订单 List items1 = new ArrayList<>(); items1.add(new OrderItem("P001", "笔记本电脑", 1, 5999.0)); Order order1 = new Order("APPROVAL-001", "张三", items1); List items2 = new ArrayList<>(); items2.add(new OrderItem("P003", "高端服务器", 1, 15000.0)); Order order2 = new Order("APPROVAL-002", "李四", items2); List items3 = new ArrayList<>(); items3.add(new OrderItem("P002", "无线鼠标", 1, 99.0)); Order order3 = new Order("APPROVAL-003", "王五", items3); // 测试审批流程 System.out.println("\n测试订单1审批(金额5999元,1级审批者):"); workflow.processApproval(order1, 1); System.out.println("\n测试订单2审批(金额15000元,1级审批者):"); workflow.processApproval(order2, 1); System.out.println("\n测试订单2审批(金额15000元,2级审批者):"); workflow.processApproval(order2, 2); System.out.println("\n测试订单3审批(金额99元,任何级别):"); workflow.processApproval(order3, 0); } /** * 测试订单数据分析和报表生成 */ private static void testOrderReportGeneration(Logger logger) { // 创建订单报表生成器 OrderReportGenerator reportGenerator = new OrderReportGenerator(logger); // 添加分析策略 reportGenerator.addAnalysisStrategy(new TotalSalesAnalysisStrategy()); reportGenerator.addAnalysisStrategy(new CustomerOrderAnalysisStrategy()); // 创建测试订单数据 List orders = createTestOrders(); // 使用单个策略生成报表 System.out.println("\n使用总销售额分析策略:"); Map salesReport = reportGenerator.generateReport(orders, "总销售额分析"); reportGenerator.printReportResults(salesReport); System.out.println("\n使用客户订单分析策略:"); Map customerReport = reportGenerator.generateReport(orders, "客户订单分析"); reportGenerator.printReportResults(customerReport); // 生成综合报表 System.out.println("\n生成综合报表:"); Map> comprehensiveReport = reportGenerator.generateComprehensiveReport(orders); for (Map.Entry> entry : comprehensiveReport.entrySet()) { System.out.println("\n策略: " + entry.getKey()); for (Map.Entry result : entry.getValue().entrySet()) { System.out.println(result.getKey() + ": " + result.getValue()); } } } /** * 创建测试订单数据 */ private static List createTestOrders() { List orders = new ArrayList<>(); // 订单1:张三 - 已处理 List items1 = new ArrayList<>(); items1.add(new OrderItem("P001", "笔记本电脑", 1, 5999.0)); Order order1 = new Order("ORD-001", "张三", items1); order1.setStatus(Order.OrderStatus.PROCESSED); orders.add(order1); // 订单2:张三 - 已发货 List items2 = new ArrayList<>(); items2.add(new OrderItem("P002", "无线鼠标", 2, 99.0)); Order order2 = new Order("ORD-002", "张三", items2); order2.setStatus(Order.OrderStatus.SHIPPED); orders.add(order2); // 订单3:李四 - 已交付 List items3 = new ArrayList<>(); items3.add(new OrderItem("P003", "显示器", 1, 1599.0)); Order order3 = new Order("ORD-003", "李四", items3); order3.setStatus(Order.OrderStatus.DELIVERED); orders.add(order3); // 订单4:王五 - 已取消 List items4 = new ArrayList<>(); items4.add(new OrderItem("P004", "键盘", 1, 199.0)); Order order4 = new Order("ORD-004", "王五", items4); order4.setStatus(Order.OrderStatus.CANCELLED); orders.add(order4); // 订单5:李四 - 已处理 List items5 = new ArrayList<>(); items5.add(new OrderItem("P005", "耳机", 1, 799.0)); Order order5 = new Order("ORD-005", "李四", items5); order5.setStatus(Order.OrderStatus.PROCESSED); orders.add(order5); return orders; } }