java实现物流系统开发

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// 物流系统主类
public class LogisticsSystem {
private List
private List
private List
private Map
public LogisticsSystem() {
this.orders = new ArrayList<>();
this.warehouses = new ArrayList<>();
this.deliveries = new ArrayList<>();
this.customers = new HashMap<>();
}
// 添加客户
public void addCustomer(Customer customer) {
customers.put(customer.getId(), customer);
}
// 添加仓库
public void addWarehouse(Warehouse warehouse) {
warehouses.add(warehouse);
}
// 创建订单
public Order createOrder(String customerId, List
Customer customer = customers.get(customerId);
if (customer == null) {
throw new IllegalArgumentException("客户不存在: " + customerId);
}
Order order = new Order(generateOrderId(), customer, products, destination);
orders.add(order);
return order;
}
// 分配仓库
public Warehouse assignWarehouse(Order order) {
Warehouse bestWarehouse = null;
int minDistance = Integer.MAX_VALUE;
for (Warehouse warehouse : warehouses) {
int distance = calculateDistance(warehouse.getLocation(), order.getDestination());
if (distance < minDistance && warehouse.hasEnoughStock(order.getProducts())) {
minDistance = distance;
bestWarehouse = warehouse;
}
}
if (bestWarehouse != null) {
bestWarehouse.processOrder(order);
}
return bestWarehouse;
}
// 创建配送
public Delivery createDelivery(Order order, Warehouse warehouse) {
Delivery delivery = new Delivery(generateDeliveryId(), order, warehouse);
deliveries.add(delivery);
return delivery;
}
// 更新配送状态
public void updateDeliveryStatus(String deliveryId, DeliveryStatus status) {
for (Delivery delivery : deliveries) {
if (delivery.getId().equals(deliveryId)) {
delivery.setStatus(status);
if (status == DeliveryStatus.DELIVERED) {
delivery.getOrder().setOrderStatus(OrderStatus.COMPLETED);
}
break;
}
}
}
// 生成订单ID
private String generateOrderId() {
return "ORD" + System.currentTimeMillis();
}
// 生成配送ID
private String generateDeliveryId() {
return "DEL" + System.currentTimeMillis();
}
// 计算两点之间的距离(简化实现)
private int calculateDistance(String location1, String location2) {
// 实际应用中可能会使用地图API计算实际距离
return (int) (Math.random() * 100);
}
// 打印系统状态
public void printSystemStatus() {
System.out.println("=== 物流系统状态 ===");
System.out.println("订单总数: " + orders.size());
System.out.println("仓库总数: " + warehouses.size());
System.out.println("配送中: " + getDeliveriesByStatus(DeliveryStatus.IN_TRANSIT).size());
System.out.println("已完成: " + getDeliveriesByStatus(DeliveryStatus.DELIVERED).size());
System.out.println("===================");
}
// 根据状态获取配送列表
private List
List
for (Delivery delivery : deliveries) {
if (delivery.getStatus() == status) {
result.add(delivery);
}
}
return result;
}
public static void main(String[] args) {
// 创建物流系统实例
LogisticsSystem system = new LogisticsSystem();
// 添加客户
Customer customer1 = new Customer("C001", "张三", "北京市朝阳区");
system.addCustomer(customer1);
// 添加仓库
Warehouse warehouse1 = new Warehouse("WH001", "北京仓库", "北京市海淀区");
Warehouse warehouse2 = new Warehouse("WH002", "上海仓库", "上海市浦东新区");
system.addWarehouse(warehouse1);
system.addWarehouse(warehouse2);
// 添加产品到仓库
Product product1 = new Product("P001", "手机", 5000);
Product product2 = new Product("P002", "电脑", 8000);
warehouse1.addStock(product1, 100);
warehouse1.addStock(product2, 50);
warehouse2.addStock(product1, 200);
warehouse2.addStock(product2, 100);
// 创建订单
List
orderProducts.add(product1);
orderProducts.add(product2);
Order order = system.createOrder("C001", orderProducts, "北京市朝阳区");
// 分配仓库
Warehouse assignedWarehouse = system.assignWarehouse(order);
System.out.println("订单 " + order.getId() + " 已分配到仓库: " + assignedWarehouse.getName());
// 创建配送
Delivery delivery = system.createDelivery(order, assignedWarehouse);
System.out.println("配送已创建,配送ID: " + delivery.getId());
// 更新配送状态
system.updateDeliveryStatus(delivery.getId(), DeliveryStatus.IN_TRANSIT);
System.out.println("配送状态已更新为: 运输中");
// 模拟配送完成
system.updateDeliveryStatus(delivery.getId(), DeliveryStatus.DELIVERED);
System.out.println("配送状态已更新为: 已送达");
// 打印系统状态
system.printSystemStatus();
}
}