GenTableServiceImpl.java 23 KB

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