• 值集客户端


    一、简介

    1.1 概述

    本客户端依赖于HPFM平台服务的值集功能

    1.2 组件坐标

    <dependency>
        <groupId>org.hzero.boot</groupId>
        <artifactId>hzero-boot-platform</artifactId>
        <version>${hzero.boot.version}</version>
    </dependency>
    

    1.3 功能特性

    二、使用说明

    2.1 Lov Sql Data API

    若需开启此功能,在application.yaml中添加如下配置即可

    hzero:
      lov:
        sql:
          enabled: true
    

    然后启动服务,可以在swagger-ui中找到以下API则说明启用成功
    lov-sql-data-api.png

    2.2 固定值集的访问类

    org.hzero.boot.platform.lov.adapter.LovValueAdapter
    

    若需开启此功能,在application.yaml中添加如下配置即可

    hzero:
      lov:
        value:
          enabled: true
    

    方法 List<LovValueDTO> queryLovValue(String lovCode, Long tenantId)
    描述 根据值集代码查询值集值
    Parameters
    lovCode 值集代码
    tenantId 租户ID(全局值集可不传此参数)
    Returns 查询到的值集值列表,无权访问时返回null

    ==> queryLovValue("HPFM.LOV.LOV_TYPE", null)
    <== [{"value":"IDP","meaning":"独立值集"},{"value":"SQL","meaning":"自定义SQL","tag":"tag1"},{"value":"URL","meaning":"URL","tag":"tag2"}]

    2.3 固定值集翻译

    此功能依赖于固定值集的访问类,使用前需确认依赖功能可以使用
    此功能基于Spring AOP,拦截所有被@ProcessLovValue注解标注的,被spring代理的方法。自动根据给定配置将返回值中的快码value翻译成meaning。


    @ProcessLovValue [Target = METHOD]

    用以标注一个方法的返回值会进行固定值集翻译

    属性 说明
    String[] targetField() default "" 说明待处理的对象在返回值的哪个字段中,不指定的话默认处理返回值本身
    * 指定字段为Page、List等Collection接口时,将会循环处理Collection中的每一个对象
    * 方法返回值为头行结构的Object,使用@ProcessLovValue(targetField = {"", "children", "children.subChildren"}),扫描自身和children字段所包含对象(或Collection)以及children对象中的subChildren字段(嵌套深度无限制)
    * 方法返回值为ResponseEntity,实际对象是在其body字段中,使用@ProcessLovValue(targetField = {"body"})

    @LovValue [Target = FIELD]

    用以标注类中某字段的值需要进行固定值集翻译

    属性 说明
    String lovCode() default '' 值集值所在的值集代码
    String meaningField() default '' 处理后的含义值放在哪个字段中
    不设置则进行默认映射,将注解所在字段名末尾的Code(如果有)替换为Meaning
    例:
    * statusCode -> statusMeaning
    * processStatus -> processStatusMeaning
    * codeTypeCode -> codeTypeMeaning
    String defaultMeaning() default '' 如果处理失败,含义字段默认设置的值,默认为原value

    使用示例:

    目标方法:

        ...
        @ProcessLovValue(targetField = BaseConstants.FIELD_BODY)
        public ResponseEntity<?> queryCompanyActionHistory(@PathVariable Long companyId) {
            List<CompanyActionDTO> list = this.companyActionRepository.queryCompanyActionHistory(companyId);
            return Results.success(list);
        }
        ```
    

    目标对象:

        ...
        @NotEmpty
        @LovValue(lovCode = "SPFM.COMPANY_PROCESS_STATUS")
        private ProcessStatus processStatus;
        private String processStatusMeaning;
        ...
    

    使用前:

    [
      ...
      {
        "companyActionId": 65,
        "processUser": 3,
        "processDate": "2018-07-18 00:00:00",
        "processStatus": "SUBMIT",
        "processUserName": "汉得租户管理员"
      }
      ...
    ]
    

    使用后:

    [
      ...
      {
        "companyActionId": 65,
        "processUser": 3,
        "processDate": "2018-07-18 00:00:00",
        "processStatus": "SUBMIT",
        "processUserName": "汉得租户管理员",
        "processStatusMeaning": "已提交"
      }
      ...
    ]
    

    三、定制化开发

    组件可定制化开发并通过重写org.hzero.boot.platform.lov.autoconfigure.LovAutoConfiguration实现个性化配置
    组件清单如下:

    四、 版本更新日志

    版本 0.3.0-SNAPSHOT [2018-10-12]

    版本 0.1.0-SNAPSHOT [2018-07-18]

    展望