您的位置 首页 java

Java,设计,供应链系统的库存和采购,数据表结构及对象模型设计

前言

在这之前设计了业务主体、商品、价格的实体及关系, ,基于此还需要让商品在主体之间进行流通,需要实现的功能如下。

业务分析

概念:流量、存量、增量

1、存量:系统在某一时点地所保有的数量。

2、流量:是指在某一段时间内流入/出系统的数量。

3、增量:则是指在某一段时间内系统中保有数量的变化,增量=流入量-流出量。

4、本期期末存量=上期期末存量+本期内增量。

概念:全量表,每天的所有的最新状态的数据

1、全量表,有无变化,都要报。

2、每次上报的数据都是所有的数据(变化的 + 没有变化的)。

概念:增量表,新增数据,增量数据是上次导出之后的新数据

1、记录每次增加的量,而不是总量。

2、流量是指在一定时间内的增量。

3、流量一般设计成增量表(日报-常用、月报)。

4、流量和存量的区别:流量是增量;存量是总量。

5、增量表,只报变化量,无变化不用报。

概念:拉链表

1、记录一个事物从开始,一直到当前状态的所有变化的信息。

2、拉链表每次上报的都是历史记录的最终状态,是记录在当前时刻的历史总量。

3、当前记录存的是当前时间之前的所有历史记录的最后变化量(总量)。

4、存量是在某一时刻的总量;

5、存量一般设计成拉链表(月报-常用、日报);

6、流量和存量的区别:流量是增量;存量是总量;

7、封链时间可以是2999,3000,9999等等比较大的年份,拉链表到期数据要报0。

8、拉链表和增量表的共同点:表结构基本一样。

概念:流水表

对于表的每一个修改都会记录,用于反映实际记录的变更,区别于拉链表。

拉链表通常是对账户信息的历史变动进行处理保留的结果,流水表是每天的交易形成的历史。

流水表用于统计业务相关情况,拉链表用于统计账户及客户的情况。

业务定义参考:

业务分析:

根据需求,一个采购商品的订单,当销售方主体库存没有这个商品时,可以连续进行上游采购,也就是说,一个订单可以拆分成多个子订单,因此采用树形结构来表示。

数据库表结构设计

主体仓库(business_warehouse):

 CREATE TABLE `business_warehouse` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`org_id` BIGINT(19) NOT NULL COMMENT '200.所属机构',
`org_type` VARCHAR(50) NOT NULL DEFAULT '0' COMMENT '300.机构类型' COLLATE 'utf8_unicode_ci',
`code` VARCHAR(50) NOT NULL DEFAULT '0' COMMENT '400.仓库编号' COLLATE 'utf8_unicode_ci',
`name` VARCHAR(50) NULL DEFAULT NULL COMMENT '500.仓库名称' COLLATE 'utf8_unicode_ci',
`sorted` INT(10) NULL DEFAULT NULL COMMENT '600.排序号',
`director_id` BIGINT(19) NULL DEFAULT NULL COMMENT '700.责任人ID',
`address` VARCHAR(50) NULL DEFAULT NULL COMMENT '800.仓库地址' COLLATE 'utf8_unicode_ci',
`modified_version` BIGINT(19) NULL DEFAULT NULL COMMENT '900.修改版本号,创建时都为:1',
`sync_version` BIGINT(19) NULL DEFAULT NULL COMMENT '1000.同步版本号,创建时都为:1',
`logical_deleted` BIT(1) NULL DEFAULT NULL COMMENT '10000.逻辑删除==>0:未删除,1:已删除',
`create_uid` BIGINT(19) NULL DEFAULT NULL COMMENT '20000.创建用户ID',
`create_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '30000.创建人' COLLATE 'utf8_unicode_ci',
`create_time` DATETIME NULL DEFAULT NULL COMMENT '40000.创建时间',
`deleted_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '50000.删除人' COLLATE 'utf8_unicode_ci',
`deleted_time` DATETIME NULL DEFAULT NULL COMMENT '60000.删除时间',
PRIMARY KEY (`id`) USING BTREE
)
COMMENT='主体仓库'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;  

