返回给前端样式数据整合Swagger

对于前端样式整合swagger,只对接口作加强,不对接口逻辑作修改,当json样式拼接完成,咱们把json转为对应的实体类便可。前端

前端json样式对象构造参考:https://workshops.otrs365.cn/web/#/132?page_id=1248web

针对前端样式,这次抽出5个公共模块类,下面对这些类进行展开叙述数据库

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ReturnData 返回给前端的数据(最外层)

ReturnData<T,L,O>json

/**
 * @param <T> FormStyle里面Data的泛型
 * @param <L> ListHead里面的字段的具体属性
 * @param <O> OverviewList,通常与数据库表属性对应
 * @Description:
 * @author: 张重虎
 * @Date: 2021/6/2 9:31
 * @Copyright: Xi'an Dian Tong Software Co., Ltd. All Rights Reserved.
 * @Version 1.0
 */
@Data
@ApiModel
public class ReturnData<T,L,O> {
    @JsonProperty("tableStyle")
    @ApiModelProperty(value = "表格样式")
    private Tablestyle<L,O> tablestyle;
    @ApiModelProperty(value = "表单样式")
    @JsonProperty("formStyle")
    private Formstyle<T> formstyle;
}
View Code

 

ReturnData<T,L,O>使咱们能高度自定义返回的样式ide

前端界面以简单的FormStyle和TableStyle展开拼接spa

 

 

FormStyle (返回给前端的表单样式)

FormStyle里面有两个基本属性: data和order。data里面是一个个order对象,对象里面是具体的属性翻译

Formstyle<T>日志

@lombok.Data
@ApiModel
public class Formstyle<T> {
    @ApiModelProperty(value = "页面表单字段具体样式")
    private T data;
    @ApiModelProperty(value = "页面表单展现字段")
    private List<String> order;
}

 

 

Data对应一个泛型,泛型里面定义Data的基本属性,通常如下属性就够了,多的在继承这个类,而后进行扩展便可code

FormStyleDataGeneric:orm

@Data
@ApiModel
public class FormStyleDataGeneric {
    @JsonProperty("default")
    @ApiModelProperty(value = "默认值")
    private String defaults;

    @ApiModelProperty(value = "展现")
    private String display;

    @JsonProperty("promptCode")
    @ApiModelProperty(value = "0,不作提示;1,展现在文本框内;2,展现在字段下方;,3,展现图标在字段尾部进行提示;4,以红色提示展现在字段下方")
    private int promptcode;

    @ApiModelProperty(value = "表单提交到后台的 Key")
    private String name;

    @ApiModelProperty(value = "可选项")
    private JSONObject options;

    @JsonProperty("disabledClear")
    @ApiModelProperty(value = "可清除/可擦除")
    private int disabledclear;

    @JsonProperty("promptMessage")
    @ApiModelProperty(value = "提示信息")
    private String promptmessage;

    @ApiModelProperty(value = "翻译信息展现在左侧的 Label 中")
    private String label;

    @ApiModelProperty(value = "字段类型。文本:Text,下拉选:Dropdown,树:SelectTree,复选框:Checkbox,时间类型:DateTime(年月日-时分秒),Date(年月日)")
    private String type;
}
View Code

 

FormStyleDataGeneric里面的属性对应前端界面效果

 

 

Formstyle<T> ,T 若是FormStyleDataGeneric里面的属性不知足,则自定义一个便可

使用方法 Formstyle<FormStyleDataGeneric>

TableStyle (返回给前端的表格样式)

TableStyle<L,O>

@Data
@ApiModel
public class Tablestyle<L,O> {
    @JsonProperty("PreferenceFields")
    @ApiModelProperty(value = "表格中表头字段")
    private List<String> preferencefields ;

    @ApiModelProperty(value = "可配置数据")
    private List<String> configData ;


    @ApiModelProperty(value = "表格数据总数")
    private int total;

    @JsonProperty("OverviewList")
    @ApiModelProperty(value = "表格中具体某条数据")
    private List<O> overviewlist;

