#
vincentlu
2025-01-20 68214b4b6d8b04a84f23410e77afa02b63428a32
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java
@@ -2,7 +2,10 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.core.cache.CoreCache;
import com.zy.acs.manager.core.domain.BackpackDto;
import com.zy.acs.manager.core.domain.CodeStepDto;
import com.zy.acs.manager.core.domain.MapWsAgvVo;
import com.zy.acs.manager.core.domain.MapWsVo;
import com.zy.acs.manager.core.service.MapService;
@@ -28,14 +31,11 @@
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
 * Created by vincent on 10/14/2024
 */
@Slf4j
@Component
public class MapDataWsScheduler {
    public static final int WEBSOCKET_BROADCAST_INTERVAL = 600;
    public static final int WEBSOCKET_BROADCAST_INTERVAL = 300;
    private ExecutorService singleThreadExecutor;
@@ -79,12 +79,12 @@
                , agvList.stream().map(Agv::getUuid).collect(Collectors.toSet()));
        for (Agv agv : agvList) {
            AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
            AgvModel agvModel = agvModelService.getByAgvId(agv.getId());
            AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
            if (null == agvDetail) { continue; }
            Long recentCode = agvDetail.getRecentCode();
            if (null == recentCode) { continue; }
            Code code = codeService.getById(recentCode);
            Code code = codeService.getCacheById(recentCode);
            if (null == code) { continue; }
            MapWsAgvVo vo = new MapWsAgvVo();
@@ -94,6 +94,7 @@
            vo.setDirection(agvDetail.getAgvAngle());
            vo.setBackpack(GsonUtils.fromJsonToList(agvDetail.getBackpack(), BackpackDto.class));
            vo.setBattery(agvDetail.getSoc());
            vo.setJobType(this.getJobType(agv.getId(), code.getData()));
            vo.setError(agvDetail.realError());
            vo.setDynamicRoute(codeDataListMap.get(agv.getUuid()));
@@ -104,6 +105,20 @@
        return agvVos;
    }
    private String getJobType(Long agvId, String currCodeData) {
        if (null == agvId || Cools.isEmpty(currCodeData)) {
            return null;
        }
        CodeStepDto codeStepDto = CoreCache.AGV_MOCK_STEP_CACHE.get(agvId);
        if (null == codeStepDto) {
            return null;
        }
        if (!codeStepDto.getCodeData().equals(currCodeData)) {
            return null;
        }
        return codeStepDto.getJobType().toString();
    }
    @PreDestroy
    public void destroy() {
        this.singleThreadExecutor.shutdownNow();