主体库存(business_stock):

 CREATE TABLE `business_stock` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`org_id` BIGINT(19) NULL DEFAULT NULL COMMENT '200.所属机构',
`org_type` VARCHAR(50) NULL DEFAULT NULL COMMENT '300.所属机构类型' COLLATE 'utf8_unicode_ci',
`warehouse_id` BIGINT(19) NULL DEFAULT NULL COMMENT '400.所属仓库',
`manufactor_id` BIGINT(19) NULL DEFAULT NULL COMMENT '500.所属厂家ID',
`good_id` BIGINT(19) NULL DEFAULT NULL COMMENT '600.所属商品ID',
`specs_id` BIGINT(19) NULL DEFAULT NULL COMMENT '700.所属规格ID',
`goods_sku_id` BIGINT(19) NULL DEFAULT NULL COMMENT '800.库存量单位ID',
`batch_id` BIGINT(19) NULL DEFAULT NULL COMMENT '900.所属批次ID',
`unit_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '1000.库存量单位名' COLLATE 'utf8_unicode_ci',
`unit_value` VARCHAR(50) NULL DEFAULT NULL COMMENT '1100.库存量单位值' COLLATE 'utf8_unicode_ci',
`unit_display` VARCHAR(50) NULL DEFAULT NULL COMMENT '1200.库存量单位显示' COLLATE 'utf8_unicode_ci',
`unit_quantity` INT(10) NULL DEFAULT NULL COMMENT '1300.库存数量',
`modified_version` BIGINT(19) NULL DEFAULT NULL COMMENT '9000.修改版本号,创建时都为:1',
`sync_version` BIGINT(19) NULL DEFAULT NULL COMMENT '9100.同步版本号,创建时都为:1',
`logical_deleted` BIT(1) NULL DEFAULT NULL COMMENT '10000.逻辑删除==>0:未删除,1:已删除',
`create_uid` BIGINT(19) NULL DEFAULT NULL COMMENT '20000.创建用户ID',
`create_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '30000.创建用户' COLLATE 'utf8_unicode_ci',
`create_time` DATETIME NULL DEFAULT NULL COMMENT '40000.创建时间',
`modified_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '50000.修改用户' COLLATE 'utf8_unicode_ci',
`modified_time` DATETIME NULL DEFAULT NULL COMMENT '60000.修改时间',
`deleted_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '700000.删除用户' COLLATE 'utf8_unicode_ci',
`deleted_time` DATETIME NULL DEFAULT NULL COMMENT '80000.删除时间',
PRIMARY KEY (`id`) USING BTREE
)
COMMENT='主体库存'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;  

库存流水(business_stock_flow)

 CREATE TABLE `business_stock_flow` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`org_id` BIGINT(19) NULL DEFAULT NULL COMMENT '200.所属机构',
