From c832c7f5d6f8c015d609e044e902e070da5240b0 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期日, 24 九月 2023 14:22:57 +0800
Subject: [PATCH] 拣货单

---
 src/main/java/com/zy/asrs/controller/MapController.java |  205 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 147 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MapController.java b/src/main/java/com/zy/asrs/controller/MapController.java
index 7ace3ee..c3d6517 100644
--- a/src/main/java/com/zy/asrs/controller/MapController.java
+++ b/src/main/java/com/zy/asrs/controller/MapController.java
@@ -4,17 +4,21 @@
 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
 
@@ -24,6 +28,10 @@
     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");
@@ -42,68 +50,65 @@
     @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();
-
-                //瑙f瀽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);
+        //瑙f瀽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")
@@ -115,7 +120,7 @@
                        @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());
@@ -123,7 +128,91 @@
                 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);
+        //瑙f瀽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();
+    }
+
 }

--
Gitblit v1.9.1