Browse Source

调整统计接口:产品-供应商数量接口

wanyuan 9 months ago
parent
commit
e99b5eacbb

+ 13 - 10
src/main/java/com/kingtom/shengtai/app/srm/service/impl/ProductDirServiceImpl.java

@@ -219,16 +219,19 @@ public class ProductDirServiceImpl extends BaseServiceImpl<IProductDirDao, Produ
 
     @Override
     public List<Map<String, Object>> findSupplierCountGroupByProduct(boolean filterCount0){
-        //SELECT a.id,A.name,COUNT ( b.sid ) AS c FROM product_dir AS a LEFT JOIN ( SELECT SUBSTRING (
-        // json_array_elements ( product :: json ) :: TEXT, 2, 36 ) AS pid, id AS sid FROM srm_supplier ) AS b ON a
-        // .id = b.pid GROUP BY a.id, a.name HAVING COUNT ( b.sid ) > 0;
-        QueryWrapper wrapper =
-                QueryWrapper.create().select("a.id", "A.name", "COUNT ( b.sid ) AS c").from(PRODUCT_DIR).as("a")
-                        .leftJoin(QueryWrapper.create()
-                                .select("SUBSTRING ( json_array_elements ( product :: json ) :: TEXT, 2, 36 ) AS pid",
-                                        "id AS sid").from("srm_supplier")).as("b").on("a.id = b.pid")
-                        .groupBy("a.id", "a.name")
-                        .having(QueryCondition.createEmpty().and("COUNT ( b.sid ) > 0").when(filterCount0));
+        //SELECT a.ID, a.NAME, COUNT ( b.sid ) AS c
+        //FROM( SELECT id, name FROM product_dir WHERE id NOT IN ( SELECT DISTINCT parent_id FROM product_dir ) ) AS a
+        //LEFT JOIN ( SELECT SUBSTRING ( json_array_elements ( product :: JSON ) :: TEXT, 2, 36 ) AS pid, id AS sid
+        // FROM srm_supplier ) AS b ON a.ID = b.pid
+        //GROUP BY a.ID, a.NAME  HAVING COUNT ( b.sid ) > 0 ORDER BY c DESC;
+        QueryWrapper wrapper = QueryWrapper.create().select("a.id", "a.name", "COUNT ( b.sid ) AS c")
+                .from(QueryWrapper.create().select("id,name").from("product_dir").where("id not in(select DISTINCT parent_id from product_dir)")).as("a")
+                .leftJoin(QueryWrapper.create()
+                                      .select("SUBSTRING ( json_array_elements ( product :: json ) :: TEXT, 2, 36 ) AS pid","id AS sid")
+                                      .from("srm_supplier")).as("b").on("a.id = b.pid")
+                .groupBy("a.id", "a.name")
+                .having(QueryCondition.createEmpty().and("COUNT ( b.sid ) > 0").when(filterCount0))
+                .orderBy("c desc");
         List<Row> objects = mapper.selectRowsByQuery(wrapper);
         return objects.stream().map(HashMap::new).collect(Collectors.toList());
     }