• Optional .ofNullable()和flatMap()构造请求参数


    1、构造的请求参数

        {
            "params": {
                "filter": {
                    "joiner": "and",
                    "conditions": [
                        {
                            "conditionName": "code",
                            "conditionValues": [
                                "A00000925"
                            ],
                            "operator": "="
                        },
                        {
                            "conditionName": "version",
                            "conditionValues": [
                                "A"
                            ],
                            "operator": "="
                        }
                    ]
                },
                "orderBy": "createTime",
                "sort": "DESC",
                "isNeedTotal": true
            }
        }

    2、实体

    import lombok.AllArgsConstructor;
    import lombok.Getter;
    import lombok.NoArgsConstructor;
    import lombok.Setter;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 条件DTO
     * @author xxx
     * @since  xxx
     */
    @NoArgsConstructor
    @AllArgsConstructor
    @Getter
    @Setter
    public class ConditionsDTO {
        // 查询条件
        private List conditions = new ArrayList<>();
    
        @NoArgsConstructor
        @Getter
        @Setter
        public static class ConditionDTO {
            // 条件名-实体对象属性名
            private String conditionName;
    
            // 查询条件值
            private List conditionValues;
    
            // 操作符,例如:=
            private String operator;
        }
    }
    

    3、实现

    public static JSONObject assembleFindCommonParam(ConditionsDTO conditionsDTO) {
        JSONObject json = new JSONObject();
        JSONObject paramsJson = new JSONObject();
        JSONObject filterJson = new JSONObject();
        filterJson.put(DmeParamConstant.JOINER, DmeParamConstant.AND);
        JSONArray jsonArray = new JSONArray();
        Optional .ofNullable(conditionsDTO)
                .map(obj -> obj.getConditions())
                .stream()
                .flatMap(Collection::stream)
                .filter(Objects::nonNull)
                .forEach(obj -> {
                    JSONObject conditionJson = new JSONObject();
                    conditionJson.put(DmeParamConstant.CONDITION_NAME, obj.getConditionName());
                    conditionJson.put(DmeParamConstant.CONDITION_VALUES, obj.getConditionValues());
                    conditionJson.put(DmeParamConstant.OPERATOR, obj.getOperator());
                    jsonArray.add(conditionJson);
                });
        filterJson.put(DmeParamConstant.CONDITIONS, jsonArray);
        paramsJson.put(DmeParamConstant.FILTER, filterJson);
        paramsJson.put(DmeParamConstant.ORDER_BY, DmeParamConstant.CREATE_TIME);
        paramsJson.put(DmeParamConstant.SORT, DmeParamConstant.DESC);
        paramsJson.put(DmeParamConstant.IS_NEED_TOTAL, true);
        json.put(DmeParamConstant.PARAMS, paramsJson);
        return json;
    }
  • 相关阅读:
    js中await用法
    图像处理与计算机视觉--第五章-图像分割-霍夫变换
    【C++】教大家在七夕new一个对象
    7-1 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承) (10分)
    电脑wifi丢失修复
    在谷歌浏览器上注册账号--具有偶然性的成功
    三、Go环境安装
    Nacos 长轮询实现方式-配置中心源码
    黑马JVM总结(二十四)
    [Linux调查局] 编译过程
  • 原文地址:https://blog.csdn.net/qingcyb/article/details/133933654