重命名 orange-demo-activiti 为 images

This commit is contained in:
orange-form
2024-07-05 14:37:07 +00:00
committed by Gitee
parent e01c15c0fd
commit 445e3df4c3
894 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>common</artifactId>
<groupId>com.orangeforms</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>common-online-api</artifactId>
<version>1.0.0</version>
<name>common-online-api</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.orangeforms</groupId>
<artifactId>common-online</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.orangeforms</groupId>
<artifactId>common-swagger</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>

View File

@@ -0,0 +1,13 @@
package com.orangeforms.common.online.api.config;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
/**
* common-online-api模块的自动配置引导类。
*
* @author Jerry
* @date 2021-06-06
*/
@EnableConfigurationProperties({OnlineApiProperties.class})
public class OnlineApiAutoConfig {
}

View File

@@ -0,0 +1,32 @@
package com.orangeforms.common.online.api.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.List;
/**
* 在线表单API的配置对象。
*
* @author Jerry
* @date 2021-06-06
*/
@Data
@ConfigurationProperties(prefix = "common-online-api")
public class OnlineApiProperties {
/**
* 在线表单的URL前缀。
*/
private String urlPrefix;
/**
* 在线表单查看权限的URL列表。
*/
private List<String> viewUrlList;
/**
* 在线表单编辑权限的URL列表。
*/
private List<String> editUrlList;
}

View File

