From 69f047a78a8f72a450ffe56fc1c5f3c33bd1727e Mon Sep 17 00:00:00 2001 From: mrj Date: Sat, 12 Sep 2020 17:36:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E3=80=81=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E3=80=81=E5=AD=97=E6=AE=B5=E5=A2=9E=E5=8A=A0=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=80=9A=E8=BF=87=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=8F=AF=E4=BB=A5=E5=9C=A8=E6=A8=A1=E6=9D=BF=E4=B8=AD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=87=AA=E5=AE=9A=E4=B9=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../youran/generate/dao/MetaEntityDAO.java | 6 ++ .../com/youran/generate/dao/MetaFieldDAO.java | 6 ++ .../youran/generate/dao/MetaProjectDAO.java | 6 ++ .../generate/pojo/dto/MetaEntityAddDTO.java | 15 ++++ .../generate/pojo/dto/MetaFieldAddDTO.java | 16 ++++ .../generate/pojo/dto/MetaProjectAddDTO.java | 15 ++++ .../pojo/example/MetaEntityExample.java | 4 + .../pojo/example/MetaFieldExample.java | 3 +- .../pojo/example/MetaProjectExample.java | 3 +- .../generate/pojo/mapper/LabelsMapper.java | 37 +++++++++ .../pojo/mapper/MetaEntityMapper.java | 2 +- .../generate/pojo/mapper/MetaFieldMapper.java | 2 +- .../pojo/mapper/MetaProjectMapper.java | 2 +- .../youran/generate/pojo/po/MetaEntityPO.java | 12 +++ .../youran/generate/pojo/po/MetaFieldPO.java | 12 +++ .../generate/pojo/po/MetaProjectPO.java | 12 +++ .../generate/pojo/vo/MetaEntityListVO.java | 14 ++++ .../generate/pojo/vo/MetaFieldListVO.java | 14 ++++ .../generate/pojo/vo/MetaProjectListVO.java | 13 +++ .../generate/service/MetaEntityService.java | 8 ++ .../generate/service/MetaFieldService.java | 9 ++ .../generate/service/MetaProjectService.java | 9 ++ .../com/youran/generate/dao/MetaEntityDAO.xml | 21 ++++- .../com/youran/generate/dao/MetaFieldDAO.xml | 20 +++++ .../youran/generate/dao/MetaProjectDAO.xml | 21 +++++ .../assembly/schema/init.sql | 3 + youran-generate-ui/src/api/entity.js | 7 ++ youran-generate-ui/src/api/field.js | 7 ++ youran-generate-ui/src/api/project.js | 7 ++ .../components/HelpPopover/help-content.js | 29 ++++++- youran-generate-ui/src/views/entity/form.vue | 83 ++++++++++++++++++- youran-generate-ui/src/views/entity/model.js | 15 ++++ youran-generate-ui/src/views/field/form.vue | 83 ++++++++++++++++++- youran-generate-ui/src/views/field/model.js | 18 +++- youran-generate-ui/src/views/project/form.vue | 82 +++++++++++++++++- youran-generate-ui/src/views/project/model.js | 20 ++++- .../generate/web/api/MetaEntityAPI.java | 3 + .../youran/generate/web/api/MetaFieldAPI.java | 4 + .../generate/web/api/MetaProjectAPI.java | 3 + .../web/rest/MetaEntityController.java | 6 ++ .../web/rest/MetaFieldController.java | 7 +- .../web/rest/MetaProjectController.java | 7 ++ .../src/test/resources/DB/generate.sql | 3 + 43 files changed, 655 insertions(+), 14 deletions(-) create mode 100644 youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java diff --git a/youran-generate-core/src/main/java/com/youran/generate/dao/MetaEntityDAO.java b/youran-generate-core/src/main/java/com/youran/generate/dao/MetaEntityDAO.java index 9fb99a6d..78e2ad31 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/dao/MetaEntityDAO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/dao/MetaEntityDAO.java @@ -55,4 +55,10 @@ public interface MetaEntityDAO extends DAO { @Param("hold") boolean hold); + /** + * 查询label标签 + * + * @return + */ + List findLabels(); } diff --git a/youran-generate-core/src/main/java/com/youran/generate/dao/MetaFieldDAO.java b/youran-generate-core/src/main/java/com/youran/generate/dao/MetaFieldDAO.java index 6f597b8a..d4b49a64 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/dao/MetaFieldDAO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/dao/MetaFieldDAO.java @@ -51,5 +51,11 @@ public interface MetaFieldDAO extends DAO { */ List findJFieldNamesForQuery(Integer entityId); + /** + * 查询label标签 + * + * @return + */ + List findLabels(); } diff --git a/youran-generate-core/src/main/java/com/youran/generate/dao/MetaProjectDAO.java b/youran-generate-core/src/main/java/com/youran/generate/dao/MetaProjectDAO.java index effda9a7..6da959dc 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/dao/MetaProjectDAO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/dao/MetaProjectDAO.java @@ -25,5 +25,11 @@ public interface MetaProjectDAO extends DAO { */ List findModules(Integer projectId); + /** + * 查询label标签 + * + * @return + */ + List findLabels(); } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaEntityAddDTO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaEntityAddDTO.java index d0177b5b..74527da6 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaEntityAddDTO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaEntityAddDTO.java @@ -11,6 +11,8 @@ import javax.validation.constraints.AssertTrue; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; +import java.util.List; + import static com.youran.generate.pojo.example.MetaEntityExample.*; @@ -65,6 +67,12 @@ public class MetaEntityAddDTO extends AbstractDTO { */ private MetaEntityFeatureDTO feature; + /** + * 标签 + */ + @ApiModelProperty(notes = N_LABELS, example = E_LABELS) + private List labels; + @AssertTrue(message = "类名不合法") public boolean isClassNameValid(){ return !WordBlacklist.isClassNameBlacklist(this.className); @@ -142,4 +150,11 @@ public class MetaEntityAddDTO extends AbstractDTO { this.desc = desc; } + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaFieldAddDTO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaFieldAddDTO.java index a48ec770..2ad2efee 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaFieldAddDTO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaFieldAddDTO.java @@ -11,6 +11,8 @@ import javax.validation.constraints.Max; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; +import java.util.List; + import static com.youran.generate.pojo.example.MetaFieldExample.*; @@ -143,6 +145,12 @@ public class MetaFieldAddDTO extends AbstractDTO { @Const(constClass = MetaSpecialField.class) private String specialField; + /** + * 标签 + */ + @ApiModelProperty(notes = N_LABELS, example = E_LABELS) + private List labels; + public Integer getColumnWidth() { return columnWidth; } @@ -374,4 +382,12 @@ public class MetaFieldAddDTO extends AbstractDTO { public void setPkStrategy(Integer pkStrategy) { this.pkStrategy = pkStrategy; } + + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaProjectAddDTO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaProjectAddDTO.java index 4f18562b..9827bca4 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaProjectAddDTO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/dto/MetaProjectAddDTO.java @@ -9,6 +9,8 @@ import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; +import java.util.List; + import static com.youran.generate.pojo.example.MetaProjectExample.*; /** @@ -78,6 +80,11 @@ public class MetaProjectAddDTO extends AbstractDTO { @Length(max = 32, message = "password最大长度不能超过{max}") private String password; + /** + * 标签 + */ + @ApiModelProperty(notes = N_LABELS, example = E_LABELS) + private List labels; /** * 项目特性 */ @@ -202,4 +209,12 @@ public class MetaProjectAddDTO extends AbstractDTO { public void setRemoteUrl3(String remoteUrl3) { this.remoteUrl3 = remoteUrl3; } + + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaEntityExample.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaEntityExample.java index 503553d0..4410e49e 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaEntityExample.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaEntityExample.java @@ -28,5 +28,9 @@ public class MetaEntityExample extends AbstractExample { public static final String E_DESC = "动物"; public static final String N_PAGESIGN = "是否支持分页查询"; public static final String E_PAGESIGN = "true"; + public static final String N_LABELS = "标签"; + public static final String E_LABELS = "role:admin"; + + } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaFieldExample.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaFieldExample.java index fcfad1ca..5cb98463 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaFieldExample.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaFieldExample.java @@ -72,5 +72,6 @@ public class MetaFieldExample extends AbstractExample { public static final String E_UPDATE = "true"; public static final String N_SPECIALFIELD = "特殊字段类型"; public static final String E_SPECIALFIELD = "deleted"; - + public static final String N_LABELS = "标签"; + public static final String E_LABELS = "order:desc"; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaProjectExample.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaProjectExample.java index 8a965394..03c5ed63 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaProjectExample.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/example/MetaProjectExample.java @@ -32,6 +32,7 @@ public class MetaProjectExample extends AbstractExample { public static final String E_USERNAME = "username"; public static final String N_PASSWORD = "Git密码"; public static final String E_PASSWORD = "password"; - + public static final String N_LABELS = "标签"; + public static final String E_LABELS = "redis"; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java new file mode 100644 index 00000000..cc1b485e --- /dev/null +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java @@ -0,0 +1,37 @@ +package com.youran.generate.pojo.mapper; + +import com.youran.common.util.JsonUtil; +import com.youran.generate.pojo.dto.MetaEntityFeatureDTO; +import com.youran.generate.pojo.dto.MetaMtmFeatureDTO; +import com.youran.generate.pojo.dto.MetaProjectFeatureDTO; +import com.youran.generate.pojo.dto.chart.source.ChartSourceFeatureDTO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * 特性DTO转json + * + * @author mrj + * @date 2020/09/12 + */ +public class LabelsMapper { + + public static final String SPLIT = ";"; + + public static String asString(List labels) { + return StringUtils.join(labels, SPLIT); + } + + public static List asList(String labels) { + String[] split = StringUtils.split(labels, SPLIT); + if(null == split) { + return Collections.EMPTY_LIST; + } + return Arrays.asList(split); + } + +} diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaEntityMapper.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaEntityMapper.java index c8315caa..b0b20c93 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaEntityMapper.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaEntityMapper.java @@ -14,7 +14,7 @@ import org.mapstruct.factory.Mappers; * @author: cbb * @date: 2017/5/12 */ -@Mapper(uses = FeatureMapper.class) +@Mapper(uses = {FeatureMapper.class, LabelsMapper.class}) public interface MetaEntityMapper { MetaEntityMapper INSTANCE = Mappers.getMapper(MetaEntityMapper.class); diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaFieldMapper.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaFieldMapper.java index e5f41a92..e469a357 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaFieldMapper.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaFieldMapper.java @@ -14,7 +14,7 @@ import org.mapstruct.factory.Mappers; * @author: cbb * @date: 2017/5/12 */ -@Mapper +@Mapper(uses = LabelsMapper.class) public interface MetaFieldMapper { MetaFieldMapper INSTANCE = Mappers.getMapper(MetaFieldMapper.class); diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaProjectMapper.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaProjectMapper.java index ffa611e2..fcfa4ebd 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaProjectMapper.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/MetaProjectMapper.java @@ -14,7 +14,7 @@ import org.mapstruct.factory.Mappers; * @author: cbb * @date 2017/5/24 */ -@Mapper(uses = FeatureMapper.class) +@Mapper(uses = {FeatureMapper.class, LabelsMapper.class}) public interface MetaProjectMapper { MetaProjectMapper INSTANCE = Mappers.getMapper(MetaProjectMapper.class); diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java index 62481bcf..9449746d 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java @@ -60,6 +60,10 @@ public class MetaEntityPO extends BasePO implements Comparable { * 后续有新的特性直接往里加,省的再扩展新字段 */ private String feature; + /** + * 标签 + */ + private String labels; /** * 字段列表 @@ -535,6 +539,14 @@ public class MetaEntityPO extends BasePO implements Comparable { this.feature = feature; } + public String getLabels() { + return labels; + } + + public void setLabels(String labels) { + this.labels = labels; + } + public MetaEntityFeatureDTO getEntityFeature() { return entityFeature; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java index 8cb86cb5..aa7221b7 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java @@ -145,6 +145,10 @@ public class MetaFieldPO extends BasePO { * 特殊字段类型 */ private String specialField; + /** + * 标签 + */ + private String labels; /** * 外键对应实体 @@ -244,6 +248,14 @@ public class MetaFieldPO extends BasePO { this.specialField = specialField; } + public String getLabels() { + return labels; + } + + public void setLabels(String labels) { + this.labels = labels; + } + public Integer getFieldId() { return fieldId; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java index 7fee5cfa..16424d02 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java @@ -100,6 +100,10 @@ public class MetaProjectPO extends BasePO { * 项目特性 */ private String feature; + /** + * 标签 + */ + private String labels; /** * 项目下的所有实体 */ @@ -313,6 +317,14 @@ public class MetaProjectPO extends BasePO { this.feature = feature; } + public String getLabels() { + return labels; + } + + public void setLabels(String labels) { + this.labels = labels; + } + public Integer getTemplateId() { return templateId; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaEntityListVO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaEntityListVO.java index 476b18c1..54710a00 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaEntityListVO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaEntityListVO.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.List; + import static com.youran.generate.pojo.example.MetaEntityExample.*; /** @@ -36,6 +38,9 @@ public class MetaEntityListVO extends AbstractVO { @ApiModelProperty(notes = N_MODULE, example = E_MODULE) private String module; + @ApiModelProperty(notes = N_LABELS, example = E_LABELS) + private List labels; + @ApiModelProperty(notes = N_DESC, example = E_DESC) private String desc; @@ -114,6 +119,14 @@ public class MetaEntityListVO extends AbstractVO { this.desc = desc; } + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) @@ -123,6 +136,7 @@ public class MetaEntityListVO extends AbstractVO { .append("className", className) .append("tableName", tableName) .append("title", title) + .append("labels", labels) .append("desc", desc) .append("pageSign", pageSign) .toString(); diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaFieldListVO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaFieldListVO.java index 13d42647..6bc713ef 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaFieldListVO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaFieldListVO.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.List; + import static com.youran.generate.pojo.example.MetaFieldExample.*; /** @@ -105,6 +107,9 @@ public class MetaFieldListVO extends AbstractVO { @ApiModelProperty(notes = N_SPECIALFIELD, example = E_SPECIALFIELD) private String specialField; + @ApiModelProperty(notes = N_LABELS, example = E_LABELS) + private List labels; + @ApiModelProperty(notes = "级联字段数量", example = "0") private Integer cascadeFieldNum; @@ -356,6 +361,14 @@ public class MetaFieldListVO extends AbstractVO { this.update = update; } + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) @@ -388,6 +401,7 @@ public class MetaFieldListVO extends AbstractVO { .append("show", show) .append("update", update) .append("specialField", specialField) + .append("labels", labels) .append("cascadeFieldNum", cascadeFieldNum) .toString(); } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaProjectListVO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaProjectListVO.java index d2e61418..9a684e1d 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaProjectListVO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/vo/MetaProjectListVO.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.List; + import static com.youran.generate.pojo.example.MetaProjectExample.*; /** @@ -57,6 +59,9 @@ public class MetaProjectListVO extends AbstractVO { @ApiModelProperty(notes = N_USERNAME, example = E_USERNAME) private String username; + @ApiModelProperty(notes = N_LABELS, example = E_LABELS) + private List labels; + public String getGroupId() { return groupId; } @@ -169,6 +174,14 @@ public class MetaProjectListVO extends AbstractVO { this.projectDesc = projectDesc; } + public List getLabels() { + return labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) diff --git a/youran-generate-core/src/main/java/com/youran/generate/service/MetaEntityService.java b/youran-generate-core/src/main/java/com/youran/generate/service/MetaEntityService.java index 8b4fbe7a..a484153a 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/service/MetaEntityService.java +++ b/youran-generate-core/src/main/java/com/youran/generate/service/MetaEntityService.java @@ -241,4 +241,12 @@ public class MetaEntityService { } + /** + * 查询系统中使用过的label标签 + * + * @return label列表 + */ + public List findLabels() { + return metaEntityDAO.findLabels(); + } } diff --git a/youran-generate-core/src/main/java/com/youran/generate/service/MetaFieldService.java b/youran-generate-core/src/main/java/com/youran/generate/service/MetaFieldService.java index b195c3d5..c42bc7f7 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/service/MetaFieldService.java +++ b/youran-generate-core/src/main/java/com/youran/generate/service/MetaFieldService.java @@ -201,4 +201,13 @@ public class MetaFieldService { metaFieldDAO.update(field); } + + /** + * 查询系统中使用过的label标签 + * + * @return label列表 + */ + public List findLabels() { + return metaFieldDAO.findLabels(); + } } diff --git a/youran-generate-core/src/main/java/com/youran/generate/service/MetaProjectService.java b/youran-generate-core/src/main/java/com/youran/generate/service/MetaProjectService.java index 6e4f1a78..387adc5f 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/service/MetaProjectService.java +++ b/youran-generate-core/src/main/java/com/youran/generate/service/MetaProjectService.java @@ -266,6 +266,15 @@ public class MetaProjectService { return metaProjectDAO.findModules(projectId); } + + /** + * 查询系统中使用过的label标签 + * + * @return label列表 + */ + public List findLabels() { + return metaProjectDAO.findLabels(); + } /** * 根据项目校验操作人 * diff --git a/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaEntityDAO.xml b/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaEntityDAO.xml index de3b5e1a..e82eb721 100644 --- a/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaEntityDAO.xml +++ b/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaEntityDAO.xml @@ -28,6 +28,7 @@ `desc`, page_sign, feature, + labels, created_time, created_by, operated_time, @@ -45,6 +46,7 @@ #{desc,jdbcType=VARCHAR}, #{pageSign,jdbcType=BOOLEAN}, #{feature,jdbcType=VARCHAR}, + #{labels,jdbcType=VARCHAR}, #{createdTime,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{operatedTime,jdbcType=TIMESTAMP}, @@ -64,6 +66,7 @@ `desc` = #{desc,jdbcType=VARCHAR}, page_sign = #{pageSign,jdbcType=BOOLEAN}, feature = #{feature,jdbcType=VARCHAR}, + labels = #{labels,jdbcType=VARCHAR}, operated_time = #{operatedTime,jdbcType=TIMESTAMP}, operated_by = #{operatedBy,jdbcType=VARCHAR}, version = #{version,jdbcType=INTEGER} @@ -175,5 +178,21 @@ and t.entity_id = #{entityId,jdbcType=INTEGER} and m.hold_refer2 = #{hold,jdbcType=BOOLEAN} - + diff --git a/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaFieldDAO.xml b/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaFieldDAO.xml index 8472a732..2557c8e5 100644 --- a/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaFieldDAO.xml +++ b/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaFieldDAO.xml @@ -61,6 +61,7 @@ query_type, order_no, special_field, + labels, created_time, created_by, operated_time, @@ -100,6 +101,7 @@ #{queryType,jdbcType=INTEGER}, #{orderNo,jdbcType=INTEGER}, #{specialField,jdbcType=VARCHAR}, + #{labels,jdbcType=VARCHAR}, #{createdTime,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{operatedTime,jdbcType=TIMESTAMP}, @@ -141,6 +143,7 @@ query_type = #{queryType,jdbcType=INTEGER}, order_no = #{orderNo,jdbcType=INTEGER}, special_field = #{specialField,jdbcType=VARCHAR}, + labels = #{labels,jdbcType=VARCHAR}, operated_time = #{operatedTime,jdbcType=TIMESTAMP}, operated_by = #{operatedBy,jdbcType=VARCHAR}, version = #{version,jdbcType=INTEGER} @@ -196,4 +199,21 @@ and t.entity_id = #{entityId,jdbcType=INTEGER} and t.`query` = 1 + diff --git a/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaProjectDAO.xml b/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaProjectDAO.xml index beed75b4..cb710322 100644 --- a/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaProjectDAO.xml +++ b/youran-generate-core/src/main/resources/com/youran/generate/dao/MetaProjectDAO.xml @@ -34,6 +34,7 @@ `password`, project_version, feature, + labels, created_time, created_by, operated_time, @@ -58,6 +59,7 @@ #{password,jdbcType=VARCHAR}, #{projectVersion,jdbcType=INTEGER}, #{feature,jdbcType=VARCHAR}, + #{labels,jdbcType=VARCHAR}, #{createdTime,jdbcType=TIMESTAMP}, #{createdBy,jdbcType=VARCHAR}, #{operatedTime,jdbcType=TIMESTAMP}, @@ -85,6 +87,7 @@ `password` = #{password,jdbcType=VARCHAR}, project_version = #{projectVersion,jdbcType=INTEGER}, feature = #{feature,jdbcType=VARCHAR}, + labels = #{labels,jdbcType=VARCHAR}, operated_time = #{operatedTime,jdbcType=TIMESTAMP}, operated_by = #{operatedBy,jdbcType=VARCHAR}, version = #{version,jdbcType=INTEGER} @@ -123,4 +126,22 @@ ) as t + + diff --git a/youran-generate-release/assembly/schema/init.sql b/youran-generate-release/assembly/schema/init.sql index e9d05979..860f8e16 100644 --- a/youran-generate-release/assembly/schema/init.sql +++ b/youran-generate-release/assembly/schema/init.sql @@ -18,6 +18,7 @@ CREATE TABLE `meta_project` ( `password` varchar(256) DEFAULT NULL COMMENT 'Git密码', `project_version` int(11) NOT NULL COMMENT '项目版本号', `feature` text DEFAULT NULL COMMENT '特性json', + `labels` text DEFAULT NULL COMMENT '标签', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `created_by` varchar(32) DEFAULT NULL COMMENT '创建人', `operated_time` datetime DEFAULT NULL COMMENT '操作时间', @@ -41,6 +42,7 @@ CREATE TABLE `meta_entity` ( `desc` varchar(250) DEFAULT NULL COMMENT '实体描述', `page_sign` tinyint(1) DEFAULT NULL COMMENT '是否支持分页查询', `feature` text DEFAULT NULL COMMENT '特性json', + `labels` text DEFAULT NULL COMMENT '标签', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `created_by` varchar(32) DEFAULT NULL COMMENT '创建人', `operated_time` datetime DEFAULT NULL COMMENT '操作时间', @@ -87,6 +89,7 @@ CREATE TABLE `meta_field` ( `query_type` smallint(4) DEFAULT NULL COMMENT '查询方式', `order_no` smallint(4) DEFAULT NULL COMMENT '排序号', `special_field` varchar(20) DEFAULT NULL COMMENT '特殊字段类型', + `labels` text DEFAULT NULL COMMENT '标签', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `created_by` varchar(32) DEFAULT NULL COMMENT '创建人', `operated_time` datetime DEFAULT NULL COMMENT '操作时间', diff --git a/youran-generate-ui/src/api/entity.js b/youran-generate-ui/src/api/entity.js index 8301ae6b..87586f28 100644 --- a/youran-generate-ui/src/api/entity.js +++ b/youran-generate-ui/src/api/entity.js @@ -85,6 +85,13 @@ export default { } }) .then(response => checkResult(response)) + }, + /** + * 查询模块列表 + */ + findLabels () { + return request.get(`/${apiPath}/meta_entity/labels`) + .then(response => checkResult(response)) } } diff --git a/youran-generate-ui/src/api/field.js b/youran-generate-ui/src/api/field.js index 8ef541dd..e57343f8 100644 --- a/youran-generate-ui/src/api/field.js +++ b/youran-generate-ui/src/api/field.js @@ -65,6 +65,13 @@ export default { deleteBatch (data) { return request.put(`/${apiPath}/meta_field/delete_batch`, data) .then(response => checkResult(response)) + }, + /** + * 查询模块列表 + */ + findLabels () { + return request.get(`/${apiPath}/meta_field/labels`) + .then(response => checkResult(response)) } } diff --git a/youran-generate-ui/src/api/project.js b/youran-generate-ui/src/api/project.js index 0aba20d8..12bd439f 100644 --- a/youran-generate-ui/src/api/project.js +++ b/youran-generate-ui/src/api/project.js @@ -167,5 +167,12 @@ export default { findModules (projectId) { return request.get(`/${apiPath}/meta_project/${projectId}/modules`) .then(response => checkResult(response)) + }, + /** + * 查询模块列表 + */ + findLabels () { + return request.get(`/${apiPath}/meta_project/labels`) + .then(response => checkResult(response)) } } diff --git a/youran-generate-ui/src/components/HelpPopover/help-content.js b/youran-generate-ui/src/components/HelpPopover/help-content.js index a251ee05..847f8109 100644 --- a/youran-generate-ui/src/components/HelpPopover/help-content.js +++ b/youran-generate-ui/src/components/HelpPopover/help-content.js @@ -46,7 +46,16 @@ export default { 比如常见的Getter&Setter、toString()、构造函数等等。 点击访问Lombok官网 ` - } + }, + labels: ` +**标签**:增加标签后,可以在模板中获取标签配置,增强模板功能 + +**允许的标签格式为如下两种:** +- **Key**:简单Key方式的标签 +- **Key:value**:以键值对的方式的标签 + +> 注意:key只能是字符串和下划线;value可以包含大小写字母、数字、下划线、逗号 + ` }, entity: { @@ -81,6 +90,15 @@ export default { - 单个删除: 删除单个当前业务对象 - 批量删除: 批量删除当前业务对象 + `, + labels: ` +**标签**:增加标签后,可以在模板中获取标签配置,增强模板功能 + +**允许的标签格式为如下两种:** +- **Key**:简单Key方式的标签 +- **Key:value**:以键值对的方式的标签 + +> 注意:key只能是字符串和下划线;value可以包含大小写字母、数字、下划线、逗号 ` }, field: { @@ -232,6 +250,15 @@ private Integer publishSignSortSign; `, columnWidth: ` **列宽**:生成前端列表时,用来指定当前列的宽度(像素值),0值代表宽度自适应 + `, + labels: ` +**标签**:增加标签后,可以在模板中获取标签配置,增强模板功能 + +**允许的标签格式为如下两种:** +- **Key**:简单Key方式的标签 +- **Key:value**:以键值对的方式的标签 + +> 注意:key只能是字符串和下划线;value可以包含大小写字母、数字、下划线、逗号 ` }, 'const': { diff --git a/youran-generate-ui/src/views/entity/form.vue b/youran-generate-ui/src/views/entity/form.vue index ab18fe49..d27ad3de 100644 --- a/youran-generate-ui/src/views/entity/form.vue +++ b/youran-generate-ui/src/views/entity/form.vue @@ -62,6 +62,29 @@ + + + + + {{tag}} + + + + 增加标签 + + + { + this.$refs.saveTagInput.$refs.input.focus() + }) + }, + handleInputConfirm () { + let inputValue = this.inputValue + if (inputValue) { + if (!this.form.labels) this.form.labels = [] + if (this.form.labels.indexOf(inputValue) === -1) { + this.form.labels.push(inputValue) + } + } + this.inputVisible = false + this.inputValue = '' + }, + handleSelectConfirm () { + let inputValue = this.inputValue + if (!inputValue.endsWith(':')) { + this.handleInputConfirm() + } + }, + findLabels (queryString, cb) { + const action = (data) => { + const labels = data.slice(0) + const results = queryString ? labels.filter( + c => c.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + ) : labels + cb(results.map(c => ({ value: c }))) + } + entityApi.findLabels() + .then(data => { + action(data) + }) } }, created () { @@ -197,4 +262,20 @@ export default { } + .el-tag + .el-tag { + margin-left: 10px; + } + .button-new-tag { + margin-left: 10px; + height: 32px; + line-height: 30px; + padding-top: 0; + padding-bottom: 0; + } + .input-new-tag { + width: 90px; + margin-left: 10px; + vertical-align: bottom; + } + diff --git a/youran-generate-ui/src/views/entity/model.js b/youran-generate-ui/src/views/entity/model.js index 23fcb482..868dee93 100644 --- a/youran-generate-ui/src/views/entity/model.js +++ b/youran-generate-ui/src/views/entity/model.js @@ -67,6 +67,21 @@ export function getRules (vm) { ], desc: [ { max: 250, message: '长度不能超过250个字符', trigger: 'blur' } + ], + labels: [ + { type: 'array', + validator: (rule, labels, callback) => { + for (let index = 0; index < labels.length; index++) { + const label = labels[index] + if (!/^[a-zA-Z|_]+(:[a-zA-Z|_|0-9|,]+)?$/.test(label)) { + callback(new Error(`标签[${label}]格式错误,请重新填写`)) + } + } + + callback() + }, + trigger: 'blur' + } ] } } diff --git a/youran-generate-ui/src/views/field/form.vue b/youran-generate-ui/src/views/field/form.vue index b5da2833..1b5e4ca9 100644 --- a/youran-generate-ui/src/views/field/form.vue +++ b/youran-generate-ui/src/views/field/form.vue @@ -238,6 +238,29 @@ + + + + + {{tag}} + + + + 增加标签 + + + 提交 重置 @@ -284,7 +307,9 @@ export default { form: initFormBean(edit), rules: getRules(this), commonFeature: options.commonFeature, - fkFeature: options.fkFeature + fkFeature: options.fkFeature, + inputVisible: false, + inputValue: '' } }, computed: { @@ -541,6 +566,46 @@ export default { changeFkFeature () { this.form.foreignKey = true this.formReady() + }, + handleClose (tag) { + this.form.labels.splice(this.form.labels.indexOf(tag), 1) + this.$refs.projectForm.validateField('labels') + }, + showInput () { + this.inputVisible = true + this.$nextTick(_ => { + this.$refs.saveTagInput.$refs.input.focus() + }) + }, + handleInputConfirm () { + let inputValue = this.inputValue + if (inputValue) { + if (!this.form.labels) this.form.labels = [] + if (this.form.labels.indexOf(inputValue) === -1) { + this.form.labels.push(inputValue) + } + } + this.inputVisible = false + this.inputValue = '' + }, + handleSelectConfirm () { + let inputValue = this.inputValue + if (!inputValue.endsWith(':')) { + this.handleInputConfirm() + } + }, + findLabels (queryString, cb) { + const action = (data) => { + const labels = data.slice(0) + const results = queryString ? labels.filter( + c => c.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + ) : labels + cb(results.map(c => ({ value: c }))) + } + fieldApi.findLabels() + .then(data => { + action(data) + }) } }, created () { @@ -624,4 +689,20 @@ export default { border-top-color: #f56c6c!important; } } + + .el-tag + .el-tag { + margin-left: 10px; + } + .button-new-tag { + margin-left: 10px; + height: 32px; + line-height: 30px; + padding-top: 0; + padding-bottom: 0; + } + .input-new-tag { + width: 90px; + margin-left: 10px; + vertical-align: bottom; + } diff --git a/youran-generate-ui/src/views/field/model.js b/youran-generate-ui/src/views/field/model.js index fd869734..cafe2d5e 100644 --- a/youran-generate-ui/src/views/field/model.js +++ b/youran-generate-ui/src/views/field/model.js @@ -58,7 +58,8 @@ export function initFormBean (forEdit) { // 编辑方式 editType: options.editTypeOptions['TEXT'].value, // 排序号 - orderNo: 1 + orderNo: 1, + labels: [] } if (forEdit) { formBean['fieldId'] = null @@ -149,6 +150,21 @@ export function getRules (vm) { ], orderNo: [ { required: true, message: '请输入排序号', trigger: 'blur' } + ], + labels: [ + { type: 'array', + validator: (rule, labels, callback) => { + for (let index = 0; index < labels.length; index++) { + const label = labels[index] + if (!/^[a-zA-Z|_]+(:[a-zA-Z|_|0-9|,]+)?$/.test(label)) { + callback(new Error(`标签[${label}]格式错误,请重新填写`)) + } + } + + callback() + }, + trigger: 'blur' + } ] } } diff --git a/youran-generate-ui/src/views/project/form.vue b/youran-generate-ui/src/views/project/form.vue index f20c65f8..3e3fa75a 100644 --- a/youran-generate-ui/src/views/project/form.vue +++ b/youran-generate-ui/src/views/project/form.vue @@ -107,6 +107,29 @@ + + + + + {{tag}} + + + + 增加标签 + + + @@ -175,7 +198,9 @@ export default { rules: getRules(), templateList: [], templateItemVisible2: false, - templateItemVisible3: false + templateItemVisible3: false, + inputVisible: false, + inputValue: '' } }, methods: { @@ -260,6 +285,46 @@ export default { } else { this.$router.push('/project') } + }, + handleClose (tag) { + this.form.labels.splice(this.form.labels.indexOf(tag), 1) + this.$refs.projectForm.validateField('labels') + }, + showInput () { + this.inputVisible = true + this.$nextTick(_ => { + this.$refs.saveTagInput.$refs.input.focus() + }) + }, + handleInputConfirm () { + let inputValue = this.inputValue + if (inputValue) { + if (!this.form.labels) this.form.labels = [] + if (this.form.labels.indexOf(inputValue) === -1) { + this.form.labels.push(inputValue) + } + } + this.inputVisible = false + this.inputValue = '' + }, + handleSelectConfirm () { + let inputValue = this.inputValue + if (!inputValue.endsWith(':')) { + this.handleInputConfirm() + } + }, + findLabels (queryString, cb) { + const action = (data) => { + const labels = data.slice(0) + const results = queryString ? labels.filter( + c => c.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + ) : labels + cb(results.map(c => ({ value: c }))) + } + projectApi.findLabels() + .then(data => { + action(data) + }) } }, created () { @@ -280,4 +345,19 @@ export default { @include youran-form; } + .el-tag + .el-tag { + margin-left: 10px; + } + .button-new-tag { + margin-left: 10px; + height: 32px; + line-height: 30px; + padding-top: 0; + padding-bottom: 0; + } + .input-new-tag { + width: 90px; + margin-left: 10px; + vertical-align: bottom; + } diff --git a/youran-generate-ui/src/views/project/model.js b/youran-generate-ui/src/views/project/model.js index ef3bc977..ad1f8dab 100644 --- a/youran-generate-ui/src/views/project/model.js +++ b/youran-generate-ui/src/views/project/model.js @@ -17,7 +17,8 @@ export function initFormBean (forEdit) { feature: { bootVersion: 2, lombokEnabled: false - } + }, + labels: [] } if (forEdit) { formBean['projectId'] = null @@ -81,6 +82,21 @@ export function getRules () { bootVersion: [ { required: true, type: 'number', message: '请选择spring-boot版本', trigger: 'change' } ] - } + }, + labels: [ + { type: 'array', + validator: (rule, labels, callback) => { + for (let index = 0; index < labels.length; index++) { + const label = labels[index] + if (!/^[a-zA-Z|_]+(:[a-zA-Z|_|0-9|,]+)?$/.test(label)) { + callback(new Error(`标签[${label}]格式错误,请重新填写`)) + } + } + + callback() + }, + trigger: 'blur' + } + ] } } diff --git a/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaEntityAPI.java b/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaEntityAPI.java index 7d58dc3e..8d4a6e02 100644 --- a/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaEntityAPI.java +++ b/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaEntityAPI.java @@ -107,4 +107,7 @@ public interface MetaEntityAPI { }) ResponseEntity getDefaultFkFieldNameForSql(Integer entityId); + @ApiOperation(value = "查询标签列表") + ResponseEntity> findLabels(); + } diff --git a/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaFieldAPI.java b/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaFieldAPI.java index 7707939b..76407458 100644 --- a/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaFieldAPI.java +++ b/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaFieldAPI.java @@ -85,4 +85,8 @@ public interface MetaFieldAPI { @ApiImplicitParam(name = "dto", dataType = "MetaFieldUpdateOrderNoDTO", value = "修改字段序号参数", paramType = "body"), }) ResponseEntity updateOrderNo(MetaFieldUpdateOrderNoDTO dto); + + @ApiOperation(value = "查询标签列表") + ResponseEntity> findLabels(); + } diff --git a/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaProjectAPI.java b/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaProjectAPI.java index 314e001e..0a6a6fb8 100644 --- a/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaProjectAPI.java +++ b/youran-generate-web/src/main/java/com/youran/generate/web/api/MetaProjectAPI.java @@ -97,4 +97,7 @@ public interface MetaProjectAPI { }) ResponseEntity> findModules(Integer projectId); + @ApiOperation(value = "查询标签列表") + ResponseEntity> findLabels(); + } diff --git a/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaEntityController.java b/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaEntityController.java index 5f0b37d7..bffbf87c 100644 --- a/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaEntityController.java +++ b/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaEntityController.java @@ -110,4 +110,10 @@ public class MetaEntityController extends AbstractController implements MetaEnti return ResponseEntity.ok(fkFieldName); } + @Override + @GetMapping(value = "/labels") + public ResponseEntity> findLabels() { + List labels = metaEntityService.findLabels(); + return ResponseEntity.ok(labels); + } } diff --git a/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaFieldController.java b/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaFieldController.java index e22075a4..ad45b9b3 100644 --- a/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaFieldController.java +++ b/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaFieldController.java @@ -99,6 +99,11 @@ public class MetaFieldController extends AbstractController implements MetaField Integer orderNo = metaFieldService.updateOrderNo(dto); return ResponseEntity.ok(orderNo); } - + @Override + @GetMapping(value = "/labels") + public ResponseEntity> findLabels() { + List labels = metaFieldService.findLabels(); + return ResponseEntity.ok(labels); + } } diff --git a/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaProjectController.java b/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaProjectController.java index d523302a..8094fb8d 100644 --- a/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaProjectController.java +++ b/youran-generate-web/src/main/java/com/youran/generate/web/rest/MetaProjectController.java @@ -90,4 +90,11 @@ public class MetaProjectController extends AbstractController implements MetaPro List modules = metaProjectService.findModules(projectId); return ResponseEntity.ok(modules); } + + @Override + @GetMapping(value = "/labels") + public ResponseEntity> findLabels() { + List labels = metaProjectService.findLabels(); + return ResponseEntity.ok(labels); + } } diff --git a/youran-generate-web/src/test/resources/DB/generate.sql b/youran-generate-web/src/test/resources/DB/generate.sql index 3a258bfd..fad3f969 100644 --- a/youran-generate-web/src/test/resources/DB/generate.sql +++ b/youran-generate-web/src/test/resources/DB/generate.sql @@ -19,6 +19,7 @@ CREATE TABLE `meta_project` ( `password` varchar(256) DEFAULT NULL COMMENT 'Git密码', `project_version` int(11) NOT NULL COMMENT '项目版本号', `feature` text DEFAULT NULL COMMENT '特性json', + `labels` text DEFAULT NULL COMMENT '标签', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `created_by` varchar(32) DEFAULT NULL COMMENT '创建人', `operated_time` datetime DEFAULT NULL COMMENT '操作时间', @@ -42,6 +43,7 @@ CREATE TABLE `meta_entity` ( `desc` varchar(250) DEFAULT NULL COMMENT '实体描述', `page_sign` tinyint(1) DEFAULT NULL COMMENT '是否支持分页查询', `feature` text DEFAULT NULL COMMENT '特性json', + `labels` text DEFAULT NULL COMMENT '标签', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `created_by` varchar(32) DEFAULT NULL COMMENT '创建人', `operated_time` datetime DEFAULT NULL COMMENT '操作时间', @@ -88,6 +90,7 @@ CREATE TABLE `meta_field` ( `query_type` smallint(4) DEFAULT NULL COMMENT '查询方式', `order_no` smallint(4) DEFAULT NULL COMMENT '排序号', `special_field` varchar(20) DEFAULT NULL COMMENT '特殊字段类型', + `labels` text DEFAULT NULL COMMENT '标签', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `created_by` varchar(32) DEFAULT NULL COMMENT '创建人', `operated_time` datetime DEFAULT NULL COMMENT '操作时间', -- Gitee From 7d3a1f67c1e2fba16b39cbfc76efba5b281c206d Mon Sep 17 00:00:00 2001 From: mrj Date: Sat, 12 Sep 2020 20:57:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E3=80=81=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E3=80=81=E5=AD=97=E6=AE=B5=E5=A2=9E=E5=8A=A0=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=80=9A=E8=BF=87=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=8F=AF=E4=BB=A5=E5=9C=A8=E6=A8=A1=E6=9D=BF=E4=B8=AD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=87=AA=E5=AE=9A=E4=B9=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../generate/pojo/mapper/LabelsMapper.java | 14 ++----- .../youran/generate/pojo/po/MetaEntityPO.java | 24 +++++++++++ .../youran/generate/pojo/po/MetaFieldPO.java | 22 ++++++++++ .../generate/pojo/po/MetaProjectPO.java | 22 ++++++++++ .../template/context/BaseContext.java | 36 ++++++++++++++++ .../com/youran/generate/util/LabelsUtil.java | 42 +++++++++++++++++++ .../components/HelpPopover/help-content.js | 12 ++++++ 7 files changed, 162 insertions(+), 10 deletions(-) create mode 100644 youran-generate-core/src/main/java/com/youran/generate/util/LabelsUtil.java diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java index cc1b485e..fdbf3359 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/mapper/LabelsMapper.java @@ -1,11 +1,6 @@ package com.youran.generate.pojo.mapper; -import com.youran.common.util.JsonUtil; -import com.youran.generate.pojo.dto.MetaEntityFeatureDTO; -import com.youran.generate.pojo.dto.MetaMtmFeatureDTO; -import com.youran.generate.pojo.dto.MetaProjectFeatureDTO; -import com.youran.generate.pojo.dto.chart.source.ChartSourceFeatureDTO; -import org.apache.commons.collections4.CollectionUtils; +import com.youran.generate.util.LabelsUtil; import org.apache.commons.lang3.StringUtils; import java.util.Arrays; @@ -20,15 +15,14 @@ import java.util.List; */ public class LabelsMapper { - public static final String SPLIT = ";"; public static String asString(List labels) { - return StringUtils.join(labels, SPLIT); + return StringUtils.join(labels, LabelsUtil.LABEL_SPLIT); } public static List asList(String labels) { - String[] split = StringUtils.split(labels, SPLIT); - if(null == split) { + String[] split = StringUtils.split(labels, LabelsUtil.LABEL_SPLIT); + if (null == split) { return Collections.EMPTY_LIST; } return Arrays.asList(split); diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java index 9449746d..796ef042 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaEntityPO.java @@ -2,6 +2,7 @@ package com.youran.generate.pojo.po; import com.fasterxml.jackson.annotation.JsonIgnore; import com.youran.common.util.JsonUtil; +import com.youran.generate.util.LabelsUtil; import com.youran.generate.pojo.dto.MetaEntityFeatureDTO; import com.youran.generate.pojo.mapper.FeatureMapper; import org.apache.commons.lang3.StringUtils; @@ -200,6 +201,29 @@ public class MetaEntityPO extends BasePO implements Comparable { @JsonIgnore private transient MetaEntityFeatureDTO entityFeature; + + + /** + * 判断实体是否包含标签 + * @param label + * @return + */ + public boolean hasLabel(String label) { + if(null != getLabelValue(label)) { + return true; + } + return false; + } + + /** + * 判断实体是否包含标签 + * @param label + * @return 标签值 + */ + public String getLabelValue(String label) { + return LabelsUtil.getLabelValue(label, this.labels); + } + /** * 规范化实体属性 */ diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java index aa7221b7..c60b6e6e 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaFieldPO.java @@ -1,6 +1,7 @@ package com.youran.generate.pojo.po; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.youran.generate.util.LabelsUtil; import com.youran.generate.constant.PrimaryKeyStrategy; import org.apache.commons.lang3.StringUtils; @@ -184,6 +185,27 @@ public class MetaFieldPO extends BasePO { this.fieldDesc : this.fieldComment; } + /** + * 判断实体是否包含标签 + * @param label + * @return + */ + public boolean hasLabel(String label) { + if(null != getLabelValue(label)) { + return true; + } + return false; + } + + /** + * 判断实体是否包含标签 + * @param label + * @return 标签值 + */ + public String getLabelValue(String label) { + return LabelsUtil.getLabelValue(label, this.labels); + } + public Integer getProjectId() { return projectId; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java index 16424d02..155800e0 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java +++ b/youran-generate-core/src/main/java/com/youran/generate/pojo/po/MetaProjectPO.java @@ -1,6 +1,7 @@ package com.youran.generate.pojo.po; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.youran.generate.util.LabelsUtil; import com.youran.generate.pojo.po.chart.MetaChartPO; import com.youran.generate.pojo.po.chart.MetaDashboardPO; import org.apache.commons.lang3.StringUtils; @@ -181,6 +182,27 @@ public class MetaProjectPO extends BasePO { return "common"; } + /** + * 判断实体是否包含标签 + * @param label + * @return + */ + public boolean hasLabel(String label) { + if(null != getLabelValue(label)) { + return true; + } + return false; + } + + /** + * 判断实体是否包含标签 + * @param label + * @return 标签值 + */ + public String getLabelValue(String label) { + return LabelsUtil.getLabelValue(label, this.labels); + } + public List getMtms() { return mtms; } diff --git a/youran-generate-core/src/main/java/com/youran/generate/template/context/BaseContext.java b/youran-generate-core/src/main/java/com/youran/generate/template/context/BaseContext.java index 5464d21c..269a985a 100644 --- a/youran-generate-core/src/main/java/com/youran/generate/template/context/BaseContext.java +++ b/youran-generate-core/src/main/java/com/youran/generate/template/context/BaseContext.java @@ -7,9 +7,11 @@ import com.youran.generate.constant.JFieldType; import com.youran.generate.exception.SkipCurrentException; import com.youran.generate.pojo.dto.MetaProjectFeatureDTO; import com.youran.generate.pojo.mapper.FeatureMapper; +import com.youran.generate.pojo.mapper.LabelsMapper; import com.youran.generate.pojo.po.*; import com.youran.generate.pojo.po.chart.MetaChartPO; import com.youran.generate.pojo.po.chart.MetaDashboardPO; +import com.youran.generate.util.LabelsUtil; import com.youran.generate.util.SwitchCaseUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; @@ -112,6 +114,10 @@ public class BaseContext { */ protected final MetaProjectFeatureDTO projectFeature; + /** + * 项目标签 + */ + private HashMap labels; public BaseContext(MetaProjectPO project) { //所有实体 @@ -146,6 +152,19 @@ public class BaseContext { this.dashboards = project.getDashboards(); //项目特性 this.projectFeature = FeatureMapper.asProjectFeatureDTO(project.getFeature()); + //项目标签 + List labels = LabelsMapper.asList(project.getLabels()); + this.labels = new HashMap<>(labels.size()); + for (String label : labels) { + label = StringUtils.trim(label); + if (StringUtils.contains(label, LabelsUtil.KEY_SPLIT)) { + String value = StringUtils.trim(StringUtils.substringAfter(label, LabelsUtil.KEY_SPLIT)); + this.labels.put(label, value); + } else { + this.labels.put(label, label); + } + + } //初始化java依赖 this.imports = new TreeSet<>(); this.staticImports = new TreeSet<>(); @@ -379,6 +398,23 @@ public class BaseContext { return sb.toString(); } + /** + * 判断项目是否包含标签 + * @param label + * @return + */ + public boolean hasLabel(String label) { + return this.labels.containsKey(StringUtils.trim(label)); + } + + /** + * 判断项目是否包含标签 + * @param label + * @return 标签值 + */ + public String getLabelValue(String label) { + return this.labels.get(StringUtils.trim(label)); + } public List getMetaEntities() { return metaEntities; diff --git a/youran-generate-core/src/main/java/com/youran/generate/util/LabelsUtil.java b/youran-generate-core/src/main/java/com/youran/generate/util/LabelsUtil.java new file mode 100644 index 00000000..a2e60b14 --- /dev/null +++ b/youran-generate-core/src/main/java/com/youran/generate/util/LabelsUtil.java @@ -0,0 +1,42 @@ +package com.youran.generate.util; + +import org.apache.commons.lang3.StringUtils; + +public class LabelsUtil { + + public static final String LABEL_SPLIT = ";"; + public static final String KEY_SPLIT = ":"; + + + + /** + * 判断实体是否包含标签 + * @param key + * @param labels + * @return 标签值 + */ + public static String getLabelValue(String key, String labels) { + String[] split = StringUtils.split(labels, LabelsUtil.LABEL_SPLIT); + String key1 = StringUtils.trim(key); + if(null != split) { + for (String str : split) { + str = StringUtils.trim(str); + // 单key形式,等值比较 + if (StringUtils.equals(str, key1)) { + return key; + } + // key:value形式,分割后比较 + if (StringUtils.contains(str, LabelsUtil.KEY_SPLIT)) { + String[] key_value = StringUtils.split(str, LabelsUtil.KEY_SPLIT); + if(null != key_value && key_value.length == 2) { + String key2 = StringUtils.trim(key_value[0]); + if(StringUtils.equals(key1, key2)) { + return StringUtils.trim(key_value[1]); + } + } + } + } + } + return null; + } +} diff --git a/youran-generate-ui/src/components/HelpPopover/help-content.js b/youran-generate-ui/src/components/HelpPopover/help-content.js index 847f8109..36b46f8a 100644 --- a/youran-generate-ui/src/components/HelpPopover/help-content.js +++ b/youran-generate-ui/src/components/HelpPopover/help-content.js @@ -55,6 +55,10 @@ export default { - **Key:value**:以键值对的方式的标签 > 注意:key只能是字符串和下划线;value可以包含大小写字母、数字、下划线、逗号 + +**模板中获取标签配置** +- **判断key是否存在**:\${this.hasLabel(label)} +- **获取key配置的value**:\${this.getLabelValue(label)!} ` }, entity: { @@ -99,6 +103,10 @@ export default { - **Key:value**:以键值对的方式的标签 > 注意:key只能是字符串和下划线;value可以包含大小写字母、数字、下划线、逗号 + +**模板中获取标签配置** +- **判断key是否存在**:\${this.metaEntity.hasLabel(label)} +- **获取key配置的value**:\${this.metaEntity.getLabelValue(label)!} ` }, field: { @@ -259,6 +267,10 @@ private Integer publishSignSortSign; - **Key:value**:以键值对的方式的标签 > 注意:key只能是字符串和下划线;value可以包含大小写字母、数字、下划线、逗号 + +**模板中获取标签配置** +- **判断key是否存在**:\${fieldPO.hasLabel(label)} +- **获取key配置的value**:\${fieldPO.getLabelValue(label)!} ` }, 'const': { -- Gitee From fa7bce36452420b88b8a7bc59902b0d479147130 Mon Sep 17 00:00:00 2001 From: mrj Date: Sat, 12 Sep 2020 21:32:21 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E3=80=81=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E3=80=81=E5=AD=97=E6=AE=B5=E5=A2=9E=E5=8A=A0=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=80=9A=E8=BF=87=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=8F=AF=E4=BB=A5=E5=9C=A8=E6=A8=A1=E6=9D=BF=E4=B8=AD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=87=AA=E5=AE=9A=E4=B9=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- youran-generate-ui/src/views/entity/form.vue | 20 ++++++++++++------- youran-generate-ui/src/views/field/form.vue | 20 ++++++++++++------- youran-generate-ui/src/views/project/form.vue | 20 ++++++++++++------- 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/youran-generate-ui/src/views/entity/form.vue b/youran-generate-ui/src/views/entity/form.vue index d27ad3de..fd5ac3ee 100644 --- a/youran-generate-ui/src/views/entity/form.vue +++ b/youran-generate-ui/src/views/entity/form.vue @@ -143,7 +143,8 @@ export default { form: initFormBean(edit), rules: getRules(this), inputVisible: false, - inputValue: '' + inputValue: '', + labels: null } }, watch: { @@ -230,17 +231,22 @@ export default { } }, findLabels (queryString, cb) { - const action = (data) => { - const labels = data.slice(0) + const action = () => { + const labels = this.labels.slice(0) const results = queryString ? labels.filter( c => c.toLowerCase().indexOf(queryString.toLowerCase()) === 0 ) : labels cb(results.map(c => ({ value: c }))) } - entityApi.findLabels() - .then(data => { - action(data) - }) + if (this.labels) { + action() + } else { + entityApi.findLabels() + .then(data => { + this.labels = data + action() + }) + } } }, created () { diff --git a/youran-generate-ui/src/views/field/form.vue b/youran-generate-ui/src/views/field/form.vue index 1b5e4ca9..b7cc9978 100644 --- a/youran-generate-ui/src/views/field/form.vue +++ b/youran-generate-ui/src/views/field/form.vue @@ -309,7 +309,8 @@ export default { commonFeature: options.commonFeature, fkFeature: options.fkFeature, inputVisible: false, - inputValue: '' + inputValue: '', + labels: null } }, computed: { @@ -595,17 +596,22 @@ export default { } }, findLabels (queryString, cb) { - const action = (data) => { - const labels = data.slice(0) + const action = () => { + const labels = this.labels.slice(0) const results = queryString ? labels.filter( c => c.toLowerCase().indexOf(queryString.toLowerCase()) === 0 ) : labels cb(results.map(c => ({ value: c }))) } - fieldApi.findLabels() - .then(data => { - action(data) - }) + if (this.labels) { + action() + } else { + fieldApi.findLabels() + .then(data => { + this.labels = data + action() + }) + } } }, created () { diff --git a/youran-generate-ui/src/views/project/form.vue b/youran-generate-ui/src/views/project/form.vue index 3e3fa75a..182efe60 100644 --- a/youran-generate-ui/src/views/project/form.vue +++ b/youran-generate-ui/src/views/project/form.vue @@ -200,7 +200,8 @@ export default { templateItemVisible2: false, templateItemVisible3: false, inputVisible: false, - inputValue: '' + inputValue: '', + labels: null } }, methods: { @@ -314,17 +315,22 @@ export default { } }, findLabels (queryString, cb) { - const action = (data) => { - const labels = data.slice(0) + const action = () => { + const labels = this.labels.slice(0) const results = queryString ? labels.filter( c => c.toLowerCase().indexOf(queryString.toLowerCase()) === 0 ) : labels cb(results.map(c => ({ value: c }))) } - projectApi.findLabels() - .then(data => { - action(data) - }) + if (this.labels) { + action() + } else { + projectApi.findLabels() + .then(data => { + this.labels = data + action() + }) + } } }, created () { -- Gitee