| | |
| | | String startDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", startDate); |
| | | String endDateStr = DateUtils.parseDateToStr("yyyy-MM-dd", new Date()); |
| | | |
| | | // 从SQL Server查询转运单数据 |
| | | List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr, endDateStr); |
| | | // Keyset游标分页从 SQL Server 拉取转运单数据,每页 10 条,走主键索引彻底规避超时 |
| | | final int PAGE_SIZE = 10; |
| | | long lastId = 0L; // 游标:记录上一页最后一条的 ServiceOrdID,首次传 0 |
| | | int successCount = 0; |
| | | |
| | | while (true) { |
| | | List<Map<String, Object>> transferOrders = legacyTransferSyncMapper.selectTransferOrders(startDateStr, endDateStr, lastId, PAGE_SIZE); |
| | | |
| | | if (transferOrders == null || transferOrders.isEmpty()) { |
| | | log.info("未查询到{}天前的转运单数据", daysAgo); |
| | | return 0; |
| | | break; |
| | | } |
| | | |
| | | // log.info("查询到{}条转运单数据,开始同步...", transferOrders.size()); |
| | | |
| | | int successCount = 0; |
| | | int totalCount = transferOrders.size(); |
| | | int processedCount = 0; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // log.info("同步完成,共处理{}条转运单,成功同步{}条转运单数据", totalCount, successCount); |
| | | // 更新游标为本页最后一条的 ServiceOrdID |
| | | Map<String, Object> lastOrder = transferOrders.get(transferOrders.size() - 1); |
| | | Long lastServiceOrdID = MapValueUtils.getLongValue(lastOrder, "ServiceOrdID"); |
| | | if (lastServiceOrdID != null && lastServiceOrdID > 0) { |
| | | lastId = lastServiceOrdID; |
| | | } else { |
| | | break; |
| | | } |
| | | |
| | | // 本页未满一页,说明已无更多数据 |
| | | if (totalCount < PAGE_SIZE) { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // log.info("同步完成,成功同步{}条转运单数据", successCount); |
| | | return successCount; |
| | | |
| | | } catch (Exception e) { |