shiqian 4 年之前
父节点
当前提交
ebeb0fdde1

+ 1 - 1
boman-api/boman-api-gen/src/main/java/com/boman/gen/api/RemoteGenTableColumnService.java

@@ -26,7 +26,7 @@ public interface RemoteGenTableColumnService {
     @GetMapping(value = "/genTableColumn/{tableId}")
     AjaxResult listColumnsByTableId(@PathVariable("tableId") Long tableId);
 
-    @GetMapping(value = "/pk/{columnId}")
+    @GetMapping(value = "/genTableColumn/pk/{columnId}")
     GenTableColumn getById(@PathVariable("columnId") Long columnId);
 
 

+ 12 - 0
boman-common/boman-common-core/src/main/java/com/boman/common/core/utils/obj/ObjectUtils.java

@@ -194,6 +194,18 @@ public class ObjectUtils {
                 .stream().filter(predicate).collect(Collectors.toList());
     }
 
+    /**
+     * 功能描述: 根据规则过滤
+     *
+     * @param input     原数据
+     * @param predicate FunctionalInterface
+     * @return java.util.List<T>
+     */
+    public static <T> T filterOne(List<T> input, Predicate<T> predicate) {
+        return requireNonNull(input, "list is null")
+                .stream().filter(predicate).findFirst().orElse(null);
+    }
+
     /**
      * 功能描述: 根据规则获取
      *

+ 32 - 18
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -27,10 +27,10 @@ import com.boman.web.core.service.save.IBaseSaveService;
 import com.boman.web.core.service.select.IBaseSelectService;
 import com.boman.web.core.service.submit.IBaseSubmitService;
 import com.boman.web.core.service.update.IBaseUpdateService;
-import com.boman.web.core.utils.ColumnUtils;
 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;
@@ -257,41 +257,55 @@ public class TableServiceCmdService {
         return AjaxResult.success(rows);
     }
 
+    /**
+     * 功能描述: 处理外键
+     *
+     * @param result  result
+     * @param columns 该表对应的所有的列
+     */
     private void handlerForeignKey(List<JSONObject> result, List<GenTableColumn> columns) {
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(result)) {
             return;
         }
-
         // 拿到所有有fk的列
-        columns = filter(columns, col -> ObjectUtils.isNotEmpty(col.getForeignKey()));
-        for (GenTableColumn column : columns) {
+        List<GenTableColumn> fkColumns = filter(columns, col -> ObjectUtils.isNotEmpty(col.getForeignKey()));
+
+        for (GenTableColumn column : fkColumns) {
             JSONObject jsonObject = new JSONObject();
-//            Long selfTableId = column.getTableId();
             String selfColumnName = column.getColumnName();
             for (JSONObject json : result) {
-                if (json.containsKey(selfColumnName)) {
-                    Object value = json.get(selfColumnName);
-
+                if (json.containsKey(selfColumnName.toUpperCase()) || json.containsKey(selfColumnName.toLowerCase())) {
+                    // 外键在table_column中的id
                     Long fkColumnId = Long.parseLong(column.getForeignKey());
                     GenTableColumn fkTableColumn = remoteGenTableColumnService.getById(fkColumnId);
+                    String fkColumnName = fkTableColumn.getColumnName();
                     Long fkTableId = fkTableColumn.getTableId();
                     GenTable fkGenTable = remoteGenTableService.getByTableId(fkTableId);
-                    String fkTableName= fkGenTable.getTableName();
-
-                    // select * from fkTableName where fkTableColumn.columnName = value;
-
-//                    jsonObject.put(columnName, "");
-//                    jsonObject.put("columnName", "");
-
+                    // 显示键 table_column 表的id
+                    Long dkColumnId = fkGenTable.getDkColumn();
+                    GenTableColumn dkTableColumn = remoteGenTableColumnService.getById(dkColumnId);
+                    String dkColumnName = dkTableColumn.getColumnName();
+                    String fkTableName = fkGenTable.getTableName();
+                    Object primaryTableFKvalue = json.get(selfColumnName);
+                    // "DEPT_ID": {"value": 104, "name": "开发部"}
+                    Map<String, Object> param = Maps.newHashMap();
+                    param.put(fkColumnName, primaryTableFKvalue);
+                    List<JSONObject> fkList = selectService.selectByMap(fkTableName, param);
+
+                    for (JSONObject object : fkList) {
+                        Object value = object.get(dkColumnName);
+                        jsonObject.put(SINGLE_OBJ_NAME, primaryTableFKvalue);
+                        jsonObject.put(SINGLE_OBJ_VALUE, value);
+                        json.put(selfColumnName.toLowerCase(), jsonObject);
+                        break;
+                    }
                 }
             }
-
-
         }
     }
 
     /**
-     * 功能描述: 把timeStamp转为string
+     * 功能描述: 把timeStamp转为string, 默认类型为:YYYY_MM_DD
      *
      * @param result 被转的数据
      */

+ 14 - 0
boman-web-core/src/main/java/com/boman/web/core/service/select/BaseSelectServiceImpl.java

@@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 
 import static com.boman.common.core.utils.obj.ObjectUtils.requireNonNull;
 
@@ -46,6 +47,19 @@ public class BaseSelectServiceImpl implements IBaseSelectService {
         return mapper.selectByCondition(tableName, condition, packCondition, showData, orderBy, limit, offset);
     }
 
+    /**
+     * 功能描述: 根据tableName和map(属性名和属性值)进行查查
+     *
+     * @param tableName tableName
+     * @param param     属性名和属性值
+     * @return java.util.List<com.alibaba.fastjson.JSONObject>
+     */
+    @Override
+    public List<JSONObject> selectByMap(String tableName, Map<String, Object> param) {
+        requireNonNull(tableName, "表名为空");
+        return mapper.selectByMap(tableName, param);
+    }
+
     /**
      * 功能描述: 根据条件查询
      *

+ 10 - 0
boman-web-core/src/main/java/com/boman/web/core/service/select/IBaseSelectService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author shiqian
@@ -11,6 +12,15 @@ import java.util.List;
  **/
 public interface IBaseSelectService {
 
+    /**
+     * 功能描述: 根据tableName和map(属性名和属性值)进行查查
+     *
+     * @param tableName tableName
+     * @param param     属性名和属性值
+     * @return java.util.List<com.alibaba.fastjson.JSONObject>
+     */
+    List<JSONObject> selectByMap(String tableName, Map<String, Object> param);
+
     /**
      * 功能描述: 根据条件查询
      *

+ 5 - 3
boman-web-core/src/main/java/com/boman/web/core/utils/ColumnUtils.java

@@ -93,7 +93,8 @@ public class ColumnUtils {
         if (dataIsEmpty) {
             // data为空,拿出所有列中列表可见的
             for (GenTableColumn allColumn : allColumns) {
-                String columnName = allColumn.getColumnName().toUpperCase();
+                String columnName = allColumn.getColumnName();
+//                String columnName = allColumn.getColumnName().toUpperCase();
                 String[] maskArray = requireNonNull(allColumn.getMask(), "mask is empty").split("");
                 assert maskArray.length == 6;
                 String maskValue = maskArray[sort];
@@ -104,8 +105,9 @@ public class ColumnUtils {
         } else {
             // data不为空,拿出前端传过来的列中可见的
             for (GenTableColumn allColumn : allColumns) {
-                String columnName = allColumn.getColumnName().toUpperCase();
-                if (data.contains(columnName)) {
+                String columnName = allColumn.getColumnName();
+//                String columnName = allColumn.getColumnName().toUpperCase();
+                if (data.contains(columnName.toUpperCase()) || data.contains(columnName.toLowerCase())) {
                     String[] maskArray = requireNonNull(allColumn.getMask(), "mask is empty").split("");
                     assert maskArray.length == 6;
                     String maskValue = maskArray[sort];