package com.estate.expert.admin.domain.project.enums; import com.estate.expert.admin.domain.common.option.IOptionVo; import io.swagger.annotations.ApiModel; import lombok.Getter; import java.util.ArrayList; import java.util.List; @ApiModel("项目类型") @Getter public enum ProjectType implements IOptionVo { HOUSE_CONSTRUCTION("房建工程"), // 房建工程 MUNICIPAL_ADMINISTRATION("市政工程"), // 市政工程 FIXED_ASSETS("固定资产"); // 固定资产 final String desc; private List projectUsageTypes; ProjectType(String desc) { this.desc = desc; this.projectUsageTypes = new ArrayList<>(); } public static ProjectType getByDesc(String desc) { for (ProjectType projectType : ProjectType.values()) { if (projectType.getDesc().equals(desc)) { return projectType; } } return null; } public void linkPurposeType(ProjectUsageType projectUsageType) { this.projectUsageTypes.add(projectUsageType); } static { // 房建工程关联用途类型 HOUSE_CONSTRUCTION.linkPurposeType(ProjectUsageType.RESIDENTIAL); HOUSE_CONSTRUCTION.linkPurposeType(ProjectUsageType.COMMERCIAL); // 市政工程关联用途类型 MUNICIPAL_ADMINISTRATION.linkPurposeType(ProjectUsageType.ROAD); MUNICIPAL_ADMINISTRATION.linkPurposeType(ProjectUsageType.BRIDGE); MUNICIPAL_ADMINISTRATION.linkPurposeType(ProjectUsageType.TUNNEL_WORKS); // 固定资产关联用途类型 FIXED_ASSETS.linkPurposeType(ProjectUsageType.RETAIL); FIXED_ASSETS.linkPurposeType(ProjectUsageType.FOOD); FIXED_ASSETS.linkPurposeType(ProjectUsageType.EDUCATION); FIXED_ASSETS.linkPurposeType(ProjectUsageType.MEDICAL_BEAUTY); FIXED_ASSETS.linkPurposeType(ProjectUsageType.ENTERTAINMENT); FIXED_ASSETS.linkPurposeType(ProjectUsageType.HOTEL); FIXED_ASSETS.linkPurposeType(ProjectUsageType.REFIT); FIXED_ASSETS.linkPurposeType(ProjectUsageType.PUBLIC_PLACE); FIXED_ASSETS.linkPurposeType(ProjectUsageType.ENERGY_STATION); FIXED_ASSETS.linkPurposeType(ProjectUsageType.MULTI_FUNCTION_COMPLEX); } @Override public String getOptionCode() { return name(); } @Override public String getOptionName() { return desc; } }