package com.highdatas.mdm.entity; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import com.highdatas.mdm.pojo.Segment; import com.highdatas.mdm.pojo.ViewJoinType; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.ContentBuilder; import com.highdatas.mdm.util.DbUtils; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; import java.text.MessageFormat; import java.util.List; /** *

* *

* * @author kimi * @since 2020-04-15 */ @TableName("sys_view_join") public class SysViewJoin extends Model { private static final long serialVersionUID = 1L; private String id; @TableField("parent_id") private String parentId; @TableField("menu_id") private String menuId; private String fields; @TableField("join_maintain") private String joinMaintain; @TableField("join_field") private String joinField; @TableField("base_field") private String baseField; @TableField("join_segment") private String joinSegment; @TableField("join_type") private ViewJoinType joinType; @TableField("need_update") private Boolean needUpdate; private transient String joinTableName; private transient String baseTableName; private transient String joinVersion; private transient String menuName; public String getMenuName() { return menuName; } public SysViewJoin setMenuName(String menuName) { this.menuName = menuName; return this; } public ViewJoinType getJoinType() { return joinType; } public SysViewJoin setJoinType(ViewJoinType joinType) { this.joinType = joinType; return this; } public Boolean getNeedUpdate() { return needUpdate; } public SysViewJoin setNeedUpdate(Boolean needUpdate) { this.needUpdate = needUpdate; return this; } public String getMenuId() { return menuId; } public SysViewJoin setMenuId(String menuId) { this.menuId = menuId; return this; } public String getJoinTableName() { return joinTableName; } public void setJoinTableName(String joinTableName) { this.joinTableName = joinTableName; } public String getJoinVersion() { return joinVersion; } public void setJoinVersion(String joinVersion) { this.joinVersion = joinVersion; } public String getId() { return id; } public SysViewJoin setId(String id) { this.id = id; return this; } public String getParentId() { return parentId; } public SysViewJoin setParentId(String parentId) { this.parentId = parentId; return this; } public String getFields() { return fields; } public SysViewJoin setFields(String fields) { this.fields = fields; return this; } public String getJoinMaintain() { return joinMaintain; } public SysViewJoin setJoinMaintain(String joinMaintain) { this.joinMaintain = joinMaintain; return this; } public String getJoinField() { return joinField; } public SysViewJoin setJoinField(String joinField) { this.joinField = joinField; return this; } public String getBaseField() { return baseField; } public SysViewJoin setBaseField(String baseField) { this.baseField = baseField; return this; } public String getJoinSegment() { return joinSegment; } public SysViewJoin setJoinSegment(String joinSegment) { this.joinSegment = joinSegment; return this; } @Override protected Serializable pkVal() { return this.id; } @Override public String toString() { return "SysViewJoin{" + "id=" + id + ", parentId=" + parentId + ", fields=" + fields + ", joinMaintain=" + joinMaintain + ", joinField=" + joinField + ", baseField=" + baseField + ", joinSegment=" + joinSegment + "}"; } public String createJoinStr() { if (StringUtils.isEmpty(joinTableName)) { return null; } if (StringUtils.isEmpty(baseTableName)) { return null; } List baseFieldList = DbUtils.split(baseField); List joinFieldList = DbUtils.split(joinField); ContentBuilder builder = new ContentBuilder(Constant.AND); for (int i = 0; i < baseFieldList.size(); i++) { String oneBase = baseFieldList.get(i); String oneJoin = joinFieldList.get(i); String base = MessageFormat.format(Constant.Alias, baseTableName, oneBase); String join = MessageFormat.format(Constant.Alias, joinTableName, oneJoin); Segment segment = new Segment(base, join); builder.append(segment.toRawString()); } return MessageFormat.format(Constant.InnerJoinTemplate, joinType.toString(), joinTableName, builder.toString()); } public String getBaseTableName() { return baseTableName; } public SysViewJoin setBaseTableName(String baseTableName) { this.baseTableName = baseTableName; return this; } }