From 688e299d29bd76cbd30bf3d7267bdc9afad954b0 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 13 五月 2025 17:24:04 +0800
Subject: [PATCH] excel导入堆垛机异常码
---
src/main/java/com/zy/asrs/importexcle/ImportCrnErrListener.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 96 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/importexcle/ImportCrnErrListener.java b/src/main/java/com/zy/asrs/importexcle/ImportCrnErrListener.java
new file mode 100644
index 0000000..98d002c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/importexcle/ImportCrnErrListener.java
@@ -0,0 +1,96 @@
+package com.zy.asrs.importexcle;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import com.zy.asrs.entity.BasCrnError;
+import com.zy.asrs.service.BasCrnErrorService;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 瀵煎叆鍨涙満寮傚父琛ㄧ洃鍚櫒
+ * @createDate 2024/9/2 9:56
+ */
+@Slf4j
+public class ImportCrnErrListener extends AnalysisEventListener<ImportCrnErrDto> {
+ /**
+ * 姣忛殧1000鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+ */
+ private static final int BATCH_COUNT = 400;
+
+ private int count = 0;
+
+ List<ImportCrnErrDto> list = new ArrayList<>();
+ /**
+ * 鍋囪杩欎釜鏄竴涓狣AO锛屽綋鐒舵湁涓氬姟閫昏緫杩欎釜涔熷彲浠ユ槸涓�涓猻ervice銆傚綋鐒跺鏋滀笉鐢ㄥ瓨鍌ㄨ繖涓璞℃病鐢ㄣ��
+ */
+ private final BasCrnErrorService basCrnErrorService;
+
+ /**
+ * 濡傛灉浣跨敤浜唖pring,璇蜂娇鐢ㄨ繖涓瀯閫犳柟娉曘�傛瘡娆″垱寤篖istener鐨勬椂鍊欓渶瑕佹妸spring绠$悊鐨勭被浼犺繘鏉�
+ */
+ public ImportCrnErrListener(BasCrnErrorService basCrnErrorService) {
+ this.basCrnErrorService = basCrnErrorService;
+ }
+
+ /**
+ * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+ */
+ @SneakyThrows
+ @Override
+ public void invoke(ImportCrnErrDto data, AnalysisContext context) {
+ log.info("瑙f瀽鍒扮 {} 鏉℃暟鎹�:{}", ++count, JSON.toJSONString(data));
+ if (!data.getColumn2().equals("<No value>")) {
+ list.add(data);
+ }
+
+ // 杈惧埌BATCH_COUNT浜嗭紝闇�瑕佸幓瀛樺偍涓�娆℃暟鎹簱锛岄槻姝㈡暟鎹嚑涓囨潯鏁版嵁鍦ㄥ唴瀛橈紝瀹规槗OOM
+ if (list.size() >= BATCH_COUNT) {
+ saveData();
+ // 瀛樺偍瀹屾垚娓呯悊 list
+ list.clear();
+ }
+ }
+
+ /**
+ * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡 閮戒細鏉ヨ皟鐢�
+ */
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ // 杩欓噷涔熻淇濆瓨鏁版嵁锛岀‘淇濇渶鍚庨仐鐣欑殑鏁版嵁涔熷瓨鍌ㄥ埌鏁版嵁搴�
+ if (list.size() > 0) {
+ saveData();
+ }
+ log.info("鎵�鏈夋暟鎹В鏋愬畬鎴愶紒");
+ }
+
+ /**
+ * 鍔犱笂瀛樺偍鏁版嵁搴�
+ */
+ private void saveData() {
+ log.info("{}鏉℃暟鎹紝寮�濮嬪瓨鍌ㄦ暟鎹簱锛�", list.size());
+ List<BasCrnError> basCrnErrors = new ArrayList<>();
+ list.forEach(importCrnErrDto -> {
+ BasCrnError basCrnError = new BasCrnError();
+ basCrnError.setErrorCode(importCrnErrDto.getColumn1());
+ basCrnError.setErrName(importCrnErrDto.getColumn2());
+ basCrnErrors.add(basCrnError);
+ });
+ basCrnErrorService.insertBatch(basCrnErrors);
+
+ log.info("瀛樺偍鏁版嵁搴撴垚鍔燂紒");
+ }
+ /**
+ *瑙f瀽鍑虹幇閿欒浼氳繘鍏ヨ鏂规硶 鍏蜂綋鐪嬫簮浠g爜鎴栨枃妗�
+ */
+ @Override
+ public void onException(Exception exception, AnalysisContext context) throws Exception {
+ log.error("澶勭悊寮傚父锛�" + exception.getMessage());
+ throw exception;
+ }
+}
--
Gitblit v1.9.1