|
|
|
@ -2,15 +2,18 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesEnumExtService;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
|
|
|
|
|
import cn.estsh.i3plus.mes.apiservice.util.EnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesEnum;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesEnumDetail;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesEnumDetailRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesEnumRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
@ -20,12 +23,10 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Author: Wynne.Lu
|
|
|
|
@ -40,6 +41,8 @@ public class MesEnumExtService extends BaseMesService<MesEnum> implements IMesEn
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesEnumRepository enumRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesEnumDetailRepository enumDetailRepository;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void setPackQueryBean(MesEnum bean, DdlPackBean packBean) {
|
|
|
|
@ -66,23 +69,13 @@ public class MesEnumExtService extends BaseMesService<MesEnum> implements IMesEn
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public List<Map<String, Object>> getAllMesEnums() {
|
|
|
|
|
Class innerClazz[] = MesExtEnumUtil.class.getDeclaredClasses();// 获取常量类中的所有内部类
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> enumList = new ArrayList<>();// 所有枚举
|
|
|
|
|
Map<String, Object> enumMap;// 枚举类
|
|
|
|
|
|
|
|
|
|
for (Class clazz : innerClazz) {
|
|
|
|
|
enumMap = getEnumByClazzEnum(clazz.getSimpleName(), MesExtEnumUtil.class);
|
|
|
|
|
enumList.add(enumMap);
|
|
|
|
|
}
|
|
|
|
|
return enumList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Map<String, Object> doGetMesEnumByEnumName(String enumName) {
|
|
|
|
|
return getEnumByClazzEnum(enumName, MesExtEnumUtil.class);
|
|
|
|
|
public Map<String, Object> doGetMesEnumByEnumName(String organizeCode, String enumName) {
|
|
|
|
|
Map<String, Object> enumMap = getEnumMap(organizeCode, enumName);
|
|
|
|
|
if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesExtEnumUtil.class);
|
|
|
|
|
if (CollectionUtils.isEmpty(enumMap)) enumMap = getEnumByClazzEnum(enumName, MesEnumUtil.class);
|
|
|
|
|
return enumMap;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -90,138 +83,26 @@ public class MesEnumExtService extends BaseMesService<MesEnum> implements IMesEn
|
|
|
|
|
return EnumUtil.getEnumByName(clz, enumName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<Map<String, Object>> getEnumValuesByClazzEnum(String enumName, Class clazz) {
|
|
|
|
|
return (List<Map<String, Object>>) getEnumByClazzEnum(enumName, clazz).get("valuesList");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Map<String, String> getEnumLangeuageKeyByClazzEnum(Class clazz) {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
Map<String, String> value = null;
|
|
|
|
|
Method getValue;
|
|
|
|
|
getValue = clazz.getMethod("getValue");
|
|
|
|
|
|
|
|
|
|
// 获取所有枚举实例
|
|
|
|
|
Enum[] enumConstants = (Enum[]) clazz.getEnumConstants();
|
|
|
|
|
value = new HashMap<>();
|
|
|
|
|
for (Enum enum1 : enumConstants) {
|
|
|
|
|
String key = clazz.getSimpleName() + ":" + enum1.name();
|
|
|
|
|
value.put(getValue.invoke(enum1).toString(), key);
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("获取枚举的资源键失败。。");
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void saveEnums(String organizeCode, String userName) {
|
|
|
|
|
List<Map<String, Object>> enumList = getAllMesEnums();
|
|
|
|
|
enumList.forEach(e -> {
|
|
|
|
|
String enumName = e.get("enumName").toString();
|
|
|
|
|
List<Map<String, Object>> values = (List<Map<String, Object>>) e.get("valuesList");
|
|
|
|
|
|
|
|
|
|
List<MesEnum> enums = getEnumsByEnumName(organizeCode, enumName);
|
|
|
|
|
if (CollectionUtils.isEmpty(enums)) {
|
|
|
|
|
values.forEach(v -> {
|
|
|
|
|
MesEnum mesEnum = new MesEnum();
|
|
|
|
|
mesEnum.setEnumName(enumName);
|
|
|
|
|
if (v.containsKey("value")) {
|
|
|
|
|
mesEnum.setEnumValue(v.get("value").toString());
|
|
|
|
|
}
|
|
|
|
|
if (v.containsKey("code")) {
|
|
|
|
|
mesEnum.setEnumCode(v.get("code").toString());
|
|
|
|
|
}
|
|
|
|
|
if (v.containsKey("description")) {
|
|
|
|
|
mesEnum.setEnumValueDesc(v.get("description").toString());
|
|
|
|
|
}
|
|
|
|
|
mesEnum.setOrganizeCode(organizeCode);
|
|
|
|
|
ConvertBean.serviceModelInitialize(mesEnum, userName);
|
|
|
|
|
enumRepository.save(mesEnum);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
Map<String, List<MesEnum>> enumCodeMap = enums.stream().filter(mesEnum -> !StringUtils.isEmpty(mesEnum.getEnumCode()))
|
|
|
|
|
.collect(Collectors.groupingBy(MesEnum::getEnumCode));
|
|
|
|
|
Map<String, MesEnum> enumValueMap = enums.stream().filter(mesEnum -> !StringUtils.isEmpty(mesEnum.getEnumValue()))
|
|
|
|
|
.collect(Collectors.toMap(MesEnum::getEnumValue, o -> o));
|
|
|
|
|
values.forEach(v -> {
|
|
|
|
|
MesEnum mesEnum = new MesEnum();
|
|
|
|
|
String value = null;
|
|
|
|
|
String code = null;
|
|
|
|
|
boolean hasValue = false;
|
|
|
|
|
if (v.containsKey("value")) {
|
|
|
|
|
value = v.get("value").toString();
|
|
|
|
|
if (enumValueMap.containsKey(value)) {
|
|
|
|
|
mesEnum = enumValueMap.get(value);
|
|
|
|
|
hasValue = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (v.containsKey("code")) {
|
|
|
|
|
code = v.get("code").toString();
|
|
|
|
|
}
|
|
|
|
|
if (hasValue == false) {
|
|
|
|
|
if (enumCodeMap.containsKey(code)) {
|
|
|
|
|
mesEnum = enumCodeMap.get(code).get(0);
|
|
|
|
|
hasValue = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mesEnum.setEnumName(enumName);
|
|
|
|
|
mesEnum.setEnumCode(code);
|
|
|
|
|
mesEnum.setEnumValue(value);
|
|
|
|
|
if (v.containsKey("description")) {
|
|
|
|
|
mesEnum.setEnumValueDesc(v.get("description").toString());
|
|
|
|
|
}
|
|
|
|
|
if (hasValue) {
|
|
|
|
|
ConvertBean.serviceModelUpdate(mesEnum, userName);
|
|
|
|
|
} else {
|
|
|
|
|
mesEnum.setOrganizeCode(organizeCode);
|
|
|
|
|
ConvertBean.serviceModelInitialize(mesEnum, userName);
|
|
|
|
|
}
|
|
|
|
|
enumRepository.save(mesEnum);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesEnum> getEnumsByEnumName(String organizeCode, String enumName) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(enumName, "enumName", packBean);
|
|
|
|
|
return enumRepository.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<Map<String, Object>> getAllEnums(String organizeCode) {
|
|
|
|
|
private Map<String, Object> getEnumMap(String organizeCode, String enumName) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
List<MesEnum> enums = enumRepository.findByHqlWhere(packBean);
|
|
|
|
|
Map<String, List<MesEnum>> enumMaps = enums.stream().collect(Collectors.groupingBy(MesEnum::getEnumName));
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> maps = new ArrayList<>();
|
|
|
|
|
enumMaps.forEach((k, v) -> {
|
|
|
|
|
maps.add(getEnumMap(v, k));
|
|
|
|
|
});
|
|
|
|
|
return maps;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Map<String, Object> getEnumByEnumName(String organizeCode, String enumName) {
|
|
|
|
|
return getEnumMap(getEnumsByEnumName(organizeCode, enumName), enumName);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(enumName, MesExtConstWords.ENUM_CODE, packBean);
|
|
|
|
|
MesEnum enumDb = enumRepository.getByProperty(packBean);
|
|
|
|
|
if (null == enumDb) return null;
|
|
|
|
|
List<MesEnumDetail> enumDetailList = enumDetailRepository.findByHqlWhere(packBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(enumDetailList)) return null;
|
|
|
|
|
return getEnumMap(enumDetailList, enumName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Map<String, Object> getEnumMap(List<MesEnum> enums, String enumName) {
|
|
|
|
|
private Map<String, Object> getEnumMap(List<MesEnumDetail> enumDetailList, String enumName) {
|
|
|
|
|
Map<String, Object> enumMap = new HashMap<>();
|
|
|
|
|
List<Map<String, Object>> values = new ArrayList<>();
|
|
|
|
|
enums.forEach(e -> {
|
|
|
|
|
enumDetailList.forEach(e -> {
|
|
|
|
|
Map<String, Object> value = new HashMap<>();
|
|
|
|
|
value.put("value", e.getEnumValue());
|
|
|
|
|
value.put("value", e.getDetailValue());
|
|
|
|
|
if (!StringUtils.isEmpty(e.getEnumCode())) {
|
|
|
|
|
value.put("code", e.getEnumCode());
|
|
|
|
|
value.put("code", e.getDetailCode());
|
|
|
|
|
}
|
|
|
|
|
value.put("description", e.getEnumValueDesc());
|
|
|
|
|
value.put("description", e.getDetailName());
|
|
|
|
|
values.add(value);
|
|
|
|
|
});
|
|
|
|
|
enumMap.put("enumName", enumName);
|
|
|
|
|