成员信息
姓名 |
学号 |
何沛阳 |
201250192 |
戴学正 |
201250191 |
徐晨 |
201250213 |
刘陈柯 |
201250211 |
分工
何沛阳:库存模块的设计
戴学正:销售模块的设计
徐晨:物理包图
刘陈柯:逻辑包图
ERP系统的软件体系结构描述文档
1. 引言
1.1 编制目的
本报告详细完成对ERP系统的概要设计,达到指导详细设计和开发的目的,同时实现和测试人员及用户的沟通
本报告面向开发人员、测试人员及最终用户而编写,是了解系统的导航。
1.2 词汇表
词汇名称 |
词汇含义 |
备注 |
ERP |
企业资源计划 |
|
Category |
库存 |
|
Product |
商品 |
|
Paper |
单据 |
1.3 参考资料
ERP系统用例文档、ERP系统软件需求规格说明文档、
2. 产品概述
ERP系统是南鲸软件科技公司为某灯具企业开发的业务系统,开发的目标是帮助该企业实现库存管理、销售管
理、财务管理、人事管理和企业经营管理。
3. 逻辑视角(逻辑包图)
4. 物理视角(物理包图)
5. 开发视角(部署图)
6. 模块设计
6.1 库存模块
6.1.1 业务逻辑层的接口规范
提供的服务 (供接口)
Stock.manageCategory |
语法 |
public ResultMessage manageCategoty(String type, String args) |
|
前置条件 |
用户没有在一个已经有商品节点的分类节点下再添加分类 |
|
后置条件 |
返回操作成功的信息 |
Stock.manageProduct |
语法 |
public ResultMessage manageProduct(String type, String args) |
|
前置条件 |
用户操作分类树的叶子节点 |
|
后置条件 |
返回操作成功的信息 |
Stock.managePaper |
语法 |
public ResultMessage managePaper(String type, String args) |
|
前置条件 |
审批单据的用户身份得到认证 |
|
后置条件 |
返回操作成功的信息 |
需要的服务(需接口)
服务名 |
服务 |
CategotyDataService.find(int id) |
根据ID查找单一的分类持久化对象 |
CategoryDataService.insert(CategoryPO po) |
插入单一分类持久化对象 |
CategoryDataService.delete(CategoryPO po) |
删除单一分类持久化对象 |
CategoryDataService.update(CategoryPO po) |
修改单一分类持久化对象 |
DatabaseFactory.getStockDatabase |
得到库存模块数据库的服务的引用 |
ProductDataService.find(int id) |
根据ID查找单一的商品持久化对象 |
ProductDataService.insert(ProductPO po) |
插入单一商品持久化对象 |
ProductDataService.delete(ProductPO po) |
删除单一商品持久化对象 |
ProductDataService.update(ProductPO po) |
修改单一商品持久化对象 |
PaperDataService.find(int id) |
根据ID查找单一的单据持久化对象 |
PaperDataService.insert(PaperPO po) |
插入单一单据持久化对象 |
PaperDataService.deletet(PaperPO po) |
插入单一单据持久化对象 |
PaperDataService.update(PaperPO po) |
插入单一单据持久化对象 |
6.1.2 数据层的接口规范
提供的服务(供接口)
注:CategoryDataService,ProductDataService,PaperDataService具有相同的接口规范,只是持久化对象的种类不同
CategotyDataService.find |
语法 |
public CategoryPO find(int id); |
|
前置条件 |
无 |
|
后置条件 |
返回按ID查找的PO |
CategoryDataService.insert |
语法 |
public CategoryPO insert(CategoryPO po); |
|
前置条件 |
同样的PO在数据库中不存在 |
|
后置条件 |
在数据库中添加一个po记录 |
CategoryDataService.delete |
语法 |
public void delete(CategoryPO po); |
|
前置条件 |
要删除的po在数据库中存在 |
|
后置条件 |
在数据库中删除一个po记录 |
CategoryDataService.update |
语法 |
public void update(CategoryPO po); |
|
前置条件 |
要更新的po在数据库中存在 |
|
后置条件 |
在数据库中更改一个po记录 |
CategoryDataService.init |
语法 |
public void init(); |
|
前置条件 |
无 |
|
后置条件 |
初始化库存模块的持久化数据库 |
CategoryDataService.finish |
语法 |
public void finish(); |
|
前置条件 |
无 |
|
后置条件 |
结束对库存模块持久化数据库的使用 |
6.1.3 数据库设计
Category表
列名 |
类型 |
备注 |
category_id |
Smallint |
分类的id,候选码 |
category_name |
Varchar(20) |
分类名,主键 |
category_parent |
Varchar(20) |
由于分类是一个树的形式,所以每个节点要持有其父子点的name |
Product表
列名 |
类型 |
备注 |
product_id |
Smallint |
主键 |
product_name |
Varchar(20) |
商品名称 |
product_type |
Varchar(20) |
商品型号 |
product_num |
Smallint |
商品数量 |
product_in_price |
Smallint |
商品进价 |
product_sale_price |
Smallint |
商品零售价 |
product_latest_in_price |
Smallint |
商品最近进价,初始化一个商品PO时此字段应与进价字段相同 |
product_latest_sale_price |
Smallint |
商品最近零售价,初始化一个商品PO时此字段应与零售价字段相同 |
product_date |
Date |
生产日期 |
product_category |
Varchar(20) |
外键,与Category表的category_name列关联 |
Paper表
列名 |
类型 |
备注 |
paper_id |
Smallint |
单据id,主键 |
paper_category |
Varchar(10) |
单据类型 |
paper_info |
JSON |
以JSON形式存储不同数据单的内容 |
6.2 销售模块
6.2.1 业务逻辑层的接口规范
Sale.manageClient |
语法 |
public ResultMessage manageClient(String type, String args) |
|
前置条件 |
经验证用户进行客户管理 |
|
后置条件 |
返回操作成功的信息 |
Sale.makeList |
语法 |
public list makeList(String type, String args) |
|
前置条件 |
经验证人员制定出货/退货单 |
|
后置条件 |
返回出货/退货单 |
Sale.searchClient |
语法 |
public int searchClient(Date start Date end, String args) |
|
前置条件 |
经验证人员制定出货/退货单 |
|
后置条件 |
返回客户id |
Sale.examine |
语法 |
public ResultMessage examine(Date start Date end, String args) |
|
前置条件 |
经过验证的销售经理或总经理处理审批 |
|
后置条件 |
返回处理信息 |
需要的服务(需接口)
服务名 |
服务 |
SaleDataService.find |
根据ID查找单一的分类持久化对象 |
SaleDataService.insert |
插入单一分类持久化对象 |
SaleDataService.delete |
删除单一分类持久化对象 |
SaleDataService.update |
修改单一分类持久化对象 |
SaleDataService.returnData |
返回出货/退货单据所需数据 |
SaleDataService.returnClient |
返回客户信息 |
SaleDataService.examination |
返回审批结果 |
6.2.2 数据层的接口规范
SaleDataService.findClient |
语法 |
public SalePO findClient(int id); |
|
前置条件 |
无 |
|
后置条件 |
返回按ID查找的PO |
SaleDataService.findClient |
语法 |
public SalePO insertClient(SalePO po); |
|
前置条件 |
同样的PO在数据库中不存在 |
|
后置条件 |
在数据库中添加一个po记录 |
SaleDataService.deleteClient |
语法 |
public void deleteClient(SalePO po); |
|
前置条件 |
要删除的po在数据库中存在 |
|
后置条件 |
在数据库中删除一个po记录 |
SaleDataService.update |
语法 |
public void updateClient(SalePO po); |
|
前置条件 |
要更新的po在数据库中存在 |
|
后置条件 |
在数据库中更改一个po记录 |
SaleDataService.init |
语法 |
public void initSale(); |
|
前置条件 |
无 |
|
后置条件 |
初始化销售模块的持久化数据库 |
SaleDataService.finish |
语法 |
public void finish(); |
|
前置条件 |
无 |
|
后置条件 |
结束对销售模块持久化数据库的使用 |
SaleDataService.returnData |
语法 |
public SalePO returnData(); |
|
前置条件 |
系统已自动识别当前用户 |
|
后置条件 |
返回出货/退货单据所需数据 |
SaleDataService.returnClient |
语法 |
public SalePO returnData(SalePo condition); |
|
前置条件 |
时间范围合法 |
|
后置条件 |
返回成交量最大客户id |
SaleDataService.examination |
语法 |
public SalePO examination(SalePo list); |
|
前置条件 |
审批级别经过验证 |
|
后置条件 |
返回审批结果 |
6.2.3 数据库设计
客户
列名 |
类型 |
备注 |
client_id |
Smallint |
客户的id,主键 |
client_name |
Varchar(20) |
客户名,候选码 |
client_level |
smallint |
级别 |
client_number |
Varchar(20) |
电话 |
client_address |
Varchar(20) |
地址 |
client_email |
Varchar(20) |
电子邮箱 |
client_category |
Varchar(20) |
分类 |
销售单
列名 |
类型 |
备注 |
list_no |
smallint |
单据编号,主键 |
list_client |
Varchar(20) |
客户 |
list_operator |
Varchar(20) |
操作员 |
list_salesman |
Varchar(20) |
业务员 |
list_warehouse |
Varchar(20) |
仓库 |
list_sum_pre |
smallint |
折前总额 |
list_discount |
smallint |
这款 |
list_sum_after |
smallint |
折后总额 |
审批
列名 |
类型 |
备注 |
examine_list |
list |
待审批单据 |
examine_result |
boolean |
审批结果 |