From 2411eadd4ad4bef5c08c6ba2ea5898ea72136e29 Mon Sep 17 00:00:00 2001 From: kimi42345 <kimi42345@outlook.com> Date: 星期一, 02 三月 2020 11:13:35 +0800 Subject: [PATCH] add assebmle --- src/main/java/com/highdatas/mdm/controller/FileController.java | 115 src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java | 123 src/main/java/com/highdatas/mdm/service/ISysAssembleDbDetailService.java | 16 src/main/resources/application-prod.yml | 21 src/main/java/com/highdatas/mdm/mapper/xml/SysDbtypeMapper.xml | 13 src/main/java/com/highdatas/mdm/util/HttpUtils.java | 5 src/main/java/com/highdatas/mdm/controller/SysAssembleApiController.java | 9 src/main/java/com/highdatas/mdm/entity/SysAssembleParams.java | 137 + src/main/java/com/highdatas/mdm/controller/SettleController.java | 772 ++++++ src/main/java/com/highdatas/mdm/pojo/kettle/UnBigDataDataSourceInfo.java | 301 ++ src/main/resources/application-dev.yml | 21 src/main/java/com/highdatas/mdm/service/ISysDbtypeService.java | 16 src/main/java/com/highdatas/mdm/pojo/kettle/DataSourceInfo.java | 27 src/main/java/com/highdatas/mdm/pojo/kettle/KettleDBTrans.java | 72 src/main/java/com/highdatas/mdm/mapper/SysAssembleDbMapper.java | 16 src/main/resources/mapping/TableInfoMapper.xml | 21 src/main/java/com/highdatas/mdm/controller/SysAssembleDbDetailController.java | 9 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDetailServiceImpl.java | 20 src/main/java/com/highdatas/mdm/entity/SysAssemble.java | 271 ++ src/main/java/com/highdatas/mdm/pojo/SysAssembleRunStatus.java | 12 src/main/java/com/highdatas/mdm/entity/SysDbtype.java | 77 src/main/java/com/highdatas/mdm/service/impl/SysDbtypeServiceImpl.java | 20 src/main/java/com/highdatas/mdm/pojo/SysAssembleLogStatus.java | 12 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbDetailServiceImpl.java | 20 src/main/java/com/highdatas/mdm/util/DbUtils.java | 67 src/main/java/com/highdatas/mdm/controller/SysAssembleDbController.java | 195 + src/main/java/com/highdatas/mdm/service/ISysAssembleDbdriverService.java | 16 src/main/java/com/highdatas/mdm/mapper/SysAssembleDbDetailMapper.java | 16 src/main/java/com/highdatas/mdm/pojo/SysAssembleCheckType.java | 12 src/main/java/com/highdatas/mdm/job/XxlJobHandler.java | 47 src/main/java/com/highdatas/mdm/mapper/SysAssembleApiMapper.java | 16 src/main/java/com/highdatas/mdm/mapper/SysAssembleParamsMapper.java | 16 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleMapper.xml | 18 src/main/java/com/highdatas/mdm/entity/SysAssembleDb.java | 186 + src/main/java/com/highdatas/mdm/service/impl/SysAssembleCommonparamsServiceImpl.java | 20 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbFieldMapper.xml | 15 pom.xml | 174 + src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java | 8 src/main/java/com/highdatas/mdm/controller/MenuMappingController.java | 4 src/main/java/com/highdatas/mdm/mapper/SysAssembleMapper.java | 16 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbTableServiceImpl.java | 20 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDetailMapper.xml | 13 src/main/java/com/highdatas/mdm/pojo/DbAccessType.java | 12 src/main/java/com/highdatas/mdm/controller/SysDbtypeController.java | 48 src/main/java/com/highdatas/mdm/controller/SysAssembleRuleController.java | 55 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleCommonparamsMapper.xml | 17 src/main/java/com/highdatas/mdm/service/act/impl/TaskServiceImpl.java | 2 src/main/java/com/highdatas/mdm/controller/MasterDataController.java | 74 src/main/java/com/highdatas/mdm/service/ISysAssembleService.java | 23 src/main/java/com/highdatas/mdm/pojo/SysAssembleUpdateType.java | 12 src/main/java/com/highdatas/mdm/entity/SysAssembleCommonparams.java | 125 src/main/java/com/highdatas/mdm/service/ISysAssembleDbFieldService.java | 16 src/main/java/com/highdatas/mdm/controller/MaintainController.java | 2 src/main/java/com/highdatas/mdm/controller/AssembleController.java | 362 ++ src/main/java/com/highdatas/mdm/service/MasterDataService.java | 4 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbFieldServiceImpl.java | 20 src/main/java/com/highdatas/mdm/service/impl/SysAssembleApiServiceImpl.java | 20 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleRuleMapper.xml | 14 src/main/java/com/highdatas/mdm/entity/SysAssembleLog.java | 115 src/main/java/com/highdatas/mdm/pojo/kettle/TableColumn.java | 33 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java | 220 + src/main/resources/application.yml | 4 src/main/java/com/highdatas/mdm/entity/SysAssembleDbdriver.java | 86 src/main/java/com/highdatas/mdm/pojo/SysAssembleTableType.java | 12 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbMapper.xml | 22 src/main/resources/mapping/MenuMappingMapper.xml | 2 src/main/java/com/highdatas/mdm/entity/SysAssembleRule.java | 92 src/main/java/com/highdatas/mdm/entity/SysAssembleDbField.java | 102 src/main/java/com/highdatas/mdm/service/impl/SysAssembleParamsServiceImpl.java | 62 src/main/java/com/highdatas/mdm/service/impl/SysAssembleServiceImpl.java | 780 ++++++ src/main/java/com/highdatas/mdm/mapper/SysAssembleCommonparamsMapper.java | 16 src/main/java/com/highdatas/mdm/util/MpGenerator.java | 8 src/main/java/com/highdatas/mdm/entity/SysAssembleDetail.java | 79 src/main/java/com/highdatas/mdm/mapper/SysAssembleRuleMapper.java | 16 src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbdriverServiceImpl.java | 20 src/main/java/com/highdatas/mdm/service/ISysAssembleDetailService.java | 16 src/main/java/com/highdatas/mdm/controller/SysAssembleDbFieldController.java | 6 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbdriverMapper.xml | 13 src/main/java/com/highdatas/mdm/entity/SysAssembleDbDetail.java | 136 + src/main/java/com/highdatas/mdm/mapper/SysAssembleDbdriverMapper.java | 16 src/main/java/com/highdatas/mdm/service/ISysAssembleApiService.java | 16 src/main/java/com/highdatas/mdm/controller/SysFieldController.java | 24 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbDetailMapper.xml | 18 src/main/java/com/highdatas/mdm/service/ISysAssembleDbService.java | 27 src/main/java/com/highdatas/mdm/service/ISysAssembleCommonparamsService.java | 16 src/main/java/com/highdatas/mdm/mapper/SysDbtypeMapper.java | 16 src/main/java/com/highdatas/mdm/entity/SysMenu.java | 4 src/main/java/com/highdatas/mdm/mapper/SysAssembleDetailMapper.java | 16 src/main/java/com/highdatas/mdm/service/impl/SysAssembleRuleServiceImpl.java | 20 src/main/resources/lib/mysql-connector-java-5.1.46-bin.jar | 0 src/main/java/com/highdatas/mdm/service/impl/SysMenuServiceImpl.java | 29 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleApiMapper.xml | 17 src/main/java/com/highdatas/mdm/entity/SysAssembleDbTable.java | 192 + src/main/java/com/highdatas/mdm/controller/SysAssembleLogController.java | 21 src/main/java/com/highdatas/mdm/util/RedisClient.java | 78 src/main/java/com/highdatas/mdm/util/Constant.java | 43 src/main/java/com/highdatas/mdm/controller/SysAssembleParamsController.java | 86 src/main/java/com/highdatas/mdm/service/ISysAssembleRuleService.java | 16 src/main/java/com/highdatas/mdm/service/impl/SysAssembleLogServiceImpl.java | 20 src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java | 19 src/main/resources/bak/TaskServixceImpl.java | 465 +++ src/main/java/com/highdatas/mdm/mapper/SysAssembleDbTableMapper.java | 16 src/main/java/com/highdatas/mdm/mapper/SysAssembleLogMapper.java | 16 src/main/java/com/highdatas/mdm/entity/MenuMapping.java | 2 src/main/java/com/highdatas/mdm/service/ISysAssembleParamsService.java | 17 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleParamsMapper.xml | 18 src/main/java/com/highdatas/mdm/controller/SysAssembleDbTableController.java | 260 ++ src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbTableMapper.xml | 19 src/main/java/com/highdatas/mdm/pojo/kettle/BigDataDataSourceInfo.java | 165 + src/main/java/com/highdatas/mdm/service/ISysAssembleDbTableService.java | 16 src/main/java/com/highdatas/mdm/mapper/SysAssembleDbFieldMapper.java | 16 src/main/java/com/highdatas/mdm/controller/ActivitiController.java | 3 src/main/java/com/highdatas/mdm/controller/SysAssembleDetailController.java | 21 src/main/java/com/highdatas/mdm/entity/SysAssembleApi.java | 121 src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleLogMapper.xml | 14 src/main/java/com/highdatas/mdm/service/ISysAssembleLogService.java | 16 src/main/java/com/highdatas/mdm/service/ISysMenuService.java | 4 src/main/java/com/highdatas/mdm/controller/SysMenuController.java | 25 src/main/java/com/highdatas/mdm/pojo/SysAssembleStatus.java | 12 119 files changed, 7,425 insertions(+), 126 deletions(-) diff --git a/pom.xml b/pom.xml index 875578c..31c3fc3 100644 --- a/pom.xml +++ b/pom.xml @@ -10,16 +10,24 @@ </parent> <groupId>com.highdatas</groupId> <artifactId>mdm</artifactId> - <version>0.9.0-SNAPSHOT</version> + <version>1.0.0</version> <name>mdm</name> <description>main datas Governance system</description> <packaging>jar</packaging> + + <repositories> + <repository> + <id>pentaho</id> + <url>http://nexus.pentaho.org/content/groups/omni/</url> + </repository> + </repositories> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <activiti.version>5.22.0</activiti.version> + <kettle-version>7.1.0.0-12</kettle-version> </properties> <dependencies> @@ -84,11 +92,15 @@ <version>1.2.62</version> </dependency> - + <dependency> + <groupId>com.xuxueli</groupId> + <artifactId>xxl-job-core</artifactId> + <version>2.1.0</version> + </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> - <scope>runtime</scope> + <version>5.1.46</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> @@ -132,7 +144,11 @@ </exclusion> </exclusions> </dependency> - + <dependency> + <groupId>com.xuxueli</groupId> + <artifactId>xxl-job-core</artifactId> + <version>2.1.2</version> + </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-actuator</artifactId> @@ -242,6 +258,156 @@ <artifactId>pinyin4j</artifactId> <version>2.5.0</version> </dependency> + + + <!-- settle --> + <!-- with pentaho-kettle --> + <dependency> + <groupId>pentaho-kettle</groupId> + <artifactId>kettle-core</artifactId> + <version>${kettle-version}</version> + </dependency> + <dependency> + <groupId>pentaho-kettle</groupId> + <artifactId>kettle-engine</artifactId> + <version>${kettle-version}</version> + </dependency> + <dependency> + <groupId>pentaho</groupId> + <artifactId>metastore</artifactId> + <version>${kettle-version}</version> + </dependency> + + <dependency> + <groupId>pentaho-kettle</groupId> + <artifactId>kettle-dbdialog</artifactId> + <version>${kettle-version}</version> + </dependency> + + <!--<dependency>--> + <!--<groupId>pentaho</groupId>--> + <!--<artifactId>pentaho-big-data-kettle-plugins-hbase-meta</artifactId>--> + <!--<version>${kettle-version}</version>--> + <!--<scope>compile</scope>--> + <!--</dependency>--> + + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>druid</artifactId> + <version>1.1.10</version> + </dependency> + + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>fastjson</artifactId> + <version>1.2.58</version> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-vfs2</artifactId> + <version>2.1</version> + </dependency> + + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>17.0</version> + </dependency> + + <dependency> + <groupId>net.sourceforge.jtds</groupId> + <artifactId>jtds</artifactId> + <version>1.3.1</version> + </dependency> + + + + + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + </dependency> + <!--jdbc--> + + <dependency> + <groupId>monetdb</groupId> + <artifactId>monetdb-jdbc</artifactId> + <version>2.8</version> + </dependency> + + <!--<dependency>--> + <!--<groupId>org.mongodb</groupId>--> + <!--<artifactId>mongo-java-driver</artifactId>--> + <!--<version>3.2.2</version>--> + <!--</dependency>--> + <dependency> + <groupId>org.zenframework.z8.dependencies.commons</groupId> + <artifactId>ojdbc6</artifactId> + <version>2.0</version> + <classifier>sources</classifier> + <type>java-source</type> + </dependency> + + <dependency> + <groupId>org.apache.phoenix</groupId> + <artifactId>phoenix-core</artifactId> + <version>4.7.0-HBase-1.1</version> + </dependency> + <dependency> + <groupId>org.apache.hbase</groupId> + <artifactId>hbase-client</artifactId> + <version>1.1.2</version> + </dependency> + <!--<dependency>--> + <!--<groupId>pentaho</groupId>--> + <!--<artifactId>pentaho-mongo-utils</artifactId>--> + <!--<version>${kettle-version}</version>--> + <!--<scope>compile</scope>--> + <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>pentaho</groupId>--> + <!--<artifactId>pentaho-mongodb-plugin</artifactId>--> + <!--<version>${kettle-version}</version>--> + <!--<scope>compile</scope>--> + <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>pentaho</groupId>--> + <!--<artifactId>pentaho-big-data-kettle-plugins-hbase-meta</artifactId>--> + <!--<version>${kettle-version}</version>--> + <!--<scope>compile</scope>--> + <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>pentaho</groupId>--> + <!--<artifactId>pentaho-big-data-kettle-plugins-hadoop-cluster</artifactId>--> + <!--<version>${kettle-version}</version>--> + <!--<scope>compile</scope>--> + <!--</dependency>--> + <dependency> + <groupId>pentaho</groupId> + <artifactId>pentaho-database-model</artifactId> + <version>${kettle-version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>pentaho</groupId> + <artifactId>pentaho-metadata</artifactId> + <version>${kettle-version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>com.microsoft.sqlserver</groupId> + <artifactId>sqljdbc4</artifactId> + <version>4.0</version> + </dependency> + + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>3.7.2</version> + </dependency> + + </dependencies> <build> diff --git a/src/main/java/com/highdatas/mdm/controller/ActivitiController.java b/src/main/java/com/highdatas/mdm/controller/ActivitiController.java index 45c2be7..3ab3cc5 100644 --- a/src/main/java/com/highdatas/mdm/controller/ActivitiController.java +++ b/src/main/java/com/highdatas/mdm/controller/ActivitiController.java @@ -68,6 +68,7 @@ IMaintainService maintainService; @Autowired ITUserService userService; + @Value("${img.url}") String basePath; @@ -299,7 +300,7 @@ ActivitiStatus status = flows.getStatus(); String workflowId = flows.getWorkflowId(); -// Task task = taskService.geTask(workflowId); +// Task task = TimeTaskService.geTask(workflowId); // String id = task.getId(); String taskId = null; if (taskService.checkClaim(workflowId)) { diff --git a/src/main/java/com/highdatas/mdm/controller/AssembleController.java b/src/main/java/com/highdatas/mdm/controller/AssembleController.java new file mode 100644 index 0000000..32a0729 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/AssembleController.java @@ -0,0 +1,362 @@ +package com.highdatas.mdm.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.highdatas.mdm.entity.*; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.SysAssembleStatus; +import com.highdatas.mdm.pojo.SysAssembleUpdateType; +import com.highdatas.mdm.pojo.kettle.BigDataDataSourceInfo; +import com.highdatas.mdm.pojo.kettle.DataSourceInfo; +import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo; +import com.highdatas.mdm.service.*; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.support.CronSequenceGenerator; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author kimi + * @description + * @date 2020-02-17 10:58 + */ + +@Slf4j +@RestController +@RequestMapping("/assemble") +public class AssembleController { + @Autowired + ISysAssembleService assembleService; + @Autowired + ISysAssembleDbService dbService; + @Autowired + ISysAssembleDbFieldService fieldService; + @Autowired + ISysAssembleDbTableService tableService; + @Autowired + ISysAssembleApiService apiService; + @Autowired + ISysAssembleCommonparamsService commonparamsService; + @Autowired + ISysAssembleParamsService paramsService; + @Autowired + ISysMenuService menuService; + @Autowired + IMenuMappingService menuMappingService; + @Autowired + BigDataDataSourceInfo bigDataDataSourceInfo; + @Autowired + UnBigDataDataSourceInfo unBigDataDataSourceInfo; + + @RequestMapping(value = "run/{id}", method = RequestMethod.GET) + public Result delete(@PathVariable String id, HttpServletRequest request) { + Result run = assembleService.run(id, request.getSession()); + return run; + } + + + + @RequestMapping(value = "new", method = RequestMethod.GET) + public Result delete(HttpServletRequest request) { + SysAssemble assemble = new SysAssemble(); + TUser user = (TUser) request.getSession().getAttribute(Constant.USER); + assemble.setStatus(SysAssembleStatus.edit).setCreateTime(new Date()).setUserId(user.getUserId()).setUpdateType(SysAssembleUpdateType.All); + boolean insert = assemble.setId(DbUtils.getUUID()).insert(); + if (insert) { + String assembleId = assemble.getId(); + // 鍒涘缓job鐨勬椂鍊欏皢鎵�鏈� 閫氱敤鍙傛暟鎼竴浠借繃鍘� + List<SysAssembleCommonparams> sysAssembleCommonparams = commonparamsService.selectList(null); + for (SysAssembleCommonparams commonParam : sysAssembleCommonparams) { + SysAssembleParams sysAssembleParams = new SysAssembleParams(); + sysAssembleParams + .setName(commonParam.getName()) + .setCode(commonParam.getCode()) + .setInitSql(commonParam.getInitSql()).setUpdateSql(commonParam.getUpdateSql()) + .setCreateTime(new Date()) + .setParentId(assembleId) + .setId(DbUtils.getUUID()).insert(); + } + return Result.success(assemble); + }else { + return Result.error(CodeMsg.INSERT_ERROR); + } + } + + + + @RequestMapping(value = "/saveCommon/{id}", method = RequestMethod.GET) + public Result add(@PathVariable String id, @RequestParam String menuId, @RequestParam SysAssembleUpdateType updateType, @RequestParam Boolean bigData, @RequestParam String updateFields, HttpServletRequest request) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + assemble.setUpdateType(updateType).setUpdateFields(updateFields); + assemble.setBigdata(Boolean.valueOf(bigData)); + TUser user = (TUser) request.getSession().getAttribute(Constant.USER); + boolean insert = assemble.setUserId(user.getUserId()).setMenuId(menuId).setUpdateTime(new Date()).updateById(); + + if (insert) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.INSERT_ERROR); + } + } + + @Transactional(rollbackFor=Exception.class) + @RequestMapping(value = "delete/{id}", method = RequestMethod.GET) + public Result add(@PathVariable String id) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Boolean bigdata = assemble.getBigdata(); + DataSourceInfo dataSourceInfo; + if (bigdata) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + } + //delete db + List<SysAssembleDb> dbList = dbService.selectList(new EntityWrapper<SysAssembleDb>().eq(Constant.PARENT_ID, id)); + for (SysAssembleDb sysAssembleDb : dbList) { + String dbId = sysAssembleDb.getId(); + //delete table + + Wrapper<SysAssembleDbTable> eq = new EntityWrapper<SysAssembleDbTable>().eq(Constant.PARENT_ID, dbId); + List<SysAssembleDbTable> tableList = tableService.selectList(eq); + for (SysAssembleDbTable dbTable : tableList) { + String tableId = dbTable.getId(); + //delete field + String tempTableName = dbTable.getTempTableName(); + dataSourceInfo.dropData(tempTableName); + + Wrapper<SysAssembleDbField> fieldWrapper = new EntityWrapper<SysAssembleDbField>().eq(Constant.PARENT_ID, tableId); + boolean delete = fieldService.delete(fieldWrapper); + if (!delete) { + return Result.error(CodeMsg.DELETE_ERROR); + } + dbTable.deleteById(); + } + sysAssembleDb.deleteById(); + } + //TODO delete api + apiService.delete(new EntityWrapper<SysAssembleApi>().eq(Constant.PARENT_ID, id)); + //delete param + paramsService.delete(new EntityWrapper<SysAssembleParams>().eq(Constant.PARENT_ID, id)); + + boolean deleted = assemble.deleteById(); + if (deleted) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.DELETE_ERROR); + } + } + + + + @RequestMapping(value = "updateJob/{id}", method = RequestMethod.GET) + public Result updateStatus(@RequestParam String jobId,@RequestParam String id) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + assemble.setJobId(jobId); + boolean updated = assemble.updateById(); + if (updated) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } + + + @RequestMapping(value = "updateStatus/{id}", method = RequestMethod.GET) + public Result updateStatus(@RequestParam SysAssembleStatus status,@RequestParam String id) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + assemble.setStatus(status); + boolean updated = assemble.updateById(); + if (updated) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } + + @RequestMapping(value = "loadPurgeSql/{id}", method = RequestMethod.POST) + public Result loadPurgeSql(@RequestBody JSONObject object,@PathVariable String id) { + String sql = object.getString("sql"); + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + assemble.setPurgeSql(sql); + boolean updated = assemble.updateById(); + if (updated) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } + + @RequestMapping(value = "getTables/{id}", method = RequestMethod.GET) + public Result getTables(@PathVariable String id) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //TODO ONLY db 缂哄皯 api鐨� + List<SysAssembleDb> dbList = dbService.selectList(new EntityWrapper<SysAssembleDb>().eq(Constant.PARENT_ID, id)); + JSONArray sourceTables = new JSONArray(); + + for (SysAssembleDb sysAssembleDb : dbList) { + List<SysAssembleDbTable> tableList = tableService.selectList(new EntityWrapper<SysAssembleDbTable>().eq(Constant.PARENT_ID, sysAssembleDb.getId())); + for (SysAssembleDbTable dbTable : tableList) { + JSONObject object = new JSONObject(); + object.fluentPut(Constant.ID, dbTable.getId()); + object.fluentPut(Constant.tableName, dbTable.getTempTableName()); + sourceTables.add(object); + } + } + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", assemble.getMenuId())); + String tableName = menuMapping.getTableName(); + String tempTableName = Constant.Temp + tableName; + JSONObject object = new JSONObject(); + object.fluentPut(Constant.ID, null); + object.fluentPut(Constant.tableName, tempTableName); + JSONObject result = new JSONObject(); + result.fluentPut("source", sourceTables); + result.fluentPut("target", object); + return Result.success(result); + } + + @RequestMapping(value = "saveCorn/{id}", method = RequestMethod.GET) + public Result add(@RequestParam String cron,@PathVariable String id) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean validExpression = CronSequenceGenerator.isValidExpression(cron); + if (!validExpression) { + return Result.error(new CodeMsg(6006, "corn 琛ㄨ揪寮忎笉瑙勮寖")); + } + assemble.setCron(cron); + boolean b = paramsService.updateCornVal(assemble.getId(), cron); + if (!b) { + return Result.error(new CodeMsg(6007, "corn 琛ㄨ揪寮忔洿鏂板�奸敊璇�")); + } + assemble.setStatus(SysAssembleStatus.working); + + boolean updated = assemble.updateById(); + if (updated) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } + + @RequestMapping(value = "get/{id}", method = RequestMethod.GET) + public Result get(@PathVariable String id) { + SysAssemble assemble = assembleService.selectById(id); + String menuId = assemble.getMenuId(); + JSONObject o = (JSONObject) JSON.toJSON(assemble); + if (!StringUtils.isEmpty(menuId)) { + LinkedHashSet<String> ids = new LinkedHashSet<>(); + ids.add(menuId); + Set<String> byParentId = menuService.getByParentId(ids); + ArrayList<String> strings = new ArrayList<>(byParentId); + Collections.reverse(strings); + + o.fluentPut("menupath", strings); + } + + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + return Result.success(o); + } + + @RequestMapping(value = "/{pageNo}", method = RequestMethod.GET) + public Result page(@PathVariable Integer pageNo, HttpServletRequest request) { + EntityWrapper<SysAssemble> wrapper = new EntityWrapper<>(); + String dbName = request.getParameter("dbName"); + if (!StringUtils.isEmpty(dbName)) { + List<SysAssembleDb> dbList = dbService.selectList(new EntityWrapper<SysAssembleDb>().eq("datasource_name", dbName)); + if (dbList != null && dbList.size() != 0) { + List<String> collect = dbList.stream().map(sysAssembleDb -> sysAssembleDb.getParentId()).collect(Collectors.toList()); + wrapper.in(Constant.ID, collect); + } + } + + String menuId = request.getParameter("menuId"); + if (!StringUtils.isEmpty(menuId)) { + wrapper.eq("menu_id", menuId); + } + String bigdata = request.getParameter("bigdata"); + if (!StringUtils.isEmpty(bigdata)) { + wrapper.eq("bigdata", Boolean.valueOf(bigdata)); + } + String status = request.getParameter("status"); + if (!StringUtils.isEmpty(status)) { + wrapper.eq("status", status); + } + + Page<SysAssemble> page; + String pageSize = request.getParameter("pageSize"); + if (!StringUtils.isEmpty(pageSize)) { + page = new Page(pageNo, Integer.valueOf(pageSize)); + }else { + page = new Page(pageNo, 15); + } + + Page<SysAssemble> resultPage = assembleService.selectPage(page,wrapper); + List<SysAssemble> records = resultPage.getRecords(); + + List<JSONObject> array = new ArrayList<>(); + for (SysAssemble record : records) { + String id = record.getId(); + Wrapper<SysAssembleParams> eq = new EntityWrapper<SysAssembleParams>().eq(Constant.PARENT_ID, id).eq(Constant.Code, Constant.Cron); + JSONObject o = (JSONObject) JSON.toJSON(record); + + SysAssembleParams sysAssembleParams = paramsService.selectOne(eq); + String val = sysAssembleParams.getVal(); + o.fluentPut("nextTime", val); + + String realMenuId = record.getMenuId(); + if (!StringUtils.isEmpty(realMenuId)) { + LinkedHashSet<String> menuSet = new LinkedHashSet<>(); + menuSet.add(realMenuId); + LinkedHashSet<String> byParentId = menuService.getByParentId(menuSet); + List<SysMenu> sysMenus = menuService.selectBatchIds(byParentId); + o.fluentPut("menuList", sysMenus); + } + + + List<SysAssembleDb> dbList = dbService.selectList(new EntityWrapper<SysAssembleDb>().eq(Constant.PARENT_ID, record.getId())); + o.fluentPut("dbList", dbList); + + array.add(o); + } + Page<JSONObject> jsonObjectPage = new Page<>(); + jsonObjectPage.setCurrent(resultPage.getCurrent()); + jsonObjectPage.setSize(resultPage.getSize()); + jsonObjectPage.setTotal(resultPage.getTotal()); + jsonObjectPage.setRecords(array); + return Result.success(jsonObjectPage); + } +} diff --git a/src/main/java/com/highdatas/mdm/controller/FileController.java b/src/main/java/com/highdatas/mdm/controller/FileController.java index ce4ccc2..f250ac9 100644 --- a/src/main/java/com/highdatas/mdm/controller/FileController.java +++ b/src/main/java/com/highdatas/mdm/controller/FileController.java @@ -1,7 +1,26 @@ package com.highdatas.mdm.controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.alibaba.fastjson.JSONObject; +import com.highdatas.mdm.entity.SysAssemble; +import com.highdatas.mdm.entity.SysAssembleParams; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.service.ISysAssembleDbService; +import com.highdatas.mdm.service.ISysAssembleParamsService; +import com.highdatas.mdm.service.ISysAssembleService; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import com.highdatas.mdm.util.RedisClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Date; +import java.util.List; /** * @author kimi @@ -12,4 +31,96 @@ @RestController @RequestMapping("/file") public class FileController { + @Autowired + ISysAssembleDbService dbService; + @Autowired + ISysAssembleService assembleService; + @Autowired + ISysAssembleParamsService paramsService; + @Autowired + RedisClient redisClient; + + @RequestMapping(value = "/loadSqlTable", method = RequestMethod.POST) + @ResponseBody + public Result loadSqlTable(@RequestParam("file")MultipartFile file,@RequestParam String dbId, HttpServletRequest request) { + try { + byte[] bytes = file.getBytes(); + + String sql = new String (bytes); + sql = DbUtils.replaceEscape(sql); + String[] split = sql.split(Constant.SEMICOLON); + if (split.length > 1) { + return Result.error(new CodeMsg(6001 , "sql鑴氭湰涓婁紶閿欒,浠呰兘鏀寔涓�鏉¤鍙�")); + } + String sqlId = DbUtils.getUUID(); + boolean b = redisClient.putRedisVal(sqlId, sql); + if (!b){ + return Result.error(new CodeMsg(6002, "sql淇濆瓨澶辫触")); + } + // 鏆備笉鏍¢獙鏄笉鏄痵elect璇彞浜� 鍚庣画闇�瑕佸啀鏍¢獙 + List<String> fieldsBySql = dbService.getFieldsBySql(dbId, sql); + JSONObject object = new JSONObject(); + object.fluentPut("fields", fieldsBySql); + object.fluentPut("sqlId",sqlId); + + return Result.success(object); + }catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6002, e.getMessage())); + } + + } + + @RequestMapping(value = "/loadPurgeSql", method = RequestMethod.POST) + @ResponseBody + public Result loadPurgeSql(@RequestParam("file")MultipartFile file,@RequestParam String id, HttpServletRequest request) { + // 鏆備笉鏍¢獙鏄笉鏄痵elect璇彞浜� 鍚庣画闇�瑕佸啀鏍¢獙 + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null){ + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + try { + byte[] bytes = file.getBytes(); + + String sql = new String (bytes); + sql = DbUtils.replaceEscape(sql); + //TODO 鏍¢獙sql 鏆備笉杩涜 + assemble.setPurgeSql(sql); + boolean update = assemble.updateById(); + if (update) { + return Result.success(assemble); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + + }catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6002, e.getMessage())); + } + + } + + @RequestMapping(value = "/loadParamsUpdateSql", method = RequestMethod.POST) + @ResponseBody + public Result loadParamsUpdateSql(@RequestParam("file")MultipartFile file,@RequestParam String id, HttpServletRequest request) { + // 鏆備笉鏍¢獙鏄笉鏄痵elect璇彞浜� 鍚庣画闇�瑕佸啀鏍¢獙 + SysAssembleParams sysAssembleParams = paramsService.selectById(id); + if (sysAssembleParams == null){ + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + try { + byte[] bytes = file.getBytes(); + + String sql = new String (bytes); + sql = DbUtils.replaceEscape(sql); + //TODO 鏍¢獙sql 鏆備笉杩涜 + sysAssembleParams.setUpdateSql(sql).setUpdateTime(new Date()).updateById(); + + return Result.success(sysAssembleParams); + }catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6002, e.getMessage())); + } + + } } diff --git a/src/main/java/com/highdatas/mdm/controller/MaintainController.java b/src/main/java/com/highdatas/mdm/controller/MaintainController.java index 7d22c7f..8158785 100644 --- a/src/main/java/com/highdatas/mdm/controller/MaintainController.java +++ b/src/main/java/com/highdatas/mdm/controller/MaintainController.java @@ -142,7 +142,7 @@ result = maintainService.selectPage(maintainPage); } else { Wrapper<Maintain> tableNameWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName); - tableNameWrapper.orderBy("version desc"); + tableNameWrapper.orderBy("order_by desc"); result = maintainService.selectPage(maintainPage, tableNameWrapper); } List<Maintain> records = result.getRecords(); diff --git a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java index b2bbb0f..3f27bf8 100644 --- a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java +++ b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java @@ -8,6 +8,7 @@ import com.highdatas.mdm.pojo.CodeMsg; import com.highdatas.mdm.pojo.Operate; import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.SysAssembleUpdateType; import com.highdatas.mdm.service.IMaintainDetailService; import com.highdatas.mdm.service.IMaintainService; import com.highdatas.mdm.service.IMenuMappingService; @@ -52,67 +53,14 @@ @RequestMapping(value = "{tableName}/uploaded", method = RequestMethod.GET) public Result get(@PathVariable String tableName, HttpServletRequest request) { - String uploadType = request.getParameter("uploadType"); - if (StringUtils.isEmpty(uploadType)) { - uploadType = Constant.All; + String uploadTypeStr = request.getParameter("uploadType"); + SysAssembleUpdateType uploadType; + if (StringUtils.isEmpty(uploadTypeStr)) { + uploadType = SysAssembleUpdateType.Increment; } - MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name",tableName)); - SysOperateLog operateLog = new SysOperateLog(); - - Maintain maxVersion = maintainService.getMaxVersion(tableName); - Maintain maintain = new Maintain(); - String biggerVersion = null; - if (maxVersion == null) { - biggerVersion = Constant.VERSION_Default; - maintain.setOrderNo(0); - operateLog.setOperate("鍒濆鍖栦富棰樻暟鎹�"); - } else { - operateLog.setOperate("鏇存柊涓婚"); - String flowId = maxVersion.getFlowId(); - String mVersion = maxVersion.getVersion(); - if (StringUtils.isEmpty(flowId)) { - biggerVersion = mVersion; - maintain.setOrderNo(maxVersion.getOrderNo()); - String tempName = maxVersion.getTableName() + Constant.RECORD; - - tableInfoMapper.deleteTempByMaintainId(tempName, DbUtils.quotedStr(maxVersion.getId())); - maintainDetailService.delete(new EntityWrapper<MaintainDetail>().eq("parent_id", maxVersion.getId())); - - maxVersion.deleteById(); - }else { - biggerVersion = DbUtils.versionAddBig(mVersion); - maintain.setOrderNo(DbUtils.getOrderNoAdd(maxVersion.getOrderNo())); - } - } - - String uuid = DbUtils.getUUID(); - maintain.setId(uuid); + uploadType = SysAssembleUpdateType.valueOf(uploadTypeStr); TUser user = (TUser) request.getSession().getAttribute(Constant.USER); - if (user == null) { - return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); - } - maintain.setVersion(biggerVersion); - maintain.setChargeId(user.getUserId()); - maintain.setTableName(tableName); - maintain.setCreateTime(new Date()); - - - tableInfoMapper.insertMatintainDetailFromTemp(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD); - - tableInfoMapper.updateStdId( maintain.getTableName() + Constant.RECORD); - - Long aLong = tableInfoMapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId())); - - maintain.setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); - - operateLog.setCreateTime(new Date()) - .setMaintainId(maintain.getId()) - .setId(DbUtils.getUUID()) - .setMaintainId(menuMapping.getId()) - .setOperate("open") - .setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); - - maintain.insert(); + Maintain maintain = masterDataService.uploadedData(tableName, uploadType, user.getUserId()); JSONObject object = new JSONObject(); object.fluentPut("maintainId",maintain.getId()); object.fluentPut("version",maintain.getVersion()); @@ -190,8 +138,9 @@ case delete: //datas is id; Integer deleteCount = tableInfoMapper.deleteRecordByMaintainId(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(datas), DbUtils.quotedStr(maintainId)); - result = Result.success(deleteCount); + + break; case update: JSONObject jsonObject = JSONObject.parseObject(datas); @@ -282,8 +231,9 @@ String nowMaintainId = nowMaintain.getId(); String tempId = tableInfoMapper.getTempIdByStdId(tableName + Constant.RECORD,DbUtils.quotedStr(datas), DbUtils.quotedStr(nowMaintainId)); if (!StringUtils.isEmpty(tempId)){ - maintainDetailService.delete(new EntityWrapper<MaintainDetail>().eq("parent_id", maintain.getId()).eq("operate",Operate.delete.name()).eq("pre_merge_id",tempId)); - return masterDataService.deleteById(tableName + Constant.RECORD, tempId); + maintainDetailService.delete(new EntityWrapper<MaintainDetail>().eq("parent_id", maintain.getId()).eq("pre_merge_id",tempId)); + result = masterDataService.deleteById(tableName + Constant.RECORD, tempId); + return result; }else { result = masterDataService.selectById(tableName, datas); Object data = result.getData(); diff --git a/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java b/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java index e883222..b1f8315 100644 --- a/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java +++ b/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java @@ -38,10 +38,12 @@ public Result<MenuMapping> get(@PathVariable String id, HttpServletRequest request) { return menuMappingService.getMapping(request.getSession(),id); } + + @RequestMapping(value = "/add", method = RequestMethod.POST) public Result<Object> insert(@RequestParam String data, HttpServletRequest request) { HttpSession session = request.getSession(); - MenuMapping inserted =menuMappingService.create(data, session); + MenuMapping inserted = menuMappingService.create(data, session); if (inserted != null) { return Result.success(inserted); } else { diff --git a/src/main/java/com/highdatas/mdm/controller/SettleController.java b/src/main/java/com/highdatas/mdm/controller/SettleController.java new file mode 100644 index 0000000..e1cdf60 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SettleController.java @@ -0,0 +1,772 @@ +package com.highdatas.mdm.controller; + +import com.alibaba.druid.pool.DruidPooledConnection; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import com.highdatas.mdm.entity.TUser; +import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo; +import com.highdatas.mdm.pojo.kettle.KettleDBTrans; +import com.highdatas.mdm.pojo.kettle.TableColumn; +import org.pentaho.di.core.KettleClientEnvironment; +import org.pentaho.di.core.database.Database; +import org.pentaho.di.core.database.DatabaseMeta; +import org.pentaho.di.core.logging.LoggingObjectInterface; +import org.pentaho.di.core.logging.LoggingObjectType; +import org.pentaho.di.core.logging.SimpleLoggingObject; +import org.pentaho.di.core.row.RowMetaInterface; +import org.pentaho.di.trans.Trans; +import org.pentaho.di.trans.TransHopMeta; +import org.pentaho.di.trans.TransMeta; +import org.pentaho.di.trans.step.StepMeta; +import org.pentaho.di.trans.steps.dummytrans.DummyTransMeta; + +import org.pentaho.di.trans.steps.tableinput.TableInputMeta; +import org.pentaho.di.trans.steps.tableoutput.TableOutputMeta; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletResponse; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Controller +@RequestMapping("/database") +//http://localhost:8080/users/addUser +public class SettleController { + + + @Autowired + private UnBigDataDataSourceInfo dataSourceConn; + + private SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + private String STEP_READ_FROM_TABLE = "Read data from table"; + private String STEP_INSERT_UPDATE = "Insert or update"; + private String STEP_DUMMY = "Dummy"; + + + /** + * 鎻愬彇mongodb鏁版嵁 + * @param response + * @param transData + * @return + * @throws + */ +// @RequestMapping("/drawMongoDB") +// @ResponseBody +// public String drawMongoDB(HttpServletResponse response, @RequestBody JSONObject transData) { +// String returnStr = ""; +// try { +// KettleClientEnvironment.init(); +// +// TransMeta transMeta = new TransMeta(); +// transMeta.setName("鎶藉彇mongodb鏁版嵁"); +// //瀵煎嚭鏁版嵁鐨勬暟鎹簱杩炴帴 +// DatabaseMeta dataBaseOutput = new DatabaseMeta("Output", dataSourceConn.getDbType(), "Native", dataSourceConn.getDbHostName(), dataSourceConn.getDbName(), dataSourceConn.getDbPort(), +// dataSourceConn.getUsername(), dataSourceConn.getPassword()); +// transMeta.addDatabase(dataBaseOutput); +// +// MongoDbInputMeta mongoDbInputMeta = new MongoDbInputMeta(); +// mongoDbInputMeta.setHostnames(transData.getString("hostName")); +// mongoDbInputMeta.setAuthenticationDatabaseName(transData.getString("authDBName")); +// mongoDbInputMeta.setPort(transData.getString("portNum")); +// mongoDbInputMeta.setAuthenticationUser(transData.getString("userName")); +// mongoDbInputMeta.setAuthenticationPassword(transData.getString("pwd")); +// mongoDbInputMeta.setDbName(transData.getString("dbName")); +// mongoDbInputMeta.setCollection(transData.getString("collection")); +// //寰楀埌鎶藉彇瀛楁 +// ArrayList<String> fieldList = new ArrayList<String>(transData.getString("drawfield").split(",").length); +// Collections.addAll(fieldList, transData.getString("drawfield").split(",")); +// //璁剧疆涓嶅彇JSON瀛楁 +// mongoDbInputMeta.setOutputJson(false); +// //璁剧疆鎻愬彇瀛楁鍚嶇О銆乸ath銆乼ype +// List<MongoField> normalList = new ArrayList<MongoField>(); +// for (String fieldStr : fieldList) { +// MongoField newField = new MongoField(); +// newField.m_fieldName = fieldStr; +// newField.m_fieldPath = "$." + fieldStr; +// newField.m_kettleType = "String"; +// normalList.add(newField); +// } +// //璁剧疆mongodb鎻愬彇瀛楁 +// mongoDbInputMeta.setMongoFields(normalList); +// //璁剧疆mogodb姝ラ鍏� +// StepMeta inputMongoDBStep = new StepMeta(STEP_READ_FROM_TABLE, mongoDbInputMeta); +// inputMongoDBStep.setLocation(50, 50); +// inputMongoDBStep.setDraw(true); +// //灏唌ogodb姝ラ鍏冨姞鍏ヨ浆鍖栦腑 +// transMeta.addStep(inputMongoDBStep); +// +// //璁剧疆mysql鍏� +// TableOutputMeta tableOutputMeta = new TableOutputMeta(); +// //璁剧疆鏁版嵁搴撳厓 +// tableOutputMeta.setDatabaseMeta(transMeta.findDatabase("Output")); +// //mongodb涓暟鎹簱琛�/闆嗗悎,灏辨槸琛ㄥ悕 +// tableOutputMeta.setTableName(transData.getString("collection")); +// //灏唌ysql鍏冨姞鍏ユ楠ゅ厓 +// StepMeta insertUpdateStep = new StepMeta(STEP_INSERT_UPDATE, tableOutputMeta); +// insertUpdateStep.setLocation(150, 50); +// insertUpdateStep.setDraw(true); +// +// transMeta.addStep(insertUpdateStep); +// +// //澧炲姞涓┖鍏冿紝 +// DummyTransMeta dummyMeta = new DummyTransMeta(); +// +// //灏嗙┖鍏冨姞鍏ユ楠ゅ厓 +// StepMeta dummyStep = new StepMeta(STEP_DUMMY,dummyMeta); +// dummyStep.setLocation(200, 50); +// dummyStep.setDraw(true); +// +// transMeta.addStep(dummyStep); +// +// //璁剧疆姝ラ鐩存帴鐨勫叧绯� +// TransHopMeta hop = new TransHopMeta(inputMongoDBStep, insertUpdateStep); +// transMeta.addTransHop(hop); +// TransHopMeta hop2 = new TransHopMeta(insertUpdateStep, dummyStep); +// transMeta.addTransHop(hop2); +// +// //寮�濮嬫墽琛屾暟鎹娊鍙� +// //灏嗚浆鍖栧厓瀹炰緥鍖栬浆鎹� +// Trans trans = new Trans(transMeta); +// trans.prepareExecution(null); +// +// trans.startThreads(); +// trans.waitUntilFinished(); +// +// if (trans.getErrors() > 0) { +// System.out.println(">>>>>>>>>> ERROR"); +// returnStr = "{result:\"fail\"}"; +// } +// else { +// System.out.println(">>>>>>>>>> SUCCESS "); +// returnStr = "{result:\"success\"}"; +// } +// } catch(Exception e) { +// return "{result:\"fail\"}"; +// } +// return returnStr; +// } +// +// /** +// * 鎻愬彇mongodb鏁版嵁 +// * @param response +// * @param transData +// * @return +// * @throws +// */ +// @RequestMapping("/drawHbase") +// @ResponseBody +// public String drawHbase(HttpServletResponse response, @RequestBody JSONObject transData) { +// String returnStr = ""; +// try { +// KettleClientEnvironment.init(); +// +// TransMeta transMeta = new TransMeta(); +// transMeta.setName("鎶藉彇Hbase鏁版嵁"); +// //瀵煎嚭鏁版嵁鐨勬暟鎹簱杩炴帴 +// DatabaseMeta dataBaseOutput = new DatabaseMeta("Output", dataSourceConn.getDbType(), "Native", dataSourceConn.getDbHostName(), dataSourceConn.getDbName(), dataSourceConn.getDbPort(), +// dataSourceConn.getUsername(), dataSourceConn.getPassword()); +// transMeta.addDatabase(dataBaseOutput); +// //HBaseInputMeta hBaseInputMeta= new HBaseInputMeta() +// +// MongoDbInputMeta mongoDbInputMeta = new MongoDbInputMeta(); +// mongoDbInputMeta.setHostnames(transData.getString("hostName")); +// mongoDbInputMeta.setAuthenticationDatabaseName(transData.getString("authDBName")); +// mongoDbInputMeta.setPort(transData.getString("portNum")); +// mongoDbInputMeta.setAuthenticationUser(transData.getString("userName")); +// mongoDbInputMeta.setAuthenticationPassword(transData.getString("pwd")); +// mongoDbInputMeta.setDbName(transData.getString("dbName")); +// mongoDbInputMeta.setCollection(transData.getString("collection")); +// //寰楀埌鎶藉彇瀛楁 +// ArrayList<String> fieldList = new ArrayList<String>(transData.getString("drawfield").split(",").length); +// Collections.addAll(fieldList, transData.getString("drawfield").split(",")); +// //璁剧疆涓嶅彇JSON瀛楁 +// mongoDbInputMeta.setOutputJson(false); +// //璁剧疆鎻愬彇瀛楁鍚嶇О銆乸ath銆乼ype +// List<MongoField> normalList = new ArrayList<MongoField>(); +// for (String fieldStr : fieldList) { +// MongoField newField = new MongoField(); +// newField.m_fieldName = fieldStr; +// newField.m_fieldPath = "$." + fieldStr; +// newField.m_kettleType = "String"; +// normalList.add(newField); +// } +// //璁剧疆mongodb鎻愬彇瀛楁 +// mongoDbInputMeta.setMongoFields(normalList); +// //璁剧疆mogodb姝ラ鍏� +// StepMeta inputMongoDBStep = new StepMeta(STEP_READ_FROM_TABLE, mongoDbInputMeta); +// inputMongoDBStep.setLocation(50, 50); +// inputMongoDBStep.setDraw(true); +// //灏唌ogodb姝ラ鍏冨姞鍏ヨ浆鍖栦腑 +// transMeta.addStep(inputMongoDBStep); +// +// //璁剧疆mysql鍏� +// TableOutputMeta tableOutputMeta = new TableOutputMeta(); +// //璁剧疆鏁版嵁搴撳厓 +// tableOutputMeta.setDatabaseMeta(transMeta.findDatabase("Output")); +// //mongodb涓暟鎹簱琛�/闆嗗悎,灏辨槸琛ㄥ悕 +// tableOutputMeta.setTableName(transData.getString("collection")); +// //灏唌ysql鍏冨姞鍏ユ楠ゅ厓 +// StepMeta insertUpdateStep = new StepMeta(STEP_INSERT_UPDATE, tableOutputMeta); +// insertUpdateStep.setLocation(150, 50); +// insertUpdateStep.setDraw(true); +// +// transMeta.addStep(insertUpdateStep); +// +// //澧炲姞涓┖鍏冿紝 +// DummyTransMeta dummyMeta = new DummyTransMeta(); +// +// //灏嗙┖鍏冨姞鍏ユ楠ゅ厓 +// StepMeta dummyStep = new StepMeta(STEP_DUMMY,dummyMeta); +// dummyStep.setLocation(200, 50); +// dummyStep.setDraw(true); +// +// transMeta.addStep(dummyStep); +// +// //璁剧疆姝ラ鐩存帴鐨勫叧绯� +// TransHopMeta hop = new TransHopMeta(inputMongoDBStep, insertUpdateStep); +// transMeta.addTransHop(hop); +// TransHopMeta hop2 = new TransHopMeta(insertUpdateStep, dummyStep); +// transMeta.addTransHop(hop2); +// +// //寮�濮嬫墽琛屾暟鎹娊鍙� +// //灏嗚浆鍖栧厓瀹炰緥鍖栬浆鎹� +// Trans trans = new Trans(transMeta); +// trans.prepareExecution(null); +// +// trans.startThreads(); +// trans.waitUntilFinished(); +// +// if (trans.getErrors() > 0) { +// System.out.println(">>>>>>>>>> ERROR"); +// returnStr = "{result:\"fail\"}"; +// } +// else { +// System.out.println(">>>>>>>>>> SUCCESS "); +// returnStr = "{result:\"success\"}"; +// } +// } catch(Exception e) { +// return "{result:\"fail\"}"; +// } +// return returnStr; +// } + + /** + * 娴嬭瘯鏁版嵁搴撹繛鎺� + * @param response + * @param transData + * @return + * @throws Exception + */ + @RequestMapping("/connectionDB") + @ResponseBody + public String connectionDB(HttpServletResponse response, @RequestBody JSONObject transData, TUser users) throws Exception { + //userService.addUser(users); + KettleClientEnvironment.init(); + DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep", transData.getString("type"), "Native", transData.getString("hostName"), transData.getString("dbName"), transData.getString("portNum"), + transData.getString("userName"), transData.getString("pwd")); + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + Database ds = new Database(loggingObject, dataMeta); + ds.normalConnect(null); + Connection conn = ds.getConnection(); +/* PreparedStatement stmt = conn.prepareStatement("select * from usr"); + ResultSet rslt = stmt.executeQuery(); + while (rslt.next()) { + System.out.println(rslt.getString("username")); + }*/ + ds.disconnect(); + return "{result:\"success\"}"; + } + + /** + * 鍒涘缓SQL涓璽ablename + * 杩斿洖琛ㄥ悕 + */ + public String createSQLTable(DruidPooledConnection connSys, ResultSet rslt) throws Exception { + List<TableColumn> columnNameAndType = new ArrayList<TableColumn>(); + ResultSetMetaData md = rslt.getMetaData(); + for (int i = 1; i <= md.getColumnCount(); i++) { + TableColumn tableColumn = new TableColumn(); + tableColumn.setColumnName(md.getColumnName(i)); + tableColumn.setColumnType(md.getColumnTypeName(i)); + tableColumn.setColumnLength(String.valueOf(md.getColumnDisplaySize(i))); + columnNameAndType.add(tableColumn); + } + //鍒涘缓琛� + String SQLStr = "", tableName = ""; + if (!columnNameAndType.isEmpty()) { + tableName = "SQL_" + sdf.format(new Date()); + SQLStr = splicingSQL(tableName, columnNameAndType); + PreparedStatement stmt = connSys.prepareStatement(SQLStr); + stmt.execute(); + } + return tableName; + } + + /** + * 閫氳繃SQL鎻愬彇鏁版嵁 + */ + @RequestMapping("/sqlPick") + @ResponseBody + public String sqlPick(@RequestBody JSONObject dbData) { + try { + String tableName = "", sqlStr = ""; + + Database dsInput = null; + Database dsOutput = null; + TableInputMeta tableInputMeta = new TableInputMeta(); + TableOutputMeta talbeOutputMeta = new TableOutputMeta(); + TransMeta transMeta = new TransMeta(); + KettleDBTrans kettleDBTrans = new KettleDBTrans(); + kettleDBTrans.setDsInput(dsInput); + kettleDBTrans.setDsOutput(dsOutput); + kettleDBTrans.setTableInputMeta(tableInputMeta); + kettleDBTrans.setTalbeOutputMeta(talbeOutputMeta); + kettleDBTrans.setTransMeta(transMeta); + + kettleDBConn(kettleDBTrans); + + //SQL鎻愬彇鏁版嵁 + tableName = "SQL_" + sdf.format(new Date()); + sqlStr = dbData.getString("sqlStr"); + dataExtraction(tableName, sqlStr, kettleDBTrans); + kettleDBTrans.getDsInput().disconnect(); + kettleDBTrans.getDsOutput().disconnect(); + } catch(Exception e) { + return "{result:\"fail\"}"; + } + return "{result:\"success\"}"; + } + /** + * 鎶藉彇SQL鏁版嵁 + */ + public void extractSQLData(DruidPooledConnection connSys, ResultSet rslt, String tableName) throws Exception { + PreparedStatement stmtDes; + int columnCount; + String SQLStr = "", valueStr = ""; + columnCount = rslt.getMetaData().getColumnCount(); + SQLStr = " insert into "+tableName+" ( "; + valueStr = " values ("; + for(int i = 0; i < columnCount; i++) { + SQLStr = SQLStr + rslt.getMetaData().getColumnName(i+1) + ", "; + valueStr = valueStr + "?, "; + } + SQLStr = SQLStr.substring(0, SQLStr.length() - 2) + ")"; + valueStr = valueStr.substring(0, valueStr.length() - 2) + ")"; + SQLStr = SQLStr + valueStr; + stmtDes = connSys.prepareStatement(SQLStr); + while (rslt.next()) { + for(int i = 0; i < columnCount; i++) { + stmtDes.setString(i + 1, rslt.getString(i+1)); + } + stmtDes.addBatch(); + } + stmtDes.executeBatch(); + } + /** + * 娴嬭瘯SQL璇彞姝g‘鎬� + */ + @RequestMapping("/sqlTest") + @ResponseBody + public String sqlTest(@RequestBody JSONObject dbData) { + + try { + //杩炴帴鏁版嵁搴� + String dbConn = dbData.getString("DBConn"); + JSONObject DBParam = JSONArray.parseObject(dbConn); + + KettleClientEnvironment.init(); + DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep", DBParam.getString("type"), "Native", DBParam.getString("hostName"), DBParam.getString("dbName"), DBParam.getString("portNum"), + DBParam.getString("userName"), DBParam.getString("pwd")); + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + Database ds = new Database(loggingObject, dataMeta); + ds.connect(); + Connection conn = ds.getConnection(); + String sqlStr = dbData.getString("sqlStr"); + PreparedStatement stmt = conn.prepareStatement(sqlStr); + stmt.executeQuery(); + ds.disconnect(); + } catch(Exception e) { + return "{result:\"fail\"}"; + } + return "{result:\"success\"}"; + } + /** + * 褰撻�変腑鏁版嵁琛ㄩ�夐」鍗★紝鏄剧ず鏁版嵁琛ㄥ強瑙嗗浘鍚嶇О + * @param response + * @param transData + * @return + * @throws Exception + */ + @RequestMapping("/showTableAndView") + @ResponseBody + public String showTableAndView(HttpServletResponse response, @RequestBody JSONObject transData) throws Exception { + KettleClientEnvironment.init(); + DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep", transData.getString("type"), "Native", transData.getString("hostName"), transData.getString("dbName"), transData.getString("portNum"), + transData.getString("userName"), transData.getString("pwd")); + + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + Database ds = new Database(loggingObject, dataMeta); + //ds.normalConnect(null); + ds.connect(); + Connection conn = ds.getConnection(); + List<String> UTable = new ArrayList<String>(); + List<String> VTable = new ArrayList<String>(); + //寰楀埌鏁版嵁搴撲腑鐨勮〃 +// PreparedStatement stmt = conn.prepareStatement("select name from sysobjects where xtype='U'"); +// ResultSet rslt = stmt.executeQuery(); +// while (rslt.next()) { +// UTable.add(rslt.getString("name")); +// } +// String[] UTableArray = ds.getTablenames("dbo", true); +// for (int i = 0; i < UTableArray.length; i++) { +// UTable.add(UTableArray[i].replace("dbo.", "")); +// } + String[] UTableArray = ds.getTablenames(true); + for (int i = 0; i < UTableArray.length; i++) { + int lastHao = UTableArray[i].lastIndexOf("."); + String uTable = UTableArray[i]; + if (lastHao > 0) { + UTable.add(uTable.substring(lastHao + 1, uTable.length())); + } + else { + UTable.add(UTableArray[i]); + } + + } + String tableJson = JSON.toJSONString(UTable); + //寰楀埌鏁版嵁搴撲腑鐨勮鍥� +// stmt = conn.prepareStatement("select name from sysobjects where xtype='V'"); +// rslt = stmt.executeQuery(); +// while (rslt.next()) { +// VTable.add(rslt.getString("name")); +// } + String[] VTableArray = ds.getViews("dbo", true); + for (int i = 0; i < VTableArray.length; i++) { + VTable.add(VTableArray[i].replace("dbo.", "")); + } + String viewJson = JSON.toJSONString(VTable); + ds.disconnect(); + return "{result:\"success\",table:["+tableJson+"],view:["+viewJson+"]}"; + } + /** + * 浣跨敤kettle鍒涘缓琛� + */ + public void createTable(Database dsOutput, RowMetaInterface rm, String tableName) { + try { + System.out.println("寮�濮嬪垱寤鸿〃:" + tableName); + String dbProName = dsOutput.getConnection().getMetaData().getDatabaseProductName(); + System.out.println("鏁版嵁搴撶被鍨�:" + dbProName); + String sql = dsOutput.getDDL(tableName, rm); + dsOutput.execStatement(sql.replace(";", "")); + System.out.println("鍒涘缓琛ㄦ垚鍔�"); + } catch(Exception e) { + System.out.println("鍒涘缓琛ㄥけ璐�"); + } + + } + /** + * 鏂扮増鎶藉彇鏁版嵁 + * dataExtraction(String tableName, String sqlStr, TransMeta transMeta, Database dsInput, Database dsOutput, TableInputMeta tableInputMeta, TableOutputMeta tableOutputMeta) throws Exception { + tableInputMeta.setSQL(sqlStr); + */ + public void dataExtraction(String tableName, String sqlStr, KettleDBTrans kettleDBTrans) throws Exception { + kettleDBTrans.getTableInputMeta().setSQL(sqlStr); + + StepMeta inputStep = new StepMeta(STEP_READ_FROM_TABLE, kettleDBTrans.getTableInputMeta()); + inputStep.setLocation(50, 50); + inputStep.setDraw(true); + kettleDBTrans.getTransMeta().addStep(inputStep); + + //鍒ゆ柇鐩爣鏁版嵁搴撲腑锛屾槸鍚﹀瓨鍦ㄨ〃锛屽:瀛樺湪閲嶆柊鍛藉悕琛ㄥ悕锛岀敤鏂拌〃鍚嶅垱寤鸿〃锛屽:涓嶅瓨鍦�,鐩存帴鍒涘缓琛� + boolean hasTable = kettleDBTrans.getDsOutput().checkTableExists(tableName); + if (hasTable) { + tableName = tableName + "_" + sdf.format(new Date()); + } + //寰楀埌鍘熷琛ㄧ粨鏋� + PreparedStatement stmt = null; + RowMetaInterface rm = null; + stmt = kettleDBTrans.getDsInput().getConnection().prepareStatement(sqlStr); + stmt.executeQuery(); + rm = kettleDBTrans.getDsInput().getQueryFields(sqlStr, false); + //鍒涘缓鏁版嵁琛� + createTable(kettleDBTrans.getDsOutput(), rm, tableName); + + kettleDBTrans.getTalbeOutputMeta().setTableName(tableName); + + StepMeta insertUpdateStep = new StepMeta(STEP_INSERT_UPDATE, kettleDBTrans.getTalbeOutputMeta()); + insertUpdateStep.setLocation(150, 50); + insertUpdateStep.setDraw(true); + kettleDBTrans.getTransMeta().addStep(insertUpdateStep); + + DummyTransMeta dummyMeta = new DummyTransMeta(); + + StepMeta dummyStep = new StepMeta(STEP_DUMMY, dummyMeta); + dummyStep.setLocation(200, 50); + dummyStep.setDraw(true); + + kettleDBTrans.getTransMeta().addStep(dummyStep); + + //璁剧疆姝ラ鐩存帴鐨勫叧绯� + TransHopMeta hop = new TransHopMeta(inputStep, insertUpdateStep); + kettleDBTrans.getTransMeta().addTransHop(hop); + TransHopMeta hop2 = new TransHopMeta(insertUpdateStep, dummyStep); + kettleDBTrans.getTransMeta().addTransHop(hop2); + + //寮�濮嬫墽琛� + Trans trans = new Trans(kettleDBTrans.getTransMeta()); + trans.prepareExecution(null); + + trans.startThreads(); + + trans.waitUntilFinished(); + + if (trans.getErrors() > 0) { + System.out.println(">>>>>>>>>> ERROR"); + } + else { + System.out.println(">>>>>>>>>> SUCCESS "); + } + } + /** + * 鍒涘缓闆嗘垚鏂规硶 + */ + public void kettleDBConn(KettleDBTrans kettleDBTrans) throws Exception { + //杩炴帴鏁版嵁搴� +// String dbConn = kettleDBTrans.getAssemble().getString("DBConn");\ + String dbConn= ""; + JSONObject DBParam = JSONArray.parseObject(dbConn); + //鍒濆鍖杒ettle鐜 + KettleClientEnvironment.init(); + KettleClientEnvironment.init(); + //瀵煎叆鏁版嵁鐨勬暟鎹簱杩炴帴 + DatabaseMeta dataMetaInput = new DatabaseMeta("Input", DBParam.getString("type"), "Native", DBParam.getString("hostName"), DBParam.getString("dbName"), DBParam.getString("portNum"), + DBParam.getString("userName"), DBParam.getString("pwd")); + //瀵煎嚭鏁版嵁鐨勬暟鎹簱杩炴帴 + DatabaseMeta dataMetaOutput = new DatabaseMeta("Output", dataSourceConn.getDbType(), "Native", dataSourceConn.getDbHostName(), dataSourceConn.getDbName(), dataSourceConn.getDbPort(), + dataSourceConn.getUsername(), dataSourceConn.getPassword()); + //瀵煎嚭鏁版嵁搴撹繛鎺� + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + kettleDBTrans.setDsInput(new Database(loggingObject, dataMetaInput)); + kettleDBTrans.getDsInput().connect(); + Connection connInput = kettleDBTrans.getDsInput().getConnection(); + //瀵煎叆鏁版嵁搴撹繛鎺� + kettleDBTrans.setDsOutput(new Database(loggingObject, dataMetaOutput)); + kettleDBTrans.getDsOutput().connect(); + Connection connOutput = kettleDBTrans.getDsOutput().getConnection(); + + kettleDBTrans.getTransMeta().setName("鏁版嵁鎶藉彇"); + + kettleDBTrans.getTransMeta().addDatabase(dataMetaInput); + kettleDBTrans.getTransMeta().addDatabase(dataMetaOutput); + + //瀵煎嚭鏁版嵁 + kettleDBTrans.getTableInputMeta().setDatabaseMeta(kettleDBTrans.getTransMeta().findDatabase("Input")); + //瀵煎叆鏁版嵁 + kettleDBTrans.getTalbeOutputMeta().setDatabaseMeta(kettleDBTrans.getTransMeta().findDatabase("Output")); + } + /** + * 1.寰楀埌瑕佹彁鍙栨暟鎹殑琛ㄤ笌瑙嗗浘鍚嶇О + * 2.鍦ㄧ▼搴忔暟鎹簱涓垱寤鸿鎻愬彇鏁版嵁鐨勮〃涓庤鍥剧殑琛ㄧ殑鍚嶇О + * 3.灏嗚鎻愬彇琛ㄤ笌瑙嗗浘涓殑鏁版嵁瀛樺偍鍒扮郴缁熺殑瀹炰綋琛ㄤ腑 + * 4.鏈�鍚庯紝杩斿洖缁撴灉 + */ + //鎻愬彇琛ㄣ�佽鍥句腑鐨勬暟鎹� + @RequestMapping("/extractDBData") + @ResponseBody + public String extractDBData(HttpServletResponse response, @RequestBody JSONObject dbData) throws Exception { + //琛� + int k = 0; + String sqlStr = "", tableName = ""; + + Database dsInput = null; + Database dsOutput = null; + TableInputMeta tableInputMeta = new TableInputMeta(); + TableOutputMeta talbeOutputMeta = new TableOutputMeta(); + TransMeta transMeta = new TransMeta(); + KettleDBTrans kettleDBTrans = new KettleDBTrans(); +// kettleDBTrans.setDbData(dbData); + kettleDBTrans.setDsInput(dsInput); + kettleDBTrans.setDsOutput(dsOutput); + kettleDBTrans.setTableInputMeta(tableInputMeta); + kettleDBTrans.setTalbeOutputMeta(talbeOutputMeta); + kettleDBTrans.setTransMeta(transMeta); + + kettleDBConn(kettleDBTrans); + + JSONArray uTable = dbData.getJSONArray("UTable"); + //寰幆瀹炰綋琛� + if (!uTable.isEmpty()) { + for(k = 0; k < uTable.size(); k++) { + tableName = uTable.getString(k); + sqlStr = " select * from " + tableName; + dataExtraction(tableName, sqlStr, kettleDBTrans); + } + } + + JSONArray vTable = dbData.getJSONArray("VTable"); + //寰幆瑙嗗浘 + if (!vTable.isEmpty()) { + for(k = 0; k < vTable.size(); k++) { + tableName = vTable.getString(k); + sqlStr = " select * from " + tableName; + dataExtraction(tableName, sqlStr, kettleDBTrans); + } + } + //鍏抽棴鏁版嵁搴撹繛鎺� + kettleDBTrans.getDsInput().disconnect(); + kettleDBTrans.getDsOutput().disconnect(); + return "{result: \"success\"}"; + } + + /** + * 鎶藉彇鏁版嵁 + * extractData(connSys, realTableName, conn, tableName); + * connSys 绯荤粺鏁版嵁搴� + * realTableName 绯荤粺鏁版嵁搴撹〃鍚� + * conn 鎻愬彇鏁版嵁搴� + * tableName 鎻愬彇鏁版嵁搴撹〃鍚� + */ + public void extractData(DruidPooledConnection connSys, String tableNameDes, Connection conn, String tableNameSrc) throws Exception { + PreparedStatement stmt, stmtDes; + ResultSet rslt; + int columnCount; + String SQLStr = "", valueStr = ""; + + SQLStr = " select * from "+tableNameSrc+" "; + stmt = conn.prepareStatement(SQLStr); + rslt = stmt.executeQuery(); + columnCount = rslt.getMetaData().getColumnCount(); + SQLStr = " insert into "+tableNameDes+" ( "; + valueStr = " values ("; + for(int i = 0; i < columnCount; i++) { + SQLStr = SQLStr + rslt.getMetaData().getColumnName(i+1) + ", "; + valueStr = valueStr + "?, "; + } + SQLStr = SQLStr.substring(0, SQLStr.length() - 2) + ")"; + valueStr = valueStr.substring(0, valueStr.length() - 2) + ")"; + SQLStr = SQLStr + valueStr; + stmtDes = connSys.prepareStatement(SQLStr); + while (rslt.next()) { + for(int i = 0; i < columnCount; i++) { + stmtDes.setString(i + 1, rslt.getString(i+1)); + } + stmtDes.addBatch(); + } + stmtDes.executeBatch(); + } + + /** + * 鏍规嵁鏁版嵁搴撶被鍨嬭浆鎹㈠搴旂被鍨� + * + */ + public String getColumnStr(TableColumn tableColumn) throws Exception { + StringBuffer sqlStr = new StringBuffer(); + String returnStr = ""; + if (tableColumn.getColumnType().contains("varchar")) { + sqlStr.append(tableColumn.getColumnName() + " varchar(" + tableColumn.getColumnLength() + "),"); + } + else if (tableColumn.getColumnType().contains("int")) { + sqlStr.append(tableColumn.getColumnName() + " int(" + tableColumn.getColumnLength() + "),"); + } + else if (tableColumn.getColumnType().contains("date")) { + sqlStr.append(tableColumn.getColumnName() + " date,"); + } + else if (tableColumn.getColumnType().contains("nvarchar")) { + sqlStr.append(tableColumn.getColumnName() + " varchar(" + tableColumn.getColumnLength() + "),"); + } + else if (tableColumn.getColumnType().contains("nchar")) { + sqlStr.append(tableColumn.getColumnName() + " varchar(" + tableColumn.getColumnLength() + "),"); + } + return sqlStr.toString(); + } + + /** + * 鎷兼帴鍒涘缓鏂拌〃鐨勮鍙� + * 1.绯荤粺鏁版嵁搴撴槸mysql,鎵�浠ワ紝闇�瑕佸皢鍏跺畠鏁版嵁搴撶殑绫诲瀷锛岃浆鎹㈡垚mysql鍙互璇嗗埆鐨勭被鍨� + */ + public String splicingSQL(String tableName, List<TableColumn> columnNameAndType) throws Exception { + String sqlStr = ""; + //绗竴姝�,绫诲瀷 璇嗗埆绫诲瀷 + sqlStr = "create table " + tableName + " ("; + StringBuffer columnStr = new StringBuffer(); + columnStr.append(sqlStr); + for (TableColumn tableColumn : columnNameAndType) { + columnStr.append(getColumnStr(tableColumn)); + } + sqlStr = columnStr.toString(); + return sqlStr.substring(0, sqlStr.length() - 1) + ")"; + } + /** + * 鍒涘缓琛� + * 1.闇�瑕佸垽娈�,绯荤粺鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄨ〃鍚�(1.鏈夌殑璇濋噸鏂板懡鍚�,tableName + 骞存湀鏃ユ椂鍒嗙 + */ + public String createTable(DruidPooledConnection connSys, String tableName, List<TableColumn> columnNameAndType) throws Exception { + String SQLStr = ""; + if (!columnNameAndType.isEmpty()) { + PreparedStatement stmt; + ResultSet rslt; + + SQLStr = " select count(table_name) as tableNum " + + " from information_schema.tables " + + " where table_schema='ssm' and table_name='"+tableName+"'"; + stmt = connSys.prepareStatement(SQLStr); + rslt = stmt.executeQuery(); + rslt.next(); + if (rslt.getInt("tableNum") > 0) { + tableName = tableName + "_" + sdf.format(new Date()); + } + SQLStr = splicingSQL(tableName, columnNameAndType); + stmt = connSys.prepareStatement(SQLStr); + stmt.execute(); + } + return tableName; + } + + + //寰楀埌鎶藉彇鏁版嵁搴撹〃鐨勫瓧娈靛悕绉板強瀛楁绫诲瀷 + public List<TableColumn> getColumnNameAndType(Connection conn, String tableName, String type) throws Exception { + List<TableColumn> columnNameAndType = new ArrayList<TableColumn>(); + //寰楀埌鏁版嵁搴撲腑鐨勮〃 + String SQLStr = " select c.name As ColumnsName , t.name as ColumnsType, c.length as ColumnsLength " + + " from SysObjects As o " + + " left join SysColumns As c on o.id=c.id " + + " left join SysTypes As t on c.xtype=t.xusertype " + + " where o.type = '"+type+"' and o.name='"+tableName+"' "; + + PreparedStatement stmt = conn.prepareStatement(SQLStr); + ResultSet rslt = stmt.executeQuery(); + while (rslt.next()) { + TableColumn tableColumn = new TableColumn(); + tableColumn.setColumnName(rslt.getString("ColumnsName")); + tableColumn.setColumnType(rslt.getString("ColumnsType")); + tableColumn.setColumnLength(rslt.getString("ColumnsLength")); + columnNameAndType.add(tableColumn); + } + + return columnNameAndType; + } + + + +/* protected void sendJsonData(HttpServletResponse response) throws Exception{ + response.setContentType("text/javascript;charset=UTF-8"); + PrintWriter out = response.getWriter(); + out.println("alert(\"鏁版嵁搴撹繛鎺ユ垚鍔�!!!\")"); + out.flush(); + out.close(); + }*/ + +} diff --git a/src/main/java/com/highdatas/mdm/controller/UserController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleApiController.java similarity index 70% rename from src/main/java/com/highdatas/mdm/controller/UserController.java rename to src/main/java/com/highdatas/mdm/controller/SysAssembleApiController.java index 3ddbfff..5e61ed2 100644 --- a/src/main/java/com/highdatas/mdm/controller/UserController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleApiController.java @@ -1,8 +1,9 @@ package com.highdatas.mdm.controller; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; /** * <p> @@ -10,10 +11,10 @@ * </p> * * @author kimi - * @since 2019-12-16 + * @since 2020-02-19 */ @Controller -@RequestMapping("/user") -public class UserController { +@RequestMapping("/assemble/api") +public class SysAssembleApiController { } diff --git a/src/main/java/com/highdatas/mdm/controller/SysAssembleDbController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbController.java new file mode 100644 index 0000000..f53f966 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbController.java @@ -0,0 +1,195 @@ +package com.highdatas.mdm.controller; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.highdatas.mdm.entity.SysAssemble; +import com.highdatas.mdm.entity.SysAssembleDb; +import com.highdatas.mdm.entity.SysAssembleDbField; +import com.highdatas.mdm.entity.SysAssembleDbTable; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.service.ISysAssembleDbFieldService; +import com.highdatas.mdm.service.ISysAssembleDbService; +import com.highdatas.mdm.service.ISysAssembleDbTableService; +import com.highdatas.mdm.service.ISysAssembleService; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +@RestController +@RequestMapping("/assemble/db") +public class SysAssembleDbController { + @Autowired + ISysAssembleDbService dbService; + @Autowired + ISysAssembleDbTableService dbTableService; + @Autowired + ISysAssembleDbFieldService dbFieldService; + + @Autowired + ISysAssembleService assembleService; + + + @RequestMapping(value = "/get/parent/{id}", method = RequestMethod.GET) + public Result get(@PathVariable String id, HttpServletRequest request) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //鏈垎椤� 鐪嬮渶姹� cnt + + Wrapper<SysAssembleDb> parentWrapper = new EntityWrapper<SysAssembleDb>().eq(Constant.PARENT_ID, id); + List<SysAssembleDb> sysAssembleDbs = dbService.selectList(parentWrapper); + ArrayList<JSONObject> result = new ArrayList<>(); + for (SysAssembleDb sysAssembleDb : sysAssembleDbs) { + JSONObject o = (JSONObject) JSON.toJSON(sysAssembleDb); + String dbId = sysAssembleDb.getId(); + Wrapper<SysAssembleDbTable> eq = new EntityWrapper<SysAssembleDbTable>().eq(Constant.PARENT_ID, dbId); + int i = dbTableService.selectCount(eq); + o.fluentPut("cnt", i); + o.fluentPut("type", "db"); + result.add(o); + } + return Result.success(result); + + } + + @RequestMapping(value = "/testConnection/{id}", method = RequestMethod.GET) + public Result testConnection(@PathVariable String id, HttpServletRequest request) { + boolean b = dbService.testConnection(id); + return Result.success(b); + } + + @RequestMapping(value = "/getSet", method = RequestMethod.GET) + public Result getSet(HttpServletRequest request) { + List<SysAssembleDb> dbList = dbService.selectList(null); + HashSet<String> result = new HashSet<>(); + for (SysAssembleDb sysAssembleDb : dbList) { + result.add(sysAssembleDb.getDatasourceName()); + } + return Result.success(result); + } + + + + @RequestMapping(value = "/getTableList/{id}", method = RequestMethod.GET) + public Result getTable(@PathVariable String id, HttpServletRequest request) { + Connection connection = null; + try { + SysAssembleDb sysAssembleDb = dbService.selectById(id); + String username = sysAssembleDb.getDatasourceUser(); + connection = dbService.getConnection(id); + DatabaseMetaData metaData = connection.getMetaData(); + ResultSet tables = metaData.getTables( null, username.toUpperCase(), null, new String[]{ "TABLE" } ); + ArrayList<String> tableNameList = new ArrayList<>(); + while (tables.next()) { + String tableName = tables.getString(Constant.TABLE_NAME); + tableNameList.add(tableName); + } + List<SysAssembleDbTable> tableList = dbTableService.selectList(new EntityWrapper<SysAssembleDbTable>().eq(Constant.PARENT_ID, id)); + List<String> selectedTableNameList = tableList.stream().map(sysAssembleDbTable -> sysAssembleDbTable.getTableName()).collect(Collectors.toList()); + + List<String> result = tableNameList.stream().filter(s -> !selectedTableNameList.contains(s)).collect(Collectors.toList()); + + + return Result.success(result); + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6003, e.getMessage())); + } + finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6003, e.getMessage())); + } + } + } + } + + + @RequestMapping(value = "/getFields/{id}", method = RequestMethod.GET) + public Result getFields(@PathVariable String id, @RequestParam String tableName, HttpServletRequest request) { + List<String> fieldsByTableName = dbService.getFieldsByTableName(id, tableName); + if (fieldsByTableName == null){ + return Result.error(new CodeMsg(6008, "鑾峰彇瀛楁澶辫触")); + } + return Result.success(fieldsByTableName); + } + + + @Transactional(rollbackFor=Exception.class) + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public Result delete(@PathVariable String id) { + SysAssembleDb sysAssembleDb = dbService.selectById(id); + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + // delete tables; + Wrapper<SysAssembleDbTable> tablesWrapper = new EntityWrapper<SysAssembleDbTable>().eq("parent_id", id); + List<SysAssembleDbTable> sysAssembleDbTables = dbTableService.selectList(tablesWrapper); + for (SysAssembleDbTable dbTable : sysAssembleDbTables) { + String tableId = dbTable.getId(); + boolean delete = dbFieldService.delete(new EntityWrapper<SysAssembleDbField>().eq("parent_id", tableId)); + if (delete) { + delete = dbTable.deleteById(); + if (!delete) { + return Result.error(CodeMsg.DELETE_ERROR); + } + }else { + return Result.error(CodeMsg.DELETE_ERROR); + } + } + boolean delete = sysAssembleDb.deleteById(); + + if (delete) { + return Result.success(sysAssembleDb); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } + + + @ResponseBody + @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST) + public Result addOne(@RequestBody SysAssembleDb sysAssembleDb) { + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + if (StringUtils.isEmpty(sysAssembleDb.getId())) { + sysAssembleDb.setId(DbUtils.getUUID()).setCreateTime(new Date()); + } + sysAssembleDb.setUpdateTime(new Date()); + boolean update = sysAssembleDb.insertOrUpdate(); + if (update) { + return Result.success(sysAssembleDb); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } +} diff --git a/src/main/java/com/highdatas/mdm/controller/UserController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbDetailController.java similarity index 68% copy from src/main/java/com/highdatas/mdm/controller/UserController.java copy to src/main/java/com/highdatas/mdm/controller/SysAssembleDbDetailController.java index 3ddbfff..e71431f 100644 --- a/src/main/java/com/highdatas/mdm/controller/UserController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbDetailController.java @@ -1,8 +1,9 @@ package com.highdatas.mdm.controller; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; /** * <p> @@ -10,10 +11,10 @@ * </p> * * @author kimi - * @since 2019-12-16 + * @since 2020-02-19 */ @Controller -@RequestMapping("/user") -public class UserController { +@RequestMapping("/sysAssembleDbDetail") +public class SysAssembleDbDetailController { } diff --git a/src/main/java/com/highdatas/mdm/controller/UserController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbFieldController.java similarity index 69% copy from src/main/java/com/highdatas/mdm/controller/UserController.java copy to src/main/java/com/highdatas/mdm/controller/SysAssembleDbFieldController.java index 3ddbfff..d8251a8 100644 --- a/src/main/java/com/highdatas/mdm/controller/UserController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbFieldController.java @@ -10,10 +10,10 @@ * </p> * * @author kimi - * @since 2019-12-16 + * @since 2020-02-20 */ @Controller -@RequestMapping("/user") -public class UserController { +@RequestMapping("/assemble/db/field") +public class SysAssembleDbFieldController { } diff --git a/src/main/java/com/highdatas/mdm/controller/SysAssembleDbTableController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbTableController.java new file mode 100644 index 0000000..54cc63d --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleDbTableController.java @@ -0,0 +1,260 @@ +package com.highdatas.mdm.controller; + + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.highdatas.mdm.entity.*; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.SysAssembleTableType; +import com.highdatas.mdm.pojo.kettle.BigDataDataSourceInfo; +import com.highdatas.mdm.pojo.kettle.DataSourceInfo; +import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo; +import com.highdatas.mdm.service.*; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import com.highdatas.mdm.util.RedisClient; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.sql.Connection; +import java.text.MessageFormat; +import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@RestController +@RequestMapping("/assemble/db/table") +public class SysAssembleDbTableController { + @Autowired + ISysAssembleService assembleService; + @Autowired + ISysAssembleDbService dbService; + @Autowired + ISysAssembleDbTableService dbTableService; + @Autowired + ISysAssembleDbFieldService dbFieldService; + @Autowired + ISysAssembleParamsService paramsService; + @Autowired + UnBigDataDataSourceInfo unBigDataDataSourceInfo; + @Autowired + BigDataDataSourceInfo bigDataDataSourceInfo; + @Autowired + RedisClient redisClient; + + @RequestMapping(value = "/get/parent/{id}", method = RequestMethod.GET) + public Result get(@PathVariable String id, HttpServletRequest request) { + SysAssembleDb sysAssembleDb = dbService.selectById(id); + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //check 鏄惁闇�瑕侀澶栧瓧娈� + Wrapper<SysAssembleDbTable> parentWrapper = new EntityWrapper<SysAssembleDbTable>().eq(Constant.PARENT_ID, id); + List<SysAssembleDbTable> sysAssembleDbs = dbTableService.selectList(parentWrapper); + return Result.success(sysAssembleDbs); + + } + + @Transactional(rollbackFor=Exception.class) + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public Result delete(@PathVariable String id) { + SysAssembleDbTable sysAssembleDb = dbTableService.selectById(id); + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean delete = dbFieldService.delete(new EntityWrapper<SysAssembleDbField>().eq("parent_id", id)); + if (!delete) { + return Result.error(CodeMsg.DELETE_ERROR); + } + delete = sysAssembleDb.deleteById(); + + if (delete) { + return Result.success(sysAssembleDb); + } else { + return Result.error(CodeMsg.DELETE_ERROR); + } + } + + @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) + public Result get(@PathVariable String id) { + SysAssembleDbTable sysAssembleDb = dbTableService.selectById(id); + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Wrapper<SysAssembleDbField> fieldWrapper = new EntityWrapper<SysAssembleDbField>().eq(Constant.PARENT_ID, id); + List<SysAssembleDbField> sysAssembleDbFields = dbFieldService.selectList(fieldWrapper); + sysAssembleDb.setFieldList(sysAssembleDbFields); + return Result.success(sysAssembleDb); + } + + @RequestMapping(value = "/getField/{id}", method = RequestMethod.GET) + public Result check(@PathVariable String id) { + SysAssembleDbTable sysAssembleDb = dbTableService.selectById(id); + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Wrapper<SysAssembleDbField> fieldWrapper = new EntityWrapper<SysAssembleDbField>().eq(Constant.PARENT_ID, id); + List<SysAssembleDbField> sysAssembleDbFields = dbFieldService.selectList(fieldWrapper); + sysAssembleDb.setFieldList(sysAssembleDbFields); + return Result.success(sysAssembleDb); + } + + @RequestMapping(value = "/getSqlField/{id}", method = RequestMethod.GET) + public Result getSqlField(@PathVariable String id) { + SysAssembleDbTable sysAssembleDb = dbTableService.selectById(id); + if (sysAssembleDb == null || !sysAssembleDb.getType().equals(SysAssembleTableType.sql)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String sql = sysAssembleDb.getSql(); + List<String> fieldsBySql = dbService.getFieldsBySql(sysAssembleDb.getParentId(), sql); + + return Result.success(fieldsBySql); + } + + @RequestMapping(value = "/setFilterSql/{id}", method = RequestMethod.GET) + public Result setFilterSql(@PathVariable String id,@RequestParam String filter, HttpServletRequest request) { + //TODO 瀵筬ilter 鍋氭楠�? + + SysAssembleDbTable sysAssembleDbTable = dbTableService.selectById(id); + if (sysAssembleDbTable == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + sysAssembleDbTable.setFilter(filter).updateById(); + return Result.success(sysAssembleDbTable); + } + + @RequestMapping(value = "/testFilter/{id}", method = RequestMethod.GET) + public Result testFilter(@PathVariable String id, @RequestParam String filter) { + SysAssembleDbTable sysAssembleDbTable = dbTableService.selectById(id); + if (sysAssembleDbTable == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String parentId = sysAssembleDbTable.getParentId(); + if (StringUtils.isEmpty(parentId)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + SysAssembleDb sysAssembleDb = dbService.selectById(parentId); + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String assembleId = sysAssembleDb.getParentId(); + + List<SysAssembleDbField> fieldList = dbFieldService.selectList(new EntityWrapper<SysAssembleDbField>().eq(Constant.PARENT_ID, id)); + String fields = fieldList.stream().map(SysAssembleDbField::getField).collect(Collectors.joining(Constant.COMMA)); + SysAssembleTableType type = sysAssembleDbTable.getType(); + String tableName = null; + if (type.equals(SysAssembleTableType.sql)) { + tableName = sysAssembleDbTable.getSql(); + } else if (type.equals(SysAssembleTableType.table)) { + tableName = sysAssembleDbTable.getTableName(); + } + + Set<String> matcher = DbUtils.matcher(filter); + for (String code : matcher) { + SysAssembleParams sysAssembleParams = paramsService.selectOne(new EntityWrapper<SysAssembleParams>().eq(Constant.PARENT_ID, assembleId).eq(Constant.Code, code)); + if (sysAssembleParams == null){ + return Result.error(new CodeMsg(6009, assembleId + "鏈夊彉閲忔湭鍖归厤鍒�:"+ code)); + } + String val = sysAssembleParams.getVal(); + if (StringUtils.isEmpty(val)) { + return Result.error(new CodeMsg(6009, assembleId + "鏈夊彉閲忔湭鑾峰彇鍒板��:"+ code)); + } + val = DbUtils.quotedStr(val); + filter = filter.replace(DbUtils.assemblParam(code), val); + } + String runSqlTemplate = null; + if (type.equals(SysAssembleTableType.table)){ + runSqlTemplate = Constant.selectFieldTableTemplate; + }else if(type.equals(SysAssembleTableType.sql)){ + runSqlTemplate = Constant.selectFieldSqlTemplate; + } + String sql = MessageFormat.format(runSqlTemplate, fields, tableName, filter); + boolean b = dbService.testSql(parentId, sql); + return Result.success(b); + } + + @ResponseBody + @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST) + public Result addOne(@RequestBody SysAssembleDbTable sysAssembleDb) { + if (sysAssembleDb == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + if (StringUtils.isEmpty(sysAssembleDb.getId())) { + sysAssembleDb.setId(DbUtils.getUUID()); + if (StringUtils.isEmpty(sysAssembleDb.getSqlId()) && sysAssembleDb.getType().equals(SysAssembleTableType.sql)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + } + + if (StringUtils.isEmpty(sysAssembleDb.getTableName()) && sysAssembleDb.getType().equals(SysAssembleTableType.table)){ + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + SysAssemble assemble = assembleService.selectById(sysAssembleDb.getAssembleId()); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Boolean bigdata = assemble.getBigdata(); + DataSourceInfo dataSourceInfo = null; + if (bigdata) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + } + List<String> fieldStrList = sysAssembleDb.getFieldList().stream().map(SysAssembleDbField::getField).collect(Collectors.toList()); + String suffix = null; + try { + suffix = DbUtils.Bit16(assemble.getId()); + } catch (Exception e) { + e.printStackTrace(); + suffix = DbUtils.getUUID(16); + } + String tempTableName = null; + if (sysAssembleDb.getType().equals(SysAssembleTableType.table)) { + tempTableName = (Constant.AssembleTempTable + sysAssembleDb.getTableName() + Constant.UnderLine + suffix); + }else { + tempTableName = (Constant.AssembleTempSql + DbUtils.getUUID(5) + Constant.UnderLine + suffix); + String redisVal = redisClient.getRedisVal(sysAssembleDb.getSqlId()); + if (StringUtils.isEmpty(redisVal)) { + return Result.error(new CodeMsg(6008,"鑾峰彇sql澶辫触")); + } + sysAssembleDb.setSql(redisVal); + redisClient.deleteRedisVal(sysAssembleDb.getSqlId()); + } + + sysAssembleDb.setTempTableName(tempTableName); + + boolean created = dataSourceInfo.createTable(tempTableName, fieldStrList); + if (!created) { + return Result.error(new CodeMsg(6008,"鍒涘缓琛ㄥけ璐�:" + tempTableName)); + } + boolean update = sysAssembleDb.insertOrUpdate(); + if (update) { + // update field + boolean delete = dbFieldService.delete(new EntityWrapper<SysAssembleDbField>().eq(Constant.PARENT_ID, sysAssembleDb.getId())); + if (!delete) { + return Result.error(CodeMsg.DELETE_ERROR); + } + List<SysAssembleDbField> fieldList = sysAssembleDb.getFieldList(); + for (SysAssembleDbField sysAssembleDbField : fieldList) { + sysAssembleDbField.setId(DbUtils.getUUID()).setCreateTime(new Date()).setParentId(sysAssembleDb.getId()).insert(); + } + return Result.success(sysAssembleDb); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } +} diff --git a/src/main/java/com/highdatas/mdm/controller/SysAssembleDetailController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleDetailController.java new file mode 100644 index 0000000..4679795 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleDetailController.java @@ -0,0 +1,21 @@ +package com.highdatas.mdm.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@RestController +@RequestMapping("/sysAssembleDetail") +public class SysAssembleDetailController { + +} diff --git a/src/main/java/com/highdatas/mdm/controller/SysAssembleLogController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleLogController.java new file mode 100644 index 0000000..64abad3 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleLogController.java @@ -0,0 +1,21 @@ +package com.highdatas.mdm.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@RestController +@RequestMapping("/sysAssembleLog") +public class SysAssembleLogController { + +} diff --git a/src/main/java/com/highdatas/mdm/controller/SysAssembleParamsController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleParamsController.java new file mode 100644 index 0000000..db5215b --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleParamsController.java @@ -0,0 +1,86 @@ +package com.highdatas.mdm.controller; + + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.highdatas.mdm.entity.SysAssemble; +import com.highdatas.mdm.entity.SysAssembleDb; +import com.highdatas.mdm.entity.SysAssembleParams; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.service.ISysAssembleParamsService; +import com.highdatas.mdm.service.ISysAssembleService; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@RestController +@RequestMapping("/assemble/param") +public class SysAssembleParamsController { + @Autowired + ISysAssembleService assembleService; + @Autowired + ISysAssembleParamsService paramsService; + + @RequestMapping(value = "/addOrUpdate/{id}", method = RequestMethod.POST) + public Result get(@PathVariable String id, @RequestBody SysAssembleParams params) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + params.setParentId(id); + if (StringUtils.isEmpty(params.getId())) { + params.setCreateTime(new Date()).setId(DbUtils.getUUID()); + }else { + params.setUpdateTime(new Date()); + } + boolean update = params.insertOrUpdate(); + + if (update) { + return Result.success(params); + }else { + return Result.error(CodeMsg.INSERT_ERROR); + } + + } + + @RequestMapping(value = "/list/{id}", method = RequestMethod.GET) + public Result list(@PathVariable String id) { + SysAssemble assemble = assembleService.selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + List<SysAssembleParams> paramsList = paramsService.selectList(new EntityWrapper<SysAssembleParams>().eq(Constant.PARENT_ID, id)); + return Result.success(paramsList); + } + + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public Result delete(@PathVariable String id) { + SysAssembleParams sysAssembleParams = paramsService.selectById(id); + if (sysAssembleParams == null){ + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean delete = sysAssembleParams.deleteById(); + if (delete) { + return Result.success(CodeMsg.DELETE_SUCCESS); + }else { + return Result.error(CodeMsg.DELETE_ERROR); + } + + } +} diff --git a/src/main/java/com/highdatas/mdm/controller/SysAssembleRuleController.java b/src/main/java/com/highdatas/mdm/controller/SysAssembleRuleController.java new file mode 100644 index 0000000..ce15931 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysAssembleRuleController.java @@ -0,0 +1,55 @@ +package com.highdatas.mdm.controller; + + +import com.highdatas.mdm.entity.SysAssembleDbTable; +import com.highdatas.mdm.entity.SysAssembleRule; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.service.ISysAssembleDbService; +import com.highdatas.mdm.service.ISysAssembleRuleService; +import com.highdatas.mdm.util.DbUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +@RestController +@RequestMapping("/assemble/rule") +public class SysAssembleRuleController { + @Autowired + ISysAssembleRuleService ruleService; + + @RequestMapping(value = "/add/{id}", method = RequestMethod.GET) + public Result add(@PathVariable String id, @RequestParam String ruleId) { + SysAssembleRule sysAssembleRule = new SysAssembleRule(); + boolean insert = sysAssembleRule.setCreateTime(new Date()).setId(DbUtils.getUUID()).setParentId(id).setRuleId(ruleId).insert(); + if (insert) { + return Result.success(sysAssembleRule); + }else { + return Result.error(CodeMsg.INSERT_ERROR); + } + } + @RequestMapping(value = "/update/{id}", method = RequestMethod.GET) + public Result update(@PathVariable String id, @RequestParam String ruleId) { + SysAssembleRule sysAssembleRule = ruleService.selectById(id); + if (sysAssembleRule == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + boolean insert = sysAssembleRule.setUpdateTime(new Date()).setRuleId(ruleId).updateById(); + if (insert) { + return Result.success(sysAssembleRule); + }else { + return Result.error(CodeMsg.UPDATE_ERROR); + } + } +} diff --git a/src/main/java/com/highdatas/mdm/controller/SysDbtypeController.java b/src/main/java/com/highdatas/mdm/controller/SysDbtypeController.java new file mode 100644 index 0000000..1695f0a --- /dev/null +++ b/src/main/java/com/highdatas/mdm/controller/SysDbtypeController.java @@ -0,0 +1,48 @@ +package com.highdatas.mdm.controller; + + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.highdatas.mdm.entity.SysDbtype; +import com.highdatas.mdm.entity.SysField; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.service.IFlowsService; +import com.highdatas.mdm.service.ISysDbtypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; +import java.util.List; + +/** + * <p> + * 鍓嶇鎺у埗鍣� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@RestController +@RequestMapping("/sysDbtype") +public class SysDbtypeController { + @Autowired + ISysDbtypeService dbtypeService; + + + @RequestMapping(value = "/all", method = RequestMethod.GET) + public Result all() { + List<SysDbtype> sysDbtypes = dbtypeService.selectList(new EntityWrapper<SysDbtype>().eq("active", true)); + if (sysDbtypes != null) { + return Result.success(sysDbtypes); + }else { + return Result.error(CodeMsg.SELECT_ERROR); + } + } +} diff --git a/src/main/java/com/highdatas/mdm/controller/SysFieldController.java b/src/main/java/com/highdatas/mdm/controller/SysFieldController.java index 174c930..b64c71d 100644 --- a/src/main/java/com/highdatas/mdm/controller/SysFieldController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysFieldController.java @@ -4,14 +4,19 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; +import com.highdatas.mdm.entity.MenuMapping; import com.highdatas.mdm.entity.SysField; +import com.highdatas.mdm.entity.SysMenu; import com.highdatas.mdm.pojo.CodeMsg; import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.service.IMenuMappingService; import com.highdatas.mdm.service.ISysFieldService; +import com.highdatas.mdm.service.ISysMenuService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.awt.*; import java.util.Date; import java.util.List; @@ -28,6 +33,11 @@ public class SysFieldController { @Autowired ISysFieldService fieldService; + @Autowired + ISysMenuService menuService; + @Autowired + IMenuMappingService menuMappingService; + @RequestMapping(value = "/{tableName}", method = RequestMethod.GET) public Result todoTask(@PathVariable String tableName){ @@ -38,6 +48,20 @@ return Result.success(fieldList); } + @RequestMapping(value = "/menu/{id}", method = RequestMethod.GET) + public Result getFieldByMenu(@PathVariable String id){ + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", id)); + if (menuMapping == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String tableName = menuMapping.getTableName(); + if (StringUtils.isEmpty(tableName)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + List<SysField> fieldList = fieldService.selectList(new EntityWrapper<SysField>().eq("table_name", tableName).orderBy("order_no")); + + return Result.success(fieldList); + } @RequestMapping(value = "/update", method = RequestMethod.GET) public Result update(@RequestParam String json) { diff --git a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java index 418336a..d11a05f 100644 --- a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java @@ -19,9 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.Date; -import java.util.HashSet; -import java.util.List; +import java.util.*; /** * <p> @@ -51,6 +49,25 @@ return Result.success(menuService.selectList(sysMenuEntityWrapper)) ; } + @RequestMapping(value = "/list", method = RequestMethod.GET) + public Result<List<SysMenu>> getMenuList() { + EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>(); + sysMenuEntityWrapper.eq("data_type","currentData"); + sysMenuEntityWrapper.orderBy(" parent_id, order_no"); + List<SysMenu> sysMenus = menuService.selectList(sysMenuEntityWrapper); + LinkedHashSet<String> parentIdSet = new LinkedHashSet<>(); + for (SysMenu sysMenu : sysMenus) { + String parentId = sysMenu.getParentId(); + parentIdSet.add(parentId); + } + Set<String> byParentId = menuService.getByParentId(parentIdSet); + List<SysMenu> parentList = menuService.selectBatchIds(byParentId); + + return Result.success(parentList) ; + } + + + @RequestMapping(value = "/allTheme", method = RequestMethod.GET) public Result<List<SysMenu>> getAllTheme() { EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>(); @@ -63,7 +80,7 @@ public Result<Page<SysMenu>> getAll(@PathVariable int pageno, HttpServletRequest request) { String pageSize = request.getParameter("pageSize"); if (StringUtils.isEmpty(pageSize)) { - pageSize = "20"; + pageSize = "15"; } Integer size = Integer.valueOf(pageSize); Page page = new Page(pageno, size); diff --git a/src/main/java/com/highdatas/mdm/entity/MenuMapping.java b/src/main/java/com/highdatas/mdm/entity/MenuMapping.java index 71c4f21..5a14047 100644 --- a/src/main/java/com/highdatas/mdm/entity/MenuMapping.java +++ b/src/main/java/com/highdatas/mdm/entity/MenuMapping.java @@ -24,6 +24,8 @@ private String id; + private Boolean audit; + /** * 璧勪骇缂栧彿 */ diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssemble.java b/src/main/java/com/highdatas/mdm/entity/SysAssemble.java new file mode 100644 index 0000000..215d1e8 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssemble.java @@ -0,0 +1,271 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.highdatas.mdm.pojo.SysAssembleCheckType; +import com.highdatas.mdm.pojo.SysAssembleRunStatus; +import com.highdatas.mdm.pojo.SysAssembleStatus; +import com.highdatas.mdm.pojo.SysAssembleUpdateType; + +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@TableName("sys_assemble") +public class SysAssemble extends Model<SysAssemble> { + + private static final long serialVersionUID = 1L; + + private String id; + + private String name; + @TableField("menu_id") + private String menuId; + + @TableField("pre_time") + private Date preTime; + + @TableField("pre_msg") + private String preMsg; + + @TableField("pre_cnt") + private Integer preCnt; + + @TableField("pre_status") + private SysAssembleRunStatus preStatus; + + @TableField("user_id") + private String userId; + + @TableField("purge_sql") + private String purgeSql; + + @TableField("flow_id") + private String flowId; + + @TableField("job_id") + private String jobId; + + @TableField("update_type") + private SysAssembleUpdateType updateType; + + @TableField("check_type") + private SysAssembleCheckType checkType; + @TableField("check_fields") + private String checkFields; + + @TableField("update_fields") + private String updateFields; + + private String cron; + + private Boolean bigdata; + + private SysAssembleStatus status; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getPreMsg() { + return preMsg; + } + + public SysAssemble setPreMsg(String preMsg) { + this.preMsg = preMsg; + return this; + } + + public String getFlowId() { + return flowId; + } + + public SysAssemble setFlowId(String flowId) { + this.flowId = flowId; + return this; + } + + public Date getPreTime() { + return preTime; + } + + public SysAssemble setPreTime(Date preTime) { + this.preTime = preTime; + return this; + } + + public Integer getPreCnt() { + return preCnt; + } + + public SysAssemble setPreCnt(Integer preCnt) { + this.preCnt = preCnt; + return this; + } + + public SysAssembleRunStatus getPreStatus() { + return preStatus; + } + + public SysAssemble setPreStatus(SysAssembleRunStatus preStatus) { + this.preStatus = preStatus; + return this; + } + + public String getCheckFields() { + return checkFields; + } + + public SysAssemble setCheckFields(String checkFields) { + this.checkFields = checkFields; + return this; + } + + public SysAssembleCheckType getCheckType() { + return checkType; + } + + public SysAssemble setCheckType(SysAssembleCheckType checkType) { + this.checkType = checkType; + return this; + } + + public String getUpdateFields() { + return updateFields; + } + + public SysAssemble setUpdateFields(String updateFields) { + this.updateFields = updateFields; + return this; + } + + public String getPurgeSql() { + return purgeSql; + } + + public SysAssemble setPurgeSql(String purgeSql) { + this.purgeSql = purgeSql; + return this; + } + + public String getName() { + return name; + } + + public SysAssemble setName(String name) { + this.name = name; + return this; + } + + public SysAssembleUpdateType getUpdateType() { + return updateType; + } + + public SysAssemble setUpdateType(SysAssembleUpdateType updateType) { + this.updateType = updateType; + return this; + } + + public String getId() { + return id; + } + + public SysAssemble setId(String id) { + this.id = id; + return this; + } + public String getMenuId() { + return menuId; + } + + public SysAssemble setMenuId(String menuId) { + this.menuId = menuId; + return this; + } + public String getUserId() { + return userId; + } + + public SysAssemble setUserId(String userId) { + this.userId = userId; + return this; + } + public String getJobId() { + return jobId; + } + + public SysAssemble setJobId(String jobId) { + this.jobId = jobId; + return this; + } + public String getCron() { + return cron; + } + + public SysAssemble setCron(String cron) { + this.cron = cron; + return this; + } + public Boolean getBigdata() { + return bigdata; + } + + public SysAssemble setBigdata(Boolean bigdata) { + this.bigdata = bigdata; + return this; + } + public SysAssembleStatus getStatus() { + return status; + } + + public SysAssemble setStatus(SysAssembleStatus status) { + this.status = status; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssemble setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssemble setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssemble{" + + "id=" + id + + ", menuId=" + menuId + + ", userId=" + userId + + ", jobId=" + jobId + + ", cron=" + cron + + ", bigdata=" + bigdata + + ", status=" + status + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleApi.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleApi.java new file mode 100644 index 0000000..52fcf76 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleApi.java @@ -0,0 +1,121 @@ +package com.highdatas.mdm.entity; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +@TableName("sys_assemble_api") +public class SysAssembleApi extends Model<SysAssembleApi> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("parent_id") + private String parentId; + + private String url; + + private String headers; + + private Boolean pagination; + + private Integer size; + + private String pageurl; + + private String resultfield; + + public String getId() { + return id; + } + + public SysAssembleApi setId(String id) { + this.id = id; + return this; + } + public String getParentId() { + return parentId; + } + + public SysAssembleApi setParentId(String parentId) { + this.parentId = parentId; + return this; + } + public String getUrl() { + return url; + } + + public SysAssembleApi setUrl(String url) { + this.url = url; + return this; + } + public String getHeaders() { + return headers; + } + + public SysAssembleApi setHeaders(String headers) { + this.headers = headers; + return this; + } + public Boolean getPagination() { + return pagination; + } + + public SysAssembleApi setPagination(Boolean pagination) { + this.pagination = pagination; + return this; + } + public Integer getSize() { + return size; + } + + public SysAssembleApi setSize(Integer size) { + this.size = size; + return this; + } + public String getPageurl() { + return pageurl; + } + + public SysAssembleApi setPageurl(String pageurl) { + this.pageurl = pageurl; + return this; + } + public String getResultfield() { + return resultfield; + } + + public SysAssembleApi setResultfield(String resultfield) { + this.resultfield = resultfield; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleApi{" + + "id=" + id + + ", parentId=" + parentId + + ", url=" + url + + ", headers=" + headers + + ", pagination=" + pagination + + ", size=" + size + + ", pageurl=" + pageurl + + ", resultfield=" + resultfield + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleCommonparams.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleCommonparams.java new file mode 100644 index 0000000..68d9d67 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleCommonparams.java @@ -0,0 +1,125 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@TableName("sys_assemble_commonparams") +public class SysAssembleCommonparams extends Model<SysAssembleCommonparams> { + + private static final long serialVersionUID = 1L; + + private String id; + + private String code; + + private String name; + + private String val; + + @TableField("init_sql") + private String initSql; + + @TableField("update_sql") + private String updateSql; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getId() { + return id; + } + + public SysAssembleCommonparams setId(String id) { + this.id = id; + return this; + } + public String getCode() { + return code; + } + + public SysAssembleCommonparams setCode(String code) { + this.code = code; + return this; + } + public String getName() { + return name; + } + + public SysAssembleCommonparams setName(String name) { + this.name = name; + return this; + } + public String getVal() { + return val; + } + + public SysAssembleCommonparams setVal(String val) { + this.val = val; + return this; + } + public String getInitSql() { + return initSql; + } + + public SysAssembleCommonparams setInitSql(String initSql) { + this.initSql = initSql; + return this; + } + public String getUpdateSql() { + return updateSql; + } + + public SysAssembleCommonparams setUpdateSql(String updateSql) { + this.updateSql = updateSql; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleCommonparams setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleCommonparams setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleCommonparams{" + + "id=" + id + + ", code=" + code + + ", name=" + name + + ", val=" + val + + ", initSql=" + initSql + + ", updateSql=" + updateSql + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleDb.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleDb.java new file mode 100644 index 0000000..88b3598 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleDb.java @@ -0,0 +1,186 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@TableName("sys_assemble_db") +public class SysAssembleDb extends Model<SysAssembleDb> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("parent_id") + private String parentId; + + @TableField("datasource_type") + private String datasourceType; + + @TableField("datasource_name") + private String datasourceName; + + @TableField("ipaddress_port") + private String ipaddressPort; + + @TableField("database_name") + private String databaseName; + + @TableField("datasource_url") + private String datasourceUrl; + + @TableField("datasource_user") + private String datasourceUser; + + @TableField("datasource_pass") + private String datasourcePass; + + private Integer orderby; + + private Boolean active; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getId() { + return id; + } + + public SysAssembleDb setId(String id) { + this.id = id; + return this; + } + public String getParentId() { + return parentId; + } + + public SysAssembleDb setParentId(String parentId) { + this.parentId = parentId; + return this; + } + public String getDatasourceType() { + return datasourceType; + } + + public SysAssembleDb setDatasourceType(String datasourceType) { + this.datasourceType = datasourceType; + return this; + } + public String getDatasourceName() { + return datasourceName; + } + + public SysAssembleDb setDatasourceName(String datasourceName) { + this.datasourceName = datasourceName; + return this; + } + public String getIpaddressPort() { + return ipaddressPort; + } + + public SysAssembleDb setIpaddressPort(String ipaddressPort) { + this.ipaddressPort = ipaddressPort; + return this; + } + public String getDatabaseName() { + return databaseName; + } + + public SysAssembleDb setDatabaseName(String databaseName) { + this.databaseName = databaseName; + return this; + } + public String getDatasourceUrl() { + return datasourceUrl; + } + + public SysAssembleDb setDatasourceUrl(String datasourceUrl) { + this.datasourceUrl = datasourceUrl; + return this; + } + public String getDatasourceUser() { + return datasourceUser; + } + + public SysAssembleDb setDatasourceUser(String datasourceUser) { + this.datasourceUser = datasourceUser; + return this; + } + public String getDatasourcePass() { + return datasourcePass; + } + + public SysAssembleDb setDatasourcePass(String datasourcePass) { + this.datasourcePass = datasourcePass; + return this; + } + public Integer getOrderby() { + return orderby; + } + + public SysAssembleDb setOrderby(Integer orderby) { + this.orderby = orderby; + return this; + } + public Boolean getActive() { + return active; + } + + public SysAssembleDb setActive(Boolean active) { + this.active = active; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleDb setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleDb setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleDb{" + + "id=" + id + + ", parentId=" + parentId + + ", datasourceType=" + datasourceType + + ", datasourceName=" + datasourceName + + ", ipaddressPort=" + ipaddressPort + + ", databaseName=" + databaseName + + ", datasourceUrl=" + datasourceUrl + + ", datasourceUser=" + datasourceUser + + ", datasourcePass=" + datasourcePass + + ", orderby=" + orderby + + ", active=" + active + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleDbDetail.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbDetail.java new file mode 100644 index 0000000..21adabb --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbDetail.java @@ -0,0 +1,136 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +@TableName("sys_assemble_db_detail") +public class SysAssembleDbDetail extends Model<SysAssembleDbDetail> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("assemble_db_id") + private String assembleDbId; + + private String name; + + private String field; + + private Boolean extra; + + private String val; + + @TableField("update_sql") + private String updateSql; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getId() { + return id; + } + + public SysAssembleDbDetail setId(String id) { + this.id = id; + return this; + } + public String getAssembleDbId() { + return assembleDbId; + } + + public SysAssembleDbDetail setAssembleDbId(String assembleDbId) { + this.assembleDbId = assembleDbId; + return this; + } + public String getName() { + return name; + } + + public SysAssembleDbDetail setName(String name) { + this.name = name; + return this; + } + public String getField() { + return field; + } + + public SysAssembleDbDetail setField(String field) { + this.field = field; + return this; + } + public Boolean getExtra() { + return extra; + } + + public SysAssembleDbDetail setExtra(Boolean extra) { + this.extra = extra; + return this; + } + public String getVal() { + return val; + } + + public SysAssembleDbDetail setVal(String val) { + this.val = val; + return this; + } + public String getUpdateSql() { + return updateSql; + } + + public SysAssembleDbDetail setUpdateSql(String updateSql) { + this.updateSql = updateSql; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleDbDetail setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleDbDetail setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleDbDetail{" + + "id=" + id + + ", assembleDbId=" + assembleDbId + + ", name=" + name + + ", field=" + field + + ", extra=" + extra + + ", val=" + val + + ", updateSql=" + updateSql + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleDbField.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbField.java new file mode 100644 index 0000000..b127f83 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbField.java @@ -0,0 +1,102 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@TableName("sys_assemble_db_field") +public class SysAssembleDbField extends Model<SysAssembleDbField> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("parent_id") + private String parentId; + + private String name; + + private String field; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getId() { + return id; + } + + public SysAssembleDbField setId(String id) { + this.id = id; + return this; + } + public String getParentId() { + return parentId; + } + + public SysAssembleDbField setParentId(String parentId) { + this.parentId = parentId; + return this; + } + public String getName() { + return name; + } + + public SysAssembleDbField setName(String name) { + this.name = name; + return this; + } + public String getField() { + return field; + } + + public SysAssembleDbField setField(String field) { + this.field = field; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleDbField setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleDbField setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleDbField{" + + "id=" + id + + ", parentId=" + parentId + + ", name=" + name + + ", field=" + field + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleDbTable.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbTable.java new file mode 100644 index 0000000..2dc1b9b --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbTable.java @@ -0,0 +1,192 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.highdatas.mdm.pojo.SysAssembleTableType; + +import java.io.Serializable; +import java.util.List; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@TableName("sys_assemble_db_table") +public class SysAssembleDbTable extends Model<SysAssembleDbTable> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("parent_id") + private String parentId; + + private SysAssembleTableType type; + + @TableField("table_name") + private String tableName; + + @TableField("temp_table_name") + private String tempTableName; + + private String sql; + + private String filter; + + private Integer orderby; + + private Boolean active; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + private transient List<SysAssembleDbField> fieldList; + private transient String assembleId; + private transient String sqlId; + + public String getSqlId() { + return sqlId; + } + + public void setSqlId(String sqlId) { + this.sqlId = sqlId; + } + + public String getAssembleId() { + return assembleId; + } + + public SysAssembleDbTable setAssembleId(String assembleId) { + this.assembleId = assembleId; + return this; + } + + public List<SysAssembleDbField> getFieldList() { + return fieldList; + } + + public void setFieldList(List<SysAssembleDbField> fieldList) { + this.fieldList = fieldList; + } + + + public String getTempTableName() { + return tempTableName; + } + + public SysAssembleDbTable setTempTableName(String tempTableName) { + this.tempTableName = tempTableName; + return this; + } + + public String getId() { + return id; + } + + public SysAssembleDbTable setId(String id) { + this.id = id; + return this; + } + public String getParentId() { + return parentId; + } + + public SysAssembleDbTable setParentId(String parentId) { + this.parentId = parentId; + return this; + } + public SysAssembleTableType getType() { + return type; + } + + public SysAssembleDbTable setType(SysAssembleTableType type) { + this.type = type; + return this; + } + public String getTableName() { + return tableName; + } + + public SysAssembleDbTable setTableName(String tableName) { + this.tableName = tableName; + return this; + } + public String getSql() { + return sql; + } + + public SysAssembleDbTable setSql(String sql) { + this.sql = sql; + return this; + } + public String getFilter() { + return filter; + } + + public SysAssembleDbTable setFilter(String filter) { + this.filter = filter; + return this; + } + public Integer getOrderby() { + return orderby; + } + + public SysAssembleDbTable setOrderby(Integer orderby) { + this.orderby = orderby; + return this; + } + public Boolean getActive() { + return active; + } + + public SysAssembleDbTable setActive(Boolean active) { + this.active = active; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleDbTable setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleDbTable setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleDbTable{" + + "id=" + id + + ", parentId=" + parentId + + ", type=" + type + + ", tableName=" + tableName + + ", sql=" + sql + + ", filter=" + filter + + ", orderby=" + orderby + + ", active=" + active + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleDbdriver.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbdriver.java new file mode 100644 index 0000000..116a469 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleDbdriver.java @@ -0,0 +1,86 @@ +package com.highdatas.mdm.entity; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +@TableName("sys_assemble_dbdriver") +public class SysAssembleDbdriver extends Model<SysAssembleDbdriver> { + + private static final long serialVersionUID = 1L; + + private String id; + + private String type; + + private String driver; + @TableField("first_template") + private String firstTemplate; + + private Boolean active; + + public String getFirstTemplate() { + return firstTemplate; + } + + public void setFirstTemplate(String firstTemplate) { + this.firstTemplate = firstTemplate; + } + + public String getId() { + return id; + } + + public SysAssembleDbdriver setId(String id) { + this.id = id; + return this; + } + public String getType() { + return type; + } + + public SysAssembleDbdriver setType(String type) { + this.type = type; + return this; + } + public String getDriver() { + return driver; + } + + public SysAssembleDbdriver setDriver(String driver) { + this.driver = driver; + return this; + } + public Boolean getActive() { + return active; + } + + public SysAssembleDbdriver setActive(Boolean active) { + this.active = active; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleDbdriver{" + + "id=" + id + + ", type=" + type + + ", driver=" + driver + + ", active=" + active + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleDetail.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleDetail.java new file mode 100644 index 0000000..8a56693 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleDetail.java @@ -0,0 +1,79 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@TableName("sys_assemble_detail") +public class SysAssembleDetail extends Model<SysAssembleDetail> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("assemble_id") + private String assembleId; + + private String field; + + @TableField("create_time") + private Date createTime; + + public String getId() { + return id; + } + + public SysAssembleDetail setId(String id) { + this.id = id; + return this; + } + public String getAssembleId() { + return assembleId; + } + + public SysAssembleDetail setAssembleId(String assembleId) { + this.assembleId = assembleId; + return this; + } + public String getField() { + return field; + } + + public SysAssembleDetail setField(String field) { + this.field = field; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleDetail setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleDetail{" + + "id=" + id + + ", assembleId=" + assembleId + + ", field=" + field + + ", createTime=" + createTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleLog.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleLog.java new file mode 100644 index 0000000..5ec1ee1 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleLog.java @@ -0,0 +1,115 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.highdatas.mdm.pojo.SysAssembleLogStatus; + +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@TableName("sys_assemble_log") +public class SysAssembleLog extends Model<SysAssembleLog> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("assemble_id") + private String assembleId; + + private Integer cnt; + + private SysAssembleLogStatus status; + + private String message; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleLog setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + public String getMessage() { + return message; + } + + public SysAssembleLog setMessage(String message) { + this.message = message; + return this; + } + + public String getId() { + return id; + } + + public SysAssembleLog setId(String id) { + this.id = id; + return this; + } + public String getAssembleId() { + return assembleId; + } + + public SysAssembleLog setAssembleId(String assembleId) { + this.assembleId = assembleId; + return this; + } + public Integer getCnt() { + return cnt; + } + + public SysAssembleLog setCnt(Integer cnt) { + this.cnt = cnt; + return this; + } + public SysAssembleLogStatus getStatus() { + return status; + } + + public SysAssembleLog setStatus(SysAssembleLogStatus status) { + this.status = status; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleLog setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleLog{" + + "id=" + id + + ", assembleId=" + assembleId + + ", cnt=" + cnt + + ", status=" + status + + ", createTime=" + createTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleParams.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleParams.java new file mode 100644 index 0000000..38df3ec --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleParams.java @@ -0,0 +1,137 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@TableName("sys_assemble_params") +public class SysAssembleParams extends Model<SysAssembleParams> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("parent_id") + private String parentId; + + private String code; + + private String name; + + private String val; + + @TableField("init_sql") + private String initSql; + + @TableField("update_sql") + private String updateSql; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getId() { + return id; + } + + public SysAssembleParams setId(String id) { + this.id = id; + return this; + } + public String getParentId() { + return parentId; + } + + public SysAssembleParams setParentId(String parentId) { + this.parentId = parentId; + return this; + } + public String getCode() { + return code; + } + + public SysAssembleParams setCode(String code) { + this.code = code; + return this; + } + public String getName() { + return name; + } + + public SysAssembleParams setName(String name) { + this.name = name; + return this; + } + public String getVal() { + return val; + } + + public SysAssembleParams setVal(String val) { + this.val = val; + return this; + } + public String getInitSql() { + return initSql; + } + + public SysAssembleParams setInitSql(String initSql) { + this.initSql = initSql; + return this; + } + public String getUpdateSql() { + return updateSql; + } + + public SysAssembleParams setUpdateSql(String updateSql) { + this.updateSql = updateSql; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleParams setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleParams setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleParams{" + + "id=" + id + + ", parentId=" + parentId + + ", code=" + code + + ", name=" + name + + ", val=" + val + + ", initSql=" + initSql + + ", updateSql=" + updateSql + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysAssembleRule.java b/src/main/java/com/highdatas/mdm/entity/SysAssembleRule.java new file mode 100644 index 0000000..6565486 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysAssembleRule.java @@ -0,0 +1,92 @@ +package com.highdatas.mdm.entity; + +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +@TableName("sys_assemble_rule") +public class SysAssembleRule extends Model<SysAssembleRule> { + + private static final long serialVersionUID = 1L; + + private String id; + + @TableField("parent_id") + private String parentId; + + @TableField("rule_id") + private String ruleId; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + public String getId() { + return id; + } + + public SysAssembleRule setId(String id) { + this.id = id; + return this; + } + public String getParentId() { + return parentId; + } + + public SysAssembleRule setParentId(String parentId) { + this.parentId = parentId; + return this; + } + public String getRuleId() { + return ruleId; + } + + public SysAssembleRule setRuleId(String ruleId) { + this.ruleId = ruleId; + return this; + } + public Date getCreateTime() { + return createTime; + } + + public SysAssembleRule setCreateTime(Date createTime) { + this.createTime = createTime; + return this; + } + public Date getUpdateTime() { + return updateTime; + } + + public SysAssembleRule setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysAssembleRule{" + + "id=" + id + + ", parentId=" + parentId + + ", ruleId=" + ruleId + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysDbtype.java b/src/main/java/com/highdatas/mdm/entity/SysDbtype.java new file mode 100644 index 0000000..d1d8f05 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/entity/SysDbtype.java @@ -0,0 +1,77 @@ +package com.highdatas.mdm.entity; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.highdatas.mdm.pojo.DbAccessType; + +import java.io.Serializable; + +/** + * <p> + * + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@TableName("sys_dbtype") +public class SysDbtype extends Model<SysDbtype> { + + private static final long serialVersionUID = 1L; + + private String id; + + private DbAccessType type; + + private String name; + + private Boolean active; + + public String getId() { + return id; + } + + public SysDbtype setId(String id) { + this.id = id; + return this; + } + public DbAccessType getType() { + return type; + } + + public SysDbtype setType(DbAccessType type) { + this.type = type; + return this; + } + public String getName() { + return name; + } + + public SysDbtype setName(String name) { + this.name = name; + return this; + } + public Boolean getActive() { + return active; + } + + public SysDbtype setActive(Boolean active) { + this.active = active; + return this; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "SysDbtype{" + + "id=" + id + + ", type=" + type + + ", name=" + name + + ", active=" + active + + "}"; + } +} diff --git a/src/main/java/com/highdatas/mdm/entity/SysMenu.java b/src/main/java/com/highdatas/mdm/entity/SysMenu.java index a9e0bd8..afa50d0 100644 --- a/src/main/java/com/highdatas/mdm/entity/SysMenu.java +++ b/src/main/java/com/highdatas/mdm/entity/SysMenu.java @@ -42,10 +42,10 @@ private Integer orderNo; @TableField("create_time") - private transient Date createTime; + private Date createTime; @TableField("update_time") - private transient Date updateTime; + private Date updateTime; @TableField("data_type") private MaintainDataType dataType; diff --git a/src/main/java/com/highdatas/mdm/job/XxlJobHandler.java b/src/main/java/com/highdatas/mdm/job/XxlJobHandler.java new file mode 100644 index 0000000..8527d0f --- /dev/null +++ b/src/main/java/com/highdatas/mdm/job/XxlJobHandler.java @@ -0,0 +1,47 @@ +package com.highdatas.mdm.job; + +import com.highdatas.mdm.entity.SysAssemble; +import com.highdatas.mdm.service.ISysAssembleService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.log.XxlJobLogger; +import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.session.StandardSession; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.web.context.request.RequestContextHolder; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionContext; +import java.util.Enumeration; + +/** + * @author kimi + * @description + * @date 2020-03-02 9:35 + */ +@Slf4j +@Component +public class XxlJobHandler { + @Autowired + ISysAssembleService assembleService; + + @XxlJob("assembleJob") + public ReturnT<String> demoJobHandler(String assembleId) throws Exception { + XxlJobLogger.log("assemble Job start"); + if (StringUtils.isEmpty(assembleId)) { + XxlJobLogger.log("params: assembleId is null"); + } + SysAssemble assemble = assembleService.selectById(assembleId); + if (assemble == null) { + XxlJobLogger.log("params: assemble is not found"); + } + +// assembleService.run() + + return ReturnT.SUCCESS; + } + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleApiMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleApiMapper.java new file mode 100644 index 0000000..3246fd3 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleApiMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleApi; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +public interface SysAssembleApiMapper extends BaseMapper<SysAssembleApi> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleCommonparamsMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleCommonparamsMapper.java new file mode 100644 index 0000000..d9f9336 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleCommonparamsMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleCommonparams; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface SysAssembleCommonparamsMapper extends BaseMapper<SysAssembleCommonparams> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbDetailMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbDetailMapper.java new file mode 100644 index 0000000..275c42e --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbDetailMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleDbDetail; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +public interface SysAssembleDbDetailMapper extends BaseMapper<SysAssembleDbDetail> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbFieldMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbFieldMapper.java new file mode 100644 index 0000000..9643a59 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbFieldMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleDbField; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface SysAssembleDbFieldMapper extends BaseMapper<SysAssembleDbField> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbMapper.java new file mode 100644 index 0000000..6d1ced8 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleDb; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface SysAssembleDbMapper extends BaseMapper<SysAssembleDb> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbTableMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbTableMapper.java new file mode 100644 index 0000000..137d395 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbTableMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleDbTable; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface SysAssembleDbTableMapper extends BaseMapper<SysAssembleDbTable> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbdriverMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbdriverMapper.java new file mode 100644 index 0000000..3d686af --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDbdriverMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleDbdriver; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +public interface SysAssembleDbdriverMapper extends BaseMapper<SysAssembleDbdriver> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleDetailMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDetailMapper.java new file mode 100644 index 0000000..7e0de3f --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleDetailMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleDetail; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +public interface SysAssembleDetailMapper extends BaseMapper<SysAssembleDetail> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleLogMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleLogMapper.java new file mode 100644 index 0000000..aeda78c --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleLogMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleLog; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +public interface SysAssembleLogMapper extends BaseMapper<SysAssembleLog> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleMapper.java new file mode 100644 index 0000000..2fd8ffe --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssemble; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface SysAssembleMapper extends BaseMapper<SysAssemble> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleParamsMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleParamsMapper.java new file mode 100644 index 0000000..88083b4 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleParamsMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleParams; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface SysAssembleParamsMapper extends BaseMapper<SysAssembleParams> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysAssembleRuleMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysAssembleRuleMapper.java new file mode 100644 index 0000000..7681554 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysAssembleRuleMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysAssembleRule; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +public interface SysAssembleRuleMapper extends BaseMapper<SysAssembleRule> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/SysDbtypeMapper.java b/src/main/java/com/highdatas/mdm/mapper/SysDbtypeMapper.java new file mode 100644 index 0000000..6bb288b --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/SysDbtypeMapper.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.mapper; + +import com.highdatas.mdm.entity.SysDbtype; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * Mapper 鎺ュ彛 + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +public interface SysDbtypeMapper extends BaseMapper<SysDbtype> { + +} diff --git a/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java b/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java index af3986b..4b821ff 100644 --- a/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java +++ b/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java @@ -1,6 +1,7 @@ package com.highdatas.mdm.mapper; import com.highdatas.mdm.entity.TableSchemaResult; +import io.swagger.models.auth.In; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -50,9 +51,11 @@ void tempCreate2std(@Param("tableName") String tableName,@Param("tempFields") String tempFields, @Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId); List<Map<String,Object>> tempByOperate(@Param("operate") String operate, @Param("fields") String fields, @Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId); - Long tempDeal(@Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId); + Integer tempDeal(@Param("tableTempName") String tableTempName, @Param("maintainId") String maintainId); - Integer insertMatintainDetailFromTemp(@Param("maintainId")String maintainId, @Param("tableTempName")String tableTempName); + Integer insertMatintainDetailFromTemp(@Param("maintainId")String maintainId, @Param("tableTempName")String tableTempName, @Param("operate") String operate); + + Integer insertMatintainDetailFromStandrad(@Param("maintainId")String maintainId, @Param("tableTempName")String tableTempName); Integer updateStdId(@Param("tableTempName")String tableTempName); @@ -60,5 +63,6 @@ Integer deleteRecordByMaintainId(@Param("tableTempName")String tableTempName, @Param("stdId") String stdId, @Param("maintainId")String maintainId); + Integer insertRecordFromStandrad(@Param("tableName")String tableName, @Param("recordTableName")String recordTableName, @Param("tempFieldList")String tempFieldList); } diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleApiMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleApiMapper.xml new file mode 100644 index 0000000..3f9af28 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleApiMapper.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleApiMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleApi"> + <id column="id" property="id" /> + <result column="parent_id" property="parentId" /> + <result column="url" property="url" /> + <result column="headers" property="headers" /> + <result column="pagination" property="pagination" /> + <result column="size" property="size" /> + <result column="pageurl" property="pageurl" /> + <result column="resultfield" property="resultfield" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleCommonparamsMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleCommonparamsMapper.xml new file mode 100644 index 0000000..31c424e --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleCommonparamsMapper.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleCommonparamsMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleCommonparams"> + <id column="id" property="id" /> + <result column="code" property="code" /> + <result column="name" property="name" /> + <result column="val" property="val" /> + <result column="init_sql" property="initSql" /> + <result column="update_sql" property="updateSql" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbDetailMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbDetailMapper.xml new file mode 100644 index 0000000..e3f21cf --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbDetailMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleDbDetailMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleDbDetail"> + <id column="id" property="id" /> + <result column="assemble_db_id" property="assembleDbId" /> + <result column="name" property="name" /> + <result column="field" property="field" /> + <result column="extra" property="extra" /> + <result column="val" property="val" /> + <result column="update_sql" property="updateSql" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbFieldMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbFieldMapper.xml new file mode 100644 index 0000000..9d95c3e --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbFieldMapper.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleDbFieldMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleDbField"> + <id column="id" property="id" /> + <result column="parent_id" property="parentId" /> + <result column="name" property="name" /> + <result column="field" property="field" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbMapper.xml new file mode 100644 index 0000000..294e408 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbMapper.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleDbMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleDb"> + <id column="id" property="id" /> + <result column="parent_id" property="parentId" /> + <result column="datasource_type" property="datasourceType" /> + <result column="datasource_name" property="datasourceName" /> + <result column="ipaddress_port" property="ipaddressPort" /> + <result column="database_name" property="databaseName" /> + <result column="datasource_url" property="datasourceUrl" /> + <result column="datasource_user" property="datasourceUser" /> + <result column="datasource_pass" property="datasourcePass" /> + <result column="orderby" property="orderby" /> + <result column="active" property="active" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbTableMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbTableMapper.xml new file mode 100644 index 0000000..3a0d29b --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbTableMapper.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleDbTableMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleDbTable"> + <id column="id" property="id" /> + <result column="parent_id" property="parentId" /> + <result column="type" property="type" /> + <result column="table_name" property="tableName" /> + <result column="sql" property="sql" /> + <result column="filter" property="filter" /> + <result column="orderby" property="orderby" /> + <result column="active" property="active" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbdriverMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbdriverMapper.xml new file mode 100644 index 0000000..77232a9 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDbdriverMapper.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleDbdriverMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleDbdriver"> + <id column="id" property="id" /> + <result column="type" property="type" /> + <result column="driver" property="driver" /> + <result column="active" property="active" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDetailMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDetailMapper.xml new file mode 100644 index 0000000..4d2d6f0 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleDetailMapper.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleDetailMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleDetail"> + <id column="id" property="id" /> + <result column="assemble_id" property="assembleId" /> + <result column="field" property="field" /> + <result column="create_time" property="createTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleLogMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleLogMapper.xml new file mode 100644 index 0000000..fcdd9d4 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleLogMapper.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleLogMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleLog"> + <id column="id" property="id" /> + <result column="assemble_id" property="assembleId" /> + <result column="cnt" property="cnt" /> + <result column="status" property="status" /> + <result column="create_time" property="createTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleMapper.xml new file mode 100644 index 0000000..72d47b0 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssemble"> + <id column="id" property="id" /> + <result column="menu_id" property="menuId" /> + <result column="user_id" property="userId" /> + <result column="job_id" property="jobId" /> + <result column="cron" property="cron" /> + <result column="bigdata" property="bigdata" /> + <result column="status" property="status" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleParamsMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleParamsMapper.xml new file mode 100644 index 0000000..5e5b9f6 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleParamsMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleParamsMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleParams"> + <id column="id" property="id" /> + <result column="parent_id" property="parentId" /> + <result column="code" property="code" /> + <result column="name" property="name" /> + <result column="val" property="val" /> + <result column="init_sql" property="initSql" /> + <result column="update_sql" property="updateSql" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleRuleMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleRuleMapper.xml new file mode 100644 index 0000000..6f67a7c --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysAssembleRuleMapper.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysAssembleRuleMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysAssembleRule"> + <id column="id" property="id" /> + <result column="parent_id" property="parentId" /> + <result column="rule_id" property="ruleId" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/SysDbtypeMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/SysDbtypeMapper.xml new file mode 100644 index 0000000..a2d353b --- /dev/null +++ b/src/main/java/com/highdatas/mdm/mapper/xml/SysDbtypeMapper.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.highdatas.mdm.mapper.SysDbtypeMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.SysDbtype"> + <result column="id" property="id" /> + <result column="type" property="type" /> + <result column="name" property="name" /> + <result column="active" property="active" /> + </resultMap> + +</mapper> diff --git a/src/main/java/com/highdatas/mdm/pojo/DbAccessType.java b/src/main/java/com/highdatas/mdm/pojo/DbAccessType.java new file mode 100644 index 0000000..50f7b68 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/DbAccessType.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-15 22:57 + */ + + +public enum DbAccessType { + relational,unRelational +} diff --git a/src/main/java/com/highdatas/mdm/pojo/SysAssembleCheckType.java b/src/main/java/com/highdatas/mdm/pojo/SysAssembleCheckType.java new file mode 100644 index 0000000..a349143 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/SysAssembleCheckType.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-17 15:30 + */ + + +public enum SysAssembleCheckType { + successAdd,partSuccessAdd,total +} diff --git a/src/main/java/com/highdatas/mdm/pojo/SysAssembleLogStatus.java b/src/main/java/com/highdatas/mdm/pojo/SysAssembleLogStatus.java new file mode 100644 index 0000000..b2fe9e0 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/SysAssembleLogStatus.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-17 15:30 + */ + + +public enum SysAssembleLogStatus { + working,success,defeat +} diff --git a/src/main/java/com/highdatas/mdm/pojo/SysAssembleRunStatus.java b/src/main/java/com/highdatas/mdm/pojo/SysAssembleRunStatus.java new file mode 100644 index 0000000..32c460f --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/SysAssembleRunStatus.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-17 15:30 + */ + + +public enum SysAssembleRunStatus { + working,success,fail +} diff --git a/src/main/java/com/highdatas/mdm/pojo/SysAssembleStatus.java b/src/main/java/com/highdatas/mdm/pojo/SysAssembleStatus.java new file mode 100644 index 0000000..5921cbb --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/SysAssembleStatus.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-17 15:30 + */ + + +public enum SysAssembleStatus { + working,edit,freeze, +} diff --git a/src/main/java/com/highdatas/mdm/pojo/SysAssembleTableType.java b/src/main/java/com/highdatas/mdm/pojo/SysAssembleTableType.java new file mode 100644 index 0000000..007e093 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/SysAssembleTableType.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-17 15:30 + */ + + +public enum SysAssembleTableType { + table,sql +} diff --git a/src/main/java/com/highdatas/mdm/pojo/SysAssembleUpdateType.java b/src/main/java/com/highdatas/mdm/pojo/SysAssembleUpdateType.java new file mode 100644 index 0000000..67a0fae --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/SysAssembleUpdateType.java @@ -0,0 +1,12 @@ +package com.highdatas.mdm.pojo; + +/** + * @author kimi + * @description + * @date 2020-02-17 15:30 + */ + + +public enum SysAssembleUpdateType { + All,Increment +} diff --git a/src/main/java/com/highdatas/mdm/pojo/kettle/BigDataDataSourceInfo.java b/src/main/java/com/highdatas/mdm/pojo/kettle/BigDataDataSourceInfo.java new file mode 100644 index 0000000..2b16496 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/kettle/BigDataDataSourceInfo.java @@ -0,0 +1,165 @@ +package com.highdatas.mdm.pojo.kettle; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.DruidPooledConnection; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; +import java.sql.SQLException; +import java.util.List; + +/** + * Created by LF on 2017/4/18. + */ +@ConfigurationProperties(prefix = "master.unbigdata.db") +@Component +public class BigDataDataSourceInfo implements DataSourceInfo{ + + @Value("${master.unbigdata.db.port}") + private String dbPort; + + @Value("${master.unbigdata.db.schema}") + private String dbName; + + @Value("${master.unbigdata.db.type}") + private String dbType; + + @Value("${master.unbigdata.db.host}") + private String dbHostName; + + @Value("${master.unbigdata.db.url}") + private String dbUrl; + + @Value("${spring.datasource.username}") + private String username; + + @Value("${spring.datasource.password}") + private String password; + + @Value("${spring.datasource.driver-class-name}") + private String driverClassName; + + private DruidDataSource datasource; + + public String getDbPort() { + return dbPort; + } + + public void setDbPort(String dbPort) { + this.dbPort = dbPort; + } + + public String getDbName() { + return dbName; + } + + public void setDbName(String dbName) { + this.dbName = dbName; + } + + public String getDbHostName() { + return dbHostName; + } + + public void setDbHostName(String dbHostName) { + this.dbHostName = dbHostName; + } + + public String getDbType() { + return dbType; + } + + public void setDbType(String dbType) { + this.dbType = dbType; + } + + public String getDbUrl() { + return dbUrl; + } + + public void setDbUrl(String dbUrl) { + this.dbUrl = dbUrl; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + @Bean //澹版槑鍏朵负Bean瀹炰緥 + @Primary //鍦ㄥ悓鏍风殑DataSource涓紝棣栧厛浣跨敤琚爣娉ㄧ殑DataSource + public DataSource dataSource() { + datasource = new DruidDataSource(); + + //datasource.setUrl("jdbc:mysql://localhost:3306/ssm?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8"); + //datasource.setUsername("root"); + //datasource.setPassword("123456"); + //datasource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + datasource.setUrl(this.dbUrl); + datasource.setUsername(this.username); + datasource.setPassword(this.password); + datasource.setDriverClassName(this.driverClassName); + + return this.datasource; + } + + @Override + public boolean createTable(String assembleTempTableName, List<String> fieldList) { + return false; + } + + @Override + public boolean checkFieldList(String tableName, List<String> fieldList) { + return false; + } + + @Override + public boolean checkTableExists(String assembleTempTableName) { + return false; + } + + @Override + public List<String> getFieldsFromTable(String tableName) { + return null; + } + + @Bean + @Primary + public DruidPooledConnection conn() throws SQLException { + return this.datasource.getConnection(); + } + + @Override + public boolean truncateData(String tempTableName) { + return true; + } + + @Override + public boolean dropData(String tempTableName) { + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/highdatas/mdm/pojo/kettle/DataSourceInfo.java b/src/main/java/com/highdatas/mdm/pojo/kettle/DataSourceInfo.java new file mode 100644 index 0000000..9e75e9c --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/kettle/DataSourceInfo.java @@ -0,0 +1,27 @@ +package com.highdatas.mdm.pojo.kettle; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +/** + * @author kimi + * @description + * @date 2020-02-21 21:23 + */ + + +public interface DataSourceInfo { + + boolean createTable(String assembleTempTableName, List<String> fieldList); + + boolean checkFieldList(String tableName, List<String> fieldList); + + boolean checkTableExists(String assembleTempTableName); + + List<String> getFieldsFromTable(String tableName); + Connection conn() throws SQLException; + + boolean truncateData(String tempTableName); + boolean dropData(String tempTableName); +} diff --git a/src/main/java/com/highdatas/mdm/pojo/kettle/KettleDBTrans.java b/src/main/java/com/highdatas/mdm/pojo/kettle/KettleDBTrans.java new file mode 100644 index 0000000..3c4348e --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/kettle/KettleDBTrans.java @@ -0,0 +1,72 @@ +package com.highdatas.mdm.pojo.kettle; + +import com.alibaba.fastjson.JSONObject; +import com.highdatas.mdm.entity.SysAssemble; +import org.pentaho.di.core.database.Database; +import org.pentaho.di.trans.TransMeta; +import org.pentaho.di.trans.steps.tableinput.TableInputMeta; +import org.pentaho.di.trans.steps.tableoutput.TableOutputMeta; + +public class KettleDBTrans { + + private SysAssemble assemble; + private TransMeta transMeta; + private Database dsInput; + private Database dsOutput; + private TableInputMeta tableInputMeta; + private TableOutputMeta talbeOutputMeta; + + public SysAssemble getAssemble() { + return assemble; + } + + public void setAssemble(SysAssemble assemble) { + this.assemble = assemble; + } + + public TransMeta getTransMeta() { + return transMeta; + } + + public void setTransMeta(TransMeta transMeta) { + this.transMeta = transMeta; + } + + public Database getDsInput() { + return dsInput; + } + + public void setDsInput(Database dsInput) { + this.dsInput = dsInput; + } + + public Database getDsOutput() { + return dsOutput; + } + + public void setDsOutput(Database dsOutput) { + this.dsOutput = dsOutput; + } + + public TableInputMeta getTableInputMeta() { + return tableInputMeta; + } + + public void setTableInputMeta(TableInputMeta tableInputMeta) { + this.tableInputMeta = tableInputMeta; + } + + public TableOutputMeta getTalbeOutputMeta() { + return talbeOutputMeta; + } + + public void setTalbeOutputMeta(TableOutputMeta talbeOutputMeta) { + this.talbeOutputMeta = talbeOutputMeta; + } + +} + + + + + diff --git a/src/main/java/com/highdatas/mdm/pojo/kettle/TableColumn.java b/src/main/java/com/highdatas/mdm/pojo/kettle/TableColumn.java new file mode 100644 index 0000000..c9a4362 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/kettle/TableColumn.java @@ -0,0 +1,33 @@ +package com.highdatas.mdm.pojo.kettle; + +public class TableColumn { + + private String columnName; + private String columnType; + private String columnLength; + + public String getColumnName() { + return columnName; + } + + public void setColumnName(String columnName) { + this.columnName = columnName; + } + + public String getColumnType() { + return columnType; + } + + public void setColumnType(String columnType) { + this.columnType = columnType; + } + + public String getColumnLength() { + return columnLength; + } + + public void setColumnLength(String columnLength) { + this.columnLength = columnLength; + } + +} diff --git a/src/main/java/com/highdatas/mdm/pojo/kettle/UnBigDataDataSourceInfo.java b/src/main/java/com/highdatas/mdm/pojo/kettle/UnBigDataDataSourceInfo.java new file mode 100644 index 0000000..b1cc800 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/pojo/kettle/UnBigDataDataSourceInfo.java @@ -0,0 +1,301 @@ +package com.highdatas.mdm.pojo.kettle; + +import com.alibaba.druid.pool.DruidDataSource; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; +import java.sql.*; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by LF on 2017/4/18. + */ +@ConfigurationProperties(prefix = "master.unbigdata.db") +@Component +public class UnBigDataDataSourceInfo implements DataSourceInfo{ + @Autowired + private DataSource dataSource; + + @Value("${master.unbigdata.db.port}") + private String dbPort; + + @Value("${master.unbigdata.db.schema}") + private String dbName; + + @Value("${master.unbigdata.db.type}") + private String dbType; + + @Value("${master.unbigdata.db.host}") + private String dbHostName; + + @Value("${master.unbigdata.db.url}") + private String dbUrl; + + @Value("${spring.datasource.username}") + private String username; + + @Value("${spring.datasource.password}") + private String password; + + @Value("${spring.datasource.driver-class-name}") + private String driverClassName; + + private DruidDataSource datasource; + + public String getDbPort() { + return dbPort; + } + + public void setDbPort(String dbPort) { + this.dbPort = dbPort; + } + + public String getDbName() { + return dbName; + } + + public void setDbName(String dbName) { + this.dbName = dbName; + } + + public String getDbHostName() { + return dbHostName; + } + + public void setDbHostName(String dbHostName) { + this.dbHostName = dbHostName; + } + + public String getDbType() { + return dbType; + } + + public void setDbType(String dbType) { + this.dbType = dbType; + } + + public String getDbUrl() { + return dbUrl; + } + + public void setDbUrl(String dbUrl) { + this.dbUrl = dbUrl; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + + @Override + public boolean createTable(String assembleTempTableName, List<String> fieldList) { + String fieldStr = fieldList.stream().map(s -> MessageFormat.format(Constant.CreateFieldMysql,s)).collect(Collectors.joining(Constant.COMMA)); + String create_sql = MessageFormat.format(Constant.CreateTableMysql, assembleTempTableName, fieldStr); + Connection conn = null; + try { + conn = conn(); + PreparedStatement preparedStatement = conn.prepareStatement(create_sql); + preparedStatement.execute(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + } + } + + @Override + public boolean checkFieldList(String tableName, List<String> fieldList) { + Connection conn = null; + try { + + conn = conn(); + PreparedStatement preparedStatement = conn.prepareStatement(MessageFormat.format(Constant.selectFieldSqlMysqlTemplate, tableName)); + ResultSet resultSet = preparedStatement.executeQuery(); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + List<String> tableFieldList = new ArrayList<>(); + for (int i = 1; i <= columnCount; i++) { + tableFieldList.add(metaData.getColumnLabel(i)) ; + } + return tableFieldList.containsAll(fieldList); + } catch (SQLException e) { + e.printStackTrace(); + return false; + }finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + } + + + } + + @Override + public boolean checkTableExists(String assembleTempTableName) { + Connection conn = null; + try { + conn = conn(); + PreparedStatement preparedStatement = conn.prepareStatement(MessageFormat.format(Constant.checkTableByNameBySchema, DbUtils.quotedStr(this.dbName), DbUtils.quotedStr(assembleTempTableName))); + ResultSet resultSet = preparedStatement.executeQuery(); + resultSet.last(); + int row = resultSet.getRow(); + if (row > 0) { + return true; + }else { + return false; + } + } catch (SQLException e) { + e.printStackTrace(); + return false; + }finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + } + + } + + @Override + public List<String> getFieldsFromTable(String tableName) { + Connection conn = null; + try { + conn = conn(); + PreparedStatement preparedStatement = conn.prepareStatement(MessageFormat.format(Constant.selectFieldSqlMysqlTemplate, tableName)); + ResultSet resultSet = preparedStatement.executeQuery(); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + List<String> tableFieldList = new ArrayList<>(); + for (int i = 1; i <= columnCount; i++) { + tableFieldList.add(metaData.getColumnLabel(i)) ; + } + return tableFieldList; + } catch (SQLException e) { + e.printStackTrace(); + return null; + }finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + } + } + + @Bean + @Primary + public Connection conn() throws SQLException { + return dataSource.getConnection(); + } + + @Override + public boolean truncateData(String tempTableName) { + boolean exists = checkTableExists(tempTableName); + if (!exists) { + return false; + } + String truncateData = MessageFormat.format(Constant.truncateTableMysql, tempTableName); + Connection conn = null; + try { + conn = conn(); + PreparedStatement preparedStatement = conn.prepareStatement(truncateData); + preparedStatement.execute(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + } + } + + @Override + public boolean dropData(String tempTableName) { + boolean exists = checkTableExists(tempTableName); + if (!exists) { + return true; + } + String truncateData = MessageFormat.format(Constant.DropTableMysql, tempTableName); + Connection conn = null; + try { + conn = conn(); + PreparedStatement preparedStatement = conn.prepareStatement(truncateData); + preparedStatement.execute(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleApiService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleApiService.java new file mode 100644 index 0000000..1f1571d --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleApiService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleApi; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +public interface ISysAssembleApiService extends IService<SysAssembleApi> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleCommonparamsService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleCommonparamsService.java new file mode 100644 index 0000000..4be00a7 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleCommonparamsService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleCommonparams; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface ISysAssembleCommonparamsService extends IService<SysAssembleCommonparams> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleDbDetailService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbDetailService.java new file mode 100644 index 0000000..f71adf3 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbDetailService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleDbDetail; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +public interface ISysAssembleDbDetailService extends IService<SysAssembleDbDetail> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleDbFieldService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbFieldService.java new file mode 100644 index 0000000..8c40ff2 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbFieldService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleDbField; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface ISysAssembleDbFieldService extends IService<SysAssembleDbField> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleDbService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbService.java new file mode 100644 index 0000000..369d990 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbService.java @@ -0,0 +1,27 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleDb; +import com.baomidou.mybatisplus.service.IService; + +import java.sql.Connection; +import java.util.List; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface ISysAssembleDbService extends IService<SysAssembleDb> { + + boolean testConnection(String parentId); + boolean testSql(String parentId, String sql); + + List<String> getFieldsBySql(String parentId, String sql); + + Connection getConnection(String dbId); + + List<String> getFieldsByTableName(String parentId, String tableName); +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleDbTableService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbTableService.java new file mode 100644 index 0000000..7943410 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbTableService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleDbTable; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface ISysAssembleDbTableService extends IService<SysAssembleDbTable> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleDbdriverService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbdriverService.java new file mode 100644 index 0000000..6747985 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleDbdriverService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleDbdriver; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +public interface ISysAssembleDbdriverService extends IService<SysAssembleDbdriver> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleDetailService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleDetailService.java new file mode 100644 index 0000000..7a3aacc --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleDetailService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleDetail; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +public interface ISysAssembleDetailService extends IService<SysAssembleDetail> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleLogService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleLogService.java new file mode 100644 index 0000000..5aad2ef --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleLogService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleLog; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +public interface ISysAssembleLogService extends IService<SysAssembleLog> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleParamsService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleParamsService.java new file mode 100644 index 0000000..5047c9d --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleParamsService.java @@ -0,0 +1,17 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleParams; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface ISysAssembleParamsService extends IService<SysAssembleParams> { + + boolean updateCornVal(String assembleId, String cron); +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleRuleService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleRuleService.java new file mode 100644 index 0000000..5849472 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleRuleService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssembleRule; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +public interface ISysAssembleRuleService extends IService<SysAssembleRule> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysAssembleService.java b/src/main/java/com/highdatas/mdm/service/ISysAssembleService.java new file mode 100644 index 0000000..8909d6a --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysAssembleService.java @@ -0,0 +1,23 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysAssemble; +import com.baomidou.mybatisplus.service.IService; +import com.highdatas.mdm.pojo.Result; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpSession; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +public interface ISysAssembleService extends IService<SysAssemble> { + + + @Transactional(rollbackFor = {Exception.class, Error.class}) + Result run(String id, HttpSession session); +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysDbtypeService.java b/src/main/java/com/highdatas/mdm/service/ISysDbtypeService.java new file mode 100644 index 0000000..07227ad --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/ISysDbtypeService.java @@ -0,0 +1,16 @@ +package com.highdatas.mdm.service; + +import com.highdatas.mdm.entity.SysDbtype; +import com.baomidou.mybatisplus.service.IService; + +/** + * <p> + * 鏈嶅姟绫� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +public interface ISysDbtypeService extends IService<SysDbtype> { + +} diff --git a/src/main/java/com/highdatas/mdm/service/ISysMenuService.java b/src/main/java/com/highdatas/mdm/service/ISysMenuService.java index 46ecf3e..b6fff76 100644 --- a/src/main/java/com/highdatas/mdm/service/ISysMenuService.java +++ b/src/main/java/com/highdatas/mdm/service/ISysMenuService.java @@ -3,6 +3,9 @@ import com.highdatas.mdm.entity.SysMenu; import com.baomidou.mybatisplus.service.IService; +import java.util.LinkedHashSet; +import java.util.Set; + /** * <p> * 鏈嶅姟绫� @@ -14,4 +17,5 @@ public interface ISysMenuService extends IService<SysMenu> { + LinkedHashSet<String> getByParentId(LinkedHashSet<String> parentIdSet); } diff --git a/src/main/java/com/highdatas/mdm/service/MasterDataService.java b/src/main/java/com/highdatas/mdm/service/MasterDataService.java index 543016d..02b1c8c 100644 --- a/src/main/java/com/highdatas/mdm/service/MasterDataService.java +++ b/src/main/java/com/highdatas/mdm/service/MasterDataService.java @@ -1,6 +1,8 @@ package com.highdatas.mdm.service; +import com.highdatas.mdm.entity.Maintain; import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.SysAssembleUpdateType; import java.util.List; @@ -76,4 +78,6 @@ Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, String version, boolean findMax); Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax); + + Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId); } diff --git a/src/main/java/com/highdatas/mdm/service/act/impl/TaskServiceImpl.java b/src/main/java/com/highdatas/mdm/service/act/impl/TaskServiceImpl.java index dcc857c..53b9813 100644 --- a/src/main/java/com/highdatas/mdm/service/act/impl/TaskServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/act/impl/TaskServiceImpl.java @@ -90,7 +90,7 @@ public List<String> getTodoTask() { TUser onlineUser = getOnlineUser(); Set<String> result = new HashSet<>(); - //List<Task> list1 = taskService.createTaskQuery().active().list(); + //List<Task> list1 = TimeTaskService.createTaskQuery().active().list(); List<Task> list = taskService.createTaskQuery().taskAssignee(onlineUser.getUserId()).active().list(); result.addAll(list.stream().map(task -> task.getProcessInstanceId()).collect(Collectors.toList())); diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java index fc3971f..b1e83e9 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java @@ -98,7 +98,10 @@ if (status.equals(ActivitiStatus.close)) { String collect = maintainDetailList.stream().map(detail -> DbUtils.quotedStr(detail.getPreMergeId())).collect(Collectors.joining(Constant.COMMA)); //delete temp - masterDataService.delete(tableName + Constant.RECORD, "id in (" +collect+ ")"); + if (!StringUtils.isEmpty(collect)) { + masterDataService.delete(tableName + Constant.RECORD, "id in (" +collect+ ")"); + } + //delete detail for (MaintainDetail maintainDetail : maintainDetailList) { maintainDetail.deleteById(); @@ -173,7 +176,7 @@ @Override public Result getUnSubmitData(String tableName, Integer pageNo, String pageSize, String whereSegment) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNull("flow_id").orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNull("flow_id").orderBy("order_no desc"); Maintain maintain = selectOne(versionWrapper); if (maintain == null) { return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); @@ -212,7 +215,7 @@ @Override public Maintain getMaxVersion(String tableName) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("order_no desc"); Maintain maxVersion = selectOne(versionWrapper); return maxVersion; @@ -220,7 +223,7 @@ @Override public Maintain getUnFlowMaxVersion(String tableName) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().isNull("flow_id").eq("table_name", tableName).orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().isNull("flow_id").eq("table_name", tableName).orderBy("order_no desc"); Maintain maxVersion = selectOne(versionWrapper); return maxVersion; @@ -229,7 +232,7 @@ @Override public Maintain getInvalidMaxVersion(String tableName) { Maintain result = null; - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("order_no desc"); List<Maintain> maintainList = selectList(versionWrapper); @@ -279,7 +282,7 @@ @Override public Maintain getNowVersion(String tableName) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no desc"); List<Maintain> maintains = selectList(versionWrapper); for (Maintain maintain : maintains) { @@ -299,7 +302,7 @@ @Override public Maintain getRecentHistoryVersion(String tableName) { Maintain nowMaintain = null; - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no desc"); List<Maintain> maintains = selectList(versionWrapper); for (Maintain maintain : maintains) { Flows flows = flowsService.selectById(maintain.getFlowId()); @@ -316,7 +319,7 @@ } } if (nowMaintain == null) { - nowMaintain = selectOne(new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc")); + nowMaintain = selectOne(new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("order_no desc")); } int orderNo = nowMaintain.getOrderNo(); Maintain nowVersion = getNowVersion(tableName); diff --git a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java index 855e7a2..18c90e4 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java @@ -4,23 +4,21 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.highdatas.mdm.entity.Flows; -import com.highdatas.mdm.entity.Maintain; -import com.highdatas.mdm.entity.SysField; -import com.highdatas.mdm.entity.TableSchemaResult; +import com.highdatas.mdm.entity.*; import com.highdatas.mdm.mapper.TableInfoMapper; import com.highdatas.mdm.pojo.*; -import com.highdatas.mdm.service.IFlowsService; -import com.highdatas.mdm.service.IMaintainService; -import com.highdatas.mdm.service.ISysFieldService; -import com.highdatas.mdm.service.MasterDataService; +import com.highdatas.mdm.service.*; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.ContentBuilder; import com.highdatas.mdm.util.DbUtils; import org.apache.commons.lang3.StringUtils; +import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.sql.Connection; +import java.sql.SQLException; import java.text.MessageFormat; import java.util.*; import java.util.stream.Collectors; @@ -34,14 +32,19 @@ @Service public class MasterDataServiceImpl implements MasterDataService { @Autowired + IMenuMappingService menuMappingService; + @Autowired TableInfoMapper mapper; @Autowired ISysFieldService fieldService; @Autowired IMaintainService maintainService; @Autowired + IMaintainDetailService maintainDetailService; + @Autowired IFlowsService flowsService; - + @Resource + protected SqlSessionTemplate sqlSessionTemplate; @Override public Result selectById(String tableName, String id) { try{ @@ -391,7 +394,107 @@ return Result.success(resultobject); } - //bak + @Override + public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId) { + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name",tableName)); + SysOperateLog operateLog = new SysOperateLog(); + + Maintain maxVersion = maintainService.getMaxVersion(tableName); + Maintain maintain = new Maintain(); + String biggerVersion = null; + if (maxVersion == null) { + biggerVersion = Constant.VERSION_Default; + maintain.setOrderNo(0); + operateLog.setOperate("鍒濆鍖栦富棰樻暟鎹�"); + } else { + operateLog.setOperate("鏇存柊涓婚"); + String flowId = maxVersion.getFlowId(); + String mVersion = maxVersion.getVersion(); + if (StringUtils.isEmpty(flowId)) { + biggerVersion = mVersion; + maintain.setOrderNo(maxVersion.getOrderNo()); + String tempName = maxVersion.getTableName() + Constant.RECORD; + + mapper.deleteTempByMaintainId(tempName, DbUtils.quotedStr(maxVersion.getId())); + maintainDetailService.delete(new EntityWrapper<MaintainDetail>().eq("parent_id", maxVersion.getId())); + + maxVersion.deleteById(); + }else { + biggerVersion = DbUtils.versionAddBig(mVersion); + maintain.setOrderNo(DbUtils.getOrderNoAdd(maxVersion.getOrderNo())); + } + } + + String uuid = DbUtils.getUUID(); + maintain.setId(uuid); + + maintain.setVersion(biggerVersion); + maintain.setChargeId(userId); + maintain.setTableName(tableName); + maintain.setCreateTime(new Date()); + + Connection connection = sqlSessionTemplate.getConnection(); + try { + mapper.insertMatintainDetailFromTemp(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD , DbUtils.quotedStr(Operate.create.toString())); + connection.commit(); + mapper.updateStdId( maintain.getTableName() + Constant.RECORD); + connection.commit(); + Integer aLong = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId())); + connection.commit(); + if (aLong == null) { + maintain.setDesp("涓婁紶鏁版嵁"); + } + maintain.setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); + + if (uploadType.equals(SysAssembleUpdateType.All)) { + List<TableSchemaResult> tableField = mapper.getTableField(tableName); + List<String> tableFieldList = tableField.stream().map(tableSchemaResult -> tableSchemaResult.getFieldName()).collect(Collectors.toList()); + tableFieldList.add(Constant.STD_ID); + String collect = tableFieldList.stream().map(s -> s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format(Constant.FieldAsAlias, Constant.MYSQL_UUID, Constant.ID) : s) + .map(s -> s.equalsIgnoreCase(Constant.STD_ID) ? MessageFormat.format(Constant.FieldAsAlias, Constant.ID, Constant.STD_ID) : s).collect(Collectors.joining(Constant.COMMA)); + + mapper.insertRecordFromStandrad(maintain.getTableName(), maintain.getTableName() + Constant.RECORD, collect); + connection.commit(); + mapper.insertMatintainDetailFromStandrad(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD); + connection.commit(); + Integer standradCnt = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId())); + connection.commit(); + if (standradCnt != null) { + maintain.setDesp(maintain.getDesp() + MessageFormat.format("鍒犻櫎鍘熸暟鎹畕0}鏉�", standradCnt)); + }else { + maintain.setDesp(maintain.getDesp() + "鍒犻櫎鍘熸暟鎹�"); + } + maintain.setDesp(maintain.getDesp() + MessageFormat.format("鍒犻櫎鍘熸暟鎹畕0}鏉�", standradCnt)); + } + + operateLog.setCreateTime(new Date()) + .setMaintainId(maintain.getId()) + .setId(DbUtils.getUUID()) + .setMaintainId(menuMapping.getId()) + .setOperate("open") + .setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong)); + + maintain.insert(); + connection.commit(); + } + catch (Exception e) { + e.printStackTrace(); + + + } + finally { + if (connection != null) { + try { + connection.commit(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + return maintain; + } + + //bak public Result selectListByPage(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version) { Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version); long changeCount = maintainService.countVersionOperatorByType(tableName + Constant.RECORD, whereSegment, maintainFromVersion.getId(), Operate.create); diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleApiServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleApiServiceImpl.java new file mode 100644 index 0000000..75cc34f --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleApiServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleApi; +import com.highdatas.mdm.mapper.SysAssembleApiMapper; +import com.highdatas.mdm.service.ISysAssembleApiService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +@Service +public class SysAssembleApiServiceImpl extends ServiceImpl<SysAssembleApiMapper, SysAssembleApi> implements ISysAssembleApiService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleCommonparamsServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleCommonparamsServiceImpl.java new file mode 100644 index 0000000..88a3fbc --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleCommonparamsServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleCommonparams; +import com.highdatas.mdm.mapper.SysAssembleCommonparamsMapper; +import com.highdatas.mdm.service.ISysAssembleCommonparamsService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@Service +public class SysAssembleCommonparamsServiceImpl extends ServiceImpl<SysAssembleCommonparamsMapper, SysAssembleCommonparams> implements ISysAssembleCommonparamsService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbDetailServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbDetailServiceImpl.java new file mode 100644 index 0000000..16dfbaf --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbDetailServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleDbDetail; +import com.highdatas.mdm.mapper.SysAssembleDbDetailMapper; +import com.highdatas.mdm.service.ISysAssembleDbDetailService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-19 + */ +@Service +public class SysAssembleDbDetailServiceImpl extends ServiceImpl<SysAssembleDbDetailMapper, SysAssembleDbDetail> implements ISysAssembleDbDetailService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbFieldServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbFieldServiceImpl.java new file mode 100644 index 0000000..977e398 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbFieldServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleDbField; +import com.highdatas.mdm.mapper.SysAssembleDbFieldMapper; +import com.highdatas.mdm.service.ISysAssembleDbFieldService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@Service +public class SysAssembleDbFieldServiceImpl extends ServiceImpl<SysAssembleDbFieldMapper, SysAssembleDbField> implements ISysAssembleDbFieldService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java new file mode 100644 index 0000000..8384686 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbServiceImpl.java @@ -0,0 +1,220 @@ +package com.highdatas.mdm.service.impl; + +import com.alibaba.druid.pool.DruidDataSource; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.SysAssemble; +import com.highdatas.mdm.entity.SysAssembleDb; +import com.highdatas.mdm.entity.SysAssembleDbdriver; +import com.highdatas.mdm.mapper.SysAssembleDbMapper; +import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo; +import com.highdatas.mdm.service.ISysAssembleDbService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.highdatas.mdm.service.ISysAssembleDbdriverService; +import com.highdatas.mdm.service.ISysAssembleService; +import com.highdatas.mdm.util.Constant; +import org.apache.commons.lang3.StringUtils; +import org.pentaho.di.core.KettleClientEnvironment; +import org.pentaho.di.core.database.DatabaseMeta; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.*; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@Service +public class SysAssembleDbServiceImpl extends ServiceImpl<SysAssembleDbMapper, SysAssembleDb> implements ISysAssembleDbService { + + @Autowired + ISysAssembleDbdriverService dbdriverService; + + public Connection getConnection(String parentId) { + SysAssembleDb assemble = this.selectById(parentId); + if(assemble == null){ + return null; + } + + Connection connection = null; + try { + SysAssembleDbdriver sysAssembleDbdriver = dbdriverService.selectOne(new EntityWrapper<SysAssembleDbdriver>().eq(Constant.TYPE, assemble.getDatasourceType())); + if (sysAssembleDbdriver != null) { + String driver = sysAssembleDbdriver.getDriver(); + Class.forName(driver).newInstance(); + } + +// Boolean bigdata = assemble.getBigdata(); +// if (bigdata) { +// //HBASE +// }else { +// dataMetaOutput = new DatabaseMeta("Output", unBigDataDataSourceInfo.getDbType(), "Native", unBigDataDataSourceInfo.getDbHostName(), unBigDataDataSourceInfo.getDbName(), unBigDataDataSourceInfo.getDbPort(), +// unBigDataDataSourceInfo.getUsername(), unBigDataDataSourceInfo.getPassword()); +// } + + connection = DriverManager.getConnection(assemble.getDatasourceUrl(), assemble.getDatasourceUser(), assemble.getDatasourcePass()); + return connection; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + } + + @Override + public List<String> getFieldsByTableName(String parentId, String tableName) { + SysAssembleDb assemble = this.selectById(parentId); + if(assemble == null){ + return null; + } + + Connection connection = null; + try { + connection = getConnection(parentId); + SysAssembleDbdriver sysAssembleDbdriver = dbdriverService.selectOne(new EntityWrapper<SysAssembleDbdriver>().eq(Constant.TYPE, assemble.getDatasourceType())); + String fieldSql = ""; + if(sysAssembleDbdriver != null) { + String firstTemplate = sysAssembleDbdriver.getFirstTemplate(); + fieldSql = MessageFormat.format(firstTemplate, MessageFormat.format(Constant.selectFieldSqlMysqlTemplate, tableName)); + }else { + fieldSql = MessageFormat.format(Constant.selectFieldSqlMysqlTemplate, tableName); + } + PreparedStatement preparedStatement = connection.prepareStatement(fieldSql); + ResultSet resultSet = preparedStatement.executeQuery(); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + ArrayList<String> columList = new ArrayList<>(); + for (int i = 1; i <= columnCount; i++) { + String columnLabel = metaData.getColumnLabel(i); + columList.add(columnLabel); + } + return columList; + }catch (Exception e) { + e.printStackTrace(); + return null; + }finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + } + + @Override + public boolean testConnection(String parentId) { + Connection connection = null; + try{ + connection = getConnection(parentId); + if (connection != null) { + return true; + } + return false; + } + catch (Exception e) { + e.printStackTrace(); + return false; + } + finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + } + + @Override + public boolean testSql(String parentId, String sql) { + Connection connection = null; + if (StringUtils.isEmpty(sql)) { + return false; + } + try { + + connection = getConnection(parentId); + if (connection == null) { + return false; + } + + PreparedStatement preparedStatement = connection.prepareStatement(sql); + preparedStatement.executeQuery(); + + return true; + + }catch (Exception e) { + e.printStackTrace(); + return false; + } + finally { + if (connection != null){ + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + } + } + + @Override + public List<String> getFieldsBySql(String parentId, String sql) { + Connection connection = null; + if (StringUtils.isEmpty(sql)) { + return null; + } + try { + + connection = getConnection(parentId); + if (connection == null) { + return null; + } + SysAssembleDb assemble = this.selectById(parentId); + SysAssembleDbdriver dbdriver = dbdriverService.selectOne(new EntityWrapper<SysAssembleDbdriver>().eq(Constant.TYPE, assemble.getDatasourceType())); + String firstTemplate = dbdriver.getFirstTemplate(); + if (!StringUtils.isEmpty(firstTemplate)) { + //鏈塻ql妯℃澘鐨� 鍙互鍙彇绗竴鏉� + sql = MessageFormat.format(firstTemplate, sql); + } + PreparedStatement preparedStatement = connection.prepareStatement(sql); + ResultSet resultSet = preparedStatement.executeQuery(); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + ArrayList<String> columList = new ArrayList<>(); + for (int i = 1; i <= columnCount; i++) { + String columnLabel = metaData.getColumnLabel(i); + columList.add(columnLabel); + } + return columList; + + }catch (Exception e) { + e.printStackTrace(); + return null; + } + finally { + if (connection != null){ + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + + } +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbTableServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbTableServiceImpl.java new file mode 100644 index 0000000..d71e670 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbTableServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleDbTable; +import com.highdatas.mdm.mapper.SysAssembleDbTableMapper; +import com.highdatas.mdm.service.ISysAssembleDbTableService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@Service +public class SysAssembleDbTableServiceImpl extends ServiceImpl<SysAssembleDbTableMapper, SysAssembleDbTable> implements ISysAssembleDbTableService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbdriverServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbdriverServiceImpl.java new file mode 100644 index 0000000..ec70b20 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDbdriverServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleDbdriver; +import com.highdatas.mdm.mapper.SysAssembleDbdriverMapper; +import com.highdatas.mdm.service.ISysAssembleDbdriverService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +@Service +public class SysAssembleDbdriverServiceImpl extends ServiceImpl<SysAssembleDbdriverMapper, SysAssembleDbdriver> implements ISysAssembleDbdriverService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDetailServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDetailServiceImpl.java new file mode 100644 index 0000000..d222a2e --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleDetailServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleDetail; +import com.highdatas.mdm.mapper.SysAssembleDetailMapper; +import com.highdatas.mdm.service.ISysAssembleDetailService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@Service +public class SysAssembleDetailServiceImpl extends ServiceImpl<SysAssembleDetailMapper, SysAssembleDetail> implements ISysAssembleDetailService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleLogServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleLogServiceImpl.java new file mode 100644 index 0000000..8c0250f --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleLogServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleLog; +import com.highdatas.mdm.mapper.SysAssembleLogMapper; +import com.highdatas.mdm.service.ISysAssembleLogService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@Service +public class SysAssembleLogServiceImpl extends ServiceImpl<SysAssembleLogMapper, SysAssembleLog> implements ISysAssembleLogService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleParamsServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleParamsServiceImpl.java new file mode 100644 index 0000000..351bc05 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleParamsServiceImpl.java @@ -0,0 +1,62 @@ +package com.highdatas.mdm.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.SysAssemble; +import com.highdatas.mdm.entity.SysAssembleParams; +import com.highdatas.mdm.mapper.SysAssembleParamsMapper; +import com.highdatas.mdm.service.ISysAssembleParamsService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.highdatas.mdm.service.ISysAssembleService; +import com.highdatas.mdm.util.Constant; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.support.CronSequenceGenerator; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@Slf4j +@Service +public class SysAssembleParamsServiceImpl extends ServiceImpl<SysAssembleParamsMapper, SysAssembleParams> implements ISysAssembleParamsService { + @Autowired + ISysAssembleParamsService paramsService; + @Autowired + ISysAssembleService assembleService; + + + @Override + public boolean updateCornVal(String assembleId, String cron) { + SysAssemble assemble = assembleService.selectById(assembleId); + if (assemble == null ) { + return false; + } + SysAssembleParams sysAssembleParams = paramsService.selectOne(new EntityWrapper<SysAssembleParams>().eq("parent_id", assembleId).eq("code", Constant.Cron)); + if (sysAssembleParams == null) { + return false; + } + if (StringUtils.isEmpty(cron)) { + return false; + } + if (!CronSequenceGenerator.isValidExpression(cron)) { + return false; + } + CronSequenceGenerator cronSequenceGenerator = new CronSequenceGenerator(cron); + Date currentTime = new Date(); + Date nextTimePoint = cronSequenceGenerator.next(currentTime); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + sysAssembleParams.setVal(simpleDateFormat.format(nextTimePoint)); + boolean update = sysAssembleParams.updateById(); + return update; + } +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleRuleServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleRuleServiceImpl.java new file mode 100644 index 0000000..e4d768b --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleRuleServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysAssembleRule; +import com.highdatas.mdm.mapper.SysAssembleRuleMapper; +import com.highdatas.mdm.service.ISysAssembleRuleService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-21 + */ +@Service +public class SysAssembleRuleServiceImpl extends ServiceImpl<SysAssembleRuleMapper, SysAssembleRule> implements ISysAssembleRuleService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysAssembleServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleServiceImpl.java new file mode 100644 index 0000000..0567a31 --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysAssembleServiceImpl.java @@ -0,0 +1,780 @@ +package com.highdatas.mdm.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.*; +import com.highdatas.mdm.mapper.SysAssembleMapper; +import com.highdatas.mdm.mapper.TableInfoMapper; +import com.highdatas.mdm.pojo.*; +import com.highdatas.mdm.pojo.kettle.BigDataDataSourceInfo; +import com.highdatas.mdm.pojo.kettle.DataSourceInfo; +import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo; +import com.highdatas.mdm.service.*; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.ContentBuilder; +import com.highdatas.mdm.util.DbUtils; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.session.SqlSession; +import org.apache.regexp.RE; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpSession; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.sql.*; +import java.text.MessageFormat; +import java.util.*; +import java.util.Date; +import java.util.stream.Collectors; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-20 + */ +@Slf4j +@Service +public class SysAssembleServiceImpl extends ServiceImpl<SysAssembleMapper, SysAssemble> implements ISysAssembleService { + @Autowired + ISysAssembleRuleService ruleService; + @Autowired + ISysAssembleDbService dbService; + @Autowired + ISysAssembleApiService apiService; + @Autowired + ISysAssembleDbTableService tableService; + @Autowired + ISysAssembleDbFieldService fieldService; + @Autowired + ISysAssembleParamsService paramsService; + @Autowired + ISysAssembleLogService logService; + @Autowired + IMenuMappingService menuMappingService; + @Autowired + ActivitiService activitiService; + @Autowired + IMaintainService maintainService; + @Autowired + IFlowsService flowsService; + @Resource + SqlSessionTemplate sqlSessionTemplate; + @Autowired + TableInfoMapper tableInfoMapper; + @Autowired + UnBigDataDataSourceInfo unBigDataDataSourceInfo; + @Autowired + BigDataDataSourceInfo bigDataDataSourceInfo; + @Autowired + MasterDataService masterDataService; + + + @Override + @Transactional(rollbackFor=Exception.class) + public Result run(String id, HttpSession session) { + if (StringUtils.isEmpty(id)) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + SysAssemble assemble = selectById(id); + if (assemble == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + if (!assemble.getStatus().equals(SysAssembleStatus.working)) { + return Result.error(new CodeMsg(6009,"褰撳墠浠诲姟涓嶅湪宸ヤ綔涓�,鐘舵��:" + assemble.getStatus())); + } + + String flowId = assemble.getFlowId(); + if (!StringUtils.isEmpty(flowId)){ + Flows flows = flowsService.selectById(flowId); + if (flows != null) { + ActivitiStatus status = flows.getStatus(); + if (!status.equals(ActivitiStatus.close) && !status.equals(ActivitiStatus.open)) { + return Result.error(new CodeMsg(6009,"褰撳墠鏈夋祦绋嬫鍦ㄨ繍琛�,鏆傛椂鏃犳硶姹囬泦涓嬫鏁版嵁:" + status.toString())); + } + } + } + assemble.setPreTime(new Date()); + assemble.setPreStatus(SysAssembleRunStatus.working); + assemble.updateById(); + + Boolean bigData = assemble.getBigdata(); + + //1 load from db + try{ + Result result = runByDb(assemble); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.updateById(); + return result; + } + //2 load from api + result = runByApi(id); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.updateById(); + return result; + } + //3check temp table; + result = checkTempTable(assemble); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("妫�娴嬩富鏁版嵁涓存椂琛ㄥ嚭鐜伴敊璇�"); + assemble.updateById(); + return result; + } + + //4 purge data + String purgeSql = assemble.getPurgeSql(); + purgeSql = DbUtils.replaceEscape(purgeSql); + result = purgeData(purgeSql, assemble.getId(), bigData); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("杩愯娓呮礂sql鍑虹幇閿欒: "+purgeSql ); + assemble.updateById(); + return result; + } + + //5 check temp data + result = checkTempData(id, assemble.getCheckType(), assemble.getCheckFields()); + + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("璐ㄩ噺妫�楠岀幆鑺傚嚭鐜伴敊璇�" ); + assemble.updateById(); + return result; + } + //6 temp 2 record + + result = temp2record(assemble); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("鏁版嵁鎼繍鑷充富鏁版嵁璁板綍鐜妭鍑虹幇閿欒" ); + assemble.updateById(); + return result; + } + + //7 record 閾炬帴 鐗堟湰 + result = linkMaintain(assemble, session); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("鑱旀帴鐗堟湰鍑虹幇閿欒" ); + assemble.updateById(); + return result; + } + + //todo 娣诲姞浜嬪姟 log璁板綍 + //8 鏇存柊 鍙傛暟 + result = updateParams(assemble); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("鏇存柊鍙橀噺鐜妭鍑虹幇閿欒" ); + }else { + assemble.setPreMsg("姹囬泦鎴愬姛"); + assemble.setPreStatus(SysAssembleRunStatus.success); + } + assemble.updateById(); + return result; + } + catch (Exception e) { + assemble.setPreMsg("姹囬泦浠诲姟鍑虹幇閿欒"); + assemble.setPreStatus(SysAssembleRunStatus.fail).updateById(); + e.printStackTrace(); + + return Result.error(new CodeMsg(6009, e.getMessage())); + } + } + + private Result linkMaintain(SysAssemble assemble, HttpSession session) { + try{ + String menuId = assemble.getMenuId(); + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", menuId)); + String tableName = menuMapping.getTableName(); + Maintain maintain = masterDataService.uploadedData(tableName, assemble.getUpdateType(), assemble.getUserId()); + + Result result = temp2recordUpdate(assemble, maintain); + if (!result.getSuccess()) { + assemble.setPreStatus(SysAssembleRunStatus.fail); + assemble.setPreMsg("鎼繍鏇存柊瀛楁鍑虹幇閿欒" ); + assemble.updateById(); + return result; + } + Boolean audit = menuMapping.getAudit(); + if (audit == null){ + //榛樿闇�瑕佸鎵� + audit = true; + } + if (audit) { + Flows flows = activitiService.start("process", session, maintain.getId(), ActivitiBusinessType.maintain); + assemble.setFlowId(flows.getId()).updateById(); + maintain.setFlowId(flows.getId()); + maintain.setDesp("鍚姩姹囬泦娴佺▼"); + maintain.updateById(); + }else { + //鐩存帴杩愯 + Flows flows = new Flows().setStatus(ActivitiStatus.open).setBusinessId(maintain.getId()).setId(DbUtils.getUUID()).setCreateTime(new Date()); + flows.insert(); + maintain.setFlowId(flows.getId()); + maintain.updateById(); + maintainService.dealFlow(maintain.getId(), ActivitiStatus.open); + } + return Result.success(null); + }catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6009, e.getMessage())); + } + + } + + private Result updateParams(SysAssemble assemble) { + Connection conn = null; + try{ + String id = assemble.getId(); + Boolean bigdata = assemble.getBigdata(); + + DataSourceInfo dataSourceInfo; + if (bigdata) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + } + conn = dataSourceInfo.conn(); + List<SysAssembleParams> paramsList = paramsService.selectList(new EntityWrapper<SysAssembleParams>().eq("parent_id", id)); + + for (SysAssembleParams sysAssembleParams : paramsList) { + String updateSql = sysAssembleParams.getUpdateSql(); + if (StringUtils.isEmpty(updateSql)){ + continue; + } + + PreparedStatement preparedStatement = conn.prepareStatement(updateSql, ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); + ResultSet resultSet = preparedStatement.executeQuery(); + //榛樿鍙湁涓�涓粨鏋� + if (resultSet.first()) { + String val = resultSet.getString(1); + sysAssembleParams.setVal(val); + sysAssembleParams.updateById(); + } + + } + return Result.success(null) ; + } + catch (Exception e) { + + return Result.error(new CodeMsg(6006, e.getMessage())) ; + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6006, e.getMessage())) ; + } + } + } + + } + + private Result checkTempTable(SysAssemble assemble) { + try { + String menuId = assemble.getMenuId(); + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", menuId)); + String tableName = menuMapping.getTableName(); + String tempTableName = Constant.Temp + tableName; + Boolean bigdata = assemble.getBigdata(); + DataSourceInfo dataSourceInfo; + if (bigdata) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + } + boolean exists = dataSourceInfo.checkTableExists(tempTableName); + if (!exists){ + List<String> fieldsFromTable = dataSourceInfo.getFieldsFromTable(tableName); + if (fieldsFromTable == null) { + return Result.error(new CodeMsg(6003, "鏌ヨ姝e紡琛ㄧ殑瀛楁:" + tableName)); + } + dataSourceInfo.createTable(tempTableName, fieldsFromTable); + } + //drop temp data + dataSourceInfo.truncateData(tempTableName); + return Result.success(null); + }catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6004, e.getMessage())); + } + } + private Result temp2recordUpdate(SysAssemble assemble, Maintain maintain) { + Connection conn = null; + try { + String menuId = assemble.getMenuId(); + Boolean bigdata = assemble.getBigdata(); + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", menuId)); + String tableName = menuMapping.getTableName(); + String tempTableName = Constant.Temp + tableName; + String recordTableName = tableName + Constant.RECORD; + DataSourceInfo dataSourceInfo; + String updateSql = null; + if (bigdata) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + updateSql = Constant.MYSQLJoinUpdateSql; + } + conn = dataSourceInfo.conn(); + SysAssembleUpdateType updateType = assemble.getUpdateType(); + List<String> fieldsFromTable = dataSourceInfo.getFieldsFromTable(tableName); + if (fieldsFromTable.contains(Constant.ID)) { + fieldsFromTable.remove(Constant.ID); + } + + List<String> fieldFromRecordTable = new ArrayList<>(fieldsFromTable); + fieldFromRecordTable.add(Constant.ID); + fieldFromRecordTable.add(Constant.STD_ID); + fieldFromRecordTable.add(Constant.DEAL); + + String recordFieldStr = StringUtils.join(fieldFromRecordTable, Constant.COMMA); + int cnt = 0; + if(updateType.equals(SysAssembleUpdateType.Increment)) { + String updateFields = assemble.getUpdateFields(); + String[] split = updateFields.split(Constant.SEMICOLON); + ArrayList<String> unionCodeFields = new ArrayList<String>(Arrays.asList(split)); + String joinStr = getJoinFieldParse(unionCodeFields); + List<String> otherFields = fieldsFromTable.stream().filter(s -> !unionCodeFields.contains(s)).filter(s -> !s.equalsIgnoreCase(Constant.ID)).collect(Collectors.toList()); + if (otherFields.size() != 0) { + String insertFieldStr = fieldsFromTable.stream() + .map(s -> MessageFormat.format(Constant.Alias,Constant.T1,s)) + .collect(Collectors.joining(Constant.COMMA)); + + String updatedSql = MessageFormat.format(updateSql, recordTableName, recordFieldStr,insertFieldStr, tempTableName, tableName, joinStr); + PreparedStatement updatedPreparedStatement = conn.prepareStatement(updatedSql); + int updateCnt = updatedPreparedStatement.executeUpdate(); + cnt = updateCnt; + } + } + + tableInfoMapper.insertMatintainDetailFromTemp(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD , DbUtils.quotedStr(Operate.update.toString())); + + //tableInfoMapper.updateStdId( maintain.getTableName() + Constant.RECORD); + + tableInfoMapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId())); + + assemble.setPreCnt(assemble.getPreCnt() + cnt); + assemble.updateById(); + return Result.success(null); + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6005, e.getMessage())); + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6005, e.getMessage())); + } + } + } + } + private Result temp2record(SysAssemble assemble) { + Connection conn = null; + try { + String menuId = assemble.getMenuId(); + Boolean bigdata = assemble.getBigdata(); + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", menuId)); + String tableName = menuMapping.getTableName(); + String tempTableName = Constant.Temp + tableName; + String recordTableName = tableName + Constant.RECORD; + DataSourceInfo dataSourceInfo; + String transSql; + String updateSql = null; + String insertSql = null; + if (bigdata) { + dataSourceInfo = bigDataDataSourceInfo; + transSql = Constant.Temp2RecordHbaseTemplate; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + transSql = Constant.Temp2RecordMySQLTemplate; + updateSql = Constant.MYSQLJoinUpdateSql; + insertSql = Constant.MYSQLJoinAddSql; + } + conn = dataSourceInfo.conn(); + SysAssembleUpdateType updateType = assemble.getUpdateType(); + List<String> fieldsFromTable = dataSourceInfo.getFieldsFromTable(tableName); + if (fieldsFromTable.contains(Constant.ID)) { + fieldsFromTable.remove(Constant.ID); + } + List<String> fieldFromRecordTable = new ArrayList<>(fieldsFromTable); + fieldFromRecordTable.add(Constant.ID); + fieldFromRecordTable.add(Constant.STD_ID); + fieldFromRecordTable.add(Constant.DEAL); + + String recordFieldStr = StringUtils.join(fieldFromRecordTable, Constant.COMMA); + String fieldStr = fieldsFromTable.stream() + .collect(Collectors.joining(Constant.COMMA)); + + int cnt = 0; + if (updateType.equals(SysAssembleUpdateType.All)) { + String sql = MessageFormat.format(transSql, recordTableName, recordFieldStr, fieldStr, tempTableName); + PreparedStatement preparedStatement = conn.prepareStatement(sql); + cnt = preparedStatement.executeUpdate(); + }else if(updateType.equals(SysAssembleUpdateType.Increment)) { + String updateFields = assemble.getUpdateFields(); + String[] split = updateFields.split(Constant.SEMICOLON); + ArrayList<String> unionCodeFields = new ArrayList<String>(Arrays.asList(split)); + String joinStr = getJoinFieldParse(unionCodeFields); + + // insert + + String insertFieldStr = fieldsFromTable.stream() + .map(s -> MessageFormat.format(Constant.Alias,Constant.T1,s)) + .collect(Collectors.joining(Constant.COMMA)); + + String insetSql = MessageFormat.format(insertSql, recordTableName, recordFieldStr,insertFieldStr, tempTableName, tableName, joinStr); + PreparedStatement preparedStatement = conn.prepareStatement(insetSql); + int insertCnt = preparedStatement.executeUpdate(); + cnt += insertCnt; + } + assemble.setPreCnt(cnt); + assemble.updateById(); + return Result.success(null); + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6005, e.getMessage())); + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6005, e.getMessage())); + } + } + } + } + + private String getOthetFieldParse(List<String> unionCodeFields) { + ContentBuilder builder = new ContentBuilder(Constant.AND); + for (String s : unionCodeFields) { + builder.append(MessageFormat.format(Constant.MYSQLJoinParse, s)); + } + return builder.toString(); + } + + private String getJoinFieldParse(ArrayList<String> updateFields) { + + ContentBuilder builder = new ContentBuilder(Constant.AND); + for (String s : updateFields) { + builder.append(MessageFormat.format(Constant.MYSQLJoinParse, s)); + } + return builder.toString(); + } + + private Result checkTempData(String s,SysAssembleCheckType checkType, String id) { + //TODO + return Result.success(null); + } + + private Result purgeData(String purgeSql, String assembleId, boolean bigData) { + Connection connection = null; + try { + DataSourceInfo dataSourceInfo = null; + if (bigData) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + } + connection = dataSourceInfo.conn(); + + List<SysAssembleParams> paramsList = paramsService.selectList(new EntityWrapper<SysAssembleParams>().eq("parent_id", assembleId)); + HashMap<String, String> paramsMap = new HashMap<>(); + Set<String> matcher = DbUtils.matcher(purgeSql); + for (String s : matcher) { + List<SysAssembleParams> collect = paramsList.stream().filter(sysAssembleParams -> sysAssembleParams.getCode().equalsIgnoreCase(s)).collect(Collectors.toList()); + if (collect.size() == 0) { + return Result.error(new CodeMsg(6006, "鏈尮閰嶅埌鍙傛暟:" + s)); + }else if (collect.size() > 1) { + return Result.error(new CodeMsg(6006, "鍖归厤鍒板涓弬鏁�:" + s)); + }else { + SysAssembleParams sysAssembleParams = collect.get(0); + String val = sysAssembleParams.getVal(); + if (StringUtils.isEmpty(val)) { + String initSql = sysAssembleParams.getInitSql(); + if (StringUtils.isEmpty(initSql)) { + return Result.error(new CodeMsg(6006, "鍒濆鍖栧弬鏁�:" + s + "澶辫触")); + } + PreparedStatement preparedStatement = connection.prepareStatement(initSql); + ResultSet resultSet = preparedStatement.executeQuery(); + //榛樿鍙湁涓�涓粨鏋� + val = resultSet.getString(1); + } + paramsMap.put(s, val); + } + } + for (String key : paramsMap.keySet()) { + String val = paramsMap.get(key); + String preParams = MessageFormat.format(Constant.ParamsShell, key); + purgeSql = purgeSql.replace(preParams, val); + } + + PreparedStatement preparedStatement = connection.prepareStatement(purgeSql); + preparedStatement.execute(); + return Result.success(null); + + } catch (SQLException e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6004, "杩愯娓呮礂sql鍑洪敊," + e.getSQLState())); + } finally { + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6003, "鏈湴connection 鏃犳硶鍏抽棴")); + } + } + } + } + + private Result runByApi(String id) { + //TODO + return Result.success(null); + } + + private Result runByDb(SysAssemble assemble) { + String id = assemble.getId(); + Boolean bigdata = assemble.getBigdata(); + + List<SysAssembleDb> dbList = dbService.selectList(new EntityWrapper<SysAssembleDb>().eq(Constant.PARENT_ID, id).eq(Constant.Active, true)); + for (SysAssembleDb sysAssembleDb : dbList) { + String dbId = sysAssembleDb.getId(); + Result result = loadOneDb(sysAssembleDb, bigdata, id); + if (!result.getSuccess()) { + assemble.setPreMsg("瀵煎叆婧愭暟鎹敊璇�:" + sysAssembleDb.getDatabaseName()).updateById(); + return result; + } + } + return Result.success(null); + } + + private Result loadOneDb(SysAssembleDb sysAssembleDb, boolean bigData, String assembleId) { + String dbId = sysAssembleDb.getId(); + Connection conn = dbService.getConnection(dbId); + if (conn == null) { + return Result.error(new CodeMsg(6002, MessageFormat.format("鏈兘杩炴帴鍒版簮 id: {0}", dbId))); + } + try { + List<SysAssembleDbTable> tableList = tableService.selectList(new EntityWrapper<SysAssembleDbTable>().eq(Constant.PARENT_ID, dbId).eq(Constant.Active, true)); + for (SysAssembleDbTable dbTable : tableList) { + String tableId = dbTable.getId(); + String tempTableName = dbTable.getTempTableName(); + + List<SysAssembleDbField> fieldList = fieldService.selectList(new EntityWrapper<SysAssembleDbField>().eq(Constant.PARENT_ID, tableId)); + String fields = fieldList.stream().map(SysAssembleDbField::getField).collect(Collectors.joining(Constant.COMMA)); + SysAssembleTableType type = dbTable.getType(); + String tableName = null; + String assembleTempTableName = tempTableName; + if (type.equals(SysAssembleTableType.sql)) { + tableName = dbTable.getSql(); + } else if (type.equals(SysAssembleTableType.table)) { + tableName = dbTable.getTableName(); + } + //TODO assembleTempTableName 鍙兘浼氳秴闀� 64瀛楄妭 鍚庣画淇敼 + DataSourceInfo dataSourceInfo = null; + if (!bigData) { + dataSourceInfo = unBigDataDataSourceInfo; + }else { + dataSourceInfo = bigDataDataSourceInfo; + } + + // drop temp data + dataSourceInfo.truncateData(tempTableName); + + fixAssembleTempTable(dataSourceInfo, assembleTempTableName, fieldList, dbId); + + //checkAssembleTempTableExists(assembleTempTableName); + //TODO 鏈垎椤� + String filter = dbTable.getFilter(); + Set<String> matcher = DbUtils.matcher(filter); + for (String code : matcher) { + SysAssembleParams sysAssembleParams = paramsService.selectOne(new EntityWrapper<SysAssembleParams>().eq(Constant.PARENT_ID, assembleId).eq(Constant.Code, code)); + if (sysAssembleParams == null){ + return Result.error(new CodeMsg(6009, assembleId + "鏈夊彉閲忔湭鍖归厤鍒�:"+ code)); + } + String val = sysAssembleParams.getVal(); + if (StringUtils.isEmpty(val)) { + return Result.error(new CodeMsg(6009, assembleId + "鏈夊彉閲忔湭鑾峰彇鍒板��:"+ code)); + } + val = DbUtils.quotedStr(val); + filter = filter.replace(DbUtils.assemblParam(code), val); + } + if (StringUtils.isEmpty(filter)) { + filter = Constant.WHERE_DEFAULT; + } + String runSqlTemplate = null; + if (type.equals(SysAssembleTableType.table)){ + runSqlTemplate = Constant.selectFieldTableTemplate; + }else if(type.equals(SysAssembleTableType.sql)){ + runSqlTemplate = Constant.selectFieldSqlTemplate; + } + String sql = MessageFormat.format(runSqlTemplate, fields, tableName, filter); + PreparedStatement ps = conn.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); + ps.setFetchSize(Integer.MIN_VALUE); + ps.setFetchDirection(ResultSet.FETCH_REVERSE); + ResultSet resultSet = ps.executeQuery(); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + + String insertMySqlSql = assembleSql(unBigDataDataSourceInfo.getDbName(), assembleTempTableName, fields); + int cnt = 0; + StringBuilder builder = new StringBuilder(); + while (resultSet.next()) { + + for (int i = 1; i <= columnCount; i++) { + if (i == columnCount) { + builderEnd(builder, resultSet.getObject(i)); + }else { + builderAppend(builder, resultSet.getObject(i)); + } + + } + cnt++; + if (cnt == 5000) { + runOneBatch(bigData, insertMySqlSql, builder); + } + } + if (builder.length() > 0) { + runOneBatch(bigData, insertMySqlSql, builder); + } + } + return Result.success(null); + } + catch (Exception e) { + e.printStackTrace(); + return Result.error(new CodeMsg(6004, e.getMessage())); + }finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + } + + private void runOneBatch(boolean bigData, String insertMySqlSql, StringBuilder builder) throws UnsupportedEncodingException, SQLException { + byte[] bytes = builder.toString().getBytes("UTF-8"); + if (bytes.length > 0) { + InputStream stream = new ByteArrayInputStream(bytes); + bulkLoadFromInputStream(insertMySqlSql, stream, bigData); + } + //娓呯┖bulider + builder.delete(0, builder.length()); + } + + private void fixAssembleTempTable(DataSourceInfo dataSourceInfo, String assembleTempTableName, List<SysAssembleDbField> dbFieldList, String dbId) { + boolean exists = dataSourceInfo.checkTableExists(assembleTempTableName); + List<String> fieldList = dbFieldList.stream().map(SysAssembleDbField::getField).collect(Collectors.toList()); + if (!exists) { + dataSourceInfo.createTable(assembleTempTableName, fieldList); + }else { + //check 瀛楁鏄惁鐩稿悓 + boolean checked = dataSourceInfo.checkFieldList(assembleTempTableName, fieldList); + if (!checked){ + assembleTempTableName = reSetTableName(assembleTempTableName, dbId); + dataSourceInfo.createTable(assembleTempTableName, fieldList); + + } + } + } + + private String reSetTableName(String assembleTempTableName, String tableId) { + //TODO Db + SysAssembleDbTable dbTable = tableService.selectById(tableId); + String suffix = null; + suffix = DbUtils.getUUID(16); + String tempTableName = null; + if (dbTable.getType().equals(SysAssembleTableType.table)) { + tempTableName = Constant.AssembleTempTable + dbTable.getTableName() + suffix; + }else { + tempTableName = Constant.AssembleTempSql+ DbUtils.getUUID(5)+ suffix; + } + + dbTable.setTempTableName(tempTableName).updateById(); + return tempTableName; + } + + public void builderEnd(StringBuilder builder, Object object) { + builder.append(object); + builder.append("\n"); + } + + + public void builderAppend(StringBuilder builder, Object object) { + builder.append(object); + builder.append("\t"); + } + + + public String assembleSql(String dataBaseName, String tableName, String fields) { + String sql = "LOAD DATA LOCAL INFILE 'sql.csv' IGNORE INTO TABLE " + dataBaseName + "." + tableName + "(" + fields + ")"; + return sql; + } + + private int bulkLoadFromInputStream(String sql, InputStream dataStream, boolean bigData) { + if (null == dataStream) { + log.error("杈撳叆娴佷负NULL锛屾病鏈夋暟鎹鍏ャ��"); + return 0; + } + Connection conn = null; + try { + DataSourceInfo dataSourceInfo = null; + if (bigData) { + dataSourceInfo = bigDataDataSourceInfo; + }else { + dataSourceInfo = unBigDataDataSourceInfo; + } + + conn = dataSourceInfo.conn(); + PreparedStatement statement = conn.prepareStatement(sql); + int result = 0; + if (statement.isWrapperFor(com.mysql.jdbc.Statement.class)) { + com.mysql.jdbc.PreparedStatement mysqlStatement = statement.unwrap(com.mysql.jdbc.PreparedStatement.class); + mysqlStatement.setLocalInfileInputStream(dataStream); + result = mysqlStatement.executeUpdate(); + } + return result; + } + catch (Exception e) { + e.printStackTrace(); + } + finally { + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + return 0; + } +} \ No newline at end of file diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysDbtypeServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysDbtypeServiceImpl.java new file mode 100644 index 0000000..5ff49cb --- /dev/null +++ b/src/main/java/com/highdatas/mdm/service/impl/SysDbtypeServiceImpl.java @@ -0,0 +1,20 @@ +package com.highdatas.mdm.service.impl; + +import com.highdatas.mdm.entity.SysDbtype; +import com.highdatas.mdm.mapper.SysDbtypeMapper; +import com.highdatas.mdm.service.ISysDbtypeService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * <p> + * 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author kimi + * @since 2020-02-15 + */ +@Service +public class SysDbtypeServiceImpl extends ServiceImpl<SysDbtypeMapper, SysDbtype> implements ISysDbtypeService { + +} diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysMenuServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysMenuServiceImpl.java index 3e714c1..4d52ee4 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/SysMenuServiceImpl.java @@ -4,7 +4,13 @@ import com.highdatas.mdm.mapper.SysMenuMapper; import com.highdatas.mdm.service.ISysMenuService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; /** * <p> @@ -16,5 +22,28 @@ */ @Service public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService { + @Autowired + ISysMenuService menuService; + @Override + public LinkedHashSet<String> getByParentId(LinkedHashSet<String> parentIdSet) { + if (parentIdSet.size() == 0) { + return null; + } + LinkedHashSet<String> subSet = new LinkedHashSet<>(); + for (String s : parentIdSet) { + SysMenu sysMenu = menuService.selectById(s); + String parentId = sysMenu.getParentId(); + if (StringUtils.isEmpty(parentId)) { + continue; + } + subSet.add(parentId); + } + LinkedHashSet<String> byParentId = getByParentId(subSet); + if (byParentId != null) { + parentIdSet.addAll(byParentId); + } + + return parentIdSet; + } } diff --git a/src/main/java/com/highdatas/mdm/util/Constant.java b/src/main/java/com/highdatas/mdm/util/Constant.java index 6364547..c31438c 100644 --- a/src/main/java/com/highdatas/mdm/util/Constant.java +++ b/src/main/java/com/highdatas/mdm/util/Constant.java @@ -15,6 +15,8 @@ public static final String LIKE = " like "; public static final String EMPTY = " "; public static final String SEMICOLON = ";"; + public static final String colon = ":"; + public static final String UnderLine = "_"; public static final String WHERE_SEGMENT = "whereSegment"; public static final String VERSION = "version"; public static final String VERSION_Default = "V1.0"; @@ -22,11 +24,13 @@ public static final String TOTAL = "total"; public static final String FIELDS = "fields"; public static final String DEAL = "deal"; + public static final String PARENT_ID = "parent_id"; public static final String RECORD = "_record"; public static final String MAX = "max"; String Dot = "\\."; + String Default_Patter = "(?<=@\\{)(.+?)(?=\\})"; String addDataType = "addDataType"; String addAll = "addAll"; @@ -40,6 +44,7 @@ String StructureMenu = "StructureMenu"; String tableName = "tableName"; String Alias = "{0}.{1}"; + String FieldAsAlias = "{0} AS {1}"; String caseWhen = " case when a2.{0} != null then a2.{0} else a1.{0} end as {0}"; String H = "h"; String A1 = "a1"; @@ -48,4 +53,42 @@ String DataMenu = "DataMenu"; String AND = " and "; String MD = "md_"; + + + String CNT = "cnt"; + String checkFieldSqlTemplate = "select count(1) as cnt from (select {0} from {1}) a1"; + String selectRecordFieldSqlTemplate = "select {0}, 0 as deal from {1}"; + String selectFieldSqlTemplate = "select {0} from ({1}) a where {2}"; + String selectFieldTableTemplate = "select {0} from {1} where {2}"; + String selectFieldSqlMysqlTemplate = "select * from {0} limit 1"; + String STEP_READ_FROM_TABLE = "Read data from table"; + String STEP_INSERT_UPDATE = "Insert or update"; + String STEP_DUMMY = "Dummy"; + String MYSQL_UUID = "replace(UUID(),'-', '')"; + String TYPE = "type"; + String Active = "active"; + String AssembleTempTable = "hj_table_"; + String AssembleTempSql = "hj_sql_"; + String CreateFieldMysql = "`{0}` VARCHAR(255) NULL"; + String CreateTableMysql = "CREATE TABLE IF NOT EXISTS `{0}` ({1}) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; + String checkTableByNameBySchema = "select table_name from information_schema.tables where table_schema={0} and table_name = {1};"; + String Temp = "temp_"; + String Temp2RecordMySQLTemplate = "INSERT INTO {0} ({1}) SELECT {2}, replace(uuid(),''-'', '''') as std_id, replace(uuid(),''-'', '''') as id, 0 as deal from {3}"; + String MYSQLJoinUpdateSql = "INSERT INTO {0} ({1}) SELECT {2} , replace(uuid(),''-'', '''') as id, s1.id as std_id, 0 as deal FROM {3} t1 inner join {4} s1 on {5};"; + String MYSQLJoinAddSql = "INSERT INTO {0} ({1}) SELECT {2} , replace(uuid(),''-'', '''') as std_id, replace(uuid(),''-'', '''') as id, 0 as deal FROM {3} t1 WHERE NOT EXISTS(SELECT * FROM {4} s1 WHERE {5});"; + String Temp2RecordHbaseTemplate = "INSERT INTO {0} ({1}) SELECT ({2}, ) from {3}"; + String ParamsShell = "@\\{{0}\\}"; + String Cron = "cron"; + String TABLE_NAME = "TABLE_NAME"; + String Success = "success"; + String Data = "data"; + String Mysql_UUID = "replace(uuid(),''-'', '''')"; + String MainData = "MainData"; + String MYSQLJoinParse = " t1.{0} = s1.{0} "; + String T1 = "t1"; + String S1 = "s1"; + String Code = "code"; + String truncateTableMysql = "truncate table {0};"; + String DropTableMysql = "DROP TABLE IF EXISTS {0};"; + String DeleteDealMysqlTemplate = "delete from {0} where deal = 0"; } diff --git a/src/main/java/com/highdatas/mdm/util/DbUtils.java b/src/main/java/com/highdatas/mdm/util/DbUtils.java index 68763f1..3e532a9 100644 --- a/src/main/java/com/highdatas/mdm/util/DbUtils.java +++ b/src/main/java/com/highdatas/mdm/util/DbUtils.java @@ -10,9 +10,11 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.security.MessageDigest; import java.text.MessageFormat; -import java.util.Random; -import java.util.UUID; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author kimi @@ -22,6 +24,7 @@ @Slf4j public class DbUtils { + private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; public static String versionAddSub (String baseVersion) { if (StringUtils.isEmpty(baseVersion)) { @@ -191,6 +194,15 @@ } return builder.toString(); } + + public static String assemblParam(String objects){ + if (StringUtils.isEmpty(objects)) { + return null; + }else { + return "@{" + objects + "}"; + } + + } public static String getRandomString(int length) { Random random = new Random(); StringBuffer sb = new StringBuffer(); @@ -234,4 +246,55 @@ } return sbf.toString(); } + + + public static Set<String> matcher(String testStr) { + return matcher(Constant.Default_Patter, testStr); + } + + public static String replaceEscape(String testStr) { + String new_str = Pattern.compile("\t|\r|\n| ").matcher(testStr).replaceAll(Constant.EMPTY); + return new_str; + } + + public static Set<String> matcher(String patter, String testStr) { +// String test = "@{databaseIp}:{databasePort}{instanceName};database"; +// String initCompile = "(?<=@\\{)(.+?)(?=\\})"; + + Set<String> ls=new HashSet<>(); + + Pattern pattern = Pattern.compile(patter); + Matcher matcher = pattern.matcher(testStr); + + while(matcher.find()){ + + ls.add(matcher.group()); + + } + return ls; + } + + + + + private static String toHexString(byte[] b) { + StringBuilder sb = new StringBuilder(b.length * 2); + for (int i = 0; i < b.length; i++) { + sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]); + sb.append(HEX_DIGITS[b[i] & 0x0f]); + } + return sb.toString(); + } + + public static String Bit32(String SourceString) throws Exception { + MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); + digest.update(SourceString.getBytes()); + byte messageDigest[] = digest.digest(); + return toHexString(messageDigest); + } + + public static String Bit16(String SourceString) throws Exception { + return Bit32(SourceString).substring(8, 24); + } + } diff --git a/src/main/java/com/highdatas/mdm/util/HttpUtils.java b/src/main/java/com/highdatas/mdm/util/HttpUtils.java index 413b6c4..632b2f2 100644 --- a/src/main/java/com/highdatas/mdm/util/HttpUtils.java +++ b/src/main/java/com/highdatas/mdm/util/HttpUtils.java @@ -1,5 +1,7 @@ package com.highdatas.mdm.util; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.util.MultiValueMap; @@ -14,6 +16,7 @@ public class HttpUtils { + public static String HttpRestClient(String url, HttpMethod method, MultiValueMap<String, String> params) { SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(15*1000); @@ -27,4 +30,6 @@ ResponseEntity<String> response = client.exchange(url, method, requestEntity, String.class); return response.getBody(); } + + } diff --git a/src/main/java/com/highdatas/mdm/util/MpGenerator.java b/src/main/java/com/highdatas/mdm/util/MpGenerator.java index debef73..103fa53 100644 --- a/src/main/java/com/highdatas/mdm/util/MpGenerator.java +++ b/src/main/java/com/highdatas/mdm/util/MpGenerator.java @@ -28,8 +28,8 @@ // 鍏ㄥ眬閰嶇疆 GlobalConfig gc = new GlobalConfig(); gc.setAuthor("kimi"); - gc.setOutputDir("D://workspace/workspace_idea/mdm/src/main/java"); - gc.setFileOverride(false);// 鏄惁瑕嗙洊鍚屽悕鏂囦欢锛岄粯璁ゆ槸false + gc.setOutputDir("H://workspace/workspace_idea/mdm/src/main/java"); + gc.setFileOverride(true);// 鏄惁瑕嗙洊鍚屽悕鏂囦欢锛岄粯璁ゆ槸false gc.setActiveRecord(true);// 涓嶉渶瑕丄ctiveRecord鐗规�х殑璇锋敼涓篺alse gc.setEnableCache(false);// XML 浜岀骇缂撳瓨 gc.setBaseResultMap(true);// XML ResultMap @@ -57,7 +57,7 @@ dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("123456"); - dsc.setUrl("jdbc:mysql://localhost:3306/data_admin?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"); + dsc.setUrl("jdbc:mysql://localhost:3306/mdm?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"); mpg.setDataSource(dsc); // 绛栫暐閰嶇疆 @@ -65,7 +65,7 @@ // strategy.setCapitalMode(true);// 鍏ㄥ眬澶у啓鍛藉悕 ORACLE 娉ㄦ剰 strategy.setTablePrefix(new String[]{""});// 姝ゅ鍙互淇敼涓烘偍鐨勮〃鍓嶇紑 strategy.setNaming(NamingStrategy.underline_to_camel);// 琛ㄥ悕鐢熸垚绛栫暐 - strategy.setInclude(new String[]{"deleted_table_log"}); // 闇�瑕佺敓鎴愮殑琛� + strategy.setInclude(new String[]{"sys_assemble_rule",}); // 闇�瑕佺敓鎴愮殑琛� // strategy.setExclude(new String[]{"test"}); // 鎺掗櫎鐢熸垚鐨勮〃 // 鑷畾涔夊疄浣撶埗绫� // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity"); diff --git a/src/main/java/com/highdatas/mdm/util/RedisClient.java b/src/main/java/com/highdatas/mdm/util/RedisClient.java new file mode 100644 index 0000000..9ff03af --- /dev/null +++ b/src/main/java/com/highdatas/mdm/util/RedisClient.java @@ -0,0 +1,78 @@ +package com.highdatas.mdm.util; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; + +@ConfigurationProperties(prefix = "redis") +@Component +public class RedisClient { + + @Value("${redis.host}") + String host; + @Value("${redis.port}") + String port; + + String prefix ; + + private RedisClient() { + this.prefix = "/api/datacvg/redis/"; + } + public boolean putRedisVal(String key, String value) { + String url = host+ Constant.colon + port + prefix + "put"; + MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); + params.set("key",key); + params.set("value",value); + params.set("type",Constant.MainData); + String s = HttpUtils.HttpRestClient(url, HttpMethod.POST, params); + JSONObject result = (JSONObject) JSON.parse(s); + String sucess = result.getString(Constant.Success); + if (StringUtils.isEmpty(sucess) || !Boolean.valueOf(sucess)) { + return false; + }else { + return true; + } + } + + public String getRedisVal(String key) { + try { + String url = host+ Constant.colon + port + prefix + "get"; + MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); + params.set("key",key); + params.set("type",Constant.MainData); + String s = HttpUtils.HttpRestClient(url, HttpMethod.POST, params); + JSONObject result = (JSONObject) JSON.parse(s); + String sucess = result.getString(Constant.Success); + if (StringUtils.isEmpty(sucess) || !Boolean.valueOf(sucess)) { + return null; + }else { + return result.getString(Constant.Data); + } + }catch (Exception e){ + e.printStackTrace(); + return null; + } + + } + + public boolean deleteRedisVal(String key) { + String url = host+ Constant.colon + port + prefix + "delete"; + MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); + params.set("key",key); + params.set("type",Constant.MainData); + String s = HttpUtils.HttpRestClient(url, HttpMethod.POST, params); + JSONObject result = (JSONObject) JSON.parse(s); + String sucess = result.getString(Constant.Success); + if (StringUtils.isEmpty(sucess) || !Boolean.valueOf(sucess)) { + return false; + }else { + return true; + } + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index e6d126a..2375f25 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -4,10 +4,11 @@ spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver + driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mdm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true username: root password: 123456 + type: com.alibaba.druid.pool.DruidDataSource activiti: database-schema-update: true @@ -40,4 +41,20 @@ callback: url: http://192.168.4.225:18080/activiti/getBusinessId #activiti: -# check-process-definitions: false \ No newline at end of file +# check-process-definitions: false +redis: + host: http://180.169.94.250 + port: 9107 + +master: + unbigdata: + db: + host: localhost + url: jdbc:mysql://localhost:3306/mdm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true + type: MYSQL + port: 3306 + schema: mdm + username: root + password: 123456 + bigdata: + db:hbase? \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 8273b0a..ca4953f 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -11,10 +11,10 @@ spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true - username: root - password: datacvg123! + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://180.169.94.250:8306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true + username: masterdata + password: md123! hikari: minimum-idle: 3 max-lifetime: 30000 @@ -43,3 +43,16 @@ global-config: db-config: column-underline: true + +master: + unbigdata: + db: + host: 180.169.94.250 + url: jdbc:mysql://180.169.94.250:8306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true + type: MYSQL + port: 8306 + schema: data_admin + username: masterdata + password: md123! + bigdata: + db:hbase? \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 252dcb4..35417e1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,6 @@ spring: profiles: active: - prod + dev + main: + allow-bean-definition-overriding: true \ No newline at end of file diff --git a/src/main/resources/bak/TaskServixceImpl.java b/src/main/resources/bak/TaskServixceImpl.java new file mode 100644 index 0000000..1231c3b --- /dev/null +++ b/src/main/resources/bak/TaskServixceImpl.java @@ -0,0 +1,465 @@ +package com.highdatas.mdm.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.highdatas.mdm.entity.*; +import com.highdatas.mdm.mapper.TableInfoMapper; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.DbAccessType; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.SysAssembleLogStatus; +import com.highdatas.mdm.pojo.kettle.KettleDBTrans; +import com.highdatas.mdm.pojo.kettle.UnBigDataDataSourceInfo; +import com.highdatas.mdm.service.*; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import org.apache.commons.lang3.StringUtils; +import org.pentaho.di.core.KettleClientEnvironment; +import org.pentaho.di.core.database.Database; +import org.pentaho.di.core.database.DatabaseMeta; +import org.pentaho.di.core.exception.KettleException; +import org.pentaho.di.core.logging.LoggingObjectInterface; +import org.pentaho.di.core.logging.LoggingObjectType; +import org.pentaho.di.core.logging.SimpleLoggingObject; +import org.pentaho.di.trans.Trans; +import org.pentaho.di.trans.TransHopMeta; +import org.pentaho.di.trans.TransMeta; +import org.pentaho.di.trans.step.StepMeta; +import org.pentaho.di.trans.steps.dummytrans.DummyTransMeta; +import org.pentaho.di.trans.steps.tableinput.TableInputMeta; +import org.pentaho.di.trans.steps.tableoutput.TableOutputMeta; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.awt.*; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.MessageFormat; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author kimi + * @description + * @date 2020-02-15 14:26 + */ + +@Service +public class TaskServixceImpl { + @Autowired + ISysAssembleService assembleService; + @Autowired + ISysAssembleDetailService assembleDetailService; + @Autowired + ISysAssembleLogService assembleLogService; + @Autowired + ISysDbtypeService dbtypeService; + @Autowired + IMenuMappingService menuMappingService; + @Autowired + UnBigDataDataSourceInfo unBigDataDataSourceInfo; + @Autowired + MasterDataService masterDataService; + @Autowired + TableInfoMapper infoMapper; + + @Override + public Result run(String assembleId) { + SysAssembleLog sysAssembleLog = new SysAssembleLog(); + sysAssembleLog.setId(DbUtils.getUUID()); + sysAssembleLog.setCreateTime(new Date()); + sysAssembleLog.setAssembleId(assembleId); + sysAssembleLog.setStatus(SysAssembleLogStatus.working); + sysAssembleLog.insert(); + + + if (StringUtils.isEmpty(assembleId)) { + sysAssembleLog.setMessage("assembleId is null").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + SysAssembleLog runtimeLog = assembleLogService.selectOne(new EntityWrapper<SysAssembleLog>().eq("assemble_id", assembleId).orderBy("create_time desc")); + if (runtimeLog != null) { + if (runtimeLog.getStatus().equals(SysAssembleLogStatus.working)) { + sysAssembleLog.setMessage("褰撳墠姝e湪鏈夊悓涓�浠诲姟鍦ㄨ繍琛�").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + return Result.error(new CodeMsg(3001, "褰撳墠姝e湪鏈夊悓涓�浠诲姟鍦ㄨ繍琛�")); + } + } + + KettleDBTrans kettleDBTrans = null; + try { + SysAssemble assemble = assembleService.selectById(assembleId); + if (assemble == null) { + //false + sysAssembleLog.setMessage("assemble is not found").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String sqlStr = "", tableName = ""; + + Database dsInput = null; + Database dsOutput = null; + TableInputMeta tableInputMeta = new TableInputMeta(); + TableOutputMeta talbeOutputMeta = new TableOutputMeta(); + TransMeta transMeta = new TransMeta(); + + kettleDBTrans = new KettleDBTrans(); + kettleDBTrans.setAssemble(assemble); + kettleDBTrans.setDsInput(dsInput); + kettleDBTrans.setDsOutput(dsOutput); + kettleDBTrans.setTableInputMeta(tableInputMeta); + kettleDBTrans.setTalbeOutputMeta(talbeOutputMeta); + kettleDBTrans.setTransMeta(transMeta); + + boolean connected = kettleDBConn(kettleDBTrans); + if (!connected){ + //false + sysAssembleLog.setMessage("connection failed").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + } + String dbType = ""; +// assemble.getDbType(); + SysDbtype sysDbtype = dbtypeService.selectOne(new EntityWrapper<SysDbtype>().eq("name", dbType)); + DbAccessType type = sysDbtype.getType(); + switch (type) { + case unRelational: + break; + case relational: + extractDBData(kettleDBTrans, sysAssembleLog); + + } + } catch (KettleException e) { + e.printStackTrace(); + sysAssembleLog.setMessage(e.getMessage()).setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + }finally { + Database dsInput = kettleDBTrans.getDsInput(); + if (dsInput != null) { + dsInput.disconnect(); + } + Database dsOutput = kettleDBTrans.getDsOutput(); + if (dsOutput != null) { + dsOutput.disconnect(); + } + + } + return null; + } + + private boolean kettleDBConn(KettleDBTrans kettleDBTrans) throws KettleException { + SysAssemble assemble = kettleDBTrans.getAssemble(); + + //鍒濆鍖杒ettle鐜 + KettleClientEnvironment.init(); + //瀵煎叆鏁版嵁鐨勬暟鎹簱杩炴帴 + DatabaseMeta dataMetaInput = null; +// DatabaseMeta dataMetaInput = new DatabaseMeta("Input", assemble.getDbType(), "Native",assemble.getHost(), assemble.getSchema(),assemble.getPort().toString(), +// assemble.getUserName(), assemble.getPassword()); + + Boolean bigdata = true; +// /assemble.getBigdata(); + DatabaseMeta dataMetaOutput = null; + if (bigdata) { + // 瀵煎叆hbase鏁版嵁搴� + }else { + // 瀵煎叆mysql鏁版嵁搴� + //瀵煎嚭鏁版嵁鐨勬暟鎹簱杩炴帴 + dataMetaOutput = new DatabaseMeta("Output", unBigDataDataSourceInfo.getDbType(), "Native", unBigDataDataSourceInfo.getDbHostName(), unBigDataDataSourceInfo.getDbName(), unBigDataDataSourceInfo.getDbPort(), + unBigDataDataSourceInfo.getUsername(), unBigDataDataSourceInfo.getPassword()); + } + + if (dataMetaOutput == null) { + return false; + + } + + //瀵煎嚭鏁版嵁搴撹繛鎺� + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + kettleDBTrans.setDsInput(new Database(loggingObject, dataMetaInput)); + kettleDBTrans.getDsInput().connect(); + Connection connInput = kettleDBTrans.getDsInput().getConnection(); + //瀵煎叆鏁版嵁搴撹繛鎺� + kettleDBTrans.setDsOutput(new Database(loggingObject, dataMetaOutput)); + kettleDBTrans.getDsOutput().connect(); + Connection connOutput = kettleDBTrans.getDsOutput().getConnection(); + + kettleDBTrans.getTransMeta().setName("鏁版嵁鎶藉彇"); + + kettleDBTrans.getTransMeta().addDatabase(dataMetaInput); + kettleDBTrans.getTransMeta().addDatabase(dataMetaOutput); + + //瀵煎嚭鏁版嵁 + kettleDBTrans.getTableInputMeta().setDatabaseMeta(kettleDBTrans.getTransMeta().findDatabase("Input")); + //瀵煎叆鏁版嵁 + kettleDBTrans.getTalbeOutputMeta().setDatabaseMeta(kettleDBTrans.getTransMeta().findDatabase("Output")); + return true; + } + + private void extractDBData(KettleDBTrans dbTrans, SysAssembleLog sysAssembleLog) { + try { + SysAssemble assemble = dbTrans.getAssemble(); + boolean checked = checkField(dbTrans); + if (!checked){ + //false log + sysAssembleLog.setMessage("source target field is not matched").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + return; + } + + List<SysAssembleDetail> detailList = assembleDetailService.selectList(new EntityWrapper<SysAssembleDetail>().eq("assemble_id", assemble.getId())); + List<String> fieldList = detailList.stream().map(sysAssembleDetail -> sysAssembleDetail.getField()).collect(Collectors.toList()); + if (fieldList.contains(Constant.ID)) { + fieldList.remove(Constant.ID); + fieldList.add(MessageFormat.format(Constant.FieldAsAlias, Constant.ID, Constant.STD_ID)); + if (!assemble.getBigdata()){ + //MYSQL + fieldList.add(MessageFormat.format(Constant.MYSQL_UUID, Constant.ID)); + } + //fieldList = fieldList.stream().map(s -> ( s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format(Constant.FieldAsAlias,Constant.ID, Constant.STD_ID) : s)) + }else { + if (!assemble.getBigdata()) { + fieldList.add(MessageFormat.format(Constant.MYSQL_UUID, Constant.STD_ID)); + fieldList.add(MessageFormat.format(Constant.MYSQL_UUID, Constant.ID)); + } + } + + String fieldStr = fieldList.stream().collect(Collectors.joining(Constant.COMMA)); + String countSqlStr = MessageFormat.format(Constant.selectFieldSqlTemplate, fieldStr, assemble.getTableName()); + String selectSqlStr = MessageFormat.format(Constant.selectFieldSqlTemplate, fieldStr, assemble.getTableName()); + dbTrans.getTableInputMeta().setSQL(selectSqlStr); + Database dsInput = dbTrans.getDsInput(); + Connection inputConnection = dsInput.getConnection(); + PreparedStatement cntStmt = inputConnection.prepareStatement(countSqlStr); + cntStmt.executeQuery(); + ResultSet cntResultSet = cntStmt.executeQuery(); + Integer sorceCnt = cntResultSet.getInt(Constant.CNT); + + // StepMeta + StepMeta inputStep = new StepMeta(Constant.STEP_READ_FROM_TABLE, dbTrans.getTableInputMeta()); + inputStep.setLocation(50, 50); + inputStep.setDraw(true); + dbTrans.getTransMeta().addStep(inputStep); + + String trmpTableName = getTempTableNameFromMenu(assemble.getMenuId()); + + dbTrans.getTalbeOutputMeta().setTableName(trmpTableName); + StepMeta insertUpdateStep = new StepMeta(Constant.STEP_INSERT_UPDATE, dbTrans.getTalbeOutputMeta()); + insertUpdateStep.setLocation(150, 50); + insertUpdateStep.setDraw(true); + dbTrans.getTransMeta().addStep(insertUpdateStep); + + DummyTransMeta dummyMeta = new DummyTransMeta(); + + StepMeta dummyStep = new StepMeta(Constant.STEP_DUMMY, dummyMeta); + dummyStep.setLocation(200, 50); + dummyStep.setDraw(true); + + dbTrans.getTransMeta().addStep(dummyStep); + + //璁剧疆姝ラ鐩存帴鐨勫叧绯� + TransHopMeta hop = new TransHopMeta(inputStep, insertUpdateStep); + dbTrans.getTransMeta().addTransHop(hop); + TransHopMeta hop2 = new TransHopMeta(insertUpdateStep, dummyStep); + dbTrans.getTransMeta().addTransHop(hop2); + + //寮�濮嬫墽琛� + Trans trans = new Trans(dbTrans.getTransMeta()); + trans.prepareExecution(null); + trans.startThreads(); + trans.waitUntilFinished(); + + int errors = trans.getErrors(); + if (errors == 0) { + //鎼繍鐩稿叧鏁版嵁 + if (!assemble.getBigdata()){ + masterDataService.uploadedData(assemble.getTableName(), "All", assemble.getUserId()); + } + else { + // TODO: 2020/2/16 hbase 鎼繍鏁版嵁 + } + sysAssembleLog.setCnt(sorceCnt).setMessage("姹囬泦鎴愬姛").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.success).updateById(); + }else { + sysAssembleLog.setMessage("姹囬泦鎼繍杩囩▼涓彂鐢熼棶棰�").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + } + boolean hasTable = dbTrans.getDsOutput().checkTableExists(assemble.getTableName()); + if (hasTable) { + //TODO 鍏ㄩ噺杩樻槸澧為噺 + } + else { + //鍒涘缓琛ㄧ浉鍏� 鐩墠绂佺敤 log + sysAssembleLog.setMessage("褰撳墠绯荤粺涓笉瀛樺湪鐩稿叧琛ㄦ暟鎹�,璇峰厛鍒濆鍖栬〃缁撴瀯绛夊熀纭�涓绘暟鎹粨鏋勪俊鎭�").setUpdateTime(new Date()).setStatus(SysAssembleLogStatus.defeat).updateById(); + } + } + catch (Exception e) { + e.printStackTrace(); + } + finally { + Database dsOutput = dbTrans.getDsOutput(); + if (dsOutput!= null) { + dsOutput.disconnect(); + } + Database dsInput = dbTrans.getDsInput(); + if (dsInput != null) { + dsInput.disconnect(); + } + } + } + + private String getTempTableNameFromMenu(String menuId) { + MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", menuId)); + String tableName = menuMapping.getTableName(); + return tableName + Constant.RECORD; + } + + private boolean checkField(KettleDBTrans dbTrans) { + SysAssemble assemble = dbTrans.getAssemble(); + boolean checked = true; + Connection conn = null; + Database ds = null; + try { + //1 check 婧愬簱涓槸鍚︽湁鐩稿叧瀛楁 + List<SysAssembleDetail> detailList = assembleDetailService.selectList(new EntityWrapper<SysAssembleDetail>().eq("assemble_id", assemble.getId())); + String fieldStr = detailList.stream().map(sysAssembleDetail -> sysAssembleDetail.getField()).collect(Collectors.joining(Constant.COMMA)); + List<String> fieldList = detailList.stream().map(sysAssembleDetail -> sysAssembleDetail.getField()).collect(Collectors.toList()); + String checkSqlStr = MessageFormat.format(Constant.checkFieldSqlTemplate, fieldStr, assemble.getTableName()); + //杩炴帴鏁版嵁搴� + KettleClientEnvironment.init(); + DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep",assemble.getDbType(), "Native", assemble.getHost(),assemble.getSchema(),assemble.getPort().toString(),assemble.getUserName(),assemble.getPassword()); + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + ds = new Database(loggingObject, dataMeta); + ds.connect(); + conn = ds.getConnection(); + PreparedStatement stmt = conn.prepareStatement(checkSqlStr); + stmt.executeQuery(); + ds.disconnect(); + ds = null; + //2 楠岃瘉 鐩爣搴撲腑鏄惁鏈夌浉鍏冲瓧娈� + Boolean bigdata = assemble.getBigdata(); + if (bigdata) { + //TODO hbase + } + else { + boolean exists = dbTrans.getDsOutput().checkTableExists(assemble.getTableName()); + if (exists) { + List<TableSchemaResult> tableFieldFromDb = infoMapper.getTableFieldFromDb(assemble.getTableName(), assemble.getSchema()); + List<String> targetFieldList = tableFieldFromDb.stream().map(tableSchemaResult -> tableSchemaResult.getFieldName()).collect(Collectors.toList()); + long count = fieldList.stream().filter(sourceField -> !targetFieldList.contains(sourceField)).count(); + if (count > 0) { + //TODO 鏈夐儴鍒嗗瓧娈垫湭鑳藉尮閰嶄笂 涓旀槸mysql鏁版嵁搴� 鏆傚鐞嗕负涓嶅鍏� log + checked = false; + } + } + + } + checked = true; + } catch(Exception e) { + e.printStackTrace(); + checked = false; + }finally { + if (ds != null) { + ds.disconnect(); + } + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + checked = false; + } + } + } + return checked; + } + + + @Override + public Result updateTask(String assembleId) { + return null; + } + + private Database getDataBaseByKettle(SysAssemble assemble) throws KettleException { + Database ds = null; + KettleClientEnvironment.init(); + DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep", assemble.getDbType(), "Native",assemble.getHost(), assemble.getSchema(), assemble.getPort().toString(), + assemble.getUserName(), assemble.getPassword()); + LoggingObjectInterface loggingObject = new SimpleLoggingObject("Database factory", LoggingObjectType.GENERAL, null ); + ds = new Database(loggingObject, dataMeta); + + return ds; + } + @Override + public boolean connectionDb(SysAssemble assemble) { + Connection conn = null; + Database ds = null; + boolean connected = false; + try { + ds = getDataBaseByKettle(assemble); + ds.normalConnect(null); + conn = ds.getConnection(); + + if (conn == null) { + connected = false; + }else { + connected = true; + } + + ds.disconnect(); + ds = null; + } catch (KettleException e) { + e.printStackTrace(); + connected = false; + } + finally { + if (ds != null) { + ds.disconnect(); + } + + try { + if (conn != null) { + conn.close(); + } + + } catch (SQLException e) { + e.printStackTrace(); + } + } + return connected; + } + + @Override + public boolean sqlTest(SysAssemble assemble, String sqlStr) { + Connection conn = null; + Database ds = null; + boolean connected = false; + try { + ds = getDataBaseByKettle(assemble); + ds.normalConnect(null); + conn = ds.getConnection(); + PreparedStatement stmt = conn.prepareStatement(sqlStr); + stmt.executeQuery(); + + ds.disconnect(); + ds = null; + connected = true; + } catch (Exception e) { + e.printStackTrace(); + connected = false; + } + finally { + if (ds != null) { + ds.disconnect(); + } + + try { + if (conn != null) { + conn.close(); + } + + } catch (SQLException e) { + e.printStackTrace(); + } + } + return connected; + } +} diff --git a/src/main/resources/lib/mysql-connector-java-5.1.46-bin.jar b/src/main/resources/lib/mysql-connector-java-5.1.46-bin.jar new file mode 100644 index 0000000..94ab24c --- /dev/null +++ b/src/main/resources/lib/mysql-connector-java-5.1.46-bin.jar Binary files differ diff --git a/src/main/resources/mapping/MenuMappingMapper.xml b/src/main/resources/mapping/MenuMappingMapper.xml index cdaaa5b..beb04ec 100644 --- a/src/main/resources/mapping/MenuMappingMapper.xml +++ b/src/main/resources/mapping/MenuMappingMapper.xml @@ -20,7 +20,7 @@ <select id="getMapping" resultType="java.util.Map"> SELECT - m.id,m.code, m.name, u.user_name as userName,system_id as systemId, + m.id,m.code, m.name, u.user_name as userName,system_id as systemId, m.audit as audit, sm.data_type as dataType, c2.name as cname1, c2.id as cid1, c1.name as cname2, c1.id as cid2, c.name as cname3, c.id as cid3, start_time as startTime, end_time as endTime, m.create_time as createTime, m.update_time as updateTime, diff --git a/src/main/resources/mapping/TableInfoMapper.xml b/src/main/resources/mapping/TableInfoMapper.xml index c208b70..2c07579 100644 --- a/src/main/resources/mapping/TableInfoMapper.xml +++ b/src/main/resources/mapping/TableInfoMapper.xml @@ -195,7 +195,7 @@ select ${fields} from ${tableName} where ${where} </select> - <select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Long"> + <select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Integer"> UPDATE ${tableTempName} t SET deal = 1 @@ -435,7 +435,15 @@ <select id="insertMatintainDetailFromTemp" statementType="STATEMENT" resultType="java.lang.Integer"> INSERT INTO maintain_detail - SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'create' as operate, id as pre_merge_id, NOW() as createdate + SELECT md5(uuid()) as id, ${maintainId} as parent_id, ${operate} as operate, id as pre_merge_id, NOW() as create_time + from ${tableTempName} m WHERE m.deal = 0 + + </select> + + <select id="insertMatintainDetailFromStandrad" statementType="STATEMENT" resultType="java.lang.Integer"> + + INSERT INTO maintain_detail + SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'delete' as operate, id as pre_merge_id, NOW() as create_time from ${tableTempName} m WHERE m.deal = 0 </select> @@ -444,6 +452,13 @@ update ${tableTempName} set std_id = md5(uuid()) WHERE deal = 0 + + </select> + + <select id="insertRecordFromStandrad" statementType="STATEMENT" resultType="java.lang.Integer"> + INSERT INTO ${recordTableName} + SELECT ${tempFieldList}, 0 as deal + from ${tableName} </select> @@ -476,7 +491,7 @@ DELETE ${tableTempName} from ${tableTempName} INNER JOIN maintain_detail on maintain_detail.pre_merge_id = ${tableTempName}.id WHERE maintain_detail.parent_id = ${maintainId} and ${tableTempName}.std_id = ${stdId} -\ + </select> </mapper> -- Gitblit v1.8.0