GenTableServiceImpl.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647
  1. package com.boman.gen.service;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.io.StringWriter;
  6. import java.util.LinkedHashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.stream.Collectors;
  10. import java.util.zip.ZipEntry;
  11. import java.util.zip.ZipOutputStream;
  12. import com.boman.common.core.constant.UserConstants;
  13. import com.boman.common.core.utils.DateUtils;
  14. import com.boman.common.core.web.domain.AjaxResult;
  15. import com.boman.gen.domain.TableSql;
  16. import com.boman.system.api.RemoteSysMenuService;
  17. import com.boman.system.api.domain.SysMenu;
  18. import org.apache.commons.io.IOUtils;
  19. import org.apache.velocity.Template;
  20. import org.apache.velocity.VelocityContext;
  21. import org.apache.velocity.app.Velocity;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import com.alibaba.fastjson.JSON;
  28. import com.alibaba.fastjson.JSONObject;
  29. import com.boman.common.core.constant.Constants;
  30. import com.boman.common.core.constant.GenConstants;
  31. import com.boman.common.core.exception.CustomException;
  32. import com.boman.common.core.text.CharsetKit;
  33. import com.boman.common.core.utils.SecurityUtils;
  34. import com.boman.common.core.utils.StringUtils;
  35. import com.boman.common.core.utils.file.FileUtils;
  36. import com.boman.gen.domain.GenTable;
  37. import com.boman.gen.domain.GenTableColumn;
  38. import com.boman.gen.mapper.GenTableColumnMapper;
  39. import com.boman.gen.mapper.GenTableMapper;
  40. import com.boman.gen.util.GenUtils;
  41. import com.boman.gen.util.VelocityInitializer;
  42. import com.boman.gen.util.VelocityUtils;
  43. /**
  44. * 业务 服务层实现
  45. *
  46. * @author ruoyi
  47. */
  48. @Service
  49. public class GenTableServiceImpl implements IGenTableService {
  50. private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
  51. @Autowired
  52. private GenTableMapper genTableMapper;
  53. @Autowired
  54. private GenTableColumnMapper genTableColumnMapper;
  55. @Autowired
  56. private RemoteSysMenuService remoteSysMenuService;
  57. @Autowired
  58. private TableSqlServiceImpl tableSqlService;
  59. /**
  60. * 查询业务信息
  61. *
  62. * @param id 业务ID
  63. * @return 业务信息
  64. */
  65. @Override
  66. public GenTable selectGenTableById(Long id) {
  67. GenTable genTable = genTableMapper.selectGenTableById(id);
  68. Long tablePrimaryKey = genTable.getTablePrimaryKey();
  69. Long akColumn = genTable.getAkColumn();
  70. Long dkColumn = genTable.getDkColumn();
  71. List<GenTableColumn> columns = genTable.getColumns();
  72. int index = 0;
  73. for (GenTableColumn column : columns) {
  74. Long columnId = column.getColumnId();
  75. if (tablePrimaryKey != null && tablePrimaryKey.equals(columnId)) {
  76. genTable.setTablePrimaryKeyName(column.getColumnName());
  77. index++;
  78. }else if(akColumn != null && akColumn.equals(columnId)){
  79. genTable.setAkColumnName(column.getColumnName());
  80. index++;
  81. }else if(dkColumn != null && dkColumn.equals(columnId)){
  82. genTable.setDkColumnName(column.getColumnName());
  83. index++;
  84. }
  85. if (index == 3) {
  86. break;
  87. }
  88. }
  89. setTableFromOptions(genTable);
  90. return genTable;
  91. }
  92. @Override
  93. public GenTable getByTableId(Long id) {
  94. return genTableMapper.selectGenTableById(id);
  95. }
  96. /**
  97. * 查询业务列表
  98. *
  99. * @param genTable 业务信息
  100. * @return 业务集合
  101. */
  102. @Override
  103. public List<GenTable> selectGenTableList(GenTable genTable) {
  104. List<GenTable> genTables = genTableMapper.selectGenTableList(genTable);
  105. return genTables;
  106. }
  107. /**
  108. * 查询据库列表
  109. *
  110. * @param genTable 业务信息
  111. * @return 数据库表集合
  112. */
  113. @Override
  114. public List<GenTable> selectDbTableList(GenTable genTable) {
  115. return genTableMapper.selectDbTableList(genTable);
  116. }
  117. /**
  118. * 查询据库列表
  119. *
  120. * @param tableNames 表名称组
  121. * @return 数据库表集合
  122. */
  123. @Override
  124. public List<GenTable> selectDbTableListByNames(String[] tableNames) {
  125. return genTableMapper.selectDbTableListByNames(tableNames);
  126. }
  127. /**
  128. * 查询表名称业务信息
  129. *
  130. * @param tableName 表名称
  131. * @return 业务信息
  132. */
  133. @Override
  134. public GenTable selectGenTableByName(String tableName) {
  135. return genTableMapper.selectGenTableByName(tableName);
  136. }
  137. /**
  138. * 查询所有表信息
  139. *
  140. * @return 表信息集合
  141. */
  142. @Override
  143. public List<GenTable> selectGenTableAll() {
  144. return genTableMapper.selectGenTableAll();
  145. }
  146. /**
  147. * 修改业务
  148. *
  149. * @param genTable 业务信息
  150. * @return 结果
  151. */
  152. @Override
  153. @Transactional
  154. public void updateGenTable(GenTable genTable) {
  155. String options = JSON.toJSONString(genTable.getParams());
  156. genTable.setOptions(options);
  157. int row = genTableMapper.updateGenTable(genTable);
  158. if (row > 0) {
  159. for (GenTableColumn cenTableColumn : genTable.getColumns()) {
  160. genTableColumnMapper.updateGenTableColumn(cenTableColumn);
  161. }
  162. }
  163. }
  164. /**
  165. * 删除业务对象
  166. *
  167. * @param tableIds 需要删除的数据ID
  168. * @return 结果
  169. */
  170. @Override
  171. @Transactional
  172. public void deleteGenTableByIds(Long[] tableIds) {
  173. genTableMapper.deleteGenTableByIds(tableIds);
  174. genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
  175. }
  176. /**
  177. * 导入表结构
  178. *
  179. * @param tableList 导入表列表
  180. */
  181. @Override
  182. @Transactional
  183. public void importGenTable(List<GenTable> tableList) {
  184. String operName = SecurityUtils.getUsername();
  185. try {
  186. for (GenTable table : tableList) {
  187. String tableName = table.getTableName();
  188. GenUtils.initTable(table, operName);
  189. int row = genTableMapper.insertGenTable(table);
  190. if (row > 0) {
  191. // 保存列信息
  192. List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
  193. for (GenTableColumn column : genTableColumns) {
  194. GenUtils.initColumnField(column, table);
  195. genTableColumnMapper.insertGenTableColumn(column);
  196. }
  197. }
  198. }
  199. } catch (Exception e) {
  200. throw new CustomException("导入失败:" + e.getMessage());
  201. }
  202. }
  203. /**
  204. * 预览代码
  205. *
  206. * @param tableId 表编号
  207. * @return 预览数据列表
  208. */
  209. @Override
  210. public Map<String, String> previewCode(Long tableId) {
  211. Map<String, String> dataMap = new LinkedHashMap<>();
  212. // 查询表信息
  213. GenTable table = genTableMapper.selectGenTableById(tableId);
  214. // 设置主子表信息
  215. setSubTable(table);
  216. // 设置主键列信息
  217. setPkColumn(table);
  218. VelocityInitializer.initVelocity();
  219. VelocityContext context = VelocityUtils.prepareContext(table);
  220. // 获取模板列表
  221. List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
  222. for (String template : templates) {
  223. // 渲染模板
  224. StringWriter sw = new StringWriter();
  225. Template tpl = Velocity.getTemplate(template, Constants.UTF8);
  226. tpl.merge(context, sw);
  227. dataMap.put(template, sw.toString());
  228. }
  229. return dataMap;
  230. }
  231. /**
  232. * 生成代码(下载方式)
  233. *
  234. * @param tableName 表名称
  235. * @return 数据
  236. */
  237. @Override
  238. public byte[] downloadCode(String tableName) {
  239. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  240. ZipOutputStream zip = new ZipOutputStream(outputStream);
  241. generatorCode(tableName, zip);
  242. IOUtils.closeQuietly(zip);
  243. return outputStream.toByteArray();
  244. }
  245. /**
  246. * 生成代码(自定义路径)
  247. *
  248. * @param tableName 表名称
  249. */
  250. @Override
  251. public void generatorCode(String tableName) {
  252. // 查询表信息
  253. GenTable table = genTableMapper.selectGenTableByName(tableName);
  254. // 设置主子表信息
  255. setSubTable(table);
  256. // 设置主键列信息
  257. setPkColumn(table);
  258. VelocityInitializer.initVelocity();
  259. VelocityContext context = VelocityUtils.prepareContext(table);
  260. // 获取模板列表
  261. List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
  262. for (String template : templates) {
  263. if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
  264. // 渲染模板
  265. StringWriter sw = new StringWriter();
  266. Template tpl = Velocity.getTemplate(template, Constants.UTF8);
  267. tpl.merge(context, sw);
  268. try {
  269. String path = getGenPath(table, template);
  270. FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
  271. } catch (IOException e) {
  272. throw new CustomException("渲染模板失败,表名:" + table.getTableName());
  273. }
  274. }
  275. }
  276. }
  277. /**
  278. * 同步数据库
  279. *
  280. * @param tableName 表名称
  281. */
  282. @Override
  283. @Transactional(rollbackFor = Exception.class)
  284. public void synchDb(String tableName) {
  285. GenTable table = genTableMapper.selectGenTableByName(tableName);
  286. //获取表字段集合
  287. List<GenTableColumn> tableColumns = table.getColumns();
  288. //获取列名称集合
  289. List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
  290. //根据表名称查询原列信息
  291. List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
  292. if (StringUtils.isEmpty(dbTableColumns)) {
  293. throw new CustomException("同步数据失败,原表结构不存在");
  294. }
  295. //获取原表列名称集合
  296. List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
  297. dbTableColumns.forEach(column -> {
  298. if (!tableColumnNames.contains(column.getColumnName())) {
  299. GenUtils.initColumnField(column, table);
  300. genTableColumnMapper.insertGenTableColumn(column);
  301. }
  302. });
  303. List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
  304. if (StringUtils.isNotEmpty(delColumns)) {
  305. genTableColumnMapper.deleteGenTableColumns(delColumns);
  306. }
  307. }
  308. /**
  309. * 批量生成代码(下载方式)
  310. *
  311. * @param tableNames 表数组
  312. * @return 数据
  313. */
  314. @Override
  315. public byte[] downloadCode(String[] tableNames) {
  316. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  317. ZipOutputStream zip = new ZipOutputStream(outputStream);
  318. for (String tableName : tableNames) {
  319. generatorCode(tableName, zip);
  320. }
  321. IOUtils.closeQuietly(zip);
  322. return outputStream.toByteArray();
  323. }
  324. /**
  325. * 查询表信息并生成代码
  326. */
  327. private void generatorCode(String tableName, ZipOutputStream zip) {
  328. // 查询表信息
  329. GenTable table = genTableMapper.selectGenTableByName(tableName);
  330. // 设置主子表信息
  331. setSubTable(table);
  332. // 设置主键列信息
  333. setPkColumn(table);
  334. VelocityInitializer.initVelocity();
  335. VelocityContext context = VelocityUtils.prepareContext(table);
  336. // 获取模板列表
  337. List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
  338. for (String template : templates) {
  339. // 渲染模板
  340. StringWriter sw = new StringWriter();
  341. Template tpl = Velocity.getTemplate(template, Constants.UTF8);
  342. tpl.merge(context, sw);
  343. try {
  344. // 添加到zip
  345. zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
  346. IOUtils.write(sw.toString(), zip, Constants.UTF8);
  347. IOUtils.closeQuietly(sw);
  348. zip.flush();
  349. zip.closeEntry();
  350. } catch (IOException e) {
  351. log.error("渲染模板失败,表名:" + table.getTableName(), e);
  352. }
  353. }
  354. }
  355. /**
  356. * 修改保存参数校验
  357. *
  358. * @param genTable 业务信息
  359. */
  360. @Override
  361. public void validateEdit(GenTable genTable) {
  362. if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) {
  363. String options = JSON.toJSONString(genTable.getParams());
  364. JSONObject paramsObj = JSONObject.parseObject(options);
  365. if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) {
  366. throw new CustomException("树编码字段不能为空");
  367. } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) {
  368. throw new CustomException("树父编码字段不能为空");
  369. } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) {
  370. throw new CustomException("树名称字段不能为空");
  371. } else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) {
  372. if (StringUtils.isEmpty(genTable.getSubTableName())) {
  373. throw new CustomException("关联子表的表名不能为空");
  374. } else if (StringUtils.isEmpty(genTable.getSubTableFkName())) {
  375. throw new CustomException("子表关联的外键名不能为空");
  376. }
  377. }
  378. }
  379. }
  380. /**
  381. * 代码生成业务表新增
  382. * 注意解决事务问题
  383. *
  384. * @param genTable
  385. * @return
  386. */
  387. @Override
  388. public AjaxResult insertGenTable(GenTable genTable) {
  389. //新增表成功的时候,新增字段公共字段
  390. int i = genTableMapper.insertGenTable(genTable);
  391. if (i > 0) {
  392. Long id = insertCommonColumn(genTable.getTableId());
  393. if (id != -1) {
  394. genTable.setTablePrimaryKey(id);
  395. genTableMapper.updateGenTable(genTable);
  396. }
  397. //判断是否是菜单
  398. isMenu(genTable);
  399. //新建表时新增建表语句
  400. TableSql tableSql = new TableSql();
  401. tableSql.setTableId(genTable.getTableId());
  402. tableSqlService.insertTableSql(tableSql);
  403. return AjaxResult.success();
  404. }
  405. return AjaxResult.error();
  406. }
  407. /**
  408. * 新建表时新增对应公共字段
  409. *
  410. * @param tableId
  411. */
  412. public Long insertCommonColumn(Long tableId) {
  413. int num = 1000;
  414. GenTableColumn genTableColumnLog = new GenTableColumn();
  415. GenTableColumn genTableColumnBaseInfo = new GenTableColumn();
  416. genTableColumnLog.setTableId(tableId);
  417. genTableColumnLog.setColumnName("log_info");
  418. genTableColumnLog.setColumnComment("日志信息");
  419. genTableColumnLog.setColumnType("varchar(255)");
  420. genTableColumnLog.setIsPk("0");
  421. genTableColumnLog.setIsIncrement("0");
  422. genTableColumnLog.setIsInsert("1");
  423. genTableColumnLog.setQueryType("LIKE");
  424. genTableColumnLog.setHtmlType("input");
  425. genTableColumnLog.setSort(num);
  426. genTableColumnLog.setCreateBy("admin");
  427. genTableColumnLog.setCreateTime(DateUtils.getNowDate());
  428. genTableColumnMapper.insertGenTableColumn(genTableColumnLog);
  429. genTableColumnBaseInfo.setTableId(tableId);
  430. genTableColumnBaseInfo.setColumnName("base_info");
  431. genTableColumnBaseInfo.setColumnComment("基本信息");
  432. genTableColumnBaseInfo.setColumnType("varchar(255)");
  433. genTableColumnBaseInfo.setIsPk("0");
  434. genTableColumnBaseInfo.setIsIncrement("0");
  435. genTableColumnBaseInfo.setIsInsert("1");
  436. genTableColumnBaseInfo.setQueryType("LIKE");
  437. genTableColumnBaseInfo.setHtmlType("input");
  438. genTableColumnBaseInfo.setSort(20);
  439. genTableColumnBaseInfo.setCreateBy("admin");
  440. genTableColumnBaseInfo.setCreateTime(DateUtils.getNowDate());
  441. genTableColumnMapper.insertGenTableColumn(genTableColumnBaseInfo);
  442. Long columnId = -1L;
  443. String[] columnName = new String[]{"id", "create_by", "create_time", "update_by", "update_time", "is_del"};
  444. String[] columnComment = new String[]{"编号", "创建者", "创建时间", "更新者", "更新时间", "是否删除"};
  445. String[] columnType = new String[]{"bigint(20)", "varchar(64)", "datetime", "varchar(64)", "datetime", "char(1)"};
  446. String[] htmlType = new String[]{"input", "input", "datetime", "input", "datetime", "select"};
  447. for (int i = 0; i < columnName.length; i++) {
  448. GenTableColumn genTableColumn = new GenTableColumn();
  449. genTableColumn.setTableId(tableId);
  450. genTableColumn.setColumnName(columnName[i]);
  451. genTableColumn.setColumnComment(columnComment[i]);
  452. genTableColumn.setColumnType(columnType[i]);
  453. genTableColumn.setIsPk("0");
  454. genTableColumn.setIsIncrement("0");
  455. genTableColumn.setIsInsert("1");
  456. genTableColumn.setQueryType("EQ");
  457. genTableColumn.setHtmlType(htmlType[i]);
  458. genTableColumn.setSort(num + 1);
  459. genTableColumn.setCreateBy("admin");
  460. genTableColumn.setCreateTime(DateUtils.getNowDate());
  461. genTableColumn.setHrParentId(genTableColumnBaseInfo.getColumnId());
  462. genTableColumn.setMask("000000");
  463. if (i == 0) {
  464. genTableColumn.setSort(1);
  465. genTableColumn.setIsIncrement("1");
  466. genTableColumn.setHrParentId(genTableColumnLog.getColumnId());
  467. }
  468. genTableColumnMapper.insertGenTableColumn(genTableColumn);
  469. //获得id字段的id
  470. if (i == 0) {
  471. columnId = genTableColumn.getColumnId();
  472. }
  473. }
  474. return columnId;
  475. }
  476. /**
  477. * 判断是否是菜单
  478. *
  479. * @param genTable
  480. */
  481. public void isMenu(GenTable genTable) {
  482. String isMenu = genTable.getIsMenu();
  483. if (StringUtils.isNotBlank(isMenu) && isMenu.equals(UserConstants.ISMENU)) {
  484. //先生成主菜单
  485. SysMenu sysMenu = new SysMenu();
  486. //表描述当菜单名称
  487. sysMenu.setMenuName(genTable.getTableComment());
  488. sysMenu.setParentId(0L);
  489. sysMenu.setOrderNum("1");
  490. //路由地址
  491. sysMenu.setPath(genTable.getBusinessName());
  492. sysMenu.setComponent(genTable.getModuleName() + "/" + genTable.getTableComment() + "/index");
  493. sysMenu.setMenuType("C");
  494. sysMenu.setIcon("system");
  495. sysMenu.setCreateBy(SecurityUtils.getUsername());
  496. sysMenu.setSysTableName(genTable.getTableName());
  497. sysMenu.setStatus("1");
  498. remoteSysMenuService.add(sysMenu);
  499. //是菜单,生成crud按钮
  500. for (int i = 0; i < Constants.MENU_NAME.length; i++) {
  501. String[] menuName = Constants.MENU_NAME;
  502. SysMenu menu = new SysMenu();
  503. menu.setParentId(sysMenu.getId());
  504. menu.setMenuName(menuName[i]);
  505. menu.setOrderNum(String.valueOf(i + 1));
  506. menu.setMenuType("F");
  507. menu.setIcon("#");
  508. sysMenu.setCreateBy(SecurityUtils.getUsername());
  509. remoteSysMenuService.add(menu);
  510. }
  511. }
  512. }
  513. /**
  514. * 设置主键列信息
  515. *
  516. * @param table 业务表信息
  517. */
  518. public void setPkColumn(GenTable table) {
  519. for (GenTableColumn column : table.getColumns()) {
  520. if (column.isPk()) {
  521. table.setPkColumn(column);
  522. break;
  523. }
  524. }
  525. if (StringUtils.isNull(table.getPkColumn())) {
  526. table.setPkColumn(table.getColumns().get(0));
  527. }
  528. if (GenConstants.TPL_SUB.equals(table.getTplCategory())) {
  529. for (GenTableColumn column : table.getSubTable().getColumns()) {
  530. if (column.isPk()) {
  531. table.getSubTable().setPkColumn(column);
  532. break;
  533. }
  534. }
  535. if (StringUtils.isNull(table.getSubTable().getPkColumn())) {
  536. table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0));
  537. }
  538. }
  539. }
  540. /**
  541. * 设置主子表信息
  542. *
  543. * @param table 业务表信息
  544. */
  545. public void setSubTable(GenTable table) {
  546. String subTableName = table.getSubTableName();
  547. if (StringUtils.isNotEmpty(subTableName)) {
  548. table.setSubTable(genTableMapper.selectGenTableByName(subTableName));
  549. }
  550. }
  551. /**
  552. * 设置代码生成其他选项值
  553. *
  554. * @param genTable 设置后的生成对象
  555. */
  556. public void setTableFromOptions(GenTable genTable) {
  557. JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions());
  558. if (StringUtils.isNotNull(paramsObj)) {
  559. String treeCode = paramsObj.getString(GenConstants.TREE_CODE);
  560. String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE);
  561. String treeName = paramsObj.getString(GenConstants.TREE_NAME);
  562. String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID);
  563. String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME);
  564. genTable.setTreeCode(treeCode);
  565. genTable.setTreeParentCode(treeParentCode);
  566. genTable.setTreeName(treeName);
  567. genTable.setParentMenuId(parentMenuId);
  568. genTable.setParentMenuName(parentMenuName);
  569. }
  570. }
  571. /**
  572. * 获取代码生成地址
  573. *
  574. * @param table 业务表信息
  575. * @param template 模板文件路径
  576. * @return 生成地址
  577. */
  578. public static String getGenPath(GenTable table, String template) {
  579. String genPath = table.getGenPath();
  580. if (StringUtils.equals(genPath, "/")) {
  581. return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
  582. }
  583. return genPath + File.separator + VelocityUtils.getFileName(template, table);
  584. }
  585. /**
  586. * 校验表名称是否存在
  587. *
  588. * @param genTable
  589. * @return
  590. */
  591. @Override
  592. public String checkTableNameUnique(GenTable genTable) {
  593. List<GenTable> genTables = genTableMapper.selectGenTableList(genTable);
  594. if (genTables.size() > 0) {
  595. return UserConstants.NOT_UNIQUE;
  596. }
  597. return UserConstants.UNIQUE;
  598. }
  599. }