成员信息

姓名 学号
何沛阳 201250192
戴学正 201250191
徐晨 201250213
刘陈柯 201250211

分工

何沛阳:库存模块的设计

戴学正:销售模块的设计

徐晨:物理包图

刘陈柯:逻辑包图

ERP系统的软件体系结构描述文档

1. 引言

1.1 编制目的

本报告详细完成对ERP系统的概要设计,达到指导详细设计和开发的目的,同时实现和测试人员及用户的沟通
本报告面向开发人员、测试人员及最终用户而编写,是了解系统的导航。

1.2 词汇表

词汇名称 词汇含义 备注
ERP 企业资源计划
Category 库存
Product 商品
Paper 单据

1.3 参考资料

ERP系统用例文档、ERP系统软件需求规格说明文档、

2. 产品概述

ERP系统是南鲸软件科技公司为某灯具企业开发的业务系统,开发的目标是帮助该企业实现库存管理、销售管
理、财务管理、人事管理和企业经营管理。

3. 逻辑视角(逻辑包图)

image.png

4. 物理视角(物理包图)

开发包图.png

5. 开发视角(部署图)

image.png

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 审批结果