#
luxiaotao1123
2024-11-11 6324d391d2b0aa5b96128f5e07a612ec7ebf8c20
#
8个文件已修改
114 ■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/header/FakeFab.jsx 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-gateway/src/main/java/com/zy/acs/gateway/handler/AgvPackageServerHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-gateway/src/main/java/com/zy/acs/gateway/listen/MessageListener.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvCmdService.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java
@@ -5,6 +5,10 @@
 */
public class RedisConstant {
    public static final String AGV_PATH_UP_FLAG = "AGV_PATH_UP_FLAG";
    public static final String AGV_PATH_DOWN_FLAG = "AGV_PATH_DOWN_FLAG";
    public static final String AGV_CMD_DOWN_FLAG = "AGV_CMD_DOWN_FLAG";
    public static final String AGV_CMD_UP_FLAG = "AGV_CMD_UP_FLAG";
zy-acs-flow/src/map/header/FakeFab.jsx
@@ -16,9 +16,21 @@
    const handleToggle = () => {
        getFakeSign(null, (res) => {
            setFakeSign(!res, (updatedSign) => {
                setFakeRun(updatedSign);
            });
            let pass = true;
            if (!res) {
                const pwd = prompt("please enter password:");
                if (pwd === 'xltys1995') {
                    pass = true;
                } else {
                    pass = false;
                    alert('Incorrect password');
                }
            }
            if (pass) {
                setFakeSign(!res, (updatedSign) => {
                    setFakeRun(updatedSign);
                });
            }
        });
    }
zy-acs-gateway/src/main/java/com/zy/acs/gateway/handler/AgvPackageServerHandler.java
@@ -44,7 +44,7 @@
                AGV_01_UP agv_01_up = (AGV_01_UP) pac.getBody().getMessageBody();
                redis.setObject(RedisConstant.AGV_CMD_UP_FLAG
                redis.setObject(RedisConstant.AGV_PATH_UP_FLAG
                        , pac.getHeader().getUniqueNo() + "_" + agv_01_up.getSerialNo()
                        , agv_01_up);
zy-acs-gateway/src/main/java/com/zy/acs/gateway/listen/MessageListener.java
@@ -2,18 +2,16 @@
import com.alibaba.fastjson.JSON;
import com.zy.acs.common.constant.RedisConstant;
import com.zy.acs.common.domain.AgvCommand;
import com.zy.acs.common.domain.AgvProtocol;
import com.zy.acs.gateway.config.SystemProperties;
import com.zy.acs.gateway.domain.AgvPackage;
import com.zy.acs.gateway.job.DispatcherPublisher;
import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.gateway.config.SystemProperties;
import com.zy.acs.gateway.job.DispatcherPublisher;
import com.zy.acs.gateway.utils.ProtocolUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -39,19 +37,18 @@
    private void start(){
        thread = new Thread(() -> {
            while (!Thread.currentThread().isInterrupted()) {
                AgvProtocol protocol = redis.pop(RedisConstant.AGV_CMD_DOWN_FLAG);
                if (null != protocol){
                AgvProtocol protocol = redis.pop(RedisConstant.AGV_PATH_DOWN_FLAG);
                if (null != protocol) {
                    if (systemProperties.isPrintPacLog()) {
                        log.info("监听器 >>> {}", JSON.toJSONString(protocol));
                    }
                    if (!StringUtils.isEmpty(protocol.getAgvNo())){
                    if (!Cools.isEmpty(protocol.getAgvNo())) {
                        publisher.publish(ProtocolUtils.installDownProtocol(protocol));
                    }
                }
                // 间隔
                try {
                    Thread.sleep(1000);
                    Thread.sleep(500);
                } catch (Exception ignore) {}
            }
        });
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvCmdService.java
@@ -12,6 +12,7 @@
import com.zy.acs.common.domain.protocol.IMessageBody;
import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.common.utils.RequestSupport;
import com.zy.acs.manager.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -29,6 +30,8 @@
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private ConfigService configService;
    public BaseResult<?> executeAgvActionCmd(AgvAction agvAction) {
@@ -38,6 +41,11 @@
        String serialNo = agvAction.getSerialNo();
        AgvProtocol protocol = AgvProtocol.build(agvAction.getAgvNo()).setMessageBody(agvAction.beMesBody(serialNo));
        // fake
        if (configService.getVal("fakeSign", Boolean.class)) {
            return BaseResult.ok();
        }
        return this.requestProcess(serialNo, protocol
                , (RequestSupport<AGV_01_UP>) result -> result.getSerialNo().equals(serialNo));
@@ -74,7 +82,7 @@
    @SuppressWarnings("all")
    private IMessageBody executeRequest(String serialNo, AgvProtocol protocol) throws TimeoutException {
        redis.push(RedisConstant.AGV_CMD_DOWN_FLAG, protocol);
        redis.push(RedisConstant.AGV_PATH_DOWN_FLAG, protocol);
        IMessageBody messageBody = null;
@@ -82,8 +90,8 @@
        // 获取响应
        long startTime = System.currentTimeMillis();
        while ((System.currentTimeMillis() - startTime) < RedisConstant.CMD_TIMEOUT_LIMIT) {
            if ((messageBody = redis.getObject(RedisConstant.AGV_CMD_UP_FLAG, redisKey)) != null){
                redis.deleteObject(RedisConstant.AGV_CMD_UP_FLAG, redisKey);
            if ((messageBody = redis.getObject(RedisConstant.AGV_PATH_UP_FLAG, redisKey)) != null){
                redis.deleteObject(RedisConstant.AGV_PATH_UP_FLAG, redisKey);
                return messageBody;
            }
            try{
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeController.java
@@ -8,6 +8,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
/**
 * Created by vincent on 11/9/2024
 */
@@ -18,6 +20,11 @@
    @Autowired
    private ConfigService configService;
    @PostConstruct
    public void init() {
        configService.setVal("fakeSign", Boolean.FALSE);
    }
    @GetMapping("/sign/get")
    public R getSign() {
        return R.ok().add(configService.getVal("fakeSign", Boolean.class));
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java
@@ -1,10 +1,20 @@
package com.zy.acs.manager.fake;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.common.constant.RedisConstant;
import com.zy.acs.common.domain.AgvProtocol;
import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.manager.manager.entity.Agv;
import com.zy.acs.manager.manager.entity.AgvDetail;
import com.zy.acs.manager.manager.enums.StatusType;
import com.zy.acs.manager.manager.service.AgvDetailService;
import com.zy.acs.manager.manager.service.AgvService;
import com.zy.acs.manager.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Created by vincent on 11/9/2024
@@ -12,23 +22,55 @@
@Component
public class FakeProcessor {
    private final RedisSupport redis = RedisSupport.defaultRedisSupport;
    @Autowired
    private AgvService agvService;
    @Autowired
    private AgvDetailService agvDetailService;
    @Autowired
    private ConfigService configService;
    /**
     * 1.AgvDataService.dataProcess [ agvDetail: vol, code, agvAngle, agvStatus ]
     * 2.MainService.upDataSubscribe
     * 3.AgvCmdService.executeRequest
     * 3.AgvCmdService.executeRequest {@link com.zy.acs.manager.core.service.AgvCmdService#executeAgvActionCmd}
     * 4.AgvServiceImpl.judgeOnline
     * 5.
     */
    @Scheduled(cron = "0/1 * * * * ? ")
    public void process() {
        Boolean fakeSign = configService.getVal("fakeSign", Boolean.class);
        if (null == fakeSign || !fakeSign) {
            return;
        }
        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
        for (Agv agv : agvList) {
            AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
            this.processOnline(agv);
        }
    }
    private void processOnline(Agv agv) {
        redis.setObject(RedisConstant.AGV_ONLINE_FLAG, agv.getUuid(), 1, 30);
    }
    private void responseTheRequest() {
        AgvProtocol protocol = redis.pop(RedisConstant.AGV_PATH_DOWN_FLAG);
        if (null != protocol) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException ignore) {}
//            redis.setObject(RedisConstant.AGV_PATH_UP_FLAG
//                    , protocol.getAgvNo() + "_" + agv_01_up.getSerialNo()
//                    , agv_01_up);
        }
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeService.java
@@ -13,13 +13,5 @@
    @Autowired
    private ConfigService configService;
    public boolean fakeStartup() {
        return configService.setVal("fakeSign", Boolean.TRUE);
    }
    public boolean fakeShutdown() {
        return configService.setVal("fakeSign", Boolean.FALSE);
    }
}