`org_type` VARCHAR(50) NULL DEFAULT NULL COMMENT '300.所属机构类型' COLLATE 'utf8_unicode_ci',
`warehouse_id` BIGINT(19) NULL DEFAULT NULL COMMENT '400.所属仓库',
`stock_id` BIGINT(19) NULL DEFAULT NULL COMMENT '500.所属库存',
`change_type` INT(10) NULL DEFAULT NULL COMMENT '600.变更类型:1:加库存,2:减库存',
`change_event` VARCHAR(50) NULL DEFAULT NULL COMMENT '700.变更事件' COLLATE 'utf8_unicode_ci',
`change_order_id` BIGINT(19) NULL DEFAULT NULL COMMENT '800.变更的订单ID',
`change_order_no` VARCHAR(50) NULL DEFAULT NULL COMMENT '900.变更的订单编号' COLLATE 'utf8_unicode_ci',
`change_before_quantity` INT(10) NULL DEFAULT NULL COMMENT '1000.变更前的数量',
`change_after_quantity` INT(10) NULL DEFAULT NULL COMMENT '1100.变更后的数量',
`create_uid` BIGINT(19) NULL DEFAULT NULL COMMENT '1200.创建人ID',
`create_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '1300.创建人' COLLATE 'utf8_unicode_ci',
`create_time` DATETIME NULL DEFAULT NULL COMMENT '1400.创建时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `stock_id` (`stock_id`) USING BTREE
)
COMMENT='库存流水'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;  

库存快照(business_stock_snapshot):

 CREATE TABLE `business_stock_snapshot` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`org_id` BIGINT(19) NULL DEFAULT NULL COMMENT '200.所属机构',
`org_type` VARCHAR(50) NULL DEFAULT NULL COMMENT '300.所属机构类型' COLLATE 'utf8_unicode_ci',
`warehouse_id` BIGINT(19) NULL DEFAULT NULL COMMENT '400.所属仓库',
`manufactor_id` BIGINT(19) NULL DEFAULT NULL COMMENT '500.所属厂家ID',
`good_id` BIGINT(19) NULL DEFAULT NULL COMMENT '600.所属商品ID',
`specs_id` BIGINT(19) NULL DEFAULT NULL COMMENT '700.所属规格ID',
`goods_sku_id` BIGINT(19) NULL DEFAULT NULL COMMENT '800.库存量单位ID',
`batch_id` BIGINT(19) NULL DEFAULT NULL COMMENT '900.所属批次ID',
`unit_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '1000.库存量单位名' COLLATE 'utf8_unicode_ci',
`unit_value` VARCHAR(50) NULL DEFAULT NULL COMMENT '1100.库存量单位值' COLLATE 'utf8_unicode_ci',
`unit_display` VARCHAR(50) NULL DEFAULT NULL COMMENT '1200.库存量单位显示' COLLATE 'utf8_unicode_ci',
`unit_quantity` INT(10) NULL DEFAULT NULL COMMENT '1300.库存数量',
`snapshot_day` DATETIME NULL DEFAULT NULL COMMENT '1400.快照日期(YYYY-MM-DD)',
`modified_version` BIGINT(19) NULL DEFAULT NULL COMMENT '9000.修改版本号,创建时都为:1',
`sync_version` BIGINT(19) NULL DEFAULT NULL COMMENT '9100.同步版本号,创建时都为:1',
`logical_deleted` BIT(1) NULL DEFAULT NULL COMMENT '10000.逻辑删除==>0:未删除,1:已删除',
`create_uid` BIGINT(19) NULL DEFAULT NULL COMMENT '20000.创建用户ID',
`create_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '30000.创建用户' COLLATE 'utf8_unicode_ci',
`create_time` DATETIME NULL DEFAULT NULL COMMENT '40000.创建时间',
`modified_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '50000.修改用户' COLLATE 'utf8_unicode_ci',
`modified_time` DATETIME NULL DEFAULT NULL COMMENT '60000.修改时间',
`deleted_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '700000.删除用户' COLLATE 'utf8_unicode_ci',
`deleted_time` DATETIME NULL DEFAULT NULL COMMENT '80000.删除时间',
PRIMARY KEY (`id`) USING BTREE
)
COMMENT='库存快照'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
ROW_FORMAT=DYNAMIC
;  

采购订单(trader_stock_order):

 CREATE TABLE `trader_stock_order` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`order_no` VARCHAR(50) NULL DEFAULT NULL COMMENT '200.订单编号' COLLATE 'utf8_unicode_ci',
`order_type` TINYINT(3) NULL DEFAULT NULL COMMENT '300.订单类型',
`parent_id` BIGINT(19) NULL DEFAULT NULL COMMENT '400.父订单ID,没有为:-1',
`children_number` SMALLINT(5) NULL DEFAULT NULL COMMENT '500.子订单数量,没有为:0',
`parent_full_path` VARCHAR(200) NULL DEFAULT NULL COMMENT '600.树形全路径' COLLATE 'utf8_unicode_ci',
`order_level` TINYINT(3) NULL DEFAULT NULL COMMENT '700.订单树形级别',
`status` TINYINT(3) NULL DEFAULT NULL COMMENT '800.订单状态',
`sorted` INT(10) NULL DEFAULT NULL COMMENT '900.排序号',
`remarks` VARCHAR(50) NULL DEFAULT NULL COMMENT '1000.备注' COLLATE 'utf8_unicode_ci',
`purchase_org_id` BIGINT(19) NULL DEFAULT NULL COMMENT '1100.采购者的ID',
`purchase_org_type` BIGINT(19) NULL DEFAULT NULL COMMENT '1200.采购者的类型',
`purchase_org_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '1300.采购者的名称' COLLATE 'utf8_unicode_ci',
`purchase_warehouse_id` BIGINT(19) NULL DEFAULT NULL COMMENT '1400.采购的仓库ID',
`purchase_warehouse_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '1500.采购的仓库名称' COLLATE 'utf8_unicode_ci',
`purchase_user_id` BIGINT(19) NULL DEFAULT NULL COMMENT '1600.采购的用户ID',
`purchase_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '1700.采购的用户' COLLATE 'utf8_unicode_ci',
`purchase_time` DATETIME NULL DEFAULT NULL COMMENT '1800.采购的时间',
`purchase_product_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '1900.采购的商品总价',
`purchase_order_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '2000.采购的订单总价',
`purchase_logistics_type` INT(10) NULL DEFAULT NULL COMMENT '2100.采购使用的物流类型',
`purchase_logistics_id` BIGINT(19) NOT NULL DEFAULT '0' COMMENT '2200.采购使用的物流ID',
`sell_org_id` BIGINT(19) NULL DEFAULT NULL COMMENT '2300.销售者的ID',
`sell_org_type` BIGINT(19) NULL DEFAULT NULL COMMENT '2400.销售者的类型',
`sell_org_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '2500.销售者的名称' COLLATE 'utf8_unicode_ci',
`sell_warehouse_id` BIGINT(19) NULL DEFAULT NULL COMMENT '2600.销售的仓库ID',
`sell_warehouse_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '2700.销售的仓库名称' COLLATE 'utf8_unicode_ci',
`sell_user_id` BIGINT(19) NULL DEFAULT NULL COMMENT '2800.销售的用户ID',
`sell_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '2900.销售的用户' COLLATE 'utf8_unicode_ci',
`sell_time` DATETIME NULL DEFAULT NULL COMMENT '3000.销售的时间',
`sell_product_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '3100.销售的商品总价',
`sell_order_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '3200.销售的订单总价',
`sell_logistics_type` INT(10) NULL DEFAULT NULL COMMENT '3300.销售使用的物流类型',
`sell_logistics_id` BIGINT(19) NULL DEFAULT NULL COMMENT '3400.销售使用的物流ID',
PRIMARY KEY (`id`) USING BTREE
)
COMMENT='采购订单'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;  

订单明细(trader_stock_order_details):

 CREATE TABLE `trader_stock_order_details` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`order_id` BIGINT(19) NULL DEFAULT NULL COMMENT '200.订单ID',
`order_no` VARCHAR(50) NULL DEFAULT NULL COMMENT '300.订单编号' COLLATE 'utf8_unicode_ci',
`goods_id` BIGINT(19) NULL DEFAULT NULL COMMENT '400.商品ID',
`specs_id` BIGINT(19) NULL DEFAULT NULL COMMENT '500.规格ID',
`purchase_sku_id` BIGINT(19) NULL DEFAULT NULL COMMENT '600.采购==》库存单位ID',
`purchase_batch_id` BIGINT(19) NULL DEFAULT NULL COMMENT '700.采购==》商品批号ID',
`purchase_unit_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '800.采购==》库存量单位名' COLLATE 'utf8_unicode_ci',
`purchase_unit_value` VARCHAR(50) NULL DEFAULT NULL COMMENT '900.采购==》库存量单位值' COLLATE 'utf8_unicode_ci',
`purchase_unit_display` VARCHAR(50) NULL DEFAULT NULL COMMENT '1000.采购==》库存量单位显示' COLLATE 'utf8_unicode_ci',
`purchase_product_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '1100.采购==》商品单价',
`purchase_goods_quantity` INT(10) NULL DEFAULT NULL COMMENT '1200.采购==》商品数量',
`purchase_total_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '1300.采购==》商品总价',
`purchase_actual_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '1400.采购==》商品实际总价',
`purchase_sorted` INT(10) NULL DEFAULT NULL COMMENT '1500.采购==》显示排序号',
`purchase_status` TINYINT(3) NULL DEFAULT NULL COMMENT '1600.采购==》状态',
`purchase_time` DATETIME NULL DEFAULT NULL COMMENT '1700.采购==》时间',
`sell_sku_id` BIGINT(19) NULL DEFAULT NULL COMMENT '1800.销售==》库存单位ID',
`sell_batch_id` BIGINT(19) NULL DEFAULT NULL COMMENT '1900.销售==》商品批号ID',
`sell_unit_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '2000.销售==》库存量单位名' COLLATE 'utf8_unicode_ci',
`sell_unit_value` VARCHAR(50) NULL DEFAULT NULL COMMENT '2100.销售==》库存量单位值' COLLATE 'utf8_unicode_ci',
`sell_unit_display` VARCHAR(50) NULL DEFAULT NULL COMMENT '2200.销售==》库存量单位显示' COLLATE 'utf8_unicode_ci',
`sell_product_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '2200.销售==》商品单价',
`sell_goods_quantity` INT(10) NULL DEFAULT NULL COMMENT '2300.销售==》商品数量',
`sell_total_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '2400.销售==》商品总价',
`sell_actual_price` DECIMAL(10,2) NULL DEFAULT NULL COMMENT '2500.销售==》商品实际总价',
`sell_sorted` INT(10) NULL DEFAULT NULL COMMENT '2600.销售==》显示排序号',
`sell_status` TINYINT(3) NULL DEFAULT NULL COMMENT '2700.销售==》状态',
`sell_time` DATETIME NULL DEFAULT NULL COMMENT '2800.销售==》时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `order_id` (`order_id`) USING BTREE,
INDEX `goods_id` (`goods_id`) USING BTREE,
INDEX `order_no` (`order_no`) USING BTREE
)
COMMENT='订单明细'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;  

