| package com.zy.asrs.controller; | 
|   | 
| import com.alibaba.fastjson.JSON; | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.core.annotations.ManagerAuth; | 
| import com.zy.asrs.entity.LocMast; | 
| import com.zy.asrs.service.LocMastService; | 
| import com.zy.common.web.BaseController; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.web.bind.annotation.*; | 
|   | 
| import java.io.*; | 
| import java.util.ArrayList; | 
| import java.util.HashMap; | 
| import java.util.List; | 
| import java.util.Optional; | 
|   | 
| @RestController | 
|   | 
| public class MapController extends BaseController { | 
|   | 
|     @Autowired | 
|     private LocMastService locMastService; | 
|   | 
|     private static final List<String> DISABLE_LOC_NO = new ArrayList<String>() {{ | 
|     }}; | 
|   | 
|     @GetMapping("/map/getData/{lev}/auth") | 
|     @ManagerAuth | 
|     public String getMapData(@PathVariable("lev") Integer lev) { | 
|         try { | 
|             String mapFilename = "map_" + lev + ".json"; | 
|             String fileName = this.getClass().getClassLoader().getResource(mapFilename).getPath();//获取文件路径 | 
|             File file = new File(fileName); | 
|             StringBuffer stringBuffer = new StringBuffer(); | 
|             if (file.isFile() && file.exists()) { | 
|                 InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK"); | 
|                 BufferedReader br = new BufferedReader(isr); | 
|                 String lineTxt = null; | 
|                 while ((lineTxt = br.readLine()) != null) { | 
|                     stringBuffer.append(lineTxt); | 
|                 } | 
|                 br.close(); | 
|   | 
|                 //解析json地图数据 | 
|                 List<ArrayList> arrayLists = JSON.parseArray(stringBuffer.toString(), ArrayList.class); | 
|                 ArrayList<HashMap<String, Integer>> lineRows = new ArrayList<>(); | 
|                 int dataRow = 0; | 
|                 int dataRowCount = 0; | 
|                 for (int i = 1; i < arrayLists.size(); i++) { | 
|                     boolean flag = true; | 
|                     ArrayList rows = arrayLists.get(i); | 
|                     for (int j = 1; j < rows.size() - 1; j++) { | 
|                         Object o = rows.get(j); | 
|                         JSONObject jsonObject = JSON.parseObject(o.toString()); | 
|                         int value = Integer.parseInt(jsonObject.get("value").toString()); | 
|                         if (value >= 0 && value != 3) { | 
|                             //只有该行中的任一一列有数据,则不需要创建空白行 | 
|                             flag = false; | 
|                         } | 
|                     } | 
|   | 
|                     if (flag) { | 
|                         //空白行需要跳过 | 
|                         HashMap<String, Integer> map = new HashMap<>(); | 
|                         map.put("start", dataRow); | 
|                         int end = i - 1 - dataRowCount; | 
|                         map.put("end", end); | 
|                         map.put("count", dataRowCount); | 
|                         dataRow = end; | 
|                         dataRowCount++; | 
|                         lineRows.add(map); | 
|                     } | 
|                 } | 
|   | 
|                 //获取当前楼层库位数据 | 
|                 List<LocMast> locMasts = locMastService.selectLocByLev(lev); | 
|   | 
|                 for (LocMast locMast : locMasts) { | 
|                     Integer row = locMast.getRow1(); | 
|                     Integer bay = locMast.getBay1(); | 
|                     for (HashMap<String, Integer> lineRow : lineRows) { | 
|                         if (row > lineRow.get("start") && row <= lineRow.get("end")) { | 
|                             row += lineRow.get("count"); | 
|                             break; | 
|                         } | 
|                     } | 
|                     ArrayList rowData = arrayLists.get(row); | 
|                     Object o = rowData.get(bay); | 
|                     JSONObject jsonObject = JSON.parseObject(o.toString()); | 
|                     if (DISABLE_LOC_NO.contains(locMast.getLocNo())) { | 
|                         //禁止库位 | 
|                         jsonObject.put("value", 10);//将禁用库位进行设置 | 
|                     } | 
|                     jsonObject.put("locNo", locMast.getLocNo());//设置库位号 | 
|                     jsonObject.put("locSts", locMast.getLocSts());//库位状态 | 
|                     jsonObject.put("barcode", Optional.ofNullable(locMast.getBarcode()).orElse("无"));//托盘号 | 
|   | 
|                     //更新list | 
|                     rowData.set(bay, jsonObject); | 
|                     arrayLists.set(row, rowData); | 
|                 } | 
|   | 
|                 return JSONObject.toJSONString(arrayLists); | 
|             } else { | 
|                 System.out.println("文件不存在!"); | 
|             } | 
|         } catch (IOException ioException) { | 
|             ioException.printStackTrace(); | 
|         } | 
|         return null; | 
|     } | 
|   | 
| } |