package com.zy.acs.manager.manager.enums; import com.zy.acs.framework.common.SpringUtils; import com.zy.acs.manager.common.exception.BusinessException; import com.zy.acs.manager.common.utils.DataFieldSortFunc; import com.zy.acs.manager.manager.entity.TaskSts; import com.zy.acs.manager.manager.service.TaskStsService; import java.util.Arrays; import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public enum TaskStsType implements DataFieldSortFunc { INIT(1), WAITING(2), ASSIGN(3), PROGRESS(4), COMPLETE(5), CANCEL(6), ; public int dataSort; TaskStsType(int dataSort) { this.dataSort = dataSort; } private static final Map cache = new EnumMap<>(TaskStsType.class); public long val() { return cache.computeIfAbsent(this, key -> { TaskStsService service = SpringUtils.getBean(TaskStsService.class); TaskSts taskSts = service.selectByUuid(key.toString()); if (taskSts == null) { throw new BusinessException("TaskStsType Error for " + key); } return taskSts.getId(); }); } @Override public List getDataFieldSort() { return Arrays.stream(TaskStsType.values()) .sorted((e1, e2) -> Integer.compare(e1.dataSort, e2.dataSort)) .map(Enum::name) .collect(Collectors.toList()); } }