| src/main/java/com/zy/asrs/controller/BasMapController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/utils/MapExcelUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/thread/impl/NyLiftThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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)); } } 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: 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; } 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; }