|  |  |  | 
|---|
|  |  |  | 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.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.*; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //解析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; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取当前楼层库位数据 | 
|---|
|  |  |  | List<LocMast> locMasts = locMastService.selectLocByLev(lev); | 
|---|
|  |  |  | for (LocMast locMast : locMasts) { | 
|---|
|  |  |  | Integer row = locMast.getRow1(); | 
|---|
|  |  |  | Integer bay = locMast.getBay1(); | 
|---|
|  |  |  | //                    if (row >= 2 && row <= 12) { | 
|---|
|  |  |  | //                        row++; | 
|---|
|  |  |  | //                    }else if (row == 13) { | 
|---|
|  |  |  | //                        row += 2; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                    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); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return JSONObject.toJSONString(arrayLists); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | System.out.println("文件不存在!"); | 
|---|
|  |  |  | //获取当前楼层库位数据 | 
|---|
|  |  |  | 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);//将禁用库位进行设置 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } 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") | 
|---|
|  |  |  | 
|---|
|  |  |  | @RequestParam("matnr") String matnr, | 
|---|
|  |  |  | @RequestParam("maktx") String maktx | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | List<LocDetl> locDetls = locDetlService.searchByLike(orderNo, matnr, maktx, specs, locNo); | 
|---|
|  |  |  | List<LocDetl> locDetls = locDetlService.searchByLike(orderNo, matnr, maktx, specs, ""); | 
|---|
|  |  |  | ArrayList<LocDetl> lists = new ArrayList<>(); | 
|---|
|  |  |  | for (LocDetl locDetl : locDetls) {//过滤掉不是当前楼层的数据 | 
|---|
|  |  |  | int lev1 = Utils.getLev(locDetl.getLocNo()); | 
|---|
|  |  |  | 
|---|
|  |  |  | lists.add(locDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //搜索指定库位号,即使库位为空,也可以返回数据 | 
|---|
|  |  |  | LocMast locMast = locMastService.selectById(locNo); | 
|---|
|  |  |  | if (locMast != null) { | 
|---|
|  |  |  | LocDetl locDetl = new LocDetl(); | 
|---|
|  |  |  | locDetl.setLocNo(locMast.getLocNo()); | 
|---|
|  |  |  | lists.add(locDetl); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|