瀏覽代碼

多级查询统计结果

LAPTOP-BJJ3IV5R\SIWEI 9 月之前
父節點
當前提交
52ce1e127f

+ 86 - 5
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/impl/table/TableDataSelectServiceImpl.java

@@ -38,15 +38,26 @@ public class TableDataSelectServiceImpl implements TableDataSelectService {
             QueryWrapper<TableResRuleDTO> queryResOneWrapper = new QueryWrapper<>();
             queryResOneWrapper.eq("id", bsm);
             TableResRuleDTO v_table_res_id = tableResRuleMapper.selectOne(queryResOneWrapper);
-            List<List<TableDataVo>> data = dataSelectById(pointEWkt, bsm);
+            List<List<TableDataVo>> data = null;
+            if ("hz".equals(v_table_res_id.getAnalyseType())) {
+                data = dataHzSelectById(pointEWkt, bsm);
+            } else {
+                data = dataSelectById(pointEWkt, bsm);
+            }
             if (data == null || data.size() <= 0) {
                 return retList;
             }
             retList.put("data", data);
-            retList.put("dataname", getTableName(v_table_res_id.getFromTableId()));
+            retList.put("dataname", v_table_res_id.getName());
+
+            //如果到汇总,程序终止
+            if ("hz".equals(v_table_res_id.getAnalyseType())) {
+                return retList;
+            }
 
             QueryWrapper<TableResRuleDTO> queryResWrapper = new QueryWrapper<>();
             queryResWrapper.eq("pid", bsm);
+            queryResWrapper.orderByDesc("create_time");
             List<TableResRuleDTO> v_table_Res = tableResRuleMapper.selectList(queryResWrapper);
             List<Map> childLit = new ArrayList<>();
             for (TableResRuleDTO tableResRuleDTO : v_table_Res) {
@@ -64,11 +75,14 @@ public class TableDataSelectServiceImpl implements TableDataSelectService {
                         Map v_childMap = dataSelectByPoint(geomEWKT, tableResRuleDTO.getId());
                         if (StringUtils.isNotEmpty(v_childMap)) {
                             v_data.addAll((List<Map>) v_childMap.get("data"));
-                            v_child.addAll((List<Map>) v_childMap.get("child"));
+                            Object child = v_childMap.get("child");
+                            if (StringUtils.isNotNull(child)) {
+                                v_child.addAll((List<Map>) v_childMap.get("child"));
+                            }
                         }
                     }
                 }
-                childMap.put("dataname", getTableName(tableResRuleDTO.getAnalyseTableId()));
+                childMap.put("dataname", tableResRuleDTO.getName());
                 childMap.put("data", v_data);
                 childMap.put("child", v_child);
                 childLit.add(childMap);
@@ -141,6 +155,72 @@ public class TableDataSelectServiceImpl implements TableDataSelectService {
         }
     }
 
+    private List<List<TableDataVo>> dataHzSelectById(String pointEWkt, String bsm) {
+        List<List<TableDataVo>> retList = new ArrayList<>();
+        QueryWrapper<TableResRuleDTO> queryResWrapper = new QueryWrapper<>();
+        if (StringUtils.isNotEmpty(bsm)) {
+            queryResWrapper.eq("pid", bsm);
+        } else {
+            return retList;
+        }
+
+        List<TableResRuleDTO> v_table_Res_list = tableResRuleMapper.selectList(queryResWrapper);
+        if (StringUtils.isNull(v_table_Res_list)) {
+            return retList;
+        }
+
+        for (TableResRuleDTO v_table_Res : v_table_Res_list) {
+
+            // 获取from_table_id
+            QueryWrapper<TableDTO> queryFromTableWrapper = new QueryWrapper<>();
+            queryFromTableWrapper.eq("id", v_table_Res.getFromTableId());
+            TableDTO v_from_table = tableMapper.selectOne(queryFromTableWrapper);
+            if (StringUtils.isNull(v_from_table)) {
+                return retList;
+            }
+
+            // 获取analyse_table_id
+            TableDTO v_analyse_table = null;
+            if (StringUtils.isNotEmpty(v_table_Res.getAnalyseTableId())) {
+                QueryWrapper<TableDTO> queryAnalyseTableWrapper = new QueryWrapper<>();
+                queryAnalyseTableWrapper.eq("id", v_table_Res.getAnalyseTableId());
+                v_analyse_table = tableMapper.selectOne(queryAnalyseTableWrapper);
+            }
+
+            List<List<TableDataVo>> table_list = null;
+            String v_analyse_type = v_table_Res.getAnalyseType();
+            if (v_analyse_table == null) {
+                //intersects 相交
+                //intersection 交集
+//            v_table_Res.getAnalyseType();
+                if ("intersection".equals(v_analyse_type)) {
+                    table_list = tableIntersectionHandle(pointEWkt, v_from_table.getTableName(), v_from_table.getId());
+                } else {
+                    table_list = tableIntersectsHandle(pointEWkt, v_from_table.getTableName(), v_from_table.getId());
+                }
+            } else {
+                if ("intersection".equals(v_analyse_type)) {
+                    table_list = tableIntersectionHandle(pointEWkt, v_analyse_table.getTableName(), v_analyse_table.getId());
+                } else {
+                    table_list = tableIntersectsHandle(pointEWkt, v_analyse_table.getTableName(), v_analyse_table.getId());
+                }
+                if (StringUtils.isNotNull(table_list)) {
+                    for (List<TableDataVo> v_table : table_list) {
+                        // 面积
+                        TableDataVo tableDataVo = new TableDataVo();
+                        tableDataVo.setData(v_analyse_table.getTableDescribe());
+                        tableDataVo.setFiledZH("权属类型");
+                        tableDataVo.setFiled("qslx");
+                        v_table.add(tableDataVo);
+                    }
+                }
+            }
+            retList.addAll(table_list);
+        }
+        return retList;
+
+    }
+
 
     //取相交的函数
     private List<List<TableDataVo>> tableIntersectsHandle(String eWkt, String tableName, String tableId) {
@@ -182,7 +262,6 @@ public class TableDataSelectServiceImpl implements TableDataSelectService {
         if (from_kj_ids == null || from_kj_ids.size() == 0) {
             return retList;
         }
-
         List<TableFiledDTO> list = getFieldListByTableId(tableId, 0);
         List<String> outputColumn = new ArrayList<>();
         for (TableFiledDTO v_data : list) {
@@ -198,6 +277,7 @@ public class TableDataSelectServiceImpl implements TableDataSelectService {
             return retList;
         }
 
+
         TargetTableVo targetTableVo = new TargetTableVo();
         targetTableVo.setTargetTableName(from_kj_data);
         targetTableVo.setColumns(outputColumn);
@@ -205,6 +285,7 @@ public class TableDataSelectServiceImpl implements TableDataSelectService {
         targetTableVo.setIsGeography(false);
         targetTableVo.setSrid(SRID);
         targetTableVo.setSiweiArea(true);
+
         List<Map> from_jg = httpAnalyseService.targetTable(targetTableVo);
         if (from_jg == null || from_jg.size() <= 0) {
             return retList;

+ 2 - 2
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/table/TableFiledMapper.xml

@@ -7,8 +7,8 @@
         from t_table_filed_relation t
         left join t_table_filed t1 on t.filed_id = t1.id
         where t.table_id = #{tableId}
-        <if test="isDisplay != null and isDisplay != ''">
-            t.is_display = #{isDisplay}
+        <if test="isDisplay != null">
+           and t.is_display = #{isDisplay}
         </if>
         order by t.sort
     </select>