package com.persagy.proxy.adm.request; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.Data; import java.util.List; /** * ADM通用查询条件 * @author Charlie Yu * @date 2021-08-16 */ @Data public class AdmQueryCriteria { /** 可取得的最大记录数 */ private Integer maxRow = 1000; /** 第几页(从1开始) */ private Integer pageNumber; /** 每页记录数(0 < 记录数 < 1000) */ private Integer pageSize; /** 查询条件 */ private String filters; /** 排序条件 */ private String orders; /** 去除重复记录 */ private Boolean distinct; /** 级联对象属性名 - 为级联对象时有值 */ private String name; /** 字段影射,空为查询所有字段 */ private List projection; /** 级联对象列表 */ private List cascade; /** 分组统计 */ private AdmQueryGroup group; /** 是否只统计总数 */ private boolean onlyCount = false; /** 关系查询条件 */ private ObjectNode relationFrom; /** 关系查询条件 */ private ObjectNode relationTo; /** * 设置关系条件 * @param isFrom * @param graphCode * @param relCode * @param objId */ public void resetRelationCond(boolean isFrom, String graphCode, String relCode, String objId) { resetRelationCond(isFrom, graphCode, relCode, objId, true); } /** * 设置关系条件 * @param isFrom * @param graphCode * @param relCode * @param objId * @param bindFlag */ public void resetRelationCond(boolean isFrom, String graphCode, String relCode, String objId, boolean bindFlag) { resetRelationCond(isFrom, graphCode, relCode, null, objId, bindFlag); } /** * 设置关系条件 * @param isFrom * @param graphCode * @param relCode * @param relValue * @param objId * @param bindFlag */ public void resetRelationCond(boolean isFrom, String graphCode, String relCode, String relValue, String objId, boolean bindFlag) { ObjectNode relationCond = JsonNodeFactory.instance.objectNode(); relationCond.put("graphCode", graphCode); relationCond.put("relCode", relCode); relationCond.put("relValue", relValue); relationCond.put("$bindFlag", bindFlag); if(isFrom) { relationCond.put("objTo", objId); setRelationFrom(relationCond); } else { relationCond.put("objFrom", objId); setRelationTo(relationCond); } } }