模板管理 后台功能完成

yun-zuoyi
wei.peng 6 years ago
parent 1e43b2e36f
commit 2bd16137bd

@ -3,6 +3,7 @@ package cn.estsh.i3plus.pojo.base.bean;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import java.util.List;
import java.util.Map;

@ -425,16 +425,16 @@ public class BlockReportEnumUtil {
GT_EQUAL(2, ">=", "大于等于"),
LT(3, "<", "小于等于"),
LT_EQUAL(4, "<=", "小于等于"),
LIKE(5, "like", "模糊"),
LIKE_LEFT(6, "like", "左模糊"),
LIKE_RIGHT(7, "like", "右模糊"),
LIKE(5, "LIKE", "模糊"),
LIKE_LEFT(6, "LIKE", "左模糊"),
LIKE_RIGHT(7, "LIKE", "右模糊"),
EQUAL(8, "=", "等于"),
EQUAL_NOT(9, "!=", "不等于"),
AND(10, "and", "AND"),
OR(11, "or", "OR"),
NOT(12, "not", "NOT"),
IS_NULL(13, "is null", "IS NULL"),
IS_NOT_NULL(14, "is not null", "IS NOT NULL");
AND(10, "AND", "AND"),
OR(11, "OR", "OR"),
NOT(12, "NOT", "NOT"),
IS_NULL(13, "IS NULL", "IS NULL"),
IS_NOT_NULL(14, "IS NOT NULL", "IS NOT NULL");
private int value;
private String name;
@ -461,14 +461,13 @@ public class BlockReportEnumUtil {
return name;
}
public static String valueOf(int val) {
String tmp = null;
public static HQL_WHERE valueOf(int val) {
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val) {
tmp = values()[i].getName();
return values()[i];
}
}
return tmp;
return null;
}
public static int descOf(String desc) {
@ -516,14 +515,14 @@ public class BlockReportEnumUtil {
return name;
}
public static String valueOf(int val) {
String tmp = null;
public static HQL_REF valueOf(int val) {
HQL_REF tmp = null;
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val) {
tmp = values()[i].getName();
return values()[i];
}
}
return tmp;
return null;
}
public static int descOf(String desc) {
@ -584,6 +583,84 @@ public class BlockReportEnumUtil {
return tmp;
}
public static HQL_AGGREGATION valueOf(Integer val) {
if(val != null){
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val.intValue()) {
return values()[i];
}
}
}
return null;
}
public static int descOf(String desc) {
int tmp = 1;
for (int i = 0; i < values().length; i++) {
if (values()[i].name.equals(desc)) {
tmp = values()[i].value;
}
}
return tmp;
}
}
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum HQL_ATTR_DATA_TYPE{
SHOW(1, "show", "显示"),
WHERE(2, "where", "查询"),
GROUP(3, "group", "分组"),
AGGREGATION(4, "聚合", "聚合");
private int value;
private String name;
private String description;
HQL_ATTR_DATA_TYPE() {
}
HQL_ATTR_DATA_TYPE(int value, String name, String description) {
this.value = value;
this.name = name;
this.description = description;
}
public int getValue() {
return value;
}
public String getDescription() {
return description;
}
public String getName() {
return name;
}
public static String valueOf(int val) {
String tmp = null;
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val) {
tmp = values()[i].getName();
}
}
return tmp;
}
public static HQL_ATTR_DATA_TYPE valueOf(Integer val) {
if(val != null){
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val.intValue()) {
return values()[i];
}
}
}
return null;
}
public static int descOf(String desc) {
int tmp = 1;
for (int i = 0; i < values().length; i++) {

@ -95,14 +95,13 @@ public class CommonEnumUtil {
return null;
}
public static String codeOfDescription(String code) {
String tmp = null;
public static SOFT_TYPE codeOfDescription(String code) {
for (int i = 0; i < values().length; i++) {
if (values()[i].code.equals(code)) {
tmp = values()[i].description;
return values()[i];
}
}
return tmp;
return null;
}
}

@ -1,10 +1,15 @@
package cn.estsh.i3plus.pojo.model.common;
import cn.estsh.i3plus.pojo.base.annotation.RefPojo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.Column;
import java.io.Serializable;
/**
@ -14,9 +19,7 @@ import java.io.Serializable;
* @CreateDate : 2018-12-29 15:17
* @Modify:
**/
@Getter
@Setter
@ToString
@Data
public class ClassFieldModel implements Serializable {
@ApiParam(value ="包名")
@ -31,6 +34,15 @@ public class ClassFieldModel implements Serializable {
@ApiParam(value ="属性名")
private String fieldName;
@ApiParam(value ="属性别名")
private String fieldNameAlias;
@ApiParam(value ="属性描述")
private String fieldDesc;
@Column(name="AGGREGATION_TYPE")
@ApiParam(value ="聚合ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long aggregationId;
}

@ -1,6 +1,9 @@
package cn.estsh.i3plus.pojo.model.common;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@ -15,9 +18,7 @@ import java.util.List;
* @CreateDate : 2018-12-29 15:17
* @Modify:
**/
@Getter
@Setter
@ToString
@Data
public class ClassModel implements Serializable {
@ApiParam(value ="服务ID")
@ -26,6 +27,13 @@ public class ClassModel implements Serializable {
@ApiParam(value ="服务ID")
private String serverName;
@ApiParam(value ="服务对象ID")
@JsonSerialize(using = ToStringSerializer.class)
private Long serverPojoId;
@ApiParam(value ="服务对象别名")
private String serverPojoNameAlias;
@ApiParam(value ="包名")
private String packageName;

@ -1,8 +1,7 @@
package cn.estsh.i3plus.pojo.model.report;
import cn.estsh.i3plus.pojo.report.bean.BrTemplate;
import java.util.List;
import io.swagger.annotations.ApiParam;
import lombok.Data;
/**
* @Description :
@ -11,6 +10,15 @@ import java.util.List;
* @CreateDate : 2019-01-20 14:05
* @Modify:
**/
@Data
public class TemplateModel {
@ApiParam("执行 HQL ")
private String hql;
@ApiParam("执行 HQL 参数名称 ")
private String[] paramName;
@ApiParam("执行 HQL 参数值 ")
private Object[] paramValue;
}

@ -30,7 +30,6 @@ import javax.persistence.Table;
@Api(value="关系-用户角色",description = "关系-用户角色")
public class SysRefUserRole extends BaseBean {
private static final long serialVersionUID = 1L;
@Column(name="USER_ID")
@ApiParam(value ="用户ID" , example = "-1")

@ -3,9 +3,6 @@ package cn.estsh.i3plus.pojo.platform.bean;
import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn;
import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.Api;

@ -36,13 +36,22 @@ public class BrPojoAttr extends BaseBean {
private Long templateId;
@Column(name="SERVER_ID")
@ApiParam(value ="服务编号",example = "-1")
@ApiParam(value ="服务ID",example = "-1")
private Integer serverId;
@Column(name="POJO_ID")
@ApiParam(value ="模板对象ID" ,example = "-1")
@JsonSerialize(using = ToStringSerializer.class)
private Long pojoId;
@Column(name="POJO_NAME")
@ApiParam(value ="对象名称")
private String pojoName;
@Column(name="PACKAGE_NAME_RDD")
@ApiParam(value ="主服务对象包名称" , access ="服务对象包名称")
private String packageNameRdd;
@Column(name="POJO_NAME_ALIAS")
@ApiParam(value ="对象别名")
private String pojoNameAlias;
@ -71,10 +80,23 @@ public class BrPojoAttr extends BaseBean {
@ApiParam(value ="聚合类型",example = "-1")
private Integer aggregationType;
@Column(name="AGGREGATION_ID")
@ApiParam(value ="聚合类型",example = "-1")
@JsonSerialize(using = ToStringSerializer.class)
private Long aggregationId;
@Column(name="ATTR_SORT")
@ApiParam(value ="字段排序")
private Integer attrSort;
@Column(name="ATTR_DATA_SORT")
@ApiParam(value ="字段排序")
private Integer attrDataSort;
@Column(name="ATTR_STYLE")
@ApiParam(value ="字段样式")
private Integer attrStyle;
@Column(name="ATTR_DEFAULT_VALUE")
@ApiParam(value ="属性默认值")
private String attrDefaultValue;

@ -30,15 +30,19 @@ import javax.persistence.Table;
@Api(value="对象关系",description = "对象关系")
public class BrRefPojo extends BaseBean {
@Column(name="MASTER_TEMPLATE_ID")
@Column(name="TEMPLATE_ID")
@ApiParam(value ="模板编号" ,example = "-1")
@JsonSerialize(using = ToStringSerializer.class)
private Long masterTemplateId;
private Long templateId;
@Column(name="REF_TYPE")
@ApiParam(value ="关系类型")
private Integer refType;
@Column(name="REF_SORT")
@ApiParam(value ="关系排序")
private Integer refSort;
@Column(name="MASTER_SERVER_ID")
@ApiParam(value ="主服务编号" ,example = "-1")
private Integer masterServerId;

@ -13,6 +13,8 @@ import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
* @Description :
@ -71,9 +73,13 @@ public class BrRefServerPojo extends BaseBean {
@ApiParam(value ="主对象别名")
private String masterPojoNameAlias;
@Column(name="MASTER_POJO_NAME_DESC")
@ApiParam(value ="主对象中文名称")
private String masterPojoNameDesc;
@Column(name="MASTER_POJO_NAME_ATTR_NAME")
@ApiParam(value ="主对象属性名称" )
private String masterPojoAttName;
private String masterPojoAttrName;
@Column(name="SECONDARY_SERVER_ID")
@ApiParam(value ="主服务编号")
@ -81,7 +87,7 @@ public class BrRefServerPojo extends BaseBean {
@Column(name="SECONDARY_SERVER_NAME")
@ApiParam(value ="主服务编号")
private Integer secondaryServerName;
private String secondaryServerName;
@Column(name="SECONDARY_POJO_NAME")
@ApiParam(value ="副对象名称")
@ -95,8 +101,15 @@ public class BrRefServerPojo extends BaseBean {
@ApiParam(value ="副对象别名" )
private String secondaryPojoNameAlias;
@Column(name="SECONDARY_POJO_NAME_DESC")
@ApiParam(value ="副对象中文名称")
private String secondaryPojoNameDesc;
@Column(name="SECONDARY_POJO_ATTR_NAME")
@ApiParam(value ="副对象属性名称")
private String secondaryPojoAttrName;
@Transient
@ApiParam(value ="模板服务对象属性")
private List<BrPojoAttr> pojoAttrList;
}

@ -26,7 +26,7 @@ import java.util.List;
@DynamicInsert
@DynamicUpdate
@EqualsAndHashCode(callSuper = true)
@Table(name="BR_CUSTOM_HQL")
@Table(name="BR_TEMPLATE")
@Api(value="报表模板",description = "报表模板")
public class BrTemplate extends BaseBean {
@ -54,6 +54,10 @@ public class BrTemplate extends BaseBean {
@ApiParam(value ="对象数量" , example ="0" , access ="权限模块数量")
private Integer numServer;
@Column(name="TEMPLATE_SERVER_ID_LIST",columnDefinition = "TEXT")
@ApiParam(value ="数据服务ID集合" , access ="服务名称")
private String templateServerIdList;
@Column(name="TEMPLATE_SERVER_NAMES_RDD",columnDefinition = "TEXT")
@ApiParam(value ="服务名称" , access ="服务名称")
private String templateServerNamesRdd;
@ -111,6 +115,11 @@ public class BrTemplate extends BaseBean {
private List<BrRefPojo> serverPojoRefList;
@Transient
@ApiParam(value ="模板服务对象关联属性")
private List<BrPojoAttr> pojoAttrList;
@Transient
@ApiParam(value ="模板服务对象查询条件")
private List<BrPojoAttr> pojoAttrWhereList;

@ -5,6 +5,7 @@ import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.report.bean.BrElement;
import cn.estsh.i3plus.pojo.report.bean.BrLayout;
import cn.estsh.i3plus.pojo.report.bean.BrMenu;
import cn.estsh.i3plus.pojo.report.bean.BrTemplate;
import org.apache.commons.lang3.StringUtils;
/**
@ -69,6 +70,25 @@ public class ReportHqlPack {
}
/**
*
* @param template
* @return
*/
public static String packHqlBrTemplate(BrTemplate template){
StringBuffer result = new StringBuffer();
// 查询参数封装
HqlPack.getNumEqualPack(template.getTemplateType(),"templateType",result);
HqlPack.getNumEqualPack(template.getTemplateStatus(),"templateStatus",result);
HqlPack.getStringLikerPack(template.getName(),"name",result);
// 添加默认排序
HqlPack.getOrderDefault(template);
return result.toString();
}
/**
*
* @param brElement
* @return

@ -1,5 +1,19 @@
package cn.estsh.i3plus.pojo.report.sqlpack;
import cn.estsh.i3plus.pojo.base.bean.BaseResultBean;
import cn.estsh.i3plus.pojo.base.enumutil.BlockReportEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.model.report.TemplateModel;
import cn.estsh.i3plus.pojo.report.bean.BrPojoAttr;
import cn.estsh.i3plus.pojo.report.bean.BrRefServerPojo;
import cn.estsh.i3plus.pojo.report.bean.BrTemplateCustomHql;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
/**
* @Description :
* @Reference :
@ -9,5 +23,400 @@ package cn.estsh.i3plus.pojo.report.sqlpack;
**/
public class TemplateHqlPack {
private static final Logger LOGGER = LoggerFactory.getLogger(TemplateHqlPack.class);
/**
*
*
* @param attrs
* @return
*/
public static String getSelectHqlColumn(List<BrPojoAttr> attrs) {
StringBuffer result = new StringBuffer();
BlockReportEnumUtil.HQL_AGGREGATION aggr = null;
if (attrs != null && attrs.size() > 0) {
for (BrPojoAttr attr : attrs) {
aggr = BlockReportEnumUtil.HQL_AGGREGATION.valueOf(attr.getAggregationType());
// 聚合函数控制
if (aggr == null) {
result.append("," + attr.getPojoNameAlias() + "." + attr.getAttrName());
} else {
result.append(", " + aggr.getName() + "(" + attr.getPojoNameAlias() + "." + attr.getAttrName() + ")");
}
// 添加别名
if (StringUtils.isNotBlank(attr.getAttrNameAlias())) {
result.append(" AS " + attr.getAttrNameAlias());
} else {
result.append(" AS " + attr.getPojoNameAlias() + "_" + attr.getAttrName());
}
}
return result.substring(result.indexOf(",") + 1, result.length());
}
return result.toString();
}
/**
*
*
* @param attrs
* @return
*/
public static String getSelectHqlGroupColumn(List<BrPojoAttr> attrs) {
StringBuffer result = new StringBuffer();
BlockReportEnumUtil.HQL_AGGREGATION aggr = null;
if (attrs != null && attrs.size() > 0) {
for (BrPojoAttr attr : attrs) {
result.append("," + attr.getPojoNameAlias() + "." + attr.getAttrName());
}
}
return result.toString();
}
public static StringBuffer getSelectHqlJoin(List<BrRefServerPojo> list) {
StringBuffer hqlJoin = new StringBuffer();
if (list != null && list.size() > 0) {
BrRefServerPojo masterPojo = list.get(0);
BrRefServerPojo pojo;
BlockReportEnumUtil.HQL_REF refType;
BlockReportEnumUtil.HQL_WHERE whereType;// 对象连接封装
hqlJoin.append(" " + masterPojo.getMasterPojoName() + " AS " + masterPojo.getMasterPojoNameAlias());
for (int i = 1; i < list.size(); i++) {
pojo = list.get(i);
refType = BlockReportEnumUtil.HQL_REF.valueOf(pojo.getPojoRefType());
whereType = BlockReportEnumUtil.HQL_WHERE.valueOf(pojo.getPojoWhereType());
if (refType != null && whereType != null) {
hqlJoin.append(" " + refType.getName());
hqlJoin.append(" " + pojo.getMasterPojoName() + " AS " + pojo.getMasterPojoNameAlias());
hqlJoin.append(" ON " + pojo.getMasterPojoNameAlias() + "." + pojo.getMasterPojoAttrName());
hqlJoin.append(" " + whereType.getName() + " " + pojo.getSecondaryPojoNameAlias() + "." + pojo.getSecondaryPojoAttrName());
} else {
LOGGER.info("");
}
}
}
return hqlJoin;
}
public static String getSelectHqlWhere(List<BrPojoAttr> attrs, Map<String, Object> map) {
StringBuffer hqlWhere = new StringBuffer();
if (attrs != null && attrs.size() > 0) {
BlockReportEnumUtil.HQL_WHERE whereType = null;
for (BrPojoAttr attr : attrs) {
whereType = BlockReportEnumUtil.HQL_WHERE.valueOf(attr.getAttrRefType());
if (whereType != null) {
hqlWhere.append(" AND " + attr.getPojoNameAlias() + "." + attr.getAttrName());
if (BlockReportEnumUtil.HQL_WHERE.LIKE.equals(whereType)) { // like %%
hqlWhere.append(" " + whereType.getName() + " :" + attr.getPojoNameAlias() + "_" + attr.getAttrName());
map.put(attr.getPojoNameAlias() + "_" + attr.getAttrName(), "%" + attr.getAttrDefaultValue() + "%");
} else if (BlockReportEnumUtil.HQL_WHERE.LIKE_LEFT.equals(whereType)) {
hqlWhere.append(" " + whereType.getName() + " :" + attr.getPojoNameAlias() + "_" + attr.getAttrName());
map.put(attr.getPojoNameAlias() + "_" + attr.getAttrName(), "%" + attr.getAttrDefaultValue());
} else if (BlockReportEnumUtil.HQL_WHERE.LIKE_RIGHT.equals(whereType)) {
hqlWhere.append(" " + whereType.getName() + " :" + attr.getPojoNameAlias() + "_" + attr.getAttrName());
map.put(attr.getPojoNameAlias() + "_" + attr.getAttrName(), attr.getAttrDefaultValue() + "%");
}
} else {
LOGGER.info("");
}
}
}
return hqlWhere.toString();
}
public static String getSelectHqlWhereCustomHql(List<BrTemplateCustomHql> customList) {
StringBuffer hqlWhere = new StringBuffer();
if (customList != null && customList.size() > 0) {
for (BrTemplateCustomHql hql : customList) {
if(hql.getDataType().intValue() == BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.WHERE.getValue()){
hqlWhere.append(" " + hql.getCustomContent());
}
}
}
return hqlWhere.toString();
}
public static String getSelectHqlWhereGroup(List<BrPojoAttr> customList) {
StringBuffer hql = new StringBuffer();
if (customList != null && customList.size() > 0) {
hql.append(" GROUP BY ");
for (BrPojoAttr attr : customList) {
hql.append(" " + attr.getPojoNameAlias() + "." + attr.getAttrName());
}
}
return hql.toString();
}
/**
*
*
* @param list
* @return
*/
public static TemplateModel getTemplateModel(List<BrRefServerPojo> list,BrTemplateCustomHql hqlList) {
if (list != null && list.size() > 0) {
TemplateModel model = new TemplateModel();
StringBuffer result = new StringBuffer(); // 查询语句主体
List<BrPojoAttr> attrShowList = new ArrayList<>(); // 查询列的属性
List<BrPojoAttr> attrWhereList = new ArrayList<>(); // 查询列的属性
List<BrPojoAttr> attrGroupList = new ArrayList<>(); // 查询列的属性
Map<String, Object> paramMap = new HashMap<>();
List<BrPojoAttr> tmpList = null;
// list 先排序下
list.sort(Comparator.comparing(BrRefServerPojo::getPojoSort));
// 对象属性封装
for (BrRefServerPojo refServerPojo : list) {
tmpList = refServerPojo.getPojoAttrList();
if (tmpList != null && tmpList.size() > 0) {
for (BrPojoAttr attr : tmpList) {
if (BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue() == attr.getDataType().intValue()
|| BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.AGGREGATION.getValue() == attr.getDataType().intValue()) {
attrShowList.add(attr);
} else if (BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.WHERE.getValue() == attr.getDataType().intValue()) {
attrWhereList.add(attr);
} else if (BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.GROUP.getValue() == attr.getDataType().intValue()) {
attrGroupList.add(attr);
}
}
}
}
attrShowList.sort(Comparator.comparing(BrPojoAttr::getAttrSort));
attrGroupList.sort(Comparator.comparing(BrPojoAttr::getAttrSort));
attrWhereList.sort(Comparator.comparing(BrPojoAttr::getAttrSort));
// HQL 拼接
result.append(" SELECT ");
result.append(getSelectHqlColumn(attrShowList));
result.append(" FROM ");
result.append(getSelectHqlJoin(list));
result.append(" WHERE 1=1 ");
result.append(getSelectHqlWhere(attrWhereList, paramMap));
result.append(getSelectHqlWhereGroup(attrGroupList));
if(hqlList != null){
result.append(getSelectHqlWhereCustomHql(Arrays.asList(hqlList)));
}
model.setHql(result.toString());
model.setParamName(paramMap.keySet().stream().toArray(String[]::new));
model.setParamValue(paramMap.values().stream().toArray(Object[]::new));
return model;
}
return null;
}
public static List<Map<String, Object>> getResultListTable(BaseResultBean bean,TemplateModel model) {
List<Map<String, Object>> result = new ArrayList<>();
Map<String, Object> line = null;
if (bean != null && bean.isSuccess() && model != null) {
List<List> list = bean.getResultList();
if (list != null && list.size() > 0) {
List<String> columnList = getSelectHqlColumnAs(model.getHql());
if (columnList != null && columnList.size() > 0) {
if(columnList.size() == 1){
for (Object value : list) {
line = new HashMap<>();
line.put(columnList.get(0), value);
result.add(line);
}
}else {
for (List rows : list) {
line = new HashMap<>();
for (int i = 0; i < rows.size(); i++) {
line.put(columnList.get(i), rows.get(i));
}
result.add(line);
}
}
} else {
LOGGER.info("无法解析HQL 列属性");
}
}
}
return result;
}
public static List<String> getSelectHqlColumnAs(String hql) {
List<String> result = new ArrayList<>();
// hql 中必须包含 select 和 from
if (StringUtils.isNotBlank(hql) &&
hql.indexOf("SELECT") != -1 && hql.indexOf("FROM") != -1) {
hql = hql.substring(hql.indexOf("SELECT") + 1, hql.indexOf("FROM"));
if (StringUtils.isNotBlank(hql)) {
String[] columnArray = hql.split(",");
if (columnArray != null && columnArray.length > 0) {
for (String column : columnArray) {
result.add(column.substring(column.indexOf("AS") + 2, column.length()).trim());
}
}
}
}
return result;
}
public static Map<String,Object> getResultMap(BaseResultBean<Object> bean,TemplateModel model){
Map<String,Object> result = new HashMap<>();
if(bean != null && model != null){
if (ResourceEnumUtil.MESSAGE.SUCCESS.getCode().equals(bean.getCode())) {
if(StringUtils.isNotBlank(model.getHql())){ // 有HQL
String hql = model.getHql().substring(0,model.getHql().indexOf("FROM"));
System.out.println(hql);
}
}else {
LOGGER.info("请求处理失败");
}
}
return result;
}
public static void main(String[] args) {
List<BrPojoAttr> suList = new ArrayList<>();
List<BrPojoAttr> suiList = new ArrayList<>();
List<BrPojoAttr> surList = new ArrayList<>();
List<BrRefServerPojo> pojoList = new ArrayList<>();
// ------------------------------------ SysUser Attr ------------------------------------
BrPojoAttr suAttr = new BrPojoAttr();
suAttr.setAttrSort(0);
suAttr.setPojoNameAlias("su");
suAttr.setAttrName("userInfoId");
suAttr.setAttrNameAlias("德玛西亚");
suAttr.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suAttr1 = new BrPojoAttr();
suAttr1.setAttrSort(1);
suAttr1.setPojoNameAlias("su");
suAttr1.setAttrName("userName");
suAttr1.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suAttr2 = new BrPojoAttr();
suAttr2.setAttrSort(2);
suAttr2.setPojoNameAlias("su");
suAttr2.setAttrName("userLoginName");
suAttr2.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suAttr3 = new BrPojoAttr();
suAttr3.setAttrSort(3);
suAttr3.setPojoNameAlias("su");
suAttr3.setAttrName("userEmpNo");
suAttr3.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
suList.add(suAttr);
suList.add(suAttr1);
suList.add(suAttr2);
suList.add(suAttr3);
// ------------------------------------ SysUserInfo Attr ------------------------------------
BrPojoAttr suiAttr = new BrPojoAttr();
suiAttr.setAttrSort(0);
suiAttr.setPojoNameAlias("sui");
suiAttr.setAttrName("name");
suiAttr.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suiAttr1 = new BrPojoAttr();
suiAttr1.setAttrSort(1);
suiAttr1.setPojoNameAlias("sui");
suiAttr1.setAttrName("userEmployeeType");
suiAttr1.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suiAttr2 = new BrPojoAttr();
suiAttr2.setAttrSort(2);
suiAttr2.setPojoNameAlias("sui");
suiAttr2.setAttrName("userBornDate");
suiAttr2.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suiAttr3 = new BrPojoAttr();
suiAttr3.setAttrSort(3);
suiAttr3.setPojoNameAlias("sui");
suiAttr3.setAttrName("userSchool");
suiAttr3.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
BrPojoAttr suiAttr4 = new BrPojoAttr();
suiAttr4.setAttrSort(4);
suiAttr4.setPojoNameAlias("sui");
suiAttr4.setAttrName("userEmpNo");
suiAttr4.setAttrNameAlias("userEmpNo");
suiAttr4.setAttrDefaultValue("英雄联盟");
suiAttr4.setAttrRefType(BlockReportEnumUtil.HQL_WHERE.LIKE.getValue());
suiAttr4.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.WHERE.getValue());
suiList.add(suiAttr);
suiList.add(suiAttr1);
suiList.add(suiAttr2);
suiList.add(suiAttr3);
suiList.add(suiAttr4);
// ------------------------------------ SysRefUserRole Attr ------------------------------------
BrPojoAttr surAttr = new BrPojoAttr();
surAttr.setAttrSort(1);
surAttr.setPojoNameAlias("sur");
surAttr.setAttrName("id");
surAttr.setAggregationType(BlockReportEnumUtil.HQL_AGGREGATION.COUNT.getValue());
surAttr.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.AGGREGATION.getValue());
surAttr.setDataType(BlockReportEnumUtil.HQL_ATTR_DATA_TYPE.SHOW.getValue());
surList.add(surAttr);
// ------------------------------------ Pojo SysUserInfo ------------------------------------
BrRefServerPojo suiPojo = new BrRefServerPojo();
suiPojo.setMasterPojoName("SysUserInfo");
suiPojo.setMasterPojoNameAlias("sui");
suiPojo.setPojoSort(1);
suiPojo.setPojoAttrList(suiList);
// ------------------------------------ Pojo SysUser ------------------------------------
BrRefServerPojo suPojo = new BrRefServerPojo();
suPojo.setMasterPojoName("SysUser");
suPojo.setMasterPojoNameAlias("su");
suPojo.setMasterPojoAttrName("userInfoId");
suPojo.setSecondaryPojoName("SysUserInfo");
suPojo.setSecondaryPojoNameAlias("sui");
suPojo.setSecondaryPojoAttrName("id");
suPojo.setPojoRefType(BlockReportEnumUtil.HQL_REF.LEFT_JOIN.getValue());
suPojo.setPojoWhereType(BlockReportEnumUtil.HQL_WHERE.EQUAL.getValue());
suPojo.setPojoSort(2);
suPojo.setPojoAttrList(suList);
// ------------------------------------ Pojo SysRefUserRole ------------------------------------
BrRefServerPojo surPojo = new BrRefServerPojo();
surPojo.setMasterPojoName("SysRefUserRole");
surPojo.setMasterPojoNameAlias("sur");
surPojo.setMasterPojoAttrName("userId");
surPojo.setSecondaryPojoName("SysUser");
surPojo.setSecondaryPojoNameAlias("su");
surPojo.setSecondaryPojoAttrName("id");
surPojo.setPojoRefType(BlockReportEnumUtil.HQL_REF.LEFT_JOIN.getValue());
surPojo.setPojoWhereType(BlockReportEnumUtil.HQL_WHERE.EQUAL.getValue());
surPojo.setPojoSort(3);
surPojo.setPojoAttrList(surList);
pojoList.add(suiPojo);
pojoList.add(suPojo);
pojoList.add(surPojo);
// System.out.println(getSelectHqlColumn(suList));
// System.out.println(JSON.toJSONString(getTemplateModel(pojoList)));
// String json = "{\"code\":\"20001\",\"msg\":\"select sui.name as sui_name,su.userInfoId as 德玛西亚,sui.userEmployeeType as sui_userEmployeeType,su.userName as su_userName, count(sur.id) as sur_id,sui.userBornDate as sui_userBornDate,su.userLoginName as su_userLoginName,sui.userSchool as sui_userSchool,su.userEmpNo as su_userEmpNo from SysUserInfo as sui left join SysUser as su on su.userInfoId = sui.id left join SysRefUserRole as sur on sur.userId = su.id\",\"resultList\":[[\"管理员\",1077896159978196992,1,\"管理员\",2,\"1993-06-30\",\"admin\",\"复旦大学\",\"10001\"]],\"success\":true,\"totalCount\":0}";
// BaseResultBean resultBean = JSON.parseObject(json,BaseResultBean.class);
//
// System.out.println(getSelectHqlColumnAs(resultBean.getMsg()));;
//
// System.out.println(resultBean.getMsg());
// List<Map<String, Object>> table = getResultListTable(resultBean);
// System.out.println(JSON.toJSONString(table));
}
}

Loading…
Cancel
Save