From 9569af2a6abcccc3f312abff0a7e660c0f2be2c8 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期五, 26 十二月 2025 17:23:19 +0800
Subject: [PATCH] 电压改电量
---
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/utils/MapDataListener.java | 138 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 138 insertions(+), 0 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/utils/MapDataListener.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/utils/MapDataListener.java
new file mode 100644
index 0000000..1e7acbc
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/utils/MapDataListener.java
@@ -0,0 +1,138 @@
+package com.zy.acs.manager.manager.controller.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.read.listener.ReadListener;
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.zy.acs.common.utils.GsonUtils;
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.manager.manager.entity.Code;
+import com.zy.acs.manager.manager.entity.CodeGap;
+import com.zy.acs.manager.manager.entity.Route;
+import com.zy.acs.manager.manager.service.CodeGapService;
+import com.zy.acs.manager.manager.service.CodeService;
+import com.zy.acs.manager.manager.service.RouteService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.*;
+
+@Slf4j
+public class MapDataListener implements ReadListener<Map<Integer, String>> {
+ /**
+ * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互100鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+ */
+ private static final int BATCH_COUNT = 10000;
+ private List<Map<Integer, String>> cachedDataList = Lists.newArrayListWithExpectedSize(BATCH_COUNT);
+ /**
+ * 鍋囪杩欎釜鏄竴涓狣AO锛屽綋鐒舵湁涓氬姟閫昏緫杩欎釜涔熷彲浠ユ槸涓�涓猻ervice銆傚綋鐒跺鏋滀笉鐢ㄥ瓨鍌ㄨ繖涓璞℃病鐢ㄣ��
+ */
+ private RouteService routeService;
+
+ private CodeService codeService;
+
+ private CodeGapService codeGapService;
+
+ private List<Code> codes = new ArrayList<>();
+
+ private List<Route> routes = new ArrayList<>();
+
+ private List<CodeGap> codeGaps = new ArrayList<>();
+
+ /**
+ * 濡傛灉浣跨敤浜唖pring,璇蜂娇鐢ㄨ繖涓瀯閫犳柟娉曘�傛瘡娆″垱寤篖istener鐨勬椂鍊欓渶瑕佹妸spring绠$悊鐨勭被浼犺繘鏉�
+ *
+ * @param routeService
+ */
+ public MapDataListener(RouteService routeService, CodeService codeService, CodeGapService codeGapService) {
+ this.routeService = routeService;
+ this.codeService = codeService;
+ this.codeGapService = codeGapService;
+ }
+
+
+ /**
+ * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+ *
+ * @param data one row value. It is same as {@link AnalysisContext#readRowHolder()}
+ * @param context
+ */
+ @Override
+ public void invoke(Map<Integer, String> data, AnalysisContext context) {
+ log.info("瑙f瀽鍒颁竴鏉℃暟鎹�:{}", JSON.toJSONString(data));
+ cachedDataList.add(data);
+ // 杈惧埌BATCH_COUNT浜嗭紝闇�瑕佸幓瀛樺偍涓�娆℃暟鎹簱锛岄槻姝㈡暟鎹嚑涓囨潯鏁版嵁鍦ㄥ唴瀛橈紝瀹规槗OOM
+ if (cachedDataList.size() >= BATCH_COUNT) {
+ saveData();
+ // 瀛樺偍瀹屾垚娓呯悊 list
+ cachedDataList = Lists.newArrayListWithExpectedSize(BATCH_COUNT);
+ }
+ }
+
+
+ /**
+ * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡 閮戒細鏉ヨ皟鐢�
+ *
+ * @param context
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ // 杩欓噷涔熻淇濆瓨鏁版嵁锛岀‘淇濇渶鍚庨仐鐣欑殑鏁版嵁涔熷瓨鍌ㄥ埌鏁版嵁搴�
+ Map<Integer, String> xData = cachedDataList.get(78);
+ Map<Integer, String> x = new HashMap<>();
+ xData.entrySet().forEach(entry -> {
+ x.put(entry.getKey() , entry.getValue());
+ });
+ Map<Integer, String> y = new HashMap<>();
+ for (int i = 0; i < cachedDataList.size(); i++) {
+ Map<Integer, String> integerStringMap = cachedDataList.get(i);
+ y.put(i, integerStringMap.get(1));
+ }
+ log.info("x杞达細{}", JSON.toJSONString(x));
+ log.info("y杞达細{}", JSON.toJSONString(y));
+ for (int i = 0; i < cachedDataList.size(); i++) {
+ if (i >= 78) {
+ continue;
+ }
+ Map<Integer, String> integerStringMap = cachedDataList.get(i);
+ int finalI = i;
+ integerStringMap.entrySet().forEach(entry -> {
+ if (entry.getValue() != null && entry.getValue().startsWith("00")) {
+ log.info("鏁版嵁锛歿}", entry.getValue());
+ Code code = new Code();
+ code.setData(entry.getValue());
+ code.setUuid("code".concat(code.getData()));
+ if (x.get(entry.getKey()) == null) {
+ log.info("x杞存暟鎹负绌猴細{}", entry.getKey());
+ }
+ code.setX(Double.parseDouble(x.get(entry.getKey()))+10000);
+ if (y.get(finalI) == null) {
+ log.info("y杞存暟鎹负绌猴細{},{}", finalI, y.get(finalI));
+ }
+ code.setY(Double.parseDouble(y.get(finalI))+10000);
+ code.setScale(GsonUtils.toJson(Cools.add("x", 1).add("y", 1)));
+ code.setCreateTime(new Date());
+ code.setUpdateTime(new Date());
+ codes.add(code);
+
+
+
+ }
+ });
+ }
+ //log.info("鎵�鏈夋暟鎹В鏋愬畬鎴愶紒{}", JSON.toJSONString(codes));
+ log.info("鎵�鏈夋暟鎹В鏋愬畬鎴愶紒{}", codes.size());
+ saveData();
+ }
+
+
+ /**
+ * 鍔犱笂瀛樺偍鏁版嵁搴�
+ */
+ private void saveData() {
+ log.info("{}鏉℃暟鎹紝寮�濮嬪瓨鍌ㄦ暟鎹簱锛�", cachedDataList.size());
+ for (Code code : codes){
+ codeService.save(code);
+ }
+ log.info("瀛樺偍鏁版嵁搴撴垚鍔燂紒");
+ }
+}
--
Gitblit v1.9.1