diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java index 5e83adcb..19bea94a 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/CodeEnum.java @@ -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); } }