【优化】优化代码生成

master
zengchenxi 9 months ago
parent 1f6c0e8614
commit f46c911e35

@ -1,9 +1,10 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
@ -21,7 +22,9 @@ public enum CodeEnum {
* Cus+
* Sup+
* Prs+
* St+
* Wa+
* WI++4
* WO++4
* */
FACTORY("工厂", "Fa", 4),
DEPT("部门", "De", 4),
@ -31,32 +34,42 @@ public enum CodeEnum {
SUPPLIER("供应商", "Sup", 6),
PROCEDURE("工序", "Prs", 6),
WAREHOUSE("仓库", "Wa", 4),
STOCK_IN("入库单", "WI", 4, "yyyyMMdd"),
STOCK_OUT("出库单", "WO", 4, "yyyyMMdd"),
;
private String description;
private String prefix;
private int length;
private int sequenceLength;
private String sequenceTemplate;
private String dateFormat;
CodeEnum(String description, String prefix, int length) {
CodeEnum(String description, String prefix, int sequenceLength) {
this.description = description;
this.prefix = prefix;
this.length = length;
this.sequenceLength = sequenceLength;
this.sequenceTemplate = "%s%0"+sequenceLength+"d";
}
public String getCode(String suffix){
return this.length == 4 ? getCodeFourLength(this.prefix, suffix) : getCodeSixLength(this.prefix, suffix);
}
private static String getCodeSixLength(String prefix, String suffix){
String seqNo = suffix.length() > 6 ? suffix.substring(suffix.length() - 6) : suffix;
String realSeqNo = new DecimalFormat("000000").format(new BigDecimal(seqNo));
return String.format("%s%s", prefix, realSeqNo);
CodeEnum(String description, String prefix, int sequenceLength, String dateFormat) {
this.description = description;
this.prefix = prefix;
this.sequenceLength = sequenceLength;
this.dateFormat = dateFormat;
this.sequenceTemplate = "%s%s%0"+sequenceLength+"d";
}
private static String getCodeFourLength(String prefix, String suffix){
String seqNo = suffix.length() > 4 ? suffix.substring(suffix.length() - 4) : suffix;
String realSeqNo = new DecimalFormat("0000").format(new BigDecimal(seqNo));
return String.format("%s%s", prefix, realSeqNo);
public String getCode(String suffix){
String sequenceNo = suffix.length() > this.sequenceLength ? suffix.substring(suffix.length() - this.sequenceLength) : suffix;
int length = !StringUtils.isEmpty(this.dateFormat) ? 3 : 2;
Object[] args = new Object[length];
int i = 0;
args[i++] = this.prefix;
if(!StringUtils.isEmpty(this.dateFormat)){
args[i++] = (new SimpleDateFormat("yyyyMMdd").format(new Date()));
}
args[i++] = Long.parseLong(sequenceNo);
return String.format(this.sequenceTemplate, args);
}
}

Loading…
Cancel
Save