├── .gitee └── ISSUE_TEMPLATE.zh-CN.md ├── .gitignore ├── DEPLOY.md ├── LICENSE ├── README.en.md ├── README.md ├── images ├── banner.png ├── banner2.png ├── deploy │ ├── rabbitmq.png │ ├── redis.png │ ├── 后端jar包.png │ ├── 后端打包成功.png │ ├── 后端部署 │ │ ├── docker-compose修改.png │ │ ├── restart修改.png │ │ ├── 修改Dockerfile.png │ │ ├── 后端jar包.png │ │ ├── 后端启动中.png │ │ ├── 后端启动成功.png │ │ ├── 后端所需文件.png │ │ └── 服务器文件.png │ ├── 数据库.png │ ├── 调度器.png │ └── 调度器 │ │ ├── image1.png │ │ ├── image2.png │ │ ├── image3.png │ │ ├── image4.png │ │ ├── 个人版实例.png │ │ ├── 设置访问凭证.png │ │ └── 验证spark.png ├── framework.png └── system │ ├── 10资产地图.png │ ├── 11数据集成任务.png │ ├── 12可视化etl.png │ ├── 13数据服务.png │ ├── 14执行日志.png │ ├── 15发布服务.png │ ├── 16日志.png │ ├── 1登录页.png │ ├── 2首页.png │ ├── 3稽查规则.png │ ├── 4清洗规则.png │ ├── 5逻辑模型.png │ ├── 6数据元.png │ ├── 7映射.png │ ├── 8数据连接.png │ └── 9数据发现.png ├── pom.xml ├── qdata-api-ds ├── pom.xml ├── qdata-api-ds-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── api │ │ └── ds │ │ └── api │ │ ├── base │ │ ├── DsResultDTO.java │ │ └── DsStatusRespDTO.java │ │ ├── etl │ │ ├── DSExecuteDTO.java │ │ ├── DsNodeGenCodeRespDTO.java │ │ ├── DsSchedulerRespDTO.java │ │ ├── DsSchedulerSaveReqDTO.java │ │ ├── DsSchedulerUpdateReqDTO.java │ │ ├── DsStartTaskReqDTO.java │ │ ├── DsTaskSaveReqDTO.java │ │ ├── DsTaskSaveRespDTO.java │ │ └── ds │ │ │ ├── ProcessDefinition.java │ │ │ ├── ProcessDefinitionLog.java │ │ │ ├── ProcessInstance.java │ │ │ ├── ProcessTaskRelation.java │ │ │ ├── ProcessTaskRelationLog.java │ │ │ ├── Schedule.java │ │ │ ├── TaskDefinition.java │ │ │ ├── TaskDefinitionLog.java │ │ │ └── TaskInstance.java │ │ ├── package-info.java │ │ ├── project │ │ ├── DsProjectCreateReqDTO.java │ │ ├── DsProjectDeleteRespDTO.java │ │ ├── DsProjectRespDTO.java │ │ └── DsProjectUpdateReqDTO.java │ │ └── service │ │ ├── etl │ │ ├── IDsEtlExecutorService.java │ │ ├── IDsEtlNodeService.java │ │ ├── IDsEtlSchedulerService.java │ │ └── IDsEtlTaskService.java │ │ └── project │ │ └── IDsProjectService.java └── qdata-api-ds-biz │ ├── pom.xml │ └── src │ └── main │ └── java │ └── tech │ └── qiantong │ └── qdata │ └── api │ └── ds │ └── service │ ├── etl │ ├── DsEtlExecutorServiceImpl.java │ ├── DsEtlNodeServiceImpl.java │ ├── DsEtlSchedulerServiceImpl.java │ └── DsEtlTaskServiceImpl.java │ └── project │ └── DsProjectServiceImpl.java ├── qdata-etl ├── pom.xml └── src │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── spark │ │ └── etl │ │ ├── EtlApplication.java │ │ ├── reader │ │ ├── CsvReader.java │ │ ├── DBReader.java │ │ ├── ExcelReader.java │ │ ├── KafkaReader.java │ │ ├── Reader.java │ │ ├── ReaderFactory.java │ │ └── ReaderRegistry.java │ │ ├── transition │ │ └── CleanTransition.java │ │ ├── utils │ │ ├── CodeGenerateUtils.java │ │ ├── Constants.java │ │ ├── EtlUtils.java │ │ ├── IDGeneratorUtils.java │ │ ├── LogUtils.java │ │ ├── RabbitmqUtils.java │ │ ├── SnowflakeIdHelper.java │ │ └── db │ │ │ ├── DBUtils.java │ │ │ ├── element │ │ │ ├── BoolDataColumn.java │ │ │ ├── BytesDataColumn.java │ │ │ ├── ColumnCast.java │ │ │ ├── DataColumn.java │ │ │ ├── DateDataColumn.java │ │ │ ├── DoubleDataColumn.java │ │ │ ├── LongDataColumn.java │ │ │ ├── OverFlowUtil.java │ │ │ └── StringDataColumn.java │ │ │ ├── exception │ │ │ └── DBException.java │ │ │ └── spark │ │ │ └── dialect │ │ │ └── HiveSqlDialect.java │ │ └── writer │ │ ├── DBWriter.java │ │ ├── Writer.java │ │ ├── WriterFactory.java │ │ └── WriterRegistry.java │ └── resources │ └── json │ ├── CSV输入.json │ ├── EXCEL输入.json │ ├── HDFS输入.json │ ├── HDFS输出.json │ ├── HIVE输入.json │ ├── HIVE输出.json │ ├── Kafka输入.json │ ├── 数据库输入.json │ ├── 数据库输出.json │ └── 清洗转换.json ├── qdata-framework ├── pom.xml ├── qdata-auth │ ├── pom.xml │ └── src │ │ └── main │ │ └── resources │ │ ├── application-auth-dev.yml │ │ └── application-auth-prod.yml ├── qdata-common │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── common │ │ ├── annotation │ │ ├── Anonymous.java │ │ ├── DataScope.java │ │ ├── DataSource.java │ │ ├── Excel.java │ │ ├── Excels.java │ │ ├── Log.java │ │ ├── RateLimiter.java │ │ ├── RepeatSubmit.java │ │ └── Sensitive.java │ │ ├── config │ │ ├── AniviaConfig.java │ │ ├── RabbitmqConfig.java │ │ └── serializer │ │ │ ├── BooleanDeserializer.java │ │ │ └── SensitiveJsonSerializer.java │ │ ├── constant │ │ ├── CacheConstants.java │ │ ├── Constants.java │ │ ├── GenConstants.java │ │ ├── HttpStatus.java │ │ ├── ScheduleConstants.java │ │ └── UserConstants.java │ │ ├── core │ │ ├── controller │ │ │ └── BaseController.java │ │ ├── domain │ │ │ ├── AjaxResult.java │ │ │ ├── BaseEntity.java │ │ │ ├── CommonResult.java │ │ │ ├── R.java │ │ │ ├── ReturnT.java │ │ │ ├── TreeEntity.java │ │ │ ├── TreeSelect.java │ │ │ ├── entity │ │ │ │ ├── RpAreaDict.java │ │ │ │ ├── RpDept.java │ │ │ │ ├── SysDept.java │ │ │ │ ├── SysDictData.java │ │ │ │ ├── SysDictType.java │ │ │ │ ├── SysMenu.java │ │ │ │ ├── SysRole.java │ │ │ │ └── SysUser.java │ │ │ └── model │ │ │ │ ├── LoginBody.java │ │ │ │ ├── LoginUser.java │ │ │ │ └── RegisterBody.java │ │ ├── page │ │ │ ├── PageDomain.java │ │ │ ├── PageParam.java │ │ │ ├── PageResult.java │ │ │ ├── SortablePageParam.java │ │ │ ├── SortingField.java │ │ │ ├── TableDataInfo.java │ │ │ └── TableSupport.java │ │ ├── redis │ │ │ └── RedisCache.java │ │ └── text │ │ │ ├── CharsetKit.java │ │ │ ├── Convert.java │ │ │ └── StrFormatter.java │ │ ├── database │ │ ├── DataSourceFactory.java │ │ ├── DbDialect.java │ │ ├── DbQuery.java │ │ ├── DialectFactory.java │ │ ├── cache │ │ │ ├── DefaultSqlCache.java │ │ │ └── SqlCache.java │ │ ├── constants │ │ │ ├── DbDataType.java │ │ │ ├── DbQueryProperty.java │ │ │ ├── DbType.java │ │ │ ├── InterpretationType.java │ │ │ └── fieldtypes │ │ │ │ ├── DM8FieldType.java │ │ │ │ ├── Kingbase8FieldType.java │ │ │ │ ├── MysqlFieldType.java │ │ │ │ └── OracleFieldType.java │ │ ├── core │ │ │ ├── DbColumn.java │ │ │ ├── DbTable.java │ │ │ └── PageResult.java │ │ ├── datasource │ │ │ ├── AbstractDataSourceFactory.java │ │ │ ├── CacheDataSourceFactoryBean.java │ │ │ └── DefaultDataSourceFactoryBean.java │ │ ├── dialect │ │ │ ├── AbstractDbDialect.java │ │ │ ├── DM8Dialect.java │ │ │ ├── DialectRegistry.java │ │ │ ├── KafkaDialect.java │ │ │ ├── Kingbase8Dialect.java │ │ │ ├── MariaDBDialect.java │ │ │ ├── MySqlDialect.java │ │ │ ├── Oracle12cDialect.java │ │ │ ├── OracleDialect.java │ │ │ ├── PostgreDialect.java │ │ │ ├── SQLServer2008Dialect.java │ │ │ ├── SQLServerDialect.java │ │ │ └── UnknownDialect.java │ │ ├── exception │ │ │ └── DataQueryException.java │ │ ├── query │ │ │ ├── AbstractDbQueryFactory.java │ │ │ ├── CacheDbQueryFactoryBean.java │ │ │ └── DefaultDbQueryFactoryBean.java │ │ └── utils │ │ │ └── MD5Util.java │ │ ├── enums │ │ ├── BusinessStatus.java │ │ ├── BusinessType.java │ │ ├── CommandType.java │ │ ├── ConfigType.java │ │ ├── DataConstant.java │ │ ├── DataSourceType.java │ │ ├── DesensitizedType.java │ │ ├── DmColumnTypeEnum.java │ │ ├── ExecuteType.java │ │ ├── FailureStrategy.java │ │ ├── Flag.java │ │ ├── HttpMethod.java │ │ ├── KingbaseColumnTypeEnum.java │ │ ├── LimitType.java │ │ ├── MySqlColumnTypeEnum.java │ │ ├── OperatorType.java │ │ ├── ParamType.java │ │ ├── Priority.java │ │ ├── RequestMethodEnum.java │ │ ├── TaskCatEnum.java │ │ ├── TaskComponentTypeEnum.java │ │ ├── TaskExecutionStatus.java │ │ ├── UserStatus.java │ │ ├── WhereType.java │ │ └── WorkflowExecutionStatus.java │ │ ├── exception │ │ ├── DemoModeException.java │ │ ├── ErrorCode.java │ │ ├── GlobalException.java │ │ ├── ServiceException.java │ │ ├── UtilException.java │ │ ├── base │ │ │ └── BaseException.java │ │ ├── enums │ │ │ └── GlobalErrorCodeConstants.java │ │ ├── file │ │ │ ├── FileException.java │ │ │ ├── FileNameLengthLimitExceededException.java │ │ │ ├── FileSizeLimitExceededException.java │ │ │ ├── FileUploadException.java │ │ │ └── InvalidExtensionException.java │ │ ├── job │ │ │ └── TaskException.java │ │ └── user │ │ │ ├── BlackListException.java │ │ │ ├── CaptchaException.java │ │ │ ├── CaptchaExpireException.java │ │ │ ├── UserException.java │ │ │ ├── UserNotExistsException.java │ │ │ ├── UserPasswordNotMatchException.java │ │ │ └── UserPasswordRetryLimitExceedException.java │ │ ├── filter │ │ ├── PropertyPreExcludeFilter.java │ │ ├── RepeatableFilter.java │ │ ├── RepeatedlyRequestWrapper.java │ │ ├── XssFilter.java │ │ └── XssHttpServletRequestWrapper.java │ │ ├── httpClient │ │ ├── DsRequestUtils.java │ │ ├── HeaderEntity.java │ │ ├── HttpTaskLogger.java │ │ ├── HttpUtils.java │ │ ├── JsonUtil.java │ │ └── constants │ │ │ └── QianTongDCApiType.java │ │ ├── utils │ │ ├── AesEncryptUtil.java │ │ ├── Arith.java │ │ ├── ConversionUtils.java │ │ ├── DateUtils.java │ │ ├── DesensitizedUtil.java │ │ ├── DictUtils.java │ │ ├── ExcelToCsvUtil.java │ │ ├── ExceptionUtil.java │ │ ├── IPUtil.java │ │ ├── JSONUtils.java │ │ ├── LogUtils.java │ │ ├── MD5Util.java │ │ ├── MessageUtils.java │ │ ├── PageUtil.java │ │ ├── PageUtils.java │ │ ├── SecurityUtils.java │ │ ├── ServletUtils.java │ │ ├── SoMap.java │ │ ├── StringUtils.java │ │ ├── Threads.java │ │ ├── YouBianCodeUtil.java │ │ ├── bean │ │ │ ├── BeanUtils.java │ │ │ └── BeanValidators.java │ │ ├── ca │ │ │ ├── CaCertificateIssuer.java │ │ │ └── CaGenerateRootCertificate.java │ │ ├── collection │ │ │ ├── CollectionUtils.java │ │ │ └── SetUtils.java │ │ ├── encryptor │ │ │ └── DynamicAESUtil.java │ │ ├── file │ │ │ ├── FileTypeUtils.java │ │ │ ├── FileUploadUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── ImageUtils.java │ │ │ └── MimeTypeUtils.java │ │ ├── html │ │ │ ├── EscapeUtil.java │ │ │ └── HTMLFilter.java │ │ ├── http │ │ │ ├── HttpHelper.java │ │ │ └── HttpUtils.java │ │ ├── ip │ │ │ ├── AddressUtils.java │ │ │ └── IpUtils.java │ │ ├── json │ │ │ ├── JsonDataDeserializer.java │ │ │ └── JsonDataSerializer.java │ │ ├── object │ │ │ └── BeanUtils.java │ │ ├── poi │ │ │ ├── ExcelHandlerAdapter.java │ │ │ └── ExcelUtil.java │ │ ├── reflect │ │ │ └── ReflectUtils.java │ │ ├── sign │ │ │ ├── Base64.java │ │ │ └── Md5Utils.java │ │ ├── spring │ │ │ └── SpringUtils.java │ │ ├── sql │ │ │ └── SqlUtil.java │ │ ├── string │ │ │ └── StrUtils.java │ │ └── uuid │ │ │ ├── IdUtils.java │ │ │ ├── Seq.java │ │ │ └── UUID.java │ │ └── xss │ │ ├── Xss.java │ │ └── XssValidator.java ├── qdata-config │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── config │ │ ├── ApplicationConfig.java │ │ ├── CaptchaConfig.java │ │ ├── FilterConfig.java │ │ ├── I18nConfig.java │ │ ├── KaptchaTextCreator.java │ │ ├── RabbitConfig.java │ │ ├── ResourcesConfig.java │ │ ├── ServerConfig.java │ │ ├── ThreadPoolConfig.java │ │ ├── interceptor │ │ ├── RepeatSubmitInterceptor.java │ │ └── impl │ │ │ └── SameUrlDataInterceptor.java │ │ └── web │ │ └── domain │ │ ├── Server.java │ │ └── server │ │ ├── Cpu.java │ │ ├── Jvm.java │ │ ├── Mem.java │ │ ├── Sys.java │ │ └── SysFile.java ├── qdata-es │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── tech │ │ │ └── qiantong │ │ │ └── qdata │ │ │ └── es │ │ │ ├── esmapper │ │ │ └── example │ │ │ │ ├── DocumentMapper.java │ │ │ │ └── EsTextDocumentMapper.java │ │ │ ├── model │ │ │ ├── Search.java │ │ │ └── example │ │ │ │ ├── Document.java │ │ │ │ └── EsTextDocument.java │ │ │ └── service │ │ │ ├── ISearchService.java │ │ │ └── impl │ │ │ └── SearchImpl.java │ │ └── resources │ │ ├── application-es-dev.yml │ │ └── application-es-prod.yml ├── qdata-file │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── tech │ │ │ └── qiantong │ │ │ └── qdata │ │ │ └── file │ │ │ ├── controller │ │ │ └── FileUploadController.java │ │ │ └── util │ │ │ └── FileUploadUtil.java │ │ └── resources │ │ ├── application-file-dev.yml │ │ └── application-file-prod.yml ├── qdata-generator │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── tech │ │ │ └── qiantong │ │ │ └── qdata │ │ │ └── generator │ │ │ ├── config │ │ │ └── GenConfig.java │ │ │ ├── controller │ │ │ └── GenController.java │ │ │ ├── domain │ │ │ ├── GenTable.java │ │ │ └── GenTableColumn.java │ │ │ ├── mapper │ │ │ ├── GenTableColumnMapper.java │ │ │ └── GenTableMapper.java │ │ │ ├── service │ │ │ ├── GenTableColumnServiceImpl.java │ │ │ ├── GenTableServiceImpl.java │ │ │ ├── IGenTableColumnService.java │ │ │ └── IGenTableService.java │ │ │ └── util │ │ │ ├── GenUtils.java │ │ │ ├── VelocityInitializer.java │ │ │ └── VelocityUtils.java │ │ └── resources │ │ ├── generator.yml │ │ ├── mapper │ │ └── generator │ │ │ ├── GenTableColumnMapper.xml │ │ │ └── GenTableMapper.xml │ │ ├── vm-tree │ │ ├── java │ │ │ ├── controller.java.vm │ │ │ ├── domain.java.vm │ │ │ ├── mapper.java.vm │ │ │ ├── service.java.vm │ │ │ ├── serviceImpl.java.vm │ │ │ └── sub-domain.java.vm │ │ ├── js │ │ │ └── api.js.vm │ │ ├── sql │ │ │ └── sql.vm │ │ ├── vue │ │ │ ├── index-tree.vue.vm │ │ │ ├── index.vue.vm │ │ │ ├── v2 │ │ │ │ ├── index-tree.vue.vm │ │ │ │ └── index.vue.vm │ │ │ └── v3 │ │ │ │ ├── index-tree.vue.vm │ │ │ │ └── index.vue.vm │ │ └── xml │ │ │ └── mapper.xml.vm │ │ └── vm │ │ ├── java │ │ ├── controller.java.vm │ │ ├── convert.java.vm │ │ ├── dict.java.vm │ │ ├── do.java.vm │ │ ├── mapper.java.vm │ │ ├── pageReqVO.java.vm │ │ ├── reqDTO.java.vm │ │ ├── respDTO.java.vm │ │ ├── respVO.java.vm │ │ ├── saveReqVO.java.vm │ │ ├── service.java.vm │ │ ├── serviceImpl.java.vm │ │ └── sub-domain.java.vm │ │ ├── js │ │ └── api.js.vm │ │ ├── sql │ │ └── sql.vm │ │ ├── vue │ │ ├── index-tree.vue.vm │ │ ├── index.vue.vm │ │ ├── v2 │ │ │ ├── index-tree.vue.vm │ │ │ ├── index.vue.vm │ │ │ └── selection │ │ │ │ ├── multiple-selection.vue.vm │ │ │ │ └── single-selection.vue.vm │ │ └── v3 │ │ │ ├── detail │ │ │ ├── complex-detail.vue.vm │ │ │ ├── componentOne.vue.vm │ │ │ └── componentTwo.vue.vm │ │ │ ├── index-tree.vue.vm │ │ │ ├── index.vue.vm │ │ │ └── selection │ │ │ ├── multiple-selection.vue.vm │ │ │ └── single-selection.vue.vm │ │ └── xml │ │ └── mapper.xml.vm ├── qdata-mybatis │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── mybatis │ │ ├── config │ │ ├── DynamicDataSourceAspect.java │ │ ├── MasterDataSourceConfig.java │ │ └── MybatisPlusConfig.java │ │ ├── core │ │ ├── enums │ │ │ ├── DbTypeEnum.java │ │ │ └── SqlConstants.java │ │ ├── mapper │ │ │ └── BaseMapperX.java │ │ ├── query │ │ │ ├── LambdaQueryWrapperX.java │ │ │ ├── MPJLambdaWrapperX.java │ │ │ └── QueryWrapperX.java │ │ ├── type │ │ │ ├── EncryptTypeHandler.java │ │ │ ├── IntegerListTypeHandler.java │ │ │ ├── LongListTypeHandler.java │ │ │ └── StringListTypeHandler.java │ │ └── util │ │ │ ├── JdbcUtils.java │ │ │ ├── MyBatisUtils.java │ │ │ └── MyMetaObjectHandler.java │ │ └── datasource │ │ ├── DynamicDataSource.java │ │ └── DynamicDataSourceContextHolder.java ├── qdata-pay │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── tech │ │ │ └── qiantong │ │ │ └── qdata │ │ │ └── pay │ │ │ ├── config │ │ │ └── AliPayConfig.java │ │ │ ├── domain │ │ │ ├── AlipayNotification.java │ │ │ ├── Notification.java │ │ │ ├── PaymentRequest.java │ │ │ ├── PaymentResponse.java │ │ │ ├── PaymentStatusResponse.java │ │ │ ├── PaymentType.java │ │ │ ├── RefundRequest.java │ │ │ └── RefundResponse.java │ │ │ ├── service │ │ │ ├── PayGatewayClient.java │ │ │ ├── PaymentService.java │ │ │ └── impl │ │ │ │ ├── AlipayClientImpl.java │ │ │ │ ├── PaymentServiceImpl.java │ │ │ │ └── WeChatPayClientImpl.java │ │ │ └── utils │ │ │ └── SignatureUtil.java │ │ └── resources │ │ ├── application-pay-dev.yml │ │ └── application-pay-prod.yml ├── qdata-quartz │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── tech │ │ │ └── qiantong │ │ │ └── qdata │ │ │ └── quartz │ │ │ ├── config │ │ │ └── ScheduleConfig.java │ │ │ ├── controller │ │ │ ├── SysJobController.java │ │ │ └── SysJobLogController.java │ │ │ ├── domain │ │ │ ├── SysJob.java │ │ │ └── SysJobLog.java │ │ │ ├── enums │ │ │ └── JobErrorEnum.java │ │ │ ├── mapper │ │ │ ├── SysJobLogMapper.java │ │ │ └── SysJobMapper.java │ │ │ ├── service │ │ │ ├── ISysJobLogService.java │ │ │ ├── ISysJobService.java │ │ │ └── impl │ │ │ │ ├── SysJobLogServiceImpl.java │ │ │ │ └── SysJobServiceImpl.java │ │ │ ├── task │ │ │ └── RyTask.java │ │ │ └── util │ │ │ ├── AbstractQuartzJob.java │ │ │ ├── CronUtils.java │ │ │ ├── JobInvokeUtil.java │ │ │ ├── QuartzDisallowConcurrentExecution.java │ │ │ ├── QuartzJobExecution.java │ │ │ └── ScheduleUtils.java │ │ └── resources │ │ └── mapper │ │ └── quartz │ │ ├── SysJobLogMapper.xml │ │ └── SysJobMapper.xml ├── qdata-redis │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── redis │ │ ├── config │ │ ├── FastJson2JsonRedisSerializer.java │ │ └── RedisConfig.java │ │ ├── constant │ │ └── Constants.java │ │ └── service │ │ ├── IRedisService.java │ │ └── impl │ │ └── RedisServiceImpl.java ├── qdata-security │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── security │ │ ├── aspectj │ │ ├── DataScopeAspect.java │ │ ├── DataSourceAspect.java │ │ ├── LogAspect.java │ │ └── RateLimiterAspect.java │ │ ├── config │ │ ├── SecurityConfig.java │ │ └── properties │ │ │ └── PermitAllUrlProperties.java │ │ ├── context │ │ ├── AuthenticationContextHolder.java │ │ └── PermissionContextHolder.java │ │ ├── filter │ │ └── JwtAuthenticationTokenFilter.java │ │ ├── handle │ │ ├── AuthenticationEntryPointImpl.java │ │ └── LogoutSuccessHandlerImpl.java │ │ ├── manager │ │ ├── AsyncManager.java │ │ ├── ShutdownManager.java │ │ └── factory │ │ │ └── AsyncFactory.java │ │ └── web │ │ ├── exception │ │ └── GlobalExceptionHandler.java │ │ └── service │ │ ├── PermissionService.java │ │ ├── RpTokenService.java │ │ ├── SysLoginService.java │ │ ├── SysPasswordService.java │ │ ├── SysPermissionService.java │ │ ├── SysRegisterService.java │ │ ├── TokenService.java │ │ └── UserDetailsServiceImpl.java └── qdata-websocket │ ├── pom.xml │ └── src │ └── main │ └── java │ └── tech │ └── qiantong │ └── qdata │ └── websocket │ ├── SemaphoreUtils.java │ ├── WebSocketConfig.java │ ├── WebSocketMessage.java │ └── WebSocketUsers.java ├── qdata-module-att ├── pom.xml ├── qdata-module-att-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── att │ │ └── api │ │ ├── cat │ │ ├── IAttCatService.java │ │ └── dto │ │ │ ├── AttApiCatReqDTO.java │ │ │ ├── AttApiCatRespDTO.java │ │ │ ├── AttAssetCatReqDTO.java │ │ │ ├── AttAssetCatRespDTO.java │ │ │ ├── AttDataDevCatReqDTO.java │ │ │ ├── AttDataDevCatRespDTO.java │ │ │ ├── AttDataElemCatReqDTO.java │ │ │ ├── AttDataElemCatRespDTO.java │ │ │ ├── AttDiscoverTaskCatReqDTO.java │ │ │ ├── AttDiscoverTaskCatRespDTO.java │ │ │ ├── AttDocCatReqDTO.java │ │ │ ├── AttDocCatRespDTO.java │ │ │ ├── AttJobCatReqDTO.java │ │ │ ├── AttJobCatRespDTO.java │ │ │ ├── AttModelCatReqDTO.java │ │ │ ├── AttModelCatRespDTO.java │ │ │ ├── AttTaskCatReqDTO.java │ │ │ └── AttTaskCatRespDTO.java │ │ ├── client │ │ ├── ClientApi.java │ │ └── dto │ │ │ ├── AttClientReqDTO.java │ │ │ └── AttClientRespDTO.java │ │ ├── package-info.java │ │ ├── project │ │ ├── IAttProjectApi.java │ │ └── dto │ │ │ ├── AttProjectReqDTO.java │ │ │ ├── AttProjectRespDTO.java │ │ │ ├── AttProjectUserRelReqDTO.java │ │ │ └── AttProjectUserRelRespDTO.java │ │ ├── rule │ │ └── dto │ │ │ ├── AttAuditRuleReqDTO.java │ │ │ ├── AttAuditRuleRespDTO.java │ │ │ ├── AttCleanRuleReqDTO.java │ │ │ └── AttCleanRuleRespDTO.java │ │ ├── service │ │ └── cat │ │ │ ├── IAttApiCatApiService.java │ │ │ ├── IAttDataDevCatApiService.java │ │ │ ├── IAttDocCatApiService.java │ │ │ └── IAttTaskCatApiService.java │ │ └── theme │ │ └── dto │ │ ├── AttThemeReqDTO.java │ │ └── AttThemeRespDTO.java └── qdata-module-att-biz │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── att │ │ ├── api │ │ └── client │ │ │ └── ClientApiImpl.java │ │ ├── controller │ │ └── admin │ │ │ ├── cat │ │ │ ├── AttApiCatController.java │ │ │ ├── AttAssetCatController.java │ │ │ ├── AttDataDevCatController.java │ │ │ ├── AttDataElemCatController.java │ │ │ ├── AttModelCatController.java │ │ │ ├── AttTaskCatController.java │ │ │ └── vo │ │ │ │ ├── AttApiCatPageReqVO.java │ │ │ │ ├── AttApiCatRespVO.java │ │ │ │ ├── AttApiCatSaveReqVO.java │ │ │ │ ├── AttAssetCatPageReqVO.java │ │ │ │ ├── AttAssetCatRespVO.java │ │ │ │ ├── AttAssetCatSaveReqVO.java │ │ │ │ ├── AttDataDevCatPageReqVO.java │ │ │ │ ├── AttDataDevCatRespVO.java │ │ │ │ ├── AttDataDevCatSaveReqVO.java │ │ │ │ ├── AttDataElemCatPageReqVO.java │ │ │ │ ├── AttDataElemCatRespVO.java │ │ │ │ ├── AttDataElemCatSaveReqVO.java │ │ │ │ ├── AttDiscoverTaskCatPageReqVO.java │ │ │ │ ├── AttDiscoverTaskCatRespVO.java │ │ │ │ ├── AttDiscoverTaskCatSaveReqVO.java │ │ │ │ ├── AttDocCatPageReqVO.java │ │ │ │ ├── AttDocCatRespVO.java │ │ │ │ ├── AttDocCatSaveReqVO.java │ │ │ │ ├── AttJobCatPageReqVO.java │ │ │ │ ├── AttJobCatRespVO.java │ │ │ │ ├── AttJobCatSaveReqVO.java │ │ │ │ ├── AttModelCatPageReqVO.java │ │ │ │ ├── AttModelCatRespVO.java │ │ │ │ ├── AttModelCatSaveReqVO.java │ │ │ │ ├── AttTaskCatPageReqVO.java │ │ │ │ ├── AttTaskCatRespVO.java │ │ │ │ └── AttTaskCatSaveReqVO.java │ │ │ ├── client │ │ │ ├── AttClientController.java │ │ │ └── vo │ │ │ │ ├── AttClientPageReqVO.java │ │ │ │ ├── AttClientRespVO.java │ │ │ │ └── AttClientSaveReqVO.java │ │ │ ├── project │ │ │ ├── AttProjectController.java │ │ │ ├── AttProjectUserRelController.java │ │ │ └── vo │ │ │ │ ├── AttProjectPageReqVO.java │ │ │ │ ├── AttProjectRespVO.java │ │ │ │ ├── AttProjectSaveReqVO.java │ │ │ │ ├── AttProjectUserRelPageReqVO.java │ │ │ │ ├── AttProjectUserRelRespVO.java │ │ │ │ └── AttProjectUserRelSaveReqVO.java │ │ │ ├── rule │ │ │ ├── AttAuditRuleController.java │ │ │ ├── AttCleanRuleController.java │ │ │ └── vo │ │ │ │ ├── AttAuditRulePageReqVO.java │ │ │ │ ├── AttAuditRuleRespVO.java │ │ │ │ ├── AttAuditRuleSaveReqVO.java │ │ │ │ ├── AttCleanRulePageReqVO.java │ │ │ │ ├── AttCleanRuleRespVO.java │ │ │ │ └── AttCleanRuleSaveReqVO.java │ │ │ └── theme │ │ │ ├── AttThemeController.java │ │ │ └── vo │ │ │ ├── AttThemePageReqVO.java │ │ │ ├── AttThemeRespVO.java │ │ │ └── AttThemeSaveReqVO.java │ │ ├── convert │ │ ├── cat │ │ │ ├── AttApiCatConvert.java │ │ │ ├── AttAssetCatConvert.java │ │ │ ├── AttDataDevCatConvert.java │ │ │ ├── AttDataElemCatConvert.java │ │ │ ├── AttModelCatConvert.java │ │ │ └── AttTaskCatConvert.java │ │ ├── client │ │ │ └── AttClientConvert.java │ │ ├── project │ │ │ ├── AttProjectConvert.java │ │ │ └── AttProjectUserRelConvert.java │ │ ├── rule │ │ │ ├── AttAuditRuleConvert.java │ │ │ └── AttCleanRuleConvert.java │ │ └── theme │ │ │ └── AttThemeConvert.java │ │ ├── dal │ │ ├── dataobject │ │ │ ├── cat │ │ │ │ ├── AttApiCatDO.java │ │ │ │ ├── AttAssetCatDO.java │ │ │ │ ├── AttDataDevCatDO.java │ │ │ │ ├── AttDataElemCatDO.java │ │ │ │ ├── AttModelCatDO.java │ │ │ │ └── AttTaskCatDO.java │ │ │ ├── client │ │ │ │ └── AttClientDO.java │ │ │ ├── project │ │ │ │ ├── AttProjectDO.java │ │ │ │ └── AttProjectUserRelDO.java │ │ │ ├── rule │ │ │ │ ├── AttAuditRuleDO.java │ │ │ │ ├── AttCleanRuleDO.java │ │ │ │ └── enums │ │ │ │ │ ├── CleanRuleTypeEnum.java │ │ │ │ │ └── RuleTypeEnum.java │ │ │ └── theme │ │ │ │ └── AttThemeDO.java │ │ └── mapper │ │ │ ├── cat │ │ │ ├── AttApiCatMapper.java │ │ │ ├── AttAssetCatMapper.java │ │ │ ├── AttCatMapper.java │ │ │ ├── AttDataDevCatMapper.java │ │ │ ├── AttDataElemCatMapper.java │ │ │ ├── AttModelCatMapper.java │ │ │ └── AttTaskCatMapper.java │ │ │ ├── client │ │ │ └── AttClientMapper.java │ │ │ ├── project │ │ │ ├── AttProjectMapper.java │ │ │ └── AttProjectUserRelMapper.java │ │ │ ├── rule │ │ │ ├── AttAuditRuleMapper.java │ │ │ └── AttCleanRuleMapper.java │ │ │ └── theme │ │ │ └── AttThemeMapper.java │ │ ├── package-info.java │ │ └── service │ │ ├── cat │ │ ├── IAttApiCatService.java │ │ ├── IAttAssetCatService.java │ │ ├── IAttDataDevCatService.java │ │ ├── IAttDataElemCatService.java │ │ ├── IAttModelCatService.java │ │ ├── IAttTaskCatService.java │ │ └── impl │ │ │ ├── AttApiCatServiceImpl.java │ │ │ ├── AttAssetCatServiceImpl.java │ │ │ ├── AttCatServiceImpl.java │ │ │ ├── AttDataDevCatServiceImpl.java │ │ │ ├── AttDataElemCatServiceImpl.java │ │ │ ├── AttModelCatServiceImpl.java │ │ │ └── AttTaskCatServiceImpl.java │ │ ├── client │ │ ├── IAttClientService.java │ │ └── impl │ │ │ └── AttClientServiceImpl.java │ │ ├── project │ │ ├── IAttProjectService.java │ │ ├── IAttProjectUserRelService.java │ │ └── impl │ │ │ ├── AttProjectUserRelServiceImpl.java │ │ │ └── IAttProjectServiceImpl.java │ │ ├── rule │ │ ├── IAttAuditRuleService.java │ │ ├── IAttCleanRuleService.java │ │ └── impl │ │ │ ├── AttAuditRuleServiceImpl.java │ │ │ └── AttCleanRuleServiceImpl.java │ │ └── theme │ │ ├── IAttThemeService.java │ │ └── impl │ │ └── AttThemeServiceImpl.java │ └── resources │ ├── application-att-dev.yml │ ├── application-att-prod.yml │ └── mapper │ └── att │ ├── cat │ ├── AttApiCatMapper.xml │ ├── AttAssetCatMapper.xml │ ├── AttCatMapper.xml │ ├── AttDataDevCatMapper.xml │ ├── AttDataElemCatMapper.xml │ ├── AttModelCatMapper.xml │ └── AttTaskCatMapper.xml │ ├── client │ └── AttClientMapper.xml │ ├── project │ ├── AttProjectMapper.xml │ └── IDataElemRuleRelService.xml │ ├── rule │ ├── AttAuditRuleMapper.xml │ └── AttCleanRuleMapper.xml │ └── theme │ └── AttThemeMapper.xml ├── qdata-module-da ├── pom.xml ├── qdata-module-da-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── da │ │ └── api │ │ ├── asset │ │ └── dto │ │ │ ├── DaAssetReqDTO.java │ │ │ └── DaAssetRespDTO.java │ │ ├── assetColumn │ │ └── dto │ │ │ ├── DaAssetColumnReqDTO.java │ │ │ └── DaAssetColumnRespDTO.java │ │ ├── assetchild │ │ ├── api │ │ │ └── dto │ │ │ │ ├── DaAssetApiParamReqDTO.java │ │ │ │ ├── DaAssetApiParamRespDTO.java │ │ │ │ ├── DaAssetApiReqDTO.java │ │ │ │ └── DaAssetApiRespDTO.java │ │ ├── audit │ │ │ └── dto │ │ │ │ ├── DaAssetAuditAlertReqDTO.java │ │ │ │ ├── DaAssetAuditAlertRespDTO.java │ │ │ │ ├── DaAssetAuditRuleReqDTO.java │ │ │ │ ├── DaAssetAuditRuleRespDTO.java │ │ │ │ ├── DaAssetAuditScheduleReqDTO.java │ │ │ │ └── DaAssetAuditScheduleRespDTO.java │ │ ├── geo │ │ │ └── dto │ │ │ │ ├── DaAssetGeoReqDTO.java │ │ │ │ └── DaAssetGeoRespDTO.java │ │ ├── gis │ │ │ └── dto │ │ │ │ ├── DaAssetGisReqDTO.java │ │ │ │ └── DaAssetGisRespDTO.java │ │ ├── operate │ │ │ └── dto │ │ │ │ ├── DaAssetOperateApplyReqDTO.java │ │ │ │ ├── DaAssetOperateApplyRespDTO.java │ │ │ │ ├── DaAssetOperateLogReqDTO.java │ │ │ │ └── DaAssetOperateLogRespDTO.java │ │ ├── projectRel │ │ │ └── dto │ │ │ │ ├── DaAssetProjectRelReqDTO.java │ │ │ │ └── DaAssetProjectRelRespDTO.java │ │ ├── theme │ │ │ └── dto │ │ │ │ ├── DaAssetThemeRelReqDTO.java │ │ │ │ └── DaAssetThemeRelRespDTO.java │ │ └── video │ │ │ └── dto │ │ │ ├── DaAssetVideoReqDTO.java │ │ │ └── DaAssetVideoRespDTO.java │ │ ├── daAssetApply │ │ └── dto │ │ │ ├── DaAssetApplyReqDTO.java │ │ │ └── DaAssetApplyRespDTO.java │ │ ├── datasource │ │ └── dto │ │ │ ├── DaDatasourceProjectRelReqDTO.java │ │ │ ├── DaDatasourceProjectRelRespDTO.java │ │ │ ├── DaDatasourceReqDTO.java │ │ │ ├── DaDatasourceRespDTO.java │ │ │ ├── DatasourceCreaTeTableListReqDTO.java │ │ │ └── DatasourceCreaTeTableReqDTO.java │ │ ├── package-info.java │ │ ├── sensitiveLevel │ │ └── dto │ │ │ ├── DaSensitiveLevelReqDTO.java │ │ │ └── DaSensitiveLevelRespDTO.java │ │ └── service │ │ ├── asset │ │ ├── IDaAssetApiOutService.java │ │ └── IDaDatasourceApiService.java │ │ ├── assetchild │ │ ├── api │ │ │ └── IDaApiOutService.java │ │ └── gis │ │ │ └── IDaAssetGisOutService.java │ │ └── package-info.java └── qdata-module-da-biz │ ├── pom.xml │ └── src │ ├── lib │ └── artemis-http-client-1.1.8.jar │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── da │ │ ├── controller │ │ └── admin │ │ │ ├── asset │ │ │ ├── DaAssetController.java │ │ │ └── vo │ │ │ │ ├── DaAssetPageReqVO.java │ │ │ │ ├── DaAssetRespVO.java │ │ │ │ └── DaAssetSaveReqVO.java │ │ │ ├── assetColumn │ │ │ ├── DaAssetColumnController.java │ │ │ └── vo │ │ │ │ ├── DaAssetColumnPageReqVO.java │ │ │ │ ├── DaAssetColumnRespVO.java │ │ │ │ └── DaAssetColumnSaveReqVO.java │ │ │ ├── assetchild │ │ │ ├── api │ │ │ │ ├── DaAssetApiController.java │ │ │ │ ├── DaAssetApiParamController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetApiPageReqVO.java │ │ │ │ │ ├── DaAssetApiParamPageReqVO.java │ │ │ │ │ ├── DaAssetApiParamRespVO.java │ │ │ │ │ ├── DaAssetApiParamSaveReqVO.java │ │ │ │ │ ├── DaAssetApiReqVO.java │ │ │ │ │ ├── DaAssetApiRespVO.java │ │ │ │ │ └── DaAssetApiSaveReqVO.java │ │ │ ├── audit │ │ │ │ ├── DaAssetAuditAlertController.java │ │ │ │ ├── DaAssetAuditRuleController.java │ │ │ │ ├── DaAssetAuditScheduleController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetAuditAlertPageReqVO.java │ │ │ │ │ ├── DaAssetAuditAlertRespVO.java │ │ │ │ │ ├── DaAssetAuditAlertSaveReqVO.java │ │ │ │ │ ├── DaAssetAuditRulePageReqVO.java │ │ │ │ │ ├── DaAssetAuditRuleRespVO.java │ │ │ │ │ ├── DaAssetAuditRuleSaveReqVO.java │ │ │ │ │ ├── DaAssetAuditSchedulePageReqVO.java │ │ │ │ │ ├── DaAssetAuditScheduleRespVO.java │ │ │ │ │ └── DaAssetAuditScheduleSaveReqVO.java │ │ │ ├── geo │ │ │ │ ├── DaAssetGeoController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetGeoPageReqVO.java │ │ │ │ │ ├── DaAssetGeoRespVO.java │ │ │ │ │ └── DaAssetGeoSaveReqVO.java │ │ │ ├── gis │ │ │ │ ├── DaAssetGisController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetGisPageReqVO.java │ │ │ │ │ ├── DaAssetGisReqVO.java │ │ │ │ │ ├── DaAssetGisRespVO.java │ │ │ │ │ └── DaAssetGisSaveReqVO.java │ │ │ ├── operate │ │ │ │ ├── DaAssetOperateApplyController.java │ │ │ │ ├── DaAssetOperateLogController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetOperateApplyPageReqVO.java │ │ │ │ │ ├── DaAssetOperateApplyRespVO.java │ │ │ │ │ ├── DaAssetOperateApplySaveReqVO.java │ │ │ │ │ ├── DaAssetOperateLogPageReqVO.java │ │ │ │ │ ├── DaAssetOperateLogRespVO.java │ │ │ │ │ └── DaAssetOperateLogSaveReqVO.java │ │ │ ├── projectRel │ │ │ │ ├── DaAssetProjectRelController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetProjectRelPageReqVO.java │ │ │ │ │ ├── DaAssetProjectRelRespVO.java │ │ │ │ │ └── DaAssetProjectRelSaveReqVO.java │ │ │ ├── theme │ │ │ │ ├── DaAssetThemeRelController.java │ │ │ │ └── vo │ │ │ │ │ ├── DaAssetThemeRelPageReqVO.java │ │ │ │ │ ├── DaAssetThemeRelRespVO.java │ │ │ │ │ └── DaAssetThemeRelSaveReqVO.java │ │ │ └── video │ │ │ │ ├── DaAssetVideoController.java │ │ │ │ └── vo │ │ │ │ ├── DaAssetVideoPageReqVO.java │ │ │ │ ├── DaAssetVideoReqVO.java │ │ │ │ ├── DaAssetVideoRespVO.java │ │ │ │ └── DaAssetVideoSaveReqVO.java │ │ │ ├── daAssetApply │ │ │ ├── DaAssetApplyController.java │ │ │ └── vo │ │ │ │ ├── DaAssetApplyPageReqVO.java │ │ │ │ ├── DaAssetApplyRespVO.java │ │ │ │ └── DaAssetApplySaveReqVO.java │ │ │ ├── datasource │ │ │ ├── DaDatasourceController.java │ │ │ ├── DaDatasourceProjectRelController.java │ │ │ └── vo │ │ │ │ ├── DaDatasourcePageReqVO.java │ │ │ │ ├── DaDatasourceProjectRelPageReqVO.java │ │ │ │ ├── DaDatasourceProjectRelRespVO.java │ │ │ │ ├── DaDatasourceProjectRelSaveReqVO.java │ │ │ │ ├── DaDatasourceRespVO.java │ │ │ │ └── DaDatasourceSaveReqVO.java │ │ │ └── sensitiveLevel │ │ │ ├── DaSensitiveLevelController.java │ │ │ └── vo │ │ │ ├── DaSensitiveLevelPageReqVO.java │ │ │ ├── DaSensitiveLevelRespVO.java │ │ │ └── DaSensitiveLevelSaveReqVO.java │ │ ├── convert │ │ ├── asset │ │ │ └── DaAssetConvert.java │ │ ├── assetColumn │ │ │ └── DaAssetColumnConvert.java │ │ ├── assetchild │ │ │ ├── api │ │ │ │ ├── DaAssetApiConvert.java │ │ │ │ └── DaAssetApiParamConvert.java │ │ │ ├── audit │ │ │ │ ├── DaAssetAuditAlertConvert.java │ │ │ │ ├── DaAssetAuditRuleConvert.java │ │ │ │ └── DaAssetAuditScheduleConvert.java │ │ │ ├── geo │ │ │ │ └── DaAssetGeoConvert.java │ │ │ ├── gis │ │ │ │ └── DaAssetGisConvert.java │ │ │ ├── operate │ │ │ │ ├── DaAssetOperateApplyConvert.java │ │ │ │ └── DaAssetOperateLogConvert.java │ │ │ ├── projectRel │ │ │ │ └── DaAssetProjectRelConvert.java │ │ │ ├── theme │ │ │ │ └── DaAssetThemeRelConvert.java │ │ │ └── video │ │ │ │ └── DaAssetVideoConvert.java │ │ ├── daAssetApply │ │ │ └── DaAssetApplyConvert.java │ │ ├── datasource │ │ │ ├── DaDatasourceConvert.java │ │ │ └── DaDatasourceProjectRelConvert.java │ │ └── sensitiveLevel │ │ │ └── DaSensitiveLevelConvert.java │ │ ├── dal │ │ ├── dataobject │ │ │ ├── asset │ │ │ │ └── DaAssetDO.java │ │ │ ├── assetColumn │ │ │ │ └── DaAssetColumnDO.java │ │ │ ├── assetchild │ │ │ │ ├── api │ │ │ │ │ ├── DaAssetApiDO.java │ │ │ │ │ └── DaAssetApiParamDO.java │ │ │ │ ├── audit │ │ │ │ │ ├── DaAssetAuditAlertDO.java │ │ │ │ │ ├── DaAssetAuditRuleDO.java │ │ │ │ │ └── DaAssetAuditScheduleDO.java │ │ │ │ ├── geo │ │ │ │ │ └── DaAssetGeoDO.java │ │ │ │ ├── gis │ │ │ │ │ └── DaAssetGisDO.java │ │ │ │ ├── operate │ │ │ │ │ ├── DaAssetOperateApplyDO.java │ │ │ │ │ └── DaAssetOperateLogDO.java │ │ │ │ ├── projectRel │ │ │ │ │ └── DaAssetProjectRelDO.java │ │ │ │ ├── theme │ │ │ │ │ └── DaAssetThemeRelDO.java │ │ │ │ └── video │ │ │ │ │ └── DaAssetVideoDO.java │ │ │ ├── daAssetApply │ │ │ │ └── DaAssetApplyDO.java │ │ │ ├── datasource │ │ │ │ ├── DaDatasourceDO.java │ │ │ │ └── DaDatasourceProjectRelDO.java │ │ │ └── sensitiveLevel │ │ │ │ └── DaSensitiveLevelDO.java │ │ └── mapper │ │ │ ├── asset │ │ │ └── DaAssetMapper.java │ │ │ ├── assetColumn │ │ │ └── DaAssetColumnMapper.java │ │ │ ├── assetchild │ │ │ ├── api │ │ │ │ ├── DaAssetApiMapper.java │ │ │ │ └── DaAssetApiParamMapper.java │ │ │ ├── audit │ │ │ │ ├── DaAssetAuditAlertMapper.java │ │ │ │ ├── DaAssetAuditRuleMapper.java │ │ │ │ └── DaAssetAuditScheduleMapper.java │ │ │ ├── geo │ │ │ │ └── DaAssetGeoMapper.java │ │ │ ├── gis │ │ │ │ └── DaAssetGisMapper.java │ │ │ ├── operate │ │ │ │ ├── DaAssetOperateApplyMapper.java │ │ │ │ └── DaAssetOperateLogMapper.java │ │ │ ├── projectRel │ │ │ │ └── DaAssetProjectRelMapper.java │ │ │ ├── theme │ │ │ │ └── DaAssetThemeRelMapper.java │ │ │ └── video │ │ │ │ └── DaAssetVideoMapper.java │ │ │ ├── daAssetApply │ │ │ └── DaAssetApplyMapper.java │ │ │ ├── datasource │ │ │ ├── DaDatasourceMapper.java │ │ │ └── DaDatasourceProjectRelMapper.java │ │ │ └── sensitiveLevel │ │ │ └── DaSensitiveLevelMapper.java │ │ ├── package-info.java │ │ ├── service │ │ ├── asset │ │ │ ├── IDaAssetService.java │ │ │ └── impl │ │ │ │ └── DaAssetServiceImpl.java │ │ ├── assetColumn │ │ │ ├── IDaAssetColumnService.java │ │ │ └── impl │ │ │ │ └── DaAssetColumnServiceImpl.java │ │ ├── assetchild │ │ │ ├── api │ │ │ │ ├── IDaAssetApiParamService.java │ │ │ │ ├── IDaAssetApiService.java │ │ │ │ └── impl │ │ │ │ │ ├── DaAssetApiParamServiceImpl.java │ │ │ │ │ └── DaAssetApiServiceImpl.java │ │ │ ├── audit │ │ │ │ ├── IDaAssetAuditAlertService.java │ │ │ │ ├── IDaAssetAuditRuleService.java │ │ │ │ ├── IDaAssetAuditScheduleService.java │ │ │ │ └── impl │ │ │ │ │ ├── DaAssetAuditAlertServiceImpl.java │ │ │ │ │ ├── DaAssetAuditRuleServiceImpl.java │ │ │ │ │ └── DaAssetAuditScheduleServiceImpl.java │ │ │ ├── geo │ │ │ │ ├── IDaAssetGeoService.java │ │ │ │ └── impl │ │ │ │ │ └── DaAssetGeoServiceImpl.java │ │ │ ├── gis │ │ │ │ ├── IDaAssetGisService.java │ │ │ │ └── impl │ │ │ │ │ └── DaAssetGisServiceImpl.java │ │ │ ├── operate │ │ │ │ ├── IDaAssetOperateApplyService.java │ │ │ │ ├── IDaAssetOperateLogService.java │ │ │ │ └── impl │ │ │ │ │ ├── DaAssetOperateApplyServiceImpl.java │ │ │ │ │ └── DaAssetOperateLogServiceImpl.java │ │ │ ├── projectRel │ │ │ │ ├── IDaAssetProjectRelService.java │ │ │ │ └── impl │ │ │ │ │ └── DaAssetProjectRelServiceImpl.java │ │ │ ├── theme │ │ │ │ ├── IDaAssetThemeRelService.java │ │ │ │ └── impl │ │ │ │ │ └── DaAssetThemeRelServiceImpl.java │ │ │ └── video │ │ │ │ ├── IDaAssetVideoService.java │ │ │ │ └── impl │ │ │ │ └── DaAssetVideoServiceImpl.java │ │ ├── daAssetApply │ │ │ ├── IDaAssetApplyService.java │ │ │ └── impl │ │ │ │ └── DaAssetApplyServiceImpl.java │ │ ├── datasource │ │ │ ├── IDaDatasourceProjectRelService.java │ │ │ ├── IDaDatasourceService.java │ │ │ └── impl │ │ │ │ ├── DaDatasourceProjectRelServiceImpl.java │ │ │ │ └── DaDatasourceServiceImpl.java │ │ └── sensitiveLevel │ │ │ ├── IDaSensitiveLevelService.java │ │ │ └── impl │ │ │ └── DaSensitiveLevelServiceImpl.java │ │ └── utils │ │ ├── ToTableColumnsUtils.java │ │ ├── model │ │ └── TaskSaveReqInput.java │ │ └── video │ │ └── VideoHandler.java │ └── resources │ ├── application-da-dev.yml │ ├── application-da-prod.yml │ └── mapper │ └── da │ ├── asset │ └── DaAssetMapper.xml │ ├── assetColumn │ └── DaAssetColumnMapper.xml │ ├── assetchild │ ├── api │ │ ├── DaAssetApiMapper.xml │ │ └── DaAssetApiParamMapper.xml │ ├── audit │ │ ├── DaAssetAuditAlertMapper.xml │ │ ├── DaAssetAuditRuleMapper.xml │ │ └── DaAssetAuditScheduleMapper.xml │ ├── geo │ │ └── DaAssetGeoMapper.xml │ ├── gis │ │ └── DaAssetGisMapper.xml │ ├── operate │ │ ├── DaAssetOperateApplyMapper.xml │ │ └── DaAssetOperateLogMapper.xml │ ├── projectRel │ │ └── DaAssetProjectRelMapper.xml │ ├── theme │ │ └── DaAssetThemeRelMapper.xml │ └── video │ │ └── DaAssetVideoMapper.xml │ ├── daAssetApply │ └── DaAssetApplyMapper.xml │ ├── datasource │ ├── DaDatasourceMapper.xml │ └── DaDatasourceProjectRelMapper.xml │ ├── discovery │ └── IDataElemRuleRelService.xml │ └── sensitiveLevel │ └── DaSensitiveLevelMapper.xml ├── qdata-module-dp ├── pom.xml ├── qdata-module-dp-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── dp │ │ └── api │ │ ├── codeMap │ │ └── dto │ │ │ ├── DpCodeMapReqDTO.java │ │ │ └── DpCodeMapRespDTO.java │ │ ├── dataElem │ │ └── dto │ │ │ ├── DpDataElemAssetRelReqDTO.java │ │ │ ├── DpDataElemAssetRelRespDTO.java │ │ │ ├── DpDataElemCodeReqDTO.java │ │ │ ├── DpDataElemCodeRespDTO.java │ │ │ ├── DpDataElemReqDTO.java │ │ │ ├── DpDataElemRespDTO.java │ │ │ ├── DpDataElemRuleRelReqDTO.java │ │ │ └── DpDataElemRuleRelRespDTO.java │ │ ├── model │ │ └── dto │ │ │ ├── DpModelColumnReqDTO.java │ │ │ ├── DpModelColumnRespDTO.java │ │ │ ├── DpModelMaterializedReqDTO.java │ │ │ ├── DpModelMaterializedRespDTO.java │ │ │ ├── DpModelReqDTO.java │ │ │ └── DpModelRespDTO.java │ │ ├── package-info.java │ │ └── service │ │ ├── dataElem │ │ ├── IDataElemApiService.java │ │ └── IDataElemRuleRelService.java │ │ ├── model │ │ └── IDpModelApiService.java │ │ └── package-info.java └── qdata-module-dp-biz │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── dp │ │ ├── controller │ │ └── admin │ │ │ ├── codeMap │ │ │ ├── DpCodeMapController.java │ │ │ └── vo │ │ │ │ ├── DpCodeMapPageReqVO.java │ │ │ │ ├── DpCodeMapRespVO.java │ │ │ │ └── DpCodeMapSaveReqVO.java │ │ │ ├── dataElem │ │ │ ├── DpDataElemAssetRelController.java │ │ │ ├── DpDataElemCodeController.java │ │ │ ├── DpDataElemController.java │ │ │ ├── DpDataElemRuleRelController.java │ │ │ └── vo │ │ │ │ ├── DpDataElemAssetRelPageReqVO.java │ │ │ │ ├── DpDataElemAssetRelRespVO.java │ │ │ │ ├── DpDataElemAssetRelSaveReqVO.java │ │ │ │ ├── DpDataElemCodePageReqVO.java │ │ │ │ ├── DpDataElemCodeRespVO.java │ │ │ │ ├── DpDataElemCodeSaveReqVO.java │ │ │ │ ├── DpDataElemPageReqVO.java │ │ │ │ ├── DpDataElemRespVO.java │ │ │ │ ├── DpDataElemRuleRelPageReqVO.java │ │ │ │ ├── DpDataElemRuleRelRespVO.java │ │ │ │ ├── DpDataElemRuleRelSaveReqVO.java │ │ │ │ └── DpDataElemSaveReqVO.java │ │ │ └── model │ │ │ ├── DpModelColumnController.java │ │ │ ├── DpModelController.java │ │ │ ├── DpModelMaterializedController.java │ │ │ └── vo │ │ │ ├── DpMaterializedMethodReqVO.java │ │ │ ├── DpModelColumnPageReqVO.java │ │ │ ├── DpModelColumnRespVO.java │ │ │ ├── DpModelColumnSaveReqVO.java │ │ │ ├── DpModelMaterializedPageReqVO.java │ │ │ ├── DpModelMaterializedRespVO.java │ │ │ ├── DpModelMaterializedSaveReqVO.java │ │ │ ├── DpModelPageReqVO.java │ │ │ ├── DpModelRespVO.java │ │ │ └── DpModelSaveReqVO.java │ │ ├── convert │ │ ├── codeMap │ │ │ └── DpCodeMapConvert.java │ │ ├── dataElem │ │ │ ├── DpDataElemAssetRelConvert.java │ │ │ ├── DpDataElemCodeConvert.java │ │ │ ├── DpDataElemConvert.java │ │ │ └── DpDataElemRuleRelConvert.java │ │ └── model │ │ │ ├── DpModelColumnConvert.java │ │ │ ├── DpModelConvert.java │ │ │ └── DpModelMaterializedConvert.java │ │ ├── dal │ │ ├── dataobject │ │ │ ├── codeMap │ │ │ │ └── DpCodeMapDO.java │ │ │ ├── dataElem │ │ │ │ ├── DpDataElemAssetRelDO.java │ │ │ │ ├── DpDataElemCodeDO.java │ │ │ │ ├── DpDataElemDO.java │ │ │ │ └── DpDataElemRuleRelDO.java │ │ │ └── model │ │ │ │ ├── DpModelColumnDO.java │ │ │ │ ├── DpModelDO.java │ │ │ │ └── DpModelMaterializedDO.java │ │ └── mapper │ │ │ ├── codeMap │ │ │ └── DpCodeMapMapper.java │ │ │ ├── dataElem │ │ │ ├── DpDataElemAssetRelMapper.java │ │ │ ├── DpDataElemCodeMapper.java │ │ │ ├── DpDataElemMapper.java │ │ │ └── DpDataElemRuleRelMapper.java │ │ │ └── model │ │ │ ├── DpModelColumnMapper.java │ │ │ ├── DpModelMapper.java │ │ │ └── DpModelMaterializedMapper.java │ │ ├── package-info.java │ │ └── service │ │ ├── codeMap │ │ ├── IDpCodeMapService.java │ │ └── impl │ │ │ └── DpCodeMapServiceImpl.java │ │ ├── dataElem │ │ ├── IDpDataElemAssetRelService.java │ │ ├── IDpDataElemCodeService.java │ │ ├── IDpDataElemRuleRelService.java │ │ ├── IDpDataElemService.java │ │ └── impl │ │ │ ├── DpDataElemAssetRelServiceImpl.java │ │ │ ├── DpDataElemCodeServiceImpl.java │ │ │ ├── DpDataElemRuleRelServiceImpl.java │ │ │ └── DpDataElemServiceImpl.java │ │ └── model │ │ ├── IDpModelColumnService.java │ │ ├── IDpModelMaterializedService.java │ │ ├── IDpModelService.java │ │ └── impl │ │ ├── DpModelColumnServiceImpl.java │ │ ├── DpModelMaterializedServiceImpl.java │ │ └── DpModelServiceImpl.java │ └── resources │ ├── application-dp-dev.yml │ ├── application-dp-prod.yml │ └── mapper │ └── dp │ ├── codeMap │ └── DpCodeMapMapper.xml │ ├── dataElem │ ├── DpDataElemAssetRelMapper.xml │ ├── DpDataElemCodeMapper.xml │ ├── DpDataElemMapper.xml │ └── DpDataElemRuleRelMapper.xml │ └── model │ ├── DpModelColumnMapper.xml │ ├── DpModelMapper.xml │ └── DpModelMaterializedMapper.xml ├── qdata-module-dpp ├── pom.xml ├── qdata-module-dpp-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── dpp │ │ └── api │ │ ├── etl │ │ └── dto │ │ │ ├── DppEtlNodeInstanceReqDTO.java │ │ │ ├── DppEtlNodeInstanceRespDTO.java │ │ │ ├── DppEtlNodeLogReqDTO.java │ │ │ ├── DppEtlNodeLogRespDTO.java │ │ │ ├── DppEtlNodeReqDTO.java │ │ │ ├── DppEtlNodeRespDTO.java │ │ │ ├── DppEtlSchedulerReqDTO.java │ │ │ ├── DppEtlSchedulerRespDTO.java │ │ │ ├── DppEtlTaskExtReqDTO.java │ │ │ ├── DppEtlTaskExtRespDTO.java │ │ │ ├── DppEtlTaskInstanceReqDTO.java │ │ │ ├── DppEtlTaskInstanceRespDTO.java │ │ │ ├── DppEtlTaskLogReqDTO.java │ │ │ ├── DppEtlTaskLogRespDTO.java │ │ │ ├── DppEtlTaskNodeRelLogReqDTO.java │ │ │ ├── DppEtlTaskNodeRelLogRespDTO.java │ │ │ ├── DppEtlTaskNodeRelReqDTO.java │ │ │ ├── DppEtlTaskNodeRelRespDTO.java │ │ │ ├── DppEtlTaskReqDTO.java │ │ │ └── DppEtlTaskRespDTO.java │ │ ├── package-info.java │ │ └── service │ │ └── etl │ │ └── DppEtlTaskService.java └── qdata-module-dpp-biz │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── dpp │ │ ├── controller │ │ └── admin │ │ │ └── etl │ │ │ ├── DppEtlExecutorController.java │ │ │ ├── DppEtlNodeController.java │ │ │ ├── DppEtlNodeInstanceController.java │ │ │ ├── DppEtlNodeLogController.java │ │ │ ├── DppEtlSchedulerController.java │ │ │ ├── DppEtlTaskController.java │ │ │ ├── DppEtlTaskInstanceController.java │ │ │ ├── DppEtlTaskLogController.java │ │ │ ├── DppEtlTaskNodeRelController.java │ │ │ ├── DppEtlTaskNodeRelLogController.java │ │ │ └── vo │ │ │ ├── DppEtlNewNodeSaveReqVO.java │ │ │ ├── DppEtlNodeInstancePageReqVO.java │ │ │ ├── DppEtlNodeInstanceRespVO.java │ │ │ ├── DppEtlNodeInstanceSaveReqVO.java │ │ │ ├── DppEtlNodeLogPageReqVO.java │ │ │ ├── DppEtlNodeLogRespVO.java │ │ │ ├── DppEtlNodeLogSaveReqVO.java │ │ │ ├── DppEtlNodePageReqVO.java │ │ │ ├── DppEtlNodeRespVO.java │ │ │ ├── DppEtlNodeSaveReqVO.java │ │ │ ├── DppEtlSchedulerPageReqVO.java │ │ │ ├── DppEtlSchedulerRespVO.java │ │ │ ├── DppEtlSchedulerSaveReqVO.java │ │ │ ├── DppEtlTaskExtPageReqVO.java │ │ │ ├── DppEtlTaskExtRespVO.java │ │ │ ├── DppEtlTaskExtSaveReqVO.java │ │ │ ├── DppEtlTaskInstancePageReqVO.java │ │ │ ├── DppEtlTaskInstanceRespVO.java │ │ │ ├── DppEtlTaskInstanceSaveReqVO.java │ │ │ ├── DppEtlTaskInstanceTreeListReqVO.java │ │ │ ├── DppEtlTaskInstanceTreeListRespVO.java │ │ │ ├── DppEtlTaskLogPageReqVO.java │ │ │ ├── DppEtlTaskLogRespVO.java │ │ │ ├── DppEtlTaskLogSaveReqVO.java │ │ │ ├── DppEtlTaskNodeRelLogPageReqVO.java │ │ │ ├── DppEtlTaskNodeRelLogRespVO.java │ │ │ ├── DppEtlTaskNodeRelLogSaveReqVO.java │ │ │ ├── DppEtlTaskNodeRelPageReqVO.java │ │ │ ├── DppEtlTaskNodeRelRespVO.java │ │ │ ├── DppEtlTaskNodeRelSaveReqVO.java │ │ │ ├── DppEtlTaskPageReqVO.java │ │ │ ├── DppEtlTaskRespVO.java │ │ │ ├── DppEtlTaskSaveReqVO.java │ │ │ ├── DppEtlTaskTreeRespVO.java │ │ │ ├── DppEtlTaskUpdateQueryRespVO.java │ │ │ ├── DppOnlDesformAndFormDataRespVO.java │ │ │ ├── DppOnlDesformDataBaseRequestVO.java │ │ │ ├── DppOnlDesformDataDeletedOrDetailsRequestVO.java │ │ │ ├── DppOnlDesformDataListRequestVO.java │ │ │ ├── DppOnlDesformDataPageReqVO.java │ │ │ ├── DppOnlDesformDataPageRequestVO.java │ │ │ ├── DppOnlDesformDataRespVO.java │ │ │ ├── DppOnlDesformDataSaveReqVO.java │ │ │ ├── DppOnlDesformDataSaveRequestVO.java │ │ │ ├── DppOnlDesformPageReqVO.java │ │ │ ├── DppOnlDesformRespVO.java │ │ │ ├── DppOnlDesformSaveReqVO.java │ │ │ └── ParametersNode.java │ │ ├── convert │ │ └── etl │ │ │ ├── DppEtlNodeConvert.java │ │ │ ├── DppEtlNodeInstanceConvert.java │ │ │ ├── DppEtlNodeLogConvert.java │ │ │ ├── DppEtlSchedulerConvert.java │ │ │ ├── DppEtlTaskConvert.java │ │ │ ├── DppEtlTaskInstanceConvert.java │ │ │ ├── DppEtlTaskLogConvert.java │ │ │ ├── DppEtlTaskNodeRelConvert.java │ │ │ └── DppEtlTaskNodeRelLogConvert.java │ │ ├── dal │ │ ├── dataobject │ │ │ └── etl │ │ │ │ ├── DppEtlNodeDO.java │ │ │ │ ├── DppEtlNodeInstanceDO.java │ │ │ │ ├── DppEtlNodeLogDO.java │ │ │ │ ├── DppEtlSchedulerDO.java │ │ │ │ ├── DppEtlTaskDO.java │ │ │ │ ├── DppEtlTaskExtDO.java │ │ │ │ ├── DppEtlTaskInstanceDO.java │ │ │ │ ├── DppEtlTaskLogDO.java │ │ │ │ ├── DppEtlTaskNodeRelDO.java │ │ │ │ └── DppEtlTaskNodeRelLogDO.java │ │ └── mapper │ │ │ └── etl │ │ │ ├── DppEtlNodeInstanceMapper.java │ │ │ ├── DppEtlNodeLogMapper.java │ │ │ ├── DppEtlNodeMapper.java │ │ │ ├── DppEtlSchedulerMapper.java │ │ │ ├── DppEtlTaskExtMapper.java │ │ │ ├── DppEtlTaskInstanceMapper.java │ │ │ ├── DppEtlTaskLogMapper.java │ │ │ ├── DppEtlTaskMapper.java │ │ │ ├── DppEtlTaskNodeRelLogMapper.java │ │ │ └── DppEtlTaskNodeRelMapper.java │ │ ├── listener │ │ ├── ProcessListener.java │ │ └── TaskListener.java │ │ ├── package-info.java │ │ ├── service │ │ └── etl │ │ │ ├── IDppEtlNodeInstanceService.java │ │ │ ├── IDppEtlNodeLogService.java │ │ │ ├── IDppEtlNodeService.java │ │ │ ├── IDppEtlSchedulerService.java │ │ │ ├── IDppEtlTaskExtService.java │ │ │ ├── IDppEtlTaskInstanceService.java │ │ │ ├── IDppEtlTaskLogService.java │ │ │ ├── IDppEtlTaskNodeRelLogService.java │ │ │ ├── IDppEtlTaskNodeRelService.java │ │ │ ├── IDppEtlTaskService.java │ │ │ └── impl │ │ │ ├── DppEtlNodeInstanceServiceImpl.java │ │ │ ├── DppEtlNodeLogServiceImpl.java │ │ │ ├── DppEtlNodeServiceImpl.java │ │ │ ├── DppEtlSchedulerServiceImpl.java │ │ │ ├── DppEtlTaskExtServiceImpl.java │ │ │ ├── DppEtlTaskInstanceServiceImpl.java │ │ │ ├── DppEtlTaskLogServiceImpl.java │ │ │ ├── DppEtlTaskNodeRelLogServiceImpl.java │ │ │ ├── DppEtlTaskNodeRelServiceImpl.java │ │ │ └── DppEtlTaskServiceImpl.java │ │ └── utils │ │ ├── IDGeneratorUtils.java │ │ ├── SnowflakeIdHelper.java │ │ ├── TaskConverter.java │ │ ├── datax │ │ └── FlinkxJson.java │ │ ├── ds │ │ └── component │ │ │ ├── ComponentFactory.java │ │ │ ├── ComponentItem.java │ │ │ ├── ComponentRegistry.java │ │ │ ├── CsvReaderComponent.java │ │ │ ├── DBReaderComponent.java │ │ │ ├── DBWriterComponent.java │ │ │ ├── ExcelReaderComponent.java │ │ │ ├── KafkaReaderComponent.java │ │ │ ├── ProcedureComponent.java │ │ │ ├── SQLComponent.java │ │ │ ├── ShellComponent.java │ │ │ ├── SparkCleanComponent.java │ │ │ ├── SparkSQLComponent.java │ │ │ └── SubProcessComponent.java │ │ ├── model │ │ ├── DsResource.java │ │ ├── PreviousTaskNode.java │ │ └── TaskNode.java │ │ └── taskParamsCheck │ │ ├── AbstractParameters.java │ │ ├── DataXParameters.java │ │ └── SparkParameters.java │ └── resources │ ├── application-dp-dev.yml │ ├── application-dp-prod.yml │ └── mapper │ └── dpp │ └── etl │ ├── DppEtlNodeInstanceMapper.xml │ ├── DppEtlNodeLogMapper.xml │ ├── DppEtlNodeMapper.xml │ ├── DppEtlSchedulerMapper.xml │ ├── DppEtlTaskExtMapper.xml │ ├── DppEtlTaskInstanceMapper.xml │ ├── DppEtlTaskLogMapper.xml │ ├── DppEtlTaskMapper.xml │ ├── DppEtlTaskNodeRelLogMapper.xml │ └── DppEtlTaskNodeRelMapper.xml ├── qdata-module-ds ├── pom.xml ├── qdata-module-ds-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── ds │ │ └── api │ │ ├── api │ │ └── dto │ │ │ ├── DsApiReqDTO.java │ │ │ ├── DsApiRespDTO.java │ │ │ ├── ExecuteConfig.java │ │ │ ├── FieldParam.java │ │ │ ├── ReqParam.java │ │ │ └── ResParam.java │ │ ├── apiLog │ │ └── dto │ │ │ ├── DsApiLogReqDTO.java │ │ │ └── DsApiLogRespDTO.java │ │ ├── apply │ │ └── dto │ │ │ ├── DsApiApplyReqDTO.java │ │ │ └── DsApiApplyRespDTO.java │ │ └── package-info.java └── qdata-module-ds-biz │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── ds │ │ ├── annotation │ │ ├── DsCheckClientToken.java │ │ └── handler │ │ │ └── DsCheckClientTokenInterceptor.java │ │ ├── async │ │ └── AsyncTask.java │ │ ├── config │ │ ├── api │ │ │ ├── ApiMappingConfig.java │ │ │ └── StartedUpRunner.java │ │ └── auth │ │ │ ├── DsTokenConfigure.java │ │ │ └── dataLoader │ │ │ └── DsDataLoaderImpl.java │ │ ├── controller │ │ └── admin │ │ │ ├── api │ │ │ ├── CommonServicesController.java │ │ │ ├── DsApiController.java │ │ │ └── vo │ │ │ │ ├── DsApiPageReqVO.java │ │ │ │ ├── DsApiReqVO.java │ │ │ │ ├── DsApiRespVO.java │ │ │ │ ├── DsApiSaveReqVO.java │ │ │ │ └── SqlParseVo.java │ │ │ ├── apiLog │ │ │ ├── DsApiLogController.java │ │ │ └── vo │ │ │ │ ├── DsApiLogPageReqVO.java │ │ │ │ ├── DsApiLogRespVO.java │ │ │ │ └── DsApiLogSaveReqVO.java │ │ │ └── auth │ │ │ └── DsAuthController.java │ │ ├── convert │ │ ├── api │ │ │ └── DsApiConvert.java │ │ └── apiLog │ │ │ └── DsApiLogConvert.java │ │ ├── dal │ │ ├── dataobject │ │ │ ├── api │ │ │ │ ├── DsApiDO.java │ │ │ │ ├── ExecuteConfig.java │ │ │ │ ├── FieldParam.java │ │ │ │ └── SqlParseDto.java │ │ │ ├── apiLog │ │ │ │ └── DsApiLogDO.java │ │ │ └── dto │ │ │ │ ├── ReqParam.java │ │ │ │ └── ResParam.java │ │ └── mapper │ │ │ ├── api │ │ │ └── DsApiMapper.java │ │ │ └── apiLog │ │ │ └── DsApiLogMapper.java │ │ ├── handler │ │ ├── MappingHandlerMapping.java │ │ ├── RequestHandler.java │ │ ├── RequestInterceptor.java │ │ └── WebConfig.java │ │ ├── package-info.java │ │ ├── service │ │ ├── api │ │ │ ├── IDsApiService.java │ │ │ └── impl │ │ │ │ ├── ApiMappingEngine.java │ │ │ │ └── DsApiServiceImpl.java │ │ └── apiLog │ │ │ ├── IDsApiLogService.java │ │ │ └── impl │ │ │ └── DsApiLogServiceImpl.java │ │ └── utils │ │ ├── ApiJwtUtil.java │ │ ├── DataTimeUtil.java │ │ ├── DateUtil.java │ │ ├── JsonUtil.java │ │ ├── NamedParameterUtil.java │ │ ├── PageUtil.java │ │ ├── ParsedSql.java │ │ └── SqlBuilderUtil.java │ └── resources │ ├── application-dp-dev.yml │ ├── application-dp-prod.yml │ └── mapper │ └── ds │ ├── api │ └── DsApiMapper.xml │ └── apiLog │ └── DsApiLogMapper.xml ├── qdata-module-system ├── pom.xml ├── qdata-module-system-api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── system │ │ ├── api │ │ └── message │ │ │ └── dto │ │ │ ├── MessageReqDTO.java │ │ │ ├── MessageRespDTO.java │ │ │ ├── MessageSaveReqDTO.java │ │ │ ├── MessageTemplateReqDTO.java │ │ │ └── MessageTemplateRespDTO.java │ │ ├── domain │ │ ├── SysCache.java │ │ ├── SysConfig.java │ │ ├── SysLogininfor.java │ │ ├── SysNotice.java │ │ ├── SysOperLog.java │ │ ├── SysPost.java │ │ ├── SysRoleDept.java │ │ ├── SysRoleMenu.java │ │ ├── SysUserOnline.java │ │ ├── SysUserPost.java │ │ ├── SysUserRole.java │ │ ├── SystemContentDO.java │ │ ├── dto │ │ │ ├── DeptDto.java │ │ │ ├── PageDto.java │ │ │ ├── RoleDto.java │ │ │ ├── SystemContentReqDTO.java │ │ │ ├── SystemContentRespDTO.java │ │ │ ├── UserDto.java │ │ │ └── UserQueryDto.java │ │ └── vo │ │ │ ├── ColumnRespVO.java │ │ │ ├── CsvColumnReqVO.java │ │ │ ├── ExcelColumnReqVO.java │ │ │ ├── MetaVo.java │ │ │ ├── RouterVo.java │ │ │ ├── SystemContentPageReqVO.java │ │ │ ├── SystemContentRespVO.java │ │ │ └── SystemContentSaveReqVO.java │ │ ├── enums │ │ └── auth │ │ │ └── AuthProductEnums.java │ │ ├── mapper │ │ ├── SysConfigMapper.java │ │ ├── SysDeptMapper.java │ │ ├── SysDictDataMapper.java │ │ ├── SysDictTypeMapper.java │ │ ├── SysLogininforMapper.java │ │ ├── SysMenuMapper.java │ │ ├── SysNoticeMapper.java │ │ ├── SysOperLogMapper.java │ │ ├── SysPostMapper.java │ │ ├── SysRoleDeptMapper.java │ │ ├── SysRoleMapper.java │ │ ├── SysRoleMenuMapper.java │ │ ├── SysUserMapper.java │ │ ├── SysUserPostMapper.java │ │ ├── SysUserRoleMapper.java │ │ └── SystemContentMapper.java │ │ ├── rsa │ │ └── RSAUtil.java │ │ └── service │ │ ├── ISysConfigService.java │ │ ├── ISysDeptService.java │ │ ├── ISysDictDataService.java │ │ ├── ISysDictTypeService.java │ │ ├── ISysLogininforService.java │ │ ├── ISysMenuService.java │ │ ├── ISysMessageService.java │ │ ├── ISysNoticeService.java │ │ ├── ISysOperLogService.java │ │ ├── ISysPostService.java │ │ ├── ISysRoleService.java │ │ ├── ISysUserOnlineService.java │ │ ├── ISysUserService.java │ │ ├── ISystemContentService.java │ │ ├── ISystemDictDataService.java │ │ └── impl │ │ ├── SysConfigServiceImpl.java │ │ ├── SysDeptServiceImpl.java │ │ ├── SysDictDataServiceImpl.java │ │ ├── SysDictTypeServiceImpl.java │ │ ├── SysLogininforServiceImpl.java │ │ ├── SysMenuServiceImpl.java │ │ ├── SysNoticeServiceImpl.java │ │ ├── SysOperLogServiceImpl.java │ │ ├── SysPostServiceImpl.java │ │ ├── SysRoleServiceImpl.java │ │ ├── SysUserOnlineServiceImpl.java │ │ ├── SysUserServiceImpl.java │ │ └── SystemContentServiceImpl.java └── qdata-module-system-biz │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── tech │ │ └── qiantong │ │ └── qdata │ │ └── module │ │ └── system │ │ ├── ca │ │ ├── domain │ │ │ ├── CaCert.java │ │ │ └── CaSubject.java │ │ ├── mapper │ │ │ ├── CaCertMapper.java │ │ │ └── CaSubjectMapper.java │ │ └── service │ │ │ ├── ICaCertService.java │ │ │ ├── ICaSubjectService.java │ │ │ └── impl │ │ │ ├── CaCertServiceImpl.java │ │ │ └── CaSubjectServiceImpl.java │ │ ├── controller │ │ └── admin │ │ │ ├── auth │ │ │ └── AuthController.java │ │ │ ├── ca │ │ │ ├── CaCertController.java │ │ │ └── CaSubjectController.java │ │ │ ├── common │ │ │ ├── CaptchaController.java │ │ │ └── CommonController.java │ │ │ ├── example │ │ │ ├── es │ │ │ │ └── TextSearchController.java │ │ │ ├── pay │ │ │ │ └── PaymentController.java │ │ │ └── websocket │ │ │ │ └── WebSocketServer.java │ │ │ ├── monitor │ │ │ ├── CacheController.java │ │ │ ├── ServerController.java │ │ │ ├── SysLogininforController.java │ │ │ ├── SysOperlogController.java │ │ │ └── SysUserOnlineController.java │ │ │ ├── system │ │ │ ├── SysConfigController.java │ │ │ ├── SysDeptController.java │ │ │ ├── SysDictDataController.java │ │ │ ├── SysDictTypeController.java │ │ │ ├── SysIndexController.java │ │ │ ├── SysLoginController.java │ │ │ ├── SysMenuController.java │ │ │ ├── SysNoticeController.java │ │ │ ├── SysPostController.java │ │ │ ├── SysProfileController.java │ │ │ ├── SysRegisterController.java │ │ │ ├── SysRoleController.java │ │ │ ├── SysSyncDataController.java │ │ │ ├── SysUserController.java │ │ │ ├── SystemContentController.java │ │ │ └── message │ │ │ │ ├── MessageController.java │ │ │ │ ├── MessageTemplateController.java │ │ │ │ ├── vo │ │ │ │ ├── MessagePageReqVO.java │ │ │ │ ├── MessageRespVO.java │ │ │ │ ├── MessageSaveReqVO.java │ │ │ │ ├── MessageTemplatePageReqVO.java │ │ │ │ ├── MessageTemplateRespVO.java │ │ │ │ └── MessageTemplateSaveReqVO.java │ │ │ │ └── websocket │ │ │ │ └── WebSocketMessageServer.java │ │ │ └── tool │ │ │ └── TestController.java │ │ ├── convert │ │ └── message │ │ │ ├── MessageConvert.java │ │ │ └── MessageTemplateConvert.java │ │ ├── core │ │ └── config │ │ │ └── SwaggerConfig.java │ │ ├── dal │ │ ├── dataobject │ │ │ ├── auth │ │ │ │ └── RelUserAuthProductDO.java │ │ │ └── message │ │ │ │ ├── MessageDO.java │ │ │ │ ├── MessageTemplateDO.java │ │ │ │ └── enums │ │ │ │ └── MessageHasReadEnums.java │ │ └── mapper │ │ │ ├── auth │ │ │ └── RelUserAuthProductMapper.java │ │ │ └── message │ │ │ ├── MessageMapper.java │ │ │ └── MessageTemplateMapper.java │ │ └── service │ │ ├── auth │ │ ├── IRelUserAuthProductService.java │ │ ├── SysSyncDataService.java │ │ └── impl │ │ │ ├── RelUserAuthProductServiceImpl.java │ │ │ └── SysSyncDataServiceImpl.java │ │ └── message │ │ ├── IMessageService.java │ │ ├── IMessageTemplateService.java │ │ └── impl │ │ ├── MessageServiceImpl.java │ │ └── MessageTemplateServiceImpl.java │ └── resources │ ├── application-system-dev.yml │ ├── application-system-prod.yml │ └── mapper │ ├── ca │ ├── CaCertMapper.xml │ └── IDataElemRuleRelService.xml │ └── system │ ├── IDsProjectServiceMapper.xml │ ├── SysConfigMapper.xml │ ├── SysDeptMapper.xml │ ├── SysDictDataMapper.xml │ ├── SysDictTypeMapper.xml │ ├── SysLogininforMapper.xml │ ├── SysMenuMapper.xml │ ├── SysNoticeMapper.xml │ ├── SysOperLogMapper.xml │ ├── SysPostMapper.xml │ ├── SysRoleMapper.xml │ ├── SysRoleMenuMapper.xml │ ├── SysUserMapper.xml │ ├── SysUserPostMapper.xml │ └── SysUserRoleMapper.xml ├── qdata-server ├── pom.xml └── src │ ├── docker │ ├── Dockerfile │ ├── docker-compose.yml │ └── restart.sh │ ├── main │ ├── java │ │ └── tech │ │ │ └── qiantong │ │ │ └── qdata │ │ │ └── server │ │ │ ├── QDataApplication.java │ │ │ ├── QDataServletInitializer.java │ │ │ ├── config │ │ │ └── EmbeddedRedisConfig.java │ │ │ └── controller │ │ │ └── DefaultController.java │ └── resources │ │ ├── META-INF │ │ └── spring-devtools.properties │ │ ├── application-dev.yml │ │ ├── application-prod.yml │ │ ├── application.yml │ │ ├── banner.txt │ │ ├── ehcache.xml │ │ ├── i18n │ │ └── messages.properties │ │ ├── logback.xml │ │ ├── mybatis │ │ └── mybatis-config.xml │ │ ├── private_key.pem │ │ └── public_key.pem │ └── test │ └── java │ └── tech │ └── qiantong │ └── qdata │ └── server │ ├── DpModelMaterializedServiceImplTest.java │ ├── EsTest.java │ ├── HttpUtilsTest.java │ ├── IDaDatasourceTest.java │ ├── IDpModelColumnServiceTest.java │ ├── ProjectRenamer.java │ └── SystemMessageTest.java ├── qdata-ui ├── .env.development ├── .env.production ├── .env.staging ├── .eslintignore ├── .gitignore ├── LICENSE ├── bin │ ├── build.bat │ ├── package.bat │ └── run-web.bat ├── eslint.config.js ├── html │ └── ie.html ├── index.html ├── package.json ├── public │ ├── excel │ │ └── 缺陷管理导入模板.xlsx │ ├── favicon.ico │ ├── qianshu-favicon.png │ └── sso-favicon.ico ├── src │ ├── App.vue │ ├── api │ │ ├── att │ │ │ ├── attDataElemCat │ │ │ │ └── attDataElemCat.js │ │ │ ├── cat │ │ │ │ ├── attApiCat │ │ │ │ │ └── attApiCat.js │ │ │ │ ├── attAssetCat │ │ │ │ │ └── attAssetCat.js │ │ │ │ ├── attDataDevCat │ │ │ │ │ └── attDataDevCat.js │ │ │ │ ├── attDataElemCat │ │ │ │ │ └── attDataElemCat.js │ │ │ │ ├── attJobCat │ │ │ │ │ └── attJobCat.js │ │ │ │ ├── attModelCat │ │ │ │ │ └── attModelCat.js │ │ │ │ └── attTaskCat │ │ │ │ │ └── attTaskCat.js │ │ │ ├── client │ │ │ │ └── client.js │ │ │ ├── project │ │ │ │ └── attProject.js │ │ │ ├── projectUserRel │ │ │ │ └── attProjectUserRel.js │ │ │ ├── rule │ │ │ │ ├── attAuditRule.js │ │ │ │ └── attCleanRule.js │ │ │ └── theme │ │ │ │ └── attTheme.js │ │ ├── da │ │ │ ├── apply │ │ │ │ └── apply.js │ │ │ ├── asset │ │ │ │ └── daAsset.js │ │ │ ├── assetColumn │ │ │ │ └── daAssetColumn.js │ │ │ ├── assetchild │ │ │ │ ├── api │ │ │ │ │ ├── api.js │ │ │ │ │ └── daAssetApiParam.js │ │ │ │ ├── audit │ │ │ │ │ ├── daAssetAuditAlert.js │ │ │ │ │ ├── daAssetAuditRule.js │ │ │ │ │ └── daAssetAuditSchedule.js │ │ │ │ ├── geo │ │ │ │ │ └── daAssetGeo.js │ │ │ │ ├── gis │ │ │ │ │ └── daAssetGis.js │ │ │ │ ├── operate │ │ │ │ │ ├── daAssetOperateApply.js │ │ │ │ │ └── daAssetOperateLog.js │ │ │ │ ├── theme │ │ │ │ │ └── daAssetThemeRel.js │ │ │ │ └── video │ │ │ │ │ └── daAssetVideo.js │ │ │ ├── autoFill │ │ │ │ ├── datax-jdbcDatasource.js │ │ │ │ └── metadata-query.js │ │ │ ├── daAssetApply │ │ │ │ └── daAssetApply.js │ │ │ ├── datasource │ │ │ │ └── daDatasource.js │ │ │ ├── discovery │ │ │ │ ├── daDiscoveryColumn.js │ │ │ │ ├── daDiscoveryTable.js │ │ │ │ ├── daDiscoveryTask.js │ │ │ │ └── daDiscoveryTaskLog.js │ │ │ └── sensitiveLevel │ │ │ │ └── daSensitiveLevel.js │ │ ├── dp │ │ │ ├── dataElem │ │ │ │ ├── dpCodeMap.js │ │ │ │ ├── dpDataElem.js │ │ │ │ ├── dpDataElemAssetRel.js │ │ │ │ ├── dpDataElemCode.js │ │ │ │ └── dpDataElemRuleRel.js │ │ │ └── model │ │ │ │ ├── dpModel.js │ │ │ │ ├── dpModelColumn.js │ │ │ │ └── dpModelMaterialized.js │ │ ├── dpp │ │ │ ├── etl │ │ │ │ ├── dppEtlExecutors.js │ │ │ │ ├── dppEtlNode.js │ │ │ │ ├── dppEtlNodeInstance.js │ │ │ │ ├── dppEtlNodeLog.js │ │ │ │ ├── dppEtlScheduler.js │ │ │ │ ├── dppEtlTask.js │ │ │ │ ├── dppEtlTaskInstance.js │ │ │ │ ├── dppEtlTaskLog.js │ │ │ │ ├── dppEtlTaskNodeRel.js │ │ │ │ └── dppEtlTaskNodeRelLog.js │ │ │ └── onlDesformData │ │ │ │ └── desformData.js │ │ ├── ds │ │ │ ├── api │ │ │ │ └── dsApi.js │ │ │ └── apiLog │ │ │ │ └── apiLog.js │ │ ├── example │ │ │ ├── gen │ │ │ │ └── dept.js │ │ │ ├── genStudent │ │ │ │ └── student.js │ │ │ ├── pay.js │ │ │ └── user │ │ │ │ └── userType.js │ │ ├── report │ │ │ ├── project.api.ts │ │ │ └── project.d.ts │ │ └── system │ │ │ ├── auth │ │ │ ├── client.js │ │ │ └── user.js │ │ │ ├── ca │ │ │ ├── cert.js │ │ │ └── subject.js │ │ │ ├── login.js │ │ │ ├── menu.js │ │ │ ├── monitor │ │ │ ├── cache.js │ │ │ ├── job.js │ │ │ ├── jobLog.js │ │ │ ├── logininfor.js │ │ │ ├── online.js │ │ │ ├── operlog.js │ │ │ └── server.js │ │ │ ├── sso-auth.js │ │ │ ├── sso-login-page.js │ │ │ ├── system │ │ │ ├── config.js │ │ │ ├── content.js │ │ │ ├── dept.js │ │ │ ├── dict │ │ │ │ ├── data.js │ │ │ │ └── type.js │ │ │ ├── menu.js │ │ │ ├── message │ │ │ │ ├── message.js │ │ │ │ ├── messageTemplate.js │ │ │ │ └── websocketService.js │ │ │ ├── notice.js │ │ │ ├── post.js │ │ │ ├── role.js │ │ │ └── user.js │ │ │ └── tool │ │ │ └── gen.js │ ├── assets │ │ ├── cockpit │ │ │ ├── arrow-l.png │ │ │ ├── arrow-r.png │ │ │ ├── bg.png │ │ │ ├── bot-left.png │ │ │ ├── bottom-tab-act.png │ │ │ ├── bottom-tab.png │ │ │ ├── box (1).png │ │ │ ├── box (2).png │ │ │ ├── box (3).png │ │ │ ├── box (4).png │ │ │ ├── btbody.png │ │ │ ├── bthead.png │ │ │ ├── center-btn-act.png │ │ │ ├── center-btn.png │ │ │ ├── center-icon.png │ │ │ ├── center.png │ │ │ ├── left (1).png │ │ │ ├── left (2).png │ │ │ ├── left (3).png │ │ │ ├── left (4).png │ │ │ ├── left (5).png │ │ │ ├── left (6).png │ │ │ ├── right1.png │ │ │ ├── sel-icon.png │ │ │ ├── sel.png │ │ │ ├── tab.png │ │ │ ├── tabs.png │ │ │ ├── tbody.png │ │ │ ├── thead.png │ │ │ ├── title.png │ │ │ ├── top.png │ │ │ └── user-btn.png │ │ ├── dpp │ │ │ └── etl │ │ │ │ ├── circle-check.png │ │ │ │ ├── circle-close.png │ │ │ │ ├── circle-subtract.png │ │ │ │ ├── circle-subtract1.png │ │ │ │ ├── toolbar (1).png │ │ │ │ ├── toolbar (2).png │ │ │ │ ├── toolbar (3).png │ │ │ │ ├── toolbar (4).png │ │ │ │ ├── toolbar (5).png │ │ │ │ ├── toolbar (6).png │ │ │ │ ├── toolbar (7).png │ │ │ │ └── toolbar (8).png │ │ ├── fonts │ │ │ ├── HYk2gj.ttf │ │ │ ├── PingFangSCRegular.ttf │ │ │ └── Sharp.ttf │ │ ├── iconfont │ │ │ ├── font │ │ │ │ ├── demo.css │ │ │ │ ├── demo_index.html │ │ │ │ ├── iconfont.css │ │ │ │ ├── iconfont.js │ │ │ │ ├── iconfont.json │ │ │ │ ├── iconfont.ttf │ │ │ │ ├── iconfont.woff │ │ │ │ └── iconfont.woff2 │ │ │ ├── font_new │ │ │ │ ├── demo.css │ │ │ │ ├── demo_index.html │ │ │ │ ├── iconfont.css │ │ │ │ ├── iconfont.js │ │ │ │ ├── iconfont.json │ │ │ │ ├── iconfont.svg │ │ │ │ ├── iconfont.ttf │ │ │ │ ├── iconfont.woff │ │ │ │ └── iconfont.woff2 │ │ │ └── iconfont.css │ │ ├── icons │ │ │ └── svg │ │ │ │ ├── 404.svg │ │ │ │ ├── account-box-2-line.svg │ │ │ │ ├── account-pin-box-line.svg │ │ │ │ ├── archive-2-line.svg │ │ │ │ ├── archive-drawer-line.svg │ │ │ │ ├── archive-line.svg │ │ │ │ ├── article-line.svg │ │ │ │ ├── bnb-line.svg │ │ │ │ ├── book-2-line.svg │ │ │ │ ├── book-3-line.svg │ │ │ │ ├── book-line.svg │ │ │ │ ├── book-marked-line.svg │ │ │ │ ├── book-read-line.svg │ │ │ │ ├── box-3-line.svg │ │ │ │ ├── briefcase-2-line.svg │ │ │ │ ├── bug.svg │ │ │ │ ├── build.svg │ │ │ │ ├── button.svg │ │ │ │ ├── calendar-2-line.svg │ │ │ │ ├── calendar-schedule-line.svg │ │ │ │ ├── calendar-todo-line.svg │ │ │ │ ├── cascader.svg │ │ │ │ ├── chart.svg │ │ │ │ ├── checkbox.svg │ │ │ │ ├── chrome-line.svg │ │ │ │ ├── clipboard.svg │ │ │ │ ├── code-box-line.svg │ │ │ │ ├── code.svg │ │ │ │ ├── color-filter-line.svg │ │ │ │ ├── color.svg │ │ │ │ ├── component.svg │ │ │ │ ├── contacts-book-2-line.svg │ │ │ │ ├── contacts-book-line.svg │ │ │ │ ├── copper-coin-line.svg │ │ │ │ ├── currency-line.svg │ │ │ │ ├── dashboard-3-line.svg │ │ │ │ ├── dashboard.svg │ │ │ │ ├── date-range.svg │ │ │ │ ├── date.svg │ │ │ │ ├── dict.svg │ │ │ │ ├── documentation.svg │ │ │ │ ├── download.svg │ │ │ │ ├── drag.svg │ │ │ │ ├── druid.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── education.svg │ │ │ │ ├── email.svg │ │ │ │ ├── equalizer-line.svg │ │ │ │ ├── example.svg │ │ │ │ ├── excel.svg │ │ │ │ ├── exchange-dollar-line.svg │ │ │ │ ├── exchange-funds-line.svg │ │ │ │ ├── exit-fullscreen.svg │ │ │ │ ├── eye-open.svg │ │ │ │ ├── eye.svg │ │ │ │ ├── file-copy-2-line.svg │ │ │ │ ├── file-edit-line.svg │ │ │ │ ├── file-list-2-line.svg │ │ │ │ ├── file-list-line.svg │ │ │ │ ├── form.svg │ │ │ │ ├── fullscreen.svg │ │ │ │ ├── github.svg │ │ │ │ ├── group-3-line.svg │ │ │ │ ├── guide.svg │ │ │ │ ├── hard-drive-3-line.svg │ │ │ │ ├── hourglass-line.svg │ │ │ │ ├── icon.svg │ │ │ │ ├── input.svg │ │ │ │ ├── instance-line.svg │ │ │ │ ├── international.svg │ │ │ │ ├── job.svg │ │ │ │ ├── language.svg │ │ │ │ ├── lifebuoy-line.svg │ │ │ │ ├── link.svg │ │ │ │ ├── list-view.svg │ │ │ │ ├── list.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── log.svg │ │ │ │ ├── logininfor.svg │ │ │ │ ├── mail-line.svg │ │ │ │ ├── map-2-line.svg │ │ │ │ ├── megaphone-line.svg │ │ │ │ ├── message.svg │ │ │ │ ├── microsoft-line.svg │ │ │ │ ├── mind-map.svg │ │ │ │ ├── money-dollar-box-line.svg │ │ │ │ ├── money.svg │ │ │ │ ├── monitor.svg │ │ │ │ ├── nested.svg │ │ │ │ ├── news-line.svg │ │ │ │ ├── newspaper-line.svg │ │ │ │ ├── node-tree.svg │ │ │ │ ├── number.svg │ │ │ │ ├── online.svg │ │ │ │ ├── openai-line.svg │ │ │ │ ├── organization-chart.svg │ │ │ │ ├── password.svg │ │ │ │ ├── pdf.svg │ │ │ │ ├── people.svg │ │ │ │ ├── peoples.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── post.svg │ │ │ │ ├── qq.svg │ │ │ │ ├── question.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── rainbow-line.svg │ │ │ │ ├── rate.svg │ │ │ │ ├── redis-list.svg │ │ │ │ ├── redis.svg │ │ │ │ ├── row.svg │ │ │ │ ├── safe-line.svg │ │ │ │ ├── search.svg │ │ │ │ ├── select.svg │ │ │ │ ├── server.svg │ │ │ │ ├── settings-line.svg │ │ │ │ ├── shield-check-line.svg │ │ │ │ ├── shopping.svg │ │ │ │ ├── shuffle-line.svg │ │ │ │ ├── size.svg │ │ │ │ ├── skill.svg │ │ │ │ ├── slider.svg │ │ │ │ ├── slideshow-2-line.svg │ │ │ │ ├── slideshow-3-line.svg │ │ │ │ ├── slideshow-4-line.svg │ │ │ │ ├── slideshow-line.svg │ │ │ │ ├── smartphone-line.svg │ │ │ │ ├── stack-line.svg │ │ │ │ ├── star.svg │ │ │ │ ├── swagger.svg │ │ │ │ ├── switch.svg │ │ │ │ ├── system.svg │ │ │ │ ├── tab.svg │ │ │ │ ├── table.svg │ │ │ │ ├── telegram-line.svg │ │ │ │ ├── textarea.svg │ │ │ │ ├── theme.svg │ │ │ │ ├── time-range.svg │ │ │ │ ├── time.svg │ │ │ │ ├── tool.svg │ │ │ │ ├── tree-table.svg │ │ │ │ ├── tree.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── user-3-line.svg │ │ │ │ ├── user-line.svg │ │ │ │ ├── user.svg │ │ │ │ ├── validCode.svg │ │ │ │ ├── wechat.svg │ │ │ │ └── zip.svg │ │ ├── images │ │ │ ├── defaultAvatar.png │ │ │ ├── profile.png │ │ │ ├── qrIcon.png │ │ │ ├── rwgl.png │ │ │ └── success.svg │ │ └── system │ │ │ ├── 401_images │ │ │ └── 401.gif │ │ │ ├── 404_images │ │ │ ├── 404.png │ │ │ └── 404_cloud.png │ │ │ ├── images │ │ │ ├── dark.svg │ │ │ ├── dpp │ │ │ │ ├── 1.svg │ │ │ │ ├── DM.png │ │ │ │ ├── HDFS.png │ │ │ │ ├── Hive.png │ │ │ │ ├── SHELL.png │ │ │ │ ├── csv.png │ │ │ │ ├── excel.png │ │ │ │ ├── kafka.png │ │ │ │ ├── kingBase.png │ │ │ │ ├── mop.png │ │ │ │ ├── mysql.png │ │ │ │ ├── oracle.png │ │ │ │ ├── sc.png │ │ │ │ ├── sjjctb.png │ │ │ │ ├── sjkf.png │ │ │ │ ├── sjkftb.png │ │ │ │ ├── sqlServer.png │ │ │ │ ├── sr.png │ │ │ │ ├── sx.png │ │ │ │ ├── tsc.png │ │ │ │ ├── tsr.png │ │ │ │ ├── tzh.png │ │ │ │ ├── xx.png │ │ │ │ └── zh.png │ │ │ ├── index │ │ │ │ ├── 1.png │ │ │ │ ├── 2.png │ │ │ │ ├── 3.png │ │ │ │ ├── 4.png │ │ │ │ ├── 5.png │ │ │ │ ├── module_1_1.png │ │ │ │ └── weather.png │ │ │ ├── layout │ │ │ │ └── msg │ │ │ │ │ ├── icon1.png │ │ │ │ │ ├── 编组 3.png │ │ │ │ │ ├── 编组 4.png │ │ │ │ │ ├── 编组 6.png │ │ │ │ │ ├── 编组 7.png │ │ │ │ │ └── 编组 8.png │ │ │ ├── light.svg │ │ │ ├── login-background.jpg │ │ │ ├── login │ │ │ │ ├── banner-zt.png │ │ │ │ ├── email.png │ │ │ │ ├── goge-icon.png │ │ │ │ ├── mac-icon.svg │ │ │ │ ├── phone.png │ │ │ │ ├── qianshu-logo.png │ │ │ │ └── window-icon.svg │ │ │ ├── no_data │ │ │ │ └── noData.png │ │ │ ├── pay.png │ │ │ ├── profile.jpg │ │ │ ├── project │ │ │ │ └── board │ │ │ │ │ ├── h1.png │ │ │ │ │ ├── h2.png │ │ │ │ │ ├── h3.png │ │ │ │ │ ├── h4.png │ │ │ │ │ ├── l1.png │ │ │ │ │ ├── l2.png │ │ │ │ │ ├── r1.png │ │ │ │ │ └── tit1.png │ │ │ └── sso_login │ │ │ │ ├── an.png │ │ │ │ ├── banner1.png │ │ │ │ ├── chrome.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── ios.svg │ │ │ │ ├── sso-logo.png │ │ │ │ └── win.svg │ │ │ ├── logo │ │ │ ├── logo.png │ │ │ ├── qianshu-logo.png │ │ │ ├── qianshu-simlogo.png │ │ │ └── simpLogo.png │ │ │ └── styles │ │ │ ├── anivia.scss │ │ │ ├── btn.scss │ │ │ ├── element-ui.scss │ │ │ ├── global.scss │ │ │ ├── index.scss │ │ │ ├── mixin.scss │ │ │ ├── qdata.scss │ │ │ ├── sidebar.scss │ │ │ ├── transition.scss │ │ │ └── variables.module.scss │ ├── components │ │ ├── Breadcrumb │ │ │ └── index.vue │ │ ├── Crontab │ │ │ ├── day.vue │ │ │ ├── hour.vue │ │ │ ├── index.vue │ │ │ ├── min.vue │ │ │ ├── month.vue │ │ │ ├── result.vue │ │ │ ├── second.vue │ │ │ ├── week.vue │ │ │ └── year.vue │ │ ├── DeptTree │ │ │ └── index.vue │ │ ├── DictTag │ │ │ └── index.vue │ │ ├── Editor │ │ │ └── index.vue │ │ ├── FileUpload │ │ │ └── index.vue │ │ ├── FileUpload2 │ │ │ └── index.vue │ │ ├── FileUploadbtn │ │ │ └── index.vue │ │ ├── Hamburger │ │ │ └── index.vue │ │ ├── HeaderSearch │ │ │ └── index.vue │ │ ├── IconSelect │ │ │ ├── index.vue │ │ │ └── requireIcons.js │ │ ├── ImagePreview │ │ │ └── index.vue │ │ ├── ImageUpload │ │ │ └── index.vue │ │ ├── Pagination │ │ │ └── index.vue │ │ ├── ParentView │ │ │ └── index.vue │ │ ├── RightToolbar │ │ │ ├── index.vue │ │ │ └── index2.vue │ │ ├── Screenfull │ │ │ └── index.vue │ │ ├── ShellEditor │ │ │ └── index.vue │ │ ├── SizeSelect │ │ │ └── index.vue │ │ ├── SqlEditor │ │ │ ├── index.vue │ │ │ └── index1.vue │ │ ├── SvgIcon │ │ │ ├── index.vue │ │ │ └── svgicon.js │ │ ├── TopNav │ │ │ ├── index.vue │ │ │ └── index1.vue │ │ ├── TreeSelect │ │ │ └── index.vue │ │ └── iFrame │ │ │ └── index.vue │ ├── directive │ │ ├── common │ │ │ └── copyText.js │ │ ├── index.js │ │ └── permission │ │ │ ├── hasPermi.js │ │ │ └── hasRole.js │ ├── layout │ │ ├── components │ │ │ ├── AppMain.vue │ │ │ ├── IframeToggle │ │ │ │ └── index.vue │ │ │ ├── InnerLink │ │ │ │ └── index.vue │ │ │ ├── Navbar.vue │ │ │ ├── Settings │ │ │ │ └── index.vue │ │ │ ├── Sidebar │ │ │ │ ├── Link.vue │ │ │ │ ├── Logo.vue │ │ │ │ ├── SidebarItem.vue │ │ │ │ └── index.vue │ │ │ ├── TagsView │ │ │ │ ├── ScrollPane.vue │ │ │ │ └── index.vue │ │ │ └── index.js │ │ └── index.vue │ ├── main.js │ ├── permission.js │ ├── plugins │ │ ├── auth.js │ │ ├── cache.js │ │ ├── download.js │ │ ├── index.js │ │ ├── modal.js │ │ └── tab.js │ ├── router │ │ ├── da │ │ │ ├── discovery │ │ │ │ └── index.js │ │ │ ├── dynamic │ │ │ │ └── index.js │ │ │ └── public │ │ │ │ └── index.js │ │ ├── dp │ │ │ ├── dataElem │ │ │ │ └── index.js │ │ │ └── public │ │ │ │ └── index.js │ │ ├── dpp │ │ │ └── etl │ │ │ │ └── index.js │ │ ├── ds │ │ │ ├── dynamic │ │ │ │ └── index.js │ │ │ └── public │ │ │ │ └── index.js │ │ ├── example │ │ │ ├── dynamic │ │ │ │ └── index.js │ │ │ └── public │ │ │ │ └── index.js │ │ ├── index.js │ │ └── system │ │ │ ├── dynamic │ │ │ └── index.js │ │ │ └── public │ │ │ └── index.js │ ├── settings.js │ ├── store │ │ ├── index.js │ │ ├── project │ │ │ └── project.js │ │ └── system │ │ │ ├── app.js │ │ │ ├── dict.js │ │ │ ├── permission.js │ │ │ ├── settings.js │ │ │ ├── tagsView.js │ │ │ └── user.js │ ├── utils │ │ ├── aesEncrypt.js │ │ ├── anivia.js │ │ ├── auth.js │ │ ├── bus.js │ │ ├── cronUtils.js │ │ ├── dict.js │ │ ├── dynamicTitle.js │ │ ├── errorCode.js │ │ ├── graph.js │ │ ├── index.js │ │ ├── jsencrypt.js │ │ ├── permission.js │ │ ├── request.js │ │ ├── rpAuth.js │ │ ├── rpRequest.js │ │ ├── scroll-to.js │ │ ├── sso-request.js │ │ ├── theme.js │ │ ├── time.js │ │ └── validate.js │ └── views │ │ ├── att │ │ ├── cat │ │ │ ├── attApiCat │ │ │ │ └── index.vue │ │ │ ├── attAssetCat │ │ │ │ └── index.vue │ │ │ ├── attDataDevCat │ │ │ │ └── index.vue │ │ │ ├── attDataElemCat │ │ │ │ ├── index.vue │ │ │ │ └── index2.vue │ │ │ ├── attModelCat │ │ │ │ └── index.vue │ │ │ └── attTaskCat │ │ │ │ └── index.vue │ │ ├── client │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── clientMultiple.vue │ │ │ │ └── clientSingle.vue │ │ ├── project │ │ │ └── index.vue │ │ ├── projectUserRel │ │ │ ├── index.vue │ │ │ ├── role.vue │ │ │ └── user.vue │ │ ├── rule │ │ │ ├── AttCleanRule │ │ │ │ └── index.vue │ │ │ └── attAuditRule │ │ │ │ └── index.vue │ │ └── theme │ │ │ └── index.vue │ │ ├── cockpit │ │ ├── components │ │ │ ├── bottom.vue │ │ │ ├── center.vue │ │ │ ├── head.vue │ │ │ ├── left.vue │ │ │ └── right.vue │ │ └── index.vue │ │ ├── da │ │ ├── asset │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── daAssetMultiple.vue │ │ │ │ └── daAssetSingle.vue │ │ ├── assetColumn │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── daAssetColumnMultiple.vue │ │ │ │ └── daAssetColumnSingle.vue │ │ ├── daAssetApply │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── daAssetApplyMultiple.vue │ │ │ │ └── daAssetApplySingle.vue │ │ ├── datasource │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── daDatasourceMultiple.vue │ │ │ │ └── daDatasourceSingle.vue │ │ ├── executesqlquery │ │ │ ├── components │ │ │ │ └── TableInfoDialog.vue │ │ │ └── index.vue │ │ └── sensitiveLevel │ │ │ ├── detail │ │ │ ├── componentOne.vue │ │ │ ├── componentTwo.vue │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ ├── daSensitiveLevelMultiple.vue │ │ │ └── daSensitiveLevelSingle.vue │ │ ├── dp │ │ ├── dataElem │ │ │ ├── detail │ │ │ │ ├── component │ │ │ │ │ ├── ruleAuditIndex.vue │ │ │ │ │ └── ruleCleanIndex.vue │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ ├── dataElemCodeDetailDialog.vue │ │ │ │ ├── dataElemCodeList.vue │ │ │ │ ├── dataElemDetailDialog.vue │ │ │ │ ├── dpCodeMap.vue │ │ │ │ └── dpDataElemAssetRel.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── dpDataElemRuleRelMultiple.vue │ │ │ │ └── dpDataElemSingle.vue │ │ └── model │ │ │ ├── detail │ │ │ ├── FieldFormDialog.vue │ │ │ ├── MaterializationDialog.vue │ │ │ ├── MyFormDialog.vue │ │ │ ├── componentOne.vue │ │ │ ├── componentTwo.vue │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ ├── dpModelMultiple.vue │ │ │ └── dpModelSingle.vue │ │ ├── dpp │ │ ├── asset │ │ │ ├── components │ │ │ │ ├── ApiConfigForm.vue │ │ │ │ ├── CreateEditModal.vue │ │ │ │ ├── TableConfigForm.vue │ │ │ │ ├── TableDialog.vue │ │ │ │ └── daAssetVideo.vue │ │ │ ├── detail │ │ │ │ ├── RequestParamsForm.vue │ │ │ │ ├── ResponseFormatConfig.vue │ │ │ │ ├── authParams.vue │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentThree.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ ├── components │ │ │ │ │ ├── DataDiffDialog.vue │ │ │ │ │ ├── UpdateDataDaiol.vue │ │ │ │ │ └── UpdateHistory.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── daAssetMultiple.vue │ │ │ │ └── daAssetSingle.vue │ │ ├── etl │ │ │ ├── components │ │ │ │ ├── DataViewDialog.vue │ │ │ │ ├── data.js │ │ │ │ ├── formComponents │ │ │ │ │ ├── ExcelInputForm.vue │ │ │ │ │ ├── InputForm.vue │ │ │ │ │ ├── KafkaForm.vue │ │ │ │ │ ├── OutputForm.vue │ │ │ │ │ ├── TransformForm.vue │ │ │ │ │ ├── components │ │ │ │ │ │ ├── CreateEditModal.vue │ │ │ │ │ │ ├── DynamicForm.vue │ │ │ │ │ │ ├── ExcelUploadDialog.vue │ │ │ │ │ │ ├── KafkaUploadDialog.vue │ │ │ │ │ │ ├── YourChildComponent.vue │ │ │ │ │ │ ├── dpCodeMap.vue │ │ │ │ │ │ └── inputEditModel.vue │ │ │ │ │ └── csvForm.vue │ │ │ │ ├── opBase.js │ │ │ │ └── taskConfigDialog.vue │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── lntegratio │ │ │ │ └── index.vue │ │ ├── etljobinstance │ │ │ └── index.vue │ │ ├── etltaskinstance │ │ │ ├── components │ │ │ │ └── dppEtlTaskLog.vue │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── dppEtlTaskLogMultiple.vue │ │ │ │ └── dppEtlTaskLogSingle.vue │ │ └── tasker │ │ │ └── ddv │ │ │ ├── components │ │ │ ├── data.js │ │ │ ├── index.vue │ │ │ ├── taskConfigDialog.vue │ │ │ └── taskConfigUploadDialog.vue │ │ │ └── index.vue │ │ ├── ds │ │ ├── api │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── edit │ │ │ │ ├── components │ │ │ │ │ ├── TableDialog.vue │ │ │ │ │ ├── TableDialogapi.vue │ │ │ │ │ ├── base.vue │ │ │ │ │ ├── parameter.vue │ │ │ │ │ ├── test.vue │ │ │ │ │ └── testapi.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── dsApiMultiple.vue │ │ │ │ └── dsApiSingle.vue │ │ └── apiLog │ │ │ ├── detail │ │ │ ├── componentOne.vue │ │ │ ├── componentTwo.vue │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ ├── apiLogMultiple.vue │ │ │ └── apiLogSingle.vue │ │ ├── example │ │ ├── components │ │ │ ├── view-a1-chart.vue │ │ │ ├── view-a1.vue │ │ │ ├── view-a2-chart.vue │ │ │ ├── view-a2.vue │ │ │ ├── view-a3.vue │ │ │ ├── view-a4.vue │ │ │ ├── view-b.vue │ │ │ ├── view-c1.vue │ │ │ ├── view-c2.vue │ │ │ ├── view-c3.vue │ │ │ ├── view-c4.vue │ │ │ ├── view-c5.vue │ │ │ ├── view-c6.vue │ │ │ ├── view-c7.vue │ │ │ ├── view-d.vue │ │ │ └── view-e.vue │ │ ├── coms.vue │ │ ├── gen │ │ │ └── index.vue │ │ ├── genStudent │ │ │ ├── detail │ │ │ │ ├── componentOne.vue │ │ │ │ ├── componentTwo.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── selection │ │ │ │ ├── studentMultiple.vue │ │ │ │ └── studentSingle.vue │ │ ├── pay.vue │ │ ├── user │ │ │ ├── complexdetails.vue │ │ │ └── index.vue │ │ └── websocket.vue │ │ └── system │ │ ├── auth │ │ └── client │ │ │ └── index.vue │ │ ├── ca │ │ ├── cert │ │ │ └── index.vue │ │ └── subject │ │ │ └── index.vue │ │ ├── error │ │ ├── 401.vue │ │ └── 404.vue │ │ ├── index.vue │ │ ├── login.vue │ │ ├── monitor │ │ ├── cache │ │ │ ├── index.vue │ │ │ └── list.vue │ │ ├── druid │ │ │ └── index.vue │ │ ├── job │ │ │ ├── index.vue │ │ │ └── log.vue │ │ ├── logininfor │ │ │ └── index.vue │ │ ├── online │ │ │ └── index.vue │ │ ├── operlog │ │ │ └── index.vue │ │ └── server │ │ │ └── index.vue │ │ ├── redirect │ │ └── index.vue │ │ ├── register.vue │ │ ├── sso.vue │ │ ├── system │ │ ├── config │ │ │ └── index.vue │ │ ├── content │ │ │ └── index.vue │ │ ├── dept │ │ │ └── index.vue │ │ ├── dict │ │ │ ├── data.vue │ │ │ └── index.vue │ │ ├── menu │ │ │ └── index.vue │ │ ├── message │ │ │ ├── components │ │ │ │ ├── item.vue │ │ │ │ └── messageList.vue │ │ │ └── index.vue │ │ ├── messageTemplate │ │ │ └── index.vue │ │ ├── notice │ │ │ └── index.vue │ │ ├── post │ │ │ └── index.vue │ │ ├── role │ │ │ ├── authUser.vue │ │ │ ├── index.vue │ │ │ └── selectUser.vue │ │ └── user │ │ │ ├── authRole.vue │ │ │ ├── index.vue │ │ │ └── profile │ │ │ ├── index.vue │ │ │ ├── resetPwd.vue │ │ │ ├── userAvatar.vue │ │ │ └── userInfo.vue │ │ └── tool │ │ ├── build │ │ └── index.vue │ │ ├── choose │ │ ├── index.vue │ │ ├── temp-current.vue │ │ ├── temp-selection.vue │ │ └── userTypeMultiple.vue │ │ ├── gen │ │ ├── basicInfoForm.vue │ │ ├── createTable.vue │ │ ├── editTable.vue │ │ ├── genInfoForm.vue │ │ ├── importTable.vue │ │ └── index.vue │ │ └── swagger │ │ └── index.vue ├── vite.config.js └── vite │ └── plugins │ ├── auto-import.js │ ├── compression.js │ ├── index.js │ ├── setup-extend.js │ └── svg-icon.js └── sql ├── dm └── dm.sql └── mysql └── Mysql.sql /.gitee/ISSUE_TEMPLATE.zh-CN.md: -------------------------------------------------------------------------------- 1 | ### 该问题是怎么引起的? 2 | 3 | 4 | 5 | ### 重现步骤 6 | 7 | 8 | 9 | ### 报错信息 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/banner.png -------------------------------------------------------------------------------- /images/banner2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/banner2.png -------------------------------------------------------------------------------- /images/deploy/rabbitmq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/rabbitmq.png -------------------------------------------------------------------------------- /images/deploy/redis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/redis.png -------------------------------------------------------------------------------- /images/deploy/后端jar包.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端jar包.png -------------------------------------------------------------------------------- /images/deploy/后端打包成功.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端打包成功.png -------------------------------------------------------------------------------- /images/deploy/后端部署/docker-compose修改.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/docker-compose修改.png -------------------------------------------------------------------------------- /images/deploy/后端部署/restart修改.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/restart修改.png -------------------------------------------------------------------------------- /images/deploy/后端部署/修改Dockerfile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/修改Dockerfile.png -------------------------------------------------------------------------------- /images/deploy/后端部署/后端jar包.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/后端jar包.png -------------------------------------------------------------------------------- /images/deploy/后端部署/后端启动中.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/后端启动中.png -------------------------------------------------------------------------------- /images/deploy/后端部署/后端启动成功.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/后端启动成功.png -------------------------------------------------------------------------------- /images/deploy/后端部署/后端所需文件.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/后端所需文件.png -------------------------------------------------------------------------------- /images/deploy/后端部署/服务器文件.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/后端部署/服务器文件.png -------------------------------------------------------------------------------- /images/deploy/数据库.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/数据库.png -------------------------------------------------------------------------------- /images/deploy/调度器.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器.png -------------------------------------------------------------------------------- /images/deploy/调度器/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/image1.png -------------------------------------------------------------------------------- /images/deploy/调度器/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/image2.png -------------------------------------------------------------------------------- /images/deploy/调度器/image3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/image3.png -------------------------------------------------------------------------------- /images/deploy/调度器/image4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/image4.png -------------------------------------------------------------------------------- /images/deploy/调度器/个人版实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/个人版实例.png -------------------------------------------------------------------------------- /images/deploy/调度器/设置访问凭证.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/设置访问凭证.png -------------------------------------------------------------------------------- /images/deploy/调度器/验证spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/deploy/调度器/验证spark.png -------------------------------------------------------------------------------- /images/framework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/framework.png -------------------------------------------------------------------------------- /images/system/10资产地图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/10资产地图.png -------------------------------------------------------------------------------- /images/system/11数据集成任务.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/11数据集成任务.png -------------------------------------------------------------------------------- /images/system/12可视化etl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/12可视化etl.png -------------------------------------------------------------------------------- /images/system/13数据服务.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/13数据服务.png -------------------------------------------------------------------------------- /images/system/14执行日志.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/14执行日志.png -------------------------------------------------------------------------------- /images/system/15发布服务.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/15发布服务.png -------------------------------------------------------------------------------- /images/system/16日志.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/16日志.png -------------------------------------------------------------------------------- /images/system/1登录页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/1登录页.png -------------------------------------------------------------------------------- /images/system/2首页.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/2首页.png -------------------------------------------------------------------------------- /images/system/3稽查规则.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/3稽查规则.png -------------------------------------------------------------------------------- /images/system/4清洗规则.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/4清洗规则.png -------------------------------------------------------------------------------- /images/system/5逻辑模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/5逻辑模型.png -------------------------------------------------------------------------------- /images/system/6数据元.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/6数据元.png -------------------------------------------------------------------------------- /images/system/7映射.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/7映射.png -------------------------------------------------------------------------------- /images/system/8数据连接.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/8数据连接.png -------------------------------------------------------------------------------- /images/system/9数据发现.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/images/system/9数据发现.png -------------------------------------------------------------------------------- /qdata-api-ds/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | qData 7 | tech.qiantong 8 | 3.8.8 9 | 10 | 4.0.0 11 | 12 | 13 | qdata-api-ds-api 14 | qdata-api-ds-biz 15 | 16 | 17 | pom 18 | 19 | qdata-api-ds 20 | 21 | 22 | qdata-api-ds模块 23 | 24 | 25 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/base/DsResultDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.base; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *

7 | * 用途:DS结果VO 8 | *

9 | * 10 | * @author: FXB 11 | * @create: 2025-02-18 15:58 12 | **/ 13 | @Data 14 | public class DsResultDTO { 15 | 16 | /** 17 | * 状态码 18 | */ 19 | private Integer code; 20 | 21 | /** 22 | * 信息 23 | */ 24 | private String msg; 25 | 26 | /** 27 | * 是否失败 28 | */ 29 | private Boolean failed; 30 | 31 | /** 32 | * 是否成功 33 | */ 34 | private Boolean success; 35 | } 36 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/base/DsStatusRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.base; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *

7 | * 用途:状态相关接口响应DTO 8 | *

9 | * 10 | * @author: FXB 11 | * @create: 2025-02-18 14:20 12 | **/ 13 | @Data 14 | public class DsStatusRespDTO extends DsResultDTO { 15 | /** 16 | * 是否成功 17 | */ 18 | private Boolean data; 19 | } 20 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/etl/DSExecuteDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.etl; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import tech.qiantong.qdata.common.enums.ExecuteType; 8 | 9 | /** 10 | *

11 | * 用途: 12 | *

13 | * 14 | * @author: FXB 15 | * @create: 2025-03-27 14:31 16 | **/ 17 | @Builder 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | @Data 21 | public class DSExecuteDTO { 22 | 23 | /** 24 | * 流程id 25 | */ 26 | private Long processInstanceId; 27 | 28 | /** 29 | * 执行类型 30 | */ 31 | private ExecuteType executeType; 32 | } 33 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/etl/DsNodeGenCodeRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.etl; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import tech.qiantong.qdata.api.ds.api.base.DsResultDTO; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | *

13 | * 用途:ds生成节点编码响应DTO 14 | *

15 | * 16 | * @author: FXB 17 | * @create: 2025-02-18 16:57 18 | **/ 19 | @Builder 20 | @NoArgsConstructor 21 | @AllArgsConstructor 22 | @Data 23 | public class DsNodeGenCodeRespDTO extends DsResultDTO { 24 | /** 25 | * 节点编码列表 26 | */ 27 | private List data; 28 | } 29 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/etl/DsSchedulerRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.etl; 2 | 3 | import lombok.Data; 4 | import tech.qiantong.qdata.api.ds.api.base.DsResultDTO; 5 | import tech.qiantong.qdata.api.ds.api.etl.ds.Schedule; 6 | 7 | /** 8 | *

9 | * 用途:调度器响应参数DTO 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-02-21 10:18 14 | **/ 15 | @Data 16 | public class DsSchedulerRespDTO extends DsResultDTO { 17 | private Schedule data; 18 | } 19 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/etl/DsTaskSaveRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.etl; 2 | 3 | import lombok.Data; 4 | import tech.qiantong.qdata.api.ds.api.base.DsResultDTO; 5 | import tech.qiantong.qdata.api.ds.api.etl.ds.ProcessDefinition; 6 | 7 | /** 8 | *

9 | * 用途:任务保存请求响应参数DTO 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-02-20 09:06 14 | **/ 15 | @Data 16 | public class DsTaskSaveRespDTO extends DsResultDTO { 17 | private ProcessDefinition data; 18 | } 19 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api; 2 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/project/DsProjectCreateReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.project; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | *

10 | * 用途:项目保存修改DTO 11 | *

12 | * 13 | * @author: FXB 14 | * @create: 2025-02-18 14:20 15 | **/ 16 | @Builder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | @Data 20 | public class DsProjectCreateReqDTO { 21 | 22 | /** 23 | * 项目名称(必填) 24 | */ 25 | private String projectName; 26 | 27 | /** 28 | * 项目描述 29 | */ 30 | private String description; 31 | } 32 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/project/DsProjectDeleteRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.project; 2 | 3 | import lombok.Data; 4 | import tech.qiantong.qdata.api.ds.api.base.DsResultDTO; 5 | 6 | /** 7 | *

8 | * 用途:项目删除响应DTO 9 | *

10 | * 11 | * @author: FXB 12 | * @create: 2025-02-18 14:20 13 | **/ 14 | @Data 15 | public class DsProjectDeleteRespDTO extends DsResultDTO { 16 | /** 17 | * 是否删除成功 18 | */ 19 | private Boolean data; 20 | } 21 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/project/DsProjectUpdateReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.project; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | *

10 | * 用途:项目保存修改DTO 11 | *

12 | * 13 | * @author: FXB 14 | * @create: 2025-02-18 14:20 15 | **/ 16 | @Builder 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | @Data 20 | public class DsProjectUpdateReqDTO { 21 | 22 | /** 23 | * 项目编码(必填) 24 | */ 25 | private Long projectCode; 26 | 27 | /** 28 | * 项目名称(必填) 29 | */ 30 | private String projectName; 31 | 32 | /** 33 | * 项目描述 34 | */ 35 | private String description; 36 | } 37 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/service/etl/IDsEtlExecutorService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.service.etl; 2 | 3 | import tech.qiantong.qdata.api.ds.api.base.DsStatusRespDTO; 4 | import tech.qiantong.qdata.api.ds.api.etl.DSExecuteDTO; 5 | 6 | /** 7 | *

8 | * 用途:执行相关相关接口 9 | *

10 | * 11 | * @author: FXB 12 | * @create: 2025-03-27 14:29 13 | **/ 14 | public interface IDsEtlExecutorService { 15 | /** 16 | * 执行命令 17 | * 18 | * @param dsExecuteDTO 19 | * @param projectCode 20 | * @return 21 | */ 22 | DsStatusRespDTO execute(DSExecuteDTO dsExecuteDTO, String projectCode); 23 | } 24 | -------------------------------------------------------------------------------- /qdata-api-ds/qdata-api-ds-api/src/main/java/tech/qiantong/qdata/api/ds/api/service/etl/IDsEtlNodeService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.api.ds.api.service.etl; 2 | 3 | import tech.qiantong.qdata.api.ds.api.etl.DsNodeGenCodeRespDTO; 4 | 5 | /** 6 | *

7 | * 用途:ds数据集成节点相关接口 8 | *

9 | * 10 | * @author: FXB 11 | * @create: 2025-02-18 16:47 12 | **/ 13 | public interface IDsEtlNodeService { 14 | /** 15 | * 生成节点编码 16 | */ 17 | DsNodeGenCodeRespDTO genCode(Long projectCode); 18 | } 19 | -------------------------------------------------------------------------------- /qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/reader/Reader.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.spark.etl.reader; 2 | 3 | import com.alibaba.fastjson2.JSONObject; 4 | import org.apache.spark.sql.Dataset; 5 | import org.apache.spark.sql.Row; 6 | import org.apache.spark.sql.SparkSession; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | *

12 | * 用途:读数据 13 | *

14 | * 15 | * @author: FXB 16 | * @create: 2025-04-21 13:34 17 | **/ 18 | public interface Reader { 19 | 20 | Dataset read(SparkSession spark, JSONObject reader, List readerColumns,String logPath); 21 | 22 | String code(); 23 | } 24 | -------------------------------------------------------------------------------- /qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/reader/ReaderFactory.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.spark.etl.reader; 2 | 3 | import tech.qiantong.qdata.common.exception.ServiceException; 4 | 5 | import java.util.Optional; 6 | 7 | /** 8 | *

9 | * 用途:输入组件工厂 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-04-21 13:37 14 | **/ 15 | public class ReaderFactory { 16 | private static final ReaderRegistry COMPONENT_ITEM_REGISTRY = new ReaderRegistry(); 17 | 18 | public ReaderFactory() { 19 | } 20 | 21 | public static Reader getReader(String code) { 22 | return Optional.ofNullable(COMPONENT_ITEM_REGISTRY.getReader(code)).orElseThrow(() -> new ServiceException(String.format("%s not supported.", code))); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/utils/IDGeneratorUtils.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.spark.etl.utils; 2 | 3 | /** 4 | *

5 | * 用途:生成数字id 6 | *

7 | * 8 | * @author: FXB 9 | * @create: 2019-12-26 08:59 10 | **/ 11 | public class IDGeneratorUtils { 12 | 13 | private static long workerId = 1; 14 | 15 | private static long datacenterId = 1; 16 | 17 | public static long getLongId(){ 18 | return CodeGenerateUtils.genCode(); 19 | } 20 | public static String getStringId(){ 21 | return String.valueOf(CodeGenerateUtils.genCode()); 22 | } 23 | 24 | public static void main(String[] args) { 25 | System.out.println(getStringId()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/writer/Writer.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.spark.etl.writer; 2 | 3 | import com.alibaba.fastjson2.JSONObject; 4 | import org.apache.spark.sql.Dataset; 5 | import org.apache.spark.sql.Row; 6 | 7 | /** 8 | *

9 | * 用途:写数据 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-04-25 09:34 14 | **/ 15 | public interface Writer { 16 | 17 | Boolean writer(JSONObject config,Dataset dataset, JSONObject writer, String logPath); 18 | 19 | String code(); 20 | } 21 | -------------------------------------------------------------------------------- /qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/writer/WriterFactory.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.spark.etl.writer; 2 | 3 | import tech.qiantong.qdata.common.exception.ServiceException; 4 | 5 | import java.util.Optional; 6 | 7 | /** 8 | *

9 | * 用途:输出组件工厂 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-04-25 09:35 14 | **/ 15 | public class WriterFactory { 16 | private static final WriterRegistry COMPONENT_ITEM_REGISTRY = new WriterRegistry(); 17 | 18 | public WriterFactory() { 19 | } 20 | 21 | public static Writer getWriter(String code) { 22 | return Optional.ofNullable(COMPONENT_ITEM_REGISTRY.getWriter(code)).orElseThrow(() -> new ServiceException(String.format("%s not supported.", code))); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/writer/WriterRegistry.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.spark.etl.writer; 2 | 3 | import tech.qiantong.qdata.common.enums.TaskComponentTypeEnum; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | /** 9 | *

10 | * 用途:输出组件注册 11 | *

12 | * 13 | * @author: FXB 14 | * @create: 2025-04-25 09:35 15 | **/ 16 | public class WriterRegistry { 17 | private final Map readerMap = new HashMap<>(); 18 | 19 | public WriterRegistry() { 20 | this.readerMap.put(TaskComponentTypeEnum.DB_WRITER.getCode(), new DBWriter()); 21 | } 22 | public Writer getWriter(String code) { 23 | return this.readerMap.get(code); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/annotation/Anonymous.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 匿名访问不鉴权注解 7 | * 8 | * @author qdata 9 | */ 10 | @Target({ ElementType.METHOD, ElementType.TYPE }) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | public @interface Anonymous 14 | { 15 | } 16 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/annotation/DataScope.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 数据权限过滤注解 7 | * 8 | * @author qdata 9 | */ 10 | @Target(ElementType.METHOD) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | public @interface DataScope 14 | { 15 | /** 16 | * 部门表的别名 17 | */ 18 | public String deptAlias() default ""; 19 | 20 | /** 21 | * 用户表的别名 22 | */ 23 | public String userAlias() default ""; 24 | 25 | /** 26 | * 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来 27 | */ 28 | public String permission() default ""; 29 | } 30 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/annotation/DataSource.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.annotation; 2 | 3 | import tech.qiantong.qdata.common.enums.DataSourceType; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * 自定义多数据源切换注解 9 | * 10 | * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准 11 | * 12 | * @author qdata 13 | */ 14 | @Target({ ElementType.METHOD, ElementType.TYPE }) 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Documented 17 | @Inherited 18 | public @interface DataSource 19 | { 20 | /** 21 | * 切换数据源名称 22 | */ 23 | public DataSourceType value() default DataSourceType.MASTER; 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/annotation/Excels.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Excel注解集 10 | * 11 | * @author qdata 12 | */ 13 | @Target(ElementType.FIELD) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface Excels 16 | { 17 | public Excel[] value(); 18 | } 19 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/annotation/RepeatSubmit.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 自定义注解防止表单重复提交 7 | * 8 | * @author qdata 9 | * 10 | */ 11 | @Inherited 12 | @Target(ElementType.METHOD) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Documented 15 | public @interface RepeatSubmit 16 | { 17 | /** 18 | * 间隔时间(ms),小于此时间视为重复提交 19 | */ 20 | public int interval() default 5000; 21 | 22 | /** 23 | * 提示消息 24 | */ 25 | public String message() default "不允许重复提交,请稍候再试"; 26 | } 27 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/model/RegisterBody.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.core.domain.model; 2 | 3 | /** 4 | * 用户注册对象 5 | * 6 | * @author qdata 7 | */ 8 | public class RegisterBody extends LoginBody 9 | { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/SortablePageParam.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.core.page; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.ToString; 7 | 8 | import java.util.List; 9 | 10 | @Schema(description = "可排序的分页参数") 11 | @Data 12 | @EqualsAndHashCode(callSuper = true) 13 | @ToString(callSuper = true) 14 | public class SortablePageParam extends PageParam { 15 | 16 | @Schema(description = "排序字段") 17 | private List sortingFields; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/SortingField.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.core.page; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * 排序字段 DTO 11 | * 12 | * 类名加了 ing 的原因是,避免和 ES SortField 重名。 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class SortingField implements Serializable { 18 | 19 | /** 20 | * 顺序 - 升序 21 | */ 22 | public static final String ORDER_ASC = "asc"; 23 | /** 24 | * 顺序 - 降序 25 | */ 26 | public static final String ORDER_DESC = "desc"; 27 | 28 | /** 29 | * 字段 30 | */ 31 | private String field; 32 | /** 33 | * 顺序 34 | */ 35 | private String order; 36 | 37 | } 38 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/DataSourceFactory.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database; 2 | 3 | 4 | import tech.qiantong.qdata.common.database.constants.DbQueryProperty; 5 | 6 | public interface DataSourceFactory { 7 | 8 | /** 9 | * 创建数据源实例 10 | * 11 | * @param property 12 | * @return 13 | */ 14 | DbQuery createDbQuery(DbQueryProperty property); 15 | } 16 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/DialectFactory.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database; 2 | 3 | import tech.qiantong.qdata.common.database.constants.DbType; 4 | import tech.qiantong.qdata.common.database.dialect.DialectRegistry; 5 | 6 | /** 7 | * 方言工厂类 8 | * 9 | * @author QianTongDC 10 | * @date 2022-11-14 11 | */ 12 | public class DialectFactory { 13 | 14 | private static final DialectRegistry DIALECT_REGISTRY = new DialectRegistry(); 15 | 16 | public static DbDialect getDialect(DbType dbType) { 17 | return DIALECT_REGISTRY.getDialect(dbType); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/constants/fieldtypes/Kingbase8FieldType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.constants.fieldtypes; 2 | 3 | /** 4 | * 人大金仓(Kingbase8)数据库支持的字段类型枚举 5 | */ 6 | public enum Kingbase8FieldType { 7 | VARCHAR("VARCHAR"), 8 | // 根据Kingbase8实际支持情况,可决定是否包含VARCHAR2 9 | VARCHAR2("VARCHAR2"), 10 | CHAR("CHAR"), 11 | NUMBER("NUMBER"), 12 | DATE("DATE"), 13 | TIMESTAMP("TIMESTAMP"), 14 | CLOB("CLOB"); 15 | 16 | private final String type; 17 | 18 | Kingbase8FieldType(String type) { 19 | this.type = type; 20 | } 21 | 22 | public String getType() { 23 | return type; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/constants/fieldtypes/MysqlFieldType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.constants.fieldtypes; 2 | 3 | /** 4 | * MySQL 数据库支持的字段类型枚举 5 | */ 6 | public enum MysqlFieldType { 7 | VARCHAR("VARCHAR"), 8 | CHAR("CHAR"), 9 | // MySQL 一般采用 INT/DECIMAL 来代替 NUMBER 10 | INT("INT"), 11 | DECIMAL("DECIMAL"), 12 | DATE("DATE"), 13 | DATETIME("DATETIME"), 14 | TIMESTAMP("TIMESTAMP"), 15 | // 使用 TEXT 表示大文本类型 16 | TEXT("TEXT"); 17 | 18 | private final String type; 19 | 20 | MysqlFieldType(String type) { 21 | this.type = type; 22 | } 23 | 24 | public String getType() { 25 | return type; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/constants/fieldtypes/OracleFieldType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.constants.fieldtypes; 2 | 3 | /** 4 | * Oracle 数据库支持的字段类型枚举 5 | */ 6 | public enum OracleFieldType { 7 | VARCHAR("VARCHAR"), 8 | VARCHAR2("VARCHAR2"), 9 | CHAR("CHAR"), 10 | NUMBER("NUMBER"), 11 | DATE("DATE"), 12 | TIMESTAMP("TIMESTAMP"), 13 | CLOB("CLOB"); 14 | 15 | private final String type; 16 | 17 | OracleFieldType(String type) { 18 | this.type = type; 19 | } 20 | 21 | public String getType() { 22 | return type; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/core/DbTable.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.core; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class DbTable { 7 | 8 | /** 9 | * 表名 10 | */ 11 | private String tableName; 12 | 13 | /** 14 | * 表注释 15 | */ 16 | private String tableComment; 17 | } 18 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/core/PageResult.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.core; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.io.Serializable; 7 | import java.util.List; 8 | 9 | @Data 10 | @Accessors(chain = true) 11 | public class PageResult implements Serializable { 12 | 13 | private static final long serialVersionUID = 1L; 14 | 15 | private Integer pageNum; 16 | private Integer pageSize; 17 | private Integer total; 18 | private List data; 19 | 20 | public PageResult(Integer total, List data) { 21 | this.total = total; 22 | this.data = data; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/datasource/DefaultDataSourceFactoryBean.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.datasource; 2 | 3 | 4 | import org.springframework.context.annotation.Primary; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | @Primary // 标记为默认使用的 DataSourceFactory 9 | public class DefaultDataSourceFactoryBean extends AbstractDataSourceFactory { 10 | } 11 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/dialect/MariaDBDialect.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.dialect; 2 | 3 | /** 4 | * MariaDB 数据库方言 5 | * 6 | * @author QianTongDC 7 | * @date 2022-11-14 8 | */ 9 | public class MariaDBDialect extends MySqlDialect { 10 | } 11 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/exception/DataQueryException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.exception; 2 | 3 | public class DataQueryException extends RuntimeException { 4 | 5 | public DataQueryException(String message) { 6 | super(message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/database/query/DefaultDbQueryFactoryBean.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.database.query; 2 | 3 | public class DefaultDbQueryFactoryBean extends AbstractDbQueryFactory { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/BusinessStatus.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | /** 4 | * 操作状态 5 | * 6 | * @author qdata 7 | * 8 | */ 9 | public enum BusinessStatus 10 | { 11 | /** 12 | * 成功 13 | */ 14 | SUCCESS, 15 | 16 | /** 17 | * 失败 18 | */ 19 | FAIL, 20 | } 21 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/ConfigType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | public enum ConfigType { 4 | 5 | FORM("1", "表引导模式"), 6 | SCRIPT("2", "脚本模式"); 7 | 8 | private final String key; 9 | 10 | private final String val; 11 | 12 | ConfigType(String key, String val) { 13 | this.key = key; 14 | this.val = val; 15 | } 16 | 17 | public String getKey() { 18 | return key; 19 | } 20 | 21 | public String getVal() { 22 | return val; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/DataSourceType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | /** 4 | * 数据源 5 | * 6 | * @author qdata 7 | */ 8 | public enum DataSourceType 9 | { 10 | /** 11 | * 主库 12 | */ 13 | MASTER, 14 | 15 | /** 16 | * 从库 17 | */ 18 | SLAVE 19 | } 20 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/DmColumnTypeEnum.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * 达梦数据库字段类型枚举 7 | */ 8 | @Getter 9 | public enum DmColumnTypeEnum { 10 | TINYINT("TINYINT"), 11 | INTEGER("INTEGER"), 12 | BIGINT("BIGINT"), 13 | DECIMAL("DECIMAL"), 14 | NUMERIC("NUMERIC"), 15 | FLOAT("FLOAT"), 16 | DOUBLE("DOUBLE"), 17 | NUMBER("NUMBER"), 18 | CHAR("CHAR"), 19 | VARCHAR("VARCHAR"), 20 | VARCHAR2("VARCHAR2"), 21 | TEXT("TEXT"), 22 | DATE("DATE"), 23 | TIMESTAMP("TIMESTAMP"), 24 | DATETIME("DATETIME"); 25 | 26 | private final String type; 27 | 28 | DmColumnTypeEnum(String type) { 29 | this.type = type; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/LimitType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | /** 4 | * 限流类型 5 | * 6 | * @author qdata 7 | */ 8 | 9 | public enum LimitType 10 | { 11 | /** 12 | * 默认策略全局限流 13 | */ 14 | DEFAULT, 15 | 16 | /** 17 | * 根据请求者IP进行限流 18 | */ 19 | IP 20 | } 21 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/OperatorType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | /** 4 | * 操作人类别 5 | * 6 | * @author qdata 7 | */ 8 | public enum OperatorType 9 | { 10 | /** 11 | * 其它 12 | */ 13 | OTHER, 14 | 15 | /** 16 | * 后台用户 17 | */ 18 | MANAGE, 19 | 20 | /** 21 | * 手机端用户 22 | */ 23 | MOBILE 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/enums/UserStatus.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.enums; 2 | 3 | /** 4 | * 用户状态 5 | * 6 | * @author qdata 7 | */ 8 | public enum UserStatus 9 | { 10 | OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); 11 | 12 | private final String code; 13 | private final String info; 14 | 15 | UserStatus(String code, String info) 16 | { 17 | this.code = code; 18 | this.info = info; 19 | } 20 | 21 | public String getCode() 22 | { 23 | return code; 24 | } 25 | 26 | public String getInfo() 27 | { 28 | return info; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/DemoModeException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception; 2 | 3 | /** 4 | * 演示模式异常 5 | * 6 | * @author qdata 7 | */ 8 | public class DemoModeException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public DemoModeException() 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/ErrorCode.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception; 2 | 3 | import lombok.Data; 4 | import tech.qiantong.qdata.common.exception.enums.GlobalErrorCodeConstants; 5 | 6 | /** 7 | * 错误码对象 8 | * 9 | * 全局错误码,占用 [0, 999], 参见 {@link GlobalErrorCodeConstants} 10 | * 业务异常错误码,占用 [1 000 000 000, +∞),参见 {@link ServiceErrorCodeRange} 11 | * 12 | * TODO 错误码设计成对象的原因,为未来的 i18 国际化做准备 13 | */ 14 | @Data 15 | public class ErrorCode { 16 | 17 | /** 18 | * 错误码 19 | */ 20 | private final Integer code; 21 | /** 22 | * 错误提示 23 | */ 24 | private final String msg; 25 | 26 | public ErrorCode(Integer code, String message) { 27 | this.code = code; 28 | this.msg = message; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/UtilException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception; 2 | 3 | /** 4 | * 工具类异常 5 | * 6 | * @author qdata 7 | */ 8 | public class UtilException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 8247610319171014183L; 11 | 12 | public UtilException(Throwable e) 13 | { 14 | super(e.getMessage(), e); 15 | } 16 | 17 | public UtilException(String message) 18 | { 19 | super(message); 20 | } 21 | 22 | public UtilException(String message, Throwable throwable) 23 | { 24 | super(message, throwable); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/file/FileException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.file; 2 | 3 | import tech.qiantong.qdata.common.exception.base.BaseException; 4 | 5 | /** 6 | * 文件信息异常类 7 | * 8 | * @author qdata 9 | */ 10 | public class FileException extends BaseException 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | public FileException(String code, Object[] args) 15 | { 16 | super("file", code, args, null); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/file/FileNameLengthLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.file; 2 | 3 | /** 4 | * 文件名称超长限制异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class FileNameLengthLimitExceededException extends FileException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public FileNameLengthLimitExceededException(int defaultFileNameLength) 13 | { 14 | super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/file/FileSizeLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.file; 2 | 3 | /** 4 | * 文件名大小限制异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class FileSizeLimitExceededException extends FileException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public FileSizeLimitExceededException(long defaultMaxSize) 13 | { 14 | super("upload.exceed.maxSize", new Object[] { defaultMaxSize }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/BlackListException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | /** 4 | * 黑名单IP异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class BlackListException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public BlackListException() 13 | { 14 | super("login.blocked", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/CaptchaException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | /** 4 | * 验证码错误异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class CaptchaException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaException() 13 | { 14 | super("user.jcaptcha.error", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/CaptchaExpireException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | /** 4 | * 验证码失效异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class CaptchaExpireException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaExpireException() 13 | { 14 | super("user.jcaptcha.expire", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/UserException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | import tech.qiantong.qdata.common.exception.base.BaseException; 4 | 5 | /** 6 | * 用户信息异常类 7 | * 8 | * @author qdata 9 | */ 10 | public class UserException extends BaseException 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | public UserException(String code, Object[] args) 15 | { 16 | super("user", code, args, null); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/UserNotExistsException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | /** 4 | * 用户不存在异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class UserNotExistsException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserNotExistsException() 13 | { 14 | super("user.not.exists", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/UserPasswordNotMatchException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | /** 4 | * 用户密码不正确或不符合规范异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class UserPasswordNotMatchException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordNotMatchException() 13 | { 14 | super("user.password.not.match", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/exception/user/UserPasswordRetryLimitExceedException.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.exception.user; 2 | 3 | /** 4 | * 用户错误最大次数异常类 5 | * 6 | * @author qdata 7 | */ 8 | public class UserPasswordRetryLimitExceedException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordRetryLimitExceedException(int retryLimitCount, int lockTime) 13 | { 14 | super("user.password.retry.limit.exceed", new Object[] { retryLimitCount, lockTime }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/filter/PropertyPreExcludeFilter.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.filter; 2 | 3 | import com.alibaba.fastjson2.filter.SimplePropertyPreFilter; 4 | 5 | /** 6 | * 排除JSON敏感属性 7 | * 8 | * @author qdata 9 | */ 10 | public class PropertyPreExcludeFilter extends SimplePropertyPreFilter 11 | { 12 | public PropertyPreExcludeFilter() 13 | { 14 | } 15 | 16 | public PropertyPreExcludeFilter addExcludes(String... filters) 17 | { 18 | for (int i = 0; i < filters.length; i++) 19 | { 20 | this.getExcludes().add(filters[i]); 21 | } 22 | return this; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/httpClient/HeaderEntity.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.httpClient; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 7 | * @author QianTongDC 8 | * @date 2022/10/7 11:21 9 | * 常量描述类 10 | **/ 11 | @Data 12 | public class HeaderEntity { 13 | private String key; 14 | private String value; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.utils; 2 | 3 | /** 4 | * 处理并记录日志文件 5 | * 6 | * @author qdata 7 | */ 8 | public class LogUtils 9 | { 10 | public static String getBlock(Object msg) 11 | { 12 | if (msg == null) 13 | { 14 | msg = ""; 15 | } 16 | return "[" + msg.toString() + "]"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/utils/MessageUtils.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.utils; 2 | 3 | import org.springframework.context.MessageSource; 4 | import org.springframework.context.i18n.LocaleContextHolder; 5 | import tech.qiantong.qdata.common.utils.spring.SpringUtils; 6 | 7 | /** 8 | * 获取i18n资源文件 9 | * 10 | * @author qdata 11 | */ 12 | public class MessageUtils 13 | { 14 | /** 15 | * 根据消息键和参数 获取消息 委托给spring messageSource 16 | * 17 | * @param code 消息键 18 | * @param args 参数 19 | * @return 获取国际化翻译值 20 | */ 21 | public static String message(String code, Object... args) 22 | { 23 | MessageSource messageSource = SpringUtils.getBean(MessageSource.class); 24 | return messageSource.getMessage(code, args, LocaleContextHolder.getLocale()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/utils/collection/SetUtils.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.utils.collection; 2 | 3 | import cn.hutool.core.collection.CollUtil; 4 | 5 | import java.util.Set; 6 | 7 | /** 8 | * Set 工具类 9 | * 10 | * @author 芋道源码 11 | */ 12 | public class SetUtils { 13 | 14 | @SafeVarargs 15 | public static Set asSet(T... objs) { 16 | return CollUtil.newHashSet(objs); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/utils/json/JsonDataSerializer.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.utils.json; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.JsonSerializer; 5 | import com.fasterxml.jackson.databind.SerializerProvider; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | *

11 | * 用途: 12 | *

13 | * 14 | * @author: FXB 15 | * @create: 2025-02-20 09:34 16 | **/ 17 | public class JsonDataSerializer extends JsonSerializer { 18 | @Override 19 | public void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException { 20 | gen.writeRawValue(value); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/utils/poi/ExcelHandlerAdapter.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.common.utils.poi; 2 | 3 | import org.apache.poi.ss.usermodel.Cell; 4 | import org.apache.poi.ss.usermodel.Workbook; 5 | 6 | /** 7 | * Excel数据格式处理适配器 8 | * 9 | * @author qdata 10 | */ 11 | public interface ExcelHandlerAdapter 12 | { 13 | /** 14 | * 格式化 15 | * 16 | * @param value 单元格数据值 17 | * @param args excel注解args参数组 18 | * @param cell 单元格对象 19 | * @param wb 工作簿对象 20 | * 21 | * @return 处理后的值 22 | */ 23 | Object format(Object value, String[] args, Cell cell, Workbook wb); 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-es/src/main/java/tech/qiantong/qdata/es/esmapper/example/DocumentMapper.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.es.esmapper.example; 2 | 3 | import org.dromara.easyes.core.kernel.BaseEsMapper; 4 | import tech.qiantong.qdata.es.model.example.Document; 5 | 6 | /** 7 | * @author qdata 8 | */ 9 | public interface DocumentMapper extends BaseEsMapper { 10 | } 11 | -------------------------------------------------------------------------------- /qdata-framework/qdata-es/src/main/java/tech/qiantong/qdata/es/esmapper/example/EsTextDocumentMapper.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.es.esmapper.example; 2 | 3 | import org.dromara.easyes.core.kernel.BaseEsMapper; 4 | import tech.qiantong.qdata.es.model.example.EsTextDocument; 5 | 6 | /** 7 | * 全文索引检索实体 8 | * 9 | * @author qdata 10 | */ 11 | public interface EsTextDocumentMapper extends BaseEsMapper 12 | { 13 | } 14 | -------------------------------------------------------------------------------- /qdata-framework/qdata-es/src/main/java/tech/qiantong/qdata/es/model/example/Document.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.es.model.example; 2 | 3 | import lombok.Data; 4 | import org.dromara.easyes.annotation.IndexId; 5 | import org.dromara.easyes.annotation.IndexName; 6 | import org.dromara.easyes.annotation.rely.IdType; 7 | 8 | /** 9 | * @author qdata 10 | */ 11 | @Data 12 | @IndexName("document1_1") 13 | public class Document { 14 | /** 15 | * es中的唯一id 16 | */ 17 | @IndexId(type= IdType.CUSTOMIZE) 18 | private String id; 19 | /** 20 | * 文档标题 21 | */ 22 | private String title; 23 | /** 24 | * 文档内容 25 | */ 26 | private String content; 27 | } 28 | -------------------------------------------------------------------------------- /qdata-framework/qdata-generator/src/main/resources/generator.yml: -------------------------------------------------------------------------------- 1 | # 代码生成 2 | gen: 3 | # 作者 4 | author: qdata 5 | # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool 6 | packageName: tech.qiantong.qdata.module.[moduleName] 7 | # 自动去除表前缀,默认是false 8 | autoRemovePre: false 9 | # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) 10 | tablePrefix: sys_ 11 | -------------------------------------------------------------------------------- /qdata-framework/qdata-mybatis/src/main/java/tech/qiantong/qdata/mybatis/config/DynamicDataSourceAspect.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.mybatis.config; 2 | 3 | import com.baomidou.dynamic.datasource.annotation.DS; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.aspectj.lang.annotation.Aspect; 6 | import org.aspectj.lang.annotation.Before; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * 数据源切换切面 11 | * @author Ming 12 | */ 13 | @Slf4j 14 | @Aspect 15 | @Component 16 | public class DynamicDataSourceAspect { 17 | 18 | @Before("@annotation(ds)") 19 | public void beforeChangeDataSource(DS ds) { 20 | log.info("切换数据源: {}", ds.value()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /qdata-framework/qdata-mybatis/src/main/java/tech/qiantong/qdata/mybatis/config/MasterDataSourceConfig.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.mybatis.config; 2 | 3 | 4 | import org.springframework.beans.factory.annotation.Value; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | * 主数据源配置文件 9 | * @author qdata 10 | */ 11 | @Component 12 | public class MasterDataSourceConfig { 13 | 14 | private static String databaseType; 15 | 16 | @Value("${datasource.type}") 17 | public void setDatabaseType(String databaseType) { 18 | MasterDataSourceConfig.databaseType = databaseType; 19 | } 20 | 21 | public static String getDatabaseType() { 22 | return databaseType; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-framework/qdata-mybatis/src/main/java/tech/qiantong/qdata/mybatis/core/enums/SqlConstants.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.mybatis.core.enums; 2 | 3 | import com.baomidou.mybatisplus.annotation.DbType; 4 | 5 | /** 6 | * SQL相关常量类 7 | * 8 | * @author 芋道源码 9 | */ 10 | public class SqlConstants { 11 | 12 | /** 13 | * 数据库的类型 14 | */ 15 | public static DbType DB_TYPE; 16 | 17 | public static void init(DbType dbType) { 18 | DB_TYPE = dbType; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/domain/Notification.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * 封装支付宝回调通知的参数 8 | */ 9 | @Data 10 | @AllArgsConstructor 11 | public class Notification { 12 | } 13 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/domain/PaymentResponse.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * 类表示支付请求的响应数据。 8 | * 该类包含支付网关返回的结果信息。 9 | * 10 | * @author qdata 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | public class PaymentResponse { 15 | 16 | /** 17 | * 支付状态,表示支付是否成功或失败。 18 | * 例如,“SUCCESS”表示成功,“FAILED”表示失败。 19 | */ 20 | private String status; 21 | 22 | /** 23 | * 支付跳转链接,用户可以通过此链接完成支付。 24 | * 对于需要用户跳转的支付方式(如PC网页支付),此链接尤为重要。 25 | */ 26 | private String paymentUrl; 27 | 28 | /** 29 | * 商户系统中的订单唯一标识符。 30 | * 用于标识该支付响应针对的订单。 31 | */ 32 | private String orderId; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/domain/PaymentStatusResponse.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * 类表示支付状态查询的响应数据。 8 | * 该类包含支付网关返回的订单支付状态信息。 9 | * 10 | * @author qdata 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | public class PaymentStatusResponse { 15 | 16 | /** 17 | * 支付状态,表示订单的当前支付状态。 18 | * 例如,可以使用“SUCCESS”、“PENDING”、“FAILED”等状态来表示。 19 | */ 20 | private String status; 21 | 22 | /** 23 | * 商户系统中的订单唯一标识符。 24 | * 用于标识该支付状态响应针对的订单。 25 | */ 26 | private String orderId; 27 | } 28 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/domain/PaymentType.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.domain; 2 | 3 | /** 4 | * 定义了系统中支持的支付方式。 5 | * 6 | * @author qdata 7 | */ 8 | public enum PaymentType { 9 | 10 | /** 11 | * 支付宝支付 12 | */ 13 | ALIPAY, 14 | 15 | /** 16 | * 微信支付 17 | */ 18 | WECHAT; 19 | 20 | /** 21 | * 根据输入的字符串值获取对应的支付类型。 22 | * 23 | * @param type 输入的字符串,如 "ALIPAY" 或 "WECHAT" 24 | * @return 返回对应的 PaymentType 枚举值,如果没有匹配则返回 null 25 | */ 26 | public static PaymentType fromString(String type) { 27 | for (PaymentType paymentType : PaymentType.values()) { 28 | if (paymentType.name().equalsIgnoreCase(type)) { 29 | return paymentType; 30 | } 31 | } 32 | return null; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/domain/RefundRequest.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.domain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 类表示退款请求的数据。 7 | * 该类包含发起退款操作所需的所有信息。 8 | * 9 | * @author qdata 10 | */ 11 | @Data 12 | public class RefundRequest { 13 | 14 | /** 15 | * 商户系统中的订单唯一标识符。 16 | * 用于标识需要退款的订单。 17 | */ 18 | private String orderId; 19 | 20 | /** 21 | * 退款金额,以货币的最小单位表示(例如人民币的分)。 22 | * 通常退款金额不应超过原支付金额。 23 | */ 24 | private long amount; 25 | 26 | /** 27 | * 支付方式,例如支付宝(ALIPAY)或微信支付(WECHAT)。 28 | * 用于指定通过哪个支付网关处理退款。 29 | */ 30 | private PaymentType paymentType; 31 | } 32 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/domain/RefundResponse.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.domain; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | /** 7 | * 类表示退款请求的响应数据。 8 | * 该类包含支付网关返回的退款结果信息。 9 | * @author qdata 10 | */ 11 | @Data 12 | @AllArgsConstructor 13 | public class RefundResponse { 14 | 15 | /** 16 | * 退款状态,表示退款操作是否成功或失败。 17 | */ 18 | private String status; 19 | 20 | /** 21 | * 商户系统中的订单唯一标识符。 22 | */ 23 | private String orderId; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /qdata-framework/qdata-pay/src/main/java/tech/qiantong/qdata/pay/service/PaymentService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.pay.service; 2 | 3 | import tech.qiantong.qdata.pay.domain.*; 4 | 5 | /** 6 | * 定义了支付模块的核心业务操作。 7 | * 该接口包括发起支付、退款、查询支付状态以及处理支付回调的方法。 8 | * @author qdata 9 | */ 10 | public interface PaymentService { 11 | 12 | /** 13 | * 发起支付请求。 14 | * @param request 包含支付请求的详细信息 15 | * @return 返回支付响应信息 16 | */ 17 | PaymentResponse pay(PaymentRequest request); 18 | 19 | /** 20 | * 发起退款请求。 21 | * @param request 包含退款请求的详细信息 22 | * @return 返回退款响应信息 23 | */ 24 | RefundResponse refund(RefundRequest request); 25 | 26 | /** 27 | * 查询支付状态。 28 | * @param paymentId 支付订单的唯一标识符 29 | * @return 返回支付状态响应信息 30 | */ 31 | PaymentStatusResponse queryStatus(String paymentId); 32 | } 33 | -------------------------------------------------------------------------------- /qdata-framework/qdata-quartz/src/main/java/tech/qiantong/qdata/quartz/task/RyTask.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.quartz.task; 2 | 3 | import org.springframework.stereotype.Component; 4 | import tech.qiantong.qdata.common.utils.StringUtils; 5 | 6 | /** 7 | * 定时任务调度测试 8 | * 9 | * @author qdata 10 | */ 11 | @Component("ryTask") 12 | public class RyTask 13 | { 14 | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) 15 | { 16 | System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); 17 | } 18 | 19 | public void ryParams(String params) 20 | { 21 | System.out.println("执行有参方法:" + params); 22 | } 23 | 24 | public void ryNoParams() 25 | { 26 | System.out.println("执行无参方法"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /qdata-framework/qdata-quartz/src/main/java/tech/qiantong/qdata/quartz/util/QuartzDisallowConcurrentExecution.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.quartz.util; 2 | 3 | import org.quartz.DisallowConcurrentExecution; 4 | import org.quartz.JobExecutionContext; 5 | import tech.qiantong.qdata.quartz.domain.SysJob; 6 | 7 | /** 8 | * 定时任务处理(禁止并发执行) 9 | * 10 | * @author qdata 11 | * 12 | */ 13 | @DisallowConcurrentExecution 14 | public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob 15 | { 16 | @Override 17 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception 18 | { 19 | JobInvokeUtil.invokeMethod(sysJob); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /qdata-framework/qdata-quartz/src/main/java/tech/qiantong/qdata/quartz/util/QuartzJobExecution.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.quartz.util; 2 | 3 | import org.quartz.JobExecutionContext; 4 | import tech.qiantong.qdata.quartz.domain.SysJob; 5 | 6 | /** 7 | * 定时任务处理(允许并发执行) 8 | * 9 | * @author qdata 10 | * 11 | */ 12 | public class QuartzJobExecution extends AbstractQuartzJob 13 | { 14 | @Override 15 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception 16 | { 17 | JobInvokeUtil.invokeMethod(sysJob); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /qdata-framework/qdata-security/src/main/java/tech/qiantong/qdata/security/context/AuthenticationContextHolder.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.security.context; 2 | 3 | import org.springframework.security.core.Authentication; 4 | 5 | /** 6 | * 身份验证信息 7 | * 8 | * @author qdata 9 | */ 10 | public class AuthenticationContextHolder 11 | { 12 | private static final ThreadLocal contextHolder = new ThreadLocal<>(); 13 | 14 | public static Authentication getContext() 15 | { 16 | return contextHolder.get(); 17 | } 18 | 19 | public static void setContext(Authentication context) 20 | { 21 | contextHolder.set(context); 22 | } 23 | 24 | public static void clearContext() 25 | { 26 | contextHolder.remove(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /qdata-framework/qdata-websocket/src/main/java/tech/qiantong/qdata/websocket/WebSocketConfig.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.websocket; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.socket.server.standard.ServerEndpointExporter; 6 | 7 | /** 8 | * websocket 配置 9 | * 10 | * @author qdata 11 | */ 12 | @Configuration 13 | public class WebSocketConfig 14 | { 15 | @Bean 16 | public ServerEndpointExporter serverEndpointExporter() 17 | { 18 | return new ServerEndpointExporter(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /qdata-module-att/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | qData 7 | tech.qiantong 8 | 3.8.8 9 | 10 | 4.0.0 11 | 12 | 13 | qdata-module-att-api 14 | qdata-module-att-biz 15 | 16 | 17 | pom 18 | 19 | qdata-module-att 20 | 21 | 22 | qdata-module-att模块 23 | 24 | 25 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/cat/IAttCatService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.cat; 2 | 3 | /** 4 | *

5 | * 用途: 6 | *

7 | * 8 | * @author: FXB 9 | * @create: 2025-03-11 16:51 10 | **/ 11 | public interface IAttCatService { 12 | 13 | /** 14 | * 根据类目表及类目编码获取类目id 15 | * 16 | * @param tableName 17 | * @param catCode 18 | * @return 19 | */ 20 | Long getCatIdByTableNameAndCatCode(String tableName, String catCode); 21 | } 22 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/client/ClientApi.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.client; 2 | 3 | import tech.qiantong.qdata.module.att.api.client.dto.AttClientRespDTO; 4 | 5 | /** 6 | * 应用 API 接口 7 | * 8 | * @author Ming 9 | */ 10 | public interface ClientApi { 11 | 12 | /** 13 | * 获得应用信息 14 | * 15 | * @param id 应用编号 16 | * @return 应用信息 17 | */ 18 | AttClientRespDTO getClient(Long id); 19 | } 20 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api; 2 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/project/dto/AttProjectUserRelReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.project.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 项目与用户关联关系 DTO 对象 ATT_PROJECT_USER_REL 7 | * 8 | * @author qdata 9 | * @date 2025-02-11 10 | */ 11 | @Data 12 | public class AttProjectUserRelReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 项目空间ID */ 20 | private Long projectId; 21 | 22 | /** 用户ID */ 23 | private Long userId; 24 | 25 | /** 是否有效 */ 26 | private Boolean validFlag; 27 | 28 | /** 删除标志 */ 29 | private Boolean delFlag; 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/project/dto/AttProjectUserRelRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.project.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 项目与用户关联关系 DTO 对象 ATT_PROJECT_USER_REL 7 | * 8 | * @author qdata 9 | * @date 2025-02-11 10 | */ 11 | @Data 12 | public class AttProjectUserRelRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 项目空间ID */ 20 | private Long projectId; 21 | 22 | /** 用户ID */ 23 | private Long userId; 24 | 25 | /** 是否有效 */ 26 | private Boolean validFlag; 27 | 28 | /** 删除标志 */ 29 | private Boolean delFlag; 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/rule/dto/AttCleanRuleReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.rule.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 清洗规则 DTO 对象 ATT_CLEAN_RULE 7 | * 8 | * @author qdata 9 | * @date 2025-01-20 10 | */ 11 | @Data 12 | public class AttCleanRuleReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** 规则ID */ 17 | private Long id; 18 | 19 | /** 规则名称 */ 20 | private String name; 21 | 22 | /** 规则类型 */ 23 | private String type; 24 | 25 | /** 规则级别 */ 26 | private String level; 27 | 28 | /** 规则描述 */ 29 | private String description; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | /** 删除标志 */ 35 | private Boolean delFlag; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/rule/dto/AttCleanRuleRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.rule.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 清洗规则 DTO 对象 ATT_CLEAN_RULE 7 | * 8 | * @author qdata 9 | * @date 2025-01-20 10 | */ 11 | @Data 12 | public class AttCleanRuleRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** 规则ID */ 17 | private Long id; 18 | 19 | /** 规则名称 */ 20 | private String name; 21 | 22 | /** 规则类型 */ 23 | private String type; 24 | 25 | /** 规则级别 */ 26 | private String level; 27 | 28 | /** 规则描述 */ 29 | private String description; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | /** 删除标志 */ 35 | private Boolean delFlag; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/service/cat/IAttApiCatApiService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.service.cat; 2 | 3 | import tech.qiantong.qdata.module.att.api.cat.dto.AttApiCatReqDTO; 4 | import tech.qiantong.qdata.module.att.api.cat.dto.AttApiCatRespDTO; 5 | 6 | import java.util.List; 7 | 8 | public interface IAttApiCatApiService { 9 | 10 | /** 11 | * 获得全部数据服务类目管理列表 服务资源模块使用 12 | * 13 | * @return 数据服务类目管理列表 14 | */ 15 | List getAttApiCatList(AttApiCatReqDTO attApiCatReqDTO); 16 | } 17 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/service/cat/IAttDataDevCatApiService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.service.cat; 2 | 3 | import tech.qiantong.qdata.module.att.api.cat.dto.AttDataDevCatReqDTO; 4 | import tech.qiantong.qdata.module.att.api.cat.dto.AttDataDevCatRespDTO; 5 | 6 | import java.util.List; 7 | 8 | public interface IAttDataDevCatApiService { 9 | 10 | /** 11 | * 获得全部数据开发类目管理列表 12 | * 13 | * @return 数据开发类目管理列表 14 | */ 15 | List getAttDataDevCatApiList(AttDataDevCatReqDTO attDataDevCatReqDTO); 16 | } 17 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/service/cat/IAttDocCatApiService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.service.cat; 2 | 3 | import tech.qiantong.qdata.module.att.api.cat.dto.AttDocCatReqDTO; 4 | import tech.qiantong.qdata.module.att.api.cat.dto.AttDocCatRespDTO; 5 | 6 | import java.util.List; 7 | 8 | public interface IAttDocCatApiService { 9 | 10 | /** 11 | * 获得全部数据资产文档类目管理列表 服务资源模块使用 12 | * 13 | * @return 数据资产文档类目管理列表 14 | */ 15 | List getAttDocCatList(AttDocCatReqDTO reqDTO); 16 | } 17 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/service/cat/IAttTaskCatApiService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.service.cat; 2 | 3 | import tech.qiantong.qdata.module.att.api.cat.dto.AttTaskCatReqDTO; 4 | import tech.qiantong.qdata.module.att.api.cat.dto.AttTaskCatRespDTO; 5 | 6 | import java.util.List; 7 | 8 | public interface IAttTaskCatApiService { 9 | List getAttTaskCatApiList(AttTaskCatReqDTO attTaskCatReqDTO); 10 | } 11 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/theme/dto/AttThemeReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.theme.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 主题 DTO 对象 ATT_THEME 7 | * 8 | * @author qdata 9 | * @date 2025-01-20 10 | */ 11 | @Data 12 | public class AttThemeReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 主题名称 */ 20 | private String name; 21 | 22 | /** 图标url */ 23 | private String icon; 24 | 25 | /** 排序 */ 26 | private Long sortOrder; 27 | 28 | /** 描述 */ 29 | private String description; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | /** 删除标志 */ 35 | private Boolean delFlag; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-api/src/main/java/tech/qiantong/qdata/module/att/api/theme/dto/AttThemeRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.api.theme.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 主题 DTO 对象 ATT_THEME 7 | * 8 | * @author qdata 9 | * @date 2025-01-20 10 | */ 11 | @Data 12 | public class AttThemeRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 主题名称 */ 20 | private String name; 21 | 22 | /** 图标url */ 23 | private String icon; 24 | 25 | /** 排序 */ 26 | private Long sortOrder; 27 | 28 | /** 描述 */ 29 | private String description; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | /** 删除标志 */ 35 | private Boolean delFlag; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/java/tech/qiantong/qdata/module/att/controller/admin/cat/vo/AttAssetCatPageReqVO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.controller.admin.cat.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import tech.qiantong.qdata.common.core.page.PageParam; 6 | 7 | /** 8 | * 数据资产类目管理 Request VO 对象 ATT_ASSET_CAT 9 | * 10 | * @author qdata 11 | * @date 2025-01-20 12 | */ 13 | @Schema(description = "数据资产类目管理 Request VO") 14 | @Data 15 | public class AttAssetCatPageReqVO extends PageParam { 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | @Schema(description = "类别名称", example = "") 20 | private String name; 21 | @Schema(description = "层级编码", example = "") 22 | private String code; 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/java/tech/qiantong/qdata/module/att/controller/admin/cat/vo/AttModelCatPageReqVO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.controller.admin.cat.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import tech.qiantong.qdata.common.core.page.PageParam; 6 | 7 | /** 8 | * 逻辑模型类目管理 Request VO 对象 ATT_MODEL_CAT 9 | * 10 | * @author qdata 11 | * @date 2025-01-20 12 | */ 13 | @Schema(description = "逻辑模型类目管理 Request VO") 14 | @Data 15 | public class AttModelCatPageReqVO extends PageParam { 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | @Schema(description = "类别名称", example = "") 20 | private String name; 21 | @Schema(description = "类别编码", example = "") 22 | private String code; 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/java/tech/qiantong/qdata/module/att/controller/admin/project/vo/AttProjectPageReqVO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.controller.admin.project.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | import tech.qiantong.qdata.common.core.page.PageParam; 6 | 7 | /** 8 | * 项目 Request VO 对象 ATT_PROJECT 9 | * 10 | * @author shu 11 | * @date 2025-01-20 12 | */ 13 | @Schema(description = "项目 Request VO") 14 | @Data 15 | public class AttProjectPageReqVO extends PageParam { 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | @Schema(description = "项目名称", example = "") 20 | private String name; 21 | @Schema(description = "负责人", example = "") 22 | private Long managerId; 23 | 24 | 25 | 26 | 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/java/tech/qiantong/qdata/module/att/dal/mapper/cat/AttCatMapper.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att.dal.mapper.cat; 2 | 3 | import org.apache.ibatis.annotations.Param; 4 | import org.springframework.stereotype.Repository; 5 | 6 | /** 7 | *

8 | * 用途: 9 | *

10 | * 11 | * @author: FXB 12 | * @create: 2025-03-11 16:54 13 | **/ 14 | @Repository 15 | public interface AttCatMapper { 16 | 17 | Long getCatIdByTableNameAndCatCode(@Param("tableName") String tableName, @Param("catCode") String catCode); 18 | } 19 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/java/tech/qiantong/qdata/module/att/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.att; 2 | -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/resources/application-att-dev.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-att/qdata-module-att-biz/src/main/resources/application-att-dev.yml -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/resources/application-att-prod.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-att/qdata-module-att-biz/src/main/resources/application-att-prod.yml -------------------------------------------------------------------------------- /qdata-module-att/qdata-module-att-biz/src/main/resources/mapper/att/cat/AttCatMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /qdata-module-da/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | qData 7 | tech.qiantong 8 | 3.8.8 9 | 10 | 4.0.0 11 | 12 | 13 | qdata-module-da-api 14 | qdata-module-da-biz 15 | 16 | 17 | pom 18 | 19 | qdata-module-da 20 | 21 | 22 | qdata-module-da模块 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/assetchild/projectRel/dto/DaAssetProjectRelReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.assetchild.projectRel.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据资产与项目关联关系 DTO 对象 DA_ASSET_PROJECT_REL 7 | * 8 | * @author qdata 9 | * @date 2025-04-18 10 | */ 11 | @Data 12 | public class DaAssetProjectRelReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 资产id */ 20 | private Long assetId; 21 | 22 | /** 项目id */ 23 | private Long projectId; 24 | 25 | /** 项目编码 */ 26 | private String projectCode; 27 | 28 | /** 是否有效 */ 29 | private Boolean validFlag; 30 | 31 | /** 删除标志 */ 32 | private Boolean delFlag; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/assetchild/projectRel/dto/DaAssetProjectRelRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.assetchild.projectRel.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据资产与项目关联关系 DTO 对象 DA_ASSET_PROJECT_REL 7 | * 8 | * @author qdata 9 | * @date 2025-04-18 10 | */ 11 | @Data 12 | public class DaAssetProjectRelRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 资产id */ 20 | private Long assetId; 21 | 22 | /** 项目id */ 23 | private Long projectId; 24 | 25 | /** 项目编码 */ 26 | private String projectCode; 27 | 28 | /** 是否有效 */ 29 | private Boolean validFlag; 30 | 31 | /** 删除标志 */ 32 | private Boolean delFlag; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/assetchild/theme/dto/DaAssetThemeRelReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.assetchild.theme.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据资产-主题关联关系 DTO 对象 DA_ASSET_THEME_REL 7 | * 8 | * @author qdata 9 | * @date 2025-04-14 10 | */ 11 | @Data 12 | public class DaAssetThemeRelReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 资产id */ 20 | private Long assetId; 21 | 22 | /** 主题id */ 23 | private Long themeId; 24 | 25 | /** 是否有效 */ 26 | private Boolean validFlag; 27 | 28 | /** 删除标志 */ 29 | private Boolean delFlag; 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/assetchild/theme/dto/DaAssetThemeRelRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.assetchild.theme.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据资产-主题关联关系 DTO 对象 DA_ASSET_THEME_REL 7 | * 8 | * @author qdata 9 | * @date 2025-04-14 10 | */ 11 | @Data 12 | public class DaAssetThemeRelRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 资产id */ 20 | private Long assetId; 21 | 22 | /** 主题id */ 23 | private Long themeId; 24 | 25 | /** 是否有效 */ 26 | private Boolean validFlag; 27 | 28 | /** 删除标志 */ 29 | private Boolean delFlag; 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/datasource/dto/DaDatasourceProjectRelReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.datasource.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据源与项目关联关系 DTO 对象 DA_DATASOURCE_PROJECT_REL 7 | * 8 | * @author qdata 9 | * @date 2025-03-13 10 | */ 11 | @Data 12 | public class DaDatasourceProjectRelReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 项目id */ 20 | private Long projectId; 21 | 22 | /** 项目编码 */ 23 | private String projectCode; 24 | 25 | /** 数据源id */ 26 | private Long datasourceId; 27 | 28 | /** 描述 */ 29 | private String description; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/datasource/dto/DaDatasourceProjectRelRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.datasource.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据源与项目关联关系 DTO 对象 DA_DATASOURCE_PROJECT_REL 7 | * 8 | * @author qdata 9 | * @date 2025-03-13 10 | */ 11 | @Data 12 | public class DaDatasourceProjectRelRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 项目id */ 20 | private Long projectId; 21 | 22 | /** 项目编码 */ 23 | private String projectCode; 24 | 25 | /** 数据源id */ 26 | private Long datasourceId; 27 | 28 | /** 描述 */ 29 | private String description; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/datasource/dto/DatasourceCreaTeTableListReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.datasource.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class DatasourceCreaTeTableListReqDTO { 9 | 10 | /** 数据源类型 */ 11 | private String datasourceType; 12 | 13 | /** 数据源配置(json字符串) */ 14 | private String datasourceConfig; 15 | 16 | /** IP */ 17 | private String ip; 18 | 19 | /** 端口号 */ 20 | private Long port; 21 | 22 | 23 | private List dtoList; 24 | } 25 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api; 2 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/service/asset/IDaAssetApiOutService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.service.asset; 2 | 3 | import tech.qiantong.qdata.module.da.api.asset.dto.DaAssetReqDTO; 4 | import tech.qiantong.qdata.module.da.api.asset.dto.DaAssetRespDTO; 5 | 6 | /** 7 | * 数据资产Service接口 8 | * 9 | * @author lhs 10 | * @date 2025-01-21 11 | */ 12 | public interface IDaAssetApiOutService { 13 | 14 | public DaAssetRespDTO insertDaAsset(DaAssetReqDTO daAssetReqDTO); 15 | 16 | /** 17 | * 根据类目编码查询数量 18 | * 19 | * @return 20 | */ 21 | Long getCountByCatCode(String catCode); 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/service/assetchild/api/IDaApiOutService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.service.assetchild.api; 2 | 3 | import javax.servlet.http.HttpServletResponse; 4 | import java.util.Map; 5 | 6 | public interface IDaApiOutService { 7 | 8 | void executeServiceForwarding(HttpServletResponse response, Long apiId, Map params); 9 | } 10 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/service/assetchild/gis/IDaAssetGisOutService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.service.assetchild.gis; 2 | 3 | import javax.servlet.http.HttpServletResponse; 4 | import java.util.Map; 5 | 6 | public interface IDaAssetGisOutService { 7 | void executeServiceForwarding(HttpServletResponse response, Long apiId, Map params); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-api/src/main/java/tech/qiantong/qdata/module/da/api/service/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da.api.service; -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-biz/src/lib/artemis-http-client-1.1.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-da/qdata-module-da-biz/src/lib/artemis-http-client-1.1.8.jar -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-biz/src/main/java/tech/qiantong/qdata/module/da/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.da; 2 | -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-biz/src/main/resources/application-da-dev.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-da/qdata-module-da-biz/src/main/resources/application-da-dev.yml -------------------------------------------------------------------------------- /qdata-module-da/qdata-module-da-biz/src/main/resources/application-da-prod.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-da/qdata-module-da-biz/src/main/resources/application-da-prod.yml -------------------------------------------------------------------------------- /qdata-module-dp/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | qData 7 | tech.qiantong 8 | 3.8.8 9 | 10 | 4.0.0 11 | 12 | 13 | qdata-module-dp-api 14 | qdata-module-dp-biz 15 | 16 | 17 | pom 18 | 19 | qdata-module-dp 20 | 21 | 22 | qdata-module-dp模块 23 | 24 | 25 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/codeMap/dto/DpCodeMapReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.codeMap.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据元代码映射 DTO 对象 DP_CODE_MAP 7 | * 8 | * @author qdata 9 | * @date 2025-01-21 10 | */ 11 | @Data 12 | public class DpCodeMapReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 数据元id */ 20 | private String dataElemId; 21 | 22 | /** 原始值 */ 23 | private String originalValue; 24 | 25 | /** 代码名 */ 26 | private String codeName; 27 | 28 | /** 代码值 */ 29 | private String codeValue; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | /** 删除标志 */ 35 | private Boolean delFlag; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/codeMap/dto/DpCodeMapRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.codeMap.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据元代码映射 DTO 对象 DP_CODE_MAP 7 | * 8 | * @author qdata 9 | * @date 2025-01-21 10 | */ 11 | @Data 12 | public class DpCodeMapRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 数据元id */ 20 | private String dataElemId; 21 | 22 | /** 原始值 */ 23 | private String originalValue; 24 | 25 | /** 代码名 */ 26 | private String codeName; 27 | 28 | /** 代码值 */ 29 | private String codeValue; 30 | 31 | /** 是否有效 */ 32 | private Boolean validFlag; 33 | 34 | /** 删除标志 */ 35 | private Boolean delFlag; 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/dataElem/dto/DpDataElemCodeReqDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.dataElem.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据元代码 DTO 对象 DP_DATA_ELEM_CODE 7 | * 8 | * @author qdata 9 | * @date 2025-01-21 10 | */ 11 | @Data 12 | public class DpDataElemCodeReqDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 数据元id */ 20 | private String dataElemId; 21 | 22 | /** 代码值 */ 23 | private String codeValue; 24 | 25 | /** 代码名称 */ 26 | private String codeName; 27 | 28 | /** 是否有效 */ 29 | private Boolean validFlag; 30 | 31 | /** 删除标志 */ 32 | private Boolean delFlag; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/dataElem/dto/DpDataElemCodeRespDTO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.dataElem.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 数据元代码 DTO 对象 DP_DATA_ELEM_CODE 7 | * 8 | * @author qdata 9 | * @date 2025-01-21 10 | */ 11 | @Data 12 | public class DpDataElemCodeRespDTO { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | /** ID */ 17 | private Long id; 18 | 19 | /** 数据元id */ 20 | private String dataElemId; 21 | 22 | /** 代码值 */ 23 | private String codeValue; 24 | 25 | /** 代码名称 */ 26 | private String codeName; 27 | 28 | /** 是否有效 */ 29 | private Boolean validFlag; 30 | 31 | /** 删除标志 */ 32 | private Boolean delFlag; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api; 2 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/service/dataElem/IDataElemApiService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.service.dataElem; 2 | 3 | /** 4 | *

5 | * 用途:数据元Service接口 6 | *

7 | * 8 | * @author: FXB 9 | * @create: 2025-02-05 18:03 10 | **/ 11 | public interface IDataElemApiService { 12 | /** 13 | * 根据类目编码查询数量 14 | * 15 | * @return 16 | */ 17 | Long getCountByCatCode(String catCode); 18 | } 19 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/service/dataElem/IDataElemRuleRelService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.service.dataElem; 2 | 3 | import tech.qiantong.qdata.module.dp.api.dataElem.dto.DpDataElemRuleRelRespDTO; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | *

9 | * 用途: 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-03-03 18:06 14 | **/ 15 | public interface IDataElemRuleRelService { 16 | /** 17 | * 通过数据元id列表查询数据元规则关联信息 18 | * 19 | * @param dataElemIdList 20 | * @return 21 | */ 22 | List listByDataElemIdList(List dataElemIdList,String ruleType); 23 | } 24 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-api/src/main/java/tech/qiantong/qdata/module/dp/api/service/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp.api.service; -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-biz/src/main/java/tech/qiantong/qdata/module/dp/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dp; 2 | -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-biz/src/main/resources/application-dp-dev.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-dp/qdata-module-dp-biz/src/main/resources/application-dp-dev.yml -------------------------------------------------------------------------------- /qdata-module-dp/qdata-module-dp-biz/src/main/resources/application-dp-prod.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-dp/qdata-module-dp-biz/src/main/resources/application-dp-prod.yml -------------------------------------------------------------------------------- /qdata-module-dpp/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | qData 7 | tech.qiantong 8 | 3.8.8 9 | 10 | 4.0.0 11 | 12 | 13 | qdata-module-dpp-api 14 | qdata-module-dpp-biz 15 | 16 | 17 | pom 18 | 19 | qdata-module-dpp 20 | 21 | 22 | qdata-module-dpp模块 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-api/src/main/java/tech/qiantong/qdata/module/dpp/api/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.api; 2 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-api/src/main/java/tech/qiantong/qdata/module/dpp/api/service/etl/DppEtlTaskService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.api.service.etl; 2 | 3 | import java.util.List; 4 | 5 | public interface DppEtlTaskService { 6 | 7 | /** 8 | * 查询数据源主键集合是否被引用 9 | * @param datasourceIdList 数据源id集合 10 | * @return 条数 11 | */ 12 | int checkTaskIdInDatasource(List datasourceIdList,List projectIdList); 13 | 14 | /** 15 | * 查询资产主键集合是否被引用 16 | * @param assetIdList 资产主键集合 17 | * @return 条数 18 | */ 19 | int checkTaskIdInAsset(List assetIdList); 20 | } 21 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/java/tech/qiantong/qdata/module/dpp/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp; 2 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/java/tech/qiantong/qdata/module/dpp/utils/ds/component/ComponentFactory.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.utils.ds.component; 2 | 3 | import tech.qiantong.qdata.common.exception.ServiceException; 4 | 5 | import java.util.Optional; 6 | 7 | /** 8 | *

9 | * 用途: 10 | *

11 | * 12 | * @author: FXB 13 | * @create: 2025-03-12 17:47 14 | **/ 15 | public class ComponentFactory { 16 | private static final ComponentRegistry COMPONENT_ITEM_REGISTRY = new ComponentRegistry(); 17 | 18 | public ComponentFactory() { 19 | } 20 | 21 | public static ComponentItem getComponentItem(String code) { 22 | return Optional.ofNullable(COMPONENT_ITEM_REGISTRY.getComponentItem(code)).orElseThrow(() -> new ServiceException(String.format("%s not supported.", code))); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/java/tech/qiantong/qdata/module/dpp/utils/model/DsResource.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.utils.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | *

12 | * 用途: 13 | *

14 | * 15 | * @author: FXB 16 | * @create: 2025-04-29 15:24 17 | **/ 18 | @Data 19 | @Builder 20 | @NoArgsConstructor 21 | @AllArgsConstructor 22 | public class DsResource implements Serializable { 23 | private static final long serialVersionUID = -2629332208479320L; 24 | 25 | private String resourceName; 26 | } 27 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/java/tech/qiantong/qdata/module/dpp/utils/taskParamsCheck/AbstractParameters.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.utils.taskParamsCheck; 2 | 3 | public abstract class AbstractParameters { 4 | 5 | /** 6 | * 校验参数是否有效 7 | * @return true 表示有效,false 表示无效 8 | */ 9 | public abstract boolean checkParameters(); 10 | } 11 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/java/tech/qiantong/qdata/module/dpp/utils/taskParamsCheck/DataXParameters.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.utils.taskParamsCheck; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | public class DataXParameters extends AbstractParameters { 6 | 7 | private String someDataXParam; 8 | 9 | @Override 10 | public boolean checkParameters() { 11 | // 假设某个参数不能为空 12 | return StringUtils.isNotEmpty(someDataXParam); 13 | } 14 | 15 | // Getter and Setter 16 | public String getSomeDataXParam() { 17 | return someDataXParam; 18 | } 19 | 20 | public void setSomeDataXParam(String someDataXParam) { 21 | this.someDataXParam = someDataXParam; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/java/tech/qiantong/qdata/module/dpp/utils/taskParamsCheck/SparkParameters.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.dpp.utils.taskParamsCheck; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | 5 | public class SparkParameters extends AbstractParameters { 6 | 7 | private String sparkJobName; 8 | 9 | @Override 10 | public boolean checkParameters() { 11 | // 假设 sparkJobName 不为空 12 | return StringUtils.isNotEmpty(sparkJobName); 13 | } 14 | 15 | // Getter and Setter 16 | public String getSparkJobName() { 17 | return sparkJobName; 18 | } 19 | 20 | public void setSparkJobName(String sparkJobName) { 21 | this.sparkJobName = sparkJobName; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/resources/application-dp-dev.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-dpp/qdata-module-dpp-biz/src/main/resources/application-dp-dev.yml -------------------------------------------------------------------------------- /qdata-module-dpp/qdata-module-dpp-biz/src/main/resources/application-dp-prod.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-dpp/qdata-module-dpp-biz/src/main/resources/application-dp-prod.yml -------------------------------------------------------------------------------- /qdata-module-ds/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | qData 7 | tech.qiantong 8 | 3.8.8 9 | 10 | 4.0.0 11 | 12 | 13 | qdata-module-ds-api 14 | qdata-module-ds-biz 15 | 16 | 17 | pom 18 | 19 | qdata-module-ds 20 | 21 | 22 | qdata-module-ds模块 23 | 24 | 25 | -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-api/src/main/java/tech/qiantong/qdata/module/ds/api/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.ds.api; 2 | -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-biz/src/main/java/tech/qiantong/qdata/module/ds/controller/admin/api/vo/SqlParseVo.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.ds.controller.admin.api.vo; 2 | 3 | import lombok.Data; 4 | import tech.qiantong.qdata.module.ds.dal.dataobject.dto.ReqParam; 5 | import tech.qiantong.qdata.module.ds.dal.dataobject.dto.ResParam; 6 | 7 | import java.io.Serializable; 8 | import java.util.List; 9 | 10 | @Data 11 | public class SqlParseVo implements Serializable { 12 | 13 | private static final long serialVersionUID=1L; 14 | 15 | private List reqParams; 16 | private List resParams; 17 | } 18 | -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-biz/src/main/java/tech/qiantong/qdata/module/ds/dal/dataobject/api/SqlParseDto.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.ds.dal.dataobject.api; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.constraints.NotBlank; 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class SqlParseDto implements Serializable { 10 | 11 | private static final long serialVersionUID=1L; 12 | 13 | @NotBlank(message = "数据源不能为空") 14 | private String sourceId; 15 | 16 | @NotBlank(message = "SQL不能为空") 17 | private String sqlText; 18 | } 19 | -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-biz/src/main/java/tech/qiantong/qdata/module/ds/handler/WebConfig.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.ds.handler; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.core.Ordered; 6 | import org.springframework.core.annotation.Order; 7 | import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; 8 | 9 | /** 10 | ** 确保动态注册的请求映射优先于 @RequestMapping("services/**") 11 | */ 12 | @Configuration 13 | public class WebConfig { 14 | 15 | @Bean 16 | @Order(Ordered.HIGHEST_PRECEDENCE) 17 | public RequestMappingHandlerMapping customRequestMappingHandlerMapping() { 18 | return new RequestMappingHandlerMapping(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-biz/src/main/java/tech/qiantong/qdata/module/ds/package-info.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.ds; 2 | -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-biz/src/main/resources/application-dp-dev.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-ds/qdata-module-ds-biz/src/main/resources/application-dp-dev.yml -------------------------------------------------------------------------------- /qdata-module-ds/qdata-module-ds-biz/src/main/resources/application-dp-prod.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-module-ds/qdata-module-ds-biz/src/main/resources/application-dp-prod.yml -------------------------------------------------------------------------------- /qdata-module-system/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | qData 6 | tech.qiantong 7 | 3.8.8 8 | 9 | 4.0.0 10 | 11 | 12 | qdata-module-system-api 13 | qdata-module-system-biz 14 | 15 | 16 | pom 17 | 18 | qdata-module-system 19 | 20 | 21 | qdata-module-system模块 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-api/src/main/java/tech/qiantong/qdata/module/system/domain/dto/PageDto.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.domain.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 分页对象 7 | */ 8 | @Data 9 | public class PageDto { 10 | 11 | /** 12 | * 页码 13 | */ 14 | 15 | private Integer pageNum; 16 | /** 17 | * 每页的数量 18 | */ 19 | 20 | private Integer pageSize; 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-api/src/main/java/tech/qiantong/qdata/module/system/domain/dto/RoleDto.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.domain.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Data 9 | @Builder 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class RoleDto { 13 | 14 | /** 15 | * 角色名字 16 | */ 17 | private String name; 18 | private String id; 19 | private Integer status; 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-api/src/main/java/tech/qiantong/qdata/module/system/domain/vo/CsvColumnReqVO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.domain.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | *

10 | * 用途: 11 | *

12 | * 13 | * @author: FXB 14 | * @create: 2025-03-13 15:49 15 | **/ 16 | @Data 17 | public class CsvColumnReqVO implements Serializable { 18 | private static final long serialVersionUID = 5343220360439610872L; 19 | 20 | @Schema(description = "csv文件路径") 21 | private String file; 22 | } 23 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-api/src/main/java/tech/qiantong/qdata/module/system/domain/vo/ExcelColumnReqVO.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.domain.vo; 2 | 3 | import io.swagger.v3.oas.annotations.media.Schema; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | *

10 | * 用途: 11 | *

12 | * 13 | * @author: FXB 14 | * @create: 2025-03-13 15:49 15 | **/ 16 | @Data 17 | public class ExcelColumnReqVO implements Serializable { 18 | private static final long serialVersionUID = 5343220360439610872L; 19 | 20 | @Schema(description = "Excel文件路径") 21 | private String excelFile; 22 | 23 | @Schema(description = "列开始行") 24 | private Integer startColumn; 25 | 26 | @Schema(description = "数据开始行") 27 | private Integer startData; 28 | } 29 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-api/src/main/java/tech/qiantong/qdata/module/system/service/ISysMessageService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.service; 2 | 3 | import tech.qiantong.qdata.module.system.api.message.dto.MessageSaveReqDTO; 4 | 5 | public interface ISysMessageService { 6 | public Boolean send(Long templateId, MessageSaveReqDTO messageSaveReqDTO, Object entity); 7 | 8 | /** 9 | * 数据发现使用 10 | * @param receiverId 11 | * @param entity 12 | * @return 13 | */ 14 | public Boolean sendDbChangeMessage( Long receiverId, Object entity); 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-api/src/main/java/tech/qiantong/qdata/module/system/service/ISystemDictDataService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.service; 2 | 3 | import tech.qiantong.qdata.common.core.domain.entity.SysDictData; 4 | 5 | import java.util.List; 6 | 7 | public interface ISystemDictDataService { 8 | 9 | /** 10 | * 根据字典类型查询字典数据 提供服务资源门户字典值查询 11 | * 12 | * @param dictType 字典类型 13 | * @return 字典数据集合信息 14 | */ 15 | public List selectDictDataByType(String dictType); 16 | } 17 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/java/tech/qiantong/qdata/module/system/dal/mapper/auth/RelUserAuthProductMapper.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.dal.mapper.auth; 2 | 3 | import com.github.yulichang.base.MPJBaseMapper; 4 | import tech.qiantong.qdata.module.system.dal.dataobject.auth.RelUserAuthProductDO; 5 | 6 | /** 7 | * 用户与认证中心关系Mapper接口 8 | * 9 | * @author qdata 10 | * @date 2024-11-07 11 | */ 12 | public interface RelUserAuthProductMapper extends MPJBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/java/tech/qiantong/qdata/module/system/dal/mapper/message/MessageMapper.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.dal.mapper.message; 2 | 3 | import com.github.yulichang.base.MPJBaseMapper; 4 | import tech.qiantong.qdata.module.system.dal.dataobject.message.MessageDO; 5 | 6 | /** 7 | * 消息Mapper接口 8 | * 9 | * @author qdata 10 | * @date 2024-10-31 11 | */ 12 | public interface MessageMapper extends MPJBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/java/tech/qiantong/qdata/module/system/dal/mapper/message/MessageTemplateMapper.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.dal.mapper.message; 2 | 3 | import com.github.yulichang.base.MPJBaseMapper; 4 | import tech.qiantong.qdata.module.system.dal.dataobject.message.MessageTemplateDO; 5 | 6 | /** 7 | * 消息模板Mapper接口 8 | * 9 | * @author qdata 10 | * @date 2024-10-31 11 | */ 12 | public interface MessageTemplateMapper extends MPJBaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/java/tech/qiantong/qdata/module/system/service/auth/IRelUserAuthProductService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.service.auth; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import tech.qiantong.qdata.module.system.dal.dataobject.auth.RelUserAuthProductDO; 5 | 6 | /** 7 | * 用户与认证中心关系Service接口 8 | * 9 | * @author qdata 10 | * @date 2024-11-07 11 | */ 12 | public interface IRelUserAuthProductService extends IService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/java/tech/qiantong/qdata/module/system/service/auth/SysSyncDataService.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.module.system.service.auth; 2 | 3 | import com.alibaba.fastjson2.JSONObject; 4 | import tech.qiantong.qdata.common.core.domain.AjaxResult; 5 | 6 | /** 7 | * 接收认证平台推送的数据 8 | */ 9 | public interface SysSyncDataService { 10 | public AjaxResult syncData(JSONObject jsonObject); 11 | } 12 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/resources/application-system-dev.yml: -------------------------------------------------------------------------------- 1 | # 统一认证中心 2 | oauth2: 3 | redis-prefix: "idhub-clientToken" 4 | clientId: 9d04db60ab904313a43ebb78c9f027c1 5 | clientSecret: 82e25a80db5f4a13afb2ee8b2cf6d08b 6 | serverUrl: http://127.0.0.1:8899 7 | redirect401Url: http://127.0.0.1/401 8 | -------------------------------------------------------------------------------- /qdata-module-system/qdata-module-system-biz/src/main/resources/application-system-prod.yml: -------------------------------------------------------------------------------- 1 | # 统一认证中心 2 | oauth2: 3 | redis-prefix: "idhub-clientToken" 4 | clientId: 9d04db60ab904313a43ebb78c9f027c1 5 | clientSecret: 82e25a80db5f4a13afb2ee8b2cf6d08b 6 | serverUrl: http://127.0.0.1:8899 7 | redirect401Url: http://127.0.0.1/401 8 | -------------------------------------------------------------------------------- /qdata-server/src/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8u102-jre 2 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 3 | RUN echo 'Asia/Shanghai' >/etc/timezone 4 | RUN mkdir /usr/app 5 | RUN mkdir /usr/app/jar 6 | 7 | COPY ./*.jar /usr/app/jar/qdata.jar 8 | 9 | CMD ["--server.port=8080"] 10 | 11 | EXPOSE 8080 12 | 13 | CMD sleep 1;cd /usr/app/jar;java -Dspring.profiles.active=prod -Dqdata.profile=/home/qdata/uploadPath/ -jar qdata.jar 14 | -------------------------------------------------------------------------------- /qdata-server/src/docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.2" 2 | 3 | services: 4 | qdata: 5 | hostname: qdata 6 | image: qdata 7 | restart: always 8 | environment: 9 | - TZ=Asia/Shanghai 10 | ports: 11 | - "8081:8080" 12 | volumes: 13 | - /etc/localtime:/etc/localtime:ro 14 | - /data/ds/logs:/opt/dolphinscheduler/logs 15 | - /data/qdata/resources/tmp:/tmp 16 | - /data/resources/file:/home/qdata/uploadPath 17 | -------------------------------------------------------------------------------- /qdata-server/src/docker/restart.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | path="/opt/qdata" 4 | image="qdata" 5 | 6 | cd ${path} 7 | docker-compose stop ${image} && docker-compose rm -f ${image} && docker rmi ${image} 8 | docker build -t ${image}:latest . 9 | docker-compose create ${image} && docker-compose start ${image} 10 | -------------------------------------------------------------------------------- /qdata-server/src/main/java/tech/qiantong/qdata/server/QDataServletInitializer.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.server; 2 | 3 | import org.springframework.boot.builder.SpringApplicationBuilder; 4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 5 | 6 | /** 7 | * web容器中进行部署 8 | * 9 | * @author qdata 10 | */ 11 | public class QDataServletInitializer extends SpringBootServletInitializer 12 | { 13 | @Override 14 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 15 | { 16 | return application.sources(QDataApplication.class); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /qdata-server/src/main/java/tech/qiantong/qdata/server/controller/DefaultController.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.server.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RestController; 5 | import tech.qiantong.qdata.common.core.domain.AjaxResult; 6 | 7 | 8 | /** 9 | * 默认 Controller,解决部分 module 未开启时的 404 提示。 10 | * 例如说,/bpm/** 路径,工作流 11 | * 12 | * @author qdata 13 | */ 14 | @RestController 15 | public class DefaultController { 16 | 17 | @RequestMapping({"/dev-api/example/**", "/prod-api/example/**", "/example/**"}) 18 | public AjaxResult example404() { 19 | return AjaxResult.error("[示例模块 qdata-module-example - 已禁用]"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /qdata-server/src/main/resources/META-INF/spring-devtools.properties: -------------------------------------------------------------------------------- 1 | restart.include.json=/com.alibaba.fastjson2.*.jar -------------------------------------------------------------------------------- /qdata-server/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | Application Version: ${qdata.version} 2 | Spring Boot Version: ${spring-boot.version} 3 | _ _ _ _ _ 4 | __ _(_) __ _ _ __ | |_ ___ _ __ __ _| | _____ (_|_) 5 | / _` | |/ _` | '_ \| __/ _ \| '_ \ / _` | |/ / _ \| | | 6 | | (_| | | (_| | | | | || (_) | | | | (_| | < __/| | | 7 | \__, |_|\__,_|_| |_|\__\___/|_| |_|\__, |_|\_\___|/ |_| 8 | |_| |___/ |__/ 9 | -------------------------------------------------------------------------------- /qdata-server/src/test/java/tech/qiantong/qdata/server/IDaDatasourceTest.java: -------------------------------------------------------------------------------- 1 | package tech.qiantong.qdata.server; 2 | 3 | 4 | import org.junit.runner.RunWith; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.test.context.SpringBootTest; 7 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 8 | import tech.qiantong.qdata.module.da.service.datasource.IDaDatasourceService; 9 | 10 | @RunWith(SpringJUnit4ClassRunner.class) 11 | @SpringBootTest(classes = QDataApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 12 | public class IDaDatasourceTest { 13 | 14 | @Autowired 15 | private IDaDatasourceService iDaDatasourceService; 16 | } 17 | -------------------------------------------------------------------------------- /qdata-ui/.env.development: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VITE_APP_TITLE = 千数平台 3 | 4 | # 开发环境配置 5 | VITE_APP_ENV = 'development' 6 | 7 | # 千数平台/开发环境 8 | VITE_APP_BASE_API = '/dev-api' 9 | 10 | # 工作流/开发环境 11 | VITE_APP_FLOW_API = 'http://localhost:26859' 12 | 13 | # 认证模式 [默认模式(client), 单点模式(sso)] 14 | VITE_APP_AUTH_TYPE = 'client' 15 | 16 | # 应用ID 17 | VITE_APP_CLIENTID = 9d04db60ab904313a43ebb78c9f027c1 18 | 19 | # 统一身份认证URL地址 20 | VITE_APP_SERVER_URL = http://127.0.0.1:8899 21 | 22 | # 当前APP的URL地址 23 | VITE_APP_THIS_APP_URL =http://127.0.0.1:80 24 | 25 | # webSocket连接地址 26 | VITE_APP_WEBSOCKET_API = 'ws://127.0.0.1:8080' 27 | 28 | # 是否代理PUT、DELETE请求 29 | VITE_APP_OPEN_PROXY_PUT_DELETE_REQUEST = 'false' 30 | 31 | # AES密钥 32 | VITE_APP_AES_KEY = 'AD42F6697B035B75' 33 | 34 | -------------------------------------------------------------------------------- /qdata-ui/.env.production: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VITE_APP_TITLE = 千数平台 3 | 4 | # 生产环境配置 5 | VITE_APP_ENV = 'production' 6 | 7 | # 千数平台/生产环境 8 | VITE_APP_BASE_API = '/prod-api/' 9 | # 千数平台/生产环境 单体打包打开此项 10 | # VITE_APP_BASE_API = '//' 11 | 12 | # 工作流/生产环境 13 | VITE_APP_FLOW_API = 'http://110.42.38.62:26859' 14 | 15 | # 是否在打包时开启压缩,支持 gzip 和 brotli 16 | VITE_BUILD_COMPRESS = gzip 17 | 18 | # 认证模式 [默认模式(client), 单点模式(sso)] 19 | VITE_APP_AUTH_TYPE = 'client' 20 | 21 | # 应用ID 22 | VITE_APP_CLIENTID = 9d04db60ab904313a43ebb78c9f027c1 23 | 24 | # 统一身份认证URL地址 25 | VITE_APP_SERVER_URL = http://127.0.0.1:8899 26 | 27 | # 当前APP的URL地址 28 | VITE_APP_THIS_APP_URL =http://127.0.0.1:80 29 | 30 | # 是否代理PUT、DELETE请求 31 | VITE_APP_OPEN_PROXY_PUT_DELETE_REQUEST = 'false' 32 | 33 | # AES密钥 34 | VITE_APP_AES_KEY = 'AD42F6697B035B75' 35 | 36 | 37 | -------------------------------------------------------------------------------- /qdata-ui/.env.staging: -------------------------------------------------------------------------------- 1 | # 页面标题 2 | VITE_APP_TITLE = 千数平台 3 | 4 | # 生产环境配置 5 | VITE_APP_ENV = 'staging' 6 | 7 | # 冰凤框架后台管理系统/生产环境 8 | VITE_APP_BASE_API = '/stage-api' 9 | 10 | # 是否在打包时开启压缩,支持 gzip 和 brotli 11 | VITE_BUILD_COMPRESS = gzip 12 | 13 | # 认证模式 [默认模式(client), 单点模式(sso)] 14 | VITE_APP_AUTH_TYPE = 'client' 15 | 16 | # 应用ID 17 | VITE_APP_CLIENTID = 9d04db60ab904313a43ebb78c9f027c1 18 | 19 | # 统一身份认证URL地址 20 | VITE_APP_SERVER_URL = http://127.0.0.1:8899 21 | 22 | # 当前APP的URL地址 23 | VITE_APP_THIS_APP_URL =http://127.0.0.1:80 24 | 25 | # 是否代理PUT、DELETE请求 26 | VITE_APP_OPEN_PROXY_PUT_DELETE_REQUEST = 'false' 27 | 28 | # AES密钥 29 | VITE_APP_AES_KEY = 'AD42F6697B035B75' 30 | 31 | -------------------------------------------------------------------------------- /qdata-ui/.eslintignore: -------------------------------------------------------------------------------- 1 | *.sh 2 | # node_modules 3 | # dist 4 | # /public 5 | # /docs 6 | *.md 7 | *.woff 8 | *.ttf 9 | .vscode 10 | .idea 11 | .husky 12 | .local 13 | /bin 14 | /src/mock/* 15 | stats.html 16 | 17 | 18 | docs 19 | dist 20 | public 21 | node_modules 22 | 23 | .versionrc 24 | auto-imports.d.ts 25 | components.d.ts 26 | 27 | **/dist/** 28 | **/public/** 29 | **/docs/** 30 | **/node_modules/** 31 | **/.versionrc/** 32 | **/types/**/* -------------------------------------------------------------------------------- /qdata-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | **/*.log 8 | 9 | tests/**/coverage/ 10 | tests/e2e/reports 11 | selenium-debug.log 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.local 21 | 22 | package-lock.json 23 | yarn.lock 24 | -------------------------------------------------------------------------------- /qdata-ui/bin/build.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/bin/build.bat -------------------------------------------------------------------------------- /qdata-ui/bin/package.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/bin/package.bat -------------------------------------------------------------------------------- /qdata-ui/bin/run-web.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo. 3 | echo [信息] 使用 Vite 命令运行 Web 工程。 4 | echo. 5 | 6 | %~d0 7 | cd %~dp0 8 | 9 | cd .. 10 | yarn dev 11 | 12 | pause -------------------------------------------------------------------------------- /qdata-ui/public/excel/缺陷管理导入模板.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/public/excel/缺陷管理导入模板.xlsx -------------------------------------------------------------------------------- /qdata-ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/public/favicon.ico -------------------------------------------------------------------------------- /qdata-ui/public/qianshu-favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/public/qianshu-favicon.png -------------------------------------------------------------------------------- /qdata-ui/public/sso-favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/public/sso-favicon.ico -------------------------------------------------------------------------------- /qdata-ui/src/api/dpp/etl/dppEtlExecutors.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | // 执行命令 4 | export function execute(taskInstanceId,executeType) { 5 | return request({ 6 | url: `/dpp/dppEtlExecutors/execute/${taskInstanceId}/${executeType}`, 7 | method: 'post' 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /qdata-ui/src/api/example/pay.js: -------------------------------------------------------------------------------- 1 | // ֧���ӿ� 2 | import request from "@/utils/request.js"; 3 | 4 | export function pay(data) { 5 | return request({ 6 | url: '/payment/pay', 7 | method: 'post', 8 | data: data 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /qdata-ui/src/api/report/project.d.ts: -------------------------------------------------------------------------------- 1 | export type ProjectItem = { 2 | /** 3 | * 项目 id 4 | */ 5 | id: string 6 | /** 7 | * 项目名称 8 | */ 9 | name: string 10 | /** 11 | * 项目状态: 12 | * 13 | * 0 - 已发布 14 | * 1 - 未发布 15 | */ 16 | status: number 17 | /** 18 | * 创建时间 19 | */ 20 | createTime: number 21 | /** 22 | * 预览图片 URL 23 | */ 24 | picUrl: string 25 | /** 26 | * 创建者 27 | */ 28 | creator: string 29 | /** 30 | * 项目备注 31 | */ 32 | remark: string 33 | } 34 | 35 | export interface ProjectDetail extends ProjectItem { 36 | /** 37 | * 项目参数 38 | */ 39 | content: string 40 | } 41 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/menu.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js'; 2 | 3 | // 获取路由 4 | export const getRouters = () => { 5 | return request({ 6 | url: '/getRouters', 7 | method: 'get' 8 | }); 9 | }; 10 | 11 | // 获取路由 12 | export const getRoutersDpp = (id) => { 13 | return request({ 14 | url: '/getRoutersDpp/' + id, 15 | method: 'get' 16 | }); 17 | }; 18 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/monitor/jobLog.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js' 2 | 3 | // 查询调度日志列表 4 | export function listJobLog(query) { 5 | return request({ 6 | url: '/monitor/jobLog/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除调度日志 13 | export function delJobLog(jobLogId) { 14 | return request({ 15 | url: '/monitor/jobLog/' + jobLogId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空调度日志 21 | export function cleanJobLog() { 22 | return request({ 23 | url: '/monitor/jobLog/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/monitor/logininfor.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js' 2 | 3 | // 查询登录日志列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/logininfor/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除登录日志 13 | export function delLogininfor(infoId) { 14 | return request({ 15 | url: '/monitor/logininfor/' + infoId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 解锁用户登录状态 21 | export function unlockLogininfor(userName) { 22 | return request({ 23 | url: '/monitor/logininfor/unlock/' + userName, 24 | method: 'get' 25 | }) 26 | } 27 | 28 | // 清空登录日志 29 | export function cleanLogininfor() { 30 | return request({ 31 | url: '/monitor/logininfor/clean', 32 | method: 'delete' 33 | }) 34 | } 35 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/monitor/online.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js' 2 | 3 | // 查询在线用户列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/online/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 强退用户 13 | export function forceLogout(tokenId) { 14 | return request({ 15 | url: '/monitor/online/' + tokenId, 16 | method: 'delete' 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/monitor/operlog.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js' 2 | 3 | // 查询操作日志列表 4 | export function list(query) { 5 | return request({ 6 | url: '/monitor/operlog/list', 7 | method: 'get', 8 | params: query 9 | }) 10 | } 11 | 12 | // 删除操作日志 13 | export function delOperlog(operId) { 14 | return request({ 15 | url: '/monitor/operlog/' + operId, 16 | method: 'delete' 17 | }) 18 | } 19 | 20 | // 清空操作日志 21 | export function cleanOperlog() { 22 | return request({ 23 | url: '/monitor/operlog/clean', 24 | method: 'delete' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/monitor/server.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js' 2 | 3 | // 获取服务信息 4 | export function getServer() { 5 | return request({ 6 | url: '/monitor/server', 7 | method: 'get' 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/sso-auth.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request.js' 2 | 3 | // 使用 code 登录 4 | export function codeLogin(code) { 5 | return request({ 6 | url: '/oauth2/codeLogin?code=' + code, 7 | headers: { 8 | isToken: false 9 | }, 10 | method: 'post' 11 | }) 12 | } 13 | 14 | // 退出登录 15 | export function loginOut(userId) { 16 | return request({ 17 | url: '/oauth2/sso/logout?userId=' + userId, 18 | method: 'post' 19 | }) 20 | } 21 | -------------------------------------------------------------------------------- /qdata-ui/src/api/system/sso-login-page.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/sso-request.js' 2 | 3 | // 统一身份认证登录方法 4 | export function ssoLoginPage(name, pwd, rememberMe) { 5 | const data = { 6 | "name": name, 7 | "pwd": pwd, 8 | "rememberMe": rememberMe 9 | } 10 | return request({ 11 | url: '/oauth2/doLogin', 12 | method: 'post', 13 | params: data 14 | }) 15 | } 16 | 17 | // 获取验证码 18 | export function getCodeImg() { 19 | return request({ 20 | url: '/captchaImage', 21 | headers: { 22 | isToken: false 23 | }, 24 | method: 'get', 25 | timeout: 20000 26 | }) 27 | } 28 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/arrow-l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/arrow-l.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/arrow-r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/arrow-r.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/bg.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/bot-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/bot-left.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/bottom-tab-act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/bottom-tab-act.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/bottom-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/bottom-tab.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/box (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/box (1).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/box (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/box (2).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/box (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/box (3).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/box (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/box (4).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/btbody.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/btbody.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/bthead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/bthead.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/center-btn-act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/center-btn-act.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/center-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/center-btn.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/center-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/center-icon.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/center.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/left (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/left (1).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/left (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/left (2).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/left (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/left (3).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/left (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/left (4).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/left (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/left (5).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/left (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/left (6).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/right1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/right1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/sel-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/sel-icon.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/sel.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/tab.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/tabs.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/tbody.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/tbody.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/thead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/thead.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/title.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/top.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/cockpit/user-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/cockpit/user-btn.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/circle-check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/circle-check.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/circle-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/circle-close.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/circle-subtract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/circle-subtract.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/circle-subtract1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/circle-subtract1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (1).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (2).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (3).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (4).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (5).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (6).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (7).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/dpp/etl/toolbar (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/dpp/etl/toolbar (8).png -------------------------------------------------------------------------------- /qdata-ui/src/assets/fonts/HYk2gj.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/fonts/HYk2gj.ttf -------------------------------------------------------------------------------- /qdata-ui/src/assets/fonts/PingFangSCRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/fonts/PingFangSCRegular.ttf -------------------------------------------------------------------------------- /qdata-ui/src/assets/fonts/Sharp.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/fonts/Sharp.ttf -------------------------------------------------------------------------------- /qdata-ui/src/assets/iconfont/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/iconfont/font/iconfont.ttf -------------------------------------------------------------------------------- /qdata-ui/src/assets/iconfont/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/iconfont/font/iconfont.woff -------------------------------------------------------------------------------- /qdata-ui/src/assets/iconfont/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/iconfont/font/iconfont.woff2 -------------------------------------------------------------------------------- /qdata-ui/src/assets/iconfont/font_new/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/iconfont/font_new/iconfont.ttf -------------------------------------------------------------------------------- /qdata-ui/src/assets/iconfont/font_new/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/iconfont/font_new/iconfont.woff -------------------------------------------------------------------------------- /qdata-ui/src/assets/iconfont/font_new/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/iconfont/font_new/iconfont.woff2 -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/chart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/code.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/documentation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/drag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/druid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/education.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/email.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/example.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/excel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/fullscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/guide.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/input.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/message.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/money.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/nested.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/peoples.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/server.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/slider.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/switch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/textarea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/theme.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/icons/svg/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/images/defaultAvatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/images/defaultAvatar.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/images/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/images/profile.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/images/qrIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/images/qrIcon.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/images/rwgl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/images/rwgl.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/images/success.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/401_images/401.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/401_images/401.gif -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/404_images/404.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/404_images/404_cloud.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/DM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/DM.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/HDFS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/HDFS.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/Hive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/Hive.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/SHELL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/SHELL.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/csv.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/excel.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/kafka.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/kafka.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/kingBase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/kingBase.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/mop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/mop.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/mysql.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/oracle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/oracle.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sc.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sjjctb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sjjctb.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sjkf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sjkf.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sjkftb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sjkftb.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sqlServer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sqlServer.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sr.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/sx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/sx.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/tsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/tsc.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/tsr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/tsr.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/tzh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/tzh.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/xx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/xx.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/dpp/zh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/dpp/zh.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/2.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/3.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/4.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/5.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/module_1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/module_1_1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/index/weather.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/index/weather.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/layout/msg/icon1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/layout/msg/icon1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/layout/msg/编组 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/layout/msg/编组 3.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/layout/msg/编组 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/layout/msg/编组 4.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/layout/msg/编组 6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/layout/msg/编组 6.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/layout/msg/编组 7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/layout/msg/编组 7.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/layout/msg/编组 8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/layout/msg/编组 8.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/login-background.jpg -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/login/banner-zt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/login/banner-zt.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/login/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/login/email.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/login/goge-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/login/goge-icon.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/login/phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/login/phone.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/login/qianshu-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/login/qianshu-logo.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/no_data/noData.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/no_data/noData.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/pay.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/profile.jpg -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/h1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/h2.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/h3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/h3.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/h4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/h4.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/l1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/l1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/l2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/l2.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/r1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/r1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/project/board/tit1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/project/board/tit1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/sso_login/an.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/sso_login/an.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/sso_login/banner1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/sso_login/banner1.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/sso_login/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/sso_login/chrome.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/sso_login/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/sso_login/favicon.ico -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/images/sso_login/sso-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/images/sso_login/sso-logo.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/logo/logo.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/logo/qianshu-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/logo/qianshu-logo.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/logo/qianshu-simlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/logo/qianshu-simlogo.png -------------------------------------------------------------------------------- /qdata-ui/src/assets/system/logo/simpLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qiantongtech/qData/45ecdd04998b9accf8fc2a73b34a77b4cce30c31/qdata-ui/src/assets/system/logo/simpLogo.png -------------------------------------------------------------------------------- /qdata-ui/src/components/IconSelect/requireIcons.js: -------------------------------------------------------------------------------- 1 | let icons = [] 2 | const modules = import.meta.glob('./../../assets/icons/svg/*.svg'); 3 | for (const path in modules) { 4 | const p = path.split('assets/icons/svg/')[1].split('.svg')[0]; 5 | icons.push(p); 6 | } 7 | 8 | export default icons -------------------------------------------------------------------------------- /qdata-ui/src/components/ParentView/index.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /qdata-ui/src/components/Screenfull/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 16 | 17 | 27 | -------------------------------------------------------------------------------- /qdata-ui/src/components/SvgIcon/svgicon.js: -------------------------------------------------------------------------------- 1 | import * as components from '@element-plus/icons-vue' 2 | 3 | export default { 4 | install: (app) => { 5 | for (const key in components) { 6 | const componentConfig = components[key]; 7 | app.component(componentConfig.name, componentConfig); 8 | } 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /qdata-ui/src/directive/index.js: -------------------------------------------------------------------------------- 1 | import hasRole from './permission/hasRole' 2 | import hasPermi from './permission/hasPermi' 3 | import copyText from './common/copyText' 4 | 5 | export default function directive(app){ 6 | app.directive('hasRole', hasRole) 7 | app.directive('hasPermi', hasPermi) 8 | app.directive('copyText', copyText) 9 | } -------------------------------------------------------------------------------- /qdata-ui/src/directive/permission/hasPermi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-hasPermi 操作权限处理 3 | * Copyright (c) 2019 qdata 4 | */ 5 | 6 | import useUserStore from '@/store/system/user' 7 | 8 | export default { 9 | mounted(el, binding, vnode) { 10 | const { value } = binding 11 | const all_permission = "*:*:*"; 12 | const permissions = useUserStore().permissions 13 | 14 | if (value && value instanceof Array && value.length > 0) { 15 | const permissionFlag = value 16 | 17 | const hasPermissions = permissions.some(permission => { 18 | return all_permission === permission || permissionFlag.includes(permission) 19 | }) 20 | 21 | if (!hasPermissions) { 22 | el.parentNode && el.parentNode.removeChild(el) 23 | } 24 | } else { 25 | throw new Error(`请设置操作权限标签值`) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /qdata-ui/src/directive/permission/hasRole.js: -------------------------------------------------------------------------------- 1 | /** 2 | * v-hasRole 角色权限处理 3 | * Copyright (c) 2019 qdata 4 | */ 5 | 6 | import useUserStore from '@/store/system/user' 7 | 8 | export default { 9 | mounted(el, binding, vnode) { 10 | const { value } = binding 11 | const super_admin = "admin"; 12 | const roles = useUserStore().roles 13 | 14 | if (value && value instanceof Array && value.length > 0) { 15 | const roleFlag = value 16 | 17 | const hasRole = roles.some(role => { 18 | return super_admin === role || roleFlag.includes(role) 19 | }) 20 | 21 | if (!hasRole) { 22 | el.parentNode && el.parentNode.removeChild(el) 23 | } 24 | } else { 25 | throw new Error(`请设置角色权限标签值`) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /qdata-ui/src/layout/components/IframeToggle/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 26 | -------------------------------------------------------------------------------- /qdata-ui/src/layout/components/InnerLink/index.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | -------------------------------------------------------------------------------- /qdata-ui/src/layout/components/Sidebar/Link.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 41 | -------------------------------------------------------------------------------- /qdata-ui/src/layout/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as AppMain } from './AppMain' 2 | export { default as Navbar } from './Navbar' 3 | export { default as Settings } from './Settings' 4 | export { default as TagsView } from './TagsView/index.vue' 5 | -------------------------------------------------------------------------------- /qdata-ui/src/plugins/index.js: -------------------------------------------------------------------------------- 1 | import tab from './tab' 2 | import auth from './auth' 3 | import cache from './cache' 4 | import modal from './modal' 5 | import download from './download' 6 | 7 | export default function installPlugins(app){ 8 | // 页签操作 9 | app.config.globalProperties.$tab = tab 10 | // 认证对象 11 | app.config.globalProperties.$auth = auth 12 | // 缓存对象 13 | app.config.globalProperties.$cache = cache 14 | // 模态框对象 15 | app.config.globalProperties.$modal = modal 16 | // 下载文件 17 | app.config.globalProperties.$download = download 18 | } 19 | -------------------------------------------------------------------------------- /qdata-ui/src/router/da/discovery/index.js: -------------------------------------------------------------------------------- 1 | /* Layout */ 2 | import Layout from '@/layout/index.vue' 3 | 4 | // 数据资产模块动公共路由 5 | export default [ 6 | 7 | ] 8 | -------------------------------------------------------------------------------- /qdata-ui/src/router/da/dynamic/index.js: -------------------------------------------------------------------------------- 1 | /* Layout */ 2 | import Layout from '@/layout/index.vue' 3 | 4 | // 数据资产动态路由,基于用户权限动态去加载 5 | export default [ 6 | 7 | ] 8 | -------------------------------------------------------------------------------- /qdata-ui/src/router/dp/dataElem/index.js: -------------------------------------------------------------------------------- 1 | /* Layout */ 2 | import Layout from '@/layout/index.vue'; 3 | 4 | // 示例模块动公共路由 5 | export default [ 6 | 7 | ]; 8 | -------------------------------------------------------------------------------- /qdata-ui/src/router/ds/dynamic/index.js: -------------------------------------------------------------------------------- 1 | /* Layout */ 2 | import Layout from '@/layout/index.vue' 3 | 4 | // 数据资产动态路由,基于用户权限动态去加载 5 | export default [ 6 | 7 | ] 8 | -------------------------------------------------------------------------------- /qdata-ui/src/router/example/dynamic/index.js: -------------------------------------------------------------------------------- 1 | /* Layout */ 2 | import Layout from '@/layout/index.vue' 3 | 4 | // 示例模块动态路由,基于用户权限动态去加载 5 | export default [ 6 | 7 | ] 8 | -------------------------------------------------------------------------------- /qdata-ui/src/router/example/public/index.js: -------------------------------------------------------------------------------- 1 | /* Layout */ 2 | import Layout from '@/layout/index.vue' 3 | 4 | // 示例模块动公共路由 5 | export default [ 6 | { 7 | path: '/example/genStudent', 8 | component: Layout, 9 | redirect: 'genStudent', 10 | hidden: true, 11 | children: [ 12 | { 13 | path: 'studentDetail', 14 | component: () => import('@/views/example/genStudent/detail/index.vue'), 15 | name: 'studentDetail', 16 | meta: { title: '学生详情', activeMenu: '/example/student' } 17 | } 18 | ] 19 | }, 20 | 21 | ] 22 | -------------------------------------------------------------------------------- /qdata-ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | const store = createPinia() 2 | 3 | export default store -------------------------------------------------------------------------------- /qdata-ui/src/store/project/project.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export const useProjectStore = defineStore('project', { 4 | state: () => ({ 5 | project: {} 6 | }), 7 | actions: { 8 | // 设置整个项目对象 9 | setProject(newProject) { 10 | this.project = newProject 11 | }, 12 | // 设置项目中的某个属性 13 | setProjectField(field, value) { 14 | this.project[field] = value 15 | } 16 | } 17 | }) 18 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/auth.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const TokenKey = 'Admin-Token' 4 | 5 | export function getToken() { 6 | return Cookies.get(TokenKey) 7 | } 8 | 9 | export function setToken(token) { 10 | return Cookies.set(TokenKey, token) 11 | } 12 | 13 | export function removeToken() { 14 | return Cookies.remove(TokenKey) 15 | } 16 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/bus.js: -------------------------------------------------------------------------------- 1 | // bus.js 2 | import { reactive } from 'vue'; 3 | 4 | const bus = reactive({ 5 | events: {}, 6 | 7 | on(event, callback) { 8 | if (!this.events[event]) { 9 | this.events[event] = []; 10 | } 11 | this.events[event].push(callback); 12 | }, 13 | 14 | off(event, callback) { 15 | const index = this.events[event]?.indexOf(callback); 16 | if (index !== -1) { 17 | this.events[event].splice(index, 1); 18 | } 19 | }, 20 | 21 | emit(event, data) { 22 | this.events[event]?.forEach(callback => callback(data)); 23 | } 24 | }); 25 | 26 | export default bus; 27 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/cronUtils.js: -------------------------------------------------------------------------------- 1 | // cronUtils.js 2 | 3 | import cronstrue from "cronstrue"; 4 | import "cronstrue/locales/zh_CN"; 5 | 6 | /** 7 | * 将 Cron 表达式转换为中文描述 8 | * @param {string} cron - Cron 表达式 9 | * @returns {string} - 转换后的中文描述 10 | */ 11 | export function cronToZh(cron) { 12 | if (!cron) return ""; 13 | 14 | try { 15 | return ( 16 | cronstrue.toString(cron, { locale: "zh_CN", use24HourTimeFormat: true }) + 17 | " 执行" 18 | ); 19 | } catch (error) { 20 | console.error("Cron 表达式解析错误:", error); 21 | return "无效的 Cron 表达式"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/dict.js: -------------------------------------------------------------------------------- 1 | import useDictStore from '@/store/system/dict' 2 | import { getDicts } from '@/api/system/system/dict/data' 3 | 4 | /** 5 | * 获取字典数据 6 | */ 7 | export function useDict(...args) { 8 | const res = ref({}); 9 | return (() => { 10 | args.forEach((dictType, index) => { 11 | res.value[dictType] = []; 12 | const dicts = useDictStore().getDict(dictType); 13 | if (dicts) { 14 | res.value[dictType] = dicts; 15 | } else { 16 | getDicts(dictType).then(resp => { 17 | res.value[dictType] = resp.data.map(p => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass })) 18 | useDictStore().setDict(dictType, res.value[dictType]); 19 | }) 20 | } 21 | }) 22 | return toRefs(res.value); 23 | })() 24 | } 25 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/dynamicTitle.js: -------------------------------------------------------------------------------- 1 | import store from '@/store' 2 | import defaultSettings from '@/settings' 3 | import useSettingsStore from '@/store/system/settings' 4 | 5 | /** 6 | * 动态修改标题 7 | */ 8 | export function useDynamicTitle() { 9 | const settingsStore = useSettingsStore(); 10 | if (settingsStore.dynamicTitle) { 11 | // document.title = settingsStore.title + ' - ' + defaultSettings.title; 12 | document.title = settingsStore.title + ' - ' + '千数平台'; 13 | } else { 14 | document.title = '千数平台'; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/errorCode.js: -------------------------------------------------------------------------------- 1 | export default { 2 | '401': '认证失败,无法访问系统资源', 3 | '403': '当前操作没有权限', 4 | '404': '访问资源不存在', 5 | 'default': '系统未知错误,请反馈给管理员' 6 | } 7 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/rpAuth.js: -------------------------------------------------------------------------------- 1 | import Cookies from "js-cookie"; 2 | 3 | const TokenKey = "Rp-Token"; 4 | const UserId = "Rp-UserId"; 5 | 6 | export function getToken() { 7 | return Cookies.get(TokenKey); 8 | } 9 | 10 | export function setToken(token) { 11 | return Cookies.set(TokenKey, token); 12 | } 13 | 14 | export function removeToken() { 15 | return Cookies.remove(TokenKey); 16 | } 17 | 18 | export function getUserId() { 19 | return Cookies.get(UserId); 20 | } 21 | 22 | export function setUserId(id) { 23 | return Cookies.set(UserId, id); 24 | } 25 | 26 | export function removeUserId() { 27 | return Cookies.remove(UserId); 28 | } 29 | -------------------------------------------------------------------------------- /qdata-ui/src/utils/time.js: -------------------------------------------------------------------------------- 1 | export function timeAgo(timeStr) { 2 | const date = new Date(timeStr) 3 | const now = new Date() 4 | const diff = (now - date) / 1000 // 秒 5 | 6 | if (diff < 60) { 7 | return '刚刚' 8 | } else if (diff < 3600) { 9 | return `${Math.floor(diff / 60)} 分钟前` 10 | } else if (diff < 86400) { 11 | return `${Math.floor(diff / 3600)} 小时前` 12 | } else if (diff < 2592000) { 13 | return `${Math.floor(diff / 86400)} 天前` 14 | } else if (diff < 31536000) { 15 | return `${Math.floor(diff / 2592000)} 个月前` 16 | } else { 17 | return `${Math.floor(diff / 31536000)} 年前` 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /qdata-ui/src/views/system/monitor/druid/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /qdata-ui/src/views/system/redirect/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /qdata-ui/src/views/system/tool/build/index.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /qdata-ui/src/views/system/tool/swagger/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 16 | -------------------------------------------------------------------------------- /qdata-ui/vite/plugins/auto-import.js: -------------------------------------------------------------------------------- 1 | import autoImport from 'unplugin-auto-import/vite' 2 | import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' 3 | 4 | export default function createAutoImport() { 5 | return autoImport({ 6 | imports: [ 7 | 'vue', 8 | 'vue-router', 9 | 'pinia' 10 | ], 11 | resolvers: [ElementPlusResolver()], 12 | dts: false 13 | }) 14 | } 15 | -------------------------------------------------------------------------------- /qdata-ui/vite/plugins/setup-extend.js: -------------------------------------------------------------------------------- 1 | import setupExtend from 'unplugin-vue-setup-extend-plus/vite' 2 | 3 | export default function createSetupExtend() { 4 | return setupExtend({}) 5 | } 6 | -------------------------------------------------------------------------------- /qdata-ui/vite/plugins/svg-icon.js: -------------------------------------------------------------------------------- 1 | import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' 2 | import path from 'path' 3 | 4 | export default function createSvgIcon(isBuild) { 5 | return createSvgIconsPlugin({ 6 | iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/svg')], 7 | symbolId: 'icon-[dir]-[name]', 8 | svgoOptions: isBuild 9 | }) 10 | } 11 | --------------------------------------------------------------------------------