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