package com.ruoyi.base.service.impl; import cn.hutool.core.date.DateUtil; import com.ruoyi.base.domain.SysIdsequence; import com.ruoyi.base.mapper.SysIdsequenceMapper; import com.ruoyi.base.service.SysIdsequenceService; import com.ruoyi.base.utils.CommonUtils; import com.ruoyi.common.utils.DateUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; /** * Created by IntelliJ IDEA. * User: andy.qu * Date: 2022/3/4 */ @Service public class SysIdsequenceServiceImpl implements SysIdsequenceService { @Autowired private SysIdsequenceMapper sysIdsequenceMapper; @Override public String generateId(String idName) { while (true) { SysIdsequence sysIdsequence = sysIdsequenceMapper.selectByIdname(idName); if (sysIdsequence == null) { return null; } String prefix; String dateStr = ""; if(!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))){ prefix = sysIdsequence.getPrefix() + DateUtils.parseDateToStr("yMMdd",new Date()); dateStr = DateUtils.parseDateToStr("yMMdd",new Date()); }else { prefix = sysIdsequence.getPrefix(); } int index = 0; if(sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())){ index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue(); } String resultNo = ""; if(!StringUtils.isEmpty(prefix)){ resultNo = prefix + CommonUtils.lpad((index+1)+"",sysIdsequence.getLength().intValue(),"0"); }else { resultNo = (index+1)+""; } boolean isOk = sysIdsequenceMapper.updateByVersion(idName,dateStr,sysIdsequence.getIdSequence().intValue(),index+1); if(isOk){ return resultNo; } } } @Override public String getCurrent(String idName) { SysIdsequence sysIdsequence = sysIdsequenceMapper.selectByIdname(idName); String prefix; String dateStr = ""; if(!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))){ prefix = sysIdsequence.getPrefix() + DateUtil.format(new Date(),"yMMdd"); dateStr = DateUtil.format(new Date(),"yMMdd"); }else { prefix = sysIdsequence.getPrefix(); } int index = 0; if(sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())){ index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue(); } String resultNo = ""; if(!StringUtils.isEmpty(prefix)){ resultNo = prefix + CommonUtils.lpad((index+1)+"",sysIdsequence.getLength().intValue(),"0"); }else { resultNo = (index+1)+""; } return resultNo; } }