    @JsonProperty("ListHeader")
    @ApiModelProperty(value = "表头字段的具体属性")
    private L listheader;
}
View Code

 

TableStyle<L,O>对应页面属性说明

 

 

看得出来,TableStyle<L,O>里面有两个泛型,若是基本的属性知足不了咱们,咱们自定义一个类,而后传进去便可。另外,泛型O通常是对应咱们数据表的那个dao实体类,直接传进去便可

泛型L,L表明ListHeader里面的属性,就是表头字段的属性,在小岛这里看不出来,咱们用另外一个界面对这些属性进行解读。

定义ListHeader<T>的时候,咱们根据数据表dao去定义属性,而后加上泛型T便可

ListHeader<T> , 这个T咱们通常传ListHeaderGeneric就够了,若是须要添加其余字段,就自定义一个泛型,往里面传便可

@Data
@ApiModel
public class Listheader<T> {
    @ApiModelProperty(value = "模板")
    private T template;

    @ApiModelProperty(value = "流程")
    private T process;

    @JsonProperty("featureCode")
    @ApiModelProperty(value = "特征码")
    private T featurecode;

    @JsonProperty("communicationConfigName")
    @ApiModelProperty(value = "通信地址名称")
    private T communicationconfigname;

    @JsonProperty("dataPackageName")
    @ApiModelProperty(value = "数据包名称")
    private T datapackagename;

    @JsonProperty("changeBy")
    @ApiModelProperty(value = "修改者")
    private T changeby;

    @JsonProperty("changeTime")
    @ApiModelProperty(value = "修改时间")
    private T changetime;

    @JsonProperty("createBy")
    @ApiModelProperty(value = "建立者")
    private T createby;

    @JsonProperty("createTime")
    @ApiModelProperty(value = "建立时间")
    private T createtime;

    @ApiModelProperty(value = "名称")
    private T name;

    @JsonProperty("operationType")
    @ApiModelProperty(value = "操做类型")
    private T operationtype;

    @ApiModelProperty(value = "备注")
    private T comment;

    @ApiModelProperty(value = "说明")
    private T direction;
}
View Code

 

ListHeaderGeneric

@Data
@ApiModel
public class ListHeaderGeneric {
    @JsonProperty("SortBy")
    @ApiModelProperty(value = "排序:0可排序,1不可排序")
    private int sortby;

    @JsonProperty("Label")
    @ApiModelProperty(value = "标签")
    private String label;

    @JsonProperty("FilterKey")
    @ApiModelProperty(value = "过滤key,表明该字段可进行过滤")
    private String filterkey;
}
View Code

 

 

 

TableStyle<L,O>使用方法TableStyle<ListHeader<ListHeaderGeneric>,Overviewlist>

特殊状况

返回的数据比ReturnData更多

以Communication通信地址为例

ps:之后统一返回首字母大写的驼峰命名,好比FormStyle而不是formStyle

 

 

数据除了formStyle和tableStyle,还额外多了个myParameter

 

 

对应这种状况,咱们继承ReturnData<T, L, O>进行扩展便可,若是还需对增长的属性进行说明,就在定义一个泛型便可

CommunicationTableData

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel
public class CommunicationTableData<T, L, O> extends ReturnData<T, L, O> {
    @ApiModelProperty(value = "本岛相关信息(小岛id,小岛地址)")
    private JSONObject myParameter;
}

 

返回的数据为里面那层(Tablestyle)

好比数据包里面

 

 

看着像Tablestyle,可是又比Tablestyle多了几个属性,那咱们就能够自定义一个ReturnData,让它直接继承Tablestyle,再作扩展

或者不继承TableData,直接写一个ReturnData类,里面包含这些属性

@Data
@ApiModel
public class TableData<L,S,O> {
    @JsonProperty("PreferenceFields")
    @ApiModelProperty(value = "默认展现的表头信息")
    private List<String> preferencefields ;

    @ApiModelProperty(value = "搜索表单字段集合")
    private S searchFormDataOrder ;

    @ApiModelProperty(value = "可配置数据")
    @JsonProperty("PreferenceDisable")
    private String preferenceDisable ;


