Browse Source

批量安装BUG

lin 4 years ago
parent
commit
a02e1fe998

+ 15 - 0
smart-city-platform/src/main/java/com/bz/smart_city/commom/util/TreeUtil.java

@@ -283,6 +283,19 @@ public class TreeUtil {
             return null;
         }
     }
+    public static List<CustomerRateDto> getCustomerRateTreeNode(List<CustomerRateDto> list,Integer id){
+
+        if (list != null) {
+            for (CustomerRateDto customerRateDto : list) {
+                if(customerRateDto.getCustomerId().equals(id)){
+                    return newArrayList(customerRateDto);
+                }
+                return getCustomerRateTreeNode(customerRateDto.getChildren(),id);
+            }
+        }
+        return newArrayList();
+    }
+
 
     //递归后续遍历多叉树
     public static void  postorderTraversalCustomerRate(List<CustomerRateDto> list){
@@ -366,4 +379,6 @@ public class TreeUtil {
             }
         }
     }
+
+
 }

+ 2 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dao/CustomerMapper.java

@@ -51,4 +51,6 @@ public interface CustomerMapper {
     List<Integer> findSubIds(@Param("customerId") Integer customerId);
 
     List<Integer> findAllSubIds(@Param("customerId") Integer customerId);
+
+    List<Integer> findAllIds(@Param("customerId") Integer customerId);
 }

+ 2 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/CustomerService.java

@@ -52,4 +52,6 @@ public interface CustomerService {
 
     /*获取所有子类ID*/
     List<Integer> findAllSubIds(Integer customerId);
+
+    List<Integer> findAllIds(Integer customerId);
 }

+ 5 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/CustomerServiceImpl.java

@@ -245,4 +245,9 @@ public class CustomerServiceImpl implements CustomerService {
     public List<Integer> findAllSubIds(Integer customerId) {
         return customerMapper.findAllSubIds(customerId);
     }
+
+    @Override
+    public List<Integer> findAllIds(Integer customerId) {
+        return customerMapper.findAllIds(customerId);
+    }
 }

+ 7 - 1
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/StatMeterReadRateByBuildingServiceImpl.java

@@ -333,7 +333,7 @@ public class StatMeterReadRateByBuildingServiceImpl implements StatMeterReadRate
         //2、根据数据项查询客户
         //List<Customer> customerList = customerService.getCustomerListByItem(loginUser.getSiteId(), buildingIds, customerId);
 
-        List<Integer> customerIds = customerId != null?customerService.findAllSubIds(customerId):null;
+        List<Integer> customerIds = customerId != null?customerService.findAllIds(customerId):null;
 
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
         //Integer startDate = Integer.valueOf(LocalDate.now().plusDays(-1).format(formatter));
@@ -383,10 +383,16 @@ public class StatMeterReadRateByBuildingServiceImpl implements StatMeterReadRate
 
         //4、组装树形数据
         List<CustomerRateDto> list = TreeUtil.getCustomerRateTree(customerRateDtoList, 0, 1);
+        if (list == null) {
+            return newArrayList();
+        }
         List<CustomerRateDto> newList = list.stream().filter(p -> (p.getList() != null && p.getList().size() > 0) || (p.getChildren() != null && p.getChildren().size() > 0)).collect(Collectors.toList());
         //List<CustomerRateDto> newList = list.stream().filter(p -> p.getCustomerId()==121).collect(Collectors.toList());
         TreeUtil.postorderTraversalCustomerRate(newList);
         TreeUtil.postorderTraversalCustomerRateCalculate(newList);
+        if (customerId != null) {
+            return TreeUtil.getCustomerRateTreeNode(newList,customerId);
+        }
         return newList;
     }
 

+ 33 - 0
smart-city-platform/src/main/resources/mapper/CustomerMapper.xml

@@ -318,6 +318,39 @@
         ORDER BY level, id;
     </select>
 
+    <select id="findAllIds" resultType="java.lang.Integer">
+        SELECT  DATA.id FROM(
+        SELECT
+        @ids as _ids,
+        (   SELECT @ids := GROUP_CONCAT(id)
+        FROM sc_customer
+        WHERE FIND_IN_SET(parent_id, @ids)
+        ) as cids,
+        @l := @l+1 as level
+        FROM sc_customer,
+        (SELECT @ids :=#{customerId}, @l := 0 ) b
+        WHERE @ids IS NOT NULL
+        ) id, sc_customer DATA
+        WHERE FIND_IN_SET(DATA.id, ID._ids)
+
+        UNION
+
+        SELECT
+        T1._id as id
+        FROM
+        (
+        SELECT
+        @r AS _id,
+        ( SELECT @r := parent_id FROM sc_customer WHERE id = _id ) AS parent_id,
+        @l := @l + 1 AS lvl
+        FROM
+        ( SELECT @r := #{customerId}, @l := 0 ) vars,
+        sc_customer h
+        WHERE
+        @r <![CDATA[ <> ]]> 0
+        ) T1
+    </select>
+
 
 </mapper>