|
@@ -18,6 +18,7 @@ import com.boman.gen.controller.MyController;
|
|
|
import com.boman.gen.domain.GenTable;
|
|
|
import com.boman.gen.domain.GenTableColumn;
|
|
|
import com.boman.gen.domain.GenTableRelation;
|
|
|
+import com.boman.gen.util.GenUtils;
|
|
|
import com.boman.system.api.RemoteDictDataService;
|
|
|
import com.boman.system.api.domain.SysFile;
|
|
|
import com.boman.web.core.constant.FormDataConstant;
|
|
@@ -32,7 +33,6 @@ import com.boman.web.core.service.update.IBaseUpdateService;
|
|
|
import com.boman.web.core.utils.IdUtils;
|
|
|
import com.google.common.base.Strings;
|
|
|
import com.google.common.collect.Lists;
|
|
|
-import com.google.common.collect.Maps;
|
|
|
import org.apache.commons.collections4.MapUtils;
|
|
|
import org.apache.commons.lang3.BooleanUtils;
|
|
|
import org.slf4j.Logger;
|
|
@@ -82,7 +82,7 @@ public class TableServiceCmdService {
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(TableServiceCmdService.class);
|
|
|
|
|
|
- public final AjaxResult objectSave(BaseTableSaveDTO dto) {
|
|
|
+ public final AjaxResult objectSave(FormDataDto dto) {
|
|
|
AjaxResult result = AjaxResult.success();
|
|
|
|
|
|
TableContext context = TableContext.createContext(dto);
|
|
@@ -123,8 +123,8 @@ public class TableServiceCmdService {
|
|
|
* @param dto 前台传过来的dto
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult objectDelete(BaseTableSaveDTO dto) {
|
|
|
- requireNonNull(dto.getTable());
|
|
|
+ public AjaxResult objectDelete(FormDataDto dto) {
|
|
|
+ requireNonNull(dto.getTable(), "tableName = [" + dto.getTable() + "] 此表不存在");
|
|
|
Long[] idArr = CollectionUtils.listToArray(dto.getIdList());
|
|
|
requireNonNull(idArr);
|
|
|
// 拿到pkName
|
|
@@ -150,8 +150,8 @@ public class TableServiceCmdService {
|
|
|
* @param dto 前台传过来的dto
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult objectLogicDelete(BaseTableSaveDTO dto) {
|
|
|
- requireNonNull(dto.getTable());
|
|
|
+ public AjaxResult objectLogicDelete(FormDataDto dto) {
|
|
|
+ requireNonNull(dto.getTable(), "tableName = [" + dto.getTable() + "] 此表不存在");
|
|
|
Long[] idArr = CollectionUtils.listToArray(dto.getIdList());
|
|
|
requireNonNull(idArr);
|
|
|
|
|
@@ -177,8 +177,8 @@ public class TableServiceCmdService {
|
|
|
* @param dto condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult queryList(BaseTableSaveDTO dto) {
|
|
|
- requireNonNull(dto.getTable());
|
|
|
+ public AjaxResult queryList(FormDataDto dto) {
|
|
|
+ requireNonNull(dto.getTable(), "tableName = [" + dto.getTable() + "] 此表不存在");
|
|
|
|
|
|
// 拿到每个字段对应的查询类型,=、 like、 >、 <
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, dto.getTable());
|
|
@@ -207,12 +207,6 @@ public class TableServiceCmdService {
|
|
|
|
|
|
List<JSONObject> result = selectService.selectByCondition(genTable.getTableName(), condition, packCondition
|
|
|
, showData, dto.getOrderBy(), dto.getLimit(), dto.getOffset());
|
|
|
- // 处理时间
|
|
|
-// handlerDate(result, columns);
|
|
|
- // 处理字典值
|
|
|
-// handlerSysDictData(result, columns);
|
|
|
- // 处理外键
|
|
|
-// handlerForeignKey(result, columns);
|
|
|
|
|
|
handler(result = filter(result, ObjectUtils::isNotEmpty), columns);
|
|
|
// 定制接口
|
|
@@ -316,7 +310,7 @@ public class TableServiceCmdService {
|
|
|
if (jsonObject.containsKey(column.getColumnName())) {
|
|
|
String value = jsonObject.getString(column.getColumnName());
|
|
|
JSONArray fileList = JSON.parseArray(value);
|
|
|
- ArrayList<SysFile> files = Lists.newArrayListWithCapacity(2);
|
|
|
+ ArrayList<SysFile> files = Lists.newArrayListWithCapacity(fileList.size());
|
|
|
for (Object obj : fileList) {
|
|
|
JSONObject fileItem = (JSONObject) obj;
|
|
|
SysFile file = new SysFile();
|
|
@@ -377,24 +371,27 @@ public class TableServiceCmdService {
|
|
|
* @param dto condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult getObject(BaseTableSaveDTO dto) {
|
|
|
- String tableName = requireNonNull(dto.getTable());
|
|
|
+ public AjaxResult getObject(FormDataDto dto) {
|
|
|
+ String tableName = requireNonNull(dto.getTable(), "tableName = [" + dto.getTable() + "] 此表不存在");
|
|
|
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, tableName);
|
|
|
String pkName = IdUtils.getPkName(genTable.getColumns());
|
|
|
JSONObject fixedData = dto.getFixedData();
|
|
|
Long id = fixedData.getLong(FormDataConstant.ID);
|
|
|
- requireNonNull(id);
|
|
|
+ requireNonNull(id, "如果是回显,则传参为此行记录的id, 如为新增,则传-1,传null可不行");
|
|
|
+ Boolean isUi = requireNonNull(dto.getIsUi(), "未传isUi这个参数");
|
|
|
+
|
|
|
List<GenTableColumn> columns = genTable.getColumns();
|
|
|
// id = -1时,查询该表单对应的字段名称
|
|
|
if (ltZero(id)) {
|
|
|
- return getByTableName(tableName, columns);
|
|
|
+ return getByTableName(tableName, columns, isUi);
|
|
|
}
|
|
|
|
|
|
// 默认查所有字段,不支持自定义
|
|
|
JSONObject json = selectService.selectById(tableName, pkName, id);
|
|
|
requireNonNull(json, "id 为[" + id + "]的数据不存在, 表名为[" + tableName + "]");
|
|
|
- List<GenTableColumn> parentColumns = filter(columns, col -> HR.equalsIgnoreCase(col.getHtmlType()));
|
|
|
+ List<GenTableColumn> parentColumns = GenUtils.filterHrAndSort(columns);
|
|
|
+
|
|
|
// 处理成hr的形式
|
|
|
for (GenTableColumn hrColumn : parentColumns) {
|
|
|
List<GenTableColumn> children = Lists.newArrayListWithCapacity(16);
|
|
@@ -504,7 +501,7 @@ public class TableServiceCmdService {
|
|
|
* @param condition condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult getTableQuery(BaseTableSaveDTO condition) {
|
|
|
+ public AjaxResult getTableQuery(FormDataDto condition) {
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
|
|
|
List<GenTableColumn> columns = genTable.getColumns();
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
@@ -530,7 +527,7 @@ public class TableServiceCmdService {
|
|
|
// genTable.getMenuRole() 暂时数据库没有数据,
|
|
|
jsonObject.put(FormDataConstant.BUTTON_LIST, Strings.nullToEmpty(genTable.getMenuRole()));
|
|
|
|
|
|
- // jsonObject.put(FormDataConstant.TABLE_HEAD_LIST, getTableHeadList(genTable));
|
|
|
+ jsonObject.put(ViewConst.VIEW_TYPE, genTable.getTplCategory());
|
|
|
return AjaxResult.success(jsonObject);
|
|
|
}
|
|
|
|
|
@@ -546,7 +543,7 @@ public class TableServiceCmdService {
|
|
|
* @param condition condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult getQueryParam(BaseTableSaveDTO condition) {
|
|
|
+ public AjaxResult getQueryParam(FormDataDto condition) {
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
|
|
|
List<GenTableColumn> columns = genTable.getColumns();
|
|
|
// 查询字段
|
|
@@ -576,7 +573,7 @@ public class TableServiceCmdService {
|
|
|
* @param condition condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult getTableHead(BaseTableSaveDTO condition) {
|
|
|
+ public AjaxResult getTableHead(FormDataDto condition) {
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
|
|
|
return AjaxResult.success(getTableHeadList(genTable));
|
|
|
}
|
|
@@ -611,7 +608,7 @@ public class TableServiceCmdService {
|
|
|
* @param condition condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult objectTab(BaseTableSaveDTO condition) {
|
|
|
+ public AjaxResult objectTab(FormDataDto condition) {
|
|
|
//获取到主表对象
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.RELATION, condition.getTable());
|
|
|
//从主表对象的relationList中获取出所有子表表对象
|
|
@@ -652,7 +649,7 @@ public class TableServiceCmdService {
|
|
|
* @param isSubmit 提交true, 反提交false
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult objectSubmit(BaseTableSaveDTO condition, boolean isSubmit) {
|
|
|
+ public AjaxResult objectSubmit(FormDataDto condition, boolean isSubmit) {
|
|
|
GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
|
|
|
List<JSONObject> commitData = condition.getCommitData();
|
|
|
requireNonNull(commitData, "啥都不提交, 调什么接口??");
|
|
@@ -795,46 +792,55 @@ public class TableServiceCmdService {
|
|
|
* @param condition condition
|
|
|
* @return com.boman.common.core.web.domain.AjaxResult
|
|
|
*/
|
|
|
- public AjaxResult getByTableName(BaseTableSaveDTO condition) {
|
|
|
- requireNonNull(condition.getTable(), "表名为空");
|
|
|
- requireNonNull(condition.getIsUi(), "根据表名获取表字段,未传 isUi 这个字段");
|
|
|
- GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
|
|
|
- List<GenTableColumn> allColumns = genTable.getColumns();
|
|
|
- // 把新增可见的列过滤出来
|
|
|
-// List<GenTableColumn> returnData = ColumnUtils.filterNeedShowData(allColumns, 0, INSERT_VISIBLE::equals);
|
|
|
- // 普通的展示,不带折叠的
|
|
|
- if (BooleanUtils.isFalse(condition.getIsUi())) {
|
|
|
- packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
|
|
|
- return AjaxResult.success(genTable);
|
|
|
- } else {
|
|
|
- // 带折叠的展示
|
|
|
- return getByTableName(genTable.getTableName(), allColumns);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public AjaxResult getByTableName(String tableName, List<GenTableColumn> allColumns) {
|
|
|
- List<GenTableColumn> parentColumns = filter(allColumns, col -> HR.equalsIgnoreCase(col.getHtmlType()));
|
|
|
- allColumns = filterData(allColumns, 0, MaskConstant.LIST_VISIBLE::equals);
|
|
|
-
|
|
|
- // 把孩子放入父亲的怀抱
|
|
|
- for (GenTableColumn hrColumn : parentColumns) {
|
|
|
- List<GenTableColumn> children = Lists.newArrayListWithCapacity(16);
|
|
|
- for (GenTableColumn column : allColumns) {
|
|
|
- if (hrColumn.getColumnId().equals(column.getHrParentId())) {
|
|
|
- children.add(column);
|
|
|
+// public AjaxResult getByTableName(BaseTableSaveDTO condition) {
|
|
|
+// requireNonNull(condition.getTable(), "tableName = [" + condition.getTable() + "] 此表不存在");
|
|
|
+// requireNonNull(condition.getIsUi(), "根据表名获取表字段,未传 isUi 这个字段");
|
|
|
+// GenTable genTable = getTableFromRedisByTableName(RedisKey.TABLE_INFO, condition.getTable());
|
|
|
+// List<GenTableColumn> allColumns = genTable.getColumns();
|
|
|
+// // 把新增可见的列过滤出来
|
|
|
+//// List<GenTableColumn> returnData = ColumnUtils.filterNeedShowData(allColumns, 0, INSERT_VISIBLE::equals);
|
|
|
+// // 普通的展示,不带折叠的
|
|
|
+// if (BooleanUtils.isFalse(condition.getIsUi())) {
|
|
|
+// packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
|
|
|
+// return AjaxResult.success(genTable);
|
|
|
+// } else {
|
|
|
+// // 带折叠的展示
|
|
|
+// return getByTableName(genTable.getTableName(), allColumns, true);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ public AjaxResult getByTableName(String tableName, List<GenTableColumn> allColumns, Boolean isUi) {
|
|
|
+ List<GenTableColumn> resultCols;
|
|
|
+ List<GenTableColumn> parentColumns = GenUtils.filterHrAndSort(allColumns);
|
|
|
+ // 所有新增可见的列
|
|
|
+ allColumns = filterData(allColumns, 0, MaskConstant.INSERT_VISIBLE::equals);
|
|
|
+ // 带折叠
|
|
|
+ if (BooleanUtils.isTrue(isUi)) {
|
|
|
+ // 把孩子放入父亲的怀抱
|
|
|
+ for (GenTableColumn hrColumn : parentColumns) {
|
|
|
+ List<GenTableColumn> children = Lists.newArrayListWithCapacity(16);
|
|
|
+ for (GenTableColumn column : allColumns) {
|
|
|
+ if (hrColumn.getColumnId().equals(column.getHrParentId())) {
|
|
|
+ children.add(column);
|
|
|
+ }
|
|
|
}
|
|
|
+ hrColumn.setHrChildren(children);
|
|
|
}
|
|
|
- hrColumn.setHrChildren(children);
|
|
|
- }
|
|
|
|
|
|
- // 把孩子对应的字典值放进去
|
|
|
- for (GenTableColumn hrColumn : parentColumns) {
|
|
|
- packDictDataToColumns(hrColumn.getHrChildren(), ObjectUtils::isNotEmpty);
|
|
|
+ // 把孩子对应的字典值放进去
|
|
|
+ for (GenTableColumn hrColumn : parentColumns) {
|
|
|
+ packDictDataToColumns(hrColumn.getHrChildren(), ObjectUtils::isNotEmpty);
|
|
|
+ }
|
|
|
+ resultCols = parentColumns;
|
|
|
+ } else {
|
|
|
+ // 不带折叠
|
|
|
+ packDictDataToColumns(allColumns, ObjectUtils::isNotEmpty);
|
|
|
+ resultCols = allColumns;
|
|
|
}
|
|
|
|
|
|
JSONObject result = new JSONObject();
|
|
|
result.put(BUTTON_LIST, getButton(tableName));
|
|
|
- result.put(SHOW_DATA, parentColumns);
|
|
|
+ result.put(SHOW_DATA, resultCols);
|
|
|
return AjaxResult.success(result);
|
|
|
}
|
|
|
|