中医院修改。GS1解析,南靖预验收产品过滤
parent
b040edd55e
commit
5a29403fc3
@ -0,0 +1,65 @@
|
||||
package com.glxp.mipsdl.entity.system;
|
||||
|
||||
/**
|
||||
* @author 彭于晏
|
||||
* @date 2020/9/22.
|
||||
*/
|
||||
public class UdiEntity {
|
||||
|
||||
private String batchNo;
|
||||
private String produceDate;
|
||||
private String expireDate;
|
||||
private String serialNo;
|
||||
private String udi;
|
||||
|
||||
public String getBatchNo() {
|
||||
return batchNo;
|
||||
}
|
||||
|
||||
public void setBatchNo(String batchNo) {
|
||||
this.batchNo = batchNo;
|
||||
}
|
||||
|
||||
public String getProduceDate() {
|
||||
return produceDate;
|
||||
}
|
||||
|
||||
public void setProduceDate(String produceDate) {
|
||||
this.produceDate = produceDate;
|
||||
}
|
||||
|
||||
public String getExpireDate() {
|
||||
return expireDate;
|
||||
}
|
||||
|
||||
public void setExpireDate(String expireDate) {
|
||||
this.expireDate = expireDate;
|
||||
}
|
||||
|
||||
public String getSerialNo() {
|
||||
return serialNo;
|
||||
}
|
||||
|
||||
public void setSerialNo(String serialNo) {
|
||||
this.serialNo = serialNo;
|
||||
}
|
||||
|
||||
public String getUdi() {
|
||||
return udi;
|
||||
}
|
||||
|
||||
public void setUdi(String udi) {
|
||||
this.udi = udi;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UdiEntity{" +
|
||||
"batchNo='" + batchNo + '\'' +
|
||||
", produceDate='" + produceDate + '\'' +
|
||||
", expireDate='" + expireDate + '\'' +
|
||||
", serialNo='" + serialNo + '\'' +
|
||||
", udi='" + udi + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,158 @@
|
||||
package com.glxp.mipsdl.util;
|
||||
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.glxp.mipsdl.entity.system.UdiEntity;
|
||||
import com.glxp.mipsdl.util.gs1.AI;
|
||||
import com.glxp.mipsdl.util.gs1.AIs;
|
||||
import com.glxp.mipsdl.util.gs1.Gs1128Decoder;
|
||||
import com.glxp.mipsdl.util.gs1.Gs1128Engine;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class FilterUdiUtils {
|
||||
private static final String TAG = "FilterUdiUtils";
|
||||
|
||||
public static UdiEntity getUdi(String data) {
|
||||
if (data != null && data.length() > 2) {
|
||||
if (data.substring(0, 2).toUpperCase().equals("MA")) {
|
||||
return getZGCUdi(data);
|
||||
} else if (data.substring(0, 2).equals("01")) {
|
||||
return getGS1Udi(data);
|
||||
} else if (data.substring(0, 1).equals("#")) {
|
||||
return getGLXPUdi(data);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static UdiEntity getGS1Udi(String data) {
|
||||
Gs1128Engine engine = new Gs1128Engine();
|
||||
Gs1128Decoder decoder = engine.decoder();
|
||||
Map<AI, String> result = decoder.decode("]C1" + data);
|
||||
UdiEntity udiEntity = new UdiEntity();
|
||||
int length = 0;
|
||||
for (Map.Entry<AI, String> entry : result.entrySet()) {
|
||||
length = length + entry.getValue().length();
|
||||
if (entry.getKey() == AIs.GTIN) {
|
||||
udiEntity.setUdi(entry.getValue());
|
||||
} else if (entry.getKey() == AIs.BATCH_LOT) {
|
||||
udiEntity.setBatchNo(entry.getValue());
|
||||
} else if (entry.getKey() == AIs.EXPIRY) {
|
||||
udiEntity.setExpireDate(entry.getValue());
|
||||
} else if (entry.getKey() == AIs.PROD_DATE) {
|
||||
udiEntity.setProduceDate(entry.getValue());
|
||||
} else if (entry.getKey() == AIs.SERIAL) {
|
||||
udiEntity.setSerialNo(entry.getValue());
|
||||
}
|
||||
}
|
||||
if (data.length() - length > 22) {
|
||||
return null;
|
||||
}
|
||||
if (StrUtil.isEmpty(udiEntity.getUdi())) {
|
||||
return null;
|
||||
}
|
||||
if (udiEntity.getUdi().length() < 14
|
||||
) {
|
||||
return null;
|
||||
} else
|
||||
return udiEntity;
|
||||
}
|
||||
|
||||
public static UdiEntity getZGCUdi(String data) {
|
||||
String batchNo = "";
|
||||
String produceDate = "";
|
||||
String expireDate = "";
|
||||
String serialNo = null;
|
||||
String nameCode = "";
|
||||
String[] spilts = data.split("[.]");
|
||||
if (spilts != null && spilts.length >= 5) {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
nameCode = nameCode + "." + spilts[i];
|
||||
}
|
||||
nameCode = nameCode.substring(1);
|
||||
for (int i = 0; i < spilts.length; i++) {
|
||||
String tempStr = spilts[i];
|
||||
if (tempStr != null && tempStr.length() > 1 && tempStr.substring(0, 1).equals("M")) {
|
||||
produceDate = tempStr.substring(1);
|
||||
} else if (tempStr != null && tempStr.length() > 1 && tempStr.substring(0, 1).equals("L")) {
|
||||
batchNo = tempStr.substring(1);
|
||||
} else if (tempStr != null && tempStr.length() > 1 && tempStr.substring(0, 1).equals("E")) {
|
||||
expireDate = tempStr.substring(1);
|
||||
} else if (tempStr != null && tempStr.length() > 1 && tempStr.substring(0, 1).equals("S")) {
|
||||
serialNo = tempStr.substring(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UdiEntity udiEntity = new UdiEntity();
|
||||
udiEntity.setBatchNo(batchNo);
|
||||
udiEntity.setExpireDate(expireDate);
|
||||
udiEntity.setProduceDate(produceDate);
|
||||
udiEntity.setUdi(nameCode);
|
||||
udiEntity.setSerialNo(serialNo);
|
||||
return udiEntity;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static UdiEntity getGLXPUdi(String data) {
|
||||
String batchNo = "";
|
||||
String produceDate = "";
|
||||
String expireDate = "";
|
||||
String serialNo = null;
|
||||
String udi = "";
|
||||
String[] spilts = data.split("#", data.length());
|
||||
if (spilts != null && spilts.length >= 5) {
|
||||
udi = spilts[1];
|
||||
produceDate = spilts[2];
|
||||
expireDate = spilts[3];
|
||||
batchNo = spilts[4];
|
||||
if (spilts.length > 6) {
|
||||
serialNo = spilts[5];
|
||||
}
|
||||
|
||||
if (StrUtil.isEmpty(batchNo)) {
|
||||
batchNo = null;
|
||||
}
|
||||
if (StrUtil.isEmpty(serialNo)) {
|
||||
serialNo = null;
|
||||
}
|
||||
|
||||
}
|
||||
UdiEntity udiEntity = new UdiEntity();
|
||||
udiEntity.setBatchNo(batchNo);
|
||||
udiEntity.setExpireDate(expireDate);
|
||||
udiEntity.setProduceDate(produceDate);
|
||||
udiEntity.setUdi(udi);
|
||||
udiEntity.setSerialNo(serialNo);
|
||||
return udiEntity;
|
||||
}
|
||||
|
||||
public static String getDiStr(String data) {
|
||||
String prefix = "";
|
||||
if (data != null && data.length() > 2) {
|
||||
if (data.substring(0, 2).equals("MA")) {
|
||||
String[] spilts = data.split("[.]");
|
||||
if (spilts != null && spilts.length >= 5) {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
prefix = prefix + "." + spilts[i];
|
||||
}
|
||||
prefix = prefix.substring(1);
|
||||
}
|
||||
} else if (data.substring(0, 2).equals("01") && data.length() >= 16) {
|
||||
prefix = data.substring(2, 16);
|
||||
} else if (data.substring(0, 1).equals("#")) {
|
||||
String[] spilts = data.split("#");
|
||||
if (spilts != null && spilts.length >= 1)
|
||||
prefix = spilts[1];
|
||||
}
|
||||
}
|
||||
if (prefix.equals(""))
|
||||
return data;
|
||||
return prefix;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
public interface AI {
|
||||
|
||||
String getCode();
|
||||
|
||||
String getDescription();
|
||||
|
||||
String getFormat();
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
public final class AiFactory {
|
||||
|
||||
private AiFactory() {
|
||||
super();
|
||||
}
|
||||
|
||||
public static AI create(String code, String description, String format) {
|
||||
return new AI() {
|
||||
|
||||
@Override
|
||||
public String getFormat() {
|
||||
return format;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
final class Format {
|
||||
|
||||
private static final String JOIN_SYMBOL = "+";
|
||||
private final List<Session> sessions;
|
||||
|
||||
public Format(List<Session> sessions) {
|
||||
this.sessions = Validate.notEmpty(sessions);
|
||||
}
|
||||
|
||||
public Format(Session... sessions) {
|
||||
this(Arrays.asList(sessions));
|
||||
}
|
||||
|
||||
public Session getIdentifier() {
|
||||
return sessions.get(0);
|
||||
}
|
||||
|
||||
public List<Session> getDataSessions() {
|
||||
return sessions.subList(1, sessions.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return sessions.stream().map(String::valueOf).collect(Collectors.joining(JOIN_SYMBOL));
|
||||
}
|
||||
|
||||
public boolean isValid(String value) {
|
||||
if (StringUtils.isBlank(value)) {
|
||||
return false;
|
||||
}
|
||||
if (!validLength(value)) {
|
||||
return false;
|
||||
}
|
||||
return validate(value);
|
||||
}
|
||||
|
||||
private boolean validate(String value) {
|
||||
return getDataSessions().stream().allMatch(s -> s.getType().isValid(Gs1128Utils.value(s, value)));
|
||||
}
|
||||
|
||||
private boolean validLength(String value) {
|
||||
return isVaried() ? value.length() <= getLength() : value.length() == getLength();
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return getDataSessions().stream().mapToInt(Session::getLength).sum();
|
||||
}
|
||||
|
||||
public boolean isVaried() {
|
||||
return getDataSessions().stream().anyMatch(Session::isVaried);
|
||||
}
|
||||
|
||||
public static Format valueOf(String value) {
|
||||
String[] split = StringUtils.split(value, JOIN_SYMBOL);
|
||||
List<Session> list = Arrays.stream(split).map(Session::valueOf).collect(Collectors.toList());
|
||||
return new Format(list);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
public final class Gs1128Decoder {
|
||||
|
||||
private final Collection<AI> ais;
|
||||
|
||||
Gs1128Decoder(Collection<AI> ais) {
|
||||
this.ais = ais;
|
||||
}
|
||||
|
||||
public Map<AI, String> decode(final String barcode) {
|
||||
validateBarcode(barcode);
|
||||
String barcodeValue = StringUtils.remove(barcode, Gs1128Utils.PREFIX);
|
||||
return extract(barcodeValue);
|
||||
}
|
||||
|
||||
private Map<AI, String> extract(String barcode) {
|
||||
final Iterator<Character> iterator = Gs1128Utils.iterator(barcode);
|
||||
final Map<AI, String> result = new WeakHashMap<>(4);
|
||||
StringBuilder builder = new StringBuilder();
|
||||
while (iterator.hasNext()) {
|
||||
builder.append(iterator.next());
|
||||
Optional<Map<AI, String>> mapAi = mapAi(iterator, builder.toString());
|
||||
if (mapAi.isPresent()) {
|
||||
result.putAll(mapAi.get());
|
||||
builder = new StringBuilder();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private Optional<Map<AI, String>> mapAi(Iterator<Character> iterator, String builder) {
|
||||
return ais.stream().filter(v -> v.getCode().equals(builder)).findFirst().map(aiValue(iterator));
|
||||
}
|
||||
|
||||
private Function<AI, Map<AI, String>> aiValue(Iterator<Character> iterator) {
|
||||
return ai -> {
|
||||
String value = Gs1128Utils.value(ai, iterator);
|
||||
return Map.of(ai, value);
|
||||
};
|
||||
}
|
||||
|
||||
private void validateBarcode(String barcode) {
|
||||
Validate.notBlank(barcode, "Barcode cannot be blank");
|
||||
Validate.isTrue(StringUtils.startsWith(barcode, Gs1128Utils.PREFIX), "Barcode must start with prefix Gs1-128 \"]C1\"");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
public final class Gs1128Encoder {
|
||||
|
||||
Gs1128Encoder() {
|
||||
super();
|
||||
}
|
||||
|
||||
public String encode(Collection<Segment> segments) {
|
||||
Validate.notEmpty(segments);
|
||||
String barcode = joinSegments(segments);
|
||||
return checkBarcode(barcode);
|
||||
}
|
||||
|
||||
private String checkBarcode(String barcode) {
|
||||
return StringUtils.removeEnd(barcode, String.valueOf(Gs1128Utils.END_AI_VARIED));
|
||||
}
|
||||
|
||||
private String joinSegments(Collection<Segment> segments) {
|
||||
String joinValue = segments.stream().map(Segment::encode).collect(Collectors.joining());
|
||||
return Gs1128Utils.PREFIX.concat(joinValue);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
public final class Gs1128Engine {
|
||||
|
||||
private final Set<AI> aisRegistred = new HashSet<>();
|
||||
|
||||
public Gs1128Engine() {
|
||||
aisRegistred.addAll(EnumSet.allOf(AIs.class));
|
||||
}
|
||||
|
||||
public void registerAi(AI ai) {
|
||||
aisRegistred.add(ai);
|
||||
}
|
||||
|
||||
public Set<AI> getAisRegistred() {
|
||||
return Collections.unmodifiableSet(aisRegistred);
|
||||
}
|
||||
|
||||
public Gs1128Encoder encoder() {
|
||||
return new Gs1128Encoder();
|
||||
}
|
||||
|
||||
public Gs1128Decoder decoder() {
|
||||
return new Gs1128Decoder(aisRegistred);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
final class Gs1128Utils {
|
||||
|
||||
public static final String PREFIX = "]C1";
|
||||
public static final char END_AI_VARIED = (char) 29;
|
||||
|
||||
private Gs1128Utils() {
|
||||
super();
|
||||
}
|
||||
|
||||
public static Iterator<Character> iterator(String value) {
|
||||
return value.chars().mapToObj(c -> (char) c).iterator();
|
||||
}
|
||||
|
||||
public static String value(AI ai, Iterator<Character> iterator) {
|
||||
Format format = Format.valueOf(ai.getFormat());
|
||||
if (format.isVaried()) {
|
||||
return variedValue(iterator);
|
||||
} else {
|
||||
return fixedValue(format.getLength(), iterator);
|
||||
}
|
||||
}
|
||||
|
||||
public static String value(Session session, String value) {
|
||||
Iterator<Character> iterator = iterator(value);
|
||||
if (session.isVaried()) {
|
||||
return variedValue(iterator);
|
||||
} else {
|
||||
return fixedValue(session.getLength(), iterator);
|
||||
}
|
||||
}
|
||||
|
||||
private static String fixedValue(int size, Iterator<Character> iterator) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (iterator.hasNext()) {
|
||||
builder.append(iterator.next());
|
||||
}
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
private static String variedValue(Iterator<Character> iterator) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
while (iterator.hasNext()) {
|
||||
char value = iterator.next();
|
||||
if (value == END_AI_VARIED) {
|
||||
break;
|
||||
}
|
||||
builder.append(value);
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
public final class Segment {
|
||||
|
||||
private final AI ai;
|
||||
private final String value;
|
||||
private final Format format;
|
||||
|
||||
public Segment(AI ai, String value) {
|
||||
this.ai = Validate.notNull(ai, "Invalid AI");
|
||||
format = Format.valueOf(ai.getFormat());
|
||||
this.value = validateValue(format, value);
|
||||
}
|
||||
|
||||
private String validateValue(Format format, String value) {
|
||||
Validate.notBlank(value, "Invalid segment value");
|
||||
Validate.notNull(format, "Invalid format");
|
||||
Validate.isTrue(format.isValid(value));
|
||||
return value;
|
||||
}
|
||||
|
||||
String encode() {
|
||||
String codeValue = ai.getCode().concat(value);
|
||||
if (format.isVaried()) {
|
||||
return codeValue + Gs1128Utils.END_AI_VARIED;
|
||||
}
|
||||
return codeValue;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
final class Session {
|
||||
|
||||
private static final String VARIED_CONSTANT = "..";
|
||||
|
||||
private final SessionType type;
|
||||
private final boolean varied;
|
||||
private final int length;
|
||||
|
||||
public Session(SessionType type, int length, boolean varied) {
|
||||
this.type = Validate.notNull(type);
|
||||
Validate.isTrue(length > 0, "Session invalid length");
|
||||
this.length = length;
|
||||
this.varied = varied;
|
||||
}
|
||||
|
||||
public SessionType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return length;
|
||||
}
|
||||
|
||||
public boolean isVaried() {
|
||||
return varied;
|
||||
}
|
||||
|
||||
public static Session valueOf(String value) {
|
||||
Validate.notBlank(value, "Session cannot be blank");
|
||||
SessionType type = sessionType(value);
|
||||
String strLength = value.substring(type.length());
|
||||
boolean varied = strLength.startsWith(VARIED_CONSTANT);
|
||||
int length = createLength(strLength, varied);
|
||||
return new Session(type, length, varied);
|
||||
}
|
||||
|
||||
private static SessionType sessionType(String value) {
|
||||
return SessionType.valueByPrefix(value).orElseThrow(() -> new IllegalArgumentException("Invalid session type"));
|
||||
}
|
||||
|
||||
private static Integer createLength(String strLength, boolean varied) {
|
||||
try {
|
||||
if (varied) {
|
||||
String lengthValue = StringUtils.substringAfter(strLength, VARIED_CONSTANT);
|
||||
return Integer.parseInt(lengthValue);
|
||||
}
|
||||
return Integer.valueOf(strLength);
|
||||
} catch (NumberFormatException ex) {
|
||||
throw new IllegalArgumentException(String.format("Invalid length: '%s'", strLength), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new StringBuilder(type.getSymbol())
|
||||
.append(varied ? VARIED_CONSTANT : StringUtils.EMPTY)
|
||||
.append(length)
|
||||
.toString();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.glxp.mipsdl.util.gs1;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* @author guilherme.pacheco
|
||||
*/
|
||||
enum SessionType {
|
||||
|
||||
ALPHANUMERIC("an", v -> Character.isAlphabetic(v) || Character.isDigit(v)),
|
||||
ALPHABETIC("a", v -> Character.isAlphabetic(v)),
|
||||
NUMERIC("n", v -> Character.isDigit(v));
|
||||
|
||||
private final String symbol;
|
||||
private final Predicate<Character> validator;
|
||||
|
||||
private SessionType(String symbol, Predicate<Character> validator) {
|
||||
this.symbol = symbol;
|
||||
this.validator = validator;
|
||||
}
|
||||
|
||||
public boolean isValid(String value) {
|
||||
if (StringUtils.isBlank(value)) {
|
||||
return false;
|
||||
}
|
||||
return value.chars().mapToObj(c -> (char) c).allMatch(validator::test);
|
||||
}
|
||||
|
||||
public String getSymbol() {
|
||||
return symbol;
|
||||
}
|
||||
|
||||
public int length() {
|
||||
return symbol.length();
|
||||
}
|
||||
|
||||
public static Optional<SessionType> valueByPrefix(String value) {
|
||||
if (StringUtils.isBlank(value)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return EnumSet.allOf(SessionType.class).stream()
|
||||
.filter(v -> StringUtils.startsWithIgnoreCase(value, v.symbol))
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
}
|
@ -1,37 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.glxp.mipsdl.dao.basic.BasicUdirelDao">
|
||||
<resultMap id="BaseResultMap" type="com.glxp.mipsdl.entity.basic.BasicUdirelEntity">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table basic_udirel-->
|
||||
<id column="id" jdbcType="INTEGER" property="id" />
|
||||
<result column="uuid" jdbcType="VARCHAR" property="uuid" />
|
||||
<result column="mainId" jdbcType="VARCHAR" property="mainId" />
|
||||
<result column="thirdId" jdbcType="VARCHAR" property="thirdId" />
|
||||
<result column="thirdId1" jdbcType="VARCHAR" property="thirdId1" />
|
||||
<result column="thirdId2" jdbcType="VARCHAR" property="thirdId2" />
|
||||
<result column="thirdId3" jdbcType="VARCHAR" property="thirdId3" />
|
||||
<result column="thirdId4" jdbcType="VARCHAR" property="thirdId4" />
|
||||
<result column="udplatCode" jdbcType="VARCHAR" property="udplatCode" />
|
||||
<result column="isUseDy" jdbcType="TINYINT" property="isUseDy" />
|
||||
<result column="isDisable" jdbcType="TINYINT" property="isDisable" />
|
||||
<result column="isLock" jdbcType="TINYINT" property="isLock" />
|
||||
<result column="lockStatus" jdbcType="INTEGER" property="lockStatus" />
|
||||
<result column="isAdavence" jdbcType="TINYINT" property="isAdavence" />
|
||||
<result column="useMuti" jdbcType="TINYINT" property="useMuti" />
|
||||
<result column="useNum" jdbcType="INTEGER" property="useNum" />
|
||||
<result column="supName" jdbcType="VARCHAR" property="supName" />
|
||||
<result column="createTime" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="updateTime" jdbcType="VARCHAR" property="updateTime" />
|
||||
<result column="modifyTime" jdbcType="TIMESTAMP" property="modifyTime" />
|
||||
<result column="createUser" jdbcType="VARCHAR" property="createUser" />
|
||||
<result column="updateUser" jdbcType="VARCHAR" property="updateUser" />
|
||||
<result column="remark" jdbcType="VARCHAR" property="remark" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy,
|
||||
isDisable, isLock, lockStatus, isAdavence, useMuti, useNum, supName, createTime,
|
||||
updateTime, modifyTime, `createUser`, updateUser, remark
|
||||
</sql>
|
||||
<resultMap id="BaseResultMap" type="com.glxp.mipsdl.entity.basic.BasicUdirelEntity">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table basic_udirel-->
|
||||
<id column="id" jdbcType="INTEGER" property="id"/>
|
||||
<result column="uuid" jdbcType="VARCHAR" property="uuid"/>
|
||||
<result column="mainId" jdbcType="VARCHAR" property="mainId"/>
|
||||
<result column="thirdId" jdbcType="VARCHAR" property="thirdId"/>
|
||||
<result column="thirdId1" jdbcType="VARCHAR" property="thirdId1"/>
|
||||
<result column="thirdId2" jdbcType="VARCHAR" property="thirdId2"/>
|
||||
<result column="thirdId3" jdbcType="VARCHAR" property="thirdId3"/>
|
||||
<result column="thirdId4" jdbcType="VARCHAR" property="thirdId4"/>
|
||||
<result column="udplatCode" jdbcType="VARCHAR" property="udplatCode"/>
|
||||
<result column="isUseDy" jdbcType="TINYINT" property="isUseDy"/>
|
||||
<result column="isDisable" jdbcType="TINYINT" property="isDisable"/>
|
||||
<result column="isLock" jdbcType="TINYINT" property="isLock"/>
|
||||
<result column="lockStatus" jdbcType="INTEGER" property="lockStatus"/>
|
||||
<result column="isAdavence" jdbcType="TINYINT" property="isAdavence"/>
|
||||
<result column="useMuti" jdbcType="TINYINT" property="useMuti"/>
|
||||
<result column="useNum" jdbcType="INTEGER" property="useNum"/>
|
||||
<result column="supName" jdbcType="VARCHAR" property="supName"/>
|
||||
<result column="createTime" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="updateTime" jdbcType="VARCHAR" property="updateTime"/>
|
||||
<result column="modifyTime" jdbcType="TIMESTAMP" property="modifyTime"/>
|
||||
<result column="createUser" jdbcType="VARCHAR" property="createUser"/>
|
||||
<result column="updateUser" jdbcType="VARCHAR" property="updateUser"/>
|
||||
<result column="remark" jdbcType="VARCHAR" property="remark"/>
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy,
|
||||
isDisable, isLock, lockStatus, isAdavence, useMuti, useNum, supName, createTime,
|
||||
updateTime, modifyTime, `createUser`, updateUser, remark
|
||||
</sql>
|
||||
|
||||
<select id="selectByNameCode" resultType="com.glxp.mipsdl.entity.basic.BasicUdirelEntity">
|
||||
select basic_udirel.*
|
||||
from basic_udirel
|
||||
inner join basic_products on basic_udirel.uuid = basic_products.uuid
|
||||
where basic_products.nameCode = #{nameCode}
|
||||
limit 1
|
||||
</select>
|
||||
</mapper>
|
||||
|
Loading…
Reference in New Issue