diff --git a/class b/class new file mode 100644 index 0000000..872d047 --- /dev/null +++ b/class @@ -0,0 +1,55 @@ +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class AmountAnalysisStrategy implements OrderAnalysisStrategy { + @Override + public Map analyze(List orders) { + Map result = new HashMap<>(); + + if (orders == null || orders.isEmpty()) { + result.put("message", "没有订单数据可供分析"); + return result; + } + + double totalAmount = 0; + double maxAmount = Double.MIN_VALUE; + double minAmount = Double.MAX_VALUE; + double totalDiscount = 0; + + for (Order order : orders) { + double finalAmount = order.getFinalAmount(); + totalAmount += finalAmount; + totalDiscount += order.getDiscountAmount(); + + if (finalAmount > maxAmount) { + maxAmount = finalAmount; + } + if (finalAmount < minAmount) { + minAmount = finalAmount; + } + } + + double averageAmount = totalAmount / orders.size(); + + result.put("totalOrders", orders.size()); + result.put("totalAmount", totalAmount); + result.put("averageAmount", averageAmount); + result.put("maxAmount", maxAmount); + result.put("minAmount", minAmount); + result.put("totalDiscount", totalDiscount); + result.put("discountPercentage", (totalDiscount / (totalAmount + totalDiscount)) * 100); + + return result; + } + + @Override + public String getAnalysisName() { + return "金额统计分析"; + } + + @Override + public String getDescription() { + return "分析订单的金额分布情况,包括总金额、平均金额、最大/最小金额以及折扣统计"; + } +} \ No newline at end of file