| Modifiers | Name | Description |
|---|---|---|
static Integer |
aliasOverridingOrder |
| Type | Name and description |
|---|---|
OsmEmployeeService |
osmEmployeeService |
grails.persistence.support.PersistenceContextInterceptor |
persistenceInterceptor |
| Type | Name and description |
|---|---|
SequenceRule |
createRule(String definitionString)创建序列规则 |
Map |
lockNumber(String code, Map params, Long defaultNumber)获得并锁定下一个序号。 |
String |
next(String definitionString, Map params = [:], boolean createRuleFlag = true)获得下一个编号,并且格式化后返回。 |
Map |
parseDefinition(String definitionString, boolean createRuleFlag, boolean forceUpdateRuleFlag)解析规则定义 |
void |
unlockNumber(Map sequenceNumberMap)解锁一个序号,以便释放给其他人使用 |
SequenceRule |
updateRuleDefinition(String definitionString, boolean createFlag = true)更新序列规则定义 |
void |
useNumber(Map sequenceNumberMap)解锁(必须提前锁定)并使用序号,数据库中的序号自动递增 |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
创建序列规则
definitionString - 定义规则的字符串,参考方法 next 参数 definitionString 的说明获得并锁定下一个序号。
code - 编号规则的Codenumber - 需要锁定的编号的流水号,空或者锁定失败则自动计算下一个流水号获得下一个编号,并且格式化后返回。
注意事项:
definitionString - 序列规则的code,或者形如下列说明的定义编号规则的脚本字符串:
[name:"xxx", code:"xxx", customKey:1/0,
orgLevel1:n, orgShortNameCode1:"xxx", orgAsKey1:1/0, orgShortNameAsKey1:1/0,
orgLevel2:n, orgShortNameCode2:"xxx", orgAsKey1:1/0, orgShortNameAsKey2:1/0,
year:1/0, month:1/0, day:1/0, startNumber:n, format:"xxxx"]
orgLevelN:
机构的级别,如果编号机构为3级,这里设置为2级,则以二级的机构作为流水号的关键字之一,即该二级机构下所有三级机构的编号是一个流水。
如果级别为空,则找到有相应代字的机构为止。
orgShortNameCodeN:
一个机构可能有多个职能,因而可能有多个代字,因此编号时可能选用不同的代字。
此时在设置机构代字时,使用符号“|”设置业务编码,如“计|j;商|s”,则orgShortNameCode为"j"时,采用代字“计”。
如果不需要用代字作为流水关键字,设为null。
orgAsKeyN:
如果机构作为流水号的关键字之一,则设为1,否则仅仅只是用于format里显示代字,则设为0即可
orgShortNameAsKeyN:
如果机构代字(不同机构可能有相同的代字)作为流水号的关键字之一,则设为1,否则仅仅只是用于format里显示代字,则设为0即可
year、month、day:
表示是否作为流水号关键字,例如月、日都为0,则表示年内大流水。
customKey:
是否支持自定义的关键字:设为1时,调用next方法获取下一编号时,可以在params参数中用custom代表这个键值
startNumber:
开始数字,默认从1开始(即默认为0)
format的格式要求如下:
{org1}、{org2}表示机构代字,{year}{4}、{month}{2}、{day}{2}分别表示年月日和位数,{sn}{4}表示流水号和位数(0表示自然位数),{custom}表示自定义Key值
例如:{org1}字{year}{4}年第{sn}{4}号,转换后如“财字2010年第0001号”params - 参数Map,可以为空。内容包含:
organization:用于计算机构代字的机构对象或机构ID(数字类型),空则取当前用户的主职机构
year、month、day:用于限定流水号的时间参数,空则取当前时间
custom: 用于限定流水号(也可同时在format中使用)的自定义参数,如果规则中customKey为0,则这里仅用于根据format格式化到编号字串中
format:空则按照定义中的format来格式化编号串
xxxxxx: 其他自定义字符串,会自动映射到format中的 {xxxxx} 中。如"{year}-{abc}-{sn}{3}",参数中包含 abc:"efg",则格式化的编号如“2012-efg-123”createRuleFlag - true/false。如果没找到规则定义的话,是否根据规则定义,自动创建编号规则,默认为是。如果参数definitionString为序列规则的code,则忽略本参数解析规则定义
definitionString - 定义规则的字符串(Map形式的),或规则的CodecreateRuleFlag - definitionString是规则字符串的情况下,如果没有找到对应规则,是否自动创建该规则forceUpdateRuleFlag - definitionString是规则字符串的情况下,如果找到了对应规则,是否按照新的规则定义更新该条该规则解锁一个序号,以便释放给其他人使用
sequenceNumberMap - 和方法lockNumber返回结果一样的Map更新序列规则定义
definitionString - 定义规则的字符串,参考方法 next 参数 definitionString 的说明createFlag - 如果规则不存在,是否创建规则,默认为true解锁(必须提前锁定)并使用序号,数据库中的序号自动递增
sequenceNumberMap - 和方法lockNumber返回结果一样的Map