自动化立体仓库 - WMS系统
zhangc
2024-12-17 b830ec60edf8b4a581e6ed7ca4a62e16a82d7081
优化逻辑并调整线程池配置
5个文件已修改
39 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/ReportDataScheduler.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ThreadPoolConfig.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -1324,6 +1324,10 @@
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        if (!Cools.isEmpty(locNo) && Cools.isEmpty(pltType)) {
            AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
            pltType = agvLocMast.getPltType();
        }
        wrkMast.setPltType(pltType);
        wrkMast.setLogErrMemo("createWaitPainWrkMastStart");
src/main/java/com/zy/asrs/task/ReportDataScheduler.java
@@ -15,6 +15,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -58,6 +59,7 @@
    @Scheduled(fixedDelay = 5000)
    @Async("reportThreadPool")
    public void execute() {
        log.info("定时任务开始执行");
        if (!flag) {
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -336,15 +336,22 @@
//                }
//                agvWrkMastService.updateById(agvWrkMast);
//            }
            Integer pltType = agvWrkMast.getPltType();
            if (Cools.isEmpty(pltType) && !Cools.isEmpty(agvWrkMast.getLocNo())) {
                AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
                if (agvLocMast != null) {
                    pltType = agvLocMast.getPltType();
                }
            }
            if (!isJSON(orderNo)) {
                //检查订单是否已完成
                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
                orderService.checkComplete(orderNo, pltType);
            } else {
                List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                Integer finalPltType = pltType;
                maps.forEach(map -> {
                    String o = map.get("orderNo").toString();
                    orderService.checkComplete(o, agvWrkMast.getPltType());
                    orderService.checkComplete(o, finalPltType);
                });
            }
src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
@@ -29,6 +29,9 @@
    private LocDetlService locDetlService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private AgvLocMastService agvLocMastService;
    @Autowired
    private CommonService commonService;
    @Autowired
@@ -274,7 +277,14 @@
        wrkMast.setAppeTime(now);
        //wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        Integer pltType = null;
        if (!Cools.isEmpty(locNo) && Cools.isEmpty(pltType)) {
            AgvLocMast agvLocMast = agvLocMastService.selectById(locNo);
            if (agvLocMast != null) {
                pltType = agvLocMast.getPltType();
            }
        }
        wrkMast.setPltType(pltType);
        //补货标识
        wrkMast.setMk("Y");
        if (!wrkMastService.insert(wrkMast)) {
src/main/java/com/zy/common/config/ThreadPoolConfig.java
@@ -14,20 +14,20 @@
@EnableAsync
public class ThreadPoolConfig {
    @Bean(name = "orderThreadPool")
    @Bean(name = "reportThreadPool")
    public ThreadPoolTaskExecutor orderThreadPool() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        int core = Runtime.getRuntime().availableProcessors();
        core = 2;
        core = 1;
        //设置核心线程数
        executor.setCorePoolSize(core);
        //设置最大线程数
        executor.setMaxPoolSize(core * 10 + core);
        executor.setMaxPoolSize(1);
        //除核心线程外的线程存活时间
        executor.setKeepAliveSeconds(3);
        //缓冲队列
        executor.setQueueCapacity(core);
        executor.setThreadNamePrefix("order-task-");
        executor.setThreadNamePrefix("report-task-");
        //设置拒绝策略
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        return executor;