forked from fca197/peanut-protal-all
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEasyCodeConfig.json
More file actions
206 lines (206 loc) · 49.2 KB
/
EasyCodeConfig.json
File metadata and controls
206 lines (206 loc) · 49.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
{
"author" : "admin",
"version" : "1.4.2",
"userSecure" : "",
"currTypeMapperGroupName" : "Default",
"currTemplateGroupName" : "SDK",
"currColumnConfigGroupName" : "Default",
"externalEasyCodeFolders" : "",
"externalLibPaths" : "",
"grovvyScripts" : "",
"currGlobalConfigGroupName" : "Default",
"typeMapper" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"matchType" : "REGEX",
"columnType" : "varchar(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "char(\\(\\d+\\))?",
"javaType" : "java.lang.String"
}, {
"matchType" : "ORDINARY",
"columnType" : "tinyint(1)",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|medium|long)*text",
"javaType" : "java.lang.String"
}, {
"matchType" : "REGEX",
"columnType" : "decimal(\\(\\d+,\\d+\\))?",
"javaType" : "java.math.BigDecimal"
}, {
"matchType" : "ORDINARY",
"columnType" : "integer",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "REGEX",
"columnType" : "(tiny|small|medium)*int(\\(\\d+\\))?",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int4",
"javaType" : "java.lang.Integer"
}, {
"matchType" : "ORDINARY",
"columnType" : "int8",
"javaType" : "java.lang.Long"
}, {
"matchType" : "REGEX",
"columnType" : "bigint(\\(\\d+\\))?",
"javaType" : "java.lang.Long"
}, {
"matchType" : "ORDINARY",
"columnType" : "date",
"javaType" : "java.time.LocalDate"
}, {
"matchType" : "ORDINARY",
"columnType" : "datetime",
"javaType" : "java.time.LocalDateTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "timestamp",
"javaType" : "java.time.LocalDateTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "time",
"javaType" : "java.time.LocalTime"
}, {
"matchType" : "ORDINARY",
"columnType" : "boolean",
"javaType" : "java.lang.Boolean"
}, {
"matchType" : "ORDINARY",
"columnType" : "version",
"javaType" : "java.lang.String"
}, {
"matchType" : "ORDINARY",
"columnType" : "decimal(10)",
"javaType" : "java.math.BigDecimal"
}, {
"matchType" : "ORDINARY",
"columnType" : "json",
"javaType" : "java.lang.String"
} ]
}
},
"template" : {
"SDK" : {
"name" : "SDK",
"elementList" : [ {
"name" : "api.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api\", \"Api.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api\")\n\n##自动导入包(全局变量) \nimport org.springframework.validation.annotation.Validated;\nimport com.olivia.sdk.utils.DynamicsPage;\nimport jakarta.validation.Valid; \nimport org.springframework.web.bind.annotation.*;\nimport $!{tableInfo.savePackageName}.api.entity.$tool.firstLowerCase($!{tableInfo.name}).*; \nimport java.time.LocalDate;\nimport java.time.LocalDateTime; \nimport org.springframework.web.multipart.MultipartFile;\nimport com.olivia.sdk.ann.InsertCheck;\nimport com.olivia.sdk.ann.UpdateCheck;\nimport jakarta.validation.constraints.NotBlank;\nimport jakarta.validation.constraints.NotNull;\n\n \n##表注释(宏定义)\n#tableComment(\"对外API\")\n// @FeignClient(value = \"\",contextId = \"$tool.firstLowerCase( $!{tableInfo.name})-api\",url = \"${ portal..center.endpoint:}\")\npublic interface $!{tableInfo.name}Api {\n\n /**\n * 保存 $!{tableInfo.comment}\n *\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/insert\")\n $!{tableInfo.name}InsertRes insert(@RequestBody @Validated(InsertCheck.class) $!{tableInfo.name}InsertReq req);\n /**\n * 根据ID 删除 $!{tableInfo.comment}\n *\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/deleteByIdList\")\n $!{tableInfo.name}DeleteByIdListRes deleteByIdList(@RequestBody @Valid $!{tableInfo.name}DeleteByIdListReq req);\n\n /**\n * 查询 $!{tableInfo.comment}\n *\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/queryList\")\n $!{tableInfo.name}QueryListRes queryList(@RequestBody @Valid $!{tableInfo.name}QueryListReq req);\n\n /**\n * 根据ID 更新 $!{tableInfo.comment}\n *\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/updateById\")\n $!{tableInfo.name}UpdateByIdRes updateById(@RequestBody @Validated(UpdateCheck.class) $!{tableInfo.name}UpdateByIdReq req);\n\n/**\n* 分页查询 $!{tableInfo.comment}\n*/\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/queryPageList\")\n\n DynamicsPage<$!{tableInfo.name}ExportQueryPageListInfoRes > queryPageList(@RequestBody @Valid $!{tableInfo.name}ExportQueryPageListReq req);\n \n /**\n * 导出 $!{tableInfo.comment}\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/exportQueryPageList\")\n void queryPageListExport(@RequestBody @Valid $!{tableInfo.name}ExportQueryPageListReq req);\n \n /**\n * 导入\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/importData\")\n $!{tableInfo.name}ImportRes importData(@RequestParam(\"file\") MultipartFile file);\n \n \n /**\n * 根据ID 批量查询\n */\n @PostMapping(\"/$tool.firstLowerCase($!{tableInfo.name})/queryByIdList\")\n\n $!{tableInfo.name}QueryByIdListRes queryByIdListRes(@RequestBody @Valid $!{tableInfo.name}QueryByIdListReq req);\n\n \n}"
}, {
"name" : "api.impl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/impl\", \"ApiImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.impl\")\n\n##自动导入包(全局变量)\n$!{autoImport.vm} \n\nimport $!{tableInfo.savePackageName}.model.$!tableInfo.name;\nimport com.olivia.sdk.utils.$;\nimport com.olivia.sdk.utils.DynamicsPage;\nimport com.olivia.sdk.utils.PoiExcelUtil;\nimport java.util.stream.Collectors;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime; \nimport java.util.*;\nimport org.apache.commons.lang3.StringUtils;\nimport java.util.List; \nimport org.springframework.beans.factory.annotation.Autowired; \nimport org.springframework.web.bind.annotation.RequestBody;\nimport $!{tableInfo.savePackageName}.api.entity.$tool.firstLowerCase($!{tableInfo.name}).*;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; \nimport $!{tableInfo.savePackageName}.model.*;\nimport com.baomidou.mybatisplus.core.conditions.query.*;\nimport com.github.yulichang.wrapper.MPJLambdaWrapper;\nimport org.springframework.web.bind.annotation.*;\nimport $!{tableInfo.savePackageName}.api.$!{tableInfo.name}Api;\nimport static $!{tableInfo.savePackageName}.converter.$!{tableInfo.name}Converter.*;\nimport $!{tableInfo.savePackageName}.api.impl.listener.*; \nimport org.springframework.web.multipart.MultipartFile;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@RestController\npublic class $!{tableInfo.name}ApiImpl implements $!{tableInfo.name}Api {\n\n private @Autowired $!{tableInfo.name}Service $tool.firstLowerCase($!{tableInfo.name})Service;\n /****\n * insert\n *\n */ \n public @Override $!{tableInfo.name}InsertRes insert($!{tableInfo.name}InsertReq req){ \n $!{tableInfo.name} $tool.firstLowerCase($!{tableInfo.name}) = INSTANCE.insertReq(req);\n this.$tool.firstLowerCase($!{tableInfo.name})Service .save($tool.firstLowerCase($!{tableInfo.name}));\n return new $!{tableInfo.name}InsertRes().setCount(1);\n }\n /****\n * deleteByIds\n *\n */ \n public @Override $!{tableInfo.name}DeleteByIdListRes deleteByIdList( $!{tableInfo.name}DeleteByIdListReq req){\n $tool.firstLowerCase($!{tableInfo.name})Service. removeByIds ( req.getIdList());\n return new $!{tableInfo.name}DeleteByIdListRes ();\n }\n\n /****\n * queryList\n *\n */ \n public @Override $!{tableInfo.name}QueryListRes queryList( $!{tableInfo.name}QueryListReq req){\n return $tool.firstLowerCase($!{tableInfo.name})Service .queryList (req); \n }\n\n /****\n * updateById\n *\n */ \n public @Override $!{tableInfo.name}UpdateByIdRes updateById( $!{tableInfo.name}UpdateByIdReq req){\n $tool.firstLowerCase($!{tableInfo.name})Service. updateById(INSTANCE.updateReq(req));\n return new $!{tableInfo.name}UpdateByIdRes ();\n \n }\n\n public @Override DynamicsPage<$!{tableInfo.name}ExportQueryPageListInfoRes > queryPageList($!{tableInfo.name}ExportQueryPageListReq req){\n return $tool.firstLowerCase($!{tableInfo.name})Service .queryPageList (req); \n }\n\n public @Override void queryPageListExport( $!{tableInfo.name}ExportQueryPageListReq req){\n DynamicsPage<$!{tableInfo.name}ExportQueryPageListInfoRes > page= queryPageList(req);\n List<$!{tableInfo.name}ExportQueryPageListInfoRes> list= page.getDataList();\n // 类型转换, 更换枚举 等操作\n PoiExcelUtil.export($!{tableInfo.name}ExportQueryPageListInfoRes.class,list,\"$!{tableInfo.comment}\");\n }\n\npublic @Override $!{tableInfo.name}ImportRes importData(@RequestParam(\"file\") MultipartFile file){ \n List< $!{tableInfo.name}ImportReq> reqList = PoiExcelUtil.readData(file, new $!{tableInfo.name}ImportListener(), $!{tableInfo.name}ImportReq.class);\n // 类型转换, 更换枚举 等操作\n List<$!{tableInfo.name}> readList = INSTANCE.importReq(reqList);\n boolean bool= $tool.firstLowerCase($!{tableInfo.name})Service . saveBatch(readList);\n int c=bool?readList.size():0;\n return new $!{tableInfo.name}ImportRes().setCount(c);\n}\n\npublic @Override $!{tableInfo.name}QueryByIdListRes queryByIdListRes( $!{tableInfo.name}QueryByIdListReq req){\n MPJLambdaWrapper< $!{tableInfo.name}> q= new MPJLambdaWrapper< $!{tableInfo.name}>($!{tableInfo.name} .class)\n.selectAll( $!{tableInfo.name} .class).in($!{tableInfo.name}::getId, req.getIdList());\nList<$!{tableInfo.name} > list=this. $tool.firstLowerCase($!{tableInfo.name})Service. list(q);\nList<$!{tableInfo.name}Dto > dataList = INSTANCE.queryListRes(list); \n this. $tool.firstLowerCase($!{tableInfo.name})Service.setName(dataList);\nreturn new $!{tableInfo.name}QueryByIdListRes ().setDataList(dataList);\n }\n}"
}, {
"name" : "InsertReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"InsertReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors; \n \nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"保存入参\")\n@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}InsertReq extends $!{tableInfo.name}Dto {\n \n public void checkParam(){\n }\n}\n"
}, {
"name" : "InsertRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"InsertRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"保存返回\")\n@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}InsertRes {\n /****\n * 写入行数\n */\n private int count;\n \n private Long id;\n}\n"
}, {
"name" : "DeleteByIdListRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"DeleteByIdListRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"根据ID删除多个反参\")\n@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}DeleteByIdListRes {\n /***\n * 受影响行数\n */\n private int count;\n \n}\n"
}, {
"name" : "DeleteByIdListReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"DeleteByIdListReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport lombok.Getter; \nimport lombok.Setter;\nimport lombok.experimental.Accessors;\nimport java.util.List; \nimport jakarta.validation.constraints.NotEmpty;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n\n##表注释(宏定义)\n#tableComment(\"根据ID删除多个入参\")\n@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}DeleteByIdListReq {\n /***\n * 要删除的ID\n */\n @NotEmpty(message =\"请选择删除对象\" )\nprivate List<Long> idList;\n \n}\n"
}, {
"name" : "QueryListReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"QueryListReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport java.time.LocalDateTime;\nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\n \n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象入参\")\n@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}QueryListReq {\n \n private $!{tableInfo.name}Dto data;\n}\n"
}, {
"name" : "QueryListRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"QueryListRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \n$!{autoImport.vm} \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象返回\")\n@Accessors(chain=true)\n@Getter\n@Setter \npublic class $!{tableInfo.name}QueryListRes {\n /***\n * 返回对象列表\n */\nprivate List< $!{tableInfo.name}Dto> dataList;\n \n \n}\n"
}, {
"name" : "UpdateByIdReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"UpdateByIdReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量)\n$!{autoImport.vm} \n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.io.Serializable;\nimport lombok.Getter; \nimport lombok.Setter;\nimport lombok.ToString;\nimport lombok.experimental.Accessors; \n \n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Accessors(chain=true)\n@Getter\n@Setter\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name}UpdateByIdReq extends $!{tableInfo.name}Dto {\n\n}\n"
}, {
"name" : "UpdateByIdRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"UpdateByIdRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"修改对象返回\")\n@Accessors(chain=true)\n@Getter\n@Setter\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name}UpdateByIdRes {\n\n \n}\n"
}, {
"name" : "ExportQueryPageListRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"ExportQueryPageListInfoRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \n$!{autoImport.vm} \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\n\nimport com.alibaba.excel.annotation.ExcelProperty;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象返回\")\n@Accessors(chain=true)\n@Getter\n@Setter \npublic class $!{tableInfo.name}ExportQueryPageListInfoRes extends $!{tableInfo.name}Dto {\n \n}\n\n"
}, {
"name" : "ExportQueryPageListReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"ExportQueryPageListReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport java.time.LocalDateTime;\nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\n \n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象入参\")\n@Accessors(chain=true)\n@Getter\n@Setter \npublic class $!{tableInfo.name}ExportQueryPageListReq {\n private int pageNum;\n private int pageSize;\n private Boolean queryPage=true;\n private $!{tableInfo.name}Dto data;\n}\n"
}, {
"name" : "ImportReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"ImportReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \n$!{autoImport.vm} \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\n\nimport com.alibaba.excel.annotation.ExcelProperty;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象返回\")\n//@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}ImportReq extends $!{tableInfo.name}Dto {\n \n}\n\n"
}, {
"name" : "ImportRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"ImportRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"保存返回\")\n@Accessors(chain=true)\n@Getter\n@Setter\npublic class $!{tableInfo.name}ImportRes {\n /****\n * 写入行数\n */\n private int count;\n /**\n * 错误信息\n */\n private List<String> errorMsg;\n}\n"
}, {
"name" : "entity.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/model\", \".java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"model\")\n\n##自动导入包(全局变量) \nimport java.math.BigDecimal;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime; \nimport com.olivia.sdk.utils.BaseEntity;\nimport lombok.Getter;\nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.baomidou.mybatisplus.annotation.TableField;\n##表注释(宏定义)\n#tableComment(\"表实体类\")\n@Accessors(chain=true)\n@Getter\n@Setter\n//@SuppressWarnings(\"serial\")\n@TableName(\"$!{tableInfo.obj.name}\")\npublic class $!{tableInfo.name} extends BaseEntity {\n\n#foreach($column in $tableInfo.fullColumn)\n #if(! $ignoreSet.contains($!{column.name}))\n #if(${column.comment})\n /***\n * ${column.comment}\n */\n #end \n @TableField(\"${column.obj.name}\")\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n #end\n#end\n \n}\n"
}, {
"name" : "dao.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Mapper\")\n\n##保存文件(宏定义)\n#save(\"/mapper\", \"Mapper.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"mapper\")\nimport com.github.yulichang.base.MPJBaseMapper; \nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport $!{tableInfo.savePackageName}.model.$!tableInfo.name;\nimport org.apache.ibatis.annotations.Mapper;\n\n##表注释(宏定义)\n#tableComment(\"表数据库访问层\")\n@Mapper\npublic interface $!{tableName} extends MPJBaseMapper<$!tableInfo.name> {\n\n}\n"
}, {
"name" : "service.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"Service\")\n\n##保存文件(宏定义)\n#save(\"/service\", \"Service.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service\")\n\nimport com.olivia.sdk.utils.DynamicsPage; \nimport com.baomidou.mybatisplus.extension.service.IService;\nimport $!{tableInfo.savePackageName}.model.$!tableInfo.name;\nimport java.util.List;\nimport com.github.yulichang.base.MPJBaseService;\n\nimport $!{tableInfo.savePackageName}.api.entity.$tool.firstLowerCase($!{tableInfo.name}).*;\n\n##表注释(宏定义)\n#tableComment(\"表服务接口\")\npublic interface $!{tableName} extends MPJBaseService<$!tableInfo.name> {\n $!{tableInfo.name}QueryListRes queryList( $!{tableInfo.name}QueryListReq req);\n DynamicsPage<$!{tableInfo.name}ExportQueryPageListInfoRes > queryPageList( $!{tableInfo.name}ExportQueryPageListReq req);\n\n\n\n void setName(List<? extends $!{tableInfo.name}Dto> $tool.firstLowerCase($!{tableInfo.name})DtoList) ;\n}\n"
}, {
"name" : "serviceImpl.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setTableSuffix(\"ServiceImpl\")\n\n##保存文件(宏定义)\n#save(\"/service/impl\", \"ServiceImpl.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"service.impl\")\nimport org.springframework.aop.framework.AopContext;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.github.yulichang.base.MPJBaseServiceImpl;\nimport com.github.yulichang.wrapper.MPJLambdaWrapper;\nimport com.google.common.cache.Cache;\nimport com.google.common.cache.CacheBuilder; \nimport jakarta.annotation.Resource;\nimport com.olivia.sdk.utils.$;\nimport com.olivia.sdk.utils.LambdaQueryUtil;\nimport com.olivia.sdk.utils.DynamicsPage; \nimport java.util.List;\nimport java.util.Map;\nimport java.util.Objects;\nimport java.util.concurrent.TimeUnit;\nimport java.util.stream.Collectors;\nimport org.apache.commons.lang3.StringUtils;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;\nimport $!{tableInfo.savePackageName}.model.$!{tableInfo.name};\nimport $!{tableInfo.savePackageName}.converter.$!{tableInfo.name}Converter;\nimport $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; \nimport cn.hutool.core.collection.CollUtil; \nimport com.olivia.peanut.base.service.BaseTableHeaderService;\nimport com.olivia.sdk.utils.BaseEntity;\nimport $!{tableInfo.savePackageName}.api.entity.$tool.firstLowerCase($!{tableInfo.name}).*;\nimport com.olivia.peanut.util.SetNamePojoUtils;\nimport com.olivia.sdk.service.SetNameService;\n\n##表注释(宏定义)\n#tableComment(\"表服务实现类\")\n@Service(\"$!tool.firstLowerCase($tableInfo.name)Service\")\n@Transactional\npublic class $!{tableName} extends MPJBaseServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {\n\n // final static Cache<String, Map<String, String>> cache = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(30, TimeUnit.MINUTES).build();\n\n @Resource\n BaseTableHeaderService tableHeaderService;\n @Resource\n SetNameService setNameService;\n\n\n\n public @Override $!{tableInfo.name}QueryListRes queryList( $!{tableInfo.name}QueryListReq req){\n \n MPJLambdaWrapper< $!{tableInfo.name}> q= getWrapper(req.getData());\n List< $!{tableInfo.name}> list= this. list( q); \n \n List<$!{tableInfo.name}Dto> dataList= $!{tableInfo.name}Converter.INSTANCE.queryListRes(list);\n (($!{tableInfo.name}Service) AopContext.currentProxy()).setName(dataList);\n return new $!{tableInfo.name}QueryListRes ().setDataList(dataList); \n }\n \n \n public @Override DynamicsPage<$!{tableInfo.name}ExportQueryPageListInfoRes > queryPageList($!{tableInfo.name}ExportQueryPageListReq req){\n \n DynamicsPage<$!{tableInfo.name}> page = new DynamicsPage<>();\n page.setCurrent(req.getPageNum()).setSize(req.getPageSize());\nsetQueryListHeader(page);\n MPJLambdaWrapper <$!{tableInfo.name}> q= getWrapper(req.getData());\n List<$!{tableInfo.name}ExportQueryPageListInfoRes> records;\n if (Boolean.TRUE.equals(req.getQueryPage())) {\n IPage< $!{tableInfo.name}> list= this . page( page,q ); \n IPage<$!{tableInfo.name}ExportQueryPageListInfoRes> dataList = list.convert(t -> $.copy(t, $!{tableInfo.name}ExportQueryPageListInfoRes.class));\n records = dataList.getRecords();\n }else{ \n records = $!{tableInfo.name}Converter.INSTANCE.queryPageListRes(this.list(q));\n }\n \n // 类型转换, 更换枚举 等操作 \n \n (($!{tableInfo.name}Service) AopContext.currentProxy()).setName(records);\n return DynamicsPage.init(page,records);\n }\n \n // 以下为私有对象封装\n \n public @Override void setName(List<? extends $!{tableInfo.name}Dto> list) {\n \n // setNameService.setName(list, SetNamePojoUtils.FACTORY, SetNamePojoUtils.OP_USER_NAME);\n\n }\n \n \n \n @SuppressWarnings(\"unchecked\")\n private MPJLambdaWrapper<$!{tableInfo.name}> getWrapper($!{tableInfo.name}Dto obj) {\n MPJLambdaWrapper<$!{tableInfo.name}> q = new MPJLambdaWrapper<>();\n \n #set( $ignoreSet = [\"id\" ,\"tenantId\" ,\"createBy\" ,\"updateBy\" ,\"versionNum\" ,\"version\" ,\"traceId\" , \"isDelete\", \"createTime\" ,\"updateTime\"] )\n LambdaQueryUtil.lambdaQueryWrapper(q, obj,$!{tableInfo.name}.class\n // 查询条件\n , BaseEntity::getId // id\n #foreach($column in $tableInfo.fullColumn)\n #if (!$ignoreSet.contains( $!{column.name}))\n , $!{tableInfo.name}::get$tool.firstUpperCase($column.name) // ${column.comment}\n #end\n #end\n );\n \n \n q.orderByDesc($!{tableInfo.name}::getId);\n return q;\n \n } \n \n private void setQueryListHeader(DynamicsPage <$!{tableInfo.name}> page){\n \n tableHeaderService.listByBizKey(page, \"$!{tableInfo.name}Service#queryPageList\");\n\n }\n \n \n}\n"
}, {
"name" : "importListener.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##设置表后缀(宏定义)\n#setPackageSuffix(\"api.impl.listener\")\n\n##保存文件(宏定义)\n#save(\"/api/impl/listener\", \"ImportListener.java\")\n\n##包路径(宏定义) \n\nimport $!{tableInfo.savePackageName}.model.$!tableInfo.name;\nimport org.apache.ibatis.annotations.Mapper;\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport $!{tableInfo.savePackageName}.api.entity.$tool.firstLowerCase($!{tableInfo.name}).*; \nimport com.alibaba.excel.context.AnalysisContext; \nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\nimport lombok.Getter;\nimport lombok.experimental.Accessors;\nimport lombok.extern.slf4j.Slf4j;\nimport com.olivia.sdk.listener.AbstractImportListener;\n\nimport com.olivia.sdk.utils.JSON;\nimport lombok.extern.slf4j.Slf4j; \n##表注释(宏定义)\n#tableComment(\"文件导入监听\")\n@Slf4j\npublic class $!{tableInfo.name}ImportListener extends AbstractImportListener<$!{tableInfo.name}ImportReq> {\n\n @Override\n public void invoke($!{tableInfo.name}ImportReq data, AnalysisContext analysisContext) {\n // 文件校验\n log.info(\"$!{tableInfo.name}ImportListener invoke data:{}\", JSON.toJSONString(data));\n checkData(data, analysisContext);\n\n }\n \n}"
}, {
"name" : "QueryByIdListReq.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"QueryByIdListReq.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \nimport java.time.LocalDateTime;\nimport java.util.List;\nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\n \n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象入参\")\n@Accessors(chain=true)\n@Getter\n@Setter\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name}QueryByIdListReq {\n private List<Long> idList;\n\n}\n"
}, {
"name" : "QueryByIdListRes.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"QueryByIdListRes.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \n$!{autoImport.vm} \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\n##表注释(宏定义)\n#tableComment(\"查询对象返回\")\n@Accessors(chain=true)\n@Getter\n@Setter\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name}QueryByIdListRes {\n /***\n * 返回对象列表\n */\nprivate List<$!{tableInfo.name}Dto> dataList;\n \n \n}\n"
}, {
"name" : "entityDto.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/api/entity/$tool.firstLowerCase($!{tableInfo.name})\", \"Dto.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"api.entity.$tool.firstLowerCase($!{tableInfo.name})\")\n\n##自动导入包(全局变量) \n$!{autoImport.vm} \nimport lombok.Getter; \nimport lombok.Setter; \nimport lombok.experimental.Accessors;\nimport java.util.List;\nimport java.math.BigDecimal;\nimport com.olivia.peanut.portal.api.entity.BaseEntityDto;\nimport com.alibaba.excel.annotation.ExcelProperty;\nimport com.olivia.sdk.utils.fastjson.Str2BooleanConverter;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport com.olivia.sdk.ann.InsertCheck;\nimport com.olivia.sdk.ann.UpdateCheck;\nimport jakarta.validation.constraints.NotBlank;\nimport jakarta.validation.constraints.NotNull;\nimport com.alibaba.excel.annotation.ExcelIgnore;\nimport com.alibaba.excel.annotation.ExcelProperty;\n//import com.alibaba.fastjson2.annotation.JSONField;\n##表注释(宏定义)\n#tableComment(\"查询对象返回\")\n//@Accessors(chain=true)\n@Getter\n@Setter\n@SuppressWarnings(\"serial\")\npublic class $!{tableInfo.name}Dto extends BaseEntityDto {\n\n#foreach($column in $tableInfo.fullColumn)\n #if (! $ignoreSet.contains( $!{column.name}) )\n #if(${column.comment})\n /***\n * ${column.comment}\n */\n #end \n #if ($!{tool.getClsNameByFullName($column.type)}==\"String\" )\n @NotBlank(message = \"${column.comment}不能为空\", groups = {InsertCheck.class, UpdateCheck.class})\n // @JSONField(label = \"$!{column.name}\")\n #elseif ($!{tool.getClsNameByFullName($column.type)}!=\"Boolean\")\n // @JSONField(label = \"$!{column.name}\")\n @NotNull(message = \"${column.comment}不能为空\", groups = {InsertCheck.class, UpdateCheck.class})\n #end\n #if ($!{tool.getClsNameByFullName($column.type)}==\"Boolean\" )\n // @JSONField(label = \"$!{column.name}\", serializeUsing = Boolean2StrFeature.class, deserializeUsing = Str2BooleanConverter.class)\n @ExcelProperty(value = \"${column.comment}\", converter = Str2BooleanConverter.class)\n #end\n private $!{tool.getClsNameByFullName($column.type)} $!{column.name};\n #end\n#end\n \n}\n\n"
}, {
"name" : "converter.java.vm",
"code" : "##导入宏定义\n$!{define.vm}\n\n##保存文件(宏定义)\n#save(\"/converter\", \"Converter.java\")\n\n##包路径(宏定义)\n#setPackageSuffix(\"converter\")\n\nimport $!{tableInfo.savePackageName}.api.entity.$tool.firstLowerCase($!{tableInfo.name}).*; \nimport $!{tableInfo.savePackageName}.model.$!{tableInfo.name};\nimport org.mapstruct.*;\nimport org.mapstruct.factory.Mappers;\n\nimport java.util.List;\n\n@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)\npublic interface $!{tableInfo.name}Converter {\n $!{tableInfo.name}Converter INSTANCE = Mappers.getMapper($!{tableInfo.name}Converter.class);\n\n $!{tableInfo.name} insertReq($!{tableInfo.name}InsertReq req);\n\n $!{tableInfo.name} updateReq($!{tableInfo.name}UpdateByIdReq req);\n\n List<$!{tableInfo.name}Dto> queryListRes(List<$!{tableInfo.name}> list);\n\n List<$!{tableInfo.name}ExportQueryPageListInfoRes> queryPageListRes(List<$!{tableInfo.name}> list);\n\n List<$!{tableInfo.name}> importReq(List<$!{tableInfo.name}ImportReq> reqList);\n}\n"
}, {
"name" : "Type.ts.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)\n#save(\"/vue/$!{tableInfo.name}\", \"Type.ts\")\n\nexport interface $!{tableInfo.name} {\n#foreach($column in $tableInfo.fullColumn)\n $!{column.name}?: string | undefined\n #end \n}"
}, {
"name" : "index.vue.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)\n#save(\"/vue/$!{tableInfo.name}\", \"Index.vue\")\n\n<script setup lang=\"ts\">\nimport { ref, onMounted } from \"vue\"\nimport AddEditFormVue from \"./$!{tableInfo.name}AddEditForm.vue\"\nimport TableBar from \"@/layouts/components/TableBar/index.vue\"\nimport { ElTable } from \"element-plus\";\nimport { HeaderInfo, postResultInfo } from \"@@/utils/common-js.ts\"\nimport { type $!{tableInfo.name} } from \"./$!{tableInfo.name}Type.ts\"\n\nconst dtoUrl = ref<string>(\"/$tool.firstLowerCase($!{tableInfo.name})\")\nconst documentTitle = ref<string>(\"$tableInfo.comment\")\nconst dataBatchDeleteUrl = ref<string>(`${dtoUrl.value}/deleteByIdList`)\nconst loadEntity = ref<boolean>(true)\n// 查询表格\nconst queryForm = ref<$!{tableInfo.name}>({\n#foreach($column in $tableInfo.fullColumn)\n #if (!$ignoreSet.contains($!{column.name}))\n $!{column.name}: undefined,\n #end\n #end\n id: undefined\n})\n\n// 表格\n// 表格选中的id\nconst multipleSelection = ref<(string | undefined)[]>([])\n// const dataTableRef = ref<InstanceType<typeof ElTable> | null>(null)\nconst dataTableRef = ref({})\n// 表格操作头\nconst tableBarRef = ref<InstanceType<typeof TableBar> | null>(null)\n// 表格相关\nconst dataList = ref<$!{tableInfo.name}[] >([])\nconst currentPageNum = ref<number>(1)\nconst currentPageSize = ref<number>(10)\nconst tableTotal = ref<number>(0)\nconst headerList = ref<HeaderInfo[]>([\n { fieldName: \"id\", showName: \"序号\" },\n#foreach($column in $tableInfo.fullColumn)\n #if (!$ignoreSet.contains($!{column.name}))\n { fieldName: \"$!{column.name}\", showName: \"$!{column.comment}\" },\n #end\n #end \n])\n\n// 获取表格内数据\nconst getDataList = () => {\n const req = {\n pageSize: currentPageSize.value,\n pageNum: currentPageNum.value,\n data: queryForm.value\n }\n console.info(\"getDataList {}\", req)\n loadEntity.value = true\n postResultInfo(`${dtoUrl.value}/queryPageList`, req)\n .then((t) => {\n dataList.value = t.data.dataList\n tableTotal.value = Number.parseInt(t.data.total)\n headerList.value = t.data.headerList\n loadEntity.value =false\n })\n}\n\n// table点击事件\nconst editData = (data: any) => {\n // console.info(\"data \", data)\n tableBarRef.value?.showEditDialog(data.id)\n}\n// 页面条数变更事件\nconst handleSizeChange = (val: number) => {\n currentPageSize.value = val\n getDataList()\n}\n// 页面变更事件\nconst handleCurrentChange = (val: number) => {\n currentPageNum.value = val\n getDataList()\n}\n// 表格选中事件\nconst handleSelectionChange = (val: $!{tableInfo.name}[]) => {\n multipleSelection.value = val.map(t => t.id)\n console.info(\"multipleSelection \", multipleSelection)\n}\n\n// 页面加载事件\nonMounted(() => {\n getDataList()\n})\n</script>\n\n<template>\n <div class=\"app-container\">\n <el-card class=\"search-wrapper\" shadow=\"never\">\n <el-form v-model=\"queryForm\" inline>\n #createFormAllColumn($tableInfo)\n <el-form-item>\n <el-button type=\"primary\" icon=\"search\" @click=\"getDataList\">\n 查询\n </el-button>\n </el-form-item>\n </el-form>\n </el-card>\n\n <el-card shadow=\"never\">\n <TableBar\n :document-title=\"documentTitle\"\n :add-component=\"AddEditFormVue\"\n :refresh-list=\"getDataList\"\n :data-table-ref=\"dataTableRef\"\n :multiple-selection=\"multipleSelection\"\n ref=\"tableBarRef\"\n :data-batch-delete-url=\"dataBatchDeleteUrl\"\n />\n <ElTable v-loading=\"loadEntity\" ref=\"dataTableRef\" :data=\"dataList\" stripe @selection-change=\"handleSelectionChange\">\n <ElTableColumn type=\"selection\"/>\n <ElTableColumn\n v-for=\"h in headerList\" :key=\"h.fieldName\" :label=\"h.showName\" \n :prop=\"h.fieldName\" :min-width=\"h.width\" \n />\n <ElTableColumn fixed=\"right\" label=\"操作\" width=\"150px\">\n <template #default=\"scope\">\n <el-button\n type=\"warning\"\n icon=\"edit\"\n @click=\"editData(scope.row)\"\n >\n 编辑\n </el-button>\n </template>\n </ElTableColumn>\n </ElTable>\n <el-row class=\"paginationDiv\">\n <el-pagination\n background\n v-model:current-page=\"currentPageNum\"\n v-model:page-size=\"currentPageSize\"\n layout=\"total, sizes, prev, pager, next\"\n :total=\"tableTotal\"\n @size-change=\"handleSizeChange\"\n @current-change=\"handleCurrentChange\"\n />\n </el-row>\n </el-card>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n\n</style>\n"
}, {
"name" : "AddEditForm.vue.vm",
"code" : "##导入宏定义\n$!{define.vm}\n##保存文件(宏定义)\n#save(\"/vue/$!{tableInfo.name}\", \"AddEditForm.vue\")\n<script setup lang=\"ts\">\nimport {onMounted, ref} from \"vue\"\nimport {type $!{tableInfo.name}} from \"./$!{tableInfo.name}Type.ts\"\nimport {getById, postNoResult} from \"@/common/utils/common-js.ts\"\nimport {type FormInstance, FormRules} from \"element-plus\"\n\nconst props = defineProps({\n saveFun: {\n type: Function\n },\n editId: {\n type: String,\n required: false\n }\n})\nconst loadEntity = ref<boolean>(true)\n// 对象URL\nconst dtoUrl = ref<string>(\"/$tool.firstLowerCase($!{tableInfo.name})\")\n// 表单引用\nconst addFormRef = ref<FormInstance>()\n// 表单校验规则\nconst checkRules = ref<FormRules>({\n #foreach($column in $tableInfo.fullColumn)\n #if (!$ignoreSet.contains($!{column.name}))\n // $!{column.comment}\n $!{column.name}: [\n {required: true, message: \"请输入${column.comment}\", trigger: \"blur\"},\n {min: 2, max: 20, message: \"长度在 2 到 20 个字符\", trigger: \"blur\"}\n ],\n #end\n #end\n\n})\n\n\n// 添加对象\nconst addForm = ref<$!{tableInfo.name}>({\n #foreach($column in $tableInfo.fullColumn)\n #if (!$ignoreSet.contains($!{column.name}))\n $!{column.name}: \"\",\n #end\n #end\n id: \"\" \n})\n\nconst loadById = () => {\n if (!props.editId) {\n return\n }\n console.info(\"props.editId \", props.editId)\n getById(`${dtoUrl.value}/queryByIdList`, props.editId).then((t) => {\n addForm.value = t\n console.info(\" addForm.value \", addForm.value)\n loadEntity.value = false\n })\n}\n\n// 保存\nconst saveForm = () => {\n console.info(\"addForm \", addForm)\n addFormRef.value?.validate((valid) => {\n if (valid) {\n // 存在ID ,调用更新\n if (props.editId) {\n postNoResult(`${dtoUrl.value}/updateById`, addForm.value, \"修改成功\", saveFormAfter)\n } else {\n // 调用保存\n postNoResult(`${dtoUrl.value}/insert`, addForm.value, \"保存成功\", saveFormAfter)\n }\n } else {\n ElMessage.error(\"表单校验失败,请检查必填项\")\n }\n })\n}\n\n// 保存成功后,方法, 目前关闭弹窗\nconst saveFormAfter = () => {\n cancelForm()\n}\n\n// 取消方法\nconst cancelForm = () => {\n if (props.saveFun) {\n props.saveFun()\n }\n}\n\n// 页面加载事件\nonMounted(() => {\n loadById()\n})\n</script>\n\n<template>\n <el-form v-loading=\"loadEntity\" label-width=\"80px\" :model=\"addForm\" ref=\"addFormRef\" :rules=\"checkRules\">\n #createFormAllColumn(${tableInfo})\n </el-form>\n <el-row class=\"addFormBtnRow\">\n <el-button @click=\"cancelForm\" type=\"info\" icon=\"close\">\n 取消\n </el-button>\n <el-button @click=\"saveForm\" type=\"primary\" icon=\"check\">\n 确定\n </el-button>\n </el-row>\n</template>\n\n<style scoped lang=\"scss\">\n</style>"
} ]
}
},
"columnConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"title" : "disable",
"type" : "BOOLEAN",
"selectValue" : ""
}, {
"title" : "support",
"type" : "SELECT",
"selectValue" : "add,edit,query,del,ui"
} ]
}
},
"globalConfig" : {
"Default" : {
"name" : "Default",
"elementList" : [ {
"name" : "autoImport.vm",
"value" : "##自动导入包(仅导入实体属性需要的包,通常用于实体类)\n#foreach($import in $importList)\nimport $!import;\n#end"
}, {
"name" : "define.vm",
"value" : "## 忽略字段集合:不参与表单生成等操作的字段\n#set($ignoreSet = [\"id\", \"tenantId\", \"createBy\", \"updateBy\", \"versionNum\", \"createUserName\",\n \"version\", \"traceId\", \"isDelete\", \"createTime\", \"updateTime\",\"updateUserName\"])\n\n\n## 定义设置表名后缀的宏定义\n## 调用方式:#setTableSuffix(\"Test\")\n#macro(setTableSuffix $suffix)\n #set($tableName = $!tool.append($tableInfo.name, $suffix))\n#end\n\n\n## 定义设置包名后缀的宏定义\n## 调用方式:#setPackageSuffix(\"Test\")\n#macro(setPackageSuffix $suffix)\n #if($suffix != \"\")package #end\n #if($tableInfo.savePackageName != \"\")$!{tableInfo.savePackageName}.#{end}$!suffix;\n#end\n\n\n## 定义保存路径与文件名的宏定义\n## 调用方式:#save(\"/entity\", \".java\")\n#macro(save $path $fileName)\n $!callback.setSavePath($tool.append($tableInfo.savePath, $path))\n $!callback.setFileName($tool.append($tableInfo.name, $fileName))\n#end\n\n\n## 定义表注释的宏定义\n## 调用方式:#tableComment(\"注释信息\")\n#macro(tableComment $desc)\n/**\n * $!{tableInfo.comment}($!{tableInfo.name})$desc\n *\n * @author $!author\n * @since $!time.currTime()\n */\n#end\n\n\n## 定义GET、SET方法的宏定义\n## 调用方式:#getSetMethod($column)\n#macro(getSetMethod $column)\n public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {\n return $!{column.name};\n }\n\n public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {\n this.$!{column.name} = $!{column.name};\n }\n#end\n\n\n## 生成单个表单项的宏定义\n#macro(createFormItem $column)\n <el-form-item label=\"${column.comment}\" prop=\"$!{column.name}\">\n #if ($column.shortType == \"LocalDateTime\")\n <el-date-picker\n v-model=\"queryForm.$!{column.name}\" \n clearable \n placeholder=\"请选择日期时间\" \n format=\"YYYY-MM-DD HH:mm:ss\"\n value-format=\"YYYY-MM-DD HH:mm:ss\"\n />\n #elseif ($column.shortType.endsWith(\"Date\"))\n <el-date-picker \n v-model=\"queryForm.$!{column.name}\" \n clearable \n placeholder=\"请选择日期\" \n format=\"YYYY-MM-DD\"\n value-format=\"YYYY-MM-DD\"\n /> \n #elseif ($column.shortType.endsWith(\"Integer\"))\n <el-input-number\n v-model=\"queryForm.$!{column.name}\" \n clearable \n placeholder=\"请输入\" \n />\n #else\n <el-input \n v-model=\"queryForm.$!{column.name}\" \n clearable \n placeholder=\"请输入${column.comment}\" \n />\n #end\n </el-form-item>\n#end\n\n\n## 生成所有表单项的宏定义\n## 调用方式:#createFormAllColumn($tableInfo)\n#macro(createFormAllColumn $tableInfo)\n #foreach($column in $tableInfo.fullColumn)\n #if (!$ignoreSet.contains($!{column.name}))\n #createFormItem($column)\n #end\n #end\n#end\n"
}, {
"name" : "init.vm",
"value" : "##初始化区域\n\n##去掉表的t_前缀\n$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst(\"book_\",\"\")))\n\n##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误\n#foreach($column in $tableInfo.fullColumn)\n#if($column.name.startsWith(\"is\") && $column.type.equals(\"java.lang.Boolean\"))\n $!column.setName($tool.firstLowerCase($column.name.substring(2)))\n#end\n#end\n\n##实现动态排除列\n#set($temp = $tool.newHashSet(\"testCreateTime\", \"otherColumn\"))\n#foreach($item in $temp)\n #set($newList = $tool.newArrayList())\n #foreach($column in $tableInfo.fullColumn)\n #if($column.name!=$item)\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($newList.add($column))\n #end\n #end\n ##重新保存\n $tableInfo.setFullColumn($newList)\n#end\n\n##对importList进行篡改\n#set($temp = $tool.newHashSet())\n#foreach($column in $tableInfo.fullColumn)\n #if(!$column.type.startsWith(\"java.lang.\"))\n ##带有反回值的方法调用时使用$tool.call来消除返回值\n $tool.call($temp.add($column.type))\n #end\n#end\n##覆盖\n#set($importList = $temp)\n"
}, {
"name" : "mybatisSupport.vm",
"value" : "##针对Mybatis 进行支持,主要用于生成xml文件\n#foreach($column in $tableInfo.fullColumn)\n ##储存列类型\n $tool.call($column.ext.put(\"sqlType\", $tool.getField($column.obj.dataType, \"typeName\")))\n #if($tool.newHashSet(\"java.lang.String\").contains($column.type))\n #set($jdbcType=\"VARCHAR\")\n #elseif($tool.newHashSet(\"java.lang.Boolean\", \"boolean\").contains($column.type))\n #set($jdbcType=\"BOOLEAN\")\n #elseif($tool.newHashSet(\"java.lang.Byte\", \"byte\").contains($column.type))\n #set($jdbcType=\"BYTE\")\n #elseif($tool.newHashSet(\"java.lang.Integer\", \"int\", \"java.lang.Short\", \"short\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Long\", \"long\").contains($column.type))\n #set($jdbcType=\"INTEGER\")\n #elseif($tool.newHashSet(\"java.lang.Float\", \"float\", \"java.lang.Double\", \"double\").contains($column.type))\n #set($jdbcType=\"NUMERIC\")\n #elseif($tool.newHashSet(\"java.util.Date\", \"java.sql.Timestamp\", \"java.time.Instant\", \"java.time.LocalDateTime\", \"java.time.OffsetDateTime\", \"\tjava.time.ZonedDateTime\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #elseif($tool.newHashSet(\"java.sql.Date\", \"java.time.LocalDate\").contains($column.type))\n #set($jdbcType=\"TIMESTAMP\")\n #else\n ##其他类型\n #set($jdbcType=\"VARCHAR\")\n #end\n $tool.call($column.ext.put(\"jdbcType\", $jdbcType))\n#end\n\n##定义宏,查询所有列\n#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($foreach.hasNext), #end#end#end\n"
} ]
}
}
}