栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

低码框架 json-script-rule 实战开发规则二(导入)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

低码框架 json-script-rule 实战开发规则二(导入)

说明

导入功能包括上传文件和添加数据两步,创建模型如下

@Data
@JsonIgnoreProperties(ignoreUnknown=true)
public class JSRuleImport implements IJSRuleOrdinaryModel{

    @JsonAlias({"e"})
    @JSRuleCheck(checkSubClass=true)
    public JSRuleImportExcel excel;
}

目前导入只做了excel的导入,其excel模型如下

@Data
@JsonIgnoreProperties(ignoreUnknown=true)
public class JSRuleImportExcel implements IJSRuleModel{
    
    @JsonAlias({"c"})
    @JSRuleCheck(checkSubClass=true)
    public C add;
    
    @JsonAlias({"s"})
    @JSRuleCheck(checkSubClass=true)
    public List> sheets;
    @JsonAlias({"up","upload"})
    @JSRuleCheck(required=true,checkSubClass=true)
    public JSRuleUpload uploads;
    @JsonIgnore
    public File file;
    
    public JSRuleImportExcel() {
        
    }
}

这里我们看到JSRuleImportExcel模型和导出一样,它也有sheets属性,除此之外,它还有一个add属性和一个uploads属性,在前面的添加功能篇中已经具体说明了add属性的作用,这里再说一下uploads这个属性,先上代码

@Data
@JsonIgnoreProperties(ignoreUnknown=true)
public class JSRuleUpload implements IJSRuleOrdinaryModel,IJSFile{

    
    @JsonAlias({"aPath"})
    public String absolutePath;
    @JsonAlias({"rPath"})
    public String relativePath;
    @JsonAlias({"data"})
    public String base64Data;
    
    public JSRuleUpload() {
    }
}
  • absolutePath:已经上传过的在服务器上的excel文件的绝对路径
  • relativePath:已经上传过的在服务器上的excel文件的相对路径
  • base64Data:文件字节码,用base64编码成字符串后进行流传输,相当于上传文件的作用

说明:前面两个路径属性是用于在服务器搜索文件,也就是在导入前你已经将文件上传到了服务器上,如果没有提前上传,那么这里就属于设置base64Data属性,将用户本地文件转换成字节,再用base64编码将字节形成字符串,放入base64Data属性之中,以此来代替上传文件的动作,如下

"uploads":{
    "base64Data":"UEsDBBQACAgIAFZ1CVUAA......这里是很长的一个字符串
}

注意:如果单独使用uploads上传模型,那么其中的路径表示存放在服务器的哪个路径下
最后再来看看JSRuleImportSheet的属性,先上代码

@Data
@JsonIgnoreProperties(ignoreUnknown=true)
public class JSRuleImportSheet implements IJSRuleModel{
    
    @JsonAlias({"c"})
    @JSRuleCheck(checkSubClass=true)
    public C add;
    @JsonAlias({"h","head"})
    public int headLine;
    @JsonAlias({"start"})
    public int dataLine;
    @JsonAlias({"mapping","imports"})
    public Map importJavaFieldMapping;
    
    public JSRuleImportSheet() {
        this.headLine = 1;
        this.dataLine = this.headLine+1;
    }
}

我们看到这里的sheet也有一个add属性,它区别于上一层关系JSRuleImportExcel中的add,表示的是当前sheet对应的add属性,而JSRuleImportExcel中的add代表所有sheet默认的add属性,这里优先使用sheet对应的add属性

  • headLine:头部行号
  • dataLine:数据起始行号
  • importJavaFieldMapping:excel中的头列名称与表字段的映射关系,因为在po中已经配置过了,这里实际上是不需要使用该参数的,使用该参数可以在本次请求中覆盖po中所配置的头列名称与表字段的映射关系

最后我们再用之前导出的excel文件再进行导入,如图

导入.jpg

可以看到头部行号为3,其中有字段名id,有中文名,这里与其对应的po配置如下

@JSRuleRelationTable(tableName= "zs_import")
@Data
public class ZsImport {

    @JSRuleRelationField(pk=true)
    private String id;
    @JSRuleRelationField(imports= {"名字","姓名"})
    private String name;
    @JSRuleRelationField(fieldName= "birth_day",imports= {"生日"})
    private Date birthDay;
    @JSRuleRelationField(fieldName= "qian",imports= {"金钱","money"})
    private Double qian;
}

可以看到这里可以定义多个中文名,例如name有名字和姓名,他们所对应的字段都是name,而name对应的表字段可从fieldName属性中读取,如果没有fieldName属性则默认就是本字段的名字name

此外,如果在导入时有多个相同列的值也没有关系,例如上面图片所显示的姓名和名字,最终只会形成1个列,而这里的/符号则会以null值处理

请求的json格式如下

{
    "rule": {
        "name": "import",
        "actions": [
            {
                "name": "test_import",
                "imports": {
                    "excel": {
                        "uploads":{
                            "aPath":"D:/response.xlsx"
                        },
                        "add": {
                            "class":"ZsImport2",
                            "required":["name"]
                        },
                        "sheets": [
                            {
                                "head": 3,
                                "start": 5,
                                "add": {
                                    "class":"ZsImport",
                                    "uuid": ["id"],
                                    "required":["id","name"]
                                }
                            },{
                                "head": 2,
                                "start": 4
                            }
                        ]
                    }
                }
            }
        ]
    }
}

第二个sheet只有headLine和dataLine两个属性(这里的head和start是别名),其add属性是在上面excel对象中所定义的默认add属性,也就是class为ZsImport2的add属性
这里的add属性是复用了crud对象中的add属性,因此可以自定义规则,用于校验导入数据的合法性,自定义规则在前面的篇章中已经讲述过了,其原理一模一样


至此,当前版本中的7个action功能就已经说完了,后续将会利用该框架不断的加入新的功能,我们可以通过json就可以来完成这些后台接口的操作了,非常的低码

 

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1041160.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号