| | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.BasMap; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.BasMapService; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private BasMapService basMapService; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | |
| | | private static final List<String> DISABLE_LOC_NO = new ArrayList<String>() {{ |
| | | // add("0200101"); |
| | |
| | | @GetMapping("/map/getData/{lev}/auth") |
| | | @ManagerAuth |
| | | public String getMapData(@PathVariable("lev") Integer lev) { |
| | | try { |
| | | String mapFilename = "map.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(); |
| | | BasMap basMap = basMapService.selectLatestMap(lev); |
| | | //解析json地图数据 |
| | | List<ArrayList> arrayLists = JSON.parseArray(basMap.getData(), 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); |
| | | // } |
| | | // } |
| | | |
| | | //解析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; |
| | | } |
| | | } |
| | | //获取当前楼层库位数据 |
| | | 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; |
| | | // } |
| | | // } |
| | | |
| | | 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());//库位状态 |
| | | //更新list |
| | | rowData.set(bay, jsonObject); |
| | | arrayLists.set(row, rowData); |
| | | } |
| | | |
| | | return JSONObject.toJSONString(arrayLists); |
| | | } else { |
| | | System.out.println("文件不存在!"); |
| | | 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);//将禁用库位进行设置 |
| | | } |
| | | } catch (IOException ioException) { |
| | | ioException.printStackTrace(); |
| | | jsonObject.put("locNo", locMast.getLocNo());//设置库位号 |
| | | jsonObject.put("locSts", locMast.getLocSts());//库位状态 |
| | | //更新list |
| | | rowData.set(bay, jsonObject); |
| | | arrayLists.set(row, rowData); |
| | | } |
| | | return null; |
| | | |
| | | return JSONObject.toJSONString(arrayLists); |
| | | } |
| | | |
| | | @RequestMapping("/map/searchData/auth") |
| | |
| | | return R.ok().add(lists); |
| | | } |
| | | |
| | | @GetMapping("/map/realtime/getData/{lev}/auth") |
| | | @ManagerAuth |
| | | public String getRealtimeMapData(@PathVariable("lev") Integer lev) { |
| | | BasMap basMap = basMapService.selectLatestMap(lev); |
| | | //解析json地图数据 |
| | | List<ArrayList> arrayLists = JSON.parseArray(basMap.getData(), 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());//库位状态 |
| | | //更新list |
| | | rowData.set(bay, jsonObject); |
| | | arrayLists.set(row, rowData); |
| | | } |
| | | |
| | | return JSONObject.toJSONString(arrayLists); |
| | | } |
| | | |
| | | @GetMapping("/map/resetMap/{lev}/auth") |
| | | @ManagerAuth |
| | | public R resetMap(@PathVariable("lev") Integer lev) { |
| | | Object o = redisUtil.get("realtimeBasMap_" + lev); |
| | | if (o == null) { |
| | | return R.error(); |
| | | } |
| | | redisUtil.del("realtimeBasMap_" + lev); |
| | | basMapService.deleteByLev(lev); |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |