diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java index 8654728..fdd275f 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/DdlPackBean.java @@ -76,9 +76,9 @@ public class DdlPackBean { public static DdlPackBean getDdlPackBean(String organizeCode, int isValid){ DdlPackBean result = new DdlPackBean(); - DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",result); - DdlPreparedPack.getNumEqualPack(isValid,"isValid",result); - DdlPreparedPack.getStringEqualPack(organizeCode,"organizeCode",result); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlPreparedPack.getNumEqualPack(isValid, "isValid", result); + DdlPreparedPack.getStringEqualPack(organizeCode, "organizeCode", result); return result; } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/ImppFile.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/ImppFile.java new file mode 100644 index 0000000..afb605a --- /dev/null +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/ImppFile.java @@ -0,0 +1,66 @@ +package cn.estsh.i3plus.pojo.base.bean; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description : 文件基础信息 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-06-01 20:33 + * @Modify: + **/ +@Data +@ApiModel("文件基础信息") +public class ImppFile { + + /******* 文件基础信息 ******/ + + @ApiModelProperty("文件名称") + private String name; //文件名 + + @ApiModelProperty("文件内容") + private byte[] content; //内容 + + @ApiModelProperty("文件后缀名称") + private String ext; //文件类型 + + public void setExt(String ext) { + if(ext.indexOf(".") != 0){ + ext ="."+ext; + } + this.ext = ext; + } + + @ApiModelProperty("文件md5") + private String md5; + + @ApiModelProperty("文件创建时间") + private String createDateTime; + + @ApiModelProperty("文件作者") + private String author; //作者 + + /******* 文件系统唯一信息 ******/ + + @ApiModelProperty("文件系统-组名称") + private String dfsGroupName; + + @ApiModelProperty("文件系统-名称") + private String dfsFileName; + + @ApiModelProperty("文件系统-唯一键") + private String dfsFileKey; + + /******* 构造方法 ******/ + + public ImppFile() { + } + + public ImppFile(String name, byte[] content, String ext) { + this.name = name; + this.content = content; + this.setExt(ext); + } +} 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 b43dcc8..7313145 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 @@ -59,6 +59,7 @@ public class CommonEnumUtil { /** 平台服务 */ CORE(2, 8100, 4, 101000000L, "i3core", "i3业务平台"), + MDM(29, 8150, 22, 0, "i3mdm", "数据中心MDM"), /** 调试服务 */ DEV(9999, 0000, 0, 120000000L, "Development", "系统调试"); diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MdmEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MdmEnumUtil.java new file mode 100644 index 0000000..e8c5618 --- /dev/null +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/MdmEnumUtil.java @@ -0,0 +1,165 @@ +package cn.estsh.i3plus.pojo.base.enumutil; + +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * @Description : Model Pojo 枚举 + * @Reference : + * @Author : Adair Peng + * @CreateDate : 2018-11-21 15:50 + * @Modify: + **/ +public class MdmEnumUtil { + + /** + * 操作类型 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum MDM_OPERATE_TYPE { + INSERT(1, "新增"), + UPDATE(2, "修改"); + + private int value; + private String description; + + private MDM_OPERATE_TYPE(int value, String description) { + this.value = value; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + + 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 MdmEnumUtil.MDM_OPERATE_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; + } + } + + /** + * hql实体类型 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum HQL_ENTITY_TYPE { + MASTER(1, "master", "主数据"), + BUSI(2, "busi", "业务数据"); + + private int value; + private String alias; + private String description; + + private HQL_ENTITY_TYPE(int value, String alias, String description) { + this.value = value; + this.alias = alias; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getAlias() { + return alias; + } + + public String getDescription() { + return description; + } + + 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 String valueOfAlias(int val) { + String tmp = null; + for (int i = 0; i < values().length; i++) { + if (values()[i].value == val) { + tmp = values()[i].alias; + } + } + return tmp; + } + + public static MdmEnumUtil.HQL_ENTITY_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; + } + } + + /** + * mdm + */ + public enum MDM_SYNC_TYPE{ + INSERT(1, "新增"), + UPDATE(2, "修改"), + DELETE(2, "删除"); + + private int value; + private String description; + + private MDM_SYNC_TYPE(int value, String description) { + this.value = value; + this.description = description; + } + + public int getValue() { + return value; + } + + public String getDescription() { + return description; + } + + 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 MdmEnumUtil.MDM_SYNC_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; + } + } + +} diff --git a/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementConstraintProperty.java b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementConstraintProperty.java deleted file mode 100644 index 839099e..0000000 --- a/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementConstraintProperty.java +++ /dev/null @@ -1,56 +0,0 @@ -//package cn.estsh.i3plus.pojo.form.bean; -// -//import cn.estsh.i3plus.pojo.base.bean.BaseBean; -//import com.fasterxml.jackson.databind.annotation.JsonSerialize; -//import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -//import io.swagger.annotations.Api; -//import io.swagger.annotations.ApiParam; -//import lombok.Data; -//import lombok.EqualsAndHashCode; -//import org.hibernate.annotations.DynamicInsert; -//import org.hibernate.annotations.DynamicUpdate; -// -//import javax.persistence.Column; -//import javax.persistence.Entity; -//import javax.persistence.Table; -// -///** -// * @Description : 元素约束属性 -// * @Reference : -// * @Author : yunhao -// * @CreateDate : 2020-03-12 13:36 -// * @Modify: -// **/ -//@Data -//@Entity -//@DynamicInsert -//@DynamicUpdate -//@EqualsAndHashCode(callSuper = true) -//@Table(name = "BF_ELEMENT_CONSTRAINT_PROPERTY") -//@Api(value = "元素约束属性", description = "元素约束属性") -//public class BfElementConstraintProperty extends BaseBean { -// -// @Column(name = "CONSTRAINT_ID") -// @ApiParam(value = "约束ID", example = "-1") -// @JsonSerialize(using = ToStringSerializer.class) -// private Long constraintId; -// -// @Column(name = "ELEMENT_PROPERTY_ID") -// @ApiParam(value = "元素属性ID", example = "-1") -// @JsonSerialize(using = ToStringSerializer.class) -// private Long elementPropertyId; -// -// @Column(name = "DATA_OBJECT_PROPERTY_ID") -// @ApiParam(value = "数据对象属性ID", example = "-1") -// @JsonSerialize(using = ToStringSerializer.class) -// private Long dataObjectPropertyId; -// -// @Column(name="PROPERTY_NAME") -// @ApiParam(value ="元素属性名称") -// private String propertyName; -// -// @Column(name="PROPERTY_CODE_RDD") -// @ApiParam(value ="元素属性代码") -// private String propertyCodeRdd; -// -//} diff --git a/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementPickUpProperty.java b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementPickUpProperty.java new file mode 100644 index 0000000..8bf2d5c --- /dev/null +++ b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementPickUpProperty.java @@ -0,0 +1,66 @@ +package cn.estsh.i3plus.pojo.form.bean; + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @Description : 表单拾取属性 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-27 21:21 + * @Modify: + **/ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name = "BF_ELEMENT_PICK_UP_PROPERTY") +@Api(value = "表单拾取属性", description = "表单拾取属性") +public class BfElementPickUpProperty extends BaseBean { + + @Column(name = "PICK_UP_PROPERTY_ID") + @ApiParam(value = "拾取属性id", example = "-1") + @JsonSerialize(using = ToStringSerializer.class) + private Long pickUpPropertyId; + + @Column(name = "ELEMENT_ID") + @ApiParam(value = "对象元素ID", example = "-1") + @JsonSerialize(using = ToStringSerializer.class) + private Long elementId; + + @Column(name="ELEMENT_PROPERTY_ID") + @ApiParam(value ="元素属性id") + @JsonSerialize(using = ToStringSerializer.class) + private Long elementPropertyId; + + @Column(name="ELEMENT_PROPERTY_NAME") + @ApiParam(value ="元素属性名称") + private String elementPropertyName; + + @Column(name = "PICK_UP_ELEMENT_ID") + @ApiParam(value = "拾取元素ID", example = "-1") + @JsonSerialize(using = ToStringSerializer.class) + private Long pickUpElementId; + + @Column(name="PICK_UP_ELEMENT_PROPERTY_ID") + @ApiParam(value ="拾取元素属性id") + @JsonSerialize(using = ToStringSerializer.class) + private Long pickUpElementPropertyId; + + @Column(name="PICK_UP_ELEMENT_PROPERTY_NAME") + @ApiParam(value ="拾取元素属性名称") + private String pickUpElementPropertyName; + +} diff --git a/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementProperty.java b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementProperty.java index 8cc9ca2..a89a117 100644 --- a/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementProperty.java +++ b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/bean/BfElementProperty.java @@ -15,6 +15,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Transient; +import java.util.List; /** * @Description : 数据对象 @@ -149,6 +150,9 @@ public class BfElementProperty extends BaseBean { @ApiParam(value ="是否为唯一约束字段") private transient Integer isUniqueProperty; + @Transient + @ApiParam(value ="拾取关联属性") + private List pickUpPropertyList; // public Object getFormValue() { // return propertyFormValue == null ? propertyDefaultValue : propertyFormValue; diff --git a/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/repository/BfElementPickUpPropertyRepository.java b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/repository/BfElementPickUpPropertyRepository.java new file mode 100644 index 0000000..99bbfc8 --- /dev/null +++ b/modules/i3plus-pojo-form/src/main/java/cn/estsh/i3plus/pojo/form/repository/BfElementPickUpPropertyRepository.java @@ -0,0 +1,14 @@ +package cn.estsh.i3plus.pojo.form.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.form.bean.BfElementPickUpProperty; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-21 15:18 + * @Modify: + **/ +public interface BfElementPickUpPropertyRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBean.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBean.java index f220dc7..859a6b3 100644 --- a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBean.java +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBean.java @@ -3,10 +3,15 @@ package cn.estsh.i3plus.pojo.mdm.bean.base; import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; import javax.persistence.Transient; /** @@ -17,30 +22,71 @@ import javax.persistence.Transient; * @Modify: **/ @Data +@MappedSuperclass @ApiModel("MDM基础bean") -public class BaseMdmBean extends BaseBean { +public abstract class BaseMdmBean extends BaseBean { private static final long serialVersionUID = 3957595289035947441L; @Transient @ApiModelProperty("是否主数据") @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) - public static Integer isMdmMaster = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + public static Integer isMdmMaster = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); + @Column(name = "MDM_VERSION") @ApiModelProperty("mdm数据版本") + @JsonSerialize(using = ToStringSerializer.class) private Long mdmVersion; - public long getMdmVersion() { + public long getMdmVersionVal() { return mdmVersion == null ? 0 : mdmVersion; } // 版本递增 public long nextMdmVersion() { - return mdmVersion = getMdmVersion() + 1; + mdmVersion = getMdmVersionVal() + 1; + return mdmVersion; } + @Column(name = "IS_MDM_PUBLISHED") @ApiModelProperty("是否发布") @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) - private Integer isPublished; + private Integer isMdmPublished; + @Column(name = "MDM_OPERATE_TYPE") + @ApiModelProperty("操作类型") + @AnnoOutputColumn(refClass = MdmEnumUtil.MDM_OPERATE_TYPE.class) + private Integer mdmOperateType; + + public Integer getMdmOperateTypeVal() { + return mdmOperateType == null ? MdmEnumUtil.MDM_OPERATE_TYPE.INSERT.getValue() : mdmOperateType; + } + + @Column(name = "MDM_REF_ID") + @ApiModelProperty("关联id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mdmRefId; + + //排序方式 + @Override + public String orderBy() { + String result = ""; + if (orderByParam != null && orderByParam.trim().length() > 0) { + result = " order by "; + if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isMdmMaster) { + result += "master."; + } else { + result += "busi."; + } + + result += orderByParam; + + if (ascOrDesc == CommonEnumUtil.ASC_OR_DESC.ASC.getValue()) { + result += " asc"; + } else { + result += " desc"; + } + } + return result; + } } diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBusiExtdBean.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBusiExtdBean.java new file mode 100644 index 0000000..96d8c16 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBusiExtdBean.java @@ -0,0 +1,49 @@ +package cn.estsh.i3plus.pojo.mdm.bean.base; + +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; +import javax.persistence.Transient; + +/** + * @Description : MDM业务基础bean + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-12 17:30 + * @Modify: + **/ +@Data +@MappedSuperclass +@ApiModel("MDM业务基础bean") +public class BaseMdmBusiExtdBean extends BaseMdmBean { + + private static final long serialVersionUID = 4267453020130810967L; + + @Transient + @ApiModelProperty("是否主数据") + @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) + public static Integer isMdmMaster = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); + + @Transient + @ApiModelProperty("主数据Class") + @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) + public static Class mdmMasterClass = BaseMdmBean.class; + + @Transient + @ApiModelProperty("软件模块") + @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) + public static Integer mdmSoftType; + + @Column(name = "MDM_MASTER_ID") + @ApiModelProperty("主数据id") + @JsonSerialize(using = ToStringSerializer.class) + private Long mdmMasterId; + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBusiModelBean.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBusiModelBean.java new file mode 100644 index 0000000..3aafc4b --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmBusiModelBean.java @@ -0,0 +1,64 @@ +package cn.estsh.i3plus.pojo.mdm.bean.base; + +import io.swagger.annotations.ApiModelProperty; + +/** + * @Description :MDM模型bean + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-18 20:52 + * @Modify: + **/ +public abstract class BaseMdmBusiModelBean { + + @ApiModelProperty("主数据") + private M mdmMasterBean; + + @ApiModelProperty("业务扩展") + private B mdmBusiBean; + + public BaseMdmBusiModelBean() { + } + + public BaseMdmBusiModelBean(M mdmMasterBean, B mdmBusiBean) { + this.mdmMasterBean = mdmMasterBean; + this.mdmBusiBean = mdmBusiBean; + } + + /** + * 获取主数据m + * + * @return + */ + public M getMaster() { + return mdmMasterBean; + } + + /** + * 获取业务扩展数据 + * + * @return + */ + public B getBusi() { + return mdmBusiBean; + } + + /** + * 设置主数据m + * + * @return + */ + public void setMaster(M baseMdmBean) { + this.mdmMasterBean = baseMdmBean; + } + + /** + * 设置业务扩展数据 + * + * @return + */ + public void setBusi(B baseMdmBusiExtdBean) { + this.mdmBusiBean = baseMdmBusiExtdBean; + } + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmExtdBean.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmExtdBean.java deleted file mode 100644 index 957a91e..0000000 --- a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/BaseMdmExtdBean.java +++ /dev/null @@ -1,30 +0,0 @@ -package cn.estsh.i3plus.pojo.mdm.bean.base; - -import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.persistence.Transient; - -/** - * @Description : MDM业务基础bean - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-05-12 17:30 - * @Modify: - **/ -@Data -@ApiModel("MDM业务基础bean") -public class BaseMdmExtdBean extends BaseMdmBean { - - private static final long serialVersionUID = 4267453020130810967L; - - @Transient - @ApiModelProperty("软件模块") - @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) - public static Integer mdmSoftType; - - -} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/DdlPackMdmModelBean.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/DdlPackMdmModelBean.java new file mode 100644 index 0000000..22475d9 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/DdlPackMdmModelBean.java @@ -0,0 +1,271 @@ +package cn.estsh.i3plus.pojo.mdm.bean.base; + + +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; +import cn.estsh.i3plus.pojo.mdm.sqlpack.DdlMdmModelPreparedPack; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description : hql脚本封装类 + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2019-03-29 15:57 + * @Modify: + **/ +public class DdlPackMdmModelBean { + + /** + * 条件实体 + */ + List entityTypeList; + + /** + * 条件属性名称 + */ + List keyList; + + /** + * 条件值 + */ + List valueList; + + //是否是hql + private boolean isHql; + + //手动hql,尽量避免直接传参,使用?代替 + private String hqlAppend; + + //where后跟着的hql/sql + private StringBuilder whereAppend; + + //排序内容 + private String orderByStr; + + //需要拼接的hql + private StringBuilder sb = null; + + public DdlPackMdmModelBean() { + this.isHql = true; + whereAppend = new StringBuilder(); + entityTypeList = new ArrayList<>(); + keyList = new ArrayList<>(); + valueList = new ArrayList<>(); + } + + public DdlPackMdmModelBean(boolean isHql) { + this.isHql = isHql; + whereAppend = new StringBuilder(); + entityTypeList = new ArrayList<>(); + keyList = new ArrayList<>(); + valueList = new ArrayList<>(); + } + + /** + * 查询制定组织有效的数据 + * + * @param organizeCode + * @return + */ + public static DdlPackMdmModelBean getDdlPackBean(String organizeCode) { + DdlPackMdmModelBean result = new DdlPackMdmModelBean(); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", result); + DdlMdmModelPreparedPack.getStringEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, organizeCode, "organizeCode", result); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", result); + DdlMdmModelPreparedPack.getStringEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, organizeCode, "organizeCode", result); + + return result; + } + + /** + * 查询指定组织、指定是否有效的数据 + * + * @param organizeCode + * @param isValid + * @return + */ + public static DdlPackMdmModelBean getDdlPackBean(String organizeCode, int isValid) { + DdlPackMdmModelBean result = new DdlPackMdmModelBean(); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, isValid, "isValid", result); + DdlMdmModelPreparedPack.getStringEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, organizeCode, "organizeCode", result); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, isValid, "isValid", result); + DdlMdmModelPreparedPack.getStringEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, organizeCode, "organizeCode", result); + + return result; + } + + public static DdlPackMdmModelBean getDdlPackBean() { + DdlPackMdmModelBean result = new DdlPackMdmModelBean(); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", result); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", result); + + return result; + } + + public static DdlPackMdmModelBean getDdlPackBean(BaseMdmBusiModelBean bean) { + DdlPackMdmModelBean result = new DdlPackMdmModelBean(); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.MASTER, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", result); + + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), "isDeleted", result); + DdlMdmModelPreparedPack.getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE.BUSI, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", result); + + if (bean != null) { + if (bean.getBusi() != null) { + result.setOrderByStr(bean.getBusi().orderBy()); + } else if (bean.getMaster() != null) { + result.setOrderByStr(bean.getMaster().orderBy()); + } + } + + return result; + } + + public boolean isHql() { + return isHql; + } + + public void setHql(boolean hql) { + isHql = hql; + } + + public String getOrderByStr() { + return orderByStr; + } + + public void setOrderByStr(String orderByStr) { + this.orderByStr = orderByStr; + } + + public String getHqlAppend() { + return hqlAppend; + } + + public void setHqlAppend(String hqlAppend) { + this.hqlAppend = hqlAppend; + } + + public String getWhereAppend() { + return whereAppend.toString(); + } + + public void setWhereAppend(String whereAppend) { + this.whereAppend = new StringBuilder(whereAppend); + } + + public List getEntityTypeList() { + return entityTypeList; + } + + public void setEntityTypeList(List entityTypeList) { + this.entityTypeList = entityTypeList; + } + + public List getKeyList() { + return keyList; + } + + public void setKeyList(List keyList) { + this.keyList = keyList; + } + + public List getValueList() { + return valueList; + } + + public void setValueList(List valueList) { + this.valueList = valueList; + } + + /** + * 添加查询条件 + * + * @param hql + * @param val + */ + public void addColumnQuery(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String column, String hql, Object val) { + if (entityTypeList == null) { + entityTypeList = new ArrayList<>(); + } + if (keyList == null) { + keyList = new ArrayList<>(); + } + if (valueList == null) { + valueList = new ArrayList<>(); + } + if (entityType != null && column != null && val != null) { + entityTypeList.add(entityType); + keyList.add(column); + valueList.add(val); + } + + whereAppend.append(hql); + } + + /** + * 需要查询属性的数量 + * + * @return + */ + public int getColumnSize() { + return keyList.size(); + } + + /** + * 获取包含hql的最终的ddl + * + * @return + */ + public String getPackedHqlAll() { + sb = new StringBuilder(); + if (hqlAppend != null) { + sb.append(hqlAppend); + } + if (whereAppend != null) { + sb.append(whereAppend); + } + if (orderByStr != null) { + sb.append(orderByStr); + } + return sb.toString(); + } + + /** + * 获取最终的ddl + * + * @return + */ + public String getPackedHql() { + sb = new StringBuilder(); + if (whereAppend != null) { + sb.append(whereAppend); + } + if (orderByStr != null) { + sb.append(orderByStr); + } + return sb.toString(); + } +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/MdmSyncData.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/MdmSyncData.java new file mode 100644 index 0000000..95fd969 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/base/MdmSyncData.java @@ -0,0 +1,74 @@ +package cn.estsh.i3plus.pojo.mdm.bean.base; + +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description : 数据中心同步数据 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-06-02 16:14 + * @Modify: + **/ +@Data +@ApiModel("数据中心同步数据") +public class MdmSyncData implements Serializable { + + private static final long serialVersionUID = -1642626000860074060L; + + @ApiModelProperty("同步数据类型") + @AnnoOutputColumn(refClass = MdmEnumUtil.MDM_SYNC_TYPE.class) + private Integer syncType; + + public int getSyncTypeVal(){ + return syncType == null ? MdmEnumUtil.MDM_SYNC_TYPE.INSERT.getValue() : syncType; + } + + @ApiModelProperty("同步模块") + @AnnoOutputColumn(refClass = CommonEnumUtil.SOFT_TYPE.class) + private Integer syncSoftType; + + @ApiModelProperty("是否是主数据") + @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) + private Integer isMasterData; + + public int getIsMasterDataVal() { + return isMasterData == null ? CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() : isMasterData; + } + + @ApiModelProperty("同步数据class") + private String syncDataClass; + + public String getSyncDataClassSimpleName(){ + if(syncDataClass == null){ + return null; + } + + return syncDataClass.trim().substring(syncDataClass.trim().lastIndexOf(".") + 1); + } + + @ApiModelProperty("同步数据id") + private List syncDataId; + + @ApiModelProperty("同步数据用户名") + private String syncDateUserName; + + @ApiModelProperty("同步时间") + private String syncDateTime; + + @ApiModelProperty("同步失败键") + private String syncFailKey; + + @ApiModelProperty("同步失败时间") + private String syncFailDateTime; + + @ApiModelProperty("同步失败信息") + private String syncFailMessage; +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/busi/core/MdmGearCoreBusiExtd.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/busi/core/MdmGearCoreBusiExtd.java new file mode 100644 index 0000000..4e3f336 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/busi/core/MdmGearCoreBusiExtd.java @@ -0,0 +1,51 @@ +package cn.estsh.i3plus.pojo.mdm.bean.busi.core; + +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiExtdBean; +import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + +/** + * @Description : 主数据齿轮-平台扩展 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-12 18:09 + * @Modify: + **/ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name="MDM_GEAR_CORE_EXTD") +@ApiModel("主数据齿轮-平台扩展") +public class MdmGearCoreBusiExtd extends BaseMdmBusiExtdBean { + + private static final long serialVersionUID = -3535174942277452194L; + + @Transient + @ApiModelProperty("主数据Class") + @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) + public static Class mdmMasterClass = MdmGear.class; + + @Transient + @ApiModelProperty("软件模块") + @AnnoOutputColumn(refClass = CommonEnumUtil.TRUE_OR_FALSE.class) + public static Integer mdmSoftType = CommonEnumUtil.SOFT_TYPE.CORE.getValue(); + + @Column(name = "CORE_NUM") + @ApiModelProperty("核心数量") + public String coreNum; + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/busi/core/MdmGearCoreExtd.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/busi/core/MdmGearCoreExtd.java deleted file mode 100644 index bbe8b58..0000000 --- a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/busi/core/MdmGearCoreExtd.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.estsh.i3plus.pojo.mdm.bean.busi.core; - -import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmExtdBean; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * @Description : 主数据齿轮-平台扩展 - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-05-12 18:09 - * @Modify: - **/ -@Data -@ApiModel("主数据齿轮-平台扩展") -public class MdmGearCoreExtd extends BaseMdmExtdBean { - - private static final long serialVersionUID = -3535174942277452194L; - - // 初始化数据 - static { - isMdmMaster = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(); - mdmSoftType = CommonEnumUtil.SOFT_TYPE.CORE.getValue(); - } - - @ApiModelProperty("核心数量") - public String coreNum; - -} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/master/MdmGear.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/master/MdmGear.java index e20fec9..18dbcb1 100644 --- a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/master/MdmGear.java +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/master/MdmGear.java @@ -4,6 +4,13 @@ import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBean; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; /** * @Description : 主数据齿轮 @@ -13,14 +20,21 @@ import lombok.Data; * @Modify: **/ @Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name="MDM_GEAR") @ApiModel("主数据齿轮") public class MdmGear extends BaseMdmBean { private static final long serialVersionUID = -7580444601811207793L; + @Column(name="NAME") @ApiModelProperty("齿轮名称") private String name; + @Column(name="GEAR_MODEL") @ApiModelProperty("齿轮规格") private String gearModel; diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/model/core/MdmGearCoreModel.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/model/core/MdmGearCoreModel.java deleted file mode 100644 index 46fd862..0000000 --- a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/bean/model/core/MdmGearCoreModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.estsh.i3plus.pojo.mdm.bean.model.core; - -import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreExtd; -import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; - -/** - * @Description : 主数据齿轮-平台model - * @Reference : - * @Author : yunhao - * @CreateDate : 2020-05-12 18:09 - * @Modify: - **/ -public class MdmGearCoreModel { - - private MdmGear mdmGear; - - private MdmGearCoreExtd mdmGearCoreExtd; - -} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/jpa/dao/MdmBusiModelRepository.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/jpa/dao/MdmBusiModelRepository.java new file mode 100644 index 0000000..015bd8b --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/jpa/dao/MdmBusiModelRepository.java @@ -0,0 +1,112 @@ +package cn.estsh.i3plus.pojo.mdm.jpa.dao; + +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiExtdBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiModelBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.DdlPackMdmModelBean; + +import java.util.List; + +/** + * @Description : 自定义Repository的方法接口 + * @Reference : 对jpaRepository进行扩展 + * @Author : alwaysfrin + * @CreateDate : 2018-09-13 10:34 + * @Modify: + **/ +public interface MdmBusiModelRepository, M extends BaseMdmBean, B extends BaseMdmBusiExtdBean> { + T getById(long id); + + List list(); + + List list(final String hql); + + List listPager(Pager pager); + + List findByPage(final DdlPackMdmModelBean packBean, final int offset, final int pageSize); + + /** + * @param hql hql入参需要用问号代替 + * @param values 按照入参问号的顺序进行赋值 + * @param offset + * @param pageSize + * @return + */ + List findByPage(final String hql, final Object[] values, final int offset, final int pageSize); + + List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value); + + List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values); + + List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value, String orderByStuff); + + List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff); + + T getByProperty(DdlPackMdmModelBean packBean); + + T getByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value); + + T getByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values); + + int listCount(); + + int findByPropertyCount(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value); + + int findByPropertyCount(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values); + + List findByPropertyPage(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value, String orderByStuff, Pager pager); + + List findByPropertyPage(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff, Pager pager); + + List findByHqlWhere(DdlPackMdmModelBean packBean); + + List findByHqlWhere(String hqlWhere, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff); + + int findByHqlWhereCount(String hqlWhere, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values); + + List findByHqlWherePage(String hqlWhere, Pager pager, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff); + + List findByHqlWherePage(DdlPackMdmModelBean packBean, Pager pager); + + int findByHqlWhereCount(DdlPackMdmModelBean packBean); + + int findByHqlCount(String hql); + + int findByHqlCount(String hql, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, Object[] paramValue); + + List findByHqlPage(DdlPackMdmModelBean packBean, Pager pager); + + List findByHqlPage(String hql, Pager pager, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, Object[] paramValue); + + double findByHqlDouble(DdlPackMdmModelBean packBean); + + long findByHqlLong(DdlPackMdmModelBean packBean); + + List findByHqlTopWhere(DdlPackMdmModelBean packBean, int topNum); + + /********************** 多表联查,返回Object[]数组根据hql查询翻页信息 开始 ****************************/ + List findByHqlObjects(String hql); + + List findByHqlObjects(String hql, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, Object[] paramValue); + + List findByHqlPageObjects(String hql, Pager pager); + + List findByHqlPageObjects(String hql, Pager pager, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, Object[] paramValue); + + List findBySqlObjList(String sql); + + List findBySqlObjListByPager(String sql, Pager pager); + + /****************** 部分业务处理 *******************/ + + boolean isExitByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value); + + boolean isExitByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values); + + boolean isExitByHqlWhere(String hqlWhere, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values); + + boolean isExitByHql(DdlPackMdmModelBean packBean); + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/jpa/daoimpl/MdmBusiModelRepositoryImpl.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/jpa/daoimpl/MdmBusiModelRepositoryImpl.java new file mode 100644 index 0000000..76a4cd5 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/jpa/daoimpl/MdmBusiModelRepositoryImpl.java @@ -0,0 +1,840 @@ +package cn.estsh.i3plus.pojo.mdm.jpa.daoimpl; + +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiExtdBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiModelBean; +import cn.estsh.i3plus.pojo.mdm.bean.base.DdlPackMdmModelBean; +import cn.estsh.i3plus.pojo.mdm.jpa.dao.MdmBusiModelRepository; +import org.hibernate.NonUniqueResultException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.persistence.EntityManager; +import javax.persistence.NoResultException; +import javax.persistence.Query; +import java.lang.reflect.ParameterizedType; +import java.text.MessageFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +/** + * @Description : 自定义持久化接口实现 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-21 15:05 + * @Modify: + **/ +public class MdmBusiModelRepositoryImpl, M extends BaseMdmBean, B extends BaseMdmBusiExtdBean> + implements MdmBusiModelRepository { + public static final Logger LOGGER = LoggerFactory.getLogger(MdmBusiModelRepositoryImpl.class); + + /** + * 持久化上下文 + */ + @Autowired + private EntityManager entityManager; + + private final Class modelClass; + private final Class masterClass; + private final Class busiExtdClass; + + private final String selectCount; + private final String selectAll; + private final String formStr; + + public MdmBusiModelRepositoryImpl() { + // 通过反射获取model的真实类型 + ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); + modelClass = (Class) pt.getActualTypeArguments()[0]; + masterClass = (Class) pt.getActualTypeArguments()[1]; + busiExtdClass = (Class) pt.getActualTypeArguments()[2]; + + this.formStr = String.format("from %s as busi left join %s as master on busi.mdmMasterId = master.id ", + busiExtdClass.getName(), masterClass.getName() + ); + + this.selectCount = "select count(distinct busi) " + formStr; + this.selectAll = MessageFormat.format("select new {0}(master,busi) ", modelClass.getName()) + formStr; + } + + private void setParameter(Query query, String[] propName, Object[] propValue) { + String name = null; + Object value = null; + for (int i = 0; i < propName.length; i++) { + name = propName[i]; + value = propValue[i]; + if (value != null) { + if ((value instanceof Object[])) { + query.setParameter(name.replace(".", ""), (Object[]) value); + } else if ((value instanceof Collection)) { + query.setParameter(name.replace(".", ""), (Collection) value); + } else { + query.setParameter(name.replace(".", ""), value); + } + } + } + } + + private void appendQL(StringBuffer sb, String[] propName, Object[] propValue) { + String name = null; + Object value = null; + for (int i = 0; i < propName.length; i++) { + name = propName[i]; + value = propValue[i]; + if (((value instanceof Object[])) || ((value instanceof Collection))) { + Object[] arraySerializable = (Object[]) value; + if ((arraySerializable != null) && (arraySerializable.length > 0)) { + sb.append(" and model." + name + " in (:" + name.replace(".", "") + ")"); + } + } else if (value == null) { + sb.append(" and model." + name + " is null "); + } else { + sb.append(" and model." + name + "=:" + name.replace(".", "")); + } + } + } + + @Override + public T getById(long id) { + try { + List busiModelList = + entityManager.createQuery(selectAll + " where busi.id = :busi_id").setParameter("busi_id", id).getResultList(); + + return busiModelList.isEmpty() ? modelClass.newInstance() : busiModelList.get(0); + } catch (Exception e) { + return null; + } + } + + @Override + public List list() { + List l = entityManager.createQuery(selectAll).getResultList(); + return l; + } + + @Override + public List listPager(Pager pager) { + if (pager.getTotalRows() > 0) { + return entityManager.createQuery(selectAll) + .setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public List list(final String hql) { + return entityManager.createQuery(hql).getResultList(); + } + + @Override + public List findByPage(DdlPackMdmModelBean packBean, int offset, int pageSize) { + Query query = null; + String ddl = selectAll + " where 1=1 " + packBean.getPackedHql(); + + if (packBean.isHql()) { + query = entityManager.createQuery(ddl); + } else { + query = entityManager.createNativeQuery(ddl); + } + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + + return query.setFirstResult(offset) + .setMaxResults(pageSize) + .getResultList(); + } + + @Override + public List findByPage(String hql, Object[] values, int offset, int pageSize) { + Query query = entityManager.createQuery(hql); + for (int i = 0; i < values.length; i++) { + query.setParameter(i, values[i]); + } + return query.setFirstResult(offset).setMaxResults(pageSize).getResultList(); + } + + @Override + public List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value) { + String queryString = MessageFormat.format("{0} where {1}.{2}= :{3}_{4}", selectAll, entityType.getAlias(), propertyName, + entityType.getAlias(), propertyName); + return entityManager.createQuery(queryString).setParameter(entityType.getAlias() + "_" + propertyName, value).getResultList(); + } + + @Override + public List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + if (entityTypes.length != propertyNames.length || propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!entityTypes:" + entityTypes.length + " propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectAll); + + int size = propertyNames.length; + if (size > 0) { + queryString.append("where 1=1 "); + } + + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + Query queryObject = entityManager.createQuery(queryString.toString()); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + + return queryObject.getResultList(); + } + + @Override + public List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value, String orderByStuff) { + String queryString = MessageFormat.format("{0} where {1}.{2}= :{3} {4}", selectAll, entityType.getAlias(), propertyName, propertyName, orderByStuff); + return entityManager.createQuery(queryString).setParameter(propertyName, value).getResultList(); + } + + @Override + public List findByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectAll); + + int size = propertyNames.length; + if (size > 0) { + queryString.append("where 1=1 "); + } + + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + queryString.append(" " + orderByStuff); + + Query queryObject = entityManager.createQuery(queryString.toString()); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + + return queryObject.getResultList(); + } + + @Override + public T getByProperty(DdlPackMdmModelBean packBean) { + + try { + List list = findByHqlWhere(packBean); + return list.size() != 0 ? list.get(0) : null; + } catch (NoResultException ne) { + LOGGER.error("数据不存在,DdlPackMdmModelBean:{}", packBean); + return null; + } catch (NonUniqueResultException ex) { + LOGGER.error("查询单条记录,但出现多条。packBean:{}", packBean); + throw new RuntimeException("存在多条记录:" + ex.getMessage()); + } + } + + @Override + public T getByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value) { + String queryString = + selectAll + " where " + entityType.getAlias() + "." + propertyName + "= :" + entityType.getAlias() + "_" + propertyName; + try { + List list = entityManager.createQuery(queryString) + .setParameter(entityType.getAlias() + "_" + propertyName, value) + .getResultList(); + return list.size() != 0 ? list.get(0) : null; + } catch (NoResultException ne) { + LOGGER.error("数据不存在,prop:{},value:{}", propertyName, value, ne); + return null; + } catch (NonUniqueResultException ex) { + LOGGER.error("查询单条记录,但出现多条。prop:{},value:{}", propertyName, value, ex); + throw new RuntimeException("存在多条记录:" + ex.getMessage()); + } + } + + @Override + public T getByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectAll); + + int size = propertyNames.length; + if (size > 0) { + queryString.append("where 1=1 "); + } + + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + Query queryObject = entityManager.createQuery(queryString.toString()); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + + try { + List list = queryObject.getResultList(); + return list.size() != 0 ? list.get(0) : null; + } catch (NoResultException ne) { + LOGGER.error("数据不存在", ne); + return null; + } catch (NonUniqueResultException ex) { + LOGGER.error("查询单条记录,但出现多条。", ex); + throw new RuntimeException("存在多条记录:" + ex.getMessage()); + } + } + + @Override + public int listCount() { + try { + Long count = entityManager.createQuery(selectCount, Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public int findByPropertyCount(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value) { + try { + String queryString = selectCount + " where " + entityType.getAlias() + "." + propertyName + + "= :" + entityType.getAlias() + "_" + propertyName; + Long count = entityManager.createQuery(queryString, Long.class) + .setParameter(entityType.getAlias() + "_" + propertyName, value) + .getSingleResult(); + return count == null ? 0 : count.intValue(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public int findByPropertyCount(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append("select count(distinct model) from " + masterClass.getName() + " as model"); + + int size = propertyNames.length; + if (size > 0) { + queryString.append(" where 1=1 "); + } + + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + Query queryObject = entityManager.createQuery(queryString.toString(), Long.class); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(propertyNames[i], values[i]); + } + } + + try { + Long count = (Long) queryObject.getSingleResult(); + return count == null ? 0 : count.intValue(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public List findByPropertyPage(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value, String orderByStuff, Pager pager) { + if (pager.getTotalRows() > 0) { + String queryString = selectAll + " where " + entityType.getAlias() + "." + propertyName + "= :" + entityType.getAlias() + "_" + propertyName + " " + orderByStuff; + return entityManager.createQuery(queryString) + .setParameter(entityType.getAlias() + "_" + propertyName, value) + .getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public List findByPropertyPage(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, + String orderByStuff, Pager pager) { + if (pager.getTotalRows() > 0) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectAll); + + int size = propertyNames.length; + if (size > 0) { + queryString.append("where 1=1 "); + } + + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + if (orderByStuff != null && orderByStuff.length() > 0) { + queryString.append(orderByStuff); + } + + Query queryObject = entityManager.createQuery(queryString.toString()); + for (int i = 0; i < size; i++) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + + return queryObject.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()).getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public List findByHqlWhere(DdlPackMdmModelBean packBean) { + Query query = entityManager.createQuery(selectAll + " where 1=1 " + packBean.getPackedHql()); + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "_" + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + return query.getResultList(); + } + + @Override + public List findByHqlWhere(String hqlWhere, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectAll + " as where 1=1 "); + + if (hqlWhere != null && hqlWhere.length() > 0) { + queryString.append(hqlWhere); + } + + int size = propertyNames.length; + for (int i = 0; i < size; i++) { + if (propertyNames[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + queryString.append("" + orderByStuff); + + Query queryObject = entityManager.createQuery(queryString.toString()); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + return queryObject.getResultList(); + } + + @Override + public int findByHqlWhereCount(String hqlWhere, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectCount + " where 1=1 "); + + if (hqlWhere != null && hqlWhere.length() > 0) { + queryString.append(hqlWhere); + } + + int size = propertyNames.length; + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + + Query queryObject = entityManager.createQuery(queryString.toString()); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + + try { + Long count = entityManager.createQuery(queryString.toString(), Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public List findByHqlWherePage(String hqlWhere, Pager pager, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values, String orderByStuff) { + if (pager.getTotalRows() > 0) { + if (propertyNames.length != values.length) { + throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); + } + StringBuffer queryString = new StringBuffer(); + queryString.append(selectAll + " where 1=1 "); + + if (hqlWhere != null && hqlWhere.length() > 0) { + queryString.append(hqlWhere); + } + + int size = propertyNames.length; + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryString.append( + MessageFormat.format(" and {0}.{1}= :{2}_{3}" + , entityTypes[i].getAlias() + , propertyNames[i] + , entityTypes[i].getAlias() + , propertyNames[i] + ) + ); + } + } + queryString.append(" " + orderByStuff); + + Query queryObject = entityManager.createQuery(queryString.toString()).setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()); + for (int i = 0; i < size; i++) { + if (values[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + + return queryObject.getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public List findByHqlWherePage(DdlPackMdmModelBean packBean, Pager pager) { + if (pager.getTotalRows() > 0) { + Query query = entityManager.createQuery(selectAll + " where 1=1 " + packBean.getPackedHql()); + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + + return query.setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public int findByHqlWhereCount(DdlPackMdmModelBean packBean) { + StringBuffer queryString = new StringBuffer(); + queryString.append(selectCount + " where 1=1 " + packBean.getWhereAppend()); + + Query query = entityManager.createQuery(queryString.toString(), Long.class); + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + try { + Long count = (Long) query.getSingleResult(); + return count == null ? 0 : count.intValue(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public int findByHqlCount(String hql) { + try { + Long count = entityManager.createQuery(hql, Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public int findByHqlCount(String hql, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, Object[] paramValue) { + Query queryObject = entityManager.createQuery(hql, Integer.class); + for (int i = 0; i < paramName.length; i++) { + if (paramValue[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + paramName[i], paramValue[i]); + } + } + try { + return (int) queryObject.getSingleResult(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public List findByHqlPage(DdlPackMdmModelBean packBean, Pager pager) { + if (pager.getTotalRows() > 0) { + Query query = entityManager.createQuery(selectAll + " where 1=1 " + packBean.getPackedHql()); + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + + return query.setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public List findByHqlPage(String hql, Pager pager, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, Object[] paramValue) { + if (pager.getTotalRows() > 0) { + Query queryObject = entityManager.createQuery(hql); + for (int i = 0; i < paramName.length; i++) { + if (paramValue[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + paramName[i], paramValue[i]); + } + } + + return queryObject.setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); + } else { + return new ArrayList<>(); + } + } + + @Override + public double findByHqlDouble(DdlPackMdmModelBean packBean) { + try { + Query query = entityManager.createQuery(packBean.getPackedHqlAll(), Double.class); + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + + Double result = (Double) query.getSingleResult(); + return result == null ? 0 : result; + } catch (NoResultException e) { + return 0; + } + } + + @Override + public long findByHqlLong(DdlPackMdmModelBean packBean) { + try { + Query query = entityManager.createQuery(selectAll + " where 1=1 " + packBean.getPackedHql(), Long.class); + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + + return (long) query.getSingleResult(); + } catch (NoResultException e) { + return 0; + } + } + + @Override + public List findByHqlTopWhere(DdlPackMdmModelBean packBean, int topNum) { + Query query = entityManager.createQuery(selectAll + " where 1=1 " + packBean.getPackedHql()); + + for (int i = 0; i < packBean.getKeyList().size(); i++) { + query.setParameter( + packBean.getEntityTypeList().get(i).getAlias() + "." + packBean.getKeyList().get(i), + packBean.getValueList().get(i) + ); + } + + return query.setFirstResult(0).setMaxResults(topNum).getResultList(); + } + + @Override + public List findByHqlObjects(String hql) { + return entityManager.createQuery(hql).getResultList(); + } + + @Override + public List findByHqlObjects(String hql, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] paramName, + Object[] paramValue) { + Query queryObject = entityManager.createQuery(hql); + for (int i = 0; i < paramName.length; i++) { + if (paramValue[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + paramName[i], paramValue[i]); + } + } + + return queryObject.getResultList(); + } + + @Override + public List findByHqlPageObjects(String hql, Pager pager) { + if (pager.getTotalRows() > 0) { + return entityManager.createQuery(hql).setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()).getResultList(); + } else { + return new ArrayList(); + } + } + + @Override + public List findByHqlPageObjects(String hql, Pager pager, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + if (pager.getTotalRows() > 0) { + Query queryObject = entityManager.createQuery(hql); + for (int i = 0; i < propertyNames.length; i++) { + if (propertyNames[i] != null) { + queryObject.setParameter(entityTypes[i].getAlias() + "_" + propertyNames[i], values[i]); + } + } + + return queryObject.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()).getResultList(); + } else { + return new ArrayList(); + } + } + + @Override + public List findBySqlObjList(String sql) { + return entityManager.createNativeQuery(sql).getResultList(); + } + + @Override + public List findBySqlObjListByPager(String sql, Pager pager) { + if (pager.getTotalRows() > 0) { + return entityManager.createNativeQuery(sql) + .setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()) + .getResultList(); + } else { + return new ArrayList(); + } + } + + /************** 部分业务 *************/ + private String getNowTime(boolean needSecond) { + return needSecond ? getNowTime("yyyy-MM-dd HH:mm:ss") : getNowTime("yyyy-MM-dd HH:mm"); + } + + private String getNowTime(String format) { + String dateTime; + try { + dateTime = (new SimpleDateFormat(format)).format(new Date()); + } catch (Exception e) { + dateTime = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()); + } + + return dateTime; + } + + @Override + public boolean isExitByProperty(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String propertyName, Object value) { + //大于0,存在 + return findByPropertyCount(entityType, propertyName, value) > 0; + } + + @Override + public boolean isExitByProperty(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + return findByPropertyCount(entityTypes, propertyNames, values) > 0; + } + + @Override + public boolean isExitByHqlWhere(String hqlWhere, MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, String[] propertyNames, Object[] values) { + return findByHqlWhereCount(hqlWhere, entityTypes, propertyNames, values) > 0; + } + + @Override + public boolean isExitByHql(DdlPackMdmModelBean packBean) { + return findByHqlWhereCount(packBean) > 0; + } + + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/model/MdmPagerQueryModel.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/model/MdmPagerQueryModel.java new file mode 100644 index 0000000..51c84a3 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/model/MdmPagerQueryModel.java @@ -0,0 +1,27 @@ +package cn.estsh.i3plus.pojo.mdm.model; + + +import cn.estsh.i3plus.pojo.base.common.Pager; +import lombok.Data; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-29 10:23 + * @Modify: + **/ +@Data +public class MdmPagerQueryModel { + + /** + * 实体 + */ + private T bean; + + /** + * 分页条件 + */ + private Pager pager; + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/model/core/MdmGearCoreBusiModel.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/model/core/MdmGearCoreBusiModel.java new file mode 100644 index 0000000..6768a27 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/model/core/MdmGearCoreBusiModel.java @@ -0,0 +1,22 @@ +package cn.estsh.i3plus.pojo.mdm.model.core; + +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBusiModelBean; +import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description : 主数据齿轮-平台model + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-12 18:09 + * @Modify: + **/ +@Data +@ApiModel("齿轮平台业务model") +public class MdmGearCoreBusiModel extends BaseMdmBusiModelBean { + public MdmGearCoreBusiModel(MdmGear mdmMasterBean, MdmGearCoreBusiExtd mdmBusiBean) { + super(mdmMasterBean, mdmBusiBean); + } +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/modelrepository/core/MdmGearCoreRepository.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/modelrepository/core/MdmGearCoreRepository.java new file mode 100644 index 0000000..acede04 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/modelrepository/core/MdmGearCoreRepository.java @@ -0,0 +1,21 @@ +package cn.estsh.i3plus.pojo.mdm.modelrepository.core; + +import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; +import cn.estsh.i3plus.pojo.mdm.jpa.dao.MdmBusiModelRepository; +import cn.estsh.i3plus.pojo.mdm.jpa.daoimpl.MdmBusiModelRepositoryImpl; +import cn.estsh.i3plus.pojo.mdm.model.core.MdmGearCoreBusiModel; +import org.springframework.stereotype.Component; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-25 11:42 + * @Modify: + **/ +@Component +public class MdmGearCoreRepository + extends MdmBusiModelRepositoryImpl + implements MdmBusiModelRepository { +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/MdmHqlPack.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/MdmHqlPack.java new file mode 100644 index 0000000..57d3e64 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/MdmHqlPack.java @@ -0,0 +1,51 @@ +package cn.estsh.i3plus.pojo.mdm.repository; + +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mdm.bean.base.BaseMdmBean; +import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; + +import java.util.List; + +/** + * @Description : 主数据中心 HQL 包 + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-20 15:23 + * @Modify: + **/ +public class MdmHqlPack { + + public static DdlPackBean getMdmPackBean(BaseMdmBean mdmBean) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mdmBean); + + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", ddlPackBean); + return ddlPackBean; + } + + public static DdlPackBean getMdmPackBean() { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isMdmPublished", ddlPackBean); + return ddlPackBean; + } + + + public static DdlPackBean packHqlIdList(List idList) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getInPackList(idList,"id",ddlPackBean); + + return ddlPackBean; + } + + public static DdlPackBean packHqlMdmGear(MdmGear mdmGear) { + DdlPackBean ddlPackBean = getMdmPackBean(mdmGear); + + DdlPreparedPack.getNumEqualPack(mdmGear.getId(),"id",ddlPackBean); + DdlPreparedPack.getStringLikerPack(mdmGear.getName(),"name",ddlPackBean); + DdlPreparedPack.timeBuilder(mdmGear.getCreateDatetime(),"createDatetime",ddlPackBean,false,true); + + return ddlPackBean; + } + +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/busi/core/MdmGearCoreBusiModelRepository.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/busi/core/MdmGearCoreBusiModelRepository.java new file mode 100644 index 0000000..6a6f3e9 --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/busi/core/MdmGearCoreBusiModelRepository.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.pojo.mdm.repository.busi.core; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mdm.bean.busi.core.MdmGearCoreBusiExtd; +import org.springframework.stereotype.Repository; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-15 16:26 + * @Modify: + **/ +@Repository +public interface MdmGearCoreBusiModelRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/master/MdmGearRepository.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/master/MdmGearRepository.java new file mode 100644 index 0000000..43b555f --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/repository/master/MdmGearRepository.java @@ -0,0 +1,16 @@ +package cn.estsh.i3plus.pojo.mdm.repository.master; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.mdm.bean.master.MdmGear; +import org.springframework.stereotype.Repository; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2020-05-15 16:26 + * @Modify: + **/ +@Repository +public interface MdmGearRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/sqlpack/DdlMdmModelPreparedPack.java b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/sqlpack/DdlMdmModelPreparedPack.java new file mode 100644 index 0000000..b372b7b --- /dev/null +++ b/modules/i3plus-pojo-mdm/src/main/java/cn/estsh/i3plus/pojo/mdm/sqlpack/DdlMdmModelPreparedPack.java @@ -0,0 +1,699 @@ +package cn.estsh.i3plus.pojo.mdm.sqlpack; + +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil; +import cn.estsh.i3plus.pojo.mdm.bean.base.DdlPackMdmModelBean; +import org.apache.commons.lang3.StringUtils; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @Description : 数据库脚本封装方法,封装成预加载hql,HqlPack仅限用于一些特定的sql,可能造成性能低下 + * example: name = :name + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2019-03-29 + * @Modify: + **/ +public class DdlMdmModelPreparedPack { + + /** + * 封装日期 + * + * @param startDate 开始日期 + * @param endDate 开始日期和结束日期,以逗号分隔(分为开始时间和结束时间) + * @param columnName HQL里对应的时间字段 + * @param packBean 封装的HQL对象 + * @param isShowTime 是否包含时分秒 + */ + public static void timeBuilder(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String startDate, String endDate, String columnName, + DdlPackMdmModelBean packBean, boolean isShowTime) { + if (startDate == null || startDate.trim().length() == 0) { + startDate = "1900-01-01"; + } else { + startDate = startDate.trim(); + } + if (isShowTime && startDate.trim().length() <= 11) { + startDate += " 00:00:00"; + } + if (endDate == null || endDate.trim().length() == 0) { + endDate = "2100-01-01"; + } else { + endDate = endDate.trim(); + } + if (isShowTime && endDate.trim().length() <= 11) { + endDate += " 23:59:59"; + } + + packBean.addColumnQuery(entityType, columnName + , " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName + , startDate); + packBean.addColumnQuery(entityType, "s_" + columnName + , " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName + , endDate); + } + + /** + * 封装日期 + * + * @param startDate 开始日期 + * @param endDate 结束日期 + * @param columnName 列名 + * @param isLeftContain 左闭? + * @param isRightContain 右闭? + * @param packBean HQL对象 + */ + public static void timeBuilder(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String startDate, String endDate, String columnName, boolean isLeftContain, boolean isRightContain, DdlPackMdmModelBean packBean) { + if (isLeftContain) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName, startDate.trim()); + } else { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName, startDate.trim()); + } + if (isRightContain) { + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName, endDate.trim()); + } else { + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName, endDate.trim()); + } + } + + /** + * 封装日期 + * + * @param date 开始日期和结束日期,以逗号分隔(分为开始时间和结束时间) + * @param columnName HQL里对应的时间字段 + * @param packBean 封装的HQL + * @param showTaday 如果没有开始时间和结束时间,是否查询当天时间,还是查询所有时间。true:查询当天时间,false:查询所有 + * @param isShowTime 是否包含时分秒 + */ + public static void timeBuilder(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String date, String columnName, DdlPackMdmModelBean packBean, Boolean showTaday, boolean isShowTime) { + if (date != null && date.trim().length() > 0) { + String today = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()); + if (date.trim().length() > 0 && (date.length() == 1 || ",".equals(date))) { + //只有一个逗号 + date = ""; + } + + String[] time = date.split(","); + if (time.length == 1) { + //只有开始日期,没有结束日期 + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " like :" + entityType.getAlias() + "_" + columnName, "%" + time[0] + "%"); + } else if (time.length == 2 && ((time[0] != null && time[0].trim().length() > 0) + || (time[1] != null & time[1].trim().length() > 0))) { + if (time[0] == null || time[0].trim().length() == 0) { + time[0] = "1900-01-01"; + } else { + time[0] = time[0].trim(); + } + if (isShowTime && time[0].trim().length() <= 11) { + time[0] += " 00:00:00"; + } + if (time[1] == null || time[1].trim().length() == 0) { + time[1] = "2100-01-01"; + } else { + time[1] = time[1].trim(); + } + if (isShowTime && time[1].trim().length() <= 11) { + time[1] += " 23:59:59"; + } + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName, time[0]); + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName, time[1]); + } else { + if (showTaday) { + if (isShowTime) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName, today + " 00:00:00"); + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName, today + " 23:59:59"); + } else { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " " +">= :" + entityType.getAlias() + "_" + columnName,today); + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName, today); + } + } + } + } + } + + + /** + * 封装日期 + * + * @param date 日期,需要和时间字段的值格式相同 + * @param startColumnName HQL里对应的开始时间字段 + * @param endColumnName HQL里对应的结束时间字段 + * @param packBean 封装的HQL + * @param isShowTime 是否包含时分秒 + */ + public static void getTimeBetweenCol(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String date, String startColumnName, String endColumnName, + DdlPackMdmModelBean packBean, boolean isShowTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (date == null || date.trim().length() == 0) { + date = sdf.format(new Date()); + } + if (!isShowTime) { + date = date.substring(0, 10); + packBean.addColumnQuery(entityType, null, " and '" + date + "' between substring(" + entityType.getAlias() + "." + startColumnName + + ",1,10) and substring(" + entityType.getAlias() + "." + endColumnName + ",1,10)", null); + return; + } else if (date.trim().length() <= 11) { + date += " 00:00:00"; + } + packBean.addColumnQuery(entityType, null, " and '" + date + "' between " + entityType.getAlias() + "." + startColumnName + + " and " + entityType.getAlias() + "." + endColumnName, null); + } + + /** + * 封装String对象成order by排序 + * + * @param columnName 列名 + * @param packBean + */ + public static void getOrderByPack(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, Object order[], String[] columnName, + DdlPackMdmModelBean packBean) { + String sqlStr = ""; + String orderByStr = ""; + for (int i = 0; i < order.length; i++) { + if (order[i] != null && order[i].toString().trim().length() > 0) { + if (Integer.parseInt(order[i].toString()) == 1) { + order[i] = "asc"; + } else { + order[i] = "desc"; + } + if (columnName[i].indexOf(" model.") == -1) { + sqlStr += entityTypes[i].getAlias() + "." + columnName[i]; + } else { + sqlStr += columnName[i]; + } + sqlStr += " " + order[i].toString() + ","; + } + } + + if (sqlStr.length() > 0 && sqlStr.lastIndexOf(",") == sqlStr.length() - 1) { + sqlStr = sqlStr.substring(0, sqlStr.length() - 1); + orderByStr = " order by " + sqlStr; + } + + packBean.setOrderByStr(orderByStr); + } + + /** + * 对象默认排序 + */ + public static void getOrderDefault(BaseBean bean) { + if (bean != null && StringUtils.isBlank(bean.getOrderByParam())) { + bean.setOrderByParam("modifyDatetime"); + bean.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); + } + } + + /** + * 封装String对象成like语句 + * + * @param val 对象值 + * @param columnName 列名 + * @param packBean + */ + public static void getStringLikerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " like :" + entityType.getAlias() + "_" + columnName, "%" + val + "%"); + } + } + + /** + * 封装String对象成like语句 + * + * @param val 对象值 + * @param columnName 列名 + * @param packBean + */ + public static void getStringLikerPackOr(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " or " + entityType.getAlias() + "." + columnName + " like :" + entityType.getAlias() + "_" + columnName, "%" + val + "%"); + } + } + + /** + * 封装String对象成like语句(右侧模糊) + * + * @param val 对象值 + * @param columnName 列名 + * @param packBean + */ + public static void getStringRightLikerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " like :" + entityType.getAlias() + "_" + columnName, val + "%"); + } + } + + /** + * 封装String对象成like语句(左侧模糊) + * + * @param val 对象值 + * @param columnName 列名 + * @param packBean + */ + public static void getStringLeftLikerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " like :" + entityType.getAlias() + "_" + columnName, "%" + val); + } + } + + /** + * 封装String对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, val); + } + } + + /** + * 封装String对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringLikePack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " like :" + entityType.getAlias() + "_" + columnName, val); + } + } + + /** + * 封装String对象成不等于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringNoEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " <> :" + entityType.getAlias() + "_" + columnName, val); + } + } + + /** + * 封装String对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringNotNullPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String columnName, DdlPackMdmModelBean packBean) { + packBean.addColumnQuery(entityType, null, " and " + entityType.getAlias() + "." + columnName + " is not null", null); + } + + /** + * 封装String对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringNotBlanklPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String columnName, DdlPackMdmModelBean packBean) { + packBean.addColumnQuery(entityType, null, " and (" + entityType.getAlias() + "." + columnName + " is not null and " + entityType.getAlias() + "." + columnName + " !='')", null); + } + + /** + * 封装String对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringEqualPackOr(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String val, String columnName, DdlPackMdmModelBean packBean) { + if (val != null && val.trim().length() > 0) { + packBean.addColumnQuery(entityType, columnName, " or " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, val); + } + } + + /** + * 封装long或者int的正整数对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Long.parseLong(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 两个字段不相等 + * + * @param firstColumnName 列名 + * @param packBean + */ + public static void getNotEqueals(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String firstColumnName, String twoColumnName, DdlPackMdmModelBean packBean) { + packBean.addColumnQuery(entityType, null, " and UPPER(" + entityType.getAlias() + "." + firstColumnName + ")!= UPPER(" + entityType.getAlias() + "." + twoColumnName + ")", null); + } + + /** + * 封装long或者int的负整数对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNegativeNumEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装long或者int的整数对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumEqualPackOr(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Long.parseLong(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " or " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装long或者int的整数对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumEqualPackOverZero(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Double.parseDouble(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装long或者int的整数对象成equal语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumWithZeroEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Double.parseDouble(data.toString()) >= 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " = :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装String对象成大于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringBiggerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && !StringUtils.isEmpty(String.valueOf(data))) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装String对象成大于不等于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringBiggerNotEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && !StringUtils.isEmpty(String.valueOf(data))) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " > :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装String对象成小于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringSmallerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && !StringUtils.isEmpty(String.valueOf(data))) { + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_s_" + columnName, data); + } + } + + /** + * 封装String对象成小于不等于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getStringSmallerNotEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && !StringUtils.isEmpty(String.valueOf(data))) { + packBean.addColumnQuery(entityType, "s_" + columnName, " and " + entityType.getAlias() + "." + columnName + " < :" + entityType.getAlias() + "_s_" + columnName, data); + } + } + + /** + * 封装double对象成大于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumberBiggerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Double.parseDouble(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " > :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装double对象成大于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumberBiggerPackContainsZero(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " > :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装double对象成大于等于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumberBiggerEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Double.parseDouble(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " >= :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装double对象成小于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumberSmallerPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Double.parseDouble(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " < :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装double对象成小于等于语句 + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumberSmallerEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && Double.parseDouble(data.toString()) > 0) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " <= :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装long或者int的整数对象成equal语句(不等于) + * + * @param columnName 列名 + * @param packBean + */ + public static void getNumNOEqualPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, columnName, " and " + entityType.getAlias() + "." + columnName + " <> :" + entityType.getAlias() + "_" + columnName, data); + } + } + + /** + * 封装in查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getInPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, "in_"+columnName, + " and " + entityType.getAlias() + "." + columnName + " in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 两个提交用or拼接 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getNotOrIsNull(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, "in_"+columnName, " and (" + entityType.getAlias() + "." + columnName + " in (:" + entityType.getAlias() + "_in_" + columnName + ") " + + "or " + entityType.getAlias() + "." + columnName + " is null)", data); + } + } + + + /** + * 封装in查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getOrInPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, "in_"+columnName," or " + entityType.getAlias() + "." + columnName + " in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 封装in String查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getInPackArray(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object[] data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && data.length > 0) { + packBean.addColumnQuery(entityType, "in_"+columnName, " and " + entityType.getAlias() + "." + columnName + " in (:" + entityType.getAlias() + "_in_" + columnName + ")", Arrays.asList(data)); + } + } + + /** + * 封装not in String查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getNotInPackArray(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object[] data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && data.length > 0) { + packBean.addColumnQuery(entityType, "in_"+columnName, " and " + entityType.getAlias() + "." + columnName + " not in (:" + entityType.getAlias() + "_in_" + columnName + ")", Arrays.asList(data)); + } + } + + /** + * 封装in String查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getInPackList(MdmEnumUtil.HQL_ENTITY_TYPE entityType, List data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && data.size() > 0) { + packBean.addColumnQuery(entityType, "in_"+columnName, " and " + entityType.getAlias() + "." + columnName + " in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 封装not in List查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getNotInPackList(MdmEnumUtil.HQL_ENTITY_TYPE entityType, List data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && data.size() > 0) { + packBean.addColumnQuery(entityType, "in_"+columnName, " and " + entityType.getAlias() + "." + columnName + " not in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 封装in String查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getInOrPackString(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && data.trim().length() > 0) { + //判断最后一位是不是逗号 + if (data.lastIndexOf(",") != (data.length() - 1)) { + data += ","; + } + String[] dataArray = data.substring(0, data.length() - 1).split(","); + data = ""; + for (int i = 0; i < dataArray.length; i++) { + if (i == dataArray.length - 1) { + data += "'" + dataArray[i] + "'"; + } else { + data += "'" + dataArray[i] + "',"; + } + } + packBean.addColumnQuery(entityType, "in_"+columnName, " or " + entityType.getAlias() + "." + columnName + " in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 封装in String查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getNotInPackString(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null && data.trim().length() > 0) { + //判断最后一位是不是逗号 + if (data.lastIndexOf(",") != (data.length() - 1)) { + data += ","; + } + String[] dataArray = data.substring(0, data.length() - 1).split(","); + data = ""; + for (int i = 0; i < dataArray.length; i++) { + if (i == dataArray.length - 1) { + data += "'" + dataArray[i] + "'"; + } else { + data += "'" + dataArray[i] + "',"; + } + } + packBean.addColumnQuery(entityType,"in_"+columnName, " and " + entityType.getAlias() + "." + columnName + " not in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 封装not in查询语句 + * + * @param data + * @param columnName + * @param packBean + */ + public static void getNotInPack(MdmEnumUtil.HQL_ENTITY_TYPE entityType, Object data, String columnName, DdlPackMdmModelBean packBean) { + if (data != null) { + packBean.addColumnQuery(entityType, "in_"+columnName, " and " + entityType.getAlias() + "." + columnName + " not in (:" + entityType.getAlias() + "_in_" + columnName + ")", data); + } + } + + /** + * 转换排序列 + * + * @param columnName 列名 + * @param basisType 基本类型 + * @return + * @see CommonEnumUtil.BASIS_TYPE + */ + public static String getOrderColConvertType(MdmEnumUtil.HQL_ENTITY_TYPE entityType, String columnName, int basisType) { + String name = " " + entityType.getAlias() + "." + columnName; + + if (basisType == CommonEnumUtil.BASIS_TYPE.INT.getValue()) { + name = " cast(" + name + " as integer)"; + } else if (basisType == CommonEnumUtil.BASIS_TYPE.DOUBLE.getValue()) { + name = " cast(" + name + " as decimal)"; + } else if (basisType == CommonEnumUtil.BASIS_TYPE.LONG.getValue()) { + name = " cast(" + name + " as long)"; + } + return name; + } +} diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/platbean/SysLogConsole.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/platbean/SysLogConsole.java index da9d71f..7d49ff3 100644 --- a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/platbean/SysLogConsole.java +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/platbean/SysLogConsole.java @@ -55,7 +55,7 @@ public class SysLogConsole extends BaseBean { private Integer logPort; @Column(name="LOG_GROUP") - @ApiParam(value ="日志分组(控制台日志,操作日志,系统日志,定任务日志)") + @ApiParam(value ="日志分组(日志记录器名称,getLogger方法的参数值)") private String logGroup; @Column(name="LOG_LEVEL") diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/sqlpack/CoreHqlPack.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/sqlpack/CoreHqlPack.java index 3d7d445..499d89b 100644 --- a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/sqlpack/CoreHqlPack.java +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/sqlpack/CoreHqlPack.java @@ -456,7 +456,7 @@ public class CoreHqlPack { * @return */ public static DdlPackBean packHqlSysFile(SysFile file) { - DdlPackBean result = DdlPackBean.getDdlPackBean(); + DdlPackBean result = DdlPackBean.getDdlPackBean(file); // hql拼接 DdlPreparedPack.getStringLikerPack(file.getFileOriginalName(), "fileOriginalName", result); @@ -466,9 +466,6 @@ public class CoreHqlPack { DdlPreparedPack.getStringLikerPack(file.getFileCode(), "fileCode", result); DdlPreparedPack.timeBuilder(file.getCreateDatetime(), "createDatetime", result, false, false); - // 添加默认排序 - DdlPreparedPack.getOrderDefault(file); - return result; }