Commit be4fe6cf authored by 赵啸非's avatar 赵啸非

编写系统代码生成模块

parent 33bf55da
......@@ -309,6 +309,63 @@ CREATE TABLE `mortals_xhx_valid_code` (
SET FOREIGN_KEY_CHECKS = 1;
-- ----------------------------
-- 代码生成业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_gentable`;
CREATE TABLE `mortals_xhx_gentable` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID,主键,自增长',
`tableName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '表名称',
`tableComment` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '表描述',
`subTableName` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '关联子表的表名',
`subTableFkName` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '子表关联的外键名',
`className` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '实体类名称',
`tplCategory` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT 'crud' COMMENT '使用的模板(crud单表操作 tree树表操作)',
`packageName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '生成包路径',
`moduleName` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '生成模块名',
`businessName` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '生成业务名',
`functionName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '生成功能名',
`functionAuthor` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '生成功能作者',
`genType` tinyint(1) DEFAULT '0' COMMENT '生成代码方式(0.zip压缩包 1.自定义路径)',
`genPath` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '/' COMMENT '生成路径(不填默认项目路径)',
`options` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '其它生成选项',
`remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '备注',
`updateTime` datetime(0) DEFAULT NULL COMMENT '变更时间',
`updateUser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '变更用户loginName',
`createTime` datetime(0) NOT NULL COMMENT '创建时间',
`createUser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建用户loginName',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='代码生成业务表';
-- ----------------------------
-- 代码生成业务表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_gentable_column`;
CREATE TABLE `mortals_xhx_gentable_column` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID,主键,自增长',
`tableId` bigint(20) NOT NULL COMMENT '所属表编号',
`columnName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '列名称',
`columnComment` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '列描述',
`columnType` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '列类型',
`javaType` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'JAVA类型',
`javaField` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'JAVA字段名',
`isPrimaryKey` tinyint(2) DEFAULT '0' COMMENT '是否pk(0否,1 是)',
`isIncrement` tinyint(2) DEFAULT '0' COMMENT '是否自增(0否,1 是)',
`isRequired` tinyint(2) DEFAULT '0' COMMENT '是否必填(0否,1 是)',
`isInsert` tinyint(2) DEFAULT '0' COMMENT '是否为插入字段(0否,1 是)',
`isEdit` tinyint(2) DEFAULT '0' COMMENT '是否编辑字段(0否,1 是)',
`isList` tinyint(2) DEFAULT '0' COMMENT '是否列表字段(0否,1 是)',
`isQuery` tinyint(2) DEFAULT '0' COMMENT '是否查询字段(0否,1 是)',
`htmlType` tinyint(2) DEFAULT '1' COMMENT '显示类型(1.文本框、2.文本域、3.下拉框、4.复选框、5.单选框、6.日期控件)',
`sort` int(11) DEFAULT NULL COMMENT '排序',
`updateTime` datetime(0) DEFAULT NULL COMMENT '变更时间',
`updateUser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '变更用户loginName',
`createTime` datetime(0) NOT NULL COMMENT '创建时间',
`createUser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建用户loginName',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='代码生成业务表字段';
INSERT INTO `mortals_xhx_param` VALUES (1000, '材料形式', 'materialProperty', NULL, '0', '纸质', 1, 4, 0, NULL, NULL, NULL, NULL);
......
......@@ -28,7 +28,9 @@ const router = new Router({
...restBuilder('param', 'system/param'), // 系统管理--参数管理
...restBuilder('task', 'system/task'), // 系统管理--任务管理
...restBuilder('area', 'system/area'), // 系统管理-区域管理
...restBuilder('gentable', 'system/gentable'), // 系统管理-代码生成
...restBuilder('gentable/column', 'system/gentable/column'), // 系统管理-代码生成-列信息
builder('gen/edit', 'system/gentable/editTable'),//站点
builder('site/list', 'system/site/index'),//站点
//工作流业务模块
...restBuilder('flowable/definition', 'flowable/definition'), // 流程定义类
......
package com.mortals.xhx.base.framework.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* 读取代码生成相关配置
*
* @author: zxfei
* @date: 2021/9/28 15:45
*/
@Component
@ConfigurationProperties(prefix = "gen")
@PropertySource(value = { "classpath:generator.yml" })
public class GenConfig
{
/** 作者 */
public static String author;
/** 生成包路径 */
public static String packageName;
/** 自动去除表前缀,默认是false */
public static boolean autoRemovePre;
/** 表前缀(类名不会包含表前缀) */
public static String tablePrefix;
public static String getAuthor()
{
return author;
}
@Value("${author}")
public void setAuthor(String author)
{
GenConfig.author = author;
}
public static String getPackageName()
{
return packageName;
}
@Value("${packageName}")
public void setPackageName(String packageName)
{
GenConfig.packageName = packageName;
}
public static boolean getAutoRemovePre()
{
return autoRemovePre;
}
@Value("${autoRemovePre}")
public void setAutoRemovePre(boolean autoRemovePre)
{
GenConfig.autoRemovePre = autoRemovePre;
}
public static String getTablePrefix()
{
return tablePrefix;
}
@Value("${tablePrefix}")
public void setTablePrefix(String tablePrefix)
{
GenConfig.tablePrefix = tablePrefix;
}
}
package com.mortals.xhx.base.system.gentable.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import java.util.List;
/**
* <p>Title: 代码生成业务表字段</p>
* <p>Description: GentableColumnDao DAO接口 </p>
* @author
* @version 1.0.0
*/
public interface GentableColumnDao extends ICRUDDao<GentableColumnEntity,Long> {
/**
* 根据表名称查询列信息
*
* @param tableName 表名称
* @return 列信息
*/
List<GentableColumnEntity> selectDbTableColumnsByName(String tableName);
}
package com.mortals.xhx.base.system.gentable.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.framework.model.ParamDto;
import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import java.util.List;
/**
* <p>Title: 代码生成业务表</p>
* <p>Description: GentableDao DAO接口 </p>
* @author
* @version 1.0.0
*/
public interface GentableDao extends ICRUDDao<GentableEntity,Long> {
/**
* 查询数据库表
* @param paramDto
* @return
*/
List<GentableEntity> selectDbTableList(ParamDto paramDto);
/**
* 查询所有表信息
*
* @return 表信息集合
*/
List<GentableEntity> selectGenTableAll();
/**
* 查询数据库表
* @param tableNames
* @return
*/
List<GentableEntity> selectDbTableListByNames(String[] tableNames);
}
package com.mortals.xhx.base.system.gentable.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.gentable.dao.GentableColumnDao;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>Title: 代码生成业务表字段</p>
* <p>Description: GentableColumnDaoImpl DAO接口 </p>
* @author
* @version 1.0.0
*/
@Repository("gentableColumnDao")
public class GentableColumnDaoImpl extends BaseCRUDDaoMybatis<GentableColumnEntity,Long> implements GentableColumnDao {
@Override
public List<GentableColumnEntity> selectDbTableColumnsByName(String tableName) {
return getSqlSession().selectList(getSqlId("selectDbTableColumnsByName"), tableName);
}
}
package com.mortals.xhx.base.system.gentable.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.framework.model.ParamDto;
import com.mortals.xhx.base.system.gentable.dao.GentableDao;
import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>Title: 代码生成业务表</p>
* <p>Description: GentableDaoImpl DAO接口 </p>
* @author
* @version 1.0.0
*/
@Repository("gentableDao")
public class GentableDaoImpl extends BaseCRUDDaoMybatis<GentableEntity,Long> implements GentableDao {
@Override
public List<GentableEntity> selectDbTableList(ParamDto paramDto) {
return getSqlSession().selectList(getSqlId("selectDbTableList"), paramDto);
}
@Override
public List<GentableEntity> selectGenTableAll() {
return getSqlSession().selectList(getSqlId("selectGenTableAll"));
}
@Override
public List<GentableEntity> selectDbTableListByNames(String[] tableNames) {
return getSqlSession().selectList(getSqlId("selectDbTableListByNames"), tableNames);
}
}
package com.mortals.xhx.base.system.gentable.model;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.common.utils.StringUtils;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* Description:Gentable
* date: 2021-9-29 9:35:30
*/
@Data
public class GentableEntityExt extends BaseEntityLong {
/**
* 主键信息
*/
private GentableColumnEntity pkColumn;
/**
* 子表信息
*/
private GentableEntity subTable;
/**
* 表列信息
*/
private List<GentableColumnEntity> columns;
}
\ No newline at end of file
package com.mortals.xhx.base.system.gentable.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import java.util.List;
/**
* <p>Title: 代码生成业务表字段</p>
* <p>Description: GentableColumnService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* @version 1.0.0
*/
public interface GentableColumnService extends ICRUDService<GentableColumnEntity,Long> {
/**
* 根据表名称查询列信息
*
* @param tableName 表名称
* @return 列信息
*/
List<GentableColumnEntity> selectDbTableColumnsByName(String tableName);
}
\ No newline at end of file
package com.mortals.xhx.base.system.gentable.service;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import com.mortals.xhx.base.system.gentable.model.GentableQuery;
import java.util.List;
/**
* <p>Title: 代码生成业务表</p>
* <p>Description: GentableService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* @version 1.0.0
*/
public interface GentableService extends ICRUDService<GentableEntity,Long> {
/**
* 查询据库列表
*
* @param query 业务信息
* @return 数据库表集合
*/
List<GentableEntity> selectDbTableList(GentableQuery query);
/**
* 查询据库列表
*
* @param tableNames 表名称组
* @return 数据库表集合
*/
List<GentableEntity> selectDbTableListByNames(String[] tableNames);
/**
* 查询所有表信息
*
* @return 表信息集合
*/
List<GentableEntity> selectGenTableAll();
/**
* 导入表结构
*
* @param tableList 导入表列表
*/
void importGenTable(List<GentableEntity> tableList, Context context);
/**
* 修改保存参数校验
*
* @param genTable 业务信息
*/
void validateEdit(GentableEntity genTable);
/**
* 生成代码(单表生成下载方式)
*
* @param tableName 表名称
* @return 数据
*/
byte[] downloadCode(String tableName);
}
\ No newline at end of file
package com.mortals.xhx.base.system.gentable.service.impl;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.base.system.gentable.dao.GentableColumnDao;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import com.mortals.xhx.base.system.gentable.service.GentableColumnService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>Title: 代码生成业务表字段</p>
* <p>Description: GentableColumnService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
*
* @version 1.0.0
*/
@Service("gentableColumnService")
public class GentableColumnServiceImpl extends AbstractCRUDServiceImpl<GentableColumnDao, GentableColumnEntity, Long> implements GentableColumnService {
@Override
public List<GentableColumnEntity> selectDbTableColumnsByName(String tableName) {
return this.dao.selectDbTableColumnsByName(tableName);
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.gentable.web;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import com.mortals.xhx.base.system.gentable.service.GentableColumnService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>Title: 代码生成业务表字段</p>
* <p>Description: GentableColumnController </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author zxfei
* @version 1.0.0
*/
@RestController
@RequestMapping("gentable/column")
public class GentableColumnController extends BaseCRUDJsonMappingController<GentableColumnService,GentableColumnForm, GentableColumnEntity,Long> {
public GentableColumnController(){
super.setFormClass(GentableColumnForm.class);
super.setModuleDesc("代码生成业务表字段");
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.gentable.web;
import com.mortals.framework.web.BaseCRUDFormLong;
import com.mortals.xhx.base.system.gentable.model.GentableColumnEntity;
import com.mortals.xhx.base.system.gentable.model.GentableColumnQuery;
/**
* <p>Title: 代码生成业务表字段</p>
* <p>Description: GentableColumnForm </p>
* @author
* @version 1.0.0
*/
public class GentableColumnForm extends BaseCRUDFormLong<GentableColumnEntity> {
private GentableColumnEntity entity = new GentableColumnEntity();
private GentableColumnQuery query = new GentableColumnQuery();
public GentableColumnForm(){
}
@Override
public GentableColumnEntity getEntity() {
return entity;
}
public void setGentableColumn(GentableColumnEntity entity) {
this.entity = entity;
}
@Override
public GentableColumnQuery getQuery() {
return query;
}
public void setQuery(GentableColumnQuery query) {
this.query = query;
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.gentable.web;
import com.mortals.framework.web.BaseCRUDFormLong;
import com.mortals.xhx.base.system.gentable.model.GentableEntity;
import com.mortals.xhx.base.system.gentable.model.GentableQuery;
/**
* <p>Title: 代码生成业务表</p>
* <p>Description: GentableForm </p>
* @author
* @version 1.0.0
*/
public class GentableForm extends BaseCRUDFormLong<GentableEntity> {
private GentableEntity entity = new GentableEntity();
private GentableQuery query = new GentableQuery();
public GentableForm(){
}
@Override
public GentableEntity getEntity() {
return entity;
}
public void setGentable(GentableEntity entity) {
this.entity = entity;
}
@Override
public GentableQuery getQuery() {
return query;
}
public void setQuery(GentableQuery query) {
this.query = query;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author: finegirl
* @date: 2021/7/16 11:50
* @description: 缓存服务方式
**/
public enum CacheServiceTypeEnum {
NORMAL_SERVICE(0, "无"),
CACHE_SERVICE(1, "静态缓存服务"),
CACHE_DYNAMIC_SERVICE(2, "动态缓存服务");
private int value;
private String desc;
private CacheServiceTypeEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static CacheServiceTypeEnum getByValue(int value) {
CacheServiceTypeEnum[] var1 = values();
int var2 = var1.length;
for(int var3 = 0; var3 < var2; ++var3) {
CacheServiceTypeEnum examStatus = var1[var3];
if (examStatus.getValue() == value) {
return examStatus;
}
}
return null;
}
public static Map<String, String> getEnumMap(int... eItem) {
Map<String, String> resultMap = new LinkedHashMap();
CacheServiceTypeEnum[] var2 = values();
int var3 = var2.length;
for(int var4 = 0; var4 < var3; ++var4) {
CacheServiceTypeEnum item = var2[var4];
try {
boolean hasE = false;
int[] var7 = eItem;
int var8 = eItem.length;
for(int var9 = 0; var9 < var8; ++var9) {
int e = var7[var9];
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception var11) {
}
}
return resultMap;
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment