谈谈企业信息系统建设中系统编码设计

所谓系统编码规则就是类似电商订单号等生成规则,通常是流水号,比如我们常见的餐饮消费、超市购物POS机打印的小票号都是年月日+pos机号+序号。企业信息系统建设中也会涉及很多单据号,比如:销售订单号、采购单号、领料单号、入库单号、出库单号、调拨单号等,一般是前缀(表示单据类型)+年月日+序号,如:销售单号为SO201902200001。那么企业信息系统该如何设计系统编码呢?

1、数据表设计

1)系统编码主表

CREATE TABLE `sys_code_config` (
  `sid` bigint(20) NOT NULL AUTO_INCREMENT,
  `code_group` varchar(30) NOT NULL,
  `code_label` varchar(100) NOT NULL COMMENT '说明',
  `code_type` varchar(32) NOT NULL COMMENT 'goods|employee等',
  `code_type_text` varchar(32) DEFAULT NULL,
  `code_prefix` varchar(10) DEFAULT NULL COMMENT '编码前缀',
  `code_ym` varchar(255) DEFAULT NULL COMMENT '编码中间日期格式',
  `code_len` int(11) DEFAULT NULL COMMENT '编码长度',
  `code_initval` int(11) DEFAULT '0' COMMENT '初始计数器',
  `write_uid` bigint(20) DEFAULT NULL,
  `write_time` datetime DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

说明:

  • code_group:编码组,比如员工工号(emp_no)
  • code_label:编码组说明,比如emp_no对应的就是“员工工号”
  • code_type:编码具体类型,比如:10
  • code_type_text:编码具体类型对应的文字描述:比如10–正编人员
  • code_prefix:编码前缀,如正编人员1开头,非正编2开头
  • code_ym:年月日格式化串,员工工号不需要,因此对应空字符串‘’
  • code_len:编码长度,不包括编码前缀长度,若长度4则,正编人员工号10001开始
  • code_initval:编码初始计数器,假设为10,则正编人员工号10011开始

2)系统编码细表(无需维护,系统自动填充值)

CREATE TABLE `sys_code_value` (
  `sid` bigint(20) NOT NULL AUTO_INCREMENT,
  `code_group` varchar(32) NOT NULL,
  `code_type` varchar(32) NOT NULL COMMENT 'goods|employee等',
  `code_ym` varchar(8) NOT NULL,
  `code_val` int(11) NOT NULL DEFAULT '0' COMMENT '初始计数器',
  `write_uid` varchar(32) DEFAULT NULL,
  `write_time` datetime DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
2、编号生成规则

取正编人员的工号,参数:code_group = ‘emp_no’, code_type = ‘10’, code_ym = ‘’,伪代码如下:

set config = 取表sys_code_config数据(code_group = 'emp_no', code_type = '10');
if config 不存在 then 抛错退出程序
set initVO = 取表sys_code_value数据(code_group = 'emp_no', code_type = '10', code_ym = '');
set prefix = config.code_prefix;	// 1
set code_ym = config.code_ym; // ''
set initVal = config.code_val || 0; //配置表没维护默认0
if initVO !=null && initVO.code_val > initVal then	//已经有编码值,判断编码值是否大于初始值
	initVal = initVO.code_val;
end if
initVal++;		//编码递增
initVal = 格式化('0000', initVal);	// initVal = 1, 格式化成0001
return prefix + code_ym + initVal		// 10001

如果往数据库存入本次取的编码,以便下次取用,则还需返写编码,伪码如下:

写入数据表sys_code_value(code_group = 'emp_no', code_type = '10', code_ym = '', code_val=1)
3、程序调用

可以把编码获取封装成一个通用方法,如下:

  • getDefSysCode(code_group, code_type), 同getDefSysCode(code, code_type, false)
  • getDefSysCode(code_group, code_type, updateFlag)

getDefSysCode函数说明:

  • code_group:如上文的emp_no
  • code_type:如上文的10(正编人员工号)
  • updateFlag:是否更新sys_code_value表

则获取正编人员工号调用如下:

  • 单纯获取工号,供前台页面显示新增员工默认工号多少?则调用getDefSysCode(‘emp_no’,10)
  • 获取工号,同时更新sys_code_value则,调用getDefSysCode(‘emp_no’,10,true)
在日常办公有许多常用的个人数据,如朋友电话、邮件地址、日程安排、日常记事、文件上传和下载,这些都可以用一个个人信息管理系统进行管理。个人信息管理系统可以内置于手掌上的数字处理器,以提供电子名片、便条、行程管理等功能。本项目基于B/S设计,也可以发布到网上,用户可以随时存取个人信息。 用户可以在系统任意添加、修改、删除个人数据,包括个人的基本信息、个人通讯录、日程安排、个人文件管理。 要实现的功能包括四个方面: (1)登录与注册 系统的登录和注册功能。 (2)个人基本信息管理模块 系统对个人基本信息的管理包括:个人的姓名、性别、出生日期、民族、学历、职称、登录名、密码、电话、家庭住址等。 (2)用户个人通讯录模块 系统的个人通讯录是保存了个人的通讯录信息,包括自己联系人的姓名、电话、邮箱、工作单位、地址、QQ等。可以自由添加联系人的信息,查询或删除联系人。 (3)日程安排模块 日程模块记录自己的活动安排或者其它有关事项,如添加从某一时间到另一时间要做什么事,日程标题、内容、开始时间、结束时间。可以自由查询,修改,删除。 (4)个人文件管理模块 该模块实现用户在网上存储临时文件的功能。用户可以新建文件夹,修改、删除、移动文件夹;上传文件、修改文件名、下载文件、删除文件、移动文件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值