From 34b0c36cf609ba295c8f66a85d479f740964a864 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 03 十一月 2025 08:11:34 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/MapExcelUtils.java | 94 +++++++++++++++++++++++++++++-
src/main/java/com/zy/asrs/controller/BasMapController.java | 63 +++++++++++++++++++++
src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 12 ++--
3 files changed, 158 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/BasMapController.java b/src/main/java/com/zy/asrs/controller/BasMapController.java
index 16ca989..9df3f27 100644
--- a/src/main/java/com/zy/asrs/controller/BasMapController.java
+++ b/src/main/java/com/zy/asrs/controller/BasMapController.java
@@ -20,11 +20,15 @@
import com.zy.common.utils.RedisUtil;
import com.zy.common.web.BaseController;
import com.zy.core.enums.RedisKeyType;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFColor;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
@@ -172,4 +176,63 @@
return R.ok();
}
+ @PostMapping("/basMap/crn/upload")
+ public R uploadExcel2(@RequestParam("file") MultipartFile file) throws IOException {
+ // 淇濆瓨涓婁紶鐨勬枃浠跺埌涓存椂浣嶇疆
+ String filePath = System.getProperty("java.io.tmpdir") + file.getOriginalFilename();
+ file.transferTo(new File(filePath));
+
+ HashMap<Integer, List<List<HashMap<String, Object>>>> dataMap = mapExcelUtils.readExcel(filePath);
+
+ List<List<HashMap<String, Object>>> dataList = new ArrayList<>();
+ for (Map.Entry<Integer, List<List<HashMap<String, Object>>>> entry : dataMap.entrySet()) {
+ Integer key = entry.getKey();
+ List<List<HashMap<String, Object>>> list = entry.getValue();
+
+ for (int i = 0; i < list.size(); i++) {
+ List<HashMap<String, Object>> bayList = list.get(i);
+ List<HashMap<String, Object>> arrayList = new ArrayList<>();
+ for (int j = 0; j < bayList.size(); j++) {
+ HashMap<String, Object> map = bayList.get(j);
+
+ HashMap<String, Object> nodeData = new HashMap<>();
+ nodeData.put("value", map.get("value"));
+
+ String nodeType = map.get("bgColor").toString();
+ if (nodeType.equals("RGB(0,176,80)")) {
+ //璐ф灦
+ nodeData.put("type", "shelf");
+ }else if (nodeType.equals("RGB(255,192,0)")) {
+ //鍫嗗灈鏈�
+ nodeData.put("type", "crn");
+ }else if (nodeType.equals("RGB(0,112,192)")) {
+ //杈撻�佺嚎
+ nodeData.put("type", "devp");
+ nodeData.put("value", (int) Double.parseDouble(map.get("value").toString()));
+ }else if (nodeType.equals("RGB(0,176,240)")) {
+ //RGV
+ nodeData.put("type", "rgv");
+ } else if (nodeType.equals("none")) {
+ //绌虹櫧鍖哄煙
+ nodeData.put("type", "none");
+ } else if (nodeType.equals("merge")) {
+ //鍚堝苟鍖哄煙
+ nodeData.put("type", "merge");
+ }
+
+ nodeData.put("cellWidth", map.get("cellWidth"));
+ nodeData.put("cellHeight", map.get("cellHeight"));
+ nodeData.put("rowSpan", map.get("rowSpan"));
+ nodeData.put("colSpan", map.get("colSpan"));
+
+ arrayList.add(nodeData);
+ }
+ dataList.add(arrayList);
+ }
+ }
+
+
+ return R.ok().add(JSON.toJSONString(dataList));
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/utils/MapExcelUtils.java b/src/main/java/com/zy/asrs/utils/MapExcelUtils.java
index ad41208..7048859 100644
--- a/src/main/java/com/zy/asrs/utils/MapExcelUtils.java
+++ b/src/main/java/com/zy/asrs/utils/MapExcelUtils.java
@@ -9,6 +9,7 @@
import com.zy.common.model.MapNode;
import com.zy.core.enums.MapNodeType;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Component;
@@ -257,12 +258,74 @@
String levStr = split[0];
Integer lev = Integer.parseInt(levStr);
+ int idx = 0;
+ int rowLength = -1;
+ int cellLength = -1;
+
+ Row titleRow = sheet.getRow(1);
+ for (Cell cell : titleRow) {
+ if (idx < 2) {
+ idx++;
+ continue;
+ }
+ HashMap<String, Object> map = getCellValue(sheet, titleRow, cell);
+ String value = map.get("value").toString();
+ if (!Cools.isEmpty(value)) {
+ rowLength = (int) Double.parseDouble(value);
+ }
+ }
+
+ idx = 0;
for (Row row : sheet) {
+ if (idx < 2) {
+ idx++;
+ continue;
+ }
+
+ Cell cell = row.getCell(1);
+ if(cell != null) {
+ HashMap<String, Object> map = getCellValue(sheet, row, cell);
+ String value = map.get("value").toString();
+ if (!Cools.isEmpty(value)) {
+ cellLength = (int) Double.parseDouble(value);
+ }
+ }
+ }
+
+ for (int j = 0; j < cellLength; j++) {
+ Row row = sheet.getRow(j + 2);
List<HashMap<String, Object>> rowData = new ArrayList<>();
- for (Cell cell : row) {
- rowData.add(getCellValue(cell));
+ for (int k = 0; k < rowLength; k++) {
+ Cell cell = row.getCell(k + 2);
+ rowData.add(getCellValue(sheet, row, cell));
}
data.add(rowData);
+ }
+
+ int numMergedRegions = sheet.getNumMergedRegions();
+ for (int j = 0; j < numMergedRegions; j++) {
+ CellRangeAddress region = sheet.getMergedRegion(j);
+
+ int rowSpan = region.getLastRow() - region.getFirstRow() + 1;
+ int colSpan = region.getLastColumn() - region.getFirstColumn() + 1;
+
+ int rowIdx = region.getFirstRow() - 2;
+ int colIdx = region.getFirstColumn() - 2;
+ HashMap<String, Object> map = data.get(rowIdx).get(colIdx);
+ map.put("rowSpan", rowSpan);
+ map.put("colSpan", colSpan);
+
+ for (int k = region.getFirstRow(); k <= region.getLastRow(); k++) {
+ for (int l = region.getFirstColumn(); l <= region.getLastColumn(); l++) {
+ if(k == region.getFirstRow() && l == region.getFirstColumn()) {
+ continue;
+ }
+
+ HashMap<String, Object> mapData = data.get(k - 2).get(l - 2);
+ mapData.put("bgColor", "merge");
+ }
+ }
+
}
dataMap.put(lev, data);
@@ -274,9 +337,16 @@
return dataMap;
}
- private HashMap<String, Object> getCellValue(Cell cell) {
+ private HashMap<String, Object> getCellValue(Sheet sheet, Row row, Cell cell) {
if (cell == null) {
- return null;
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("bgColor", "none");
+ map.put("cellWidth", "");
+ map.put("cellHeight", "");
+ map.put("value", "");
+ map.put("rowSpan", 1);
+ map.put("colSpan", 1);
+ return map;
}
HashMap<String, Object> map = new HashMap<>();
@@ -284,10 +354,22 @@
String bgColor = getCellBackgroundColor(cell);
map.put("bgColor", bgColor);
+ int columnIndex = cell.getColumnIndex();
+ int columnWidth = sheet.getColumnWidth(columnIndex);//鑾峰彇鍒楀
+
+ short rowHeight = row.getHeight(); //鑾峰彇琛岄珮
+ map.put("cellWidth", columnWidth);
+ map.put("cellHeight", rowHeight);
+
String value = "";
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
- value = cell.getStringCellValue();
+ try {
+ JSONObject jsonObject = JSON.parseObject(cell.getStringCellValue());
+ value = JSON.toJSONString(jsonObject);
+ } catch (Exception e) {
+ value = cell.getStringCellValue();
+ }
break;
case Cell.CELL_TYPE_NUMERIC:
value = String.valueOf(cell.getNumericCellValue());
@@ -306,6 +388,8 @@
}
map.put("value", value);
+ map.put("rowSpan", 1);
+ map.put("colSpan", 1);
return map;
}
diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index d1ade24..1387deb 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -468,27 +468,27 @@
return false;//鏈夋晠闅�
}
- if (extend.getFrontOverrun()) {
+ if (extend.getFrontOverrun() == null || extend.getFrontOverrun()) {
return false;
}
- if (extend.getBackOverrun()) {
+ if (extend.getBackOverrun() == null || extend.getBackOverrun()) {
return false;
}
- if (extend.getLeftOverrun()) {
+ if (extend.getLeftOverrun() == null || extend.getLeftOverrun()) {
return false;
}
- if (extend.getRightOverrun()) {
+ if (extend.getRightOverrun() == null || extend.getRightOverrun()) {
return false;
}
- if (extend.getOverHeight()) {
+ if (extend.getOverHeight() == null || extend.getOverHeight()) {
return false;
}
- if (extend.getOverWeight()) {
+ if (extend.getOverWeight() == null || extend.getOverWeight()) {
return false;
}
--
Gitblit v1.9.1