2 Коммиты 5184978306 ... 9ab5d0afe3

Автор SHA1 Сообщение Дата
  fyz 9ab5d0afe3 供应商档案分页获取 1 месяц назад
  fyz b01d39e1e5 供应商档案同步更新 1 месяц назад

+ 17 - 18
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/Impl/SupplierServiceImpl.java

@@ -40,7 +40,7 @@ public class SupplierServiceImpl implements SupplierService {
     @Autowired
     private DDClient_Notice ddClient_notice;
     @Override
-    public List<Map<String,Object>>  getAllSupplierInfos() {
+    public List<Map<String,Object>> getAllSupplierInfos(int startRow) {
         log.info("开始从金蝶获取供应商信息");
         Map meta = _getMeta();
         meta = (Map) meta.get("SUPPLIER");
@@ -49,7 +49,8 @@ public class SupplierServiceImpl implements SupplierService {
         Query query = new Query();
         query.setFormId("BD_Supplier");
         query.setFieldKeys(fieldKeys);
-        query.setLimit(10000);
+        query.setLimit(9999);
+        query.setStartRow(startRow);
         try {
             //调用接口
             List<List<Object>> billQuery = client.executeBillQuery(JSON.toJSONString(query));
@@ -90,8 +91,20 @@ public class SupplierServiceImpl implements SupplierService {
 //        String isoStartTime = startTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
 //        String isoEndTime = startTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
         //获取所有供应商数据
-        List<Map<String,Object>> allSupplierInfos = getAllSupplierInfos();
-        log.info("获取供应商:{}",allSupplierInfos.toString());
+        List<Map<String,Object>> allSupplierInfos = new ArrayList<>();
+        boolean hasMore = true;
+        int page = 0;
+        while (hasMore){
+            int startRow = page * 2000;
+            List<Map<String,Object>> supplierInfos = getAllSupplierInfos(startRow);
+            log.info("单次获取供应商:{}",supplierInfos.toString());
+            allSupplierInfos.addAll(supplierInfos);
+            if (supplierInfos.size() < 2000){
+                hasMore = false;
+            }else {
+                page++;
+            }
+        }
         //所有供应商数据分组过滤是否含统一信用代码
         Map<String, List<Map<String, Object>>> grouped = allSupplierInfos.stream()
                 .filter(map -> startTime.isBefore(LocalDateTime.parse(UtilMap.getString(map, "FModifyDate"))) &&
@@ -114,20 +127,6 @@ public class SupplierServiceImpl implements SupplierService {
                 })
                 .collect(Collectors.toList());
 
-//        Map<String, List<Map<String, String>>> collect = result.stream()
-//                .collect(Collectors.groupingBy(
-//                        m -> m.get("FName") + "|" + m.get("FNumber") + "|" + m.get("FSOCIALCRECODE"), // 组合键
-//                        Collectors.mapping(
-//                                map -> {
-//                                    // 将每个记录的账号和开户行提取为独立的 Map
-//                                    Map<String, String> accountInfo = new HashMap<>();
-//                                    accountInfo.put("FBankCode", (String) map.get("FBankCode"));
-//                                    accountInfo.put("FOpenBankName", (String) map.get("FOpenBankName"));
-//                                    return accountInfo;
-//                                },
-//                                Collectors.toList()                       // 组内收集为 List
-//                        )
-//                ));
         Map<String, List<Map<String, String>>> collect = result.stream()
                 .collect(Collectors.groupingBy(
                         m -> m.get("FName") + "|" + m.get("FNumber") + "|" + m.get("FSOCIALCRECODE"),

+ 1 - 2
mjava-jiuyousimu/src/main/java/com/malk/jiuyousimu/service/SupplierService.java

@@ -15,8 +15,7 @@ public interface SupplierService {
      * 获取金蝶所有供应商信息
      * @return
      */
-    List<Map<String,Object>>  getAllSupplierInfos();
-
+    List<Map<String,Object>>  getAllSupplierInfos(int startRow);
 
     /**
      * 推送供应商信息到钉钉OA底表