lihang
2023-04-17 7b157aa56608423c9e7de63e12240e8044b3afd9
元数据管理ver初始
已添加19个文件
1142 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/OmdAttributeCache.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/OmdCacheConstant.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/OmdAttributeDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/OmdAttribute.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/OmdFieldRange.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/OmdCompareTypeEnum.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/OmdFieldTypeEnum.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IOmdAttributeClient.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IOmdAttributeFallback.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/OmdAttributeVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/OmdFieldRangeVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/OmdAttributeController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/OmdAttributeClient.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/OmdAttributeMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IOmdAttributeService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/OmdAttributeServiceImpl.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/OmdAttributeWrapper.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/OmdFiledRangeWrapper.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/OmdAttributeMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/cache/OmdAttributeCache.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.vci.ubcs.omd.cache;
import com.vci.ubcs.omd.entity.OmdAttribute;
import com.vci.ubcs.omd.feign.IOmdAttributeClient;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.core.tool.utils.StringPool;
import java.util.List;
import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE;
/**
 * å…ƒæ•°æ®(属性)缓存工具类
 *
 * @author Chill
 */
public class OmdAttributeCache {
    private static final String ATTR_ID = "attr:id";
    private static final String ATTR_LIST = "attr:list";
    private static final String ATTR_CACHE = "ubcs:attr";
    private static IOmdAttributeClient attrClient;
    private static IOmdAttributeClient getAttributeClient() {
        if (attrClient == null) {
            attrClient = SpringUtil.getBean(IOmdAttributeClient.class);
        }
        return attrClient;
    }
    /**
     * èŽ·å–å…ƒæ•°æ®å®žä½“
     *
     * @param id ä¸»é”®
     * @return å…ƒæ•°æ®å®žä½“对象
     */
    public static OmdAttribute getById(Long id) {
        String keyPrefix = ATTR_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(ATTR_CACHE, keyPrefix, id, () -> {
            R<OmdAttribute> result = getAttributeClient().getById(id);
            return result.getData();
        });
    }
    /**
     * èŽ·å–å…ƒæ•°æ®é›†åˆ
     *
     * @param key å±žæ€§åç§°
     */
    public static List<OmdAttribute> getList(String key) {
        String keyPrefix = ATTR_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(DICT_CACHE, keyPrefix, key, () -> {
            R<List<OmdAttribute>> result = getAttributeClient().getList(key);
            return result.getData();
        });
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/OmdCacheConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.vci.ubcs.omd.constant;
/**
 * Description:
 *
 * @author LiHang
 * @date 2023/4/4
 */
public class OmdCacheConstant {
    /**
     * å…ƒæ•°æ®
     */
    public static final String ATTR_CACHE = "ubcs:attr";
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/dto/OmdAttributeDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.vci.ubcs.omd.dto;
import com.vci.ubcs.omd.entity.OmdAttribute;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * Description: å…ƒæ•°æ®é¡µé¢ä¼ è¾“对象
 *
 * @author LiHang
 * @date 2023/4/4
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class OmdAttributeDTO extends OmdAttribute {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 5515095331865594996L;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/OmdAttribute.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,173 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.data.annotation.Transient;
import javax.validation.constraints.NotNull;
/**
 * Description: å…ƒæ•°æ®(属性池)
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@TableName("pl_omd_attribute")
@ApiModel(value = "属性对象", description = "属性对象")
public class OmdAttribute extends BaseEntity {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = -6792640675358002410L;
    /**
     * ç§Ÿæˆ·ID
     */
    @ApiModelProperty(value = "租户ID")
    private String tenantId;
    /**
     * å­—段编号
     */
    @ApiModelProperty(value = "字段编号")
    @NotNull
    private String key;
    /**
     * å­—段名称
     */
    @ApiModelProperty(value = "字段名称")
    private String label;
    /**
     * å±žæ€§ç±»åž‹å­—典码
     */
    @ApiModelProperty(value = "属性类型字典码")
    private String typeCode;
    /**
     * å±žæ€§ç±»åž‹å­—典值
     */
    @ApiModelProperty(value = "属性类型字典值")
    private String typeKey;
    /**
     * å±žæ€§ç±»åž‹å­—典显示名称
     */
    @Transient
    private String typeValue;
    /**
     * æ ‡ç­¾
     */
    @ApiModelProperty(value = "标签")
    private String hashtag;
    /**
     * æè¿°
     */
    @ApiModelProperty(value = "描述")
    private String description;
    /**
     * æ˜¯å¦ä¸ºç©º
     */
    @ApiModelProperty("是否为空")
    private String nullable;
    /**
     * æœ€å¤§é•¿åº¦
     */
    @ApiModelProperty("最大长度")
    private Integer maxLength;
    /**
     * ç²¾åº¦
     */
    @ApiModelProperty("精度")
    private Integer precision;
    /**
     * å‚照的类型
     */
    @ApiModelProperty("参照类型字典码")
    private String referTypeCode;
    /**
     * å‚照类型字典值
     */
    @ApiModelProperty("参照类型字典值")
    private String referTypeKey;
    /**
     * å‚照类型字典显示名称
     */
    @Transient
    private String referTypeValue;
    /**
     * å‚照对象
     */
    @ApiModelProperty("参照的主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long referToId;
    /**
     * å‚照对象的名称
     */
    @ApiModelProperty("参照对象名称")
    private String referToName;
    /**
     * ä½¿ç”¨å­—å…¸
     */
    @ApiModelProperty("使用字典")
    private String usingDict;
    /**
     * å­—典码
     */
    @ApiModelProperty("字典码")
    private String dictCode;
    /**
     * å­—典键值
     */
    @ApiModelProperty("字典键值")
    private String dictKey;
    /**
     * å­—典显示值
     */
    @Transient
    private String dictValue;
    /**
     * é»˜è®¤å€¼
     */
    @ApiModelProperty("默认值")
    private String defaultValue;
    /**
     * æ¯”较方式
     */
    @Transient
    private String calculateType;
    /**
     * æ¯”较值
     */
    @Transient
    private String calculateValue;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/OmdFieldRange.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.vci.ubcs.omd.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springblade.core.mp.base.BaseEntity;
/**
 * Description: å­—段范围
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@TableName("pl_omd_field_range")
@ApiModel(value = "字段范围",description = "字段范围")
public class OmdFieldRange extends BaseEntity {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 7849276277821126507L;
    /**
     * æ¯”较方式
     */
    @ApiModelProperty("比较方式")
    private String calculateType;
    /**
     * æ¯”较值
     */
    @ApiModelProperty("比较值")
    private String calculateValue;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/OmdCompareTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package com.vci.ubcs.omd.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * Description: å±žæ€§ç±»åž‹æžšä¸¾
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Getter
@AllArgsConstructor
public enum OmdCompareTypeEnum {
    /**
     * å¤§äºŽ
     */
    GRATE_THAN("grate_than",">"),
    /**
     * å°äºŽ
     */
    LESS_THAN("less_than","<"),
    /**
     * å¤§äºŽç­‰äºŽ
     */
    GRATE_EQUAL("grate_equal",">="),
    /**
     * å°äºŽç­‰äºŽ
     */
    LESS_EQUAL("less_equal","<="),
    /**
     * ç­‰äºŽ
     */
    EQUAL("equal","="),
    /**
     * ä¸ç­‰äºŽ
     */
    NOT_EQUAL("not_equal","!="),
    /**
     * èŒƒå›´
     */
    BETWEEN("between","[]"),
    ;
    /**
     * ç¼–号
     */
    private final String value;
    /**
     * æ˜¾ç¤ºå€¼
     */
    private final String text;
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (OmdCompareTypeEnum item : OmdCompareTypeEnum.values()) {
            if (item.getText().equalsIgnoreCase(text)) {
                return item.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (OmdCompareTypeEnum item : OmdCompareTypeEnum.values()) {
            if (item.getValue().equalsIgnoreCase(value)) {
                return item.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡
     */
    public static OmdCompareTypeEnum forValue(String value) {
        for (OmdCompareTypeEnum item : OmdCompareTypeEnum.values()) {
            if (item.getValue().equalsIgnoreCase(value)) {
                return item;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/enums/OmdFieldTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.vci.ubcs.omd.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * Description: å±žæ€§ç±»åž‹æžšä¸¾
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Getter
@AllArgsConstructor
public enum OmdFieldTypeEnum {
    /**
     * å­—符串
     */
    VTSTRING("VTString","字符串"),
    /**
     * æ•´æ•°
     */
    VTINTEGER("VTInteger","整数"),
    /**
     * å¸ƒå°”
     */
    VTBOOLEAN("VTBoolean","布尔"),
    /**
     * é•¿æ•´æ•°
     */
    VTLONG("VTLong","长整数"),
    /**
     * æµ®ç‚¹æ•°
     */
    VTDOUBLE("VTDouble","浮点数"),
    /**
     * æ—¥æœŸ
     */
    VTDATE("VTDate","日期"),
    /**
     * æ—¶é—´
     */
    VTTIME("VTTime","时间"),
    /**
     * æ—¥æœŸæ—¶é—´
     */
    VTDATETIME("VTDateTime","日期时间"),
    ;
    /**
     * ç¼–号
     */
    private final String value;
    /**
     * æ˜¾ç¤ºå€¼
     */
    private final String text;
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (OmdFieldTypeEnum item : OmdFieldTypeEnum.values()) {
            if (item.getText().equalsIgnoreCase(text)) {
                return item.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (OmdFieldTypeEnum item : OmdFieldTypeEnum.values()) {
            if (item.getValue().equalsIgnoreCase(value)) {
                return item.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡
     */
    public static OmdFieldTypeEnum forValue(String value) {
        for (OmdFieldTypeEnum item : OmdFieldTypeEnum.values()) {
            if (item.getValue().equalsIgnoreCase(value)) {
                return item;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IOmdAttributeClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.OmdAttribute;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * Feign接口类
 *
 * @author Chill
 */
@FeignClient(
    value = AppConstant.APPLICATION_NAME_OMD,
    fallback = IOmdAttributeFallback.class
)
public interface IOmdAttributeClient {
    String API_PREFIX = "/client";
    String GET_BY_ID = API_PREFIX + "/attribute/get-by-id";
    String GET_LIST = API_PREFIX + "/attribute/get-list";
    /**
     * èŽ·å–å…ƒæ•°æ®å¯¹è±¡
     * @param id ä¸»é”®
     * @return å…ƒæ•°æ®å¯¹è±¡
     */
    @GetMapping(GET_BY_ID)
    R<OmdAttribute> getById(@RequestParam("id") Long id);
    /**
     * èŽ·å–å…ƒæ•°æ®åˆ—è¡¨
     * @param key æŸ¥è¯¢å±žæ€§å
     * @return å…ƒæ•°æ®åˆ—表
     */
    @GetMapping(GET_LIST)
    R<List<OmdAttribute>> getList(@RequestParam("key") String key);
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IOmdAttributeFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill åº„骞 (smallchill@163.com)
 */
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.OmdAttribute;
import org.springblade.core.tool.api.R;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Feign失败配置
 *
 * @author Chill
 */
@Component
public class IOmdAttributeFallback implements IOmdAttributeClient {
    @Override
    public R<OmdAttribute> getById(Long id) {
        return R.fail("获取数据失败");
    }
    @Override
    public R<List<OmdAttribute>> getList(String code) {
        return R.fail("获取数据失败");
    }
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/OmdAttributeVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.vci.ubcs.omd.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.vci.ubcs.omd.entity.OmdAttribute;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
 * Description: å…ƒæ•°æ®æ˜¾ç¤ºå¯¹è±¡
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "元数据显示对象", description = "元数据显示对象")
public class OmdAttributeVO extends OmdAttribute {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 279638479374768539L;
    /**
     * ä¸»é”®ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    @ApiModelProperty("字段范围")
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    List<OmdFieldRangeVO> fieldRanges;
}
Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/OmdFieldRangeVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.vci.ubcs.omd.vo;
import com.vci.ubcs.omd.entity.OmdFieldRange;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * Description: å­—段范围显示对象
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "字段范围显示对象", description = "字段范围显示对象")
public class OmdFieldRangeVO extends OmdFieldRange {
    /**
     * åºåˆ—化
     */
    private static final long serialVersionUID = 1770817945737478318L;
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/OmdAttributeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.vci.ubcs.omd.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.omd.constant.OmdCacheConstant;
import com.vci.ubcs.omd.dto.OmdAttributeDTO;
import com.vci.ubcs.omd.entity.OmdAttribute;
import com.vci.ubcs.omd.service.IOmdAttributeService;
import com.vci.ubcs.omd.vo.OmdAttributeVO;
import com.vci.ubcs.omd.wrapper.OmdAttributeWrapper;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
 * Description: å…ƒæ•°æ®(属性)控制器
 *
 * @author LiHang
 * @date 2023/4/3
 */
@NonDS
@RestController
@AllArgsConstructor
@RequestMapping("/attribute")
@Api(value = "元数据控制器", tags = "元数据控制器")
public class OmdAttributeController extends BladeController {
    /**
     * å…ƒæ•°æ®æœåŠ¡
     */
    private IOmdAttributeService attributeService;
    /**
     * æŸ¥çœ‹è¯¦æƒ…
     * @param id ä¸»é”®
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "查看详情", notes = "传入主键")
    public R<OmdAttributeVO> detail(Long id) {
        return R.data(attributeService.getAttributeDetail(id));
    }
    /**
     * åˆ—表
     * @param condition æŸ¥è¯¢æ¡ä»¶
     * @return æ‰§è¡Œç»“æžœ
     */
    @GetMapping("/list")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "key", value = "属性名", paramType = "query", dataType = "string"),
    })
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "查询列表", notes = "传入查询")
    public R<List<OmdAttributeVO>> list(@ApiIgnore @RequestParam Map<String, Object> condition) {
        return R.data(OmdAttributeWrapper.build().listEntityVO(attributeService.list(Condition.getQueryWrapper(condition, OmdAttribute.class).lambda().orderByAsc(OmdAttribute::getKey))));
    }
    /**
     * æ–°å¢žæˆ–修改
     * @param dto å…ƒæ•°æ®é¡µé¢ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "新增或修改", notes = "传入元数据对象")
    public R submit(@Valid @RequestBody OmdAttributeDTO dto) {
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return R.status(attributeService.submit(dto));
    }
    /**
     * åˆ é™¤
     * @param ids ä¸»é”®é›†åˆ
     * @return æ‰§è¡Œç»“æžœ
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "删除", notes = "主键集合")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return R.status(attributeService.removeAttrs(ids));
    }
    /**
     * æŸ¥çœ‹åº”用范围
     * @param id ä¸»é”®
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @GetMapping("/applyRange")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "查看应用范围",notes = "传入主键")
    public R applyRange(Long id){
        return R.data(attributeService.applyRange(id));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/OmdAttributeClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.vci.ubcs.omd.feign;
import com.vci.ubcs.omd.entity.OmdAttribute;
import com.vci.ubcs.omd.service.IOmdAttributeService;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Description: å…ƒæ•°æ®æœåŠ¡feign调用类
 *
 * @author LiHang
 * @date 2023/4/4
 */
@NonDS
@ApiIgnore
@RestController
@AllArgsConstructor
public class OmdAttributeClient implements IOmdAttributeClient{
    private final IOmdAttributeService service;
    @Override
    @GetMapping(GET_BY_ID)
    public R<OmdAttribute> getById(Long id) {
        return R.data(service.getById(id));
    }
    @Override
    @GetMapping(GET_LIST)
    public R<List<OmdAttribute>> getList(String key) {
        Map<String,Object> condition = new HashMap<>();
        condition.put("key",key);
        return R.data(service.list(Condition.getQueryWrapper(condition, OmdAttribute.class).lambda().orderByAsc(OmdAttribute::getKey)));
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/OmdAttributeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.vci.ubcs.omd.mapper;
import com.vci.ubcs.omd.entity.OmdAttribute;
import org.springblade.core.mp.mapper.BladeMapper;
import java.util.Collection;
import java.util.List;
/**
 * Description:元数据数据层
 *
 * @author LiHang
 * @date 2023/4/3
 */
public interface OmdAttributeMapper extends BladeMapper<OmdAttribute> {
    /**
     * æŸ¥è¯¢å…¨éƒ¨
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<OmdAttribute> selectAll();
    /**
     * ä¸»é”®æŸ¥è¯¢
     * @param primaryKey ä¸»é”®
     * @return æŸ¥è¯¢ç»“æžœ
     */
    OmdAttribute selectByPrimaryKey(Long primaryKey);
    /**
     * ä¸»é”®æ‰¹é‡æŸ¥è¯¢
     * @param primaryKeyCollection ä¸»é”®é›†åˆ
     * @return æŸ¥è¯¢ç»“æžœ
     */
    List<OmdAttribute> selectByPrimaryKeyCollection(Collection<String> primaryKeyCollection);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IOmdAttributeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.vci.ubcs.omd.service;
import com.vci.ubcs.omd.dto.OmdAttributeDTO;
import com.vci.ubcs.omd.entity.OmdAttribute;
import com.vci.ubcs.omd.vo.OmdAttributeVO;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
 * Description: å…ƒæ•°æ®(属性)的服务接口
 *
 * @author LiHang
 * @date 2023/4/3
 */
public interface IOmdAttributeService extends BaseService<OmdAttribute> {
    /**
     * èŽ·å–å…ƒæ•°æ®è¯¦æƒ…
     * @param id ä¸»é”®
     * @return å…ƒæ•°æ®æ˜¾ç¤ºå¯¹è±¡
     */
    OmdAttributeVO getAttributeDetail(Long id);
    /**
     * æ–°å¢žæˆ–修改
     * @param dto é¡µé¢ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    boolean submit(OmdAttributeDTO dto);
    /**
     * åˆ é™¤
     * @param ids ä¸»é”®é›†åˆ
     * @return æ‰§è¡Œç»“æžœ
     */
    boolean removeAttrs(String ids);
    /**
     * æŸ¥çœ‹åº”用范围
     * @param id ä¸»é”®
     * @return æŸ¥è¯¢å·²åº”用的业务类型名称
     */
    List<String> applyRange(Long id);
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/OmdAttributeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.vci.ubcs.omd.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.core.log.exception.ServiceException;
import com.vci.ubcs.omd.constant.OmdCacheConstant;
import com.vci.ubcs.omd.dto.OmdAttributeDTO;
import com.vci.ubcs.omd.entity.OmdAttribute;
import com.vci.ubcs.omd.mapper.OmdAttributeMapper;
import com.vci.ubcs.omd.service.IOmdAttributeService;
import com.vci.ubcs.omd.vo.OmdAttributeVO;
import com.vci.ubcs.omd.wrapper.OmdAttributeWrapper;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotEmpty;
import java.util.ArrayList;
import java.util.List;
/**
 * Description: å…ƒæ•°æ®(属性)的服务
 *
 * @author LiHang
 * @date 2023/4/3
 */
@Service
public class OmdAttributeServiceImpl extends ServiceImpl<OmdAttributeMapper, OmdAttribute>  implements IOmdAttributeService {
    @Override
    public boolean deleteLogic(@NotEmpty List<Long> ids) {
        return false;
    }
    @Override
    public boolean changeStatus(@NotEmpty List<Long> ids, Integer status) {
        return false;
    }
    /**
     * èŽ·å–å…ƒæ•°æ®è¯¦æƒ…
     *
     * @param id ä¸»é”®
     * @return å…ƒæ•°æ®æ˜¾ç¤ºå¯¹è±¡
     */
    @Override
    public OmdAttributeVO getAttributeDetail(Long id) {
        Func.requireNotNull(id,"主键不能为空");
        return OmdAttributeWrapper.build().entityVO(baseMapper.selectByPrimaryKey(id));
    }
    /**
     * æ–°å¢žæˆ–修改
     *
     * @param dto é¡µé¢ä¼ è¾“对象
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public boolean submit(OmdAttributeDTO dto) {
        LambdaQueryWrapper<OmdAttribute> wrapper = Wrappers.<OmdAttribute>query().lambda().eq(OmdAttribute::getKey, dto.getKey());
        Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(OmdAttribute::getId, dto.getId()));
        if (count > 0L) {
            throw new ServiceException("属性名已存在!");
        }
        dto.setIsDeleted(BladeConstant.DB_NOT_DELETED);
        OmdAttribute omdAttribute = BeanUtil.copy(dto, OmdAttribute.class);
        CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
        return saveOrUpdate(omdAttribute);
    }
    /**
     * åˆ é™¤
     *
     * @param ids ä¸»é”®é›†åˆ
     * @return æ‰§è¡Œç»“æžœ
     */
    @Override
    public boolean removeAttrs(String ids) {
        List<Long> idList = Func.toLongList(ids);
        return !deleteLogic(idList) && removeByIds(idList);
    }
    /**
     * æŸ¥çœ‹åº”用范围
     *
     * @param id ä¸»é”®
     * @return æŸ¥è¯¢å·²åº”用的业务类型名称
     */
    @Override
    public List<String> applyRange(Long id) {
        return new ArrayList<>();
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/OmdAttributeWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.cache.DictBizCache;
import com.vci.ubcs.omd.entity.OmdAttribute;
import com.vci.ubcs.omd.vo.*;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.StringUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * å…ƒæ•°æ®å¯¹è±¡çš„包装类,返回视图层所需的字段
 *
 * @author LiHang
 * @date 2023/4/3
 */
public class OmdAttributeWrapper extends BaseEntityWrapper<OmdAttribute, OmdAttributeVO> {
    public static OmdAttributeWrapper build() {
        return new OmdAttributeWrapper();
    }
    /**
     * do2vo
     * @param entity pojo
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    @Override
    public OmdAttributeVO entityVO(OmdAttribute entity) {
        OmdAttributeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, OmdAttributeVO.class));
        vo.setTypeValue(DictBizCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
        if (StringUtil.isNotBlank(vo.getReferTypeCode())){
            vo.setReferTypeValue(DictBizCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
        }
        if (StringUtil.isNotBlank(vo.getDictCode())){
            vo.setDictValue(DictBizCache.getValue(vo.getDictCode(),vo.getDictKey()));
        }
        return vo;
    }
    /**
     * æ‰¹é‡è½¬vo
     * @param list pojo集合
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    public List<OmdAttributeVO> listEntityVO(List<OmdAttribute> list) {
        return list.stream().map(this::entityVO).collect(Collectors.toList());
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/OmdFiledRangeWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.vci.ubcs.omd.wrapper;
import com.vci.ubcs.omd.entity.OmdFieldRange;
import com.vci.ubcs.omd.vo.OmdFieldRangeVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * Description: å­—段范围的包装类
 *
 * @author LiHang
 * @date 2023/4/3
 */
public class OmdFiledRangeWrapper extends BaseEntityWrapper<OmdFieldRange, OmdFieldRangeVO> {
    public static OmdFiledRangeWrapper build() {
        return new OmdFiledRangeWrapper();
    }
    /**
     * do2vo
     * @param entity pojo
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    @Override
    public OmdFieldRangeVO entityVO(OmdFieldRange entity) {
        OmdFieldRangeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, OmdFieldRangeVO.class));
        return vo;
    }
    /**
     * æ‰¹é‡è½¬vo
     * @param list pojo集合
     * @return æ˜¾ç¤ºå¯¹è±¡
     */
    public List<OmdFieldRangeVO> listEntityVO(List<OmdFieldRange> list) {
        return list.stream().map(this::entityVO).collect(Collectors.toList());
    }
}
Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/OmdAttributeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
<?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.vci.ubcs.omd.mapper.OmdAttributeMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="baseResultMap" type="com.vci.ubcs.omd.entity.OmdAttribute">
        <id column="id" property="id"/>
        <result column="create_user" property="createUser" jdbcType="NUMBER"/>
        <result column="create_dept" property="createDept" jdbcType="NUMBER"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_user" property="updateUser" jdbcType="NUMBER"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
        <result column="status" property="status" jdbcType="NUMBER"/>
        <result column="is_deleted" property="isDeleted" jdbcType="NUMBER"/>
        <result column="tenant_id" property="tenantId" jdbcType="NUMBER"/>
        <result column="key" property="key" jdbcType="VARCHAR"/>
        <result column="label" property="label" jdbcType="VARCHAR"/>
        <result column="type" property="type" jdbcType="VARCHAR"/>
        <result column="hashtag" property="hashtag" jdbcType="VARCHAR"/>
        <result column="description" property="description" jdbcType="VARCHAR"/>
    </resultMap>
    <resultMap id="extraResultMap" type="com.vci.ubcs.omd.entity.OmdAttribute">
        <result column="nullable" property="nullable" jdbcType="VARCHAR"/>
        <result column="max_length" property="maxLength" jdbcType="NUMBER"/>
        <result column="precision" property="precision" jdbcType="NUMBER"/>
        <result column="refer_to_id" property="referToId" jdbcType="NUMBER"/>
        <result column="refer_type" property="referType" jdbcType="VARCHAR"/>
        <result column="refer_to_name" property="referToName" jdbcType="VARCHAR"/>
        <result column="using_enum" property="usingEnum" jdbcType="VARCHAR"/>
        <result column="enum_key" property="enumKey" jdbcType="VARCHAR"/>
        <result column="enum_name" property="enumName" jdbcType="VARCHAR"/>
        <result column="default_value" property="defaultValue" jdbcType="VARCHAR"/>
        <result column="calculate_type" property="calculateType" jdbcType="VARCHAR"/>
        <result column="calculate_value" property="calculateValue" jdbcType="VARCHAR"/>
    </resultMap>
</mapper>