订单流程(trader_stock_order_process):

 CREATE TABLE `trader_stock_order_process` (
`id` BIGINT(19) NOT NULL COMMENT '100.主键ID',
`order_id` BIGINT(19) NULL DEFAULT NULL COMMENT '200.订单ID',
`order_no` VARCHAR(50) NULL DEFAULT NULL COMMENT '300.订单编号' COLLATE 'utf8_unicode_ci',
`change_before_status` TINYINT(3) NULL DEFAULT NULL COMMENT '400.变更前状态值',
`change_before_status_explain` VARCHAR(50) NULL DEFAULT NULL COMMENT '500.变更前状态名' COLLATE 'utf8_unicode_ci',
`change_explain` VARCHAR(255) NULL DEFAULT NULL COMMENT '600.变更说明' COLLATE 'utf8_unicode_ci',
`change_after_status` TINYINT(3) NULL DEFAULT NULL COMMENT '700.变更后状态值',
`change_after_status_explain` VARCHAR(50) NULL DEFAULT NULL COMMENT '800.变更后状态名' COLLATE 'utf8_unicode_ci',
`change_uid` BIGINT(19) NULL DEFAULT NULL COMMENT '900.变更人ID',
`change_user` VARCHAR(50) NULL DEFAULT NULL COMMENT '1000.变更人' COLLATE 'utf8_unicode_ci',
`change_time` DATETIME NULL DEFAULT NULL COMMENT '1100.变更时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `order_id` (`order_id`) USING BTREE,
INDEX `order_no` (`order_no`) USING BTREE
)
COMMENT='订单流程'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;  

文章来源:智云一二三科技

文章标题:Java,设计,供应链系统的库存和采购,数据表结构及对象模型设计

文章地址:https://www.zhihuclub.com/185060.shtml

关于作者: 智云科技

热门文章

网站地图