|
@@ -2,18 +2,23 @@ package com.nokia.sms;
|
|
|
|
|
|
import de.siegmar.fastcsv.reader.CsvReader;
|
|
|
import de.siegmar.fastcsv.reader.CsvRow;
|
|
|
+import de.siegmar.fastcsv.writer.CsvWriter;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.io.OutputStreamWriter;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.nio.file.Files;
|
|
|
import java.nio.file.Path;
|
|
|
import java.nio.file.Paths;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
@@ -25,6 +30,63 @@ class SyncTest {
|
|
|
|
|
|
@Test
|
|
|
void test() {
|
|
|
+ Map<String, Map<String, String>> m1 = new HashMap<>();
|
|
|
+ Map<String, Map<String, String>> m2 = new HashMap<>();
|
|
|
+ String p1 = "z:/blacklist_202208231737.csv";
|
|
|
+ String p2 = "z:/data1.csv";
|
|
|
+ String result = "z:/result2.csv";
|
|
|
+ try {
|
|
|
+ try (CsvReader csvReader = CsvReader.builder().build(Paths.get(p2), StandardCharsets.UTF_8)) {
|
|
|
+ for (CsvRow row : csvReader) {
|
|
|
+ m1.put(row.getField(0), new HashMap<String, String>() {{
|
|
|
+ put("phone", row.getField(0));
|
|
|
+ put("reason", row.getField(1));
|
|
|
+ put("suggestion", row.getField(2));
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try (CsvReader csvReader = CsvReader.builder().build(Paths.get(p1), StandardCharsets.UTF_8)) {
|
|
|
+ for (CsvRow row : csvReader) {
|
|
|
+ m2.put(row.getField(0), new HashMap<String, String>() {{
|
|
|
+ put("phone", row.getField(0));
|
|
|
+ put("reason", row.getField(1));
|
|
|
+ put("start_time", row.getField(2));
|
|
|
+ put("end_time", row.getField(3));
|
|
|
+ put("hit_desc", row.getField(4));
|
|
|
+ put("operation_type", row.getField(5));
|
|
|
+ put("suggestion", row.getField(6));
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try (OutputStreamWriter osw = new OutputStreamWriter(Files.newOutputStream(Paths.get(result)),
|
|
|
+ StandardCharsets.UTF_8);
|
|
|
+ CsvWriter csvWriter = CsvWriter.builder().build(osw);) {
|
|
|
+ csvWriter.writeRow("黑名单号码", "入黑名单原因", "解黑建议", "是否一致", "入黑名单原因", "解黑建议", "开始时间", "结束时间", "命中策略说明", "操作类型");
|
|
|
+ for (Map<String, String> v2 : m2.values()) {
|
|
|
+ String phone = v2.get("phone");
|
|
|
+ Map<String, String> v1 = m1.getOrDefault(phone, new HashMap<>());
|
|
|
+ String flag = "是";
|
|
|
+ if (!v2.get("reason").equals(v1.get("reason")) || !v2.get("suggestion").equals(v1.get("suggestion"))) {
|
|
|
+ flag = "否";
|
|
|
+ if (CollectionUtils.isEmpty(v1) && v2.get("operation_type").equals("1")) {
|
|
|
+ System.out.println(">>>>>>>>>>" + phone);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ csvWriter.writeRow(phone, v1.get("reason"), v1.get("suggestion"), flag, v2.get("reason"), v2.get("suggestion"), v2.get("start_time"), v2.get("end_time"), v2.get("hit_desc"), v2.get("operation_type"));
|
|
|
+ }
|
|
|
+// for (Map<String, String> v1 : m1.values()) {
|
|
|
+// String phone = v1.get("phone");
|
|
|
+// Map<String, String> v2 = m2.getOrDefault(phone, new HashMap<>());
|
|
|
+// String flag = "是";
|
|
|
+// if (!v1.get("reason").equals(v2.get("reason")) || !v1.get("suggestion").equals(v2.get("suggestion"))) {
|
|
|
+// flag = "否";
|
|
|
+// }
|
|
|
+// csvWriter.writeRow(phone, v1.get("reason"), v1.get("suggestion"), flag, v2.get("reason"), v2.get("suggestion"), v2.get("start_time"), v2.get("end_time"), v2.get("hit_desc"), v2.get("operation_type"));
|
|
|
+// }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -32,7 +94,7 @@ class SyncTest {
|
|
|
*/
|
|
|
@Test
|
|
|
void testImport() {
|
|
|
- String path = "z:/data";
|
|
|
+ String path = "z:/download";
|
|
|
// 读取目标文件夹下的文件
|
|
|
try (Stream<Path> stream = Files.list(Paths.get(path))) {
|
|
|
List<Path> pathList = stream.collect(Collectors.toList());
|
|
@@ -64,7 +126,6 @@ class SyncTest {
|
|
|
t.getFileName().toString()
|
|
|
};
|
|
|
l2.add(o2);
|
|
|
- // log.info("{}: {}", row.getOriginalLineNumber(), o1);
|
|
|
}
|
|
|
}
|
|
|
log.info("blacklist");
|