Browse Source

调整代码,将获取类目的代码抽出来。

yuj 7 years ago
parent
commit
6253bc0d32

+ 52 - 44
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java

@@ -4225,51 +4225,8 @@ public class GoodsServiceImpl implements GoodsService {
                 List<KindHierarchicalCount> kindHierarchicals = jdbcTemplate.query(String.format(querySQL, startNumber, pageSize), new BeanPropertyRowMapper<>(KindHierarchicalCount.class));
                 long l3 = System.currentTimeMillis();
                 logger.info("获取KindHierarchicalCount需要多少时间:" + (l3 - l2));
-                List<Long> ids = new ArrayList<>();
-                for (KindHierarchicalCount kindHierarchical : kindHierarchicals) {
-                    if (kindHierarchical.getKindId() != null) {
-                        ids.add(kindHierarchical.getKindId());
-                    }
-                }
                 long l4 = System.currentTimeMillis();
-                Map<String, List<Long>> map = null;
-                for (int i = 0; (i < 3) && CollectionUtils.isNotEmpty(ids); i++) {
-                    // i = 0 时表示 获取本级, = 1 时代表获取第二层,= 2 时代表获取顶层
-                    map = new HashMap<>();
-                    map.put("ids", ids);
-                    List<Map<String, Object>> mapQuery = namedParameterJdbcTemplate.queryForList("select c.ki_id as id, c.ki_name as name, c.ki_parentid as pid " +
-                            "from product$kind c where c.ki_id in (:ids)", map);
-                    ids = new ArrayList<>();
-                    for (Map<String, Object> mapRest : mapQuery) {
-                        Object id = mapRest.get("id");
-
-                        Object pid = mapRest.get("pid");
-                        if (pid != null) {
-                            ids.add(Long.valueOf(pid.toString()));
-                        }
-                        for (KindHierarchicalCount hierarchical : kindHierarchicals) {
-                            if (i == 0) {
-                                if (id.equals(hierarchical.getKindId())) {
-                                    if (pid != null) {
-                                        hierarchical.setSecondId(Long.valueOf(pid.toString()));
-                                    }
-                                }
-                            } else if (i == 1) {
-                                if (id.equals(hierarchical.getSecondId())) {
-                                    hierarchical.setSecondKind(StringUtilB2C.getStr(mapRest.get("name")));
-                                    if (pid != null) {
-                                        hierarchical.setFirstId(Long.valueOf(pid.toString()));
-                                    }
-                                }
-                            } else if (i == 2) {
-                                if (id.equals(hierarchical.getFirstId())) {
-                                    hierarchical.setFirstKind(StringUtilB2C.getStr(mapRest.get("name")));
-                                }
-                            }
-                        }
-
-                    }
-                }
+                getParentKind(kindHierarchicals);
                 long l5 = System.currentTimeMillis();
                 logger.info("获取父级类目的时间:" + (l5 - l4));
 
@@ -4291,6 +4248,57 @@ public class GoodsServiceImpl implements GoodsService {
         logger.info("批量导出类目", System.currentTimeMillis() + "结束时间");
     }
 
+    /**
+     * 根据物料id和类目信息,获取父级类目
+     * @param kindHierarchicals 类目信息
+     */
+    private void getParentKind(List<KindHierarchicalCount> kindHierarchicals) {
+        List<Long> ids = new ArrayList<>();
+        for (KindHierarchicalCount kindHierarchical : kindHierarchicals) {
+            if (kindHierarchical.getKindId() != null) {
+                ids.add(kindHierarchical.getKindId());
+            }
+        }
+        Map<String, List<Long>> map = null;
+        for (int i = 0; (i < 3) && CollectionUtils.isNotEmpty(ids); i++) {
+            // i = 0 时表示 获取本级, = 1 时代表获取第二层,= 2 时代表获取顶层
+            map = new HashMap<>();
+            map.put("ids", ids);
+            List<Map<String, Object>> mapQuery = namedParameterJdbcTemplate.queryForList("select c.ki_id as id, c.ki_name as name, c.ki_parentid as pid " +
+                    "from product$kind c where c.ki_id in (:ids)", map);
+            ids = new ArrayList<>();
+            for (Map<String, Object> mapRest : mapQuery) {
+                Object id = mapRest.get("id");
+
+                Object pid = mapRest.get("pid");
+                if (pid != null) {
+                    ids.add(Long.valueOf(pid.toString()));
+                }
+                for (KindHierarchicalCount hierarchical : kindHierarchicals) {
+                    if (i == 0) {
+                        if (id.equals(hierarchical.getKindId())) {
+                            if (pid != null) {
+                                hierarchical.setSecondId(Long.valueOf(pid.toString()));
+                            }
+                        }
+                    } else if (i == 1) {
+                        if (id.equals(hierarchical.getSecondId())) {
+                            hierarchical.setSecondKind(StringUtilB2C.getStr(mapRest.get("name")));
+                            if (pid != null) {
+                                hierarchical.setFirstId(Long.valueOf(pid.toString()));
+                            }
+                        }
+                    } else if (i == 2) {
+                        if (id.equals(hierarchical.getFirstId())) {
+                            hierarchical.setFirstKind(StringUtilB2C.getStr(mapRest.get("name")));
+                        }
+                    }
+                }
+
+            }
+        }
+    }
+
     /**
      * 批量导出数据
      * TODO 后续提成公共方法,暂时没写好