From dc7913f05cdef24530cf8d2b651ba6d22c53b471 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 09 十二月 2024 16:48:49 +0800
Subject: [PATCH] #

---
 /dev/null                                                                      |  372 ----------------------------------------------
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java |   73 +++++++++
 2 files changed, 73 insertions(+), 372 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java
deleted file mode 100644
index 0888b3c..0000000
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/TestController.java
+++ /dev/null
@@ -1,372 +0,0 @@
-//package com.zy.acs.manager.core;
-//
-//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-//import com.zy.acs.manager.common.domain.TaskDto;
-//import com.zy.acs.manager.core.service.MainService;
-//import com.zy.acs.manager.core.service.MapService;
-//import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam;
-//import com.zy.acs.manager.manager.entity.*;
-//import com.zy.acs.manager.manager.enums.BusStsType;
-//import com.zy.acs.manager.manager.enums.LocStsType;
-//import com.zy.acs.manager.manager.enums.TaskStsType;
-//import com.zy.acs.manager.manager.enums.TaskTypeType;
-//import com.zy.acs.manager.manager.service.*;
-//import com.zy.acs.manager.system.controller.BaseController;
-//import com.zy.acs.manager.system.service.ConfigService;
-//import com.zy.acs.framework.common.Cools;
-//import com.zy.acs.framework.common.R;
-//import com.zy.acs.framework.common.SnowflakeIdWorker;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.scheduling.annotation.Scheduled;
-//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.util.ArrayList;
-//import java.util.Collections;
-//import java.util.List;
-//
-///**
-// * Created by vincent on 2023/6/20
-// */
-//@RestController
-//@RequestMapping("/test")
-//public class TestController extends BaseController {
-//
-//    @Autowired
-//    private BusService busService;
-//    @Autowired
-//    private MainService mainService;
-//    @Autowired
-//    private SnowflakeIdWorker snowflakeIdWorker;
-//    @Autowired
-//    private AgvModelService agvModelService;
-//    @Autowired
-//    private AgvService agvService;
-//    @Autowired
-//    private AgvDetailService agvDetailService;
-//    @Autowired
-//    private TaskService taskService;
-//    @Autowired
-//    private CodeService codeService;
-//    @Autowired
-//    private MapService mapService;
-//
-//
-///*
-//TRUNCATE man_bus;
-//TRUNCATE man_task;
-//TRUNCATE man_action;
-//UPDATE man_loc SET loc_sts = 16 WHERE loc_sts = 18;
-//UPDATE man_loc SET loc_sts = 15 WHERE loc_sts = 17;
-//*/
-//
-//    @Value("${auto.move}")
-//    private Boolean autoMove;
-//    @Value("${auto.demo}")
-//    private Boolean autoDemo;
-//    @Value("${auto.demo1}")
-//    private Boolean autoDemo1;
-//    @Value("${auto.demo2}")
-//    private Boolean autoDemo2;
-//    @Value("${auto.size}")
-//    private Integer autoSize;
-//    @Autowired
-//    private LocService locService;
-//    @Autowired
-//    private ConfigService configService;
-//
-//    // http://localhost:9090/test/auto/move
-//    @GetMapping("/auto/move")
-//    public R autoMove() {
-//        this.autoMove = !this.autoMove;
-//        return R.ok().add(Cools.add("autoMove", this.autoMove));
-//    }
-//
-//    @Scheduled(cron = "0/1 * * * * ? ")
-//    private void move1() throws InterruptedException {
-//        if (!this.autoMove) { return; }
-//        Agv agv = agvService.selectByUuid("1");
-//        AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
-//        if (taskService.count(new LambdaQueryWrapper<Task>()
-//                .eq(Task::getAgvId, agv.getId())
-//                .and(i -> {
-//                    i.eq(Task::getTaskSts, TaskStsType.WAITING.val())
-//                            .or().eq(Task::getTaskSts, TaskStsType.ASSIGN.val())
-//                            .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val());
-//                })) > 0) {
-//            return;
-//        }
-//        if (!agvService.judgeEnable(agv.getId())) {
-//            return;
-//        }
-//        Code randomCode = this.getRandomCode(agvDetail);
-//        if (null == randomCode) {
-//            return;
-//        }
-//        if (mainService.buildMinorTask(agv, agvDetail, TaskTypeType.MOVE, randomCode.getData())) {
-//            System.out.println(agv.getUuid() + "寮�濮嬭蛋琛屾紨绀�...");
-//        }
-//    }
-////    @Scheduled(cron = "0 */3 * * * ? ")
-//    @Scheduled(cron = "0/1 * * * * ? ")
-//    private void move2() throws InterruptedException {
-//        if (!this.autoMove) { return; }
-//        Agv agv = agvService.selectByUuid("2");
-//        AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
-//        if (taskService.count(new LambdaQueryWrapper<Task>()
-//                .eq(Task::getAgvId, agv.getId())
-//                .and(i -> {
-//                    i.eq(Task::getTaskSts, TaskStsType.WAITING.val())
-//                            .or().eq(Task::getTaskSts, TaskStsType.ASSIGN.val())
-//                            .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val());
-//                })) > 0) {
-//            return;
-//        }
-//        if (!agvService.judgeEnable(agv.getId())) {
-//            return;
-//        }
-//        Code randomCode = this.getRandomCode(agvDetail);
-//        if (null == randomCode) {
-//            return;
-//        }
-//        if (mainService.buildMinorTask(agv, agvDetail, TaskTypeType.MOVE, randomCode.getData())) {
-//            System.out.println(agv.getUuid() + "寮�濮嬭蛋琛屾紨绀�...");
-//        }
-//    }
-//
-//    public Code getRandomCode(AgvDetail agvDetail) {
-//        Code startCode = codeService.getById(agvDetail.getRecentCode());
-//        List<String> notInCodeList = new ArrayList<>();
-//        notInCodeList.add("00000024");
-//        notInCodeList.add("00000025");
-//        notInCodeList.add("00000026");
-//        notInCodeList.add("00000027");
-//        notInCodeList.add("00000028");
-//        notInCodeList.add("00000029");
-//        notInCodeList.add("00000023");
-//        notInCodeList.add("00000035");
-//        List<Code> list = codeService.list(new LambdaQueryWrapper<Code>().notIn(Code::getData, notInCodeList));
-//        Collections.shuffle(list);
-//        for (Code endCode : list) {
-//            List<String> pathList = mapService.validFeasibility(startCode, endCode);
-//            if (pathList.size() >= 5) {
-//                return endCode;
-//            }
-//        }
-//        return list.stream().findFirst().orElse(null);
-//    }
-//
-//    // http://localhost:9090/test/auto?size=1
-//    @GetMapping("/auto")
-//    public R auto(@RequestParam(value = "size", required = false) Integer size) {
-//        if (null != size) {
-//            this.autoSize = size;
-//        }
-//        this.autoDemo = !this.autoDemo;
-//        return R.ok(Cools.add("autoDemo", this.autoDemo));
-//    }
-//
-//    @Scheduled(cron = "0/1 * * * * ? ")
-//    private void demo() throws InterruptedException {
-//        if (!this.autoDemo) { return; }
-//        int busLimit = configService.getVal("busLimit", Integer.class);
-//        if (autoSize != null) {
-//            busLimit = autoSize;
-//        }
-//        busLimit = 2;
-//        AgvModel agvModel = agvModelService.list(new LambdaQueryWrapper<>()).stream().findFirst().orElse(null);
-//        if (null != agvModel) {
-//            busLimit = agvModel.getBackpack() * 2;
-//        }
-//        // 鍦ㄥ簱
-//        int stock = 0;
-//        List<Loc> stockList = locService.list(new LambdaQueryWrapper<Loc>()
-//                .eq(Loc::getLocSts, LocStsType.STOCK.val())
-//                .ge(Loc::getRow, 1)
-//                .le(Loc::getRow, 2)
-//        );
-//        Collections.shuffle(stockList);
-//        if (stockList.size() > busLimit) {
-//            stockList = stockList.subList(0, busLimit);
-//        }
-//        stock = stockList.size();
-//        if (stock == 0) { return;}
-//
-//        // 绌洪棽
-//        List<Loc> idleList = locService.list(new LambdaQueryWrapper<Loc>()
-//                .eq(Loc::getLocSts, LocStsType.IDLE.val())
-//                .ge(Loc::getRow, 1)
-//                .le(Loc::getRow, 2)
-//        );
-//        Collections.shuffle(idleList);
-//        if (idleList.size() > stock) {
-//            idleList = idleList.subList(0, stock);
-//        }
-//
-//        if (stockList.size() == idleList.size()) {
-//            OpenBusSubmitParam param = new OpenBusSubmitParam();
-//            param.setBatch("batchNo");
-//            for (int i = 0; i < stock; i++) {
-//                Loc stockLoc = stockList.get(i);
-//                Loc idleLoc = idleList.get(i);
-//
-//                TaskDto taskDto = new TaskDto();
-//                taskDto.setOriLoc(stockLoc.getLocNo());
-//                taskDto.setDestLoc(idleLoc.getLocNo());
-//                taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
-//
-//                param.getTaskList().add(taskDto);
-//
-//            }
-//
-//            if (Cools.isEmpty(busService.selectBySts(BusStsType.RECEIVE, "autoDemo"))
-//                    && Cools.isEmpty(busService.selectBySts(BusStsType.PROGRESS, "autoDemo"))
-//            ) {
-//                mainService.generateBusAndTask(param, "autoDemo");
-//            }
-//
-//        }
-//
-//    }
-//
-//
-//    // http://localhost:9090/test/auto1?size=1
-//    @GetMapping("/auto1")
-//    public R auto1(@RequestParam(value = "size", required = false) Integer size) {
-//       if (null != size) {
-//           this.autoSize = size;
-//       }
-//       this.autoDemo1 = !this.autoDemo1;
-//        return R.ok(Cools.add("autoDemo", this.autoDemo1));
-//    }
-//
-//    @Scheduled(cron = "0/3 * * * * ? ")
-//    private void demo1() throws InterruptedException {
-//        if (!this.autoDemo1) { return; }
-//        int busLimit = configService.getVal("busLimit", Integer.class);
-//        if (autoSize != null) {
-//            busLimit = autoSize;
-//        }
-//        // 鍦ㄥ簱
-//        int stock = 0;
-//        List<Loc> stockList = locService.list(new LambdaQueryWrapper<Loc>()
-//                .eq(Loc::getLocSts, LocStsType.STOCK.val())
-//                .ge(Loc::getRow, 1)
-//                .le(Loc::getRow, 2)
-//        );
-//        Collections.shuffle(stockList);
-//        if (stockList.size() > busLimit) {
-//            stockList = stockList.subList(0, busLimit);
-//        }
-//        stock = stockList.size();
-//        if (stock == 0) { return;}
-//
-//        // 绌洪棽
-//        List<Loc> idleList = locService.list(new LambdaQueryWrapper<Loc>()
-//                .eq(Loc::getLocSts, LocStsType.IDLE.val())
-//                .ge(Loc::getRow, 1)
-//                .le(Loc::getRow, 2)
-//        );
-//        Collections.shuffle(idleList);
-//        if (idleList.size() > stock) {
-//            idleList = idleList.subList(0, stock);
-//        }
-//
-//        if (stockList.size() == idleList.size()) {
-//            OpenBusSubmitParam param = new OpenBusSubmitParam();
-//            param.setBatch("batchNo");
-//            for (int i = 0; i < stock; i++) {
-//                Loc stockLoc = stockList.get(i);
-//                Loc idleLoc = idleList.get(i);
-//
-//                TaskDto taskDto = new TaskDto();
-//                taskDto.setOriLoc(stockLoc.getLocNo());
-//                taskDto.setDestLoc(idleLoc.getLocNo());
-//                taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
-//
-//                param.getTaskList().add(taskDto);
-//
-//            }
-//
-//            if (Cools.isEmpty(busService.selectBySts(BusStsType.RECEIVE, "autoDemo1"))
-//                    && Cools.isEmpty(busService.selectBySts(BusStsType.PROGRESS, "autoDemo1"))
-//            ) {
-//                mainService.generateBusAndTask(param, "autoDemo1");
-//            }
-//
-//        }
-//
-//    }
-//
-//    // http://localhost:9090/test/auto2?size=1
-//    @GetMapping("/auto2")
-//    public R auto2(@RequestParam(value = "size", required = false) Integer size) {
-//        if (null != size) {
-//            this.autoSize = size;
-//        }
-//        this.autoDemo2 = !this.autoDemo2;
-//        return R.ok(Cools.add("autoDemo", this.autoDemo2));
-//    }
-//
-//    @Scheduled(cron = "0/3 * * * * ? ")
-//    private void demo2() throws InterruptedException {
-//        if (!this.autoDemo2) { return; }
-//        int busLimit = configService.getVal("busLimit", Integer.class);
-//        if (autoSize != null) {
-//            busLimit = autoSize;
-//        }
-//        // 鍦ㄥ簱
-//        int stock = 0;
-//        List<Loc> stockList = locService.list(new LambdaQueryWrapper<Loc>()
-//                .eq(Loc::getLocSts, LocStsType.STOCK.val())
-//                .ge(Loc::getRow, 3)
-//                .le(Loc::getRow, 4)
-//        );
-//        Collections.shuffle(stockList);
-//        if (stockList.size() > busLimit) {
-//            stockList = stockList.subList(0, busLimit);
-//        }
-//        stock = stockList.size();
-//        if (stock == 0) { return;}
-//
-//        // 绌洪棽
-//        List<Loc> idleList = locService.list(new LambdaQueryWrapper<Loc>()
-//                .eq(Loc::getLocSts, LocStsType.IDLE.val())
-//                .ge(Loc::getRow, 3)
-//                .le(Loc::getRow, 4)
-//        );
-//        Collections.shuffle(idleList);
-//        if (idleList.size() > stock) {
-//            idleList = idleList.subList(0, stock);
-//        }
-//
-//        if (stockList.size() == idleList.size()) {
-//            OpenBusSubmitParam param = new OpenBusSubmitParam();
-//            param.setBatch("batchNo");
-//            for (int i = 0; i < stock; i++) {
-//                Loc stockLoc = stockList.get(i);
-//                Loc idleLoc = idleList.get(i);
-//
-//                TaskDto taskDto = new TaskDto();
-//                taskDto.setOriLoc(stockLoc.getLocNo());
-//                taskDto.setDestLoc(idleLoc.getLocNo());
-//                taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
-//
-//                param.getTaskList().add(taskDto);
-//
-//            }
-//
-//            if (Cools.isEmpty(busService.selectBySts(BusStsType.RECEIVE, "autoDemo2"))
-//                    && Cools.isEmpty(busService.selectBySts(BusStsType.PROGRESS, "autoDemo2"))
-//            ) {
-//                mainService.generateBusAndTask(param, "autoDemo2");
-//            }
-//
-//        }
-//
-//    }
-//
-//}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java
new file mode 100644
index 0000000..f2c9b62
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java
@@ -0,0 +1,73 @@
+package com.zy.acs.manager.core.utils;
+
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.manager.core.service.astart.CodeNodeType;
+import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
+import com.zy.acs.manager.manager.entity.Code;
+import com.zy.acs.manager.manager.entity.Route;
+import com.zy.acs.manager.manager.service.CodeGapService;
+import com.zy.acs.manager.manager.service.CodeService;
+import com.zy.acs.manager.manager.service.RouteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by vincent on 12/9/2024
+ */
+@Component
+public class RouteGenerator {
+
+    @Autowired
+    private MapDataDispatcher mapDataDispatcher;
+    @Autowired
+    private CodeService codeService;
+    @Autowired
+    private RouteService routeService;
+    @Autowired
+    private CodeGapService codeGapService;
+
+    public List<Route> generateRoutes(String[][] codeMatrix) {
+        List<Route> routes = new ArrayList<>();
+
+        int rows = codeMatrix.length;
+        int cols = codeMatrix[0].length;
+
+        // 閬嶅巻浜岀淮鏁扮粍锛岀敓鎴愮浉閭绘潯鐮佷箣闂寸殑 Route
+        for (int i = 0; i < rows; i++) {
+            for (int j = 0; j < cols; j++) {
+                String currentCodeData = codeMatrix[i][j];
+
+                // 璺宠繃 NONE 鏉$爜
+                if (currentCodeData == null || CodeNodeType.NONE.val.equals(currentCodeData)) {
+                    continue;
+                }
+                Code currCode = codeService.selectByData(currentCodeData);
+
+                // 妫�鏌ュ彸杈圭浉閭绘潯鐮�
+                if (j + 1 < cols) {
+                    String rightCodeData = codeMatrix[i][j + 1];
+                    if (!Cools.isEmpty(rightCodeData) && !CodeNodeType.NONE.val.equals(rightCodeData)) {
+                        Code rightCode = codeService.selectByData(rightCodeData);
+                        routeService.createRouteByCode(currCode, rightCode, 0, null);
+                    }
+                }
+
+                // 妫�鏌ヤ笅杈圭浉閭绘潯鐮�
+                if (i + 1 < rows) {
+                    String bottomCodeData = codeMatrix[i + 1][j];
+                    if (!Cools.isEmpty(bottomCodeData) && !CodeNodeType.NONE.val.equals(bottomCodeData)) {
+                        Code bottomCode = codeService.selectByData(bottomCodeData);
+                        routeService.createRouteByCode(currCode, bottomCode, 0, null);
+                    }
+                }
+            }
+        }
+
+        return routes;
+    }
+
+
+}

--
Gitblit v1.9.1