From f833aea25970ebc7171815fd0b44e45473082691 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 10 四月 2026 09:58:54 +0800
Subject: [PATCH] fix: 产品维护拉取数据时,未更新从平台拉取并且已删除的产品数据
---
src/main/java/com/ruoyi/framework/util/AliDingUtils.java | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 51 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/ruoyi/framework/util/AliDingUtils.java b/src/main/java/com/ruoyi/framework/util/AliDingUtils.java
index cfa260e..1470847 100644
--- a/src/main/java/com/ruoyi/framework/util/AliDingUtils.java
+++ b/src/main/java/com/ruoyi/framework/util/AliDingUtils.java
@@ -46,11 +46,28 @@
* @return 瀵瑰簲琛ㄥ崟鐨勬暟鎹�
*/
public static <T> JSONArray getFormDataList(AliDingConfig aliDingConfig, String formUuid, String searchFieldJson, IService<T> service, SFunction<T, ?> timeField) {
+ return getFormDataList(aliDingConfig, formUuid, searchFieldJson, service, timeField, new LambdaQueryWrapper<>());
+ }
+
+ /**
+ * 鏍规嵁琛ㄥ崟 ID 鑾峰彇瀹滄惌鏁版嵁锛屽甫鑷畾涔夎褰曟暟鏌ヨ鏉′欢锛岀敤浜庡垽鏂槸鍚﹁繘琛屽叏閲忓悓姝�
+ */
+ public static <T> JSONArray getFormDataList(AliDingConfig aliDingConfig, String formUuid, String searchFieldJson, IService<T> service, SFunction<T, ?> timeField, LambdaQueryWrapper<T> countWrapper) {
// 鑾峰彇 accessToken
String accessToken = getAccessToken(aliDingConfig);
- // 鑾峰彇鏈�鍚庡悓姝ユ椂闂�
- LocalDateTime lastSyncTime = getLastSyncTime(service, timeField);
- log.info("寮�濮嬪悓姝ユ暟鎹紝鏈湴鏈�鍚庝慨鏀规椂闂�: {}", lastSyncTime);
+
+ // 鍏堣幏鍙栧疁鎼�绘暟锛堜笉甯︽椂闂村弬鏁帮級涓庢湰鍦拌褰曟暟瀵规瘮
+ long remoteTotalCount = getRemoteTotalCount(aliDingConfig, formUuid, searchFieldJson, accessToken);
+ long localCount = service.count(countWrapper);
+
+ // 鍒ゆ柇鏄惁闇�瑕佸叏閮ㄦ洿鏂�
+ LocalDateTime lastSyncTime = null;
+ if (remoteTotalCount == localCount) {
+ lastSyncTime = getLastSyncTime(service, timeField);
+ log.info("寮�濮嬪閲忓悓姝ユ暟鎹紝鏈湴鏈�鍚庝慨鏀规椂闂�: {}", lastSyncTime);
+ } else {
+ log.info("鏈湴鏁版嵁鏉℃暟({})涓庤繙绋嬫暟鎹�绘潯鏁�({})涓嶄竴鑷达紝杩涜鍏ㄩ噺鍚屾", localCount, remoteTotalCount);
+ }
JSONArray allData = new JSONArray();
int pageNumber = 1;
@@ -116,6 +133,37 @@
}
/**
+ * 鑾峰彇杩滅▼鏌ヨ鐨勬�绘暟閲忥紙涓嶅甫鏃堕棿鍙傛暟闄愬埗锛�
+ */
+ private static long getRemoteTotalCount(AliDingConfig aliDingConfig, String formUuid, String searchFieldJson, String accessToken) {
+ JSONObject searchParam = new JSONObject();
+ searchParam.put("appType", aliDingConfig.getAppType());
+ searchParam.put("systemToken", aliDingConfig.getSystemToken());
+ searchParam.put("userId", aliDingConfig.getUserId());
+ searchParam.put("formUuid", formUuid);
+ searchParam.put("currentPage", 1);
+ searchParam.put("pageSize", 1);
+
+ if (StringUtils.isNotEmpty(searchFieldJson)) {
+ searchParam.put("searchFieldJson", searchFieldJson);
+ }
+
+ String dataRes = HttpUtils.sendPostJson(
+ aliDingConfig.getSearchFormDataUrl(),
+ searchParam.toJSONString(),
+ StandardCharsets.UTF_8.name(),
+ null,
+ accessToken
+ );
+
+ if (StringUtils.isEmpty(dataRes)) {
+ return 0;
+ }
+ JSONObject resultObj = JSON.parseObject(dataRes);
+ return resultObj.getLongValue("totalCount");
+ }
+
+ /**
* 鑾峰彇閽夐拤 AccessToken
*/
private static String getAccessToken(AliDingConfig aliDingConfig) {
--
Gitblit v1.9.3