增加 Sequences parse(String formatted, String pattern)方法,用于根据格式反解析格式化后的字符串为序列号对象

This commit is contained in:
yhl452493373
2022-02-11 13:57:12 +08:00
parent 54e2f9dffb
commit 0fa5cc1e7e
8 changed files with 230 additions and 15 deletions

View File

@@ -8,7 +8,7 @@
使用方法:
+ 在项目中放置jar包的地方把seq-1.1.0.jar、seq-1.1.0-sources.jar、seq-1.1.0-pom.xml复制过去
+ 在项目中放置jar包的地方把seq-1.2.0.jar、seq-1.2.0-sources.jar、seq-1.2.0-pom.xml复制过去
+ 在pom.xml中增加以下内容然后执行maven命令mvn clean
```xml
@@ -18,7 +18,7 @@
<dependency>
<groupId>com.yanghuanglin</groupId>
<artifactId>seq</artifactId>
<version>1.0.0</version>
<version>1.2.0</version>
<exclusions>
<!-- 如若你项目中有引用spring-jdbc则需要排除seq的jdbc依赖 -->
<exclusion>
@@ -50,13 +50,13 @@
</goals>
<configuration>
<!-- ${project.basedir}表示当前项目的根目录 -->
<file>${project.basedir}/lib/seq-1.1.0.jar</file>
<pomFile>${pom.basedir}/lib/seq-1.1.0-pom.xml</pomFile>
<sources>${project.basedir}/lib/seq-1.1.0-sources.jar</sources>
<file>${project.basedir}/lib/seq-1.2.0.jar</file>
<pomFile>${pom.basedir}/lib/seq-1.2.0-pom.xml</pomFile>
<sources>${project.basedir}/lib/seq-1.2.0-sources.jar</sources>
<repositoryLayout>default</repositoryLayout>
<groupId>com.yanghuanglin</groupId>
<artifactId>seq</artifactId>
<version>1.0.0</version>
<version>1.2.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
@@ -340,6 +340,16 @@ public interface Generator {
*/
String generate(String key, String type, Integer minLength);
/**
* 将{@link #generate(String, String)}得到的序号对象格式化为补零后的序号字符串。实际上只会用到{@link Sequences#getSeq()}属性
*
* @param sequences 生成的序号对象
* @param minLength 序号数字最小长度
* @param pattern 格式
* @return 格式化后的字符串
*/
String format(Sequences sequences, Integer minLength, String pattern);
/**
* 将生成的序号对象格式化为指定格式
* <p/>
@@ -352,7 +362,7 @@ public interface Generator {
* @param seq 需要格式化的序号
* @param minLength 序号最小长度,不足的会补零
* @param pattern 格式
* @return 格式化后的字符串
* @return 格式化后的序号字符串
*/
String format(Long seq, Integer minLength, String pattern);
@@ -368,11 +378,28 @@ public interface Generator {
* @param seq 需要格式化的序号
* @param start 序号格式化后以什么字符串开头
* @param minLength 序号最小长度,不足的会补零
* @param pattern 格式
* @return 格式化后的字符串
* @param pattern 序号格式
* @return 格式化后的序号字符串
*/
String format(Long seq, String start, Integer minLength, String pattern);
/**
* 将已格式化的序号解析为序号对象
* <p/>
* 返回的序号对象{@link Sequences#getKey()}和{@link Sequences#getType()}为null但是临时字段{@link Sequences#getYear()}、{@link Sequences#getMonth()}、{@link Sequences#getDay()}可能有值
* <p/>
* 如果生成序号时序号的key在年、月、日上有关联如每年每月的序号要从1开始则需要自行用序号字符串与{@link Sequences#getYear()}、{@link Sequences#getMonth()}、{@link Sequences#getDay()}进行组合进而得到key
* <p/>
* 例如SNT序号每年都从1开始则key应该是类似SNT2021、SNT2022这种格式而在配置中该序号的代码只是SNT但是由于每年都要从1开始所有应该每年有一个key这个key就为SNT+年份,而这个年份就是此处解析后返回的对象中的{@link Sequences#getYear()}
* <p/>
* 注意:序号格式和格式化后的字符串占位一定要匹配。如:处〔#year##month#10801第#seq#号 对应 处20220210801第10001号而不能对应 处2022021110801第10001号
*
* @param pattern 序号格式
* @param formatted 格式化后的序号字符串
* @return 包含了序号字符串对应年如果有、月如果有、日如果有、序号的序号对象其key、type需要根据情况手动设置
*/
Sequences parse(String pattern, String formatted);
/**
* 锁定指定序号,在序号生成后,调用该序号的逻辑完成后需要执行此方法
* <p/>
@@ -401,6 +428,13 @@ public interface Generator {
* @param end 结束时间
*/
void release(Date begin, Date end);
/**
* 释放指定序号。一般用于业务对象删除后,对应序号需要回收使用时。
*
* @param sequences 需要释放的序号。一般是一个通过{@link Sequences#setKey(String)}、{@link Sequences#setType(String)}、{@link Sequences#setSeq(Long)}三方法一起手动构建或通过{@link Sequences#Sequences(String, String, Long)}构造方法构建的实例对象
*/
void release(Sequences sequences);
}
```