//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() // .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() // .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 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 list = codeService.list(new LambdaQueryWrapper().notIn(Code::getData, notInCodeList)); // Collections.shuffle(list); // for (Code endCode : list) { // List 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 stockList = locService.list(new LambdaQueryWrapper() // .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 idleList = locService.list(new LambdaQueryWrapper() // .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 stockList = locService.list(new LambdaQueryWrapper() // .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 idleList = locService.list(new LambdaQueryWrapper() // .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 stockList = locService.list(new LambdaQueryWrapper() // .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 idleList = locService.list(new LambdaQueryWrapper() // .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"); // } // // } // // } // //}