From 324c7aa4130760a870e6fa5cf084069140198d6c Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Sun, 20 Jan 2019 13:32:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=20=E7=9B=AE=E5=BD=95=E5=8A=9F=E8=83=BD=20=E8=81=94?= =?UTF-8?q?=E8=B0=83=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../estsh/i3plus/pojo/model/common/ClassModel.java | 10 ++++++++ .../cn/estsh/i3plus/pojo/report/bean/BrMenu.java | 6 ++++- .../estsh/i3plus/pojo/report/bean/BrPojoAttr.java | 14 ++++++---- .../estsh/i3plus/pojo/report/bean/BrRefPojo.java | 2 +- .../i3plus/pojo/report/bean/BrRefServerPojo.java | 20 ++++++++++----- .../pojo/report/bean/BrRefTemplateServer.java | 2 +- .../estsh/i3plus/pojo/report/bean/BrTemplate.java | 30 ++++++++++++++++++++++ .../pojo/report/bean/BrTemplateCustomHql.java | 4 +-- .../i3plus/pojo/report/sqlpack/ReportHqlPack.java | 4 +++ .../pojo/report/sqlpack/TemplateHqlPack.java | 13 ++++++++++ 10 files changed, 89 insertions(+), 16 deletions(-) create mode 100644 modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java index 7884c40..1ad7bc8 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java @@ -6,6 +6,7 @@ import lombok.Setter; import lombok.ToString; import java.io.Serializable; +import java.util.List; /** * @Description : 报表类选择模型 @@ -19,6 +20,12 @@ import java.io.Serializable; @ToString public class ClassModel implements Serializable { + @ApiParam(value ="服务ID") + private int serverId; + + @ApiParam(value ="服务ID") + private String serverName; + @ApiParam(value ="包名") private String packageName; @@ -30,4 +37,7 @@ public class ClassModel implements Serializable { @ApiParam(value ="类描述") private String clzDesc; + + @ApiParam(value ="属性集合") + private List fieldList; } diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrMenu.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrMenu.java index 6de49aa..95941b3 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrMenu.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrMenu.java @@ -96,8 +96,12 @@ public class BrMenu extends BaseBean { private String roleNamesRdd; @Transient + @ApiParam(value ="查询 ID 集合") + private List findIdList = new ArrayList<>(); + + @Transient @ApiParam(value ="角色ID 集合") - private List roleIdList = new ArrayList<>(); + private List roleIdList = new ArrayList<>(); @Transient @ApiParam(value ="子集列表") diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java index eda7d86..08f2865 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java @@ -27,7 +27,7 @@ import javax.persistence.Table; @DynamicUpdate @EqualsAndHashCode(callSuper = true) @Table(name="BR_POJO_ATTR") -@Api(value="报表模板",description = "报表模板") +@Api(value="对象属性",description = "对象属性") public class BrPojoAttr extends BaseBean { @Column(name="TEMPLATE_ID") @@ -39,10 +39,6 @@ public class BrPojoAttr extends BaseBean { @ApiParam(value ="服务编号",example = "-1") private Integer serverId; - @Column(name="POJO_CLASS_PATH") - @ApiParam(value ="对象ClassPath") - private String pojoClassPath; - @Column(name="POJO_NAME") @ApiParam(value ="对象名称") private String pojoName; @@ -51,6 +47,14 @@ public class BrPojoAttr extends BaseBean { @ApiParam(value ="对象别名") private String pojoNameAlias; + @Column(name="ATTR_NAME") + @ApiParam(value ="对象别名") + private String attrName; + + @Column(name="ATTR_NAME_ALIAS") + @ApiParam(value ="对象别名") + private String attrNameAlias; + @Column(name="ATTR_TYPE") @ApiParam(value ="属性类型",example = "-1") private Integer attrType; diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java index c40470e..05b6a68 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java @@ -27,7 +27,7 @@ import javax.persistence.Table; @DynamicUpdate @EqualsAndHashCode(callSuper = true) @Table(name="BR_REF_POJO") -@Api(value="报表模板",description = "报表模板") +@Api(value="对象关系",description = "对象关系") public class BrRefPojo extends BaseBean { @Column(name="MASTER_TEMPLATE_ID") diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java index 77e4c9f..faeef2b 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java @@ -27,7 +27,7 @@ import javax.persistence.Table; @DynamicUpdate @EqualsAndHashCode(callSuper = true) @Table(name="BR_REF_SERVER_POJO") -@Api(value="报表模板",description = "报表模板") +@Api(value="报表模板服务对象",description = "报表模板服务对象") public class BrRefServerPojo extends BaseBean { @Column(name="TEMPLATE_ID") @@ -44,19 +44,27 @@ public class BrRefServerPojo extends BaseBean { private Integer serverId; @Column(name="SERVER_NAME_RDD") - @ApiParam(value ="服务名称" , access ="模板名称") + @ApiParam(value ="服务名称" , access ="服务名称") private String serverNameRdd; + @Column(name="SERVER_PACKAGE_NAME_RDD") + @ApiParam(value ="服务对象包名称" , access ="服务对象包名称") + private String serverPackageNameRdd; + @Column(name="SERVER_POJO_NAME_RDD") - @ApiParam(value ="服务对象名称" , access ="模板名称") + @ApiParam(value ="服务对象名称" , access ="服务对象名称") private String serverPojoNameRdd; + @Column(name="SERVER_POJO_NAME_DESC_RDD") + @ApiParam(value ="服务对象名称中文" , access ="服务对象名称中文") + private String serverPojoNameDescRdd; + @Column(name="SERVER_POJO_NAME_ALIAS") - @ApiParam(value ="服务对象别名" , access ="模板名称") + @ApiParam(value ="服务对象别名" , access ="服务对象别名") private String serverPojoNameAlias; @Column(name="SERVER_POJO_CLASS_PATH") - @ApiParam(value ="服务对象名称" , access ="模板名称") - private String serverPojoClassPath; + @ApiParam(value ="对象全路径名称" , access ="对象全路径名称") + private String serverPojoFullName; } diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java index d0ebe1f..db686b1 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java @@ -27,7 +27,7 @@ import javax.persistence.Table; @DynamicUpdate @EqualsAndHashCode(callSuper = true) @Table(name="BR_REF_TEMPLATE_SERVER") -@Api(value="报表模板",description = "报表模板") +@Api(value="报表模板-服务",description = "报表模板-服务") public class BrRefTemplateServer extends BaseBean { @Column(name="TEMPLATE_ID") diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java index 2cd232d..0a2be32 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java @@ -11,6 +11,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 : @@ -92,4 +94,32 @@ public class BrTemplate extends BaseBean { @ApiParam(value ="模板HTML" , access ="模板HTML") private String templateHtml; + @Transient + @ApiParam(value ="模板服务") + private List serverList; + + @Transient + @ApiParam(value ="模板服务对象") + private List serverPojoList; + + @Transient + @ApiParam(value ="模板服务对象关系") + private List serverPojoRefList; + + @Transient + @ApiParam(value ="模板服务对象查询条件") + private List pojoAttrWhereList; + + @Transient + @ApiParam(value ="模板服务对象分组条件") + private List pojoAttrGroupList; + + @Transient + @ApiParam(value ="模板服务对象聚合条件") + private List pojoAttrAggrList; + + @Transient + @ApiParam(value ="模板服务对象显示属性") + private List pojoAttrShowList; + } diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplateCustomHql.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplateCustomHql.java index 93dcb89..5e5cfd0 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplateCustomHql.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplateCustomHql.java @@ -35,9 +35,9 @@ public class BrTemplateCustomHql extends BaseBean { @JsonSerialize(using = ToStringSerializer.class) private Long templateId; - @Column(name="CUSTOM_TYPE") + @Column(name="DATA_TYPE") @ApiParam(value ="自定义类型" , example ="-1") - private Integer customType; + private Integer dataType; @Column(name="CUSTOM_CONTENT",columnDefinition="TEXT") @ApiParam(value ="自定义语句内容" , access ="自定义语句内容") diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java index 0bcd1d9..5a911a5 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java @@ -58,6 +58,10 @@ public class ReportHqlPack { HqlPack.getStringLikerPack(menu.getName(),"name",result); HqlPack.getStringLikerPack(menu.getMenuCode(),"menuCode",result); + if(menu.getFindIdList() != null && menu.getFindIdList().size() > 0){ + HqlPack.getInPack(StringUtils.join(menu.getFindIdList(),","),"id",result); + } + // 添加默认排序 HqlPack.getOrderDefault(menu); diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java new file mode 100644 index 0000000..1e6911b --- /dev/null +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.pojo.report.sqlpack; + +/** + * @Description : 报表对象封装 + * @Reference : + * @Author : wei peng + * @CreateDate : 2019-01-17 15:41 + * @Modify: + **/ +public class TemplateHqlPack { + + +} From 1e43b2e36f7b438541b1c5f03b39340bb69e7ef0 Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Sun, 20 Jan 2019 15:13:58 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=A8=A1=E6=9D=BFPojo=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/base/enumutil/BlockReportEnumUtil.java | 79 ++++++++++++++++++++++ .../i3plus/pojo/base/enumutil/CommonEnumUtil.java | 10 +++ modules/i3plus-pojo-model/pom.xml | 5 ++ .../i3plus/pojo/model/report/TemplateModel.java | 16 +++++ .../i3plus/pojo/report/bean/BrRefServerPojo.java | 74 ++++++++++++++------ .../pojo/report/bean/BrRefTemplateServer.java | 2 +- .../estsh/i3plus/pojo/report/bean/BrTemplate.java | 4 ++ pom.xml | 6 ++ 8 files changed, 174 insertions(+), 22 deletions(-) create mode 100644 modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java index 4a09da5..9d33da8 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java @@ -14,6 +14,85 @@ import java.util.List; **/ public class BlockReportEnumUtil { + /** + * 软件类型 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum SOFT_TYPE { + CORE(2, "i3core", "i3业务平台"); + + private int value; + private String code; + private String description; + + private SOFT_TYPE(int value, String code, String description) { + this.value = value; + this.code = code; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getCode() { + return code; + } + + public String getDescription() { + return description; + } + + public static String valueOfCode(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].code; + } + } + return tmp; + } + + public static int codeOfValue(String code) { + int tmp = 1; + for (int i = 0; i < values().length; i++) { + if (values()[i].code.equals(code)) { + tmp = values()[i].value; + } + } + return tmp; + } + + public static String valueOfDescription(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + return tmp; + } + + public static SOFT_TYPE valueOf(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + return values()[i]; + } + } + return null; + } + + public static String codeOfDescription(String code) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].code.equals(code)) { + tmp = values()[i].description; + } + } + return tmp; + } + } /** * 报表元素枚举 diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java index 24e4496..7c21d8c 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java @@ -85,6 +85,16 @@ public class CommonEnumUtil { return tmp; } + public static SOFT_TYPE valueOf(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + return values()[i]; + } + } + return null; + } + public static String codeOfDescription(String code) { String tmp = null; for (int i = 0; i < values().length; i++) { diff --git a/modules/i3plus-pojo-model/pom.xml b/modules/i3plus-pojo-model/pom.xml index 485fdd6..24763f0 100644 --- a/modules/i3plus-pojo-model/pom.xml +++ b/modules/i3plus-pojo-model/pom.xml @@ -24,6 +24,11 @@ i3plus-pojo-platform + + i3plus.pojo + i3plus-pojo-report + + diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java new file mode 100644 index 0000000..7a70e01 --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.pojo.model.report; + +import cn.estsh.i3plus.pojo.report.bean.BrTemplate; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-01-20 14:05 + * @Modify: + **/ +public class TemplateModel { + +} diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java index faeef2b..1d765cd 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java @@ -39,32 +39,64 @@ public class BrRefServerPojo extends BaseBean { @ApiParam(value ="模板名称" , access ="模板名称") private String templateNameRdd; - @Column(name="SERVER_ID") - @ApiParam(value ="服务编号" ,example = "-1") - private Integer serverId; + @Column(name="POJO_REF_TYPE") + @ApiParam(value ="关系类型") + private Integer pojoRefType; - @Column(name="SERVER_NAME_RDD") - @ApiParam(value ="服务名称" , access ="服务名称") - private String serverNameRdd; + @Column(name="POJO_WHERE_TYPE") + @ApiParam(value ="连接关系") + private Integer pojoWhereType; - @Column(name="SERVER_PACKAGE_NAME_RDD") - @ApiParam(value ="服务对象包名称" , access ="服务对象包名称") - private String serverPackageNameRdd; + @Column(name="POJO_SORT") + @ApiParam(value ="主服务编号" ,example = "-1") + private Integer pojoSort; - @Column(name="SERVER_POJO_NAME_RDD") - @ApiParam(value ="服务对象名称" , access ="服务对象名称") - private String serverPojoNameRdd; + @Column(name="MASTER_SERVER_ID") + @ApiParam(value ="主服务编号" ,example = "-1") + private Integer masterServerId; - @Column(name="SERVER_POJO_NAME_DESC_RDD") - @ApiParam(value ="服务对象名称中文" , access ="服务对象名称中文") - private String serverPojoNameDescRdd; + @Column(name="MASTER_SERVER_NAME_RDD") + @ApiParam(value ="主服务名称" ,example = "-1") + private String masterServerNameRdd; - @Column(name="SERVER_POJO_NAME_ALIAS") - @ApiParam(value ="服务对象别名" , access ="服务对象别名") - private String serverPojoNameAlias; + @Column(name="MASTER_POJO_NAME") + @ApiParam(value ="副对象名称") + private String masterPojoName; - @Column(name="SERVER_POJO_CLASS_PATH") - @ApiParam(value ="对象全路径名称" , access ="对象全路径名称") - private String serverPojoFullName; + @Column(name="MASTER_PACKAGE_NAME_RDD") + @ApiParam(value ="主服务对象包名称" , access ="服务对象包名称") + private String masterPackageNameRdd; + + @Column(name="MASTER_POJO_NAME_ALIAS") + @ApiParam(value ="主对象别名") + private String masterPojoNameAlias; + + @Column(name="MASTER_POJO_NAME_ATTR_NAME") + @ApiParam(value ="主对象属性名称" ) + private String masterPojoAttName; + + @Column(name="SECONDARY_SERVER_ID") + @ApiParam(value ="主服务编号") + private Integer secondaryServerId; + + @Column(name="SECONDARY_SERVER_NAME") + @ApiParam(value ="主服务编号") + private Integer secondaryServerName; + + @Column(name="SECONDARY_POJO_NAME") + @ApiParam(value ="副对象名称") + private String secondaryPojoName; + + @Column(name="SECONDARY_PACKAGE_NAME") + @ApiParam(value ="主服务对象包名称" , access ="服务对象包名称") + private String secondaryPackageName; + + @Column(name="SECONDARY_POJO_NAME_ALIAS") + @ApiParam(value ="副对象别名" ) + private String secondaryPojoNameAlias; + + @Column(name="SECONDARY_POJO_ATTR_NAME") + @ApiParam(value ="副对象属性名称") + private String secondaryPojoAttrName; } diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java index db686b1..059881a 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefTemplateServer.java @@ -42,7 +42,7 @@ public class BrRefTemplateServer extends BaseBean { @Column(name="SERVER_ID") @ApiParam(value ="服务编号" ,example = "-1") @JsonSerialize(using = ToStringSerializer.class) - private Long serverId; + private Integer serverId; @Column(name="SERVER_NAME_RDD") @ApiParam(value ="服务名称" , access ="模板名称") diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java index 0a2be32..36fc139 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java @@ -95,6 +95,10 @@ public class BrTemplate extends BaseBean { private String templateHtml; @Transient + @ApiParam(value ="模板服务编号集合") + private List serverIdList; + + @Transient @ApiParam(value ="模板服务") private List serverList; diff --git a/pom.xml b/pom.xml index b8f4488..81d8228 100644 --- a/pom.xml +++ b/pom.xml @@ -107,6 +107,12 @@ ${project.version} + + i3plus.pojo + i3plus-pojo-report + ${project.version} + + com.fasterxml.jackson.core From 2bd16137bd95cff1608168614a51f7f77c7514fd Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Mon, 28 Jan 2019 18:14:28 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=8A=9F=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/pojo/base/bean/BaseResultBean.java | 1 + .../pojo/base/enumutil/BlockReportEnumUtil.java | 109 +++++- .../i3plus/pojo/base/enumutil/CommonEnumUtil.java | 7 +- .../i3plus/pojo/model/common/ClassFieldModel.java | 18 +- .../estsh/i3plus/pojo/model/common/ClassModel.java | 14 +- .../i3plus/pojo/model/report/TemplateModel.java | 14 +- .../i3plus/pojo/platform/bean/SysRefUserRole.java | 1 - .../i3plus/pojo/platform/bean/SysUserInfo.java | 3 - .../estsh/i3plus/pojo/report/bean/BrPojoAttr.java | 24 +- .../estsh/i3plus/pojo/report/bean/BrRefPojo.java | 8 +- .../i3plus/pojo/report/bean/BrRefServerPojo.java | 17 +- .../estsh/i3plus/pojo/report/bean/BrTemplate.java | 11 +- .../i3plus/pojo/report/sqlpack/ReportHqlPack.java | 20 + .../pojo/report/sqlpack/TemplateHqlPack.java | 409 +++++++++++++++++++++ 14 files changed, 617 insertions(+), 39 deletions(-) diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseResultBean.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseResultBean.java index 43d7a46..7a32a1c 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseResultBean.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseResultBean.java @@ -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; diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java index 9d33da8..80627d7 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockReportEnumUtil.java @@ -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++) { diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java index 7c21d8c..17db269 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/CommonEnumUtil.java @@ -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; } } diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java index 5b6eab2..5278ac4 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java @@ -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; + } diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java index 1ad7bc8..73d61dd 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassModel.java @@ -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; diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java index 7a70e01..361636c 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/TemplateModel.java @@ -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; } diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysRefUserRole.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysRefUserRole.java index f28536b..223afa8 100644 --- a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysRefUserRole.java +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysRefUserRole.java @@ -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") diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysUserInfo.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysUserInfo.java index 5719306..7ac1d95 100644 --- a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysUserInfo.java +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/SysUserInfo.java @@ -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; diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java index 08f2865..9c0fac3 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrPojoAttr.java @@ -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; diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java index 05b6a68..ae634ed 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefPojo.java @@ -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; diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java index 1d765cd..f6bc656 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrRefServerPojo.java @@ -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 pojoAttrList; } diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java index 36fc139..07dc0f3 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java @@ -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 serverPojoRefList; @Transient + @ApiParam(value ="模板服务对象关联属性") + private List pojoAttrList; + + + @Transient @ApiParam(value ="模板服务对象查询条件") private List pojoAttrWhereList; diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java index 5a911a5..c434e19 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java @@ -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 diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java index 1e6911b..2da95c0 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java @@ -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 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 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 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 attrs, Map 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 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 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 list,BrTemplateCustomHql hqlList) { + if (list != null && list.size() > 0) { + TemplateModel model = new TemplateModel(); + StringBuffer result = new StringBuffer(); // 查询语句主体 + List attrShowList = new ArrayList<>(); // 查询列的属性 + List attrWhereList = new ArrayList<>(); // 查询列的属性 + List attrGroupList = new ArrayList<>(); // 查询列的属性 + Map paramMap = new HashMap<>(); + List 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> getResultListTable(BaseResultBean bean,TemplateModel model) { + List> result = new ArrayList<>(); + Map line = null; + if (bean != null && bean.isSuccess() && model != null) { + List list = bean.getResultList(); + if (list != null && list.size() > 0) { + List 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 getSelectHqlColumnAs(String hql) { + List 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 getResultMap(BaseResultBean bean,TemplateModel model){ + Map 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 suList = new ArrayList<>(); + List suiList = new ArrayList<>(); + List surList = new ArrayList<>(); + List 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> table = getResultListTable(resultBean); +// System.out.println(JSON.toJSONString(table)); + } + } From ae08c3ef769c3c30f038211296fdbf95ae56d2e1 Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Mon, 28 Jan 2019 18:52:07 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=8A=9F=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/i3plus-pojo-model/pom.xml | 8 +- .../i3plus/pojo/model/common/ClassFieldModel.java | 4 - .../pojo/model/report/BeanBrPojoAttrModel.java | 35 ++ modules/i3plus-pojo-report/pom.xml | 4 - .../estsh/i3plus/pojo/report/bean/BrTemplate.java | 19 +- .../i3plus/pojo/report/sqlpack/ReportHqlPack.java | 4 +- .../pojo/report/sqlpack/TemplateHqlPack.java | 422 --------------------- 7 files changed, 50 insertions(+), 446 deletions(-) create mode 100644 modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/BeanBrPojoAttrModel.java delete mode 100644 modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java diff --git a/modules/i3plus-pojo-model/pom.xml b/modules/i3plus-pojo-model/pom.xml index edac7f5..24763f0 100644 --- a/modules/i3plus-pojo-model/pom.xml +++ b/modules/i3plus-pojo-model/pom.xml @@ -24,10 +24,10 @@ i3plus-pojo-platform - - - - + + i3plus.pojo + i3plus-pojo-report + diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java index 5278ac4..a7575d5 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/common/ClassFieldModel.java @@ -1,13 +1,9 @@ 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; diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/BeanBrPojoAttrModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/BeanBrPojoAttrModel.java new file mode 100644 index 0000000..49e1cc3 --- /dev/null +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/report/BeanBrPojoAttrModel.java @@ -0,0 +1,35 @@ +package cn.estsh.i3plus.pojo.model.report; + +import cn.estsh.i3plus.pojo.report.bean.BrPojoAttr; +import cn.estsh.i3plus.pojo.report.bean.BrTemplateCustomHql; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import java.util.List; + +/** + * @Description ://TODO 提交注意修改 临时使用 带改动 + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2019-01-25 18:19 + * @Modify: + **/ +@Data +public class BeanBrPojoAttrModel { + + @ApiParam(value = "表单模板ID") + @JsonSerialize(using = ToStringSerializer.class) + private Long templateId; + + @ApiParam(value = "数据类型") + private Integer dataType; + + @ApiParam(value = "对象属性") + private List attrList; + + @ApiParam(value = "自定义HQL") + private BrTemplateCustomHql customHql; + +} diff --git a/modules/i3plus-pojo-report/pom.xml b/modules/i3plus-pojo-report/pom.xml index e5de4f4..e36fcf7 100644 --- a/modules/i3plus-pojo-report/pom.xml +++ b/modules/i3plus-pojo-report/pom.xml @@ -19,9 +19,5 @@ i3plus.pojo i3plus-pojo-base - - i3plus.pojo - i3plus-pojo-model - \ No newline at end of file diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java index 07dc0f3..d8496ac 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/bean/BrTemplate.java @@ -12,6 +12,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Transient; +import java.util.ArrayList; import java.util.List; /** @@ -100,39 +101,39 @@ public class BrTemplate extends BaseBean { @Transient @ApiParam(value ="模板服务编号集合") - private List serverIdList; + private List serverIdList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务") - private List serverList; + private List serverList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象") - private List serverPojoList; + private List serverPojoList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象关系") - private List serverPojoRefList; + private List serverPojoRefList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象关联属性") - private List pojoAttrList; + private List pojoAttrList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象查询条件") - private List pojoAttrWhereList; + private List pojoAttrWhereList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象分组条件") - private List pojoAttrGroupList; + private List pojoAttrGroupList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象聚合条件") - private List pojoAttrAggrList; + private List pojoAttrAggrList = new ArrayList<>(); @Transient @ApiParam(value ="模板服务对象显示属性") - private List pojoAttrShowList; + private List pojoAttrShowList = new ArrayList<>(); } diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java index 83b6b54..4e295e3 100644 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java +++ b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/ReportHqlPack.java @@ -2,9 +2,7 @@ package cn.estsh.i3plus.pojo.report.sqlpack; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; 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.*; import org.apache.commons.lang3.StringUtils; /** diff --git a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java b/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java deleted file mode 100644 index 2da95c0..0000000 --- a/modules/i3plus-pojo-report/src/main/java/cn/estsh/i3plus/pojo/report/sqlpack/TemplateHqlPack.java +++ /dev/null @@ -1,422 +0,0 @@ -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 : - * @Author : wei peng - * @CreateDate : 2019-01-17 15:41 - * @Modify: - **/ -public class TemplateHqlPack { - - private static final Logger LOGGER = LoggerFactory.getLogger(TemplateHqlPack.class); - - /** - * 拼接查询字段 - * - * @param attrs - * @return - */ - public static String getSelectHqlColumn(List 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 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 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 attrs, Map 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 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 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 list,BrTemplateCustomHql hqlList) { - if (list != null && list.size() > 0) { - TemplateModel model = new TemplateModel(); - StringBuffer result = new StringBuffer(); // 查询语句主体 - List attrShowList = new ArrayList<>(); // 查询列的属性 - List attrWhereList = new ArrayList<>(); // 查询列的属性 - List attrGroupList = new ArrayList<>(); // 查询列的属性 - Map paramMap = new HashMap<>(); - List 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> getResultListTable(BaseResultBean bean,TemplateModel model) { - List> result = new ArrayList<>(); - Map line = null; - if (bean != null && bean.isSuccess() && model != null) { - List list = bean.getResultList(); - if (list != null && list.size() > 0) { - List 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 getSelectHqlColumnAs(String hql) { - List 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 getResultMap(BaseResultBean bean,TemplateModel model){ - Map 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 suList = new ArrayList<>(); - List suiList = new ArrayList<>(); - List surList = new ArrayList<>(); - List 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> table = getResultListTable(resultBean); -// System.out.println(JSON.toJSONString(table)); - } - - -}