mes枚举

tags/yfai-mes-ext-v1.0
王杰 10 months ago
parent ff001be549
commit 3826df02ee

@ -3,32 +3,14 @@ package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesEnum;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
public interface IMesEnumExtService extends IBaseMesService<MesEnum>{
@ApiOperation("获取所有mes枚举")
List<Map<String, Object>> getAllMesEnums();
@ApiOperation("根据枚举名获取枚举")
Map<String, Object> doGetMesEnumByEnumName(String enumName);
Map<String, Object> doGetMesEnumByEnumName(String organizeCode, String enumName);
@ApiOperation("通过class获取枚举")
Map<String, Object> getEnumByClazzEnum(String enumName, Class clazz);
@ApiOperation("通过class获取枚举的values")
List<Map<String, Object>> getEnumValuesByClazzEnum(String var1, Class var2);
@ApiOperation("根据枚举key获取枚举对应的value 获取缓存中的语言")
Map<String, String> getEnumLangeuageKeyByClazzEnum(Class var1);
@ApiOperation("新增或更新枚举")
void saveEnums(String var1, String var2);
@ApiOperation("获取所有枚举")
List<Map<String, Object>> getAllEnums(String var1);
@ApiOperation("根据枚举名获取枚举")
Map<String, Object> getEnumByEnumName(String var1, String var2);
}

@ -3,20 +3,20 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesEnumExtService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.base.controller.MesBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
@ -37,27 +37,49 @@ public class BaseExtDataController extends MesBaseController {
@GetMapping(value = "/enumlist")
@ApiOperation(value = "获取MES系统所有枚举")
public ResultBean enumlist(@RequestParam(name = "enumName", required = false) String enumName) {
List<Map<String, Object>> mapList;
Map<String, Object> map;
public ResultBean enumlist(@RequestParam(name = "enumName") String enumName) {
try {
if (StringUtils.isEmpty(enumName)) {
mapList = enumService.getAllMesEnums();
return ResultBean.success("查询成功")
.setResultList(mapList)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} else {
map = enumService.doGetMesEnumByEnumName(enumName);
return ResultBean.success("查询成功")
.setResultObject(map)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}
Map<String, Object> map = enumService.doGetMesEnumByEnumName(AuthUtil.getOrganize().getOrganizeCode(), enumName);
return ResultBean.success("查询成功")
.setResultObject(map)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/enumlist-clazz")
@ApiOperation(value = "获取MES系统所有枚举")
public ResultBean enumlist(@RequestParam(name = "enumName") String enumName, @RequestParam(name = "className") String className) {
try {
Class clazz = Class.forName(className);
Map<String, Object> map = enumService.getEnumByClazzEnum(enumName, clazz);
return ResultBean.success("查询成功")
.setResultObject(map)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/enumlist-default")
@ApiOperation(value = "获取MES系统所有枚举")
public ResultBean defaultEnumlist(@RequestParam(name = "enumName") String enumName) {
try {
Map<String, Object> map = enumService.getEnumByClazzEnum(enumName, MesExtEnumUtil.class);
return ResultBean.success("查询成功")
.setResultObject(map)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

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

@ -127,6 +127,8 @@ public class MesExtConstWords {
public static final String LOG_TYPE = "logType";
//信息类型
public static final String MESSAGE_TYPE = "messageType";
//枚举代码
public static final String ENUM_CODE = "enumCode";
//时间[开始/结束]条件
public static final String START_TIME_START = "startTimeStart";

Loading…
Cancel
Save