From d9505e143cdf452c3a33752b380ee1b3a410601d Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 16 十月 2025 14:48:52 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/MapExcelUtils.java | 107 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 69 insertions(+), 38 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/MapExcelUtils.java b/src/main/java/com/zy/asrs/utils/MapExcelUtils.java
index e3ffb96..ad41208 100644
--- a/src/main/java/com/zy/asrs/utils/MapExcelUtils.java
+++ b/src/main/java/com/zy/asrs/utils/MapExcelUtils.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.core.common.Cools;
+import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.MapExcelNodeType;
import com.zy.common.model.MapNode;
import com.zy.core.enums.MapNodeType;
@@ -15,10 +16,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
@Component
public class MapExcelUtils {
@@ -72,6 +70,8 @@
for (int bay = 1; bay <= finalBay; bay++) {
MapNode node = new MapNode();
node.setId(row + "-" + bay);
+ node.setRow(row);
+ node.setBay(bay);
HashMap<String, Object> nodeData = excelData.get(row + 1).get(bay + 1);
String nodeType = nodeData.get("bgColor").toString();
@@ -102,6 +102,7 @@
mapList.add(rows);
}
+ MapNode baseMapNode = null;
//鐢熸垚灏忚溅鍦板浘鍧愭爣闂磋窛鏁版嵁
for (int row = 1; row <= finalRow; row++) {
for (int bay = 1; bay <= finalBay; bay++) {
@@ -114,6 +115,29 @@
Integer left = bayData.getInteger("left");
Integer right = bayData.getInteger("right");
+ HashMap<String, Object> nodeData = excelData.get(row + 1).get(bay + 1);
+ String nodeValue = nodeData.get("value").toString();
+ if (Utils.isJSON(nodeValue)) {
+ JSONObject jsonData = JSON.parseObject(nodeValue);
+ if (jsonData.containsKey("top")) {
+ top = jsonData.getInteger("top");
+ }
+ if (jsonData.containsKey("bottom")) {
+ bottom = jsonData.getInteger("bottom");
+ }
+ if (jsonData.containsKey("left")) {
+ left = jsonData.getInteger("left");
+ }
+ if (jsonData.containsKey("right")) {
+ right = jsonData.getInteger("right");
+ }
+
+ if (jsonData.containsKey("xBase")) {
+ //鍩虹偣
+ baseMapNode = mapNode;
+ }
+ }
+
mapNode.setTop(top);
mapNode.setBottom(bottom);
mapNode.setLeft(left);
@@ -121,51 +145,58 @@
}
}
- //鐢熸垚鐗涚溂Y鍧愭爣鍩哄噯鏁版嵁
+ if (baseMapNode == null) {
+ throw new CoolException("鏈缃熀鍑嗙偣");
+ }
+
+ List<Integer> rowList = new ArrayList<>();
+ List<Integer> bayList = new ArrayList<>();
+ for (int row = 1; row <= finalRow; row++) {
+ rowList.add(row);
+ }
for (int bay = 1; bay <= finalBay; bay++) {
+ bayList.add(bay);
+ }
+
+ if (baseMapNode.getRow() != 1) {
+ Collections.reverse(rowList);
+ }
+
+ if (baseMapNode.getBay() != 1) {
+ Collections.reverse(bayList);
+ }
+
+ //鐢熸垚鐗涚溂Y鍧愭爣鍩哄噯鏁版嵁
+ for (int i = 0; i < bayList.size(); i++) {
+ Integer bay = bayList.get(i);
int yBase = 10000;
- for (int row = 1; row <= finalRow; row++) {
+ for (int j = 0; j < rowList.size(); j++) {
+ Integer row = rowList.get(j);
MapNode mapNode = mapList.get(row - 1).get(bay - 1);
- HashMap<String, Object> nodeData = excelData.get(row + 1).get(bay + 1);
-
- JSONObject rowData = rowMap.get(row);
- Integer bottom = rowData.getInteger("bottom");
- String nodeValue = nodeData.get("value").toString();
- if (Utils.isJSON(nodeValue)) {
- JSONObject jsonData = JSON.parseObject(nodeValue);
- if (jsonData.containsKey("bottom")) {
- bottom = jsonData.getInteger("bottom");
- }
- }
-
- if (row != 1) {
- yBase += bottom;
- }
mapNode.setYBase(yBase);
+
+ if (baseMapNode.getRow() == 1) {
+ yBase += mapNode.getBottom();
+ }else {
+ yBase += mapNode.getTop();
+ }
}
}
//鐢熸垚鐗涚溂X鍧愭爣鍩哄噯鏁版嵁
- for (int row = 1; row <= finalRow; row++) {
+ for (int i = 0; i < rowList.size(); i++) {
+ Integer row = rowList.get(i);
int xBase = 10000;
- for (int bay = 1; bay <= finalBay; bay++) {
+ for (int j = 0; j < bayList.size(); j++) {
+ Integer bay = bayList.get(j);
MapNode mapNode = mapList.get(row - 1).get(bay - 1);
- HashMap<String, Object> nodeData = excelData.get(row + 1).get(bay + 1);
-
- JSONObject bayData = bayMap.get(bay);
- Integer right = bayData.getInteger("right");
- String nodeValue = nodeData.get("value").toString();
- if (Utils.isJSON(nodeValue)) {
- JSONObject jsonData = JSON.parseObject(nodeValue);
- if (jsonData.containsKey("right")) {
- right = jsonData.getInteger("right");
- }
- }
-
- if (bay != 1) {
- xBase += right;
- }
mapNode.setXBase(xBase);
+
+ if (baseMapNode.getBay() == 1) {
+ xBase += mapNode.getRight();
+ }else {
+ xBase += mapNode.getLeft();
+ }
}
}
--
Gitblit v1.9.1