mirror of
https://gitee.com/y_project/RuoYi-Cloud.git
synced 2026-01-30 05:21:56 +08:00
完成序列号生成功能
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package com.ruoyi.common.services;
|
||||
|
||||
import com.ruoyi.common.services.constants.SeqType;
|
||||
|
||||
/**
|
||||
* 序列号生成的业务接口
|
||||
*
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/18
|
||||
*/
|
||||
public interface ISysSequenceService {
|
||||
|
||||
/**
|
||||
* 获取下一个序列号
|
||||
*
|
||||
* @param seqDistCd 序列号识别码
|
||||
* @param update 是否更新序列号到DB(不更新就相当于预览)
|
||||
* @return 下一个序列号
|
||||
*/
|
||||
String getNextSequence(String seqDistCd, boolean update);
|
||||
|
||||
default String getNextSequence(String seqDistCd) {
|
||||
return getNextSequence(seqDistCd, true);
|
||||
}
|
||||
|
||||
default String getNextSequence(SeqType seqType, boolean update) {
|
||||
return getNextSequence(seqType.getSeqDistCd(), update);
|
||||
}
|
||||
|
||||
default String getNextSequence(SeqType seqType) {
|
||||
return getNextSequence(seqType, true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.ruoyi.common.services;
|
||||
|
||||
import com.ruoyi.common.core.exception.NoSuchDataException;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.core.utils.uuid.snowflake.SnowFlakeIdGenerator;
|
||||
import com.ruoyi.common.services.domain.SysSeqResult;
|
||||
import com.ruoyi.common.services.domain.vo.SeqGenResult;
|
||||
import com.ruoyi.common.services.domain.vo.SeqVo;
|
||||
import com.ruoyi.common.services.mapper.SysSeqResultMapper;
|
||||
import com.ruoyi.common.services.mapper.SysSequenceExtMapper;
|
||||
import com.ruoyi.common.services.sequence.ISequenceGenerator;
|
||||
import com.ruoyi.common.services.sequence.SequenceConfig;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 序列号生成的业务接口
|
||||
*
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/18
|
||||
*/
|
||||
@Service
|
||||
public class SysSequenceServiceImpl implements ISysSequenceService {
|
||||
|
||||
@Resource
|
||||
private SequenceConfig sequenceConfig;
|
||||
@Resource
|
||||
private SysSequenceExtMapper extMapper;
|
||||
@Resource
|
||||
private SysSeqResultMapper resultMapper;
|
||||
|
||||
@Override
|
||||
public String getNextSequence(String seqDistCd, boolean update) {
|
||||
if (StringUtils.isBlank(seqDistCd)) {
|
||||
throw new IllegalArgumentException("seqDistCd can not be blank");
|
||||
}
|
||||
//查询规则和实绩(第一次生成的话实绩为空)
|
||||
SeqVo seqVo = extMapper.selectMaxSeq(seqDistCd);
|
||||
if (seqVo == null) {
|
||||
throw new NoSuchDataException("seqGen", "No sequence rule found by seqDistCd: [" + seqDistCd + "]");
|
||||
}
|
||||
//检查规则是否启用
|
||||
if (!seqVo.isEnable()) {
|
||||
return null;
|
||||
}
|
||||
//获取生成器
|
||||
ISequenceGenerator generator;
|
||||
if (StringUtils.isNotBlank(seqVo.getGeneratorName())) {
|
||||
generator = sequenceConfig.getOrCreateGenerator(seqVo.getGeneratorName());
|
||||
} else {
|
||||
generator = sequenceConfig.getDefaultGenerator();
|
||||
}
|
||||
//生成序列号
|
||||
SeqGenResult result = generator.nextSequenceGen(seqVo, null);
|
||||
//更新记录
|
||||
if (update) {
|
||||
SysSeqResult updateRecord = result.getUpdateRecord();
|
||||
if (result.getSeqId() == null) {
|
||||
updateRecord.setSeqId(SnowFlakeIdGenerator.nextIdLong());
|
||||
resultMapper.insertSelective(updateRecord);
|
||||
} else {
|
||||
resultMapper.updateByPrimaryKeySelective(updateRecord);
|
||||
}
|
||||
}
|
||||
return result.getSequenceResult();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.ruoyi.common.services.config;
|
||||
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* 本模块全局配置
|
||||
*
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/19
|
||||
*/
|
||||
@ComponentScan("com.ruoyi.common.services")
|
||||
@Configuration
|
||||
public class ServicesConfig {
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.ruoyi.common.services.constants;
|
||||
|
||||
import com.ruoyi.common.core.constant.IEnum;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/18
|
||||
*/
|
||||
@Getter
|
||||
public enum SeqType implements IEnum {
|
||||
|
||||
UNIT_CD(1, "UNIT", "单位代码"),
|
||||
|
||||
GOODE_TYPE_CD(2, "GT", "商品类型代码"),
|
||||
|
||||
WHS_CD(3, "WHS", "仓库代码"),
|
||||
|
||||
;
|
||||
|
||||
private final int code;
|
||||
|
||||
private final String seqDistCd;
|
||||
|
||||
private final String name;
|
||||
|
||||
SeqType(int code, String seqDistCd, String name) {
|
||||
this.code = code;
|
||||
this.seqDistCd = seqDistCd;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
package com.ruoyi.common.services.domain;
|
||||
|
||||
import com.ruoyi.common.core.web.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class was generated by MyBatis Generator.
|
||||
*
|
||||
* <ul>
|
||||
* <li> Table: sys_seq_result </li>
|
||||
* <li> Remarks: 序列号生成记录表 </li>
|
||||
* </ul>
|
||||
*
|
||||
* @author ryas
|
||||
* created on 2024-02-19
|
||||
*/
|
||||
public class SysSeqResult extends BaseEntity implements Serializable {
|
||||
/**
|
||||
* 序列号ID
|
||||
*/
|
||||
private Long seqId;
|
||||
|
||||
/**
|
||||
* 序列号识别码
|
||||
*/
|
||||
private String seqDistCd;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
private String prefix;
|
||||
|
||||
/**
|
||||
* 分隔符1
|
||||
*/
|
||||
private String separator1;
|
||||
|
||||
/**
|
||||
* 日期值
|
||||
*/
|
||||
private String dateVal;
|
||||
|
||||
/**
|
||||
* 分隔符2
|
||||
*/
|
||||
private String separator2;
|
||||
|
||||
/**
|
||||
* 当前序列号
|
||||
*/
|
||||
private Integer seqNo;
|
||||
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
private String remark1;
|
||||
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
private String remark2;
|
||||
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
private String remark3;
|
||||
|
||||
/**
|
||||
* 备注4
|
||||
*/
|
||||
private String remark4;
|
||||
|
||||
/**
|
||||
* 备注5
|
||||
*/
|
||||
private String remark5;
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Long getSeqId() {
|
||||
return seqId;
|
||||
}
|
||||
|
||||
public void setSeqId(Long seqId) {
|
||||
this.seqId = seqId;
|
||||
}
|
||||
|
||||
public String getSeqDistCd() {
|
||||
return seqDistCd;
|
||||
}
|
||||
|
||||
public void setSeqDistCd(String seqDistCd) {
|
||||
this.seqDistCd = seqDistCd == null ? null : seqDistCd.trim();
|
||||
}
|
||||
|
||||
public String getPrefix() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
public void setPrefix(String prefix) {
|
||||
this.prefix = prefix == null ? null : prefix.trim();
|
||||
}
|
||||
|
||||
public String getSeparator1() {
|
||||
return separator1;
|
||||
}
|
||||
|
||||
public void setSeparator1(String separator1) {
|
||||
this.separator1 = separator1 == null ? null : separator1.trim();
|
||||
}
|
||||
|
||||
public String getDateVal() {
|
||||
return dateVal;
|
||||
}
|
||||
|
||||
public void setDateVal(String dateVal) {
|
||||
this.dateVal = dateVal == null ? null : dateVal.trim();
|
||||
}
|
||||
|
||||
public String getSeparator2() {
|
||||
return separator2;
|
||||
}
|
||||
|
||||
public void setSeparator2(String separator2) {
|
||||
this.separator2 = separator2 == null ? null : separator2.trim();
|
||||
}
|
||||
|
||||
public Integer getSeqNo() {
|
||||
return seqNo;
|
||||
}
|
||||
|
||||
public void setSeqNo(Integer seqNo) {
|
||||
this.seqNo = seqNo;
|
||||
}
|
||||
|
||||
public String getRemark1() {
|
||||
return remark1;
|
||||
}
|
||||
|
||||
public void setRemark1(String remark1) {
|
||||
this.remark1 = remark1 == null ? null : remark1.trim();
|
||||
}
|
||||
|
||||
public String getRemark2() {
|
||||
return remark2;
|
||||
}
|
||||
|
||||
public void setRemark2(String remark2) {
|
||||
this.remark2 = remark2 == null ? null : remark2.trim();
|
||||
}
|
||||
|
||||
public String getRemark3() {
|
||||
return remark3;
|
||||
}
|
||||
|
||||
public void setRemark3(String remark3) {
|
||||
this.remark3 = remark3 == null ? null : remark3.trim();
|
||||
}
|
||||
|
||||
public String getRemark4() {
|
||||
return remark4;
|
||||
}
|
||||
|
||||
public void setRemark4(String remark4) {
|
||||
this.remark4 = remark4 == null ? null : remark4.trim();
|
||||
}
|
||||
|
||||
public String getRemark5() {
|
||||
return remark5;
|
||||
}
|
||||
|
||||
public void setRemark5(String remark5) {
|
||||
this.remark5 = remark5 == null ? null : remark5.trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", seqId=").append(seqId);
|
||||
sb.append(", seqDistCd=").append(seqDistCd);
|
||||
sb.append(", prefix=").append(prefix);
|
||||
sb.append(", separator1=").append(separator1);
|
||||
sb.append(", dateVal=").append(dateVal);
|
||||
sb.append(", separator2=").append(separator2);
|
||||
sb.append(", seqNo=").append(seqNo);
|
||||
sb.append(", remark1=").append(remark1);
|
||||
sb.append(", remark2=").append(remark2);
|
||||
sb.append(", remark3=").append(remark3);
|
||||
sb.append(", remark4=").append(remark4);
|
||||
sb.append(", remark5=").append(remark5);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
package com.ruoyi.common.services.domain;
|
||||
|
||||
import com.ruoyi.common.core.web.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* This class was generated by MyBatis Generator.
|
||||
*
|
||||
* <ul>
|
||||
* <li> Table: sys_seq_rule </li>
|
||||
* <li> Remarks: 序列号生成规则表 </li>
|
||||
* </ul>
|
||||
*
|
||||
* @author ryas
|
||||
* created on 2024-02-19
|
||||
*/
|
||||
public class SysSeqRule extends BaseEntity implements Serializable {
|
||||
/**
|
||||
* 规则ID
|
||||
*/
|
||||
private Long ruleId;
|
||||
|
||||
/**
|
||||
* 序列号识别码
|
||||
*/
|
||||
private String seqDistCd;
|
||||
|
||||
/**
|
||||
* 规则名称
|
||||
*/
|
||||
private String ruleName;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
private String prefix;
|
||||
|
||||
/**
|
||||
* 分隔符1
|
||||
*/
|
||||
private String separator1;
|
||||
|
||||
/**
|
||||
* 日期格式
|
||||
*/
|
||||
private String dateFormat;
|
||||
|
||||
/**
|
||||
* 序列号数字部分的最小位数,不足补0
|
||||
*/
|
||||
private Integer minDigits;
|
||||
|
||||
/**
|
||||
* 分隔符2
|
||||
*/
|
||||
private String separator2;
|
||||
|
||||
/**
|
||||
* 生成器名称(或类全名),自定义的生成器可忽略前面的规则自行生成
|
||||
*/
|
||||
private String generatorName;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private Integer enableFlag;
|
||||
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
private String remark1;
|
||||
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
private String remark2;
|
||||
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
private String remark3;
|
||||
|
||||
/**
|
||||
* 备注4
|
||||
*/
|
||||
private String remark4;
|
||||
|
||||
/**
|
||||
* 备注5
|
||||
*/
|
||||
private String remark5;
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Long getRuleId() {
|
||||
return ruleId;
|
||||
}
|
||||
|
||||
public void setRuleId(Long ruleId) {
|
||||
this.ruleId = ruleId;
|
||||
}
|
||||
|
||||
public String getSeqDistCd() {
|
||||
return seqDistCd;
|
||||
}
|
||||
|
||||
public void setSeqDistCd(String seqDistCd) {
|
||||
this.seqDistCd = seqDistCd == null ? null : seqDistCd.trim();
|
||||
}
|
||||
|
||||
public String getRuleName() {
|
||||
return ruleName;
|
||||
}
|
||||
|
||||
public void setRuleName(String ruleName) {
|
||||
this.ruleName = ruleName == null ? null : ruleName.trim();
|
||||
}
|
||||
|
||||
public String getPrefix() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
public void setPrefix(String prefix) {
|
||||
this.prefix = prefix == null ? null : prefix.trim();
|
||||
}
|
||||
|
||||
public String getSeparator1() {
|
||||
return separator1;
|
||||
}
|
||||
|
||||
public void setSeparator1(String separator1) {
|
||||
this.separator1 = separator1 == null ? null : separator1.trim();
|
||||
}
|
||||
|
||||
public String getDateFormat() {
|
||||
return dateFormat;
|
||||
}
|
||||
|
||||
public void setDateFormat(String dateFormat) {
|
||||
this.dateFormat = dateFormat == null ? null : dateFormat.trim();
|
||||
}
|
||||
|
||||
public Integer getMinDigits() {
|
||||
return minDigits;
|
||||
}
|
||||
|
||||
public void setMinDigits(Integer minDigits) {
|
||||
this.minDigits = minDigits;
|
||||
}
|
||||
|
||||
public String getSeparator2() {
|
||||
return separator2;
|
||||
}
|
||||
|
||||
public void setSeparator2(String separator2) {
|
||||
this.separator2 = separator2 == null ? null : separator2.trim();
|
||||
}
|
||||
|
||||
public String getGeneratorName() {
|
||||
return generatorName;
|
||||
}
|
||||
|
||||
public void setGeneratorName(String generatorName) {
|
||||
this.generatorName = generatorName == null ? null : generatorName.trim();
|
||||
}
|
||||
|
||||
public Integer getEnableFlag() {
|
||||
return enableFlag;
|
||||
}
|
||||
|
||||
public void setEnableFlag(Integer enableFlag) {
|
||||
this.enableFlag = enableFlag;
|
||||
}
|
||||
|
||||
public String getRemark1() {
|
||||
return remark1;
|
||||
}
|
||||
|
||||
public void setRemark1(String remark1) {
|
||||
this.remark1 = remark1 == null ? null : remark1.trim();
|
||||
}
|
||||
|
||||
public String getRemark2() {
|
||||
return remark2;
|
||||
}
|
||||
|
||||
public void setRemark2(String remark2) {
|
||||
this.remark2 = remark2 == null ? null : remark2.trim();
|
||||
}
|
||||
|
||||
public String getRemark3() {
|
||||
return remark3;
|
||||
}
|
||||
|
||||
public void setRemark3(String remark3) {
|
||||
this.remark3 = remark3 == null ? null : remark3.trim();
|
||||
}
|
||||
|
||||
public String getRemark4() {
|
||||
return remark4;
|
||||
}
|
||||
|
||||
public void setRemark4(String remark4) {
|
||||
this.remark4 = remark4 == null ? null : remark4.trim();
|
||||
}
|
||||
|
||||
public String getRemark5() {
|
||||
return remark5;
|
||||
}
|
||||
|
||||
public void setRemark5(String remark5) {
|
||||
this.remark5 = remark5 == null ? null : remark5.trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", ruleId=").append(ruleId);
|
||||
sb.append(", seqDistCd=").append(seqDistCd);
|
||||
sb.append(", ruleName=").append(ruleName);
|
||||
sb.append(", prefix=").append(prefix);
|
||||
sb.append(", separator1=").append(separator1);
|
||||
sb.append(", dateFormat=").append(dateFormat);
|
||||
sb.append(", minDigits=").append(minDigits);
|
||||
sb.append(", separator2=").append(separator2);
|
||||
sb.append(", generatorName=").append(generatorName);
|
||||
sb.append(", enableFlag=").append(enableFlag);
|
||||
sb.append(", remark1=").append(remark1);
|
||||
sb.append(", remark2=").append(remark2);
|
||||
sb.append(", remark3=").append(remark3);
|
||||
sb.append(", remark4=").append(remark4);
|
||||
sb.append(", remark5=").append(remark5);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.ruoyi.common.services.domain.vo;
|
||||
|
||||
import com.ruoyi.common.services.domain.SysSeqResult;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/19
|
||||
*/
|
||||
@Data
|
||||
public class SeqGenResult {
|
||||
|
||||
/**
|
||||
* 序列号实绩ID
|
||||
*/
|
||||
private Long seqId;
|
||||
|
||||
/**
|
||||
* 序列号识别码
|
||||
*/
|
||||
private String seqDistCd;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
private String prefix;
|
||||
|
||||
/**
|
||||
* 分隔符1
|
||||
*/
|
||||
private String separator1;
|
||||
|
||||
/**
|
||||
* 日期值
|
||||
*/
|
||||
private String dateVal;
|
||||
|
||||
/**
|
||||
* 分隔符2
|
||||
*/
|
||||
private String separator2;
|
||||
|
||||
/**
|
||||
* 当前序列号
|
||||
*/
|
||||
private Integer seqNo;
|
||||
|
||||
/**
|
||||
* 完整生成的序列号结果
|
||||
*/
|
||||
private String sequenceResult;
|
||||
|
||||
public SysSeqResult getUpdateRecord() {
|
||||
SysSeqResult result = new SysSeqResult();
|
||||
result.setSeqId(seqId);
|
||||
result.setSeqDistCd(seqDistCd);
|
||||
result.setPrefix(prefix);
|
||||
result.setSeparator1(separator1);
|
||||
result.setDateVal(dateVal);
|
||||
result.setSeparator2(separator2);
|
||||
result.setSeqNo(seqNo);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.ruoyi.common.services.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/19
|
||||
*/
|
||||
@Data
|
||||
public class SeqVo {
|
||||
|
||||
/**
|
||||
* 规则ID
|
||||
*/
|
||||
private Long ruleId;
|
||||
|
||||
/**
|
||||
* 序列号实绩ID
|
||||
*/
|
||||
private Long seqId;
|
||||
|
||||
/**
|
||||
* 序列号识别码
|
||||
*/
|
||||
private String seqDistCd;
|
||||
|
||||
/**
|
||||
* 规则名称
|
||||
*/
|
||||
private String ruleName;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
private String prefix;
|
||||
|
||||
/**
|
||||
* 分隔符1
|
||||
*/
|
||||
private String separator1;
|
||||
|
||||
/**
|
||||
* 日期格式
|
||||
*/
|
||||
private String dateFormat;
|
||||
|
||||
/**
|
||||
* 序列号数字部分的最小位数,不足补0
|
||||
*/
|
||||
private Integer minDigits;
|
||||
|
||||
/**
|
||||
* 分隔符2
|
||||
*/
|
||||
private String separator2;
|
||||
|
||||
/**
|
||||
* 生成器名称(或类全名),自定义的生成器可忽略前面的规则自行生成
|
||||
*/
|
||||
private String generatorName;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private Integer enableFlag;
|
||||
|
||||
/**
|
||||
* 日期值
|
||||
*/
|
||||
private String dateVal;
|
||||
|
||||
/**
|
||||
* 当前序列号
|
||||
*/
|
||||
private Integer seqNo;
|
||||
|
||||
public boolean isEnable() {
|
||||
return enableFlag != null && enableFlag == 1;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
package com.ruoyi.common.services.mapper;
|
||||
|
||||
import java.sql.JDBCType;
|
||||
import java.util.Date;
|
||||
import org.mybatis.dynamic.sql.AliasableSqlTable;
|
||||
import org.mybatis.dynamic.sql.SqlColumn;
|
||||
|
||||
public final class SysSeqResultDynamicSqlSupport {
|
||||
public static final SysSeqResult sysSeqResult = new SysSeqResult();
|
||||
|
||||
/**
|
||||
* 序列号ID
|
||||
*/
|
||||
public static final SqlColumn<Long> seqId = sysSeqResult.seqId;
|
||||
|
||||
/**
|
||||
* 序列号识别码
|
||||
*/
|
||||
public static final SqlColumn<String> seqDistCd = sysSeqResult.seqDistCd;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
public static final SqlColumn<String> prefix = sysSeqResult.prefix;
|
||||
|
||||
/**
|
||||
* 分隔符1
|
||||
*/
|
||||
public static final SqlColumn<String> separator1 = sysSeqResult.separator1;
|
||||
|
||||
/**
|
||||
* 日期值
|
||||
*/
|
||||
public static final SqlColumn<String> dateVal = sysSeqResult.dateVal;
|
||||
|
||||
/**
|
||||
* 分隔符2
|
||||
*/
|
||||
public static final SqlColumn<String> separator2 = sysSeqResult.separator2;
|
||||
|
||||
/**
|
||||
* 当前序列号
|
||||
*/
|
||||
public static final SqlColumn<Integer> seqNo = sysSeqResult.seqNo;
|
||||
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
public static final SqlColumn<String> remark1 = sysSeqResult.remark1;
|
||||
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
public static final SqlColumn<String> remark2 = sysSeqResult.remark2;
|
||||
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
public static final SqlColumn<String> remark3 = sysSeqResult.remark3;
|
||||
|
||||
/**
|
||||
* 备注4
|
||||
*/
|
||||
public static final SqlColumn<String> remark4 = sysSeqResult.remark4;
|
||||
|
||||
/**
|
||||
* 备注5
|
||||
*/
|
||||
public static final SqlColumn<String> remark5 = sysSeqResult.remark5;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
public static final SqlColumn<String> createBy = sysSeqResult.createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
public static final SqlColumn<Date> createTime = sysSeqResult.createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
public static final SqlColumn<String> updateBy = sysSeqResult.updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
public static final SqlColumn<Date> updateTime = sysSeqResult.updateTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
public static final SqlColumn<String> remark = sysSeqResult.remark;
|
||||
|
||||
public static final class SysSeqResult extends AliasableSqlTable<SysSeqResult> {
|
||||
public final SqlColumn<Long> seqId = column("seq_id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<String> seqDistCd = column("seq_dist_cd", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> prefix = column("prefix", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> separator1 = column("separator1", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> dateVal = column("date_val", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> separator2 = column("separator2", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Integer> seqNo = column("seq_no", JDBCType.INTEGER);
|
||||
|
||||
public final SqlColumn<String> remark1 = column("remark_1", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark2 = column("remark_2", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark3 = column("remark_3", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark4 = column("remark_4", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark5 = column("remark_5", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> createBy = column("create_by", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Date> createTime = column("create_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<String> updateBy = column("update_by", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Date> updateTime = column("update_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<String> remark = column("remark", JDBCType.VARCHAR);
|
||||
|
||||
public SysSeqResult() {
|
||||
super("sys_seq_result", SysSeqResult::new);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
package com.ruoyi.common.services.mapper;
|
||||
|
||||
import com.ruoyi.common.security.utils.SecurityUtilsExt;
|
||||
import com.ruoyi.common.services.domain.SysSeqResult;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.mybatis.dynamic.sql.BasicColumn;
|
||||
import org.mybatis.dynamic.sql.delete.DeleteDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.select.CountDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.select.SelectDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||
import org.mybatis.dynamic.sql.update.UpdateDSL;
|
||||
import org.mybatis.dynamic.sql.update.UpdateDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.update.UpdateModel;
|
||||
import org.mybatis.dynamic.sql.util.SqlProviderAdapter;
|
||||
import org.mybatis.dynamic.sql.util.mybatis3.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.ruoyi.common.services.mapper.SysSeqResultDynamicSqlSupport.*;
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||
|
||||
@Mapper
|
||||
public interface SysSeqResultMapper extends CommonCountMapper, CommonDeleteMapper, CommonInsertMapper<SysSeqResult>, CommonUpdateMapper {
|
||||
BasicColumn[] selectList = BasicColumn.columnList(seqId, seqDistCd, prefix, separator1, dateVal, separator2, seqNo, remark1, remark2, remark3, remark4, remark5, createBy, createTime, updateBy, updateTime, remark);
|
||||
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@Results(id="SysSeqResultResult", value = {
|
||||
@Result(column="seq_id", property="seqId", jdbcType=JdbcType.BIGINT, id=true),
|
||||
@Result(column="seq_dist_cd", property="seqDistCd", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="prefix", property="prefix", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="separator1", property="separator1", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="date_val", property="dateVal", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="separator2", property="separator2", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="seq_no", property="seqNo", jdbcType=JdbcType.INTEGER),
|
||||
@Result(column="remark_1", property="remark1", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_2", property="remark2", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_3", property="remark3", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_4", property="remark4", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_5", property="remark5", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="create_by", property="createBy", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="update_by", property="updateBy", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="remark", property="remark", jdbcType=JdbcType.VARCHAR)
|
||||
})
|
||||
List<SysSeqResult> selectMany(SelectStatementProvider selectStatement);
|
||||
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@ResultMap("SysSeqResultResult")
|
||||
Optional<SysSeqResult> selectOne(SelectStatementProvider selectStatement);
|
||||
|
||||
default long count(CountDSLCompleter completer) {
|
||||
return MyBatis3Utils.countFrom(this::count, sysSeqResult, completer);
|
||||
}
|
||||
|
||||
default int delete(DeleteDSLCompleter completer) {
|
||||
return MyBatis3Utils.deleteFrom(this::delete, sysSeqResult, completer);
|
||||
}
|
||||
|
||||
default int deleteByPrimaryKey(Long seqId_) {
|
||||
return delete(c ->
|
||||
c.where(seqId, isEqualTo(seqId_))
|
||||
);
|
||||
}
|
||||
|
||||
default int insert(SysSeqResult row) {
|
||||
row.setCommonForInsert(SecurityUtilsExt.getUserIdStr());
|
||||
return MyBatis3Utils.insert(this::insert, row, sysSeqResult, c ->
|
||||
c.map(seqId).toProperty("seqId")
|
||||
.map(seqDistCd).toProperty("seqDistCd")
|
||||
.map(prefix).toProperty("prefix")
|
||||
.map(separator1).toProperty("separator1")
|
||||
.map(dateVal).toProperty("dateVal")
|
||||
.map(separator2).toProperty("separator2")
|
||||
.map(seqNo).toProperty("seqNo")
|
||||
.map(remark1).toProperty("remark1")
|
||||
.map(remark2).toProperty("remark2")
|
||||
.map(remark3).toProperty("remark3")
|
||||
.map(remark4).toProperty("remark4")
|
||||
.map(remark5).toProperty("remark5")
|
||||
.map(createBy).toProperty("createBy")
|
||||
.map(createTime).toProperty("createTime")
|
||||
.map(updateBy).toProperty("updateBy")
|
||||
.map(updateTime).toProperty("updateTime")
|
||||
.map(remark).toProperty("remark")
|
||||
);
|
||||
}
|
||||
|
||||
default int insertMultiple(Collection<SysSeqResult> records) {
|
||||
for (SysSeqResult row : records) {
|
||||
row.setCommonForInsert(SecurityUtilsExt.getUserIdStr());
|
||||
}
|
||||
return MyBatis3Utils.insertMultiple(this::insertMultiple, records, sysSeqResult, c ->
|
||||
c.map(seqId).toProperty("seqId")
|
||||
.map(seqDistCd).toProperty("seqDistCd")
|
||||
.map(prefix).toProperty("prefix")
|
||||
.map(separator1).toProperty("separator1")
|
||||
.map(dateVal).toProperty("dateVal")
|
||||
.map(separator2).toProperty("separator2")
|
||||
.map(seqNo).toProperty("seqNo")
|
||||
.map(remark1).toProperty("remark1")
|
||||
.map(remark2).toProperty("remark2")
|
||||
.map(remark3).toProperty("remark3")
|
||||
.map(remark4).toProperty("remark4")
|
||||
.map(remark5).toProperty("remark5")
|
||||
.map(createBy).toProperty("createBy")
|
||||
.map(createTime).toProperty("createTime")
|
||||
.map(updateBy).toProperty("updateBy")
|
||||
.map(updateTime).toProperty("updateTime")
|
||||
.map(remark).toProperty("remark")
|
||||
);
|
||||
}
|
||||
|
||||
default int insertSelective(SysSeqResult row) {
|
||||
row.setCommonForInsert(SecurityUtilsExt.getUserIdStr());
|
||||
return MyBatis3Utils.insert(this::insert, row, sysSeqResult, c ->
|
||||
c.map(seqId).toPropertyWhenPresent("seqId", row::getSeqId)
|
||||
.map(seqDistCd).toPropertyWhenPresent("seqDistCd", row::getSeqDistCd)
|
||||
.map(prefix).toPropertyWhenPresent("prefix", row::getPrefix)
|
||||
.map(separator1).toPropertyWhenPresent("separator1", row::getSeparator1)
|
||||
.map(dateVal).toPropertyWhenPresent("dateVal", row::getDateVal)
|
||||
.map(separator2).toPropertyWhenPresent("separator2", row::getSeparator2)
|
||||
.map(seqNo).toPropertyWhenPresent("seqNo", row::getSeqNo)
|
||||
.map(remark1).toPropertyWhenPresent("remark1", row::getRemark1)
|
||||
.map(remark2).toPropertyWhenPresent("remark2", row::getRemark2)
|
||||
.map(remark3).toPropertyWhenPresent("remark3", row::getRemark3)
|
||||
.map(remark4).toPropertyWhenPresent("remark4", row::getRemark4)
|
||||
.map(remark5).toPropertyWhenPresent("remark5", row::getRemark5)
|
||||
.map(createBy).toPropertyWhenPresent("createBy", row::getCreateBy)
|
||||
.map(createTime).toPropertyWhenPresent("createTime", row::getCreateTime)
|
||||
.map(updateBy).toPropertyWhenPresent("updateBy", row::getUpdateBy)
|
||||
.map(updateTime).toPropertyWhenPresent("updateTime", row::getUpdateTime)
|
||||
.map(remark).toPropertyWhenPresent("remark", row::getRemark)
|
||||
);
|
||||
}
|
||||
|
||||
default Optional<SysSeqResult> selectOne(SelectDSLCompleter completer) {
|
||||
return MyBatis3Utils.selectOne(this::selectOne, selectList, sysSeqResult, completer);
|
||||
}
|
||||
|
||||
default List<SysSeqResult> select(SelectDSLCompleter completer) {
|
||||
return MyBatis3Utils.selectList(this::selectMany, selectList, sysSeqResult, completer);
|
||||
}
|
||||
|
||||
default List<SysSeqResult> selectDistinct(SelectDSLCompleter completer) {
|
||||
return MyBatis3Utils.selectDistinct(this::selectMany, selectList, sysSeqResult, completer);
|
||||
}
|
||||
|
||||
default Optional<SysSeqResult> selectByPrimaryKey(Long seqId_) {
|
||||
return selectOne(c ->
|
||||
c.where(seqId, isEqualTo(seqId_))
|
||||
);
|
||||
}
|
||||
|
||||
default int update(UpdateDSLCompleter completer) {
|
||||
return MyBatis3Utils.update(this::update, sysSeqResult, completer);
|
||||
}
|
||||
|
||||
static UpdateDSL<UpdateModel> updateAllColumns(SysSeqResult row, UpdateDSL<UpdateModel> dsl) {
|
||||
return dsl.set(seqId).equalTo(row::getSeqId)
|
||||
.set(seqDistCd).equalTo(row::getSeqDistCd)
|
||||
.set(prefix).equalTo(row::getPrefix)
|
||||
.set(separator1).equalTo(row::getSeparator1)
|
||||
.set(dateVal).equalTo(row::getDateVal)
|
||||
.set(separator2).equalTo(row::getSeparator2)
|
||||
.set(seqNo).equalTo(row::getSeqNo)
|
||||
.set(remark1).equalTo(row::getRemark1)
|
||||
.set(remark2).equalTo(row::getRemark2)
|
||||
.set(remark3).equalTo(row::getRemark3)
|
||||
.set(remark4).equalTo(row::getRemark4)
|
||||
.set(remark5).equalTo(row::getRemark5)
|
||||
.set(createBy).equalTo(row::getCreateBy)
|
||||
.set(createTime).equalTo(row::getCreateTime)
|
||||
.set(updateBy).equalTo(row::getUpdateBy)
|
||||
.set(updateTime).equalTo(row::getUpdateTime)
|
||||
.set(remark).equalTo(row::getRemark);
|
||||
}
|
||||
|
||||
static UpdateDSL<UpdateModel> updateSelectiveColumns(SysSeqResult row, UpdateDSL<UpdateModel> dsl) {
|
||||
row.setCommonForUpdate(SecurityUtilsExt.getUserIdStr());
|
||||
return dsl.set(seqId).equalToWhenPresent(row::getSeqId)
|
||||
.set(seqDistCd).equalToWhenPresent(row::getSeqDistCd)
|
||||
.set(prefix).equalToWhenPresent(row::getPrefix)
|
||||
.set(separator1).equalToWhenPresent(row::getSeparator1)
|
||||
.set(dateVal).equalToWhenPresent(row::getDateVal)
|
||||
.set(separator2).equalToWhenPresent(row::getSeparator2)
|
||||
.set(seqNo).equalToWhenPresent(row::getSeqNo)
|
||||
.set(remark1).equalToWhenPresent(row::getRemark1)
|
||||
.set(remark2).equalToWhenPresent(row::getRemark2)
|
||||
.set(remark3).equalToWhenPresent(row::getRemark3)
|
||||
.set(remark4).equalToWhenPresent(row::getRemark4)
|
||||
.set(remark5).equalToWhenPresent(row::getRemark5)
|
||||
.set(createBy).equalToWhenPresent(row::getCreateBy)
|
||||
.set(createTime).equalToWhenPresent(row::getCreateTime)
|
||||
.set(updateBy).equalToWhenPresent(row::getUpdateBy)
|
||||
.set(updateTime).equalToWhenPresent(row::getUpdateTime)
|
||||
.set(remark).equalToWhenPresent(row::getRemark);
|
||||
}
|
||||
|
||||
default int updateByPrimaryKey(SysSeqResult row) {
|
||||
return update(c ->
|
||||
c.set(seqDistCd).equalTo(row::getSeqDistCd)
|
||||
.set(prefix).equalTo(row::getPrefix)
|
||||
.set(separator1).equalTo(row::getSeparator1)
|
||||
.set(dateVal).equalTo(row::getDateVal)
|
||||
.set(separator2).equalTo(row::getSeparator2)
|
||||
.set(seqNo).equalTo(row::getSeqNo)
|
||||
.set(remark1).equalTo(row::getRemark1)
|
||||
.set(remark2).equalTo(row::getRemark2)
|
||||
.set(remark3).equalTo(row::getRemark3)
|
||||
.set(remark4).equalTo(row::getRemark4)
|
||||
.set(remark5).equalTo(row::getRemark5)
|
||||
.set(createBy).equalTo(row::getCreateBy)
|
||||
.set(createTime).equalTo(row::getCreateTime)
|
||||
.set(updateBy).equalTo(row::getUpdateBy)
|
||||
.set(updateTime).equalTo(row::getUpdateTime)
|
||||
.set(remark).equalTo(row::getRemark)
|
||||
.where(seqId, isEqualTo(row::getSeqId))
|
||||
);
|
||||
}
|
||||
|
||||
default int updateByPrimaryKeySelective(SysSeqResult row) {
|
||||
row.setCommonForUpdate(SecurityUtilsExt.getUserIdStr());
|
||||
return update(c ->
|
||||
c.set(seqDistCd).equalToWhenPresent(row::getSeqDistCd)
|
||||
.set(prefix).equalToWhenPresent(row::getPrefix)
|
||||
.set(separator1).equalToWhenPresent(row::getSeparator1)
|
||||
.set(dateVal).equalToWhenPresent(row::getDateVal)
|
||||
.set(separator2).equalToWhenPresent(row::getSeparator2)
|
||||
.set(seqNo).equalToWhenPresent(row::getSeqNo)
|
||||
.set(remark1).equalToWhenPresent(row::getRemark1)
|
||||
.set(remark2).equalToWhenPresent(row::getRemark2)
|
||||
.set(remark3).equalToWhenPresent(row::getRemark3)
|
||||
.set(remark4).equalToWhenPresent(row::getRemark4)
|
||||
.set(remark5).equalToWhenPresent(row::getRemark5)
|
||||
.set(createBy).equalToWhenPresent(row::getCreateBy)
|
||||
.set(createTime).equalToWhenPresent(row::getCreateTime)
|
||||
.set(updateBy).equalToWhenPresent(row::getUpdateBy)
|
||||
.set(updateTime).equalToWhenPresent(row::getUpdateTime)
|
||||
.set(remark).equalToWhenPresent(row::getRemark)
|
||||
.where(seqId, isEqualTo(row::getSeqId))
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
package com.ruoyi.common.services.mapper;
|
||||
|
||||
import java.sql.JDBCType;
|
||||
import java.util.Date;
|
||||
import org.mybatis.dynamic.sql.AliasableSqlTable;
|
||||
import org.mybatis.dynamic.sql.SqlColumn;
|
||||
|
||||
public final class SysSeqRuleDynamicSqlSupport {
|
||||
public static final SysSeqRule sysSeqRule = new SysSeqRule();
|
||||
|
||||
/**
|
||||
* 规则ID
|
||||
*/
|
||||
public static final SqlColumn<Long> ruleId = sysSeqRule.ruleId;
|
||||
|
||||
/**
|
||||
* 序列号识别码
|
||||
*/
|
||||
public static final SqlColumn<String> seqDistCd = sysSeqRule.seqDistCd;
|
||||
|
||||
/**
|
||||
* 规则名称
|
||||
*/
|
||||
public static final SqlColumn<String> ruleName = sysSeqRule.ruleName;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
public static final SqlColumn<String> prefix = sysSeqRule.prefix;
|
||||
|
||||
/**
|
||||
* 分隔符1
|
||||
*/
|
||||
public static final SqlColumn<String> separator1 = sysSeqRule.separator1;
|
||||
|
||||
/**
|
||||
* 日期格式
|
||||
*/
|
||||
public static final SqlColumn<String> dateFormat = sysSeqRule.dateFormat;
|
||||
|
||||
/**
|
||||
* 序列号数字部分的最小位数,不足补0
|
||||
*/
|
||||
public static final SqlColumn<Integer> minDigits = sysSeqRule.minDigits;
|
||||
|
||||
/**
|
||||
* 分隔符2
|
||||
*/
|
||||
public static final SqlColumn<String> separator2 = sysSeqRule.separator2;
|
||||
|
||||
/**
|
||||
* 生成器名称(或类全名),自定义的生成器可忽略前面的规则自行生成
|
||||
*/
|
||||
public static final SqlColumn<String> generatorName = sysSeqRule.generatorName;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
public static final SqlColumn<Integer> enableFlag = sysSeqRule.enableFlag;
|
||||
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
public static final SqlColumn<String> remark1 = sysSeqRule.remark1;
|
||||
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
public static final SqlColumn<String> remark2 = sysSeqRule.remark2;
|
||||
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
public static final SqlColumn<String> remark3 = sysSeqRule.remark3;
|
||||
|
||||
/**
|
||||
* 备注4
|
||||
*/
|
||||
public static final SqlColumn<String> remark4 = sysSeqRule.remark4;
|
||||
|
||||
/**
|
||||
* 备注5
|
||||
*/
|
||||
public static final SqlColumn<String> remark5 = sysSeqRule.remark5;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
public static final SqlColumn<String> createBy = sysSeqRule.createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
public static final SqlColumn<Date> createTime = sysSeqRule.createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
public static final SqlColumn<String> updateBy = sysSeqRule.updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
public static final SqlColumn<Date> updateTime = sysSeqRule.updateTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
public static final SqlColumn<String> remark = sysSeqRule.remark;
|
||||
|
||||
public static final class SysSeqRule extends AliasableSqlTable<SysSeqRule> {
|
||||
public final SqlColumn<Long> ruleId = column("rule_id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<String> seqDistCd = column("seq_dist_cd", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> ruleName = column("rule_name", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> prefix = column("prefix", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> separator1 = column("separator1", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> dateFormat = column("date_format", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Integer> minDigits = column("min_digits", JDBCType.INTEGER);
|
||||
|
||||
public final SqlColumn<String> separator2 = column("separator2", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> generatorName = column("generator_name", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Integer> enableFlag = column("enable_flag", JDBCType.INTEGER);
|
||||
|
||||
public final SqlColumn<String> remark1 = column("remark_1", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark2 = column("remark_2", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark3 = column("remark_3", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark4 = column("remark_4", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> remark5 = column("remark_5", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> createBy = column("create_by", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Date> createTime = column("create_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<String> updateBy = column("update_by", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Date> updateTime = column("update_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<String> remark = column("remark", JDBCType.VARCHAR);
|
||||
|
||||
public SysSeqRule() {
|
||||
super("sys_seq_rule", SysSeqRule::new);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
package com.ruoyi.common.services.mapper;
|
||||
|
||||
import com.ruoyi.common.security.utils.SecurityUtilsExt;
|
||||
import com.ruoyi.common.services.domain.SysSeqRule;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.mybatis.dynamic.sql.BasicColumn;
|
||||
import org.mybatis.dynamic.sql.delete.DeleteDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.select.CountDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.select.SelectDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||
import org.mybatis.dynamic.sql.update.UpdateDSL;
|
||||
import org.mybatis.dynamic.sql.update.UpdateDSLCompleter;
|
||||
import org.mybatis.dynamic.sql.update.UpdateModel;
|
||||
import org.mybatis.dynamic.sql.util.SqlProviderAdapter;
|
||||
import org.mybatis.dynamic.sql.util.mybatis3.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.ruoyi.common.services.mapper.SysSeqRuleDynamicSqlSupport.*;
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||
|
||||
@Mapper
|
||||
public interface SysSeqRuleMapper extends CommonCountMapper, CommonDeleteMapper, CommonInsertMapper<SysSeqRule>, CommonUpdateMapper {
|
||||
BasicColumn[] selectList = BasicColumn.columnList(ruleId, seqDistCd, ruleName, prefix, separator1, dateFormat, minDigits, separator2, generatorName, enableFlag, remark1, remark2, remark3, remark4, remark5, createBy, createTime, updateBy, updateTime, remark);
|
||||
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@Results(id="SysSeqRuleResult", value = {
|
||||
@Result(column="rule_id", property="ruleId", jdbcType=JdbcType.BIGINT, id=true),
|
||||
@Result(column="seq_dist_cd", property="seqDistCd", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="rule_name", property="ruleName", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="prefix", property="prefix", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="separator1", property="separator1", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="date_format", property="dateFormat", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="min_digits", property="minDigits", jdbcType=JdbcType.INTEGER),
|
||||
@Result(column="separator2", property="separator2", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="generator_name", property="generatorName", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="enable_flag", property="enableFlag", jdbcType=JdbcType.INTEGER),
|
||||
@Result(column="remark_1", property="remark1", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_2", property="remark2", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_3", property="remark3", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_4", property="remark4", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="remark_5", property="remark5", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="create_by", property="createBy", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="update_by", property="updateBy", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="remark", property="remark", jdbcType=JdbcType.VARCHAR)
|
||||
})
|
||||
List<SysSeqRule> selectMany(SelectStatementProvider selectStatement);
|
||||
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@ResultMap("SysSeqRuleResult")
|
||||
Optional<SysSeqRule> selectOne(SelectStatementProvider selectStatement);
|
||||
|
||||
default long count(CountDSLCompleter completer) {
|
||||
return MyBatis3Utils.countFrom(this::count, sysSeqRule, completer);
|
||||
}
|
||||
|
||||
default int delete(DeleteDSLCompleter completer) {
|
||||
return MyBatis3Utils.deleteFrom(this::delete, sysSeqRule, completer);
|
||||
}
|
||||
|
||||
default int deleteByPrimaryKey(Long ruleId_) {
|
||||
return delete(c ->
|
||||
c.where(ruleId, isEqualTo(ruleId_))
|
||||
);
|
||||
}
|
||||
|
||||
default int insert(SysSeqRule row) {
|
||||
row.setCommonForInsert(SecurityUtilsExt.getUserIdStr());
|
||||
return MyBatis3Utils.insert(this::insert, row, sysSeqRule, c ->
|
||||
c.map(ruleId).toProperty("ruleId")
|
||||
.map(seqDistCd).toProperty("seqDistCd")
|
||||
.map(ruleName).toProperty("ruleName")
|
||||
.map(prefix).toProperty("prefix")
|
||||
.map(separator1).toProperty("separator1")
|
||||
.map(dateFormat).toProperty("dateFormat")
|
||||
.map(minDigits).toProperty("minDigits")
|
||||
.map(separator2).toProperty("separator2")
|
||||
.map(generatorName).toProperty("generatorName")
|
||||
.map(enableFlag).toProperty("enableFlag")
|
||||
.map(remark1).toProperty("remark1")
|
||||
.map(remark2).toProperty("remark2")
|
||||
.map(remark3).toProperty("remark3")
|
||||
.map(remark4).toProperty("remark4")
|
||||
.map(remark5).toProperty("remark5")
|
||||
.map(createBy).toProperty("createBy")
|
||||
.map(createTime).toProperty("createTime")
|
||||
.map(updateBy).toProperty("updateBy")
|
||||
.map(updateTime).toProperty("updateTime")
|
||||
.map(remark).toProperty("remark")
|
||||
);
|
||||
}
|
||||
|
||||
default int insertMultiple(Collection<SysSeqRule> records) {
|
||||
for (SysSeqRule row : records) {
|
||||
row.setCommonForInsert(SecurityUtilsExt.getUserIdStr());
|
||||
}
|
||||
return MyBatis3Utils.insertMultiple(this::insertMultiple, records, sysSeqRule, c ->
|
||||
c.map(ruleId).toProperty("ruleId")
|
||||
.map(seqDistCd).toProperty("seqDistCd")
|
||||
.map(ruleName).toProperty("ruleName")
|
||||
.map(prefix).toProperty("prefix")
|
||||
.map(separator1).toProperty("separator1")
|
||||
.map(dateFormat).toProperty("dateFormat")
|
||||
.map(minDigits).toProperty("minDigits")
|
||||
.map(separator2).toProperty("separator2")
|
||||
.map(generatorName).toProperty("generatorName")
|
||||
.map(enableFlag).toProperty("enableFlag")
|
||||
.map(remark1).toProperty("remark1")
|
||||
.map(remark2).toProperty("remark2")
|
||||
.map(remark3).toProperty("remark3")
|
||||
.map(remark4).toProperty("remark4")
|
||||
.map(remark5).toProperty("remark5")
|
||||
.map(createBy).toProperty("createBy")
|
||||
.map(createTime).toProperty("createTime")
|
||||
.map(updateBy).toProperty("updateBy")
|
||||
.map(updateTime).toProperty("updateTime")
|
||||
.map(remark).toProperty("remark")
|
||||
);
|
||||
}
|
||||
|
||||
default int insertSelective(SysSeqRule row) {
|
||||
row.setCommonForInsert(SecurityUtilsExt.getUserIdStr());
|
||||
return MyBatis3Utils.insert(this::insert, row, sysSeqRule, c ->
|
||||
c.map(ruleId).toPropertyWhenPresent("ruleId", row::getRuleId)
|
||||
.map(seqDistCd).toPropertyWhenPresent("seqDistCd", row::getSeqDistCd)
|
||||
.map(ruleName).toPropertyWhenPresent("ruleName", row::getRuleName)
|
||||
.map(prefix).toPropertyWhenPresent("prefix", row::getPrefix)
|
||||
.map(separator1).toPropertyWhenPresent("separator1", row::getSeparator1)
|
||||
.map(dateFormat).toPropertyWhenPresent("dateFormat", row::getDateFormat)
|
||||
.map(minDigits).toPropertyWhenPresent("minDigits", row::getMinDigits)
|
||||
.map(separator2).toPropertyWhenPresent("separator2", row::getSeparator2)
|
||||
.map(generatorName).toPropertyWhenPresent("generatorName", row::getGeneratorName)
|
||||
.map(enableFlag).toPropertyWhenPresent("enableFlag", row::getEnableFlag)
|
||||
.map(remark1).toPropertyWhenPresent("remark1", row::getRemark1)
|
||||
.map(remark2).toPropertyWhenPresent("remark2", row::getRemark2)
|
||||
.map(remark3).toPropertyWhenPresent("remark3", row::getRemark3)
|
||||
.map(remark4).toPropertyWhenPresent("remark4", row::getRemark4)
|
||||
.map(remark5).toPropertyWhenPresent("remark5", row::getRemark5)
|
||||
.map(createBy).toPropertyWhenPresent("createBy", row::getCreateBy)
|
||||
.map(createTime).toPropertyWhenPresent("createTime", row::getCreateTime)
|
||||
.map(updateBy).toPropertyWhenPresent("updateBy", row::getUpdateBy)
|
||||
.map(updateTime).toPropertyWhenPresent("updateTime", row::getUpdateTime)
|
||||
.map(remark).toPropertyWhenPresent("remark", row::getRemark)
|
||||
);
|
||||
}
|
||||
|
||||
default Optional<SysSeqRule> selectOne(SelectDSLCompleter completer) {
|
||||
return MyBatis3Utils.selectOne(this::selectOne, selectList, sysSeqRule, completer);
|
||||
}
|
||||
|
||||
default List<SysSeqRule> select(SelectDSLCompleter completer) {
|
||||
return MyBatis3Utils.selectList(this::selectMany, selectList, sysSeqRule, completer);
|
||||
}
|
||||
|
||||
default List<SysSeqRule> selectDistinct(SelectDSLCompleter completer) {
|
||||
return MyBatis3Utils.selectDistinct(this::selectMany, selectList, sysSeqRule, completer);
|
||||
}
|
||||
|
||||
default Optional<SysSeqRule> selectByPrimaryKey(Long ruleId_) {
|
||||
return selectOne(c ->
|
||||
c.where(ruleId, isEqualTo(ruleId_))
|
||||
);
|
||||
}
|
||||
|
||||
default int update(UpdateDSLCompleter completer) {
|
||||
return MyBatis3Utils.update(this::update, sysSeqRule, completer);
|
||||
}
|
||||
|
||||
static UpdateDSL<UpdateModel> updateAllColumns(SysSeqRule row, UpdateDSL<UpdateModel> dsl) {
|
||||
return dsl.set(ruleId).equalTo(row::getRuleId)
|
||||
.set(seqDistCd).equalTo(row::getSeqDistCd)
|
||||
.set(ruleName).equalTo(row::getRuleName)
|
||||
.set(prefix).equalTo(row::getPrefix)
|
||||
.set(separator1).equalTo(row::getSeparator1)
|
||||
.set(dateFormat).equalTo(row::getDateFormat)
|
||||
.set(minDigits).equalTo(row::getMinDigits)
|
||||
.set(separator2).equalTo(row::getSeparator2)
|
||||
.set(generatorName).equalTo(row::getGeneratorName)
|
||||
.set(enableFlag).equalTo(row::getEnableFlag)
|
||||
.set(remark1).equalTo(row::getRemark1)
|
||||
.set(remark2).equalTo(row::getRemark2)
|
||||
.set(remark3).equalTo(row::getRemark3)
|
||||
.set(remark4).equalTo(row::getRemark4)
|
||||
.set(remark5).equalTo(row::getRemark5)
|
||||
.set(createBy).equalTo(row::getCreateBy)
|
||||
.set(createTime).equalTo(row::getCreateTime)
|
||||
.set(updateBy).equalTo(row::getUpdateBy)
|
||||
.set(updateTime).equalTo(row::getUpdateTime)
|
||||
.set(remark).equalTo(row::getRemark);
|
||||
}
|
||||
|
||||
static UpdateDSL<UpdateModel> updateSelectiveColumns(SysSeqRule row, UpdateDSL<UpdateModel> dsl) {
|
||||
row.setCommonForUpdate(SecurityUtilsExt.getUserIdStr());
|
||||
return dsl.set(ruleId).equalToWhenPresent(row::getRuleId)
|
||||
.set(seqDistCd).equalToWhenPresent(row::getSeqDistCd)
|
||||
.set(ruleName).equalToWhenPresent(row::getRuleName)
|
||||
.set(prefix).equalToWhenPresent(row::getPrefix)
|
||||
.set(separator1).equalToWhenPresent(row::getSeparator1)
|
||||
.set(dateFormat).equalToWhenPresent(row::getDateFormat)
|
||||
.set(minDigits).equalToWhenPresent(row::getMinDigits)
|
||||
.set(separator2).equalToWhenPresent(row::getSeparator2)
|
||||
.set(generatorName).equalToWhenPresent(row::getGeneratorName)
|
||||
.set(enableFlag).equalToWhenPresent(row::getEnableFlag)
|
||||
.set(remark1).equalToWhenPresent(row::getRemark1)
|
||||
.set(remark2).equalToWhenPresent(row::getRemark2)
|
||||
.set(remark3).equalToWhenPresent(row::getRemark3)
|
||||
.set(remark4).equalToWhenPresent(row::getRemark4)
|
||||
.set(remark5).equalToWhenPresent(row::getRemark5)
|
||||
.set(createBy).equalToWhenPresent(row::getCreateBy)
|
||||
.set(createTime).equalToWhenPresent(row::getCreateTime)
|
||||
.set(updateBy).equalToWhenPresent(row::getUpdateBy)
|
||||
.set(updateTime).equalToWhenPresent(row::getUpdateTime)
|
||||
.set(remark).equalToWhenPresent(row::getRemark);
|
||||
}
|
||||
|
||||
default int updateByPrimaryKey(SysSeqRule row) {
|
||||
return update(c ->
|
||||
c.set(seqDistCd).equalTo(row::getSeqDistCd)
|
||||
.set(ruleName).equalTo(row::getRuleName)
|
||||
.set(prefix).equalTo(row::getPrefix)
|
||||
.set(separator1).equalTo(row::getSeparator1)
|
||||
.set(dateFormat).equalTo(row::getDateFormat)
|
||||
.set(minDigits).equalTo(row::getMinDigits)
|
||||
.set(separator2).equalTo(row::getSeparator2)
|
||||
.set(generatorName).equalTo(row::getGeneratorName)
|
||||
.set(enableFlag).equalTo(row::getEnableFlag)
|
||||
.set(remark1).equalTo(row::getRemark1)
|
||||
.set(remark2).equalTo(row::getRemark2)
|
||||
.set(remark3).equalTo(row::getRemark3)
|
||||
.set(remark4).equalTo(row::getRemark4)
|
||||
.set(remark5).equalTo(row::getRemark5)
|
||||
.set(createBy).equalTo(row::getCreateBy)
|
||||
.set(createTime).equalTo(row::getCreateTime)
|
||||
.set(updateBy).equalTo(row::getUpdateBy)
|
||||
.set(updateTime).equalTo(row::getUpdateTime)
|
||||
.set(remark).equalTo(row::getRemark)
|
||||
.where(ruleId, isEqualTo(row::getRuleId))
|
||||
);
|
||||
}
|
||||
|
||||
default int updateByPrimaryKeySelective(SysSeqRule row) {
|
||||
row.setCommonForUpdate(SecurityUtilsExt.getUserIdStr());
|
||||
return update(c ->
|
||||
c.set(seqDistCd).equalToWhenPresent(row::getSeqDistCd)
|
||||
.set(ruleName).equalToWhenPresent(row::getRuleName)
|
||||
.set(prefix).equalToWhenPresent(row::getPrefix)
|
||||
.set(separator1).equalToWhenPresent(row::getSeparator1)
|
||||
.set(dateFormat).equalToWhenPresent(row::getDateFormat)
|
||||
.set(minDigits).equalToWhenPresent(row::getMinDigits)
|
||||
.set(separator2).equalToWhenPresent(row::getSeparator2)
|
||||
.set(generatorName).equalToWhenPresent(row::getGeneratorName)
|
||||
.set(enableFlag).equalToWhenPresent(row::getEnableFlag)
|
||||
.set(remark1).equalToWhenPresent(row::getRemark1)
|
||||
.set(remark2).equalToWhenPresent(row::getRemark2)
|
||||
.set(remark3).equalToWhenPresent(row::getRemark3)
|
||||
.set(remark4).equalToWhenPresent(row::getRemark4)
|
||||
.set(remark5).equalToWhenPresent(row::getRemark5)
|
||||
.set(createBy).equalToWhenPresent(row::getCreateBy)
|
||||
.set(createTime).equalToWhenPresent(row::getCreateTime)
|
||||
.set(updateBy).equalToWhenPresent(row::getUpdateBy)
|
||||
.set(updateTime).equalToWhenPresent(row::getUpdateTime)
|
||||
.set(remark).equalToWhenPresent(row::getRemark)
|
||||
.where(ruleId, isEqualTo(row::getRuleId))
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.common.services.mapper;
|
||||
|
||||
import com.ruoyi.common.services.domain.vo.SeqVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/18
|
||||
*/
|
||||
public interface SysSequenceExtMapper {
|
||||
|
||||
SeqVo selectMaxSeq(@Param("seqDistCd") String seqDistCd);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.ruoyi.common.services.sequence;
|
||||
|
||||
import com.ruoyi.common.core.utils.DateUtils;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.services.domain.vo.SeqGenResult;
|
||||
import com.ruoyi.common.services.domain.vo.SeqVo;
|
||||
import jakarta.annotation.Nonnull;
|
||||
import jakarta.annotation.Nullable;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 默认的序列号生成器
|
||||
*
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/19
|
||||
*/
|
||||
public class DefaultSequenceGenerator implements ISequenceGenerator{
|
||||
|
||||
@Override
|
||||
public SeqGenResult nextSequenceGen(@Nonnull SeqVo param, @Nullable Date date) {
|
||||
SeqGenResult result = new SeqGenResult();
|
||||
StringBuilder seq = new StringBuilder();
|
||||
result.setSeqDistCd(param.getSeqDistCd());
|
||||
|
||||
//前缀
|
||||
seq.append(param.getPrefix());
|
||||
result.setPrefix(param.getPrefix());
|
||||
//分隔符1
|
||||
if (param.getSeparator1() != null) {
|
||||
seq.append(param.getSeparator1());
|
||||
result.setSeparator1(param.getSeparator1());
|
||||
}
|
||||
//日期
|
||||
if (StringUtils.isNotBlank(param.getDateFormat())) {
|
||||
if (date == null) {
|
||||
date = new Date();
|
||||
}
|
||||
String dateVal = DateUtils.parseDateToStr(param.getDateFormat(), date);
|
||||
seq.append(dateVal);
|
||||
result.setDateVal(dateVal);
|
||||
//日期值相同,update。否则insert
|
||||
if (dateVal.equals(param.getDateVal())) {
|
||||
result.setSeqId(param.getSeqId());
|
||||
}
|
||||
} else {
|
||||
//没有日期值,直接根据查询出的seqId判断是insert还是update
|
||||
result.setSeqId(param.getSeqId());
|
||||
}
|
||||
//分隔符2
|
||||
if (param.getSeparator2() != null) {
|
||||
seq.append(param.getSeparator2());
|
||||
result.setSeparator2(param.getSeparator2());
|
||||
}
|
||||
//数字序号
|
||||
int nextSeqNo = (param.getSeqNo() == null ? 0 : param.getSeqNo()) + 1;
|
||||
if (param.getMinDigits() != null && param.getMinDigits() > 0) {
|
||||
seq.append(String.format("%0" + param.getMinDigits() + "d", nextSeqNo));
|
||||
} else {
|
||||
seq.append(nextSeqNo);
|
||||
}
|
||||
result.setSeqNo(nextSeqNo);
|
||||
result.setSequenceResult(seq.toString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.ruoyi.common.services.sequence;
|
||||
|
||||
import com.ruoyi.common.services.domain.vo.SeqGenResult;
|
||||
import com.ruoyi.common.services.domain.vo.SeqVo;
|
||||
import jakarta.annotation.Nonnull;
|
||||
import jakarta.annotation.Nullable;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 序列号生成的实现接口
|
||||
*
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/18
|
||||
*/
|
||||
public interface ISequenceGenerator {
|
||||
|
||||
/**
|
||||
* 获取下一个序列号
|
||||
*
|
||||
* @param param 规则参数
|
||||
* @param date 给定的日期(为空则使用当前日期)
|
||||
*/
|
||||
SeqGenResult nextSequenceGen(@Nonnull SeqVo param, @Nullable Date date);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.ruoyi.common.services.sequence;
|
||||
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import lombok.Getter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 序列号生成器配置
|
||||
*
|
||||
* @author Alan Scipio
|
||||
* created on 2024/2/19
|
||||
*/
|
||||
@Getter
|
||||
@Component
|
||||
public class SequenceConfig {
|
||||
|
||||
private final Map<String, ISequenceGenerator> generatorMap = new HashMap<>();
|
||||
|
||||
public SequenceConfig() {
|
||||
registerGenerator(new DefaultSequenceGenerator());
|
||||
}
|
||||
|
||||
public void registerGenerator(ISequenceGenerator generator) {
|
||||
if (generator == null) {
|
||||
throw new IllegalArgumentException("generator can not be null");
|
||||
}
|
||||
generatorMap.put(generator.getClass().getName(), generator);
|
||||
}
|
||||
|
||||
public ISequenceGenerator getGenerator(String generatorName) {
|
||||
return generatorMap.get(generatorName);
|
||||
}
|
||||
|
||||
public ISequenceGenerator getOrCreateGenerator(String generatorName) {
|
||||
if (StringUtils.isBlank(generatorName)) {
|
||||
throw new IllegalArgumentException("generatorName can not be blank");
|
||||
}
|
||||
return generatorMap.computeIfAbsent(generatorName, name -> {
|
||||
try {
|
||||
ISequenceGenerator generator = (ISequenceGenerator) Class.forName(name).getDeclaredConstructor().newInstance();
|
||||
registerGenerator(generator);
|
||||
return generator;
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("generatorName: [" + name + "] can not be instantiated", e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public ISequenceGenerator getDefaultGenerator() {
|
||||
return generatorMap.get(DefaultSequenceGenerator.class.getName());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user