完成序列号生成功能

pull/362/head
AlanScipio 2 years ago
parent 7a257eb264
commit a327ff26ba

@ -222,6 +222,13 @@
<version>${ruoyi.version}</version>
</dependency>
<!-- 共通业务 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-services</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 系统接口 -->
<dependency>
<groupId>com.ruoyi</groupId>

@ -17,6 +17,7 @@
<module>ruoyi-common-security</module>
<module>ruoyi-common-datascope</module>
<module>ruoyi-common-datasource</module>
<module>ruoyi-common-services</module>
</modules>
<artifactId>ruoyi-common</artifactId>

@ -0,0 +1,39 @@
package com.ruoyi.common.core.constant;
import java.util.NoSuchElementException;
/**
* @author Alan Scipio
* created on 2024/2/18
*/
public interface IEnum {
int getCode();
String getName();
static IEnum getByCode(IEnum[] enums, int code) {
if (enums == null || enums.length == 0) {
throw new IllegalArgumentException("enums is empty");
}
for (IEnum value : enums) {
if (value.getCode() == code) {
return value;
}
}
throw new NoSuchElementException("No such enum with code: [" + code + "], enum type: [" + enums[0].getClass().getName() + "]");
}
static IEnum getByName(IEnum[] enums, String name) {
if (enums == null || enums.length == 0) {
throw new IllegalArgumentException("enums is empty");
}
for (IEnum value : enums) {
if (value.getName().equals(name)) {
return value;
}
}
throw new NoSuchElementException("No such enum with name: [" + name + "], enum type: [" + enums[0].getClass().getName() + "]");
}
}

@ -1,16 +1,17 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class CaptchaException extends RuntimeException
{
public class CaptchaException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
public CaptchaException(String msg)
{
public CaptchaException(String msg) {
super(msg);
}
}

@ -1,31 +1,29 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class CheckedException extends RuntimeException
{
public class CheckedException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
public CheckedException(String message)
{
public CheckedException(String message) {
super(message);
}
public CheckedException(Throwable cause)
{
public CheckedException(Throwable cause) {
super(cause);
}
public CheckedException(String message, Throwable cause)
{
public CheckedException(String message, Throwable cause) {
super(message, cause);
}
public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
{
public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}

@ -1,15 +1,16 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class DemoModeException extends RuntimeException
{
public class DemoModeException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
public DemoModeException()
{
public DemoModeException() {
}
}

@ -1,12 +1,14 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class GlobalException extends RuntimeException
{
public class GlobalException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
/**
@ -16,42 +18,34 @@ public class GlobalException extends RuntimeException
/**
*
*
* {@link CommonResult#getDetailMessage()}
*/
private String detailMessage;
/**
*
*/
public GlobalException()
{
public GlobalException() {
}
public GlobalException(String message)
{
public GlobalException(String message) {
this.message = message;
}
public String getDetailMessage()
{
public String getDetailMessage() {
return detailMessage;
}
public GlobalException setDetailMessage(String detailMessage)
{
public GlobalException setDetailMessage(String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
@Override
public String getMessage()
{
public String getMessage() {
return message;
}
public GlobalException setMessage(String message)
{
public GlobalException setMessage(String message) {
this.message = message;
return this;
}

@ -1,16 +1,17 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class InnerAuthException extends RuntimeException
{
public class InnerAuthException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
public InnerAuthException(String message)
{
public InnerAuthException(String message) {
super(message);
}
}

@ -0,0 +1,34 @@
package com.ruoyi.common.core.exception;
import com.ruoyi.common.core.exception.base.BaseException;
import java.io.Serial;
/**
* @author Alan Scipio
* created on 2024/2/19
*/
public class NoSuchDataException extends BaseException {
@Serial
private static final long serialVersionUID = 1L;
public NoSuchDataException(String module, String code, Object[] args, String defaultMessage) {
super(module, code, args, defaultMessage);
}
public NoSuchDataException(String module, String code, Object[] args) {
super(module, code, args);
}
public NoSuchDataException(String module, String defaultMessage) {
super(module, defaultMessage);
}
public NoSuchDataException(String code, Object[] args) {
super(code, args);
}
public NoSuchDataException(String defaultMessage) {
super(defaultMessage);
}
}

@ -1,15 +1,16 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class PreAuthorizeException extends RuntimeException
{
public class PreAuthorizeException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
public PreAuthorizeException()
{
public PreAuthorizeException() {
}
}

@ -1,12 +1,14 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public final class ServiceException extends RuntimeException
{
public final class ServiceException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
/**
@ -21,53 +23,43 @@ public final class ServiceException extends RuntimeException
/**
*
*
* {@link CommonResult#getDetailMessage()}
*/
private String detailMessage;
/**
*
*/
public ServiceException()
{
public ServiceException() {
}
public ServiceException(String message)
{
public ServiceException(String message) {
this.message = message;
}
public ServiceException(String message, Integer code)
{
public ServiceException(String message, Integer code) {
this.message = message;
this.code = code;
}
public String getDetailMessage()
{
public String getDetailMessage() {
return detailMessage;
}
@Override
public String getMessage()
{
public String getMessage() {
return message;
}
public Integer getCode()
{
public Integer getCode() {
return code;
}
public ServiceException setMessage(String message)
{
public ServiceException setMessage(String message) {
this.message = message;
return this;
}
public ServiceException setDetailMessage(String detailMessage)
{
public ServiceException setDetailMessage(String detailMessage) {
this.detailMessage = detailMessage;
return this;
}

@ -1,26 +1,25 @@
package com.ruoyi.common.core.exception;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class UtilException extends RuntimeException
{
public class UtilException extends RuntimeException {
@Serial
private static final long serialVersionUID = 8247610319171014183L;
public UtilException(Throwable e)
{
public UtilException(Throwable e) {
super(e.getMessage(), e);
}
public UtilException(String message)
{
public UtilException(String message) {
super(message);
}
public UtilException(String message, Throwable throwable)
{
public UtilException(String message, Throwable throwable) {
super(message, throwable);
}
}

@ -14,22 +14,22 @@ public class BaseException extends RuntimeException {
/**
*
*/
private final String module;
protected final String module;
/**
*
*/
private final String code;
protected final String code;
/**
*
*/
private final Object[] args;
protected final Object[] args;
/**
*
*/
private final String defaultMessage;
protected final String defaultMessage;
public BaseException(String module, String code, Object[] args, String defaultMessage) {
this.module = module;

@ -1,34 +1,37 @@
package com.ruoyi.common.core.exception.job;
import java.io.Serial;
/**
*
*
* @author ruoyi
*/
public class TaskException extends Exception
{
public class TaskException extends Exception {
@Serial
private static final long serialVersionUID = 1L;
private Code code;
private final Code code;
public TaskException(String msg, Code code)
{
public TaskException(String msg, Code code) {
this(msg, code, null);
}
public TaskException(String msg, Code code, Exception nestedEx)
{
public TaskException(String msg, Code code, Exception nestedEx) {
super(msg, nestedEx);
this.code = code;
}
public Code getCode()
{
public Code getCode() {
return code;
}
public enum Code
{
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
public enum Code {
TASK_EXISTS,
NO_TASK_EXISTS,
TASK_ALREADY_STARTED,
UNKNOWN,
CONFIG_ERROR,
TASK_NODE_NOT_AVAILABLE
}
}

@ -23,7 +23,7 @@ public class SnowFlakeIdGenerator {
*/
private static SequenceBuilder defaultBuilder() {
return SequenceBuilder.builder()
.setTwepoch(1657864986440L) //起始时间戳
.setTwepoch(1657864986451L) //起始时间戳
.setTimestampBits(40L) //时间戳的bit位数
.setDatacenterIdBits(1L) //数据中心的bit位数
.setWorkerIdBits(2L) //机器id的bit位数

@ -1,15 +1,13 @@
package com.ruoyi.common.security.utils;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants;
import com.ruoyi.common.core.context.SecurityContextHolder;
import com.ruoyi.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.system.api.model.LoginUser;
import java.util.Objects;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
*
@ -54,13 +52,16 @@ public class SecurityUtils {
* token
*/
public static String getToken() {
return getToken(Objects.requireNonNull(ServletUtils.getRequest()));
return getToken(ServletUtils.getRequest());
}
/**
* requesttoken
*/
public static String getToken(HttpServletRequest request) {
if (request == null) {
return null;
}
// 从header获取token标识
String token = request.getHeader(TokenConstants.AUTHENTICATION);
return replaceTokenPrefix(token);

@ -2,7 +2,6 @@ package com.ruoyi.common.security.utils;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.context.SecurityContextHolder;
import com.ruoyi.common.core.exception.auth.LoginExpiredException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.auth.AuthUtil;
import com.ruoyi.system.api.model.LoginUser;
@ -18,10 +17,7 @@ public class SecurityUtilsExt {
*/
public static Long getUserIdFromRedis() {
LoginUser loginUser = getLoginUserFromRedis();
if (loginUser == null) {
throw new LoginExpiredException("用户登录已过期,请重新登录");
}
return loginUser.getUserid();
return loginUser == null ? null : loginUser.getUserid();
}
public static String getUserIdStr() {
@ -34,8 +30,7 @@ public class SecurityUtilsExt {
*/
public static String getUsernameFromRedis() {
LoginUser loginUser = getLoginUserFromRedis();
assert loginUser != null;
return loginUser.getUsername();
return loginUser == null ? "UNKNOWN" : loginUser.getUsername();
}
/**

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.3</version>
</parent>
<artifactId>ruoyi-common-services</artifactId>
<description>
ruoyi-common-services共通业务
</description>
<dependencies>
<!-- RuoYi Common Security -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-log</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>

@ -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());
}
}

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.common.services.mapper.SysSequenceExtMapper">
<resultMap id="seqResultMap" type="com.ruoyi.common.services.domain.vo.SeqVo">
<result property="ruleId" column="rule_id"/>
<result property="seqDistCd" column="seq_dist_cd"/>
<result property="ruleName" column="rule_name"/>
<result property="prefix" column="prefix"/>
<result property="separator1" column="separator1"/>
<result property="dateFormat" column="date_format"/>
<result property="minDigits" column="min_digits"/>
<result property="separator2" column="separator2"/>
<result property="generatorName" column="generator_name"/>
<result property="enableFlag" column="enable_flag"/>
<result property="seqId" column="seq_id"/>
<result property="dateVal" column="date_val"/>
<result property="seqNo" column="seq_no"/>
</resultMap>
<select id="selectMaxSeq" resultMap="seqResultMap">
select rule.rule_id,
rule.seq_dist_cd,
rule.rule_name,
rule.prefix,
rule.separator1,
rule.date_format,
rule.min_digits,
rule.separator2,
rule.generator_name,
rule.enable_flag,
result.seq_id,
result.date_val,
result.seq_no
from sys_seq_rule rule
left join (
select seq_id,
seq_dist_cd,
date_val,
seq_no
from sys_seq_result
where seq_dist_cd = #{seqDistCd}
order by date_val desc, seq_no desc
limit 1
) result on result.seq_dist_cd = rule.seq_dist_cd
where rule.seq_dist_cd = #{seqDistCd}
</select>
</mapper>

@ -9,6 +9,7 @@ import com.ruoyi.common.core.utils.DateUtils;
#end
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.mybatis.dynamic.sql.where.condition.IsEqualTo;
import org.mybatis.dynamic.sql.where.condition.IsIn;
import org.mybatis.dynamic.sql.SqlBuilder;
@ -18,7 +19,6 @@ import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
#if($table.sub)
import java.util.ArrayList;
import com.ruoyi.common.core.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import ${packageName}.domain.${subClassName};
#end
import com.ruoyi.common.core.web.domain.ExtBaseEntity;
@ -108,9 +108,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int insert${ClassName}(${ClassName} ${className})
{
@ -134,9 +132,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int update${ClassName}(${ClassName} ${className})
{
@ -158,9 +154,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
{
@ -185,9 +179,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{

@ -82,6 +82,12 @@
<artifactId>ruoyi-common-log</artifactId>
</dependency>
<!-- RuoYi Common Services -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-services</artifactId>
</dependency>
<!-- RuoYi Common Swagger -->
<dependency>
<groupId>com.ruoyi</groupId>

@ -1,30 +1,30 @@
package com.ruoyi.system.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.domain.SysMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author ruoyi
*/
public interface SysMenuMapper
{
public interface SysMenuMapper {
/**
*
*
* @param menu
* @return
*/
public List<SysMenu> selectMenuList(SysMenu menu);
List<SysMenu> selectMenuList(SysMenu menu);
/**
*
*
* @return
*/
public List<String> selectMenuPerms();
List<String> selectMenuPerms();
/**
*
@ -32,7 +32,7 @@ public interface SysMenuMapper
* @param menu
* @return
*/
public List<SysMenu> selectMenuListByUserId(SysMenu menu);
List<SysMenu> selectMenuListByUserId(SysMenu menu);
/**
* ID
@ -40,7 +40,7 @@ public interface SysMenuMapper
* @param roleId ID
* @return
*/
public List<String> selectMenuPermsByRoleId(Long roleId);
List<String> selectMenuPermsByRoleId(Long roleId);
/**
* ID
@ -48,14 +48,14 @@ public interface SysMenuMapper
* @param userId ID
* @return
*/
public List<String> selectMenuPermsByUserId(Long userId);
List<String> selectMenuPermsByUserId(Long userId);
/**
* ID
*
* @return
*/
public List<SysMenu> selectMenuTreeAll();
List<SysMenu> selectMenuTreeAll();
/**
* ID
@ -63,7 +63,7 @@ public interface SysMenuMapper
* @param userId ID
* @return
*/
public List<SysMenu> selectMenuTreeByUserId(Long userId);
List<SysMenu> selectMenuTreeByUserId(Long userId);
/**
* ID
@ -72,7 +72,7 @@ public interface SysMenuMapper
* @param menuCheckStrictly
* @return
*/
public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
/**
* ID
@ -80,7 +80,7 @@ public interface SysMenuMapper
* @param menuId ID
* @return
*/
public SysMenu selectMenuById(Long menuId);
SysMenu selectMenuById(Long menuId);
/**
*
@ -88,7 +88,7 @@ public interface SysMenuMapper
* @param menuId ID
* @return
*/
public int hasChildByMenuId(Long menuId);
int hasChildByMenuId(Long menuId);
/**
*
@ -96,7 +96,7 @@ public interface SysMenuMapper
* @param menu
* @return
*/
public int insertMenu(SysMenu menu);
int insertMenu(SysMenu menu);
/**
*
@ -104,7 +104,7 @@ public interface SysMenuMapper
* @param menu
* @return
*/
public int updateMenu(SysMenu menu);
int updateMenu(SysMenu menu);
/**
*
@ -112,7 +112,7 @@ public interface SysMenuMapper
* @param menuId ID
* @return
*/
public int deleteMenuById(Long menuId);
int deleteMenuById(Long menuId);
/**
*
@ -121,5 +121,5 @@ public interface SysMenuMapper
* @param parentId ID
* @return
*/
public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
}

@ -1,22 +1,22 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.SysNotice;
import java.util.List;
/**
*
*
* @author ruoyi
*/
public interface SysNoticeMapper
{
public interface SysNoticeMapper {
/**
*
*
* @param noticeId ID
* @return
*/
public SysNotice selectNoticeById(Long noticeId);
SysNotice selectNoticeById(Long noticeId);
/**
*
@ -24,7 +24,7 @@ public interface SysNoticeMapper
* @param notice
* @return
*/
public List<SysNotice> selectNoticeList(SysNotice notice);
List<SysNotice> selectNoticeList(SysNotice notice);
/**
*
@ -32,7 +32,7 @@ public interface SysNoticeMapper
* @param notice
* @return
*/
public int insertNotice(SysNotice notice);
int insertNotice(SysNotice notice);
/**
*
@ -40,7 +40,7 @@ public interface SysNoticeMapper
* @param notice
* @return
*/
public int updateNotice(SysNotice notice);
int updateNotice(SysNotice notice);
/**
*
@ -48,7 +48,7 @@ public interface SysNoticeMapper
* @param noticeId ID
* @return
*/
public int deleteNoticeById(Long noticeId);
int deleteNoticeById(Long noticeId);
/**
*
@ -56,5 +56,5 @@ public interface SysNoticeMapper
* @param noticeIds ID
* @return
*/
public int deleteNoticeByIds(Long[] noticeIds);
int deleteNoticeByIds(Long[] noticeIds);
}

@ -1,21 +1,21 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.api.domain.SysOperLog;
import java.util.List;
/**
*
*
* @author ruoyi
*/
public interface SysOperLogMapper
{
public interface SysOperLogMapper {
/**
*
*
* @param operLog
*/
public int insertOperlog(SysOperLog operLog);
int insertOperlog(SysOperLog operLog);
/**
*
@ -23,7 +23,7 @@ public interface SysOperLogMapper
* @param operLog
* @return
*/
public List<SysOperLog> selectOperLogList(SysOperLog operLog);
List<SysOperLog> selectOperLogList(SysOperLog operLog);
/**
*
@ -31,7 +31,7 @@ public interface SysOperLogMapper
* @param operIds ID
* @return
*/
public int deleteOperLogByIds(Long[] operIds);
int deleteOperLogByIds(Long[] operIds);
/**
*
@ -39,10 +39,10 @@ public interface SysOperLogMapper
* @param operId ID
* @return
*/
public SysOperLog selectOperLogById(Long operId);
SysOperLog selectOperLogById(Long operId);
/**
*
*/
public void cleanOperLog();
void cleanOperLog();
}

@ -76,6 +76,12 @@
<artifactId>ruoyi-common-log</artifactId>
</dependency>
<!-- 共通业务 -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-services</artifactId>
</dependency>
<!-- Mybatis Generator -->
<dependency>
<groupId>org.mybatis.generator</groupId>

@ -2,19 +2,21 @@ package com.ruoyi.wms.service.impl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.snowflake.SnowFlakeIdGenerator;
import com.ruoyi.common.core.web.domain.ExtBaseEntity;
import com.ruoyi.common.security.utils.SecurityUtilsExt;
import com.ruoyi.common.services.ISysSequenceService;
import com.ruoyi.common.services.constants.SeqType;
import com.ruoyi.wms.domain.GoodsType;
import com.ruoyi.wms.mapper.GoodsTypeDynamicSqlSupport;
import com.ruoyi.wms.mapper.GoodsTypeMapper;
import com.ruoyi.wms.service.IGoodsTypeService;
import jakarta.annotation.Resource;
import org.mybatis.dynamic.sql.SqlBuilder;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@ -27,8 +29,11 @@ import java.util.Optional;
*/
@Service
public class GoodsTypeServiceImpl implements IGoodsTypeService {
@Autowired
@Resource
private GoodsTypeMapper goodsTypeMapper;
@Resource
private ISysSequenceService sequenceService;
/**
*
@ -67,10 +72,12 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService {
* @param goodsType
* @return
*/
@Transactional
@Override
public int insertGoodsType(GoodsType goodsType) {
if (StringUtils.isBlank(goodsType.getGoodsTypeCd())) {
goodsType.setGoodsTypeCd(SnowFlakeIdGenerator.nextId());
String goodsTypeCd = sequenceService.getNextSequence(SeqType.GOODE_TYPE_CD);
goodsType.setGoodsTypeCd(goodsTypeCd);
}
return goodsTypeMapper.insertSelective(goodsType);
}
@ -81,6 +88,7 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService {
* @param goodsType
* @return
*/
@Transactional
@Override
public int updateGoodsType(GoodsType goodsType) {
return goodsTypeMapper.updateByPrimaryKeySelective(goodsType);
@ -92,6 +100,7 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService {
* @param goodsTypeCds
* @return
*/
@Transactional
@Override
public int deleteGoodsTypeByGoodsTypeCds(String[] goodsTypeCds) {
String userId = SecurityUtilsExt.getUserIdStr();
@ -111,6 +120,7 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService {
* @param goodsTypeCd
* @return
*/
@Transactional
@Override
public int deleteGoodsTypeByGoodsTypeCd(String goodsTypeCd) {
GoodsType record = new GoodsType();

@ -2,18 +2,19 @@ package com.ruoyi.wms.service.impl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.snowflake.SnowFlakeIdGenerator;
import com.ruoyi.common.core.web.domain.ExtBaseEntity;
import com.ruoyi.common.security.utils.SecurityUtilsExt;
import com.ruoyi.common.services.ISysSequenceService;
import com.ruoyi.common.services.constants.SeqType;
import com.ruoyi.wms.domain.UnitInfo;
import com.ruoyi.wms.mapper.UnitInfoDynamicSqlSupport;
import com.ruoyi.wms.mapper.UnitInfoMapper;
import com.ruoyi.wms.service.IUnitInfoService;
import jakarta.annotation.Resource;
import org.mybatis.dynamic.sql.SqlBuilder;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ -27,8 +28,11 @@ import java.util.Optional;
*/
@Service
public class UnitInfoServiceImpl implements IUnitInfoService {
@Autowired
@Resource
private UnitInfoMapper unitInfoMapper;
@Resource
private ISysSequenceService sequenceService;
/**
*
@ -69,7 +73,8 @@ public class UnitInfoServiceImpl implements IUnitInfoService {
@Override
public int insertUnitInfo(UnitInfo unitInfo) {
if (StringUtils.isBlank(unitInfo.getUnitCode())) {
unitInfo.setUnitCode(SnowFlakeIdGenerator.nextId());
String unitCode = sequenceService.getNextSequence(SeqType.UNIT_CD);
unitInfo.setUnitCode(unitCode);
}
return unitInfoMapper.insertSelective(unitInfo);
}

@ -2,18 +2,19 @@ package com.ruoyi.wms.service.impl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.snowflake.SnowFlakeIdGenerator;
import com.ruoyi.common.core.web.domain.ExtBaseEntity;
import com.ruoyi.common.security.utils.SecurityUtilsExt;
import com.ruoyi.common.services.ISysSequenceService;
import com.ruoyi.common.services.constants.SeqType;
import com.ruoyi.wms.domain.WarehouseInfo;
import com.ruoyi.wms.mapper.WarehouseInfoDynamicSqlSupport;
import com.ruoyi.wms.mapper.WarehouseInfoMapper;
import com.ruoyi.wms.service.IWarehouseInfoService;
import jakarta.annotation.Resource;
import org.mybatis.dynamic.sql.SqlBuilder;
import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ -27,8 +28,11 @@ import java.util.Optional;
*/
@Service
public class WarehouseInfoServiceImpl implements IWarehouseInfoService {
@Autowired
@Resource
private WarehouseInfoMapper warehouseInfoMapper;
@Resource
private ISysSequenceService sequenceService;
/**
*
@ -69,7 +73,8 @@ public class WarehouseInfoServiceImpl implements IWarehouseInfoService {
@Override
public int insertWarehouseInfo(WarehouseInfo warehouseInfo) {
if (StringUtils.isBlank(warehouseInfo.getWhsCd())) {
warehouseInfo.setWhsCd(SnowFlakeIdGenerator.nextId());
String whsCd = sequenceService.getNextSequence(SeqType.WHS_CD);
warehouseInfo.setWhsCd(whsCd);
}
return warehouseInfoMapper.insertSelective(warehouseInfo);
}

@ -11,7 +11,7 @@
Target Server Version : 80200 (8.2.0)
File Encoding : 65001
Date: 18/02/2024 16:52:33
Date: 19/02/2024 13:45:49
*/
SET NAMES utf8mb4;
@ -43,8 +43,8 @@ CREATE TABLE `WMS_M_GOODS_TYPE_INFO` (
-- ----------------------------
-- Records of WMS_M_GOODS_TYPE_INFO
-- ----------------------------
INSERT INTO `WMS_M_GOODS_TYPE_INFO` VALUES (100, '6448700363265', '重金属原材料', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-18 16:37:38', '1', '2024-02-18 16:37:38', NULL);
INSERT INTO `WMS_M_GOODS_TYPE_INFO` VALUES (100, '6448704094721', '金属成品', 'qwe', NULL, NULL, NULL, NULL, 3, 0, '1', '2024-02-18 16:38:07', '1', '2024-02-18 16:38:19', NULL);
INSERT INTO `WMS_M_GOODS_TYPE_INFO` VALUES (100, 'GT00001', '原材料', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:41:24', '1', '2024-02-19 13:41:24', NULL);
INSERT INTO `WMS_M_GOODS_TYPE_INFO` VALUES (100, 'GT00002', '产品', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:41:39', '1', '2024-02-19 13:41:39', NULL);
-- ----------------------------
-- Table structure for WMS_M_UNIT_INFO
@ -72,8 +72,15 @@ CREATE TABLE `WMS_M_UNIT_INFO` (
-- ----------------------------
-- Records of WMS_M_UNIT_INFO
-- ----------------------------
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, '6314680921729', '', 'qwe', NULL, NULL, NULL, NULL, 2, 0, '1', '2024-02-06 13:47:11', '1', '2024-02-18 15:05:16', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, '6314687617154', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-06 13:48:03', '1', '2024-02-06 14:05:37', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00001', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:37:19', '1', '2024-02-19 13:37:19', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00002', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:37:27', '1', '2024-02-19 13:37:27', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00003', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:37:33', '1', '2024-02-19 13:37:33', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00004', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:37:37', '1', '2024-02-19 13:37:37', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00005', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:37:43', '1', '2024-02-19 13:37:43', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00006', 'PCS', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:37:48', '1', '2024-02-19 13:37:48', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00007', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:38:11', '1', '2024-02-19 13:38:11', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00008', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:38:30', '1', '2024-02-19 13:38:30', NULL);
INSERT INTO `WMS_M_UNIT_INFO` VALUES (100, 'UNIT00009', '', NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:38:45', '1', '2024-02-19 13:38:45', NULL);
-- ----------------------------
-- Table structure for WMS_M_WAREHOUSE_INFO
@ -114,7 +121,7 @@ CREATE TABLE `WMS_M_WAREHOUSE_INFO` (
-- ----------------------------
-- Records of WMS_M_WAREHOUSE_INFO
-- ----------------------------
INSERT INTO `WMS_M_WAREHOUSE_INFO` VALUES (100, '6448763241089', '仓库1', 'NORMAL', 'WH1', 'Flat 25, 12/F apartment and floor no. Acacia Building', '', NULL, '08524785441', '200001', '', NULL, '张三', 'Singapore', 17500.000000, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-18 16:45:49', '1', '2024-02-18 16:45:49', NULL);
INSERT INTO `WMS_M_WAREHOUSE_INFO` VALUES (100, 'WH001', '仓库1', 'OWN', 'WH1', 'Flat 25, 12/F apartment and floor no. Acacia Building', '', NULL, '08524785441', '200001', '', NULL, '张三', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, '1', '2024-02-19 13:42:34', '1', '2024-02-19 13:42:34', NULL);
-- ----------------------------
-- Table structure for gen_table
@ -479,7 +486,7 @@ CREATE TABLE `sys_logininfor` (
PRIMARY KEY (`info_id`) USING BTREE,
INDEX `idx_sys_logininfor_s`(`status` ASC) USING BTREE,
INDEX `idx_sys_logininfor_lt`(`access_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 133 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '系统访问记录' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB AUTO_INCREMENT = 134 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '系统访问记录' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_logininfor
@ -668,7 +675,7 @@ CREATE TABLE `sys_oper_log` (
INDEX `idx_sys_oper_log_bt`(`business_type` ASC) USING BTREE,
INDEX `idx_sys_oper_log_s`(`status` ASC) USING BTREE,
INDEX `idx_sys_oper_log_ot`(`oper_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 201 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '操作日志记录' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB AUTO_INCREMENT = 215 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '操作日志记录' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_oper_log
@ -842,6 +849,73 @@ INSERT INTO `sys_role_menu` VALUES (2, 1058);
INSERT INTO `sys_role_menu` VALUES (2, 1059);
INSERT INTO `sys_role_menu` VALUES (2, 1060);
-- ----------------------------
-- Table structure for sys_seq_result
-- ----------------------------
DROP TABLE IF EXISTS `sys_seq_result`;
CREATE TABLE `sys_seq_result` (
`seq_id` bigint(20) UNSIGNED ZEROFILL NOT NULL DEFAULT 100 COMMENT '序列号ID',
`seq_dist_cd` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '序列号识别码',
`prefix` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '前缀',
`separator1` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分隔符1',
`date_val` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '日期值',
`separator2` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分隔符2',
`seq_no` int NOT NULL COMMENT '当前序列号',
`remark_1` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注1',
`remark_2` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注2',
`remark_3` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注3',
`remark_4` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注4',
`remark_5` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注5',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`seq_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '序列号生成记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_seq_result
-- ----------------------------
INSERT INTO `sys_seq_result` VALUES (00000006458374766593, 'UNIT', 'UNIT', NULL, NULL, NULL, 9, NULL, NULL, NULL, NULL, NULL, '1', '2024-02-19 13:37:19', '1', '2024-02-19 13:38:44', NULL);
INSERT INTO `sys_seq_result` VALUES (00000006458406061570, 'GT', 'GT', NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, '1', '2024-02-19 13:41:24', '1', '2024-02-19 13:41:39', NULL);
INSERT INTO `sys_seq_result` VALUES (00000006458414990338, 'WHS', 'WH', NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2024-02-19 13:42:34', '1', '2024-02-19 13:42:34', NULL);
-- ----------------------------
-- Table structure for sys_seq_rule
-- ----------------------------
DROP TABLE IF EXISTS `sys_seq_rule`;
CREATE TABLE `sys_seq_rule` (
`rule_id` bigint NOT NULL DEFAULT 100 COMMENT '规则ID',
`seq_dist_cd` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '序列号识别码',
`rule_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '规则名称',
`prefix` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '前缀',
`separator1` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分隔符1',
`date_format` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '日期格式',
`min_digits` int NOT NULL COMMENT '序列号数字部分的最小位数不足补0',
`separator2` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '分隔符2',
`generator_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '生成器名称(或类全名),自定义的生成器可忽略前面的规则自行生成',
`enable_flag` int NOT NULL DEFAULT 1 COMMENT '是否启用',
`remark_1` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注1',
`remark_2` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注2',
`remark_3` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注3',
`remark_4` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注4',
`remark_5` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注5',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`rule_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '序列号生成规则表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_seq_rule
-- ----------------------------
INSERT INTO `sys_seq_rule` VALUES (1, 'UNIT', '单位代码生成规则', 'UNIT', NULL, NULL, 5, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2024-02-19 11:38:35', '1', '2024-02-19 11:38:37', NULL);
INSERT INTO `sys_seq_rule` VALUES (2, 'GT', '物品类型代码生成规则', 'GT', NULL, NULL, 5, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2024-02-19 13:33:21', '1', '2024-02-19 13:33:24', NULL);
INSERT INTO `sys_seq_rule` VALUES (3, 'WHS', '仓库代码生成规则', 'WH', NULL, NULL, 3, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, '1', '2024-02-19 13:34:28', '1', '2024-02-19 13:34:30', NULL);
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------

Loading…
Cancel
Save