• 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;
    }
  • 相关阅读:
    色彩空间
    医院项目-预约挂号-第7部分
    时间复杂度、空间复杂度的学习总结
    IgA | 对抗病原菌,帮助共生菌定植的“重要开关”
    (附源码)springboot中北创新创业官网 毕业设计 271443
    C理解(一):内存与位操作
    mybatis04
    Java学习笔记(三十二)
    【Prometheus】什么是prometheus?prometheus简介
    uniapp滑动事件
  • 原文地址:https://blog.csdn.net/qingcyb/article/details/133933654