AOS应用基础平台 - 按日生成业务ID

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.osworks.aos.core.asset.AOSUtils;
import cn.osworks.aos.core.typewrap.Dto;
import cn.osworks.aos.core.typewrap.Dtos;
import cn.osworks.aos.system.dao.mapper.Aos_sys_sequenceMapper;
import cn.osworks.aos.system.dao.po.Aos_sys_sequencePO;

/**
 * @author study630
 * @date 2015-10-22
 */
 @Service
public class IdService {
	
	@Autowired
	private Aos_sys_sequenceMapper aos_sys_sequenceMapper;
	
	/**
	 * 生成业务ID
	 * @return
	 */
	public String createYwid(String idname){
		Dto qDto=Dtos.newDto();
		qDto.put("name_", idname);
		Aos_sys_sequencePO seq = aos_sys_sequenceMapper.selectOne(qDto);
		if (AOSUtils.isEmpty(seq)){
			throw new RuntimeException("序列号不存在");
		}
		String suffix_ = (seq.getSuffix_() == null?"":seq.getSuffix_());
		String prefix_ = (seq.getPrefix_() == null?"":seq.getPrefix_());
		String prefixBefore = StringUtils.substringBefore(prefix_, "{");
		String dateFormat = StringUtils.substringBetween(prefix_, "{", "}");
		String todayString = AOSUtils.getDateStr().replaceAll("-", "");
		if (dateFormat != null){
			todayString = AOSUtils.getDateTimeStr(dateFormat);
		}
		String prefixAfter = StringUtils.substringAfter(prefix_, "}");
		String prefix = "";
		if (!prefixBefore.equals("") || prefixAfter.equals("")){
			prefix = prefixBefore + todayString + prefixAfter ;
		}else{
			prefix = prefix_ + todayString;
		}
		
		String newid = "";
		String newseq = "";
		String curvalue = seq.getCur_value_();
		if (AOSUtils.isEmpty(curvalue) || curvalue.equals("0") || curvalue.startsWith(prefix)==false){
			//为空或前缀不是当前日期时重新计算
			if (StringUtils.equals(seq.getIs_leftpad_(), "1")){
				newseq = StringUtils.leftPad(seq.getMin_value_(),seq.getMax_value_().length(), "0");
			}else {
				newseq = seq.getMin_value_();
			}
		}else{
			//当前序列号加1
			String curseq = curvalue.substring(prefix.length(), curvalue.length()-suffix_.length());
			curseq = String.valueOf(Long.valueOf(curseq) + 1);
			if (StringUtils.equals(seq.getIs_leftpad_(), "1")){
				newseq = StringUtils.leftPad(curseq,seq.getMax_value_().length(), "0");
			}else{
				newseq = curseq;
			}
		}
		newid = prefix + newseq + (seq.getSuffix_()==null?"":seq.getSuffix_());
		//更新当前值
		seq.setCur_value_(newid);
		aos_sys_sequenceMapper.updateByKey(seq);
		return newid;
	}
}

AOS应用基础平台 - 按日生成业务ID  

1、调用前先增加序列号,如上图

2、生成业务ID : weService.createYwid("RYXZID")



你可能感兴趣的:(序列号,AOS,业务ID)