#
Junjie
6 天以前 f375928943ad4b9fe6d8508e151971dcdc23e982
src/main/java/com/zy/core/network/fake/ZyDualCrnFakeConnect.java
@@ -16,7 +16,10 @@
    private ZyDualCrnStatusEntity crnStatus;
    private DeviceConfig deviceConfig;
    private final ExecutorService executor = Executors.newSingleThreadExecutor();
    // 允许并行执行多个命令任务(固定线程池)。如需更高并发可调整大小。
    private final ExecutorService executor = Executors
            .newFixedThreadPool(9999);
    private int taskExecuteStation = 0;
    public ZyDualCrnFakeConnect(DeviceConfig deviceConfig) {
        this.deviceConfig = deviceConfig;
@@ -79,46 +82,71 @@
    }
    private void commandMove(DualCrnCommand command) {
        int destinationPosX = command.getDestinationPosX().intValue();
        int destinationPosY = command.getDestinationPosY().intValue();
        int destinationPosZ = command.getDestinationPosZ().intValue();
        int taskMode = command.getTaskMode().intValue();
        int taskNo = command.getTaskNo().intValue();
        int destinationPosX = command.getDestinationPosX();
        int destinationPosY = command.getDestinationPosY();
        int destinationPosZ = command.getDestinationPosZ();
        int taskMode = command.getTaskMode();
        int taskNo = command.getTaskNo();
        int station = command.getStation();
        while (true) {
            if (taskExecuteStation == 0) {
                taskExecuteStation = station;
            }
            if (taskExecuteStation == station) {
                break;
            }
            sleep(200);
        }
        if(command.getStation() == 1) {
            this.crnStatus.setTaskNo(taskNo);
            this.crnStatus.setStatus(CrnStatusType.MOVING.id);
            this.crnStatus.setTaskReceive(1);
            moveY(this.crnStatus.getBay(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevel(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY, this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatus(CrnStatusType.WAITING.id);
        }else {
            this.crnStatus.setTaskNoTwo(taskNo);
            this.crnStatus.setStatusTwo(CrnStatusType.MOVING.id);
            this.crnStatus.setTaskReceive(1);
            moveY(this.crnStatus.getBayTwo(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevelTwo(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY, this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatusTwo(CrnStatusType.WAITING.id);
        }
        taskExecuteStation = 0;
    }
    private void commandTake(DualCrnCommand command) {
        int sourcePosX = command.getSourcePosX().intValue();
        int sourcePosY = command.getSourcePosY().intValue();
        int sourcePosZ = command.getSourcePosZ().intValue();
        int destinationPosX = command.getDestinationPosX().intValue();
        int destinationPosY = command.getDestinationPosY().intValue();
        int destinationPosZ = command.getDestinationPosZ().intValue();
        int taskMode = command.getTaskMode().intValue();
        int taskNo = command.getTaskNo().intValue();
        int sourcePosX = command.getSourcePosX();
        int sourcePosY = command.getSourcePosY();
        int sourcePosZ = command.getSourcePosZ();
        int destinationPosX = command.getDestinationPosX();
        int destinationPosY = command.getDestinationPosY();
        int destinationPosZ = command.getDestinationPosZ();
        int taskMode = command.getTaskMode();
        int taskNo = command.getTaskNo();
        int station = command.getStation();
        while (true) {
            if (taskExecuteStation == 0) {
                taskExecuteStation = station;
            }
            if (taskExecuteStation == station) {
                break;
            }
            sleep(200);
        }
        if(command.getStation() == 1) {
            this.crnStatus.setTaskNo(taskNo);
            this.crnStatus.setStatus(CrnStatusType.FETCH_MOVING.id);
            this.crnStatus.setTaskReceive(1);
            moveY(this.crnStatus.getBay(), sourcePosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevel(), sourcePosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), sourcePosY,this.crnStatus.getLevel(), sourcePosZ,command.getStation());
            this.crnStatus.setStatus(CrnStatusType.FETCHING.id);
            sleep(2000);
            if (Thread.currentThread().isInterrupted()) {
@@ -127,8 +155,7 @@
            this.crnStatus.setLoaded(1);
            this.crnStatus.setStatus(CrnStatusType.PUT_MOVING.id);
            moveY(this.crnStatus.getBay(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevel(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY,this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatus(CrnStatusType.PUTTING.id);
            sleep(2000);
            if (Thread.currentThread().isInterrupted()) {
@@ -141,8 +168,7 @@
            this.crnStatus.setStatusTwo(CrnStatusType.FETCH_MOVING.id);
            this.crnStatus.setTaskReceiveTwo(1);
            moveY(this.crnStatus.getBayTwo(), sourcePosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevelTwo(), sourcePosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), sourcePosY,this.crnStatus.getLevel(), sourcePosZ, command.getStation());
            this.crnStatus.setStatusTwo(CrnStatusType.FETCHING.id);
            sleep(2000);
            if (Thread.currentThread().isInterrupted()) {
@@ -151,8 +177,7 @@
            this.crnStatus.setLoadedTwo(1);
            this.crnStatus.setStatusTwo(CrnStatusType.PUT_MOVING.id);
            moveY(this.crnStatus.getBayTwo(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevelTwo(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY,this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatusTwo(CrnStatusType.PUTTING.id);
            sleep(2000);
            if (Thread.currentThread().isInterrupted()) {
@@ -161,24 +186,38 @@
            this.crnStatus.setLoadedTwo(0);
            this.crnStatus.setStatusTwo(CrnStatusType.WAITING.id);
        }
        taskExecuteStation = 0;
    }
    private void commandPick(DualCrnCommand command) {
        int destinationPosX = command.getDestinationPosX().intValue();
        int destinationPosY = command.getDestinationPosY().intValue();
        int destinationPosZ = command.getDestinationPosZ().intValue();
        int taskMode = command.getTaskMode().intValue();
        int taskNo = command.getTaskNo().intValue();
        int destinationPosX = command.getDestinationPosX();
        int destinationPosY = command.getDestinationPosY();
        int destinationPosZ = command.getDestinationPosZ();
        int taskMode = command.getTaskMode();
        int taskNo = command.getTaskNo();
        int station = command.getStation();
        while (true) {
            if (taskExecuteStation == 0) {
                taskExecuteStation = station;
            }
            if (taskExecuteStation == station) {
                break;
            }
            sleep(200);
        }
        if(command.getStation() == 1) {
            this.crnStatus.setTaskNo(taskNo);
            this.crnStatus.setStatus(CrnStatusType.FETCH_MOVING.id);
            this.crnStatus.setTaskReceive(1);
            moveY(this.crnStatus.getBay(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevel(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY,this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatus(CrnStatusType.FETCHING.id);
            sleep(2000);
            sleep(3000);
            if (Thread.currentThread().isInterrupted()) {
                return;
            }
@@ -189,34 +228,47 @@
            this.crnStatus.setStatusTwo(CrnStatusType.FETCH_MOVING.id);
            this.crnStatus.setTaskReceiveTwo(1);
            moveY(this.crnStatus.getBayTwo(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevelTwo(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY,this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatusTwo(CrnStatusType.FETCHING.id);
            sleep(2000);
            sleep(3000);
            if (Thread.currentThread().isInterrupted()) {
                return;
            }
            this.crnStatus.setLoadedTwo(1);
            this.crnStatus.setStatusTwo(CrnStatusType.WAITING.id);
        }
        taskExecuteStation = 0;
    }
    private void commandPut(DualCrnCommand command) {
        int destinationPosX = command.getDestinationPosX().intValue();
        int destinationPosY = command.getDestinationPosY().intValue();
        int destinationPosZ = command.getDestinationPosZ().intValue();
        int taskMode = command.getTaskMode().intValue();
        int taskNo = command.getTaskNo().intValue();
        int destinationPosX = command.getDestinationPosX();
        int destinationPosY = command.getDestinationPosY();
        int destinationPosZ = command.getDestinationPosZ();
        int taskMode = command.getTaskMode();
        int taskNo = command.getTaskNo();
        int station = command.getStation();
        while (true) {
            if (taskExecuteStation == 0) {
                taskExecuteStation = station;
            }
            if (taskExecuteStation == station) {
                break;
            }
            sleep(200);
        }
        if(command.getStation() == 1) {
            this.crnStatus.setTaskNo(taskNo);
            this.crnStatus.setStatus(CrnStatusType.PUT_MOVING.id);
            this.crnStatus.setTaskReceive(1);
            moveY(this.crnStatus.getBay(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevel(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY,this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatus(CrnStatusType.PUTTING.id);
            sleep(2000);
            sleep(3000);
            if (Thread.currentThread().isInterrupted()) {
                return;
            }
@@ -227,16 +279,17 @@
            this.crnStatus.setStatusTwo(CrnStatusType.PUT_MOVING.id);
            this.crnStatus.setTaskReceiveTwo(1);
            moveY(this.crnStatus.getBayTwo(), destinationPosY, command.getStation().intValue());
            moveZ(this.crnStatus.getLevelTwo(), destinationPosZ, command.getStation().intValue());
            moveYZ(this.crnStatus.getBay(), destinationPosY,this.crnStatus.getLevel(), destinationPosZ, command.getStation());
            this.crnStatus.setStatusTwo(CrnStatusType.PUTTING.id);
            sleep(2000);
            sleep(3000);
            if (Thread.currentThread().isInterrupted()) {
                return;
            }
            this.crnStatus.setLoadedTwo(0);
            this.crnStatus.setStatusTwo(CrnStatusType.WAITING.id);
        }
        taskExecuteStation = 0;
    }
    private void moveZ(int sourcePosZ, int destinationPosZ, int station) {
@@ -245,11 +298,7 @@
            int initSourcePosZ = sourcePosZ;
            for(int i = 0; i < moveLength; i++) {
                initSourcePosZ++;
                if(station == 1) {
                    this.crnStatus.setLevel(initSourcePosZ);
                }else {
                    this.crnStatus.setLevelTwo(initSourcePosZ);
                }
                this.crnStatus.setLevel(initSourcePosZ);
                sleep(1000);
                if (Thread.currentThread().isInterrupted()) {
                    return;
@@ -260,11 +309,7 @@
            int initSourcePosZ = sourcePosZ;
            for(int i = 0; i < moveLength; i++) {
                initSourcePosZ--;
                if(station == 1) {
                    this.crnStatus.setLevel(initSourcePosZ);
                }else {
                    this.crnStatus.setLevelTwo(initSourcePosZ);
                }
                this.crnStatus.setLevel(initSourcePosZ);
                this.crnStatus.setLevel(initSourcePosZ);
                sleep(1000);
                if (Thread.currentThread().isInterrupted()) {
@@ -280,12 +325,8 @@
            int initSourcePosY = sourcePosY;
            for(int i = 0; i < moveLength; i++) {
                initSourcePosY++;
                if(station == 1) {
                    this.crnStatus.setBay(initSourcePosY);
                }else {
                    this.crnStatus.setBayTwo(initSourcePosY);
                }
                sleep(1000);
                this.crnStatus.setBay(initSourcePosY);
                sleep(500);
                if (Thread.currentThread().isInterrupted()) {
                    return;
                }
@@ -295,12 +336,8 @@
            int initSourcePosY = sourcePosY;
            for(int i = 0; i < moveLength; i++) {
                initSourcePosY--;
                if(station == 1) {
                    this.crnStatus.setBay(initSourcePosY);
                }else {
                    this.crnStatus.setBayTwo(initSourcePosY);
                }
                sleep(1000);
                this.crnStatus.setBay(initSourcePosY);
                sleep(500);
                if (Thread.currentThread().isInterrupted()) {
                    return;
                }
@@ -308,6 +345,11 @@
        }
    }
    private void moveYZ(int sourcePosY, int destinationPosY, int sourcePosZ, int destinationPosZ, int station) {
        moveY(sourcePosY, destinationPosY, station);
        moveZ(sourcePosZ, destinationPosZ, station);
    }
    private void sleep(long ms) {
        try {
            Thread.sleep(ms);