写项目感悟:
第一步捋清楚关系,本项目层次结构为
1. common_parent
2. bos_domain 3. crm_domain
4. bos_management 5. bos_fore 6. crm_management
7. bos_sms
第二步创建实体类,bos物流共享一个bos_domain,然后crm_domain主要负责客户的信息(打包方式jar)
2.1 crm_domian 远程调用,所以实体类上面需要@XmlRootElement
Customer
@Entity
@Table(name = "T_CUSTOMER")
@XmlRootElement(name = "customer")
public class Customer {
@Id
@GeneratedValue()
@Column(name = "C_ID")
private Integer id;
2.2 bos_domian的包分了不同的包
base包
Area SubArea FixedArea Courier Standard TakeTime Vehicle Archive SubArchive
区域(一) 分区(多)
定区(一) 分区(多)
快递员(多) 定区(多)
Area @OneToMany(mappedBy = "area")
private Set<SubArea> subareas = new HashSet<SubArea>();
@JSON(serialize = false)
public Set<SubArea> getSubareas() {
return subareas;
}
Courier @ManyToMany(mappedBy = "couriers")
private Set<FixedArea> fixedAreas = new HashSet<>();
@JSON(serialize = false)
public Set<FixedArea> getFixedAreas() {
return fixedAreas;
}
@Transient
// 防止被生成数据表中的列
public String getInfo() {
return name + "(" + company + ")";
}
page包
Hibernate自带的Page由于不能提供XmlRootElement注解,所以需要提供自定义Pagebean
system包
系统包里面主要是后台管理的相关类,用户、角色、权限、菜单的实体类
User(多) Role(多)
使需要缓存对象,实现 Serializable 接口
public class User implements Serializable
Role(多) Permission(多)
Role(多) Menu(多)
take_delivery包
take_delivery包里面是货物相关的类,订单,工单,运单。促销活动
这个包里面的类是功能的重点,业务重点
Promotion 促销类
促销标题图片 titleImg 结束时间 endDate 状态status 活动描述 description
Order 订单类
id orderNum telephone customer_id sendAddress sendArea wayBill workBill courier
自动分单就是将订单关联到快递员
跨系统去crm系统找。
1. 根据寄件地址sendAddress找到fixedArea 根据fixedArea找到courier
2. 根据寄件区域sendArea找到subArea,根据sendAddress中包含subArea的关键字,找到fixedArea,找到courier.
这里我的想法是可以对subArea创建全文索引表
WorkBill 工单类
WayBill 运单类
id wayBillNum order
运单由于后台系统需要对其进行查找,所以需要创建索引库
@Entity
@Table(name = "T_WAY_BILL")
@Document(indexName = "bos", type = "waybill")
public class WayBill implements Serializable {
@Id
@GeneratedValue
@Column(name = "C_ID")
@org.springframework.data.annotation.Id
@Field(index = FieldIndex.not_analyzed, store = true, type = FieldType.String)
private Integer id;
@Column(name = "C_WAY_BILL_NUM", unique = true)
@Field(index = FieldIndex.not_analyzed, store = true, type = FieldType.String)
private String wayBillNum; // 运单编号
@OneToOne
@JoinColumn(name = "C_ORDER_ID")
private Order order; // 订单信息
// analyzer = "ik"指索引过程中采用的分词器 searchAnalyzer = "ik"指检索过程中采用的分词器
@Column(name = "C_SEND_NAME")
@Field(index = FieldIndex.analyzed, analyzer = "ik", searchAnalyzer = "ik", store = true, type = FieldType.String)
transit包
网友评论