    @ApiModelProperty(value = "表格数据总数")
    private int total;

    @ApiModelProperty(value = "表格中具体某条数据")
    @JsonProperty("OverviewList")
    private List<O> Overviewlist;

    @JsonProperty("ListHeader")
    @ApiModelProperty(value = "表头数据集合")
    private L listheader;
}
View Code

 

返回的数据为里面那层(Formstyle)

好比通信地址编辑界面

 

 

看着结构就是Formstyle,可是ReturnData中的两个属性都是Formstyle(通常是一个Formstyle和一个Tablestyle),针对这种状况,咱们直接写一个新的ReturnData

/**
 * @param <T> BaseGenericEditData
 * @param <L> CommunicationGenericEditData
 * @Description:
 * @author: 张重虎
 * @Date: 2021/6/2 15:43
 * @Copyright: Xi'an Dian Tong Software Co., Ltd. All Rights Reserved.
 * @Version 1.0
 */
@Data
@ApiModel
public class CommunicationEditData<T,L> {

    @ApiModelProperty(value = "基础样式")
    @JsonProperty("base")
    private Formstyle<T> base;

    @ApiModelProperty(value = "通信地址样式")
    @JsonProperty("communicationConfig")
    private Formstyle<L> communicationConfig;
}
View Code

 

可是这两个Formstyle里面的属性不一致,因此咱们须要分开来定义两个泛型

 

 

上面两个泛型,其实都是能够经过数据表的dao实体类控制,直接传实体类进去便可。可是为了方便区分,我定义了两个泛型 <T> BaseGenericEditData,<L> CommunicationGenericEditData

BaseGenericEditData:

@Data
@ApiModel
public class BaseGenericEditData<T> {

    @ApiModelProperty(value = "名称")
    private T name;

    @ApiModelProperty(value = "是否用与中联BH")
    @JsonProperty("isOnlyForZlbh")
    private T isonlyforzlbh;

    @ApiModelProperty(value = "远程系统id")
    @JsonProperty("remoteSystemId")
    private T remotesystemid;

    @ApiModelProperty(value = "通信地址")
    @JsonProperty("communicationAddress")
    private T communicationaddress;

    @ApiModelProperty(value = "通信key")
    @JsonProperty("communicationKey")
    private T communicationkey;

    @ApiModelProperty(value = "有效id")
    @JsonProperty("validId")
    private T validid;
}
View Code

 

CommunicationGenericEditData:

@Data
@ApiModel
public class CommunicationGenericEditData<T> {
    @JsonProperty("requestTimes")
    @ApiModelProperty(value = "每分钟最大请求次数")
    private T requesttimes;

    @ApiModelProperty(value = "发送超时时限")
    private T overtime;

    @ApiModelProperty(value = "是否重连")
    @JsonProperty("isReconnection")
    private T isreconnection;

    @ApiModelProperty(value = "是否自动重连")
    @JsonProperty("reconnectionTimes")
    private T reconnectiontimes;

    @ApiModelProperty(value = "自动重连次数")
    @JsonProperty("reconnectionInterval")
    private T reconnectioninterval;

    @ApiModelProperty(value = "日志等级")
    @JsonProperty("logLevel")
    private T loglevel;
}

 

如小岛的转入转出规则中,preferenceFields在前端展现成了小写。

 

 

而模板中PreferenceFields是大写,对于这种状况,是之前遗留的问题,没有较好的规范,致使大小写很随意。

 

 

对于这种状况,咱们确定不能由于一个字段就重写整个类。这时候,咱们只须要继承Tablestyle,而后把改字段重写便可。

 

 

 

返回的数据为其余数据

其余复杂的界面,若是包含了基础的ReturnData属性,先继承,在写一个ReturnData类作其余扩展属性,不然根据具体状况,自定义ReturnData

举例1

小岛通信地址:getFromDataForAddOrUpdata

 

 

没整合Swagger以前,返回值泛型是JSONObjec,直接返回jsonRes

 

 

整合以后,泛型JSONObject就变为具体的对象Communication< >对象

相关文章
相关标签/搜索