java为表单生成序列号

1. java实体类

public class Seq extends BaseEntity {
	
	private String name;
	private String format;
	private Integer numberLength;
	private Long value;
	private Integer step;
	private String descInfo;
	private Integer type;
	private String typeValue;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getFormat() {
		return format;
	}
	public void setFormat(String format) {
		this.format = format;
	}
	public Integer getNumberLength() {
		return numberLength;
	}
	public void setNumberLength(Integer numberLength) {
		this.numberLength = numberLength;
	}
	public Long getValue() {
		return value;
	}
	public void setValue(Long value) {
		this.value = value;
	}
	public Integer getStep() {
		return step;
	}
	public void setStep(Integer step) {
		this.step = step;
	}
	public String getDescInfo() {
		return descInfo;
	}
	public void setDescInfo(String descInfo) {
		this.descInfo = descInfo;
	}
	public Integer getType() {
		return type;
	}
	public void setType(Integer type) {
		this.type = type;
	}
	public String getTypeValue() {
		return typeValue;
	}
	public void setTypeValue(String typeValue) {
		this.typeValue = typeValue;
	}
	
}
2. 
public interface SeqService extends BaseService<Seq> {
	
	public String nextValue(String name);
	
}
@Service
public class SeqServiceImpl extends BaseServiceImpl<Seq> implements SeqService {

	private static Logger log = LoggerFactory.getLogger(SeqServiceImpl.class);

	@Autowired
	private SeqMapper seqMapper;

	private SimpleDateFormat sdfYyyyMMdd = new SimpleDateFormat("yyyyMMdd");
	private SimpleDateFormat sdfYyyy = new SimpleDateFormat("yyyy");
        //提供对外访问的方法
	public String nextValue(String name){
		Date d = new Date();
		String date = sdfYyyyMMdd.format(d);
		String year = sdfYyyy.format(d);
		
		Seq seq = seqMapper.getByName(name);
		Long value = seq.getValue() + seq.getStep();//生成新值
		if(seq.getType() != null && seq.getType() == 1) {
			//如果是 按照年份循环
			if (seq.getTypeValue().equals(year)) {
				
			}else {
				value = 1l;
			}
		}
		//
		String str = seq.getFormat();
		str = str.replace("{year}", year);
		str = str.replace("{date}", date);
		str = str.replace("{value}", leftPad(seq.getNumberLength(), value+""));
		//
		seqMapper.increment(name);//数据库生成新值
		seq.setTypeValue(year);
		seq.setValue(value);
		seqMapper.updateByPrimaryKey(seq);
		return str;
	}

	private static String leftPad(int length, String value) {
		int valueLen = value.length();
		if (valueLen < length) {
			for (int i = 0; i < (length - valueLen); i++) {
				value = "0" + value;
			}
		}
		return value;
	}

}

3. sql查询

public interface SeqMapper extends MyMapper<Seq> {
	
	@Select("select * from seq where name = #{name}")
	public Seq getByName(String name);
	
	@Update("update seq set value = value + step where name = #{name}")
	public void increment(String name); 
}




猜你喜欢

转载自blog.csdn.net/qq_38719039/article/details/80149383