You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
/**
|
|
* 总销售额分析策略,计算订单的总销售额和平均订单金额
|
|
*/
|
|
package com.orderprocessing;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class TotalSalesAnalysisStrategy implements OrderAnalysisStrategy {
|
|
@Override
|
|
public Map<String, Object> analyze(List<Order> orders) {
|
|
Map<String, Object> results = new HashMap<>();
|
|
|
|
if (orders == null || orders.isEmpty()) {
|
|
results.put("totalSales", 0.0);
|
|
results.put("averageOrderAmount", 0.0);
|
|
results.put("orderCount", 0);
|
|
return results;
|
|
}
|
|
|
|
double totalSales = 0.0;
|
|
int processedOrderCount = 0;
|
|
|
|
for (Order order : orders) {
|
|
if (order.getStatus() == Order.OrderStatus.PROCESSED ||
|
|
order.getStatus() == Order.OrderStatus.SHIPPED ||
|
|
order.getStatus() == Order.OrderStatus.DELIVERED) {
|
|
totalSales += order.getTotalAmount();
|
|
processedOrderCount++;
|
|
}
|
|
}
|
|
|
|
double averageOrderAmount = processedOrderCount > 0 ? totalSales / processedOrderCount : 0.0;
|
|
|
|
results.put("totalSales", totalSales);
|
|
results.put("averageOrderAmount", averageOrderAmount);
|
|
results.put("orderCount", processedOrderCount);
|
|
|
|
return results;
|
|
}
|
|
|
|
@Override
|
|
public String getStrategyName() {
|
|
return "总销售额分析";
|
|
}
|
|
} |