@@ -0,0 +1,402 @@
package com.orangeforms.common.online.api.controller;
import io.swagger.annotations.Api;
import cn.hutool.core.collection.CollUtil;
import cn.jimmyshi.beanquery.BeanQuery;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineColumnDto;
import com.orangeforms.common.online.dto.OnlineColumnRuleDto;
import com.orangeforms.common.online.dto.OnlineRuleDto;
import com.orangeforms.common.online.model.*;
import com.orangeforms.common.online.object.SqlTableColumn;
import com.orangeforms.common.online.service.*;
import com.orangeforms.common.online.vo.OnlineColumnRuleVo;
import com.orangeforms.common.online.vo.OnlineColumnVo;
import com.orangeforms.common.online.vo.OnlineRuleVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 字段数据操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "字段数据操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineColumn")
public class OnlineColumnController {
@Autowired
private OnlineColumnService onlineColumnService;
@Autowired
private OnlineTableService onlineTableService;
@Autowired
private OnlineVirtualColumnService onlineVirtualColumnService;
@Autowired
private OnlineDblinkService onlineDblinkService;
@Autowired
private OnlineRuleService onlineRuleService;
/**
* 根据数据库表字段信息,在指定在线表中添加在线表字段对象。
*
* @param dblinkId 数据库链接Id。
* @param tableName 数据库表名称。
* @param columnName 数据库表字段名。
* @param tableId 目的表Id。
* @return 应答结果对象。
*/
@PostMapping("/add")
public ResponseResult<Void> add(
@MyRequestBody Long dblinkId,
@MyRequestBody String tableName,
@MyRequestBody String columnName,
@MyRequestBody Long tableId) {
OnlineDblink dblink = onlineDblinkService.getById(dblinkId);
if (dblink == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
String errorMsg;
SqlTableColumn sqlTableColumn = onlineDblinkService.getDblinkTableColumn(dblink, tableName, columnName);
if (sqlTableColumn == null) {
errorMsg = "数据验证失败,指定的数据表字段不存在!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMsg);
}
if (!onlineTableService.existId(tableId)) {
errorMsg = "数据验证失败指定的数据表Id不存在";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMsg);
}
onlineColumnService.saveNewList(CollUtil.newLinkedList(sqlTableColumn), tableId);
return ResponseResult.success();
}
/**
* 更新字段数据数据。
*
* @param onlineColumnDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineColumnDto onlineColumnDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineColumnDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineColumn onlineColumn = MyModelUtil.copyTo(onlineColumnDto, OnlineColumn.class);
OnlineColumn originalOnlineColumn = onlineColumnService.getById(onlineColumn.getColumnId());
if (originalOnlineColumn == null) {
errorMessage = "数据验证失败,当前在线表字段并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
// 验证关联Id的数据合法性
CallResult callResult = onlineColumnService.verifyRelatedData(onlineColumn, originalOnlineColumn);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
if (!onlineColumnService.update(onlineColumn, originalOnlineColumn)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除字段数据数据。
*
* @param columnId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long columnId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(columnId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineColumn originalOnlineColumn = onlineColumnService.getById(columnId);
if (originalOnlineColumn == null) {
errorMessage = "数据验证失败,当前在线表字段并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
OnlineVirtualColumn virtualColumnFilter = new OnlineVirtualColumn();
virtualColumnFilter.setAggregationColumnId(columnId);
List<OnlineVirtualColumn> virtualColumnList =
onlineVirtualColumnService.getOnlineVirtualColumnList(virtualColumnFilter, null);
if (CollUtil.isNotEmpty(virtualColumnList)) {
OnlineVirtualColumn virtualColumn = virtualColumnList.get(0);
errorMessage = "数据验证失败,数据源关联正在被虚拟字段 [" + virtualColumn.getColumnPrompt() + "] 使用,不能被删除!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineColumnService.remove(originalOnlineColumn.getTableId(), columnId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的字段数据列表。
*
* @param onlineColumnDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineColumnVo>> list(
@MyRequestBody OnlineColumnDto onlineColumnDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineColumn onlineColumnFilter = MyModelUtil.copyTo(onlineColumnDtoFilter, OnlineColumn.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineColumn.class);
List<OnlineColumn> onlineColumnList =
onlineColumnService.getOnlineColumnListWithRelation(onlineColumnFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineColumnList, OnlineColumn.INSTANCE));
}
/**
* 查看指定字段数据对象详情。
*
* @param columnId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineColumnVo> view(@RequestParam Long columnId) {
if (MyCommonUtil.existBlankArgument(columnId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineColumn onlineColumn = onlineColumnService.getByIdWithRelation(columnId, MyRelationParam.full());
if (onlineColumn == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineColumnVo onlineColumnVo = OnlineColumn.INSTANCE.fromModel(onlineColumn);
return ResponseResult.success(onlineColumnVo);
}
/**
* 将数据库中的表字段信息刷新到已经导入的在线表字段信息。
*
* @param dblinkId 数据库链接Id。
* @param tableName 数据库表名称。
* @param columnName 数据库表字段名。
* @param columnId 被刷新的在线字段Id。
* @return 应答结果对象。
*/
@PostMapping("/refresh")
public ResponseResult<Void> refresh(
@MyRequestBody Long dblinkId,
@MyRequestBody String tableName,
@MyRequestBody String columnName,
@MyRequestBody Long columnId) {
OnlineDblink dblink = onlineDblinkService.getById(dblinkId);
if (dblink == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
String errorMsg;
SqlTableColumn sqlTableColumn = onlineDblinkService.getDblinkTableColumn(dblink, tableName, columnName);
if (sqlTableColumn == null) {
errorMsg = "数据验证失败,指定的数据表字段不存在!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMsg);
}
OnlineColumn onlineColumn = onlineColumnService.getById(columnId);
if (onlineColumn == null) {
errorMsg = "数据验证失败指定的在线表字段Id不存在";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMsg);
}
onlineColumnService.refresh(sqlTableColumn, onlineColumn);
return ResponseResult.success();
}
/**
* 列出不与指定字段数据存在多对多关系的 [验证规则] 列表数据。通常用于查看添加新 [验证规则] 对象的候选列表。
*
* @param columnId 主表关联字段。
* @param onlineRuleDtoFilter [验证规则] 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listNotInOnlineColumnRule")
public ResponseResult<MyPageData<OnlineRuleVo>> listNotInOnlineColumnRule(
@MyRequestBody Long columnId,
@MyRequestBody OnlineRuleDto onlineRuleDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doOnlineColumnRuleVerify(columnId);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineRule filter = MyModelUtil.copyTo(onlineRuleDtoFilter, OnlineRule.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineRule.class);
List<OnlineRule> onlineRuleList =
onlineRuleService.getNotInOnlineRuleListByColumnId(columnId, filter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineRuleList, OnlineRule.INSTANCE));
}
/**
* 列出与指定字段数据存在多对多关系的 [验证规则] 列表数据。
*
* @param columnId 主表关联字段。
* @param onlineRuleDtoFilter [验证规则] 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listOnlineColumnRule")
public ResponseResult<MyPageData<OnlineRuleVo>> listOnlineColumnRule(
@MyRequestBody Long columnId,
@MyRequestBody OnlineRuleDto onlineRuleDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doOnlineColumnRuleVerify(columnId);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineRule filter = MyModelUtil.copyTo(onlineRuleDtoFilter, OnlineRule.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineRule.class);
List<OnlineRule> onlineRuleList =
onlineRuleService.getOnlineRuleListByColumnId(columnId, filter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineRuleList, OnlineRule.INSTANCE));
}
private ResponseResult<Void> doOnlineColumnRuleVerify(Long columnId) {
if (MyCommonUtil.existBlankArgument(columnId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
if (!onlineColumnService.existId(columnId)) {
return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
}
return ResponseResult.success();
}
/**
* 批量添加字段数据和 [验证规则] 对象的多对多关联关系数据。
*
* @param columnId 主表主键Id。
* @param onlineColumnRuleDtoList 关联对象列表。
* @return 应答结果对象。
*/
@PostMapping("/addOnlineColumnRule")
public ResponseResult<Void> addOnlineColumnRule(
@MyRequestBody Long columnId,
@MyRequestBody(elementType = OnlineColumnRuleDto.class) List<OnlineColumnRuleDto> onlineColumnRuleDtoList) {
if (MyCommonUtil.existBlankArgument(columnId, onlineColumnRuleDtoList)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
for (OnlineColumnRuleDto onlineColumnRule : onlineColumnRuleDtoList) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineColumnRule);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
}
Set<Long> ruleIdSet =
onlineColumnRuleDtoList.stream().map(OnlineColumnRuleDto::getRuleId).collect(Collectors.toSet());
if (!onlineColumnService.existId(columnId)
|| !onlineRuleService.existUniqueKeyList("ruleId", ruleIdSet)) {
return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
}
List<OnlineColumnRule> onlineColumnRuleList =
MyModelUtil.copyCollectionTo(onlineColumnRuleDtoList, OnlineColumnRule.class);
onlineColumnService.addOnlineColumnRuleList(onlineColumnRuleList, columnId);
return ResponseResult.success();
}
/**
* 更新指定字段数据和指定 [验证规则] 的多对多关联数据。
*
* @param onlineColumnRuleDto 对多对中间表对象。
* @return 应答结果对象。
*/
@PostMapping("/updateOnlineColumnRule")
public ResponseResult<Void> updateOnlineColumnRule(
@MyRequestBody OnlineColumnRuleDto onlineColumnRuleDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineColumnRuleDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineColumnRule onlineColumnRule = MyModelUtil.copyTo(onlineColumnRuleDto, OnlineColumnRule.class);
if (!onlineColumnService.updateOnlineColumnRule(onlineColumnRule)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 显示字段数据和指定 [验证规则] 的多对多关联详情数据。
*
* @param columnId 主表主键Id。
* @param ruleId 从表主键Id。
* @return 应答结果对象,包括中间表详情。
*/
@GetMapping("/viewOnlineColumnRule")
public ResponseResult<OnlineColumnRuleVo> viewOnlineColumnRule(
@RequestParam Long columnId, @RequestParam Long ruleId) {
if (MyCommonUtil.existBlankArgument(columnId, ruleId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineColumnRule onlineColumnRule = onlineColumnService.getOnlineColumnRule(columnId, ruleId);
if (onlineColumnRule == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineColumnRuleVo onlineColumnRuleVo = MyModelUtil.copyTo(onlineColumnRule, OnlineColumnRuleVo.class);
return ResponseResult.success(onlineColumnRuleVo);
}
/**
* 移除指定字段数据和指定 [验证规则] 的多对多关联关系。
*
* @param columnId 主表主键Id。
* @param ruleId 从表主键Id。
* @return 应答结果对象。
*/
@PostMapping("/deleteOnlineColumnRule")
public ResponseResult<Void> deleteOnlineColumnRule(
@MyRequestBody Long columnId, @MyRequestBody Long ruleId) {
if (MyCommonUtil.existBlankArgument(columnId, ruleId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
if (!onlineColumnService.removeOnlineColumnRule(columnId, ruleId)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 以字典形式返回全部字段数据数据集合。字典的键值为[columnId, columnName]。
* 白名单接口,登录用户均可访问。
*
* @param filter 过滤对象。
* @return 应答结果对象,包含的数据为 List<Map<String, String>>map中包含两条记录key的值分别是id和namevalue对应具体数据。
*/
@GetMapping("/listDict")
public ResponseResult<List<Map<String, Object>>> listDict(OnlineColumn filter) {
List<OnlineColumn> resultList = onlineColumnService.getListByFilter(filter);
return ResponseResult.success(BeanQuery.select(
"columnId as id", "columnName as name").executeFrom(resultList));
}
}

View File

@@ -0,0 +1,209 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import cn.hutool.core.collection.CollUtil;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.AddGroup;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineDatasourceDto;
import com.orangeforms.common.online.model.*;
import com.orangeforms.common.online.model.constant.PageType;
import com.orangeforms.common.online.object.SqlTable;
import com.orangeforms.common.online.object.SqlTableColumn;
import com.orangeforms.common.online.service.*;
import com.orangeforms.common.online.vo.OnlineDatasourceVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
/**
* 数据模型操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "数据模型操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineDatasource")
public class OnlineDatasourceController {
@Autowired
private OnlineDatasourceService onlineDatasourceService;
@Autowired
private OnlineFormService onlineFormService;
@Autowired
private OnlinePageService onlinePageService;
@Autowired
private OnlineTableService onlineTableService;
@Autowired
private OnlineDblinkService onlineDblinkService;
/**
* 新增数据模型数据。
*
* @param onlineDatasourceDto 新增对象。
* @param pageId 关联的页面Id。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlineDatasourceDto.datasourceId"})
@PostMapping("/add")
public ResponseResult<Long> add(
@MyRequestBody OnlineDatasourceDto onlineDatasourceDto,
@MyRequestBody(required = true) Long pageId) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineDatasourceDto, Default.class, AddGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlinePage onlinePage = onlinePageService.getById(pageId);
if (onlinePage == null) {
errorMessage = "数据验证失败页面Id不存在";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDatasource onlineDatasource = MyModelUtil.copyTo(onlineDatasourceDto, OnlineDatasource.class);
OnlineDblink onlineDblink = onlineDblinkService.getById(onlineDatasourceDto.getDblinkId());
if (onlineDblink == null) {
errorMessage = "数据验证失败关联的数据库链接Id不存在";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
SqlTable sqlTable = onlineDblinkService.getDblinkTable(onlineDblink, onlineDatasourceDto.getMasterTableName());
if (sqlTable == null) {
errorMessage = "数据验证失败,指定的数据表名不存在!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
// 流程表单的主表主键,不能是自增主键。
if (onlinePage.getPageType().equals(PageType.FLOW)) {
for (SqlTableColumn tableColumn : sqlTable.getColumnList()) {
if (tableColumn.getPrimaryKey()) {
if (tableColumn.getAutoIncrement()) {
errorMessage = "数据验证失败,流程页面所关联的主表主键,不能是自增主键!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
break;
}
}
}
onlineDatasource = onlineDatasourceService.saveNew(onlineDatasource, sqlTable, pageId);
return ResponseResult.success(onlineDatasource.getDatasourceId());
}
/**
* 更新数据模型数据。
*
* @param onlineDatasourceDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineDatasourceDto onlineDatasourceDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineDatasourceDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDatasource onlineDatasource = MyModelUtil.copyTo(onlineDatasourceDto, OnlineDatasource.class);
OnlineDatasource originalOnlineDatasource = onlineDatasourceService.getById(onlineDatasource.getDatasourceId());
if (originalOnlineDatasource == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线数据源并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasource.getDblinkId().equals(originalOnlineDatasource.getDatasourceId())) {
errorMessage = "数据验证失败不能修改数据库链接Id";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasource.getMasterTableId().equals(originalOnlineDatasource.getDatasourceId())) {
errorMessage = "数据验证失败不能修改主表Id";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasourceService.update(onlineDatasource, originalOnlineDatasource)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除数据模型数据。
*
* @param datasourceId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long datasourceId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(datasourceId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineDatasource originalOnlineDatasource = onlineDatasourceService.getById(datasourceId);
if (originalOnlineDatasource == null) {
errorMessage = "数据验证失败,当前数据源并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
List<OnlineForm> formList = onlineFormService.getOnlineFormListByDatasourceId(datasourceId);
if (CollUtil.isNotEmpty(formList)) {
errorMessage = "数据验证失败,当前数据源正在被 [" + formList.get(0).getFormName() + "] 表单占用,请先删除关联数据!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasourceService.remove(datasourceId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的数据模型列表。
*
* @param onlineDatasourceDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineDatasourceVo>> list(
@MyRequestBody OnlineDatasourceDto onlineDatasourceDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineDatasource onlineDatasourceFilter = MyModelUtil.copyTo(onlineDatasourceDtoFilter, OnlineDatasource.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineDatasource.class);
List<OnlineDatasource> onlineDatasourceList =
onlineDatasourceService.getOnlineDatasourceListWithRelation(onlineDatasourceFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineDatasourceList, OnlineDatasource.INSTANCE));
}
/**
* 查看指定数据模型对象详情。
*
* @param datasourceId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineDatasourceVo> view(@RequestParam Long datasourceId) {
if (MyCommonUtil.existBlankArgument(datasourceId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineDatasource onlineDatasource =
onlineDatasourceService.getByIdWithRelation(datasourceId, MyRelationParam.full());
if (onlineDatasource == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineDatasourceVo onlineDatasourceVo = OnlineDatasource.INSTANCE.fromModel(onlineDatasource);
List<OnlineTable> tableList = onlineTableService.getOnlineTableListByDatasourceId(datasourceId);
if (CollUtil.isNotEmpty(tableList)) {
onlineDatasourceVo.setTableList(OnlineTable.INSTANCE.fromModelList(tableList));
}
return ResponseResult.success(onlineDatasourceVo);
}
}

View File

@@ -0,0 +1,232 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import cn.hutool.core.collection.CollUtil;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.AddGroup;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineDatasourceRelationDto;
import com.orangeforms.common.online.model.*;
import com.orangeforms.common.online.object.SqlTable;
import com.orangeforms.common.online.object.SqlTableColumn;
import com.orangeforms.common.online.service.*;
import com.orangeforms.common.online.vo.OnlineDatasourceRelationVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
/**
* 数据源关联操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "数据源关联操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineDatasourceRelation")
public class OnlineDatasourceRelationController {
@Autowired
private OnlineDatasourceRelationService onlineDatasourceRelationService;
@Autowired
private OnlineDatasourceService onlineDatasourceService;
@Autowired
private OnlineVirtualColumnService onlineVirtualColumnService;
@Autowired
private OnlineDblinkService onlineDblinkService;
@Autowired
private OnlineFormService onlineFormService;
/**
* 新增数据关联数据。
*
* @param onlineDatasourceRelationDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlineDatasourceRelationDto.relationId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody OnlineDatasourceRelationDto onlineDatasourceRelationDto) {
String errorMessage = MyCommonUtil.getModelValidationError(
onlineDatasourceRelationDto, Default.class, AddGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDatasourceRelation onlineDatasourceRelation =
MyModelUtil.copyTo(onlineDatasourceRelationDto, OnlineDatasourceRelation.class);
OnlineDatasource onlineDatasource =
onlineDatasourceService.getById(onlineDatasourceRelationDto.getDatasourceId());
if (onlineDatasource == null) {
errorMessage = "数据验证失败关联的数据源Id不存在";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDblink onlineDblink = onlineDblinkService.getById(onlineDatasource.getDblinkId());
SqlTable slaveTable = onlineDblinkService.getDblinkTable(
onlineDblink, onlineDatasourceRelationDto.getSlaveTableName());
if (slaveTable == null) {
errorMessage = "数据验证失败,指定的数据表不存在!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
SqlTableColumn slaveColumn = null;
for (SqlTableColumn column : slaveTable.getColumnList()) {
if (column.getColumnName().equals(onlineDatasourceRelationDto.getSlaveColumnName())) {
slaveColumn = column;
break;
}
}
if (slaveColumn == null) {
errorMessage = "数据验证失败,指定的数据表字段 [" + onlineDatasourceRelationDto.getSlaveColumnName() + "] 不存在!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
// 验证关联Id的数据合法性
CallResult callResult =
onlineDatasourceRelationService.verifyRelatedData(onlineDatasourceRelation, null);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
onlineDatasourceRelation = onlineDatasourceRelationService.saveNew(onlineDatasourceRelation, slaveTable, slaveColumn);
return ResponseResult.success(onlineDatasourceRelation.getRelationId());
}
/**
* 更新数据关联数据。
*
* @param onlineDatasourceRelationDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineDatasourceRelationDto onlineDatasourceRelationDto) {
String errorMessage = MyCommonUtil.getModelValidationError(
onlineDatasourceRelationDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDatasourceRelation onlineDatasourceRelation =
MyModelUtil.copyTo(onlineDatasourceRelationDto, OnlineDatasourceRelation.class);
OnlineDatasourceRelation originalOnlineDatasourceRelation =
onlineDatasourceRelationService.getById(onlineDatasourceRelation.getRelationId());
if (originalOnlineDatasourceRelation == null) {
errorMessage = "数据验证失败,当前数据源关联并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasourceRelationDto.getRelationType().equals(originalOnlineDatasourceRelation.getRelationType())) {
errorMessage = "数据验证失败,不能修改关联类型!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasourceRelationDto.getSlaveTableId().equals(originalOnlineDatasourceRelation.getSlaveTableId())) {
errorMessage = "数据验证失败不能修改从表Id";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasourceRelationDto.getDatasourceId().equals(originalOnlineDatasourceRelation.getDatasourceId())) {
errorMessage = "数据验证失败不能修改数据源Id";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
// 验证关联Id的数据合法性
CallResult callResult = onlineDatasourceRelationService
.verifyRelatedData(onlineDatasourceRelation, originalOnlineDatasourceRelation);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
if (!onlineDatasourceRelationService.update(onlineDatasourceRelation, originalOnlineDatasourceRelation)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除数据关联数据。
*
* @param relationId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long relationId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(relationId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineDatasourceRelation originalOnlineDatasourceRelation = onlineDatasourceRelationService.getById(relationId);
if (originalOnlineDatasourceRelation == null) {
errorMessage = "数据验证失败,当前数据源关联并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
OnlineVirtualColumn virtualColumnFilter = new OnlineVirtualColumn();
virtualColumnFilter.setRelationId(relationId);
List<OnlineVirtualColumn> virtualColumnList =
onlineVirtualColumnService.getOnlineVirtualColumnList(virtualColumnFilter, null);
if (CollUtil.isNotEmpty(virtualColumnList)) {
OnlineVirtualColumn virtualColumn = virtualColumnList.get(0);
errorMessage = "数据验证失败,数据源关联正在被虚拟字段 [" + virtualColumn.getColumnPrompt() + "] 使用,不能被删除!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
List<OnlineForm> formList =
onlineFormService.getOnlineFormListByTableId(originalOnlineDatasourceRelation.getSlaveTableId());
if (CollUtil.isNotEmpty(formList)) {
errorMessage = "数据验证失败,当前数据源关联正在被 [" + formList.get(0).getFormName() + "] 表单占用,请先删除关联数据!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDatasourceRelationService.remove(relationId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的数据关联列表。
*
* @param onlineDatasourceRelationDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分 页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineDatasourceRelationVo>> list(
@MyRequestBody OnlineDatasourceRelationDto onlineDatasourceRelationDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineDatasourceRelation onlineDatasourceRelationFilter =
MyModelUtil.copyTo(onlineDatasourceRelationDtoFilter, OnlineDatasourceRelation.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineDatasourceRelation.class);
List<OnlineDatasourceRelation> onlineDatasourceRelationList =
onlineDatasourceRelationService.getOnlineDatasourceRelationListWithRelation(onlineDatasourceRelationFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineDatasourceRelationList, OnlineDatasourceRelation.INSTANCE));
}
/**
* 查看指定数据关联对象详情。
*
* @param relationId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineDatasourceRelationVo> view(@RequestParam Long relationId) {
if (MyCommonUtil.existBlankArgument(relationId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineDatasourceRelation onlineDatasourceRelation =
onlineDatasourceRelationService.getByIdWithRelation(relationId, MyRelationParam.full());
if (onlineDatasourceRelation == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineDatasourceRelationVo onlineDatasourceRelationVo =
OnlineDatasourceRelation.INSTANCE.fromModel(onlineDatasourceRelation);
return ResponseResult.success(onlineDatasourceRelationVo);
}
}

View File

@@ -0,0 +1,94 @@
package com.orangeforms.common.online.api.controller;
import io.swagger.annotations.Api;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.MyOrderParam;
import com.orangeforms.common.core.object.MyPageData;
import com.orangeforms.common.core.object.MyPageParam;
import com.orangeforms.common.core.object.ResponseResult;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.online.dto.OnlineDblinkDto;
import com.orangeforms.common.online.model.OnlineDblink;
import com.orangeforms.common.online.object.SqlTable;
import com.orangeforms.common.online.object.SqlTableColumn;
import com.orangeforms.common.online.service.OnlineDblinkService;
import com.orangeforms.common.online.vo.OnlineDblinkVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 数据库链接操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "数据库链接操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineDblink")
public class OnlineDblinkController {
@Autowired
private OnlineDblinkService onlineDblinkService;
/**
* 列出符合过滤条件的数据库链接列表。
*
* @param onlineDblinkDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineDblinkVo>> list(
@MyRequestBody OnlineDblinkDto onlineDblinkDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineDblink onlineDblinkFilter = MyModelUtil.copyTo(onlineDblinkDtoFilter, OnlineDblink.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineDblink.class);
List<OnlineDblink> onlineDblinkList =
onlineDblinkService.getOnlineDblinkListWithRelation(onlineDblinkFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineDblinkList, OnlineDblink.INSTANCE));
}
/**
* 获取指定数据库链接下的所有动态表单依赖的数据表列表。
*
* @param dblinkId 数据库链接Id。
* @return 所有动态表单依赖的数据表列表
*/
@GetMapping("/listDblinkTables")
public ResponseResult<List<SqlTable>> listDblinkTables(@RequestParam Long dblinkId) {
OnlineDblink dblink = onlineDblinkService.getById(dblinkId);
if (dblink == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(onlineDblinkService.getDblinkTableList(dblink));
}
/**
* 获取指定数据库链接下,指定数据表的所有字段信息。
*
* @param dblinkId 数据库链接Id。
* @param tableName 表名。
* @return 该表的所有字段列表。
*/
@GetMapping("/listDblinkTableColumns")
public ResponseResult<List<SqlTableColumn>> listDblinkTableColumns(
@RequestParam Long dblinkId, @RequestParam String tableName) {
OnlineDblink dblink = onlineDblinkService.getById(dblinkId);
if (dblink == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success(onlineDblinkService.getDblinkTableColumnList(dblink, tableName));
}
}

View File

@@ -0,0 +1,160 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineDictDto;
import com.orangeforms.common.online.model.OnlineDict;
import com.orangeforms.common.online.service.OnlineDictService;
import com.orangeforms.common.online.vo.OnlineDictVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
/**
* 在线表单字典操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "在线表单字典操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineDict")
public class OnlineDictController {
@Autowired
private OnlineDictService onlineDictService;
/**
* 新增在线表单字典数据。
*
* @param onlineDictDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlineDictDto.dictId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody OnlineDictDto onlineDictDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineDictDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDict onlineDict = MyModelUtil.copyTo(onlineDictDto, OnlineDict.class);
// 验证关联Id的数据合法性
CallResult callResult = onlineDictService.verifyRelatedData(onlineDict, null);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
onlineDict = onlineDictService.saveNew(onlineDict);
return ResponseResult.success(onlineDict.getDictId());
}
/**
* 更新在线表单字典数据。
*
* @param onlineDictDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineDictDto onlineDictDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineDictDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineDict onlineDict = MyModelUtil.copyTo(onlineDictDto, OnlineDict.class);
OnlineDict originalOnlineDict = onlineDictService.getById(onlineDict.getDictId());
if (originalOnlineDict == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线字典并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
// 验证关联Id的数据合法性
CallResult callResult = onlineDictService.verifyRelatedData(onlineDict, originalOnlineDict);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
if (!onlineDictService.update(onlineDict, originalOnlineDict)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除在线表单字典数据。
*
* @param dictId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long dictId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(dictId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineDict originalOnlineDict = onlineDictService.getById(dictId);
if (originalOnlineDict == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线字典并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineDictService.remove(dictId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的在线表单字典列表。
*
* @param onlineDictDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineDictVo>> list(
@MyRequestBody OnlineDictDto onlineDictDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineDict onlineDictFilter = MyModelUtil.copyTo(onlineDictDtoFilter, OnlineDict.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineDict.class);
List<OnlineDict> onlineDictList = onlineDictService.getOnlineDictListWithRelation(onlineDictFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineDictList, OnlineDict.INSTANCE));
}
/**
* 查看指定在线表单字典对象详情。
*
* @param dictId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineDictVo> view(@RequestParam Long dictId) {
if (MyCommonUtil.existBlankArgument(dictId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineDict onlineDict = onlineDictService.getByIdWithRelation(dictId, MyRelationParam.full());
if (onlineDict == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineDictVo onlineDictVo = OnlineDict.INSTANCE.fromModel(onlineDict);
return ResponseResult.success(onlineDictVo);
}
}

View File

@@ -0,0 +1,261 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONObject;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineFormDto;
import com.orangeforms.common.online.model.*;
import com.orangeforms.common.online.service.*;
import com.orangeforms.common.online.vo.OnlineFormVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 在线表单操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "在线表单操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineForm")
public class OnlineFormController {
@Autowired
private OnlineFormService onlineFormService;
@Autowired
private OnlineDatasourceService onlineDatasourceService;
@Autowired
private OnlineDatasourceRelationService onlineDatasourceRelationService;
@Autowired
private OnlineTableService onlineTableService;
@Autowired
private OnlineColumnService onlineColumnService;
@Autowired
private OnlineVirtualColumnService onlineVirtualColumnService;
@Autowired
private OnlineDictService onlineDictService;
@Autowired
private OnlineRuleService onlineRuleService;
/**
* 新增在线表单数据。
*
* @param onlineFormDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlineFormDto.formId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody OnlineFormDto onlineFormDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineFormDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineForm onlineForm = MyModelUtil.copyTo(onlineFormDto, OnlineForm.class);
// 验证关联Id的数据合法性
CallResult callResult = onlineFormService.verifyRelatedData(onlineForm, null);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
Set<Long> datasourceIdSet = null;
if (CollUtil.isNotEmpty(onlineFormDto.getDatasourceIdList())) {
datasourceIdSet = new HashSet<>(onlineFormDto.getDatasourceIdList());
if (!onlineDatasourceService.existAllPrimaryKeys(datasourceIdSet)) {
errorMessage = "数据验证失败当前在线表单包含不存在的数据源Id";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
}
onlineForm = onlineFormService.saveNew(onlineForm, datasourceIdSet);
return ResponseResult.success(onlineForm.getFormId());
}
/**
* 更新在线表单数据。
*
* @param onlineFormDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineFormDto onlineFormDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineFormDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineForm onlineForm = MyModelUtil.copyTo(onlineFormDto, OnlineForm.class);
OnlineForm originalOnlineForm = onlineFormService.getById(onlineForm.getFormId());
if (originalOnlineForm == null) {
errorMessage = "数据验证失败,当前在线表单并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
// 验证关联Id的数据合法性
CallResult callResult = onlineFormService.verifyRelatedData(onlineForm, originalOnlineForm);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
Set<Long> datasourceIdSet = null;
if (CollUtil.isNotEmpty(onlineFormDto.getDatasourceIdList())) {
datasourceIdSet = new HashSet<>(onlineFormDto.getDatasourceIdList());
if (!onlineDatasourceService.existAllPrimaryKeys(datasourceIdSet)) {
errorMessage = "数据验证失败当前在线表单包含不存在的数据源Id";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
}
if (!onlineFormService.update(onlineForm, originalOnlineForm, datasourceIdSet)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除在线表单数据。
*
* @param formId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long formId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(formId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineForm originalOnlineForm = onlineFormService.getById(formId);
if (originalOnlineForm == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线表单并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineFormService.remove(formId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的在线表单列表。
*
* @param onlineFormDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineFormVo>> list(
@MyRequestBody OnlineFormDto onlineFormDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineForm onlineFormFilter = MyModelUtil.copyTo(onlineFormDtoFilter, OnlineForm.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineForm.class);
List<OnlineForm> onlineFormList =
onlineFormService.getOnlineFormListWithRelation(onlineFormFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineFormList, OnlineForm.INSTANCE));
}
/**
* 查看指定在线表单对象详情。
*
* @param formId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineFormVo> view(@RequestParam Long formId) {
if (MyCommonUtil.existBlankArgument(formId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineForm onlineForm = onlineFormService.getByIdWithRelation(formId, MyRelationParam.full());
if (onlineForm == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineFormVo onlineFormVo = OnlineForm.INSTANCE.fromModel(onlineForm);
List<OnlineFormDatasource> formDatasourceList = onlineFormService.getFormDatasourceListByFormId(formId);
if (CollUtil.isNotEmpty(formDatasourceList)) {
onlineFormVo.setDatasourceIdList(formDatasourceList.stream()
.map(OnlineFormDatasource::getDatasourceId).collect(Collectors.toList()));
}
return ResponseResult.success(onlineFormVo);
}
/**
* 获取指定在线表单对象在前端渲染时所需的所有数据对象。
*
* @param formId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/render")
public ResponseResult<JSONObject> render(@RequestParam Long formId) {
if (MyCommonUtil.existBlankArgument(formId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineForm onlineForm = onlineFormService.getByIdWithRelation(formId, MyRelationParam.full());
if (onlineForm == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineFormVo onlineFormVo = OnlineForm.INSTANCE.fromModel(onlineForm);
JSONObject jsonObject = new JSONObject();
jsonObject.putOpt("onlineForm", onlineFormVo);
List<OnlineFormDatasource> formDatasourceList = onlineFormService.getFormDatasourceListByFormId(formId);
if (CollUtil.isEmpty(formDatasourceList)) {
return ResponseResult.success(jsonObject);
}
Set<Long> datasourceIdSet = formDatasourceList.stream()
.map(OnlineFormDatasource::getDatasourceId).collect(Collectors.toSet());
List<OnlineDatasource> onlineDatasourceList = onlineDatasourceService.getOnlineDatasourceList(datasourceIdSet);
jsonObject.putOpt("onlineDatasourceList", onlineDatasourceList);
List<OnlineDatasourceRelation> onlineDatasourceRelationList =
onlineDatasourceRelationService.getOnlineDatasourceRelationListByDatasourceIds(datasourceIdSet, null);
if (CollUtil.isNotEmpty(onlineDatasourceRelationList)) {
jsonObject.putOpt("onlineDatasourceRelationList", onlineDatasourceRelationList);
}
List<OnlineDatasourceTable> onlineDatasourceTableList =
onlineDatasourceService.getOnlineDatasourceTableList(datasourceIdSet);
if (CollUtil.isNotEmpty(onlineDatasourceTableList)) {
Set<Long> tableIdSet = onlineDatasourceTableList.stream()
.map(OnlineDatasourceTable::getTableId).collect(Collectors.toSet());
List<OnlineTable> onlineTableList = onlineTableService.getOnlineTableList(tableIdSet);
jsonObject.putOpt("onlineTableList", onlineTableList);
List<OnlineColumn> onlineColumnList = onlineColumnService.getOnlineColumnListByTableIds(tableIdSet);
jsonObject.putOpt("onlineColumnList", onlineColumnList);
List<OnlineVirtualColumn> virtualColumnList =
onlineVirtualColumnService.getOnlineVirtualColumnListByTableIds(tableIdSet);
jsonObject.putOpt("onlineVirtualColumnList", virtualColumnList);
Set<Long> dictIdSet = onlineColumnList.stream()
.filter(c -> c.getDictId() != null).map(OnlineColumn::getDictId).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(dictIdSet)) {
List<OnlineDict> onlineDictList = onlineDictService.getOnlineDictList(dictIdSet);
if (CollUtil.isNotEmpty(onlineDictList)) {
jsonObject.putOpt("onlineDictList", onlineDictList);
}
}
Set<Long> columnIdSet = onlineColumnList.stream().map(OnlineColumn::getColumnId).collect(Collectors.toSet());
List<OnlineColumnRule> colunmRuleList = onlineRuleService.getOnlineColumnRuleListByColumnIds(columnIdSet);
if (CollUtil.isNotEmpty(colunmRuleList)) {
jsonObject.putOpt("onlineColumnRuleList", colunmRuleList);
}
}
return ResponseResult.success(jsonObject);
}
}

View File

@@ -0,0 +1,347 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import com.alibaba.fastjson.JSONObject;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineDatasourceDto;
import com.orangeforms.common.online.dto.OnlinePageDatasourceDto;
import com.orangeforms.common.online.dto.OnlinePageDto;
import com.orangeforms.common.online.model.OnlineDatasource;
import com.orangeforms.common.online.model.OnlinePage;
import com.orangeforms.common.online.model.OnlinePageDatasource;
import com.orangeforms.common.online.model.constant.PageStatus;
import com.orangeforms.common.online.service.OnlineDatasourceService;
import com.orangeforms.common.online.service.OnlineFormService;
import com.orangeforms.common.online.service.OnlinePageService;
import com.orangeforms.common.online.vo.OnlineDatasourceVo;
import com.orangeforms.common.online.vo.OnlinePageDatasourceVo;
import com.orangeforms.common.online.vo.OnlinePageVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 在线表单页面操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "在线表单页面操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlinePage")
public class OnlinePageController {
@Autowired
private OnlinePageService onlinePageService;
@Autowired
private OnlineFormService onlineFormService;
@Autowired
private OnlineDatasourceService onlineDatasourceService;
/**
* 新增在线表单页面数据。
*
* @param onlinePageDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlinePageDto.pageId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody OnlinePageDto onlinePageDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlinePageDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlinePage onlinePage = MyModelUtil.copyTo(onlinePageDto, OnlinePage.class);
onlinePage = onlinePageService.saveNew(onlinePage);
return ResponseResult.success(onlinePage.getPageId());
}
/**
* 更新在线表单页面数据。
*
* @param onlinePageDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlinePageDto onlinePageDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlinePageDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlinePage onlinePage = MyModelUtil.copyTo(onlinePageDto, OnlinePage.class);
OnlinePage originalOnlinePage = onlinePageService.getById(onlinePage.getPageId());
if (originalOnlinePage == null) {
errorMessage = "数据验证失败,当前页面对象并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlinePage.getPageType().equals(originalOnlinePage.getPageType())) {
errorMessage = "数据验证失败,页面类型不能修改!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlinePageService.update(onlinePage, originalOnlinePage)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 更新在线表单页面对象的发布状态字段。
*
* @param pageId 待更新的页面对象主键Id。
* @param published 发布状态。
* @return 应答结果对象。
*/
@PostMapping("/updatePublished")
public ResponseResult<Void> updateStatus(
@MyRequestBody(required = true) Long pageId,
@MyRequestBody(required = true) Boolean published) {
String errorMessage;
// 验证关联Id的数据合法性
OnlinePage originalOnlinePage = onlinePageService.getById(pageId);
if (originalOnlinePage == null) {
errorMessage = "数据验证失败,当前页面对象并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!published.equals(originalOnlinePage.getPublished())) {
if (published && !originalOnlinePage.getStatus().equals(PageStatus.FORM_DESIGN)) {
errorMessage = "数据验证失败,当前页面状态不为 [设计] 状态,因此不能发布!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
onlinePageService.updatePublished(pageId, published);
}
return ResponseResult.success();
}
/**
* 删除在线表单页面数据。
*
* @param pageId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long pageId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(pageId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlinePage originalOnlinePage = onlinePageService.getById(pageId);
if (originalOnlinePage == null) {
errorMessage = "数据验证失败,当前页面对象并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlinePageService.remove(pageId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的在线表单页面列表。
*
* @param onlinePageDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlinePageVo>> list(
@MyRequestBody OnlinePageDto onlinePageDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlinePage onlinePageFilter = MyModelUtil.copyTo(onlinePageDtoFilter, OnlinePage.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlinePage.class);
List<OnlinePage> onlinePageList = onlinePageService.getOnlinePageListWithRelation(onlinePageFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlinePageList, OnlinePage.INSTANCE));
}
/**
* 获取系统中配置的所有Page和表单的列表。
*
* @return 系统中配置的所有Page和表单的列表。
*/
@PostMapping("/listAllPageAndForm")
public ResponseResult<JSONObject> listAllPageAndForm() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("pageList", onlinePageService.getAllList());
jsonObject.put("formList", onlineFormService.getAllList());
return ResponseResult.success(jsonObject);
}
/**
* 查看指定在线表单页面对象详情。
*
* @param pageId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlinePageVo> view(@RequestParam Long pageId) {
if (MyCommonUtil.existBlankArgument(pageId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlinePage onlinePage = onlinePageService.getByIdWithRelation(pageId, MyRelationParam.full());
if (onlinePage == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlinePageVo onlinePageVo = OnlinePage.INSTANCE.fromModel(onlinePage);
return ResponseResult.success(onlinePageVo);
}
/**
* 列出不与指定在线表单页面存在多对多关系的在线数据源列表数据。通常用于查看添加新在线数据源对象的候选列表。
*
* @param pageId 主表关联字段。
* @param onlineDatasourceDtoFilter 在线数据源过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listNotInOnlinePageDatasource")
public ResponseResult<MyPageData<OnlineDatasourceVo>> listNotInOnlinePageDatasource(
@MyRequestBody Long pageId,
@MyRequestBody OnlineDatasourceDto onlineDatasourceDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doOnlinePageDatasourceVerify(pageId);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineDatasource filter = MyModelUtil.copyTo(onlineDatasourceDtoFilter, OnlineDatasource.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineDatasource.class);
List<OnlineDatasource> onlineDatasourceList =
onlineDatasourceService.getNotInOnlineDatasourceListByPageId(pageId, filter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineDatasourceList, OnlineDatasource.INSTANCE));
}
/**
* 列出与指定在线表单页面存在多对多关系的在线数据源列表数据。
*
* @param pageId 主表关联字段。
* @param onlineDatasourceDtoFilter 在线数据源过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,返回符合条件的数据列表。
*/
@PostMapping("/listOnlinePageDatasource")
public ResponseResult<MyPageData<OnlineDatasourceVo>> listOnlinePageDatasource(
@MyRequestBody Long pageId,
@MyRequestBody OnlineDatasourceDto onlineDatasourceDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doOnlinePageDatasourceVerify(pageId);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineDatasource filter = MyModelUtil.copyTo(onlineDatasourceDtoFilter, OnlineDatasource.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineDatasource.class);
List<OnlineDatasource> onlineDatasourceList =
onlineDatasourceService.getOnlineDatasourceListByPageId(pageId, filter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineDatasourceList, OnlineDatasource.INSTANCE));
}
/**
* 批量添加在线表单页面和在线数据源对象的多对多关联关系数据。
*
* @param pageId 主表主键Id。
* @param onlinePageDatasourceDtoList 关联对象列表。
* @return 应答结果对象。
*/
@PostMapping("/addOnlinePageDatasource")
public ResponseResult<Void> addOnlinePageDatasource(
@MyRequestBody Long pageId,
@MyRequestBody(value = "onlinePageDatasourceList", elementType = OnlinePageDatasourceDto.class) List<OnlinePageDatasourceDto> onlinePageDatasourceDtoList) {
if (MyCommonUtil.existBlankArgument(pageId, onlinePageDatasourceDtoList)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
for (OnlinePageDatasourceDto onlinePageDatasource : onlinePageDatasourceDtoList) {
String errorMessage = MyCommonUtil.getModelValidationError(onlinePageDatasource);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
}
Set<Long> datasourceIdSet =
onlinePageDatasourceDtoList.stream().map(OnlinePageDatasourceDto::getDatasourceId).collect(Collectors.toSet());
if (!onlinePageService.existId(pageId)
|| !onlineDatasourceService.existUniqueKeyList("datasourceId", datasourceIdSet)) {
return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
}
List<OnlinePageDatasource> onlinePageDatasourceList =
MyModelUtil.copyCollectionTo(onlinePageDatasourceDtoList, OnlinePageDatasource.class);
onlinePageService.addOnlinePageDatasourceList(onlinePageDatasourceList, pageId);
return ResponseResult.success();
}
/**
* 显示在线表单页面和指定数据源的多对多关联详情数据。
*
* @param pageId 主表主键Id。
* @param datasourceId 从表主键Id。
* @return 应答结果对象,包括中间表详情。
*/
@GetMapping("/viewOnlinePageDatasource")
public ResponseResult<OnlinePageDatasourceVo> viewOnlinePageDatasource(
@RequestParam Long pageId, @RequestParam Long datasourceId) {
if (MyCommonUtil.existBlankArgument(pageId, datasourceId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlinePageDatasource onlinePageDatasource = onlinePageService.getOnlinePageDatasource(pageId, datasourceId);
if (onlinePageDatasource == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlinePageDatasourceVo onlinePageDatasourceVo = MyModelUtil.copyTo(onlinePageDatasource, OnlinePageDatasourceVo.class);
return ResponseResult.success(onlinePageDatasourceVo);
}
/**
* 移除指定在线表单页面和指定数据源的多对多关联关系。
*
* @param pageId 主表主键Id。
* @param datasourceId 从表主键Id。
* @return 应答结果对象。
*/
@PostMapping("/deleteOnlinePageDatasource")
public ResponseResult<Void> deleteOnlinePageDatasource(
@MyRequestBody Long pageId, @MyRequestBody Long datasourceId) {
if (MyCommonUtil.existBlankArgument(pageId, datasourceId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
if (!onlinePageService.removeOnlinePageDatasource(pageId, datasourceId)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
private ResponseResult<Void> doOnlinePageDatasourceVerify(Long pageId) {
if (MyCommonUtil.existBlankArgument(pageId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
if (!onlinePageService.existId(pageId)) {
return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
}
return ResponseResult.success();
}
}

View File

@@ -0,0 +1,148 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineRuleDto;
import com.orangeforms.common.online.model.OnlineRule;
import com.orangeforms.common.online.service.OnlineRuleService;
import com.orangeforms.common.online.vo.OnlineRuleVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
/**
* 验证规则操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "验证规则操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineRule")
public class OnlineRuleController {
@Autowired
private OnlineRuleService onlineRuleService;
/**
* 新增验证规则数据。
*
* @param onlineRuleDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlineRuleDto.ruleId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody OnlineRuleDto onlineRuleDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineRuleDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineRule onlineRule = MyModelUtil.copyTo(onlineRuleDto, OnlineRule.class);
onlineRule = onlineRuleService.saveNew(onlineRule);
return ResponseResult.success(onlineRule.getRuleId());
}
/**
* 更新验证规则数据。
*
* @param onlineRuleDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineRuleDto onlineRuleDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineRuleDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineRule onlineRule = MyModelUtil.copyTo(onlineRuleDto, OnlineRule.class);
OnlineRule originalOnlineRule = onlineRuleService.getById(onlineRule.getRuleId());
if (originalOnlineRule == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线字段规则并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineRuleService.update(onlineRule, originalOnlineRule)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除验证规则数据。
*
* @param ruleId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long ruleId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(ruleId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineRule originalOnlineRule = onlineRuleService.getById(ruleId);
if (originalOnlineRule == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线字段规则并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineRuleService.remove(ruleId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的验证规则列表。
*
* @param onlineRuleDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineRuleVo>> list(
@MyRequestBody OnlineRuleDto onlineRuleDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineRule onlineRuleFilter = MyModelUtil.copyTo(onlineRuleDtoFilter, OnlineRule.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineRule.class);
List<OnlineRule> onlineRuleList = onlineRuleService.getOnlineRuleListWithRelation(onlineRuleFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineRuleList, OnlineRule.INSTANCE));
}
/**
* 查看指定验证规则对象详情。
*
* @param ruleId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineRuleVo> view(@RequestParam Long ruleId) {
if (MyCommonUtil.existBlankArgument(ruleId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineRule onlineRule = onlineRuleService.getByIdWithRelation(ruleId, MyRelationParam.full());
if (onlineRule == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineRuleVo onlineRuleVo = OnlineRule.INSTANCE.fromModel(onlineRule);
return ResponseResult.success(onlineRuleVo);
}
}

View File

@@ -0,0 +1,120 @@
package com.orangeforms.common.online.api.controller;
import io.swagger.annotations.Api;
import cn.jimmyshi.beanquery.BeanQuery;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.MyCommonUtil;
import com.orangeforms.common.core.util.MyModelUtil;
import com.orangeforms.common.core.util.MyPageUtil;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineTableDto;
import com.orangeforms.common.online.model.OnlineTable;
import com.orangeforms.common.online.service.OnlineTableService;
import com.orangeforms.common.online.vo.OnlineTableVo;
import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.List;
import java.util.Map;
/**
* 数据表操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "数据表操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineTable")
public class OnlineTableController {
@Autowired
private OnlineTableService onlineTableService;
/**
* 更新数据表数据。
*
* @param onlineTableDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineTableDto onlineTableDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineTableDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineTable onlineTable = MyModelUtil.copyTo(onlineTableDto, OnlineTable.class);
OnlineTable originalOnlineTable = onlineTableService.getById(onlineTable.getTableId());
if (originalOnlineTable == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前在线数据表并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineTableService.update(onlineTable, originalOnlineTable)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的数据表列表。
*
* @param onlineTableDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineTableVo>> list(
@MyRequestBody OnlineTableDto onlineTableDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineTable onlineTableFilter = MyModelUtil.copyTo(onlineTableDtoFilter, OnlineTable.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineTable.class);
List<OnlineTable> onlineTableList =
onlineTableService.getOnlineTableListWithRelation(onlineTableFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(onlineTableList, OnlineTable.INSTANCE));
}
/**
* 查看指定数据表对象详情。
*
* @param tableId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineTableVo> view(@RequestParam Long tableId) {
if (MyCommonUtil.existBlankArgument(tableId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineTable onlineTable = onlineTableService.getByIdWithRelation(tableId, MyRelationParam.full());
if (onlineTable == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineTableVo onlineTableVo = OnlineTable.INSTANCE.fromModel(onlineTable);
return ResponseResult.success(onlineTableVo);
}
/**
* 以字典形式返回全部数据表数据集合。字典的键值为[tableId, modelName]。
* 白名单接口,登录用户均可访问。
*
* @param filter 过滤对象。
* @return 应答结果对象,包含的数据为 List<Map<String, String>>map中包含两条记录key的值分别是id和namevalue对应具体数据。
*/
@GetMapping("/listDict")
public ResponseResult<List<Map<String, Object>>> listDict(OnlineTable filter) {
List<OnlineTable> resultList = onlineTableService.getListByFilter(filter);
return ResponseResult.success(BeanQuery.select(
"tableId as id", "modelName as name").executeFrom(resultList));
}
}

View File

@@ -0,0 +1,184 @@
package com.orangeforms.common.online.api.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import com.github.pagehelper.page.PageMethod;
import com.orangeforms.common.core.object.*;
import com.orangeforms.common.core.util.*;
import com.orangeforms.common.core.constant.*;
import com.orangeforms.common.core.annotation.MyRequestBody;
import com.orangeforms.common.core.validator.UpdateGroup;
import com.orangeforms.common.online.dto.OnlineVirtualColumnDto;
import com.orangeforms.common.online.model.OnlineVirtualColumn;
import com.orangeforms.common.online.model.constant.VirtualType;
import com.orangeforms.common.online.service.OnlineVirtualColumnService;
import com.orangeforms.common.online.vo.OnlineVirtualColumnVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import javax.validation.groups.Default;
/**
* 虚拟字段操作控制器类。
*
* @author Jerry
* @date 2021-06-06
*/
@Api(tags = "虚拟字段操作接口")
@Slf4j
@RestController
@RequestMapping("${common-online-api.urlPrefix}/onlineVirtualColumn")
public class OnlineVirtualColumnController {
@Autowired
private OnlineVirtualColumnService onlineVirtualColumnService;
/**
* 新增虚拟字段数据。
*
* @param onlineVirtualColumnDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"onlineVirtualColumnDto.virtualColumnId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody OnlineVirtualColumnDto onlineVirtualColumnDto) {
String errorMessage = MyCommonUtil.getModelValidationError(onlineVirtualColumnDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineVirtualColumn onlineVirtualColumn =
MyModelUtil.copyTo(onlineVirtualColumnDto, OnlineVirtualColumn.class);
ResponseResult<Void> verifyResult = this.doVerify(onlineVirtualColumn, null);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
onlineVirtualColumn = onlineVirtualColumnService.saveNew(onlineVirtualColumn);
return ResponseResult.success(onlineVirtualColumn.getVirtualColumnId());
}
/**
* 更新虚拟字段数据。
*
* @param onlineVirtualColumnDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody OnlineVirtualColumnDto onlineVirtualColumnDto) {
String errorMessage = MyCommonUtil.getModelValidationError(
onlineVirtualColumnDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
OnlineVirtualColumn onlineVirtualColumn =
MyModelUtil.copyTo(onlineVirtualColumnDto, OnlineVirtualColumn.class);
OnlineVirtualColumn originalOnlineVirtualColumn =
onlineVirtualColumnService.getById(onlineVirtualColumn.getVirtualColumnId());
if (originalOnlineVirtualColumn == null) {
errorMessage = "数据验证失败,当前虚拟字段并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
ResponseResult<Void> verifyResult = this.doVerify(onlineVirtualColumn, originalOnlineVirtualColumn);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
if (!onlineVirtualColumnService.update(onlineVirtualColumn, originalOnlineVirtualColumn)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除虚拟字段数据。
*
* @param virtualColumnId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long virtualColumnId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(virtualColumnId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
OnlineVirtualColumn originalOnlineVirtualColumn = onlineVirtualColumnService.getById(virtualColumnId);
if (originalOnlineVirtualColumn == null) {
errorMessage = "数据验证失败,当前虚拟字段并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!onlineVirtualColumnService.remove(virtualColumnId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的虚拟字段列表。
*
* @param onlineVirtualColumnDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<OnlineVirtualColumnVo>> list(
@MyRequestBody OnlineVirtualColumnDto onlineVirtualColumnDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
OnlineVirtualColumn onlineVirtualColumnFilter =
MyModelUtil.copyTo(onlineVirtualColumnDtoFilter, OnlineVirtualColumn.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, OnlineVirtualColumn.class);
List<OnlineVirtualColumn> onlineVirtualColumnList =
onlineVirtualColumnService.getOnlineVirtualColumnListWithRelation(onlineVirtualColumnFilter, orderBy);
MyPageData<OnlineVirtualColumnVo> pageData =
MyPageUtil.makeResponseData(onlineVirtualColumnList, OnlineVirtualColumn.INSTANCE);
return ResponseResult.success(pageData);
}
/**
* 查看指定虚拟字段对象详情。
*
* @param virtualColumnId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<OnlineVirtualColumnVo> view(@RequestParam Long virtualColumnId) {
if (MyCommonUtil.existBlankArgument(virtualColumnId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
OnlineVirtualColumn onlineVirtualColumn =
onlineVirtualColumnService.getByIdWithRelation(virtualColumnId, MyRelationParam.full());
if (onlineVirtualColumn == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
OnlineVirtualColumnVo onlineVirtualColumnVo =
OnlineVirtualColumn.INSTANCE.fromModel(onlineVirtualColumn);
return ResponseResult.success(onlineVirtualColumnVo);
}
private ResponseResult<Void> doVerify(
OnlineVirtualColumn virtualColumn, OnlineVirtualColumn originalVirtualColumn) {
if (!virtualColumn.getVirtualType().equals(VirtualType.AGGREGATION)) {
return ResponseResult.success();
}
if (MyCommonUtil.existBlankArgument(
virtualColumn.getAggregationColumnId(),
virtualColumn.getAggregationTableId(),
virtualColumn.getDatasourceId(),
virtualColumn.getRelationId(),
virtualColumn.getAggregationType())) {
String errorMessage = "数据验证失败,数据源、关联关系、聚合表、聚合字段和聚合类型,均不能为空!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
CallResult verifyResult = onlineVirtualColumnService.verifyRelatedData(virtualColumn, null);
if (!verifyResult.isSuccess()) {
return ResponseResult.errorFrom(verifyResult);
}
return ResponseResult.success();
}
}

View File

@@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.orangeforms.common.online.api.config.OnlineApiAutoConfig