From 740235038a1943ae608e16aa5c6e4e6b1f89f86a Mon Sep 17 00:00:00 2001
From: wangqiy <1530284170@qq.com>
Date: Wed, 16 Apr 2025 19:14:16 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
base-common/pom.xml | 6 +
.../com/agri/common/core/domain/Ztree.java | 104 ++++++
.../java/com/agri/common/dao/BaseDao.java | 75 ++++
.../com/agri/common/enums/ExportEnum.java | 42 +++
.../com/agri/common/service/BaseService.java | 141 ++++++++
.../common/service/impl/BaseServiceImpl.java | 173 +++++++++
.../java/com/agri/common/utils/PageUtil.java | 107 ++++++
.../com/agri/common/utils/web/PageResult.java | 55 +++
.../com/agri/common/utils/web/Paramap.java | 19 +
.../agri/generator/domain/GenTableColumn.java | 54 ++-
.../agri/generator/util/VelocityUtils.java | 243 +++++++++----
.../src/main/resources/generator.yml | 6 +-
.../src/main/resources/vm/java/domain.java.vm | 129 ++-----
.../src/main/resources/vm/java/dto.java.vm | 46 +++
.../main/resources/vm/java/exportdto.java.vm | 57 +++
.../src/main/resources/vm/java/mapper.java.vm | 87 +----
.../main/resources/vm/java/service.java.vm | 60 +---
.../resources/vm/java/serviceImpl.java.vm | 208 ++---------
.../main/resources/vm/java/sub-domain.java.vm | 108 +++---
.../src/main/resources/vm/java/vo.java.vm | 46 +++
.../src/main/resources/vm/xml/mapper.xml.vm | 327 +++++++++++-------
21 files changed, 1454 insertions(+), 639 deletions(-)
create mode 100644 base-common/src/main/java/com/agri/common/core/domain/Ztree.java
create mode 100644 base-common/src/main/java/com/agri/common/dao/BaseDao.java
create mode 100644 base-common/src/main/java/com/agri/common/enums/ExportEnum.java
create mode 100644 base-common/src/main/java/com/agri/common/service/BaseService.java
create mode 100644 base-common/src/main/java/com/agri/common/service/impl/BaseServiceImpl.java
create mode 100644 base-common/src/main/java/com/agri/common/utils/PageUtil.java
create mode 100644 base-common/src/main/java/com/agri/common/utils/web/PageResult.java
create mode 100644 base-common/src/main/java/com/agri/common/utils/web/Paramap.java
create mode 100644 base-generator/src/main/resources/vm/java/dto.java.vm
create mode 100644 base-generator/src/main/resources/vm/java/exportdto.java.vm
create mode 100644 base-generator/src/main/resources/vm/java/vo.java.vm
diff --git a/base-common/pom.xml b/base-common/pom.xml
index 1879b83..3771874 100644
--- a/base-common/pom.xml
+++ b/base-common/pom.xml
@@ -150,6 +150,12 @@
aliyun-sdk-oss
3.10.2
+
+
+ cn.hutool
+ hutool-all
+ 5.7.18
+
\ No newline at end of file
diff --git a/base-common/src/main/java/com/agri/common/core/domain/Ztree.java b/base-common/src/main/java/com/agri/common/core/domain/Ztree.java
new file mode 100644
index 0000000..6374ed1
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/core/domain/Ztree.java
@@ -0,0 +1,104 @@
+package com.agri.common.core.domain;
+
+import java.io.Serializable;
+
+/**
+ * Ztree树结构实体类
+ *
+ * @author ruoyi
+ */
+public class Ztree implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 节点ID */
+ private Long id;
+
+ /** 节点父ID */
+ private Long pId;
+
+ /** 节点名称 */
+ private String name;
+
+ /** 节点标题 */
+ private String title;
+
+ /** 是否勾选 */
+ private boolean checked = false;
+
+ /** 是否展开 */
+ private boolean open = false;
+
+ /** 是否能勾选 */
+ private boolean nocheck = false;
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getpId()
+ {
+ return pId;
+ }
+
+ public void setpId(Long pId)
+ {
+ this.pId = pId;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getTitle()
+ {
+ return title;
+ }
+
+ public void setTitle(String title)
+ {
+ this.title = title;
+ }
+
+ public boolean isChecked()
+ {
+ return checked;
+ }
+
+ public void setChecked(boolean checked)
+ {
+ this.checked = checked;
+ }
+
+ public boolean isOpen()
+ {
+ return open;
+ }
+
+ public void setOpen(boolean open)
+ {
+ this.open = open;
+ }
+
+ public boolean isNocheck()
+ {
+ return nocheck;
+ }
+
+ public void setNocheck(boolean nocheck)
+ {
+ this.nocheck = nocheck;
+ }
+}
diff --git a/base-common/src/main/java/com/agri/common/dao/BaseDao.java b/base-common/src/main/java/com/agri/common/dao/BaseDao.java
new file mode 100644
index 0000000..da8bd6b
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/dao/BaseDao.java
@@ -0,0 +1,75 @@
+package com.agri.common.dao;
+
+
+import java.util.List;
+import java.util.Map;
+
+public interface BaseDao {
+ /**
+ * 通过Id查找
+ * @param id
+ * @return
+ */
+ public T find(Long id);
+
+ /**
+ * 通过参数查找
+ * @param map
+ * @return
+ */
+ public T findByParam(Map map);
+
+ /**
+ * 查找集合
+ * @param map
+ * @return
+ */
+ public List findListByParam(Map map);
+
+ /**
+ * 查找所有
+ * @return
+ */
+ public List findAll();
+
+ /**
+ * 查找数量
+ * @param map
+ * @return
+ */
+ public Long count(Map map);
+
+ /**
+ * 保存对象
+ * @param t
+ * @return
+ */
+ public Long insert(T t);
+
+ /**
+ * 保存对象
+ * @param t
+ * @return
+ */
+ public Long update(T t);
+
+ /**
+ * 通过属性删除
+ * @param map
+ * @return
+ */
+ public Long deleteByParam(Map map);
+ /**
+ * 通过id删除
+ * @param ids
+ * @return
+ */
+ public Long deleteByIds(Long... ids);
+
+ /**
+ * 通过id删除
+ * @param id
+ * @return
+ */
+ public Long delete(Long id);
+}
diff --git a/base-common/src/main/java/com/agri/common/enums/ExportEnum.java b/base-common/src/main/java/com/agri/common/enums/ExportEnum.java
new file mode 100644
index 0000000..adf7ac4
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/enums/ExportEnum.java
@@ -0,0 +1,42 @@
+package com.agri.common.enums;
+
+import cn.hutool.core.util.EnumUtil;
+import lombok.Getter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 系统导出excel枚举
+ */
+@Getter
+public enum ExportEnum {
+
+
+
+ APP_USER_EXPORT(1, "用户导出"),
+ ;
+
+ private final Integer code;
+
+ private final String desc;
+
+ ExportEnum(Integer code, String desc) {
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public static Map getEnumMap() {
+ return EnumUtil.getEnumMap(ExportEnum.class);
+ }
+
+ public static Map getExportMap() {
+ Map enumMap = getEnumMap();
+ Map exportEnumMap = new HashMap<>();
+ for (Map.Entry stringExportEnumEntry : enumMap.entrySet()) {
+ ExportEnum value = stringExportEnumEntry.getValue();
+ exportEnumMap.put(value.getCode(), value.getDesc());
+ }
+ return exportEnumMap;
+ }
+}
diff --git a/base-common/src/main/java/com/agri/common/service/BaseService.java b/base-common/src/main/java/com/agri/common/service/BaseService.java
new file mode 100644
index 0000000..3876c08
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/service/BaseService.java
@@ -0,0 +1,141 @@
+package com.agri.common.service;
+
+
+import com.agri.common.utils.web.PageResult;
+
+import java.util.List;
+import java.util.Map;
+
+
+public interface BaseService {
+ /**
+ * 通过Id查找
+ * @param id
+ * @return
+ */
+ public T find(Long id);
+
+ /**
+ * 通过参数查找
+ * @param map
+ * @return
+ */
+ public T findByParam(Map map);
+
+ /**
+ * 通过参数查找对象
+ * @param propertyName
+ * @param propertyValue
+ * @return
+ */
+ public T findByParam(String propertyName, Object propertyValue);
+
+ /**
+ * 条件查询数据列表,如需分页使用findPageByParam或findListPageByParam方法
+ * @param map 参数
+ * @return 列表
+ */
+ public List findListByParam(Map map);
+
+
+ /**
+ * 查询分页数据
+ * @param params 查询参数map
+ * @return PageResult
+ */
+ PageResult findPageByParam(Map params);
+
+
+ /**
+ * pagehelper查询分页数据
+ * @param params 查询参数map
+ * @return PageResult
+ */
+ PageResult findPageByParam2(Map params);
+
+
+ /**
+ * 分页查询-不查询总条数,仅查询数据列表
+ * @param params 查询参数map
+ * @return List
+ */
+ List findListPageByParam(Map params);
+
+ /**
+ * pagehelpter分页查询-不查询总条数,仅查询数据列表
+ * @param params 查询参数map
+ * @return List
+ */
+ List findListPageByParam2(Map params);
+
+ /**
+ * 属性值和属性查找集合
+ * @param propertyName
+ * @param propertyValue
+ * @return
+ */
+ public List findListByParam(String propertyName, Object propertyValue);
+
+ /**
+ * 查找数量
+ * @param map
+ * @return
+ */
+ public Long count(Map map);
+
+ /**
+ * 保存对象
+ * @param t
+ * @return
+ */
+ public Long save(T t);
+
+ /**
+ * 保存对象
+ * @param t
+ * @return
+ */
+ public Long update(T t);
+ /**
+ * 通过属性删除
+ * @param map
+ * @return
+ */
+ public Long deleteByParam(Map map);
+
+ /**
+ * 通过属性删除
+ * @param propertyName
+ * @param propertyValue
+ * @return
+ */
+ public Long deleteByParam(String propertyName, Object propertyValue);
+
+ /**
+ * 通过id删除
+ * @param id
+ * @return
+ */
+ public Long delete(long id);
+
+ /**
+ * 通过id删除
+ * @param ids
+ * @return
+ */
+ public Long deleteByIds(Long... ids);
+
+ /**
+ * 查找所有
+ * @return
+ */
+ public List findAll();
+
+ /**
+ * 列表
+ * @param params
+ * @return
+ */
+ PageResult findAll(Map params);
+
+}
diff --git a/base-common/src/main/java/com/agri/common/service/impl/BaseServiceImpl.java b/base-common/src/main/java/com/agri/common/service/impl/BaseServiceImpl.java
new file mode 100644
index 0000000..dd88cca
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/service/impl/BaseServiceImpl.java
@@ -0,0 +1,173 @@
+package com.agri.common.service.impl;
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageInfo;
+import com.agri.common.dao.BaseDao;
+import com.agri.common.service.BaseService;
+import com.agri.common.utils.PageUtil;
+import com.agri.common.utils.web.PageResult;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class BaseServiceImpl implements BaseService {
+
+ @Autowired
+ private BaseDao baseDao;
+
+ public void setBaseDao(BaseDao baseDao) {
+ this.baseDao = baseDao;
+ }
+
+ @Override
+ public T find(Long id) {
+ return baseDao.find(id);
+ }
+
+ @Override
+ public T findByParam(Map map) {
+ return baseDao.findByParam(map);
+ }
+
+ @Override
+ public T findByParam(String propertyName, Object propertyValue) {
+ Map map = new HashMap();
+ map.put(propertyName, propertyValue);
+ T t = findByParam(map);
+ return t;
+ }
+
+ /**
+ * 条件查询数据列表,如需分页使用findPageByParam或findListPageByParam方法
+ * @param params 参数,需要排序的话传map中放order参数,值为:字段值 desc 这种
+ * @return 列表
+ */
+ @Override
+ public List findListByParam(Map params) {
+ PageUtil.adminOrderConvert(params);
+ return baseDao.findListByParam(params);
+ }
+
+ /**
+ * 查询分页数据
+ * @param params 查询参数map,需要排序的话传map中放order参数,值为:字段值 desc 这种
+ * @return PageResult
+ */
+ @Override
+ public PageResult findPageByParam(Map params) {
+ PageUtil.pageParamConvert(params, true);
+ List list = baseDao.findListByParam(params);
+ Long count = baseDao.count(params);
+ Integer pageSize = MapUtils.getInteger(params, "pageSize");
+ return PageResult.buildPageResult(list, count, pageSize);
+ }
+
+ /**
+ * pagehelper查询分页数据
+ *
+ * @param params 查询参数map,需要排序的话传map中放order参数,值为:字段值 desc 这种
+ * @return PageResult
+ */
+ @Override
+ public PageResult findPageByParam2(Map params) {
+ try (Page page = PageUtil.startPageWithCountByParam(params)) {
+ baseDao.findListByParam(params);
+ return PageResult.buildPageResult(page.getResult(), page.getTotal(), page.getPageSize());
+ }
+ }
+
+ /**
+ * 分页查询-不查询总条数,仅查询数据列表
+ * @param params 查询参数map,需要排序的话传map中放order参数,值为:字段值 desc 这种
+ * @return List
+ */
+ @Override
+ public List findListPageByParam(Map params) {
+ PageUtil.pageParamConvert(params, true);
+ return baseDao.findListByParam(params);
+ }
+
+ /**
+ * pagehelpter分页查询-不查询总条数,仅查询数据列表
+ *
+ * @param params 查询参数map,需要排序的话传map中放order参数,值为:字段值 desc 这种
+ * @return List
+ */
+ @Override
+ public List findListPageByParam2(Map params) {
+ try (Page page = PageUtil.startPageNoCountByParam(params)) {
+ baseDao.findListByParam(params);
+ return page.getResult();
+ }
+ }
+
+ @Override
+ public List findListByParam(String propertyName, Object propertyValue) {
+ Map map = new HashMap();
+ map .put(propertyName, propertyValue);
+ List t = findListByParam(map);
+ return t;
+ }
+
+ @Override
+ public Long count(Map map) {
+ return baseDao.count(map);
+ }
+
+ @Override
+ public Long save(T t) {
+ return baseDao.insert(t);
+ }
+
+ @Override
+ public Long update(T t) {
+ return baseDao.update(t);
+ }
+
+ @Override
+ public Long deleteByParam(Map map) {
+ return baseDao.deleteByParam(map);
+ }
+
+ @Override
+ public Long deleteByParam(String propertyName, Object propertyValue) {
+ Map map = new HashMap();
+ map .put(propertyName, propertyValue);
+ Long delete = deleteByParam(map);
+ return delete;
+ }
+
+ @Override
+ public Long delete(long id) {
+ return baseDao.delete(id);
+ }
+
+ @Override
+ public Long deleteByIds(Long... ids) {
+ return baseDao.deleteByIds(ids);
+ }
+
+ @Override
+ public List findAll() {
+ return baseDao.findAll();
+ }
+ /**
+ * 列表
+ * @param params
+ * @return
+ */
+ @Override
+ public PageResult findAll(Map params){
+ PageUtil.pageParamConvert(params, true);
+ List list = baseDao.findListByParam(params);
+ PageInfo pageInfo = new PageInfo(list);
+ Long count = baseDao.count(params);
+ Integer length = MapUtils.getInteger(params, "pageSize");
+ int pages = (int) Math.ceil((double) count / (double) length);
+ return PageResult.builder().data(pageInfo.getList()).code(0).count(count).pages(pages).build();
+ }
+
+}
diff --git a/base-common/src/main/java/com/agri/common/utils/PageUtil.java b/base-common/src/main/java/com/agri/common/utils/PageUtil.java
new file mode 100644
index 0000000..55ff9aa
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/utils/PageUtil.java
@@ -0,0 +1,107 @@
+package com.agri.common.utils;
+
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.StrUtil;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Map;
+
+
+/**
+ * 分页参数处理工具
+ * url 地址重写 ?start=1&length=10
+ */
+@Slf4j
+public class PageUtil {
+
+ /**
+ * 分页参数,起始位置,从0开始
+ */
+ public static final String PAGE = "pageNum";
+ /**
+ * 分页参数,每页数据条数
+ */
+ public static final String LIMIT = "pageSize";
+
+ /**
+ * 转换并校验分页参数
+ * mybatis中limit #{start, JdbcType=INTEGER}, #{length,
+ * JdbcType=INTEGER}里的类型转换貌似失效
+ * 我们这里先把他转成Integer的类型
+ *
+ * @param params
+ * @param required 分页参数是否是必填
+ */
+ public static void pageParamConvert(Map params, boolean required) {
+ if (required) { // 分页参数必填时,校验参数
+ if (params == null || !params.containsKey(PAGE) || !params.containsKey(LIMIT)) {
+ throw new IllegalArgumentException("请检查分页参数," + PAGE + "," + LIMIT);
+ }
+ }
+ if (!CollectionUtils.isEmpty(params)) {
+ if (params.containsKey(PAGE)) {
+ Integer start = MapUtils.getInteger(params, PAGE);
+ Integer length = MapUtils.getInteger(params, LIMIT);
+ if (start > 0) {
+ params.put(PAGE, (start - 1) * length);
+ }
+ }
+
+ if (params.containsKey(LIMIT)) {
+ Integer length = MapUtils.getInteger(params, LIMIT);
+ if (length < 0) {
+ length = 0;
+ }
+ params.put(LIMIT, length);
+ }
+
+ adminOrderConvert(params);
+ }
+ }
+
+ public static void adminOrderConvert(Map params) {
+ if (params != null && !params.containsKey("order")) {
+ if (params.containsKey("orderByColumn") && params.containsKey("isAsc")) {
+ String orderByColumn = MapUtils.getString(params, "orderByColumn");
+ String isAsc = MapUtils.getString(params, "isAsc");
+ if (StrUtil.isNotBlank(orderByColumn) && StrUtil.isNotBlank(isAsc)) {
+ params.put("order", StrUtil.toUnderlineCase(orderByColumn) + " " + isAsc);
+ }
+ }
+ }
+ }
+
+ public static Page startPageWithCountByParam(Map params) {
+ return getTs(params, true);
+ }
+
+ public static Page startPageNoCountByParam(Map params) {
+ return getTs(params, false);
+ }
+
+ private static Page getTs(Map params, boolean isCount) {
+ adminOrderConvert(params);
+ Integer pageSize = MapUtils.getInteger(params, "pageSize");
+ Integer pageNum = MapUtils.getInteger(params, "pageNum");
+ Page page = PageHelper.startPage(pageNum, pageSize, isCount, true, false);
+ String orderBy = MapUtils.getString(params, "order");
+ if (!StringUtils.isEmpty(orderBy)) {
+ String orderByTablePrefix = MapUtil.getStr(params, "orderByTablePrefix");
+ if (!StrUtil.isNotBlank(orderByTablePrefix)) {
+ page.setOrderBy(orderBy);
+ } else {
+ orderBy = orderByTablePrefix.concat(".").concat(orderBy);
+ page.setOrderBy(orderBy);
+ }
+ }
+ // 清空参数中的pageSize, pageNum, order参数,pageHelper会动态代理补全这些参数
+ params.put("pageSize", null);
+ params.put("pageNum", null);
+ params.put("order", null);
+ return page;
+ }
+}
diff --git a/base-common/src/main/java/com/agri/common/utils/web/PageResult.java b/base-common/src/main/java/com/agri/common/utils/web/PageResult.java
new file mode 100644
index 0000000..851f0c9
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/utils/web/PageResult.java
@@ -0,0 +1,55 @@
+package com.agri.common.utils.web;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+
+ * 分页实体类
+ * total 总数
+ * code 是否成功
+ * data 当前页结果集
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PageResult implements Serializable {
+
+ private static final long serialVersionUID = -275582248840137389L;
+
+ /**
+ * 总条数
+ */
+ private Long count;
+
+ /**
+ * 总的页数
+ */
+ private Integer pages;
+
+ /**
+ * code
+ */
+ private Integer code;
+
+ /**
+ * 数据列表
+ */
+ private List data;
+
+ public static PageResult buildPageResult(List list, Long count, Integer pageSize) {
+ Integer pages = (int) Math.ceil((double) count / (double) pageSize);
+ return PageResult.builder().data(list)
+ .code(0)
+ .count(count)
+ .pages(pages)
+ .build();
+ }
+}
diff --git a/base-common/src/main/java/com/agri/common/utils/web/Paramap.java b/base-common/src/main/java/com/agri/common/utils/web/Paramap.java
new file mode 100644
index 0000000..f6bdeca
--- /dev/null
+++ b/base-common/src/main/java/com/agri/common/utils/web/Paramap.java
@@ -0,0 +1,19 @@
+package com.agri.common.utils.web;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Paramap extends HashMap implements Map {
+ private static final long serialVersionUID = 1L;
+
+ private Paramap() {
+ }
+
+ public static Paramap create() {
+ return new Paramap();
+ }
+
+ public Paramap put(String name, Object value) {
+ super.put(name, value);
+ return this;
+ }
+}
diff --git a/base-generator/src/main/java/com/agri/generator/domain/GenTableColumn.java b/base-generator/src/main/java/com/agri/generator/domain/GenTableColumn.java
index 052d2f9..8d9eeae 100644
--- a/base-generator/src/main/java/com/agri/generator/domain/GenTableColumn.java
+++ b/base-generator/src/main/java/com/agri/generator/domain/GenTableColumn.java
@@ -3,14 +3,14 @@ package com.agri.generator.domain;
import javax.validation.constraints.NotBlank;
import com.agri.common.core.domain.BaseEntity;
import com.agri.common.utils.StringUtils;
+import com.alibaba.fastjson.JSONObject;
/**
* 代码生成业务字段表 gen_table_column
*
* @author ruoyi
*/
-public class GenTableColumn extends BaseEntity
-{
+public class GenTableColumn extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 编号 */
@@ -59,7 +59,7 @@ public class GenTableColumn extends BaseEntity
/** 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) */
private String queryType;
- /** 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) */
+ /** 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、upload上传控件、summernote富文本控件) */
private String htmlType;
/** 字典类型 */
@@ -348,6 +348,54 @@ public class GenTableColumn extends BaseEntity
return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark");
}
+ /**
+ * 用户可见的注释
+ */
+ private String visibleColumnComment;
+
+ public String getVisibleColumnComment() {
+ return visibleColumnComment;
+ }
+
+ public void setVisibleColumnComment(String visibleColumnComment) {
+ this.visibleColumnComment = visibleColumnComment;
+ }
+ /**
+ * 字段字典json
+ */
+ private String columnDictJson;
+
+ public String getColumnDictJson() {
+ return columnDictJson;
+ }
+
+ public void setColumnDictJson(String columnDictJson) {
+ this.columnDictJson = columnDictJson;
+ }
+
+ private JSONObject columnCommentDict;
+
+ public JSONObject getColumnCommentDict() {
+ return columnCommentDict;
+ }
+
+ public void setColumnCommentDict(JSONObject columnCommentDict) {
+ this.columnCommentDict = columnCommentDict;
+ }
+
+ /**
+ * 首字母大写,例:UserName
+ */
+ private String upJavaField;
+
+ public String getUpJavaField() {
+ return upJavaField;
+ }
+
+ public void setUpJavaField(String upJavaField) {
+ this.upJavaField = upJavaField;
+ }
+
public String readConverterExp()
{
String remarks = StringUtils.substringBetween(this.columnComment, "(", ")");
diff --git a/base-generator/src/main/java/com/agri/generator/util/VelocityUtils.java b/base-generator/src/main/java/com/agri/generator/util/VelocityUtils.java
index eac9635..72f41b4 100644
--- a/base-generator/src/main/java/com/agri/generator/util/VelocityUtils.java
+++ b/base-generator/src/main/java/com/agri/generator/util/VelocityUtils.java
@@ -3,6 +3,14 @@ package com.agri.generator.util;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ReUtil;
+import cn.hutool.core.util.StrUtil;
+import com.agri.generator.config.GenConfig;
+import com.alibaba.fastjson.JSON;
import org.apache.velocity.VelocityContext;
import com.alibaba.fastjson.JSONObject;
import com.agri.common.constant.GenConstants;
@@ -16,14 +24,16 @@ import com.agri.generator.domain.GenTableColumn;
*
* @author ruoyi
*/
-public class VelocityUtils
-{
+public class VelocityUtils {
/** 项目空间路径 */
private static final String PROJECT_PATH = "main/java";
/** mybatis空间路径 */
private static final String MYBATIS_PATH = "main/resources/mapper";
+ /** html空间路径 */
+ private static final String TEMPLATES_PATH = "main/resources/templates";
+
/** 默认上级菜单,系统工具 */
private static final String DEFAULT_PARENT_MENU_ID = "3";
@@ -32,33 +42,60 @@ public class VelocityUtils
*
* @return 模板列表
*/
- public static VelocityContext prepareContext(GenTable genTable)
- {
- String moduleName = genTable.getModuleName();
+ public static VelocityContext prepareContext(GenTable genTable) {
String businessName = genTable.getBusinessName();
String packageName = genTable.getPackageName();
+ String entityPrefix = packageName + ".domain";
+ String pagePrefix = genTable.getModuleName() + "/" + genTable.getBusinessName();
+ String moduleName = genTable.getModuleName();
+ String controllerPackageName = "com.agri.web.controller.business";
String tplCategory = genTable.getTplCategory();
String functionName = genTable.getFunctionName();
VelocityContext velocityContext = new VelocityContext();
+ velocityContext.put("entityPrefix", entityPrefix);
velocityContext.put("tplCategory", genTable.getTplCategory());
velocityContext.put("tableName", genTable.getTableName());
velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】");
velocityContext.put("ClassName", genTable.getClassName());
velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName()));
- velocityContext.put("moduleName", genTable.getModuleName());
- velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName()));
+ velocityContext.put("moduleName", moduleName);
velocityContext.put("businessName", genTable.getBusinessName());
velocityContext.put("basePackage", getPackagePrefix(packageName));
velocityContext.put("packageName", packageName);
+ velocityContext.put("pagePrefix", pagePrefix);
+ velocityContext.put("controllerPackageName", controllerPackageName);
velocityContext.put("author", genTable.getFunctionAuthor());
velocityContext.put("datetime", DateUtils.getDate());
velocityContext.put("pkColumn", genTable.getPkColumn());
velocityContext.put("importList", getImportList(genTable));
velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName));
- velocityContext.put("columns", genTable.getColumns());
+ List columns = genTable.getColumns();
+ velocityContext.put("columns", columns);
+ boolean hasDate = false;
+ boolean hasBigDecimal = false;
+ for (GenTableColumn column : columns) {
+
+ if (column.getJavaType().equals("Date")) {
+ hasDate = true;
+ }
+ if (column.getJavaType().equals("BigDecimal")) {
+ hasBigDecimal = true;
+ }
+ column.setUpJavaField(StrUtil.upperFirst(column.getJavaField()));
+ String columnComment = column.getColumnComment();
+ column.setVisibleColumnComment(getVisibleColumnComment(columnComment));
+ Map columnCommentDict = getColumnDict(columnComment);
+ if (!columnCommentDict.isEmpty()) {
+ column.setColumnDictJson(JSON.toJSONString(columnCommentDict));
+ }
+ if (StrUtil.isNotBlank(column.getColumnDictJson())) {
+ column.setColumnCommentDict(JSON.parseObject(column.getColumnDictJson()));
+ }
+ }
+ velocityContext.put("hasDate", hasDate);
+ velocityContext.put("hasBigDecimal", hasBigDecimal);
velocityContext.put("table", genTable);
- velocityContext.put("dicts", getDicts(genTable));
setMenuVelocityContext(velocityContext, genTable);
if (GenConstants.TPL_TREE.equals(tplCategory))
{
@@ -71,6 +108,30 @@ public class VelocityUtils
return velocityContext;
}
+ /**
+ * 获取注释中的字典,如:1:男,2-女 -》 {1:男,2:女}
+ * @param columnComment 列注释
+ * @return /
+ */
+ private static Map getColumnDict(String columnComment) {
+ List nameList = ReUtil.findAll("(?<=\\d\\-?)([^\\d]+)(?!\\d)?", columnComment, 0)
+ .stream().map(item -> {
+ item = ReUtil.replaceAll(item, "[\\s::=\\-,,\\(\\)()|\\d]", "");
+ return item;
+ }).collect(Collectors.toList());
+ List numberList = ReUtil.findAll("(\\d)", columnComment, 0);
+ return CollUtil.zip(numberList, nameList);
+ }
+
+ /**
+ * 获取用户友好的列注释
+ * @param columnComment 列注释
+ * @return /
+ */
+ private static String getVisibleColumnComment(String columnComment) {
+ return ReUtil.replaceAll(columnComment, "([\\s::=\\-,,\\(\\)()|\\d].*)", "");
+ }
+
public static void setMenuVelocityContext(VelocityContext context, GenTable genTable)
{
String options = genTable.getOptions();
@@ -122,7 +183,7 @@ public class VelocityUtils
/**
* 获取模板信息
*
- * @return 模板列表f
+ * @return 模板列表
*/
public static List getTemplateList(String tplCategory)
{
@@ -132,22 +193,27 @@ public class VelocityUtils
templates.add("vm/java/service.java.vm");
templates.add("vm/java/serviceImpl.java.vm");
templates.add("vm/java/controller.java.vm");
+ templates.add("vm/java/vo.java.vm");
+ templates.add("vm/java/dto.java.vm");
+ templates.add("vm/java/exportdto.java.vm");
templates.add("vm/xml/mapper.xml.vm");
- templates.add("vm/sql/sql.vm");
- templates.add("vm/js/api.js.vm");
if (GenConstants.TPL_CRUD.equals(tplCategory))
{
- templates.add("vm/vue/index.vue.vm");
+ templates.add("vm/html/list.html.vm");
}
else if (GenConstants.TPL_TREE.equals(tplCategory))
{
- templates.add("vm/vue/index-tree.vue.vm");
+ templates.add("vm/html/tree.html.vm");
+ templates.add("vm/html/list-tree.html.vm");
}
else if (GenConstants.TPL_SUB.equals(tplCategory))
{
- templates.add("vm/vue/index.vue.vm");
+ templates.add("vm/html/list.html.vm");
templates.add("vm/java/sub-domain.java.vm");
}
+ templates.add("vm/html/add.html.vm");
+ templates.add("vm/html/edit.html.vm");
+ templates.add("vm/sql/sql.vm");
return templates;
}
@@ -156,12 +222,37 @@ public class VelocityUtils
*/
public static String getFileName(String template, GenTable genTable)
{
+ template = template.substring(template.lastIndexOf("/") + 1);
// 文件名称
String fileName = "";
// 包路径
String packageName = genTable.getPackageName();
// 模块名
String moduleName = genTable.getModuleName();
+// boolean isSupplyBusiness = false;
+// if (genTable.getTableName().startsWith("t_supply") || genTable.getTableName().startsWith("t_purchase")) {
+// isSupplyBusiness = true;
+// }
+// if (isSupplyBusiness) {
+// packageName = "com.shidian.supply";
+// }
+// boolean isTeamBuy = false;
+// if (genTable.getTableName().startsWith("t_team")) {
+// isTeamBuy = true;
+// }
+// if (isTeamBuy) {
+// packageName = "com.shidian.teambuy";
+// }
+// // 是否是心选业务
+// boolean isXinxuan = false;
+// if (genTable.getTableName().startsWith("t_xinxuan")) {
+// isXinxuan = true;
+// }
+// if (isXinxuan) {
+// packageName = "com.shidian.xinxuan";
+// moduleName = "xinxuan";
+// }
+
// 大写类名
String className = genTable.getClassName();
// 业务名称
@@ -169,55 +260,101 @@ public class VelocityUtils
String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/");
String mybatisPath = MYBATIS_PATH + "/" + moduleName;
- String vuePath = "vue";
+ String htmlPath = TEMPLATES_PATH + "/" + moduleName + "/" + businessName;
- if (template.contains("domain.java.vm"))
+ if (template.equals("domain.java.vm"))
{
fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
+// if (isSupplyBusiness || isTeamBuy || isXinxuan) {
+// fileName = StringUtils.format("{}/domain/entity/{}.java", javaPath, className);
+// }
}
- if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory()))
+ if (template.equals("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory()))
{
fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
+// if (isSupplyBusiness || isTeamBuy || isXinxuan) {
+// fileName = StringUtils.format("{}/domain/entity/{}.java", javaPath, genTable.getSubTable().getClassName());
+// }
}
- else if (template.contains("mapper.java.vm"))
+ else if (template.equals("mapper.java.vm"))
{
fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className);
}
- else if (template.contains("service.java.vm"))
+ else if (template.equals("service.java.vm"))
{
fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className);
}
- else if (template.contains("serviceImpl.java.vm"))
+ else if (template.equals("serviceImpl.java.vm"))
{
fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
}
- else if (template.contains("controller.java.vm"))
+ else if (template.equals("controller.java.vm"))
{
- fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className);
+ String controllerJavaPath = PROJECT_PATH + "/" + "com/shidian/web/controller/business";
+// if (isSupplyBusiness) {
+// controllerJavaPath = PROJECT_PATH + "/" + "com/shidian/web/controller/business/supply";
+// }
+// if (isTeamBuy) {
+// controllerJavaPath = PROJECT_PATH + "/" + "com/shidian/web/controller/business/teambuy";
+// }
+// if (isXinxuan) {
+// controllerJavaPath = PROJECT_PATH + "/" + "com/shidian/web/controller/xinxuan";
+// }
+ fileName = StringUtils.format("{}/{}Controller.java", controllerJavaPath, className);
}
- else if (template.contains("mapper.xml.vm"))
+ else if (template.equals("mapper.xml.vm"))
{
fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className);
+// if (isSupplyBusiness) {
+// fileName = StringUtils.format("{}/{}Mapper.xml", "supply", className);
+// } else if (isTeamBuy) {
+// fileName = StringUtils.format("{}/{}Mapper.xml", "teambuy", className);
+// } else if (isXinxuan) {
+// fileName = StringUtils.format("{}/{}Mapper.xml", "xinxuan", className);
+// }
}
- else if (template.contains("sql.vm"))
+ else if (template.equals("list.html.vm"))
+ {
+ fileName = StringUtils.format("{}/{}.html", htmlPath, businessName);
+ }
+ else if (template.equals("list-tree.html.vm"))
+ {
+ fileName = StringUtils.format("{}/{}.html", htmlPath, businessName);
+ }
+ else if (template.equals("tree.html.vm"))
+ {
+ fileName = StringUtils.format("{}/tree.html", htmlPath);
+ }
+ else if (template.equals("add.html.vm"))
+ {
+ fileName = StringUtils.format("{}/add.html", htmlPath);
+ }
+ else if (template.equals("edit.html.vm"))
+ {
+ fileName = StringUtils.format("{}/edit.html", htmlPath);
+ }
+ else if (template.equals("sql.vm"))
{
fileName = businessName + "Menu.sql";
}
- else if (template.contains("api.js.vm"))
- {
- fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
- }
- else if (template.contains("index.vue.vm"))
- {
- fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
- }
- else if (template.contains("index-tree.vue.vm"))
- {
- fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
- }
return fileName;
}
+ /**
+ * 获取项目文件路径
+ *
+ * @return 路径
+ */
+ public static String getProjectPath()
+ {
+ String packageName = GenConfig.getPackageName();
+ StringBuffer projectPath = new StringBuffer();
+ projectPath.append("main/java/");
+ projectPath.append(packageName.replace(".", "/"));
+ projectPath.append("/");
+ return projectPath.toString();
+ }
+
/**
* 获取包前缀
*
@@ -233,7 +370,7 @@ public class VelocityUtils
/**
* 根据列类型获取导入包
- *
+ *
* @param genTable 业务表对象
* @return 返回需要导入的包列表
*/
@@ -261,28 +398,6 @@ public class VelocityUtils
return importList;
}
- /**
- * 根据列类型获取字典组
- *
- * @param genTable 业务表对象
- * @return 返回字典组
- */
- public static String getDicts(GenTable genTable)
- {
- List columns = genTable.getColumns();
- List dicts = new ArrayList();
- for (GenTableColumn column : columns)
- {
- if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny(
- column.getHtmlType(),
- new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX }))
- {
- dicts.add("'" + column.getDictType() + "'");
- }
- }
- return StringUtils.join(dicts, ", ");
- }
-
/**
* 获取权限前缀
*
@@ -297,8 +412,6 @@ public class VelocityUtils
/**
* 获取上级菜单ID字段
- *
- * @param paramsObj 生成其他选项
* @return 上级菜单ID字段
*/
public static String getParentMenuId(JSONObject paramsObj)
@@ -313,8 +426,6 @@ public class VelocityUtils
/**
* 获取树编码
- *
- * @param paramsObj 生成其他选项
* @return 树编码
*/
public static String getTreecode(JSONObject paramsObj)
@@ -328,8 +439,6 @@ public class VelocityUtils
/**
* 获取树父编码
- *
- * @param paramsObj 生成其他选项
* @return 树父编码
*/
public static String getTreeParentCode(JSONObject paramsObj)
@@ -343,8 +452,6 @@ public class VelocityUtils
/**
* 获取树名称
- *
- * @param paramsObj 生成其他选项
* @return 树名称
*/
public static String getTreeName(JSONObject paramsObj)
diff --git a/base-generator/src/main/resources/generator.yml b/base-generator/src/main/resources/generator.yml
index 24c6262..ad36446 100644
--- a/base-generator/src/main/resources/generator.yml
+++ b/base-generator/src/main/resources/generator.yml
@@ -1,10 +1,10 @@
# 代码生成
gen:
# 作者
- author: nealtsiao
+ author: wqy
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
- packageName: com.agri.agriculture
+ packageName: com.agri.business
# 自动去除表前缀,默认是false
autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
- tablePrefix: agriculture_
\ No newline at end of file
+ tablePrefix: t_
\ No newline at end of file
diff --git a/base-generator/src/main/resources/vm/java/domain.java.vm b/base-generator/src/main/resources/vm/java/domain.java.vm
index c408bcc..dec7075 100644
--- a/base-generator/src/main/resources/vm/java/domain.java.vm
+++ b/base-generator/src/main/resources/vm/java/domain.java.vm
@@ -1,105 +1,44 @@
-package ${packageName}.domain;
+package ${entityPrefix};
-#foreach ($import in $importList)
-import ${import};
-#end
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.agri.common.annotation.Excel;
-#if($table.crud || $table.sub)
-import com.agri.common.core.domain.BaseEntity;
-#elseif($table.tree)
-import com.agri.common.core.domain.TreeEntity;
-#end
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+ #if(${hasBigDecimal})
+ import java.math.BigDecimal;
+ #end
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
/**
- * ${functionName}对象 ${tableName}
- *
+ * ${functionName}
+ *
* @author ${author}
* @date ${datetime}
*/
-#if($table.crud || $table.sub)
-#set($Entity="BaseEntity")
-#elseif($table.tree)
-#set($Entity="TreeEntity")
-#end
-public class ${ClassName} extends ${Entity}
-{
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "${tableName}")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel(value="${functionName}",description="${functionName}")
+public class ${ClassName} implements Serializable {
+
private static final long serialVersionUID = 1L;
+ #foreach ($column in $columns)
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
- /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
- @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
- @JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
- @Excel(name = "${comment}")
-#end
-#end
- private $column.javaType $column.javaField;
+ /** $column.columnComment */
+ #if($column.columnName == $pk.columnName)
+ #end
+ @ApiModelProperty(value = "$column.columnComment")
+ private $column.javaType ${column.javaField};
+ #end
-#end
-#end
-#if($table.sub)
- /** $table.subTable.functionName信息 */
- private List<${subClassName}> ${subclassName}List;
-
-#end
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
- public void set${AttrName}($column.javaType $column.javaField)
- {
- this.$column.javaField = $column.javaField;
- }
-
- public $column.javaType get${AttrName}()
- {
- return $column.javaField;
- }
-#end
-#end
-
-#if($table.sub)
- public List<${subClassName}> get${subClassName}List()
- {
- return ${subclassName}List;
- }
-
- public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
- {
- this.${subclassName}List = ${subclassName}List;
- }
-
-#end
- @Override
- public String toString() {
- return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
- .append("${column.javaField}", get${AttrName}())
-#end
-#if($table.sub)
- .append("${subclassName}List", get${subClassName}List())
-#end
- .toString();
- }
}
diff --git a/base-generator/src/main/resources/vm/java/dto.java.vm b/base-generator/src/main/resources/vm/java/dto.java.vm
new file mode 100644
index 0000000..5643c50
--- /dev/null
+++ b/base-generator/src/main/resources/vm/java/dto.java.vm
@@ -0,0 +1,46 @@
+package ${packageName}.domain.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+ #if(${hasBigDecimal})
+ import java.math.BigDecimal;
+ #end
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * ${functionName}
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "${tableName}" )
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel(value = "${functionName}" , description = "${functionName}" )
+public class ${ClassName}Dto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+#foreach ($column in $columns)
+#if($column.javaField != "createBy" && $column.javaField != "createTime" && $column.javaField !=
+ "updateBy" && $column.javaField != "updateTime")
+ /** $column.columnComment */
+ #if($column.columnName == $pk.columnName)
+ #end
+ @ApiModelProperty(value = "$column.columnComment")
+ private $column.javaType ${column.javaField};
+
+#end
+#end
+}
diff --git a/base-generator/src/main/resources/vm/java/exportdto.java.vm b/base-generator/src/main/resources/vm/java/exportdto.java.vm
new file mode 100644
index 0000000..5712217
--- /dev/null
+++ b/base-generator/src/main/resources/vm/java/exportdto.java.vm
@@ -0,0 +1,57 @@
+package ${packageName}.domain.excel.expt;
+
+import com.agri.common.annotation.Excel;
+import lombok.Data;
+#if(${hasBigDecimal})
+import java.math.BigDecimal;
+#end
+#if(${hasDate})
+import java.util.Date;
+#end
+
+/**
+ * ${functionName}导出实体
+ */
+@Data
+public class ${ClassName}ExportDto {
+#foreach ($column in $columns)
+ #if($column.list)
+ #set($visibleComment=$column.visibleColumnComment)
+ #set($comment=$column.columnComment)
+ #set($commentDict=$column.columnCommentDict)
+
+ #if($column.columnName == $pk.columnName)
+
+ #elseif($column.htmlType == 'datetime')
+ /** $comment */
+ @Excel(name = "${visibleComment}", dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private $column.javaType ${column.javaField};
+
+ #elseif($commentDict)
+ /** $comment */
+ @Excel(name = "${visibleComment}", readConverterExp = "#foreach($mapEntry in $commentDict.entrySet())${mapEntry.key}=${mapEntry.value}#if($foreach.hasNext),#end#end ")
+ private $column.javaType $column.javaField;
+
+ #else
+ /** $comment */
+ @Excel(name = "${visibleComment}")
+ private $column.javaType $column.javaField;
+ #end
+ #end
+#end
+
+ public static List<${ClassName}ExportDto> build(List<${ClassName}> list) {
+ List<${ClassName}ExportDto> resultList = new ArrayList<>();
+ for (${ClassName} ${className} : list) {
+ ${ClassName}ExportDto result = new ${ClassName}ExportDto();
+ #foreach($column in $columns)
+ #if($column.list)
+ result.set${column.upJavaField}(${className}.get${column.upJavaField}());
+ #end
+ #end
+ resultList.add(result);
+ }
+ return resultList;
+ }
+
+}
diff --git a/base-generator/src/main/resources/vm/java/mapper.java.vm b/base-generator/src/main/resources/vm/java/mapper.java.vm
index 7e7d7c2..b43b6a9 100644
--- a/base-generator/src/main/resources/vm/java/mapper.java.vm
+++ b/base-generator/src/main/resources/vm/java/mapper.java.vm
@@ -1,91 +1,20 @@
package ${packageName}.mapper;
import java.util.List;
-import ${packageName}.domain.${ClassName};
+import com.agri.common.dao.BaseDao;
+import ${entityPrefix}.${ClassName};
+import org.apache.ibatis.annotations.Mapper;
#if($table.sub)
-import ${packageName}.domain.${subClassName};
+import ${entityPrefix}.${subClassName};
#end
/**
* ${functionName}Mapper接口
- *
+ *
* @author ${author}
- * @date ${datetime}
+ * @since ${datetime}
*/
-public interface ${ClassName}Mapper
-{
- /**
- * 查询${functionName}
- *
- * @param ${pkColumn.javaField} ${functionName}主键
- * @return ${functionName}
- */
- public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
+@Mapper
+public interface ${ClassName}Mapper extends BaseDao<${ClassName}> {
- /**
- * 查询${functionName}列表
- *
- * @param ${className} ${functionName}
- * @return ${functionName}集合
- */
- public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
-
- /**
- * 新增${functionName}
- *
- * @param ${className} ${functionName}
- * @return 结果
- */
- public int insert${ClassName}(${ClassName} ${className});
-
- /**
- * 修改${functionName}
- *
- * @param ${className} ${functionName}
- * @return 结果
- */
- public int update${ClassName}(${ClassName} ${className});
-
- /**
- * 删除${functionName}
- *
- * @param ${pkColumn.javaField} ${functionName}主键
- * @return 结果
- */
- public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
-
- /**
- * 批量删除${functionName}
- *
- * @param ${pkColumn.javaField}s 需要删除的数据主键集合
- * @return 结果
- */
- public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-#if($table.sub)
-
- /**
- * 批量删除${subTable.functionName}
- *
- * @param ${pkColumn.javaField}s 需要删除的数据主键集合
- * @return 结果
- */
- public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-
- /**
- * 批量新增${subTable.functionName}
- *
- * @param ${subclassName}List ${subTable.functionName}列表
- * @return 结果
- */
- public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
-
-
- /**
- * 通过${functionName}主键删除${subTable.functionName}信息
- *
- * @param ${pkColumn.javaField} ${functionName}ID
- * @return 结果
- */
- public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
-#end
}
diff --git a/base-generator/src/main/resources/vm/java/service.java.vm b/base-generator/src/main/resources/vm/java/service.java.vm
index 264882b..ab73117 100644
--- a/base-generator/src/main/resources/vm/java/service.java.vm
+++ b/base-generator/src/main/resources/vm/java/service.java.vm
@@ -1,61 +1,25 @@
package ${packageName}.service;
import java.util.List;
-import ${packageName}.domain.${ClassName};
+import ${entityPrefix}.${ClassName};
+ #if($table.tree)
+ import com.agri.common.core.domain.Ztree;
+ #end
+import com.agri.common.service.BaseService;
/**
* ${functionName}Service接口
- *
+ *
* @author ${author}
- * @date ${datetime}
+ * @since ${datetime}
*/
-public interface I${ClassName}Service
-{
- /**
- * 查询${functionName}
- *
- * @param ${pkColumn.javaField} ${functionName}主键
- * @return ${functionName}
- */
- public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
+public interface I${ClassName}Service extends BaseService<${ClassName}> {
/**
- * 查询${functionName}列表
- *
- * @param ${className} ${functionName}
- * @return ${functionName}集合
+ * 导出${functionName}数据列表
+ * @param list 数据列表
+ * @param sourceType 1-总后台 2-集货中心 3-基地供应商后台
*/
- public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
+ void export${ClassName}Excel(List<${ClassName}> list, Integer sourceType);
- /**
- * 新增${functionName}
- *
- * @param ${className} ${functionName}
- * @return 结果
- */
- public int insert${ClassName}(${ClassName} ${className});
-
- /**
- * 修改${functionName}
- *
- * @param ${className} ${functionName}
- * @return 结果
- */
- public int update${ClassName}(${ClassName} ${className});
-
- /**
- * 批量删除${functionName}
- *
- * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
- * @return 结果
- */
- public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-
- /**
- * 删除${functionName}信息
- *
- * @param ${pkColumn.javaField} ${functionName}主键
- * @return 结果
- */
- public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
}
diff --git a/base-generator/src/main/resources/vm/java/serviceImpl.java.vm b/base-generator/src/main/resources/vm/java/serviceImpl.java.vm
index 5630ba7..0109183 100644
--- a/base-generator/src/main/resources/vm/java/serviceImpl.java.vm
+++ b/base-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -1,195 +1,59 @@
package ${packageName}.service.impl;
import java.util.List;
-import com.agri.common.annotation.TenantScope;
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
-import com.agri.common.utils.DateUtils;
-#break
-#end
-#end
-#foreach ($column in $columns)
-#if($column.javaField == 'createBy' || $column.javaField == 'updateBy')
-import com.agri.common.utils.SecurityUtils;
-#break
-#end
-#end
+ #if($table.tree)
+ import java.util.ArrayList;
+ import com.agri.common.core.domain.Ztree;
+ #end
+ #foreach ($column in $columns)
+ #if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
+ #break
+ #end
+ #end
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-#if($table.sub)
-import java.util.ArrayList;
-import com.agri.common.utils.StringUtils;
-import org.springframework.transaction.annotation.Transactional;
-import ${packageName}.domain.${subClassName};
-#end
+ #if($table.sub)
+ import java.util.ArrayList;
+ import com.agri.common.utils.StringUtils;
+ import org.springframework.transaction.annotation.Transactional;
+ import ${entityPrefix}.${subClassName};
+ #end
import ${packageName}.mapper.${ClassName}Mapper;
-import ${packageName}.domain.${ClassName};
+import ${entityPrefix}.${ClassName};
import ${packageName}.service.I${ClassName}Service;
+import com.agri.common.service.impl.BaseServiceImpl;
+import com.agri.common.enums.ExportEnum;
/**
* ${functionName}Service业务层处理
- *
+ *
* @author ${author}
- * @date ${datetime}
+ * @since ${datetime}
*/
@Service
-public class ${ClassName}ServiceImpl implements I${ClassName}Service
-{
+public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}> implements I${ClassName}Service {
+
@Autowired
private ${ClassName}Mapper ${className}Mapper;
- /**
- * 查询${functionName}
- *
- * @param ${pkColumn.javaField} ${functionName}主键
- * @return ${functionName}
- */
- @Override
- public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
- {
- return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
- }
+ // @Autowired
+ // private IExportService exportService;
/**
- * 查询${functionName}列表
- *
- * @param ${className} ${functionName}
- * @return ${functionName}
+ * 导出${functionName}数据列表
+ * @param list 数据列表
+ * @param sourceType 1-总后台 2-集货中心 3-基地供应商后台
*/
@Override
- @TenantScope
- public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
- {
- return ${className}Mapper.select${ClassName}List(${className});
- }
-
- /**
- * 新增${functionName}
- *
- * @param ${className} ${functionName}
- * @return 结果
- */
-#if($table.sub)
- @Transactional
-#end
- @Override
- public int insert${ClassName}(${ClassName} ${className})
- {
-#foreach ($column in $columns)
- #if($column.javaField == 'createBy')
- ${className}.setCreateBy(SecurityUtils.getUserId().toString());
- #end
-#if($column.javaField == 'createTime')
- ${className}.setCreateTime(DateUtils.getNowDate());
-#end
- #if($column.javaField == 'tenantId')
- ${className}.setTenantId(SecurityUtils.getTenantId());
- #end
- #if($column.javaField == 'baseId')
- ${className}.setBaseId(SecurityUtils.getBaseId());
- #end
- #if($column.javaField == 'deptId')
- ${className}.setDeptId(SecurityUtils.getDeptId());
- #end
- #if($column.javaField == 'userId')
- ${className}.setUserId(SecurityUtils.getUserId());
- #end
-#end
-#if($table.sub)
- int rows = ${className}Mapper.insert${ClassName}(${className});
- insert${subClassName}(${className});
- return rows;
-#else
- return ${className}Mapper.insert${ClassName}(${className});
-#end
- }
-
- /**
- * 修改${functionName}
- *
- * @param ${className} ${functionName}
- * @return 结果
- */
-#if($table.sub)
- @Transactional
-#end
- @Override
- public int update${ClassName}(${ClassName} ${className})
- {
-#foreach ($column in $columns)
- #if($column.javaField == 'updateBy')
- ${className}.setUpdateBy(SecurityUtils.getUserId().toString());
- #end
-#if($column.javaField == 'updateTime')
- ${className}.setUpdateTime(DateUtils.getNowDate());
-#end
-#end
-#if($table.sub)
- ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
- insert${subClassName}(${className});
-#end
- return ${className}Mapper.update${ClassName}(${className});
- }
-
- /**
- * 批量删除${functionName}
- *
- * @param ${pkColumn.javaField}s 需要删除的${functionName}主键
- * @return 结果
- */
-#if($table.sub)
- @Transactional
-#end
- @Override
- public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
- {
-#if($table.sub)
- ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
-#end
- return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
- }
-
- /**
- * 删除${functionName}信息
- *
- * @param ${pkColumn.javaField} ${functionName}主键
- * @return 结果
- */
-#if($table.sub)
- @Transactional
-#end
- @Override
- public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
- {
-#if($table.sub)
- ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
-#end
- return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
- }
-#if($table.sub)
-
- /**
- * 新增${subTable.functionName}信息
- *
- * @param ${className} ${functionName}对象
- */
- public void insert${subClassName}(${ClassName} ${className})
- {
- List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
- ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
- if (StringUtils.isNotNull(${subclassName}List))
- {
- List<${subClassName}> list = new ArrayList<${subClassName}>();
- for (${subClassName} ${subclassName} : ${subclassName}List)
- {
- ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
- list.add(${subclassName});
- }
- if (list.size() > 0)
- {
- ${className}Mapper.batch${subClassName}(list);
- }
+ public void export${ClassName}Excel(List<${ClassName}> list, Integer sourceType) {
+ /*if (list == null || list.size() == 0) {
+ throw new BusinessException("没有要导出的记录");
}
+ List<${ClassName}ExportDto> exportList = ${ClassName}ExportDto.build(list);
+ ExcelUtil<${ClassName}ExportDto> util = new ExcelUtil<>(${ClassName}ExportDto.class);
+ String sheetName = ExportEnum.APP_USER_EXPORT.getDesc();
+ int code = ExportEnum.APP_USER_EXPORT.getCode()
+ Workbook workHook = util.getWorkHook(exportList, sheetName);
+ exportService.exportRecord(workHook, sheetName, code, sourceType);*/
}
-#end
}
diff --git a/base-generator/src/main/resources/vm/java/sub-domain.java.vm b/base-generator/src/main/resources/vm/java/sub-domain.java.vm
index c241677..dbf3c0b 100644
--- a/base-generator/src/main/resources/vm/java/sub-domain.java.vm
+++ b/base-generator/src/main/resources/vm/java/sub-domain.java.vm
@@ -1,13 +1,13 @@
-package ${packageName}.domain;
+package ${entityPrefix};
-#foreach ($import in $subImportList)
-import ${import};
-#end
+ #foreach ($import in $subImportList)
+ import ${import};
+ #end
import com.agri.common.annotation.Excel;
/**
* ${subTable.functionName}对象 ${subTableName}
- *
+ *
* @author ${author}
* @date ${datetime}
*/
@@ -15,59 +15,59 @@ public class ${subClassName} extends BaseEntity
{
private static final long serialVersionUID = 1L;
-#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
- /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
- @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
- @JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
- @Excel(name = "${comment}")
-#end
-#end
- private $column.javaType $column.javaField;
+ #foreach ($column in $subTable.columns)
+ #if(!$table.isSuperColumn($column.javaField))
+ /** $column.columnComment */
+ #if($column.list)
+ #set($parentheseIndex=$column.columnComment.indexOf("("))
+ #if($parentheseIndex != -1)
+ #set($comment=$column.columnComment.substring(0, $parentheseIndex))
+ #else
+ #set($comment=$column.columnComment)
+ #end
+ #if($parentheseIndex != -1)
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ #elseif($column.javaType == 'Date')
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+ #else
+ @Excel(name = "${comment}")
+ #end
+ #end
+ private $column.javaType $column.javaField;
-#end
-#end
-#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
- public void set${AttrName}($column.javaType $column.javaField)
- {
- this.$column.javaField = $column.javaField;
- }
+ #end
+ #end
+ #foreach ($column in $subTable.columns)
+ #if(!$table.isSuperColumn($column.javaField))
+ #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+ #set($AttrName=$column.javaField)
+ #else
+ #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ #end
+ public void set${AttrName}($column.javaType $column.javaField)
+ {
+ this.$column.javaField = $column.javaField;
+ }
- public $column.javaType get${AttrName}()
- {
- return $column.javaField;
- }
-#end
-#end
+ public $column.javaType get${AttrName}()
+ {
+ return $column.javaField;
+ }
+ #end
+ #end
@Override
public String toString() {
- return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $subTable.columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
- .append("${column.javaField}", get${AttrName}())
-#end
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ #foreach ($column in $subTable.columns)
+ #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+ #set($AttrName=$column.javaField)
+ #else
+ #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+ #end
+ .append("${column.javaField}", get${AttrName}())
+ #end
.toString();
- }
+}
}
diff --git a/base-generator/src/main/resources/vm/java/vo.java.vm b/base-generator/src/main/resources/vm/java/vo.java.vm
new file mode 100644
index 0000000..3ec6e5f
--- /dev/null
+++ b/base-generator/src/main/resources/vm/java/vo.java.vm
@@ -0,0 +1,46 @@
+package ${packageName}.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+ #if(${hasBigDecimal})
+ import java.math.BigDecimal;
+ #end
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * ${functionName}
+ *
+ * @author ${author}
+ * @date ${datetime}
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "${tableName}")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel(value = "${functionName}", description = "${functionName}")
+public class ${ClassName}Vo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+#foreach ($column in $columns)
+#if($column.javaField != "createBy" && $column.javaField != "createTime" && $column.javaField !=
+ "updateBy" && $column.javaField != "updateTime")
+ /** $column.columnComment */
+ #if($column.columnName == $pk.columnName)
+ #end
+ @ApiModelProperty(value = "$column.columnComment")
+ private $column.javaType ${column.javaField};
+
+#end
+#end
+}
diff --git a/base-generator/src/main/resources/vm/xml/mapper.xml.vm b/base-generator/src/main/resources/vm/xml/mapper.xml.vm
index 8d006e5..392eaf6 100644
--- a/base-generator/src/main/resources/vm/xml/mapper.xml.vm
+++ b/base-generator/src/main/resources/vm/xml/mapper.xml.vm
@@ -1,137 +1,230 @@
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-
-#foreach ($column in $columns)
-
-#end
-
-#if($table.sub)
-
-
+
+ #foreach ($column in $columns)
+
+ #end
+ #if($table.tree)
+
+ #end
+ #if($table.sub)
+
+
+
-
-#foreach ($column in $subTable.columns)
-
-#end
-
-#end
+
+ #foreach ($column in $subTable.columns)
+
+ #end
+
+ #end
-
- select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
+
+
+ #set($count_basecolumn = 1)
+ #foreach($column in $columns)
+ #if($count_basecolumn == 1)
+ ${column.columnName}
+ #else
+ ,${column.columnName}
+ #end
+ #set( $count_basecolumn = $count_basecolumn + 1 )
+ #end
+
-
\ No newline at end of file
+
+ delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
+
+
+
+ insert into ${subTableName} (
+ #set($count2 = 1)
+ #foreach($column in $columns)
+ #if($count2 == 1)
+ ${column.columnName}
+ #else
+ ,${column.columnName}
+ #end
+ #set( $count2 = $count2 + 1 )
+ #end
+ )
+ values (
+
+ #set($count3 = 1)
+ #foreach($column in $columns)
+ #if($count3 == 1)
+ #{item.$column.javaField}
+ #else
+ ,#{item.$column.javaField}
+ #end
+ #set( $count3 = $count3 + 1 )
+ #end
+
+ )
+
+ #end
+