领域驱动设计 - 实战2

继续上一篇的场景

场景5:多货一车
比如客户下了两个订单,一个订单是9吨水泥,另一个订单是8吨板材,都是从仓库A装货,送到仓库B卸货,假设我们用一辆20吨车一次搞定,对象图可以简单表示为:

订单1(9吨水泥,A->B),订单2(10吨板材,A->B)
——> 车次(20吨)

场景6:多货多车(分段)
比如客户下了两个订单,一个订单是9吨水泥,另一个订单是8吨板材,都是从仓库A装货,送到仓库B卸货,假设我们用一辆20吨车把或提回来暂落到C仓库,然后再用一辆30吨的车和其它的货一起运到D仓,最后再用一辆20吨的车送到B仓。对象图如下:

订单1(9吨水泥,A->B),订单2(10吨板材,A->B)
——> 车次1(20吨,A->C)
——> 车次2(30吨,C->D)
——> 车次3(20吨,D->B)

场景7:多货多车(分货)
比如客户下了两个订单,一个订单是9吨水泥,仓库A到仓库B,另一个订单是8吨板材,仓库A到仓库C,假设我们用一辆20吨车把或提回来暂落到D仓库,然后再用一辆10吨的车运9吨水泥送到仓库B,再用一辆10吨车运8吨板材到仓库C。对象图如下:

订单1(9吨水泥,A->B)
——>车次1(20吨,A->D)
——>车次2(10吨,9吨水泥,D->B)
订单2(10吨板材,A->C)
——>车次1(20吨,A->D)
——>车次3(10吨,8吨板材,D->C)

其实多个订单和1个订单本质上没有什么区别,只是货多货少的区别而已。

车次从本质上来说也是一个订单,它主要的信息就是要到哪里装哪些货,要把哪些货卸到哪里,如果不显示指明,那么它的货就是它关联的订单上的所有货物,如果需要显示指明,不管是哪个车次,它的货物都是从原始订单上选择。

对于一个车次经过的仓库,如果仓库需要预约,可以允许用户创建一个预约,如果仓库不需要预约,则也可以没有预约,不管有没有预约,从仓库的角度来看,可以知道今天有哪些车要来提货和送货。

进出场时间、装卸货记录、门检记录都应该记在一个车次的点上,假设车次的英文名叫TruckSchedule,车次的点叫TsPoint,就是这些信息都应该记在TsPoint上。车次在哪里装卸了哪些货物就记在TsCargo上,TsCargo必须和订单上的Cargo有关联,如果不分货,则数量和订单Cargo保持一致,否则根据实际情况记录实际的货物件数、重量或体积。

你可能感兴趣的:(领域驱动设计 - 实战2)