123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- package com.boman.gen.service;
- import com.boman.common.core.constant.UserConstants;
- import com.boman.common.core.utils.DateUtils;
- import com.boman.common.core.utils.SecurityUtils;
- import com.boman.common.core.utils.StringUtils;
- import com.boman.common.core.utils.obj.ObjectUtils;
- import com.boman.common.core.web.domain.AjaxResult;
- import com.boman.gen.domain.GenTable;
- import com.boman.gen.domain.GenTableColumn;
- import com.boman.gen.domain.TableSql;
- import com.boman.gen.mapper.GenTableColumnMapper;
- import com.boman.gen.mapper.GenTableMapper;
- import com.boman.gen.mapper.TableSqlMapper;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.DataAccessException;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.stereotype.Service;
- import java.util.List;
- /**
- * @author tjf
- * @Date: 2021/04/14/10:43
- */
- @Service
- public class TableSqlServiceImpl implements ITableSqlService {
- @Autowired
- private TableSqlMapper tableSqlMapper;
- @Autowired
- private GenTableColumnMapper genTableColumnMapper;
- @Autowired
- private GenTableMapper genTableMapper;
- @Autowired
- private JdbcTemplate jdbcTemplate;
- /**
- * 创建sql语句
- *
- * @param tableSql
- * @return
- */
- @Override
- public AjaxResult insertTableSql(TableSql tableSql) {
- Long tableId = tableSql.getTableId();
- if (tableId == null) {
- return AjaxResult.error("缺少表id");
- }
- GenTable genTable = genTableMapper.selectGenTableById(tableSql.getTableId());
- String tableName = genTable.getTableName();
- tableSql.setCreateSql(createSql(tableSql, tableName));
- tableSql.setCreateBy(SecurityUtils.getUsername());
- tableSql.setCreateLog(DateUtils.getTime() + " " + SecurityUtils.getUsername() + " 创建表 " + tableName);
- tableSqlMapper.insertTableSql(tableSql);
- return AjaxResult.success();
- }
- /**
- * 刷新建表语句
- *
- * @param tableSql
- * @return
- */
- @Override
- public AjaxResult reloadTableSql(TableSql tableSql) {
- GenTable genTable = genTableMapper.selectGenTableById(tableSql.getTableId());
- String tableName = genTable.getTableName();
- tableSql.setCreateSql(createSql(tableSql, tableName));
- String createLog = tableSql.getCreateLog();
- StringBuffer sb = new StringBuffer(createLog);
- sb.append("\r\n").append(DateUtils.getTime()).append(" ").append(SecurityUtils.getUsername()).append("刷新创建语句");
- tableSql.setCreateLog(sb.toString());
- tableSql.setUpdateBy(SecurityUtils.getUsername());
- tableSqlMapper.updateTableSql(tableSql);
- return AjaxResult.success();
- }
- /**
- * 执行建表语句
- *
- * @param tableSql
- * @return
- */
- @Override
- public AjaxResult implementSql(TableSql tableSql) {
- String createSql = tableSql.getCreateSql();
- GenTable genTable = genTableMapper.selectGenTableById(tableSql.getTableId());
- try {
- int i = tableSqlMapper.testExists(genTable.getTableName());
- if (i >= 0){
- return AjaxResult.error("当前表已存在");
- }
- } catch (DataAccessException e) {
- try {
- jdbcTemplate.execute(createSql);
- String createLog = tableSql.getCreateLog();
- StringBuffer sb = new StringBuffer(createLog);
- sb.append("\r\n").append(DateUtils.getTime()).append(" ").append(SecurityUtils.getUsername()).append(" 执行建表语句");
- tableSql.setCreateLog(sb.toString());
- tableSqlMapper.updateTableSql(tableSql);
- } catch (DataAccessException ex) {
- ex.printStackTrace();
- return AjaxResult.error("语句有误");
- }
- }
- return AjaxResult.success();
- }
- /**
- * 查询建表SQL
- *
- * @param id
- * @return
- */
- @Override
- public AjaxResult selectTableSqlByTableId(Long id) {
- TableSql tableSql = tableSqlMapper.selectTableSqlByTableId(id);
- return AjaxResult.success(tableSql);
- }
- /**
- * 删除建表语句
- * @param ids
- * @return
- */
- @Override
- public int deleteTableSqlByTableIds(Long[] ids) {
- return tableSqlMapper.deleteTableSqlByTableIds(ids);
- }
- /**
- * 生成建表语句
- *
- * @param tableSql
- * @param tableName
- * @return
- */
- private String createSql(TableSql tableSql, String tableName) {
- //根据表id查询所有字段
- List<GenTableColumn> genTableColumns = genTableColumnMapper.selectGenTableColumnListByTableId(tableSql.getTableId());
- //定义主键id
- String primaryKey = null;
- //拼接建表语句
- StringBuffer sb = new StringBuffer("create table if not exists ");
- sb.append(tableName).append(" (\r\n");
- for (GenTableColumn genTableColumn : genTableColumns) {
- if (!"HR".equals(genTableColumn.getHtmlType())){
- sb.append(genTableColumn.getColumnName()).append(" ").append(genTableColumn.getColumnType());
- sb = genTableColumn.getDefaultValue() == null ? sb.append(" DEFAULT NULL COMMENT '") : sb.append(" DEFAULT '").append(genTableColumn.getDefaultValue()).append("' COMMENT '");
- sb.append(genTableColumn.getColumnComment()).append("'").append(",").append("\r\n");
- if (genTableColumn.getIsPk().equals(UserConstants.INCREMENT)) {
- primaryKey = genTableColumn.getColumnName();
- }
- }
- }
- if (StringUtils.isNotBlank(primaryKey)) {
- sb.append(" PRIMARY KEY (").append(primaryKey).append(" ) USING BTREE\r\n");
- }else {
- sb.replace(sb.lastIndexOf(","),sb.length(),"\r\n");
- }
- sb.append(") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='").append(tableName).append("';");
- return sb.toString();
- }
- }
|