| | |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.LocMapConstants; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.core.io.ClassPathResource; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.io.*; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | |
| | |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | |
| | | private static final List<String> DISABLE_LOC_NO = new ArrayList<String>() {{ |
| | | |
| | | }}; |
| | | |
| | | @GetMapping("/map/getData/auth") |
| | | @ManagerAuth |
| | | public String getMapData(@RequestParam Integer lev,@RequestParam Integer area) { |
| | | try { |
| | | String mapFilename = "map.json"; |
| | | // String fileName ="file:" + new ClassPathResource(mapFilename).getPath(); |
| | | //获取当前楼层库位数据 |
| | | List<LocMast> locMasts = locMastService.selectLocByLev(lev); |
| | | switch (area){ |
| | | case 1: |
| | | break; |
| | | case 2: |
| | | case 3: |
| | | mapFilename = "DTBnode.json"; |
| | | locMasts = locMastService.selectNodeBLocByLev(lev); |
| | | break; |
| | | case 4: |
| | | mapFilename = "DTCnode.json"; |
| | | locMasts = locMastService.selectNodeCLocByLev(lev); |
| | | break; |
| | | case 5: |
| | | mapFilename = "DTDnode.json"; |
| | | locMasts = locMastService.selectNodeDLocByLev(lev); |
| | | break; |
| | | case 6: |
| | | mapFilename = "DTEnode.json"; |
| | | locMasts = locMastService.selectNodeELocByLev(lev); |
| | | break; |
| | | public String getMapData(@RequestParam String area, @RequestParam Integer lev) { |
| | | |
| | | //获取当前楼层库位数据 |
| | | List<LocMast> locMasts = locMastService.selectNodeLocByLev(area, lev); |
| | | |
| | | } |
| | | String fileName = this.getClass().getClassLoader().getResource(mapFilename).getPath();//获取文件路径 |
| | | // File file = new File("D:\\workspace\\zy-asrs\\src\\main\\resources\\map.json"); |
| | | 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); |
| | | for (String locNo : DISABLE_LOC_NO) {//禁用设置库位 |
| | | int row = Utils.getRow(locNo); |
| | | int bay = Utils.getBay(locNo); |
| | | if (row >= 2 && row <= 12) { |
| | | row++; |
| | | }else if (row == 13) { |
| | | row += 2; |
| | | } |
| | | ArrayList rowData = arrayLists.get(row); |
| | | Object o = rowData.get(bay); |
| | | JSONObject jsonObject = JSON.parseObject(o.toString()); |
| | | jsonObject.put("value", 10);//将禁用库位进行设置 |
| | | //更新list |
| | | rowData.set(bay, jsonObject); |
| | | arrayLists.set(row, rowData); |
| | | } |
| | | |
| | | |
| | | |
| | | for (LocMast locMast : locMasts) { |
| | | |
| | | Integer row = locMast.getRow1(); |
| | | Integer bay = locMast.getBay1(); |
| | | |
| | | switch (area){ |
| | | case 1: |
| | | if (row % 4 == 0 || (row+1) % 4 == 0) { |
| | | row=row+locMast.getCrnNo(); |
| | | }else{ |
| | | row=row+locMast.getCrnNo()-1; |
| | | } |
| | | bay=32-bay; |
| | | break; |
| | | case 2: |
| | | case 3: |
| | | if (row<=3 || row>=5){ |
| | | if (row%1==0){ |
| | | row=row+(row/1)-1; |
| | | }else { |
| | | row=row+((row+1)/1)-1; |
| | | } |
| | | }else { |
| | | if (row%2==0){ |
| | | row=row+(row/2); |
| | | }else { |
| | | row=row+((row-1)/2); |
| | | } |
| | | } |
| | | |
| | | if (bay % 7 == 0) { |
| | | bay=bay+1; |
| | | }else{ |
| | | if (bay>7){ |
| | | bay=bay+locMast.getCrnNo(); |
| | | }else { |
| | | bay=bay+locMast.getCrnNo()-1; |
| | | } |
| | | } |
| | | break; |
| | | case 4: |
| | | if (row<=11){ |
| | | if (row%2==0){ |
| | | row=row+(row/2)-1; |
| | | }else { |
| | | row=row+((row+1)/2)-1; |
| | | } |
| | | }else { |
| | | if (row%2==0){ |
| | | row=row+(row/2); |
| | | }else { |
| | | row=row+((row-1)/2); |
| | | } |
| | | } |
| | | |
| | | if (bay % 10 == 0) { |
| | | bay=bay+1; |
| | | }else{ |
| | | if (bay>10){ |
| | | bay=bay+locMast.getCrnNo(); |
| | | }else { |
| | | bay=bay+locMast.getCrnNo()-1; |
| | | } |
| | | } |
| | | break; |
| | | case 5: |
| | | if (row<=11){ |
| | | if (row%2==0){ |
| | | row=row+(row/2)-1; |
| | | }else { |
| | | row=row+((row+1)/2)-1; |
| | | } |
| | | }else { |
| | | if (row%2==0){ |
| | | row=row+(row/2); |
| | | }else { |
| | | row=row+((row-1)/2); |
| | | } |
| | | } |
| | | |
| | | if (bay % 7 == 0) { |
| | | bay=bay+1; |
| | | }else{ |
| | | if (bay>7){ |
| | | bay=bay+locMast.getCrnNo(); |
| | | }else { |
| | | bay=bay+locMast.getCrnNo()-1; |
| | | } |
| | | } |
| | | break; |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | if (area == 1 || area == 6){ |
| | | ArrayList rowData = arrayLists.get(row); |
| | | Object o = rowData.get(bay); |
| | | JSONObject jsonObject = JSON.parseObject(o.toString()); |
| | | jsonObject.put("locNo", locMast.getLocNo());//设置库位号 |
| | | jsonObject.put("locSts", locMast.getLocSts());//库位状态 |
| | | //jsonObject.put("locSts$", locMast.getLocSts$());//库位状态 |
| | | //更新list |
| | | rowData.set(bay, jsonObject); |
| | | arrayLists.set(row, rowData); |
| | | }else { |
| | | ArrayList rowData = arrayLists.get(bay); |
| | | Object o = rowData.get(row); |
| | | JSONObject jsonObject = JSON.parseObject(o.toString()); |
| | | jsonObject.put("locNo", locMast.getLocNo());//设置库位号 |
| | | jsonObject.put("locSts", locMast.getLocSts());//库位状态 |
| | | //jsonObject.put("locSts$", locMast.getLocSts$());//库位状态 |
| | | //更新list |
| | | rowData.set(row, jsonObject); |
| | | arrayLists.set(bay, rowData); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | return JSONObject.toJSONString(arrayLists); |
| | | } else { |
| | | System.out.println("文件不存在!"); |
| | | } |
| | | } catch (IOException ioException) { |
| | | ioException.printStackTrace(); |
| | | // 加载库区对应地图数据 |
| | | List<ArrayList> arrayLists; |
| | | switch (area) { |
| | | case "B": |
| | | arrayLists = LocMapConstants.B_LOC_MAP_FINAL; |
| | | break; |
| | | case "C": |
| | | arrayLists = LocMapConstants.C_LOC_MAP_FINAL; |
| | | break; |
| | | case "D": |
| | | arrayLists = LocMapConstants.D_LOC_MAP_FINAL; |
| | | break; |
| | | case "E": |
| | | arrayLists = LocMapConstants.E_LOC_MAP_FINAL; |
| | | break; |
| | | default: |
| | | arrayLists = LocMapConstants.A_LOC_MAP_FINAL; |
| | | break; |
| | | } |
| | | return null; |
| | | |
| | | // 除A库区外,其他区没有层,而且把列存到了层的数据里,需要转换回来 |
| | | if (!"A".equals(area)) { |
| | | locMasts = locMasts.stream().peek(locMast -> locMast.setBay1(locMast.getLev1())).collect(Collectors.toList()); |
| | | } |
| | | |
| | | for (LocMast locMast : locMasts) { |
| | | |
| | | Integer row = locMast.getRow1(); |
| | | Integer bay = locMast.getBay1(); |
| | | // CDE只有一列,所以列右移 |
| | | if ("C".equals(area) || "D".equals(area) || "E".equals(area)) { |
| | | ++ bay ; |
| | | } |
| | | |
| | | ArrayList rowData = arrayLists.get(row); |
| | | Object o = rowData.get(bay); |
| | | JSONObject jsonObject = JSON.parseObject(o.toString()); |
| | | jsonObject.put("locNo", locMast.getLocNo());//设置库位号 |
| | | jsonObject.put("locSts", locMast.getLocSts());//库位状态 |
| | | //更新list |
| | | rowData.set(bay, jsonObject); |
| | | arrayLists.set(row, rowData); |
| | | } |
| | | |
| | | return JSONObject.toJSONString(arrayLists); |
| | | } |
| | | |
| | | @RequestMapping("/map/searchData/auth") |