From 3e77828236068dd269e43aa33106f6b9c781775e Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 11 十一月 2024 16:55:17 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java | 58 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 43 insertions(+), 15 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java index 11bd3a9..5570441 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/FakeProcessor.java @@ -3,30 +3,42 @@ 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.domain.protocol.AGV_01_DOWN; +import com.zy.acs.common.domain.protocol.AGV_01_UP; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.manager.entity.Action; import com.zy.acs.manager.manager.entity.Agv; -import com.zy.acs.manager.manager.entity.AgvDetail; import com.zy.acs.manager.manager.enums.ActionStsType; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.service.ActionService; import com.zy.acs.manager.manager.service.AgvDetailService; import com.zy.acs.manager.manager.service.AgvService; +import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.system.service.ConfigService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * Created by vincent on 11/9/2024 */ +@Slf4j @Component public class FakeProcessor { private final RedisSupport redis = RedisSupport.defaultRedisSupport; + + public static final Map<Long, Boolean> AGV_PROCESSING_MAP = new ConcurrentHashMap<>(); + + private ExecutorService executorService; @Autowired private AgvService agvService; @@ -36,6 +48,8 @@ private ActionService actionService; @Autowired private ConfigService configService; + @Autowired + private CodeService codeService; /** * 1.AgvDataService.dataProcess [ agvDetail: vol, code, agvAngle, agvStatus ] @@ -52,22 +66,33 @@ } List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val)); - for (Agv agv : agvList) { - AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); + // init executorService + if (null == this.executorService) { + int count = agvList.size() > 30 ? agvList.size() : 20; + this.executorService = Executors.newFixedThreadPool(count); + } - this.processRunning(agv); + this.responseTheRequest(); + + for (Agv agv : agvList) { + AGV_PROCESSING_MAP.putIfAbsent(agv.getId(), false); this.processOnline(agv); - } - } - - private void processRunning(Agv agv) { - List<Action> actionList = actionService.queryLatestGroup(agv.getId(), ActionStsType.ISSUED); - if (!Cools.isEmpty(actionList)) { - for (Action action : actionList) { - + if (!AGV_PROCESSING_MAP.get(agv.getId())) { + List<Action> actionList = actionService.queryLatestGroup(agv.getId(), ActionStsType.ISSUED); + if (!Cools.isEmpty(actionList)) { + executorService.submit(new AgvSimulatorTask( + agv + , redis + , agvDetailService + , actionService + , codeService + , actionList + )); + } } + } } @@ -82,11 +107,14 @@ Thread.sleep(100); } catch (InterruptedException ignore) {} + AGV_01_DOWN agv_01_down = (AGV_01_DOWN) protocol.getMessageBody(); -// redis.setObject(RedisConstant.AGV_PATH_UP_FLAG -// , protocol.getAgvNo() + "_" + agv_01_up.getSerialNo() -// , agv_01_up); + AGV_01_UP agv_01_up = new AGV_01_UP(); + agv_01_up.setSerialNo(agv_01_down.getSerialNo()); + redis.setObject(RedisConstant.AGV_PATH_UP_FLAG + , protocol.getAgvNo() + "_" + agv_01_up.getSerialNo() + , agv_01_up); } } -- Gitblit v1.9.1