大家好,小弟有一个关于订单系统中订单的疑惑,能否给我点指导,谢谢
有一个租车订单管理系统,核心是订单,一个订单允午有多部车辆,订单也会有跟单员和业务员,为了及时能联系客户,也会需要乘客信息(有多个乘客)
订单中包括以下元素:
1、租车客户(Customer)
2、订单的跟单员(User)
3、订单的业务员(User)
4、客户需要租的车辆(Car)
5、乘客信息(passenger)
6、行程,及备注信息
我写了如下的类:
public class Order {
/* 订单标识, */
private String orderEntityID;
// 订单编号
private String orderNumbers;
// 订单的客户
private Customer customer;
// 跟单员
private User Merchandiser;
// 业务员
private User Salesman;
// 订单所使用车辆
private Set<Car> cars;
// 乘客(姓名+电话)
private List<Passenger> passengers;
// 订单行程
private String orderTravel;
// 订单行程
private String orderRemark;
/**
* 带唯一标识的构造器
* @param orderEntityID 实体标识
* */
public Order(String orderEntityID) {
this.orderEntityID = orderEntityID;
}
///------这是getter和setter
}
我的疑惑是:如果以这种方式写出这个订单(Order)类,以后会出现很大的问题
1、如果车辆的信息有变动,修改车辆时,已经归档了的订单,因为有Set<Car> cars;这个关联,那么订单相关车辆的信息也会跟着改变。(按正常的实际需求是,改动车辆,归档的订单不会受到影响,除非用户去重新更新了这个归档的订单)
2、同1一样,跟单员、业务员的修改也会影响到归档了的订单
3、当用户删除了跟单员(这个员工不在公司做了),以前归档了的订单也受些影响
为了解决上面的问题,我又修改了一下:
public class Order {
/* 订单标识, */
private String orderEntityID;
// 订单编号
private String orderNumbers;
// 订单的客户
private Customer customer;
// 跟单员
private User Merchandiser;
// 业务员
private User Salesman;
// 订单所使用车辆
private Set<Car> cars;
// 乘客(姓名+电话)
private List<Passenger> passengers;
// 订单行程
private String orderTravel;
// 订单行程
private String orderRemark;
//------增加部分-------------------------------------
private String customerName;//把客户名称从客户(Customer)拿出来
private String MerchandiserName;//跟单员(User )名称,联系电话等信息,也从User 复制到Order中来,
为了更清淅,我就不列出来了所有包含的元素了
//这里是把订单包含的元素像上面两行一样复制出来
//这样的话,就算是客户改动了,也不会关联到这个归档了的订单,因为这个订单保留了当时下单那时的信息
/**
* 带唯一标识的构造器
* @param orderEntityID 实体标识
* */
public Order(String orderEntityID) {
this.orderEntityID = orderEntityID;
}
///------这是getter和setter
}
这样虽然可以,但是我想了想也会出现很多问题,同时我也觉得这样做,或者这种方式可行吗?
具体的问题如下:
1、如果用户按客户名称搜索时,由于有些客户有改动过名称之类的,归档的订单没办法出来
2、如果按跟单员(由于跟单元,有名称后来被修改了,归档的订单又没更新,也找不到呢)
像这类问题应该如何解决呢
[该贴被freesea于2010-09-16 19:27修改过]