From c9c80ecde06d151f4f2f3ccf46d3f4c0e65cd8a1 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期二, 23 九月 2025 13:13:46 +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