From b9f987ca7a4154a34f605c046eadbf455d6981e5 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 11 九月 2026 13:41:50 +0800
Subject: [PATCH] 【市一】同步数据

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java
new file mode 100644
index 0000000..0b3d55d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ArrayListUtils.java
@@ -0,0 +1,58 @@
+package com.ruoyi.common.utils;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+public class ArrayListUtils {
+
+    /**
+     * 鏍规嵁ID灏嗕袱涓狶ist鎷嗗垎涓猴細浠匧ist1鐙湁銆佷粎List2鐙湁銆佷袱鑰呭叡鏈�
+     *
+     * @param list1 鍒楄〃1
+     * @param list2 鍒楄〃2
+     * @param idExtractor ID鎻愬彇鍑芥暟
+     * @return Map鍖呭惈涓変釜Key: "onlyIn1", "onlyIn2", "common"
+     */
+    public static <T, K> Map<String, List<T>> splitListsById(List<T> list1, List<T> list2, Function<T, K> idExtractor) {
+        // 1. 鎻愬彇ID闆嗗悎锛岀敤浜庡揩閫熷垽鏂瓨鍦ㄦ��
+        Set<K> ids1 = list1.stream().map(idExtractor).collect(Collectors.toSet());
+        Set<K> ids2 = list2.stream().map(idExtractor).collect(Collectors.toSet());
+
+        // 2. 璁$畻ID灞傞潰鐨勫樊闆嗗拰浜ら泦
+        Set<K> onlyIn1Ids = new HashSet<>(ids1);
+        onlyIn1Ids.removeAll(ids2); // List1鐙湁鐨処D
+
+        Set<K> onlyIn2Ids = new HashSet<>(ids2);
+        onlyIn2Ids.removeAll(ids1); // List2鐙湁鐨処D
+
+        Set<K> commonIds = new HashSet<>(ids1);
+        commonIds.retainAll(ids2); // 鍏辨湁鐨処D
+
+        // 3. 鏍规嵁ID杩囨护鍘熷瀵硅薄鍒楄〃
+        List<T> onlyIn1 = list1.stream()
+                .filter(item -> onlyIn1Ids.contains(idExtractor.apply(item)))
+                .collect(Collectors.toList());
+
+        List<T> onlyIn2 = list2.stream()
+                .filter(item -> onlyIn2Ids.contains(idExtractor.apply(item)))
+                .collect(Collectors.toList());
+
+        // 娉ㄦ剰锛氬叡鏈夐儴鍒嗛�氬父鍚堝苟涓や釜鍒楄〃涓殑鍏冪礌锛屾垨鑰呭彧鍙栧叾涓竴涓��
+        // 杩欓噷绛栫暐鏄細淇濈暀list1鍜宭ist2涓墍鏈塈D閲嶅悎鐨勫璞★紙濡傛灉涓氬姟瑕佹眰鍘婚噸鎴栧悎骞跺璞″睘鎬э紝闇�棰濆澶勭悊锛�
+        List<T> common = new ArrayList<>();
+        common.addAll(list1.stream()
+                .filter(item -> commonIds.contains(idExtractor.apply(item)))
+                .collect(Collectors.toList()));
+//        common.addAll(list2.stream()
+//                .filter(item -> commonIds.contains(idExtractor.apply(item)))
+//                .collect(Collectors.toList()));
+
+        Map<String, List<T>> result = new HashMap<>();
+        result.put("onlyIn1", onlyIn1);
+        result.put("onlyIn2", onlyIn2);
+        result.put("common", common);
+
+        return result;
+    }
+}

--
Gitblit v1.9.3