通过设置规则生成各种单据编号(一)

顾名思义,根据规则生成单据编号,有一张编码表和规则表。
1.首先,先建这两张表:

**SYS_SEQ:业务序列编码表**
CREATE TABLE
    SYS_SEQ
    (
        ID NUMBER NOT NULL,
        COMPANY_ID NUMBER,
        COMPANY_NO VARCHAR2(100),
        COMPANY_NAME VARCHAR2(200),
        SEQ_CODE VARCHAR2(100) NOT NULL,
        SEQ_NAME VARCHAR2(100) NOT NULL,
        DELIMITER VARCHAR2(100),
        RESET_RULE VARCHAR2(100) NOT NULL,
        MULTI_TENANT_FLAG VARCHAR2(100),
        STEP NUMBER,
        CREATION_DATE DATE DEFAULT SYSDATE NOT NULL,
        LAST_UPDATE_DATE DATE NOT NULL,
        CURRENT_CODE VARCHAR2(100),
        CURRENT_NO NUMBER DEFAULT 0 ,
        CURRENT_RESET VARCHAR2(100),
        REMARKS VARCHAR2(500)
    );
COMMENT ON COLUMN SYS_SEQ.COMPANY_ID
IS
    '单位ID';
COMMENT ON COLUMN SYS_SEQ.COMPANY_NO
IS
    '单位编号';
COMMENT ON COLUMN SYS_SEQ.COMPANY_NAME
IS
    '单位名称';
COMMENT ON COLUMN SYS_SEQ.SEQ_CODE
IS
    '业务序列编码';
COMMENT ON COLUMN SYS_SEQ.SEQ_NAME
IS
    '业务序列名称';
COMMENT ON COLUMN SYS_SEQ.DELIMITER
IS
    '分隔符';
COMMENT ON COLUMN SYS_SEQ.RESET_RULE
IS
    '重置规则';
COMMENT ON COLUMN SYS_SEQ.MULTI_TENANT_FLAG
IS
    '多租户标志';
COMMENT ON COLUMN SYS_SEQ.STEP
IS
    '步长';
COMMENT ON COLUMN SYS_SEQ.CREATION_DATE
IS
    '创建日期';
COMMENT ON COLUMN SYS_SEQ.LAST_UPDATE_DATE
IS
    '最后更新日期';
COMMENT ON COLUMN SYS_SEQ.CURRENT_CODE
IS
    '当前编码';
COMMENT ON COLUMN SYS_SEQ.CURRENT_NO
IS
    '当前序号';
COMMENT ON COLUMN SYS_SEQ.CURRENT_RESET
IS
    '当前重置依赖';
COMMENT ON COLUMN SYS_SEQ.REMARKS
IS
    '序列描述';
**SYS_SEQ_RULE:业务编码规则表**
CREATE TABLE
    SYS_SEQ_RULE
    (
        ID NUMBER NOT NULL,
        COMPANY_ID NUMBER,
        COMPANY_NO VARCHAR2(100),
        COMPANY_NAME VARCHAR2(200),
        SEQ_CODE VARCHAR2(100) NOT NULL,
        RULE_ORDER NUMBER NOT NULL,
        RULE_CODE VARCHAR2(100) NOT NULL,
        RULE_VALUE VARCHAR2(100) NOT NULL,
        PADDING_SIDE VARCHAR2(100),
        PADDING_WIDE NUMBER,
        CREATION_DATE DATE DEFAULT SYSDATE NOT NULL,
        LAST_UPDATE_DATE DATE DEFAULT SYSDATE NOT NULL,
        REMARKS VARCHAR2(500),
        SEQ_NAME VARCHAR2(500)
    );
COMMENT ON COLUMN SYS_SEQ_RULE.COMPANY_ID
IS
    '单位ID';
COMMENT ON COLUMN SYS_SEQ_RULE.COMPANY_NO
IS
    '单位编号';
COMMENT ON COLUMN SYS_SEQ_RULE.COMPANY_NAME
IS
    '单位名称';
COMMENT ON COLUMN SYS_SEQ_RULE.SEQ_CODE
IS
    '业务编码';
COMMENT ON COLUMN SYS_SEQ_RULE.RULE_ORDER
IS
    '规则排序';
COMMENT ON COLUMN SYS_SEQ_RULE.RULE_CODE
IS
    '规则代码';
COMMENT ON COLUMN SYS_SEQ_RULE.RULE_VALUE
IS
    '规则值';
COMMENT ON COLUMN SYS_SEQ_RULE.PADDING_SIDE
IS
    '补齐方向';
COMMENT ON COLUMN SYS_SEQ_RULE.PADDING_WIDE
IS
    '补齐宽度';
COMMENT ON COLUMN SYS_SEQ_RULE.CREATION_DATE
IS
    '创建日期';
COMMENT ON COLUMN SYS_SEQ_RULE.LAST_UPDATE_DATE
IS
    '最后更新日期';
COMMENT ON COLUMN SYS_SEQ_RULE.REMARKS
IS
    '规则描述';
COMMENT ON COLUMN SYS_SEQ_RULE.SEQ_NAME
IS
    '业务编码名称';

2.在前台添加业务编号编码(页面low的一匹!!!)
业务编号编码列表页面:
这里写图片描述

新增业务编号编码页面:

业务编号:一般前几位为客户自己定义的常量,中间几位为当前年月日,最后四位为当天的流水号,这些都可以在业务编号规则中设置,稍候在配置规则中再说。这里的重置规则一般为每天。
3.保存业务编号编码。开始配置业务编号规则,上前台页面(不要吐槽页面了)
业务编号规则列表页面:
这里写图片描述
新增业务编号规则页面:
这里写图片描述
例如:要生成渠道编号为BJQD201712060001类型的
首先先建编号编码为channelCode的渠道,步长为1,重置规则为每天。
接下来,要添加规则了。
1.选择业务编码为channelCode的,规则为常量,排序规则为1,规则值BJQD
2.选择业务编码为channelCode的,规则为时间戳,类型为yyyyMMdd的,排序为2
3.选择业务编码为channelCode的,规则为计数,排序规则3,补齐方向右对齐,补齐宽度为4
此时,渠道编号的生成规则已经填写完成。

猜你喜欢

转载自blog.csdn.net/qq_33628614/article/details/78722238