From c83b3ad4e7d3fc8da48eafcd45dd46de0262f138 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 08 一月 2025 16:51:50 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 4 +--- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/CodeGapServiceImpl.java | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/CodeGapService.java | 2 ++ 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java index 02c7732..b1652e5 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java @@ -669,7 +669,6 @@ } boolean first = true; - long startTime = System.currentTimeMillis(); for (Segment segment : segmentList) { // 鍒嗘鎵�灞炵殑Task @@ -968,7 +967,6 @@ } } - System.out.println("save data: " + (System.currentTimeMillis() - startTime)); // finish actionList.add(new Action( @@ -1021,7 +1019,7 @@ } } - log.info(agvNo + "鍙稟gv鍔ㄤ綔缁勮瀹屾垚锛屾寚浠ゆ暟閲忥細" + newActionList.size()); + log.info("{}鍙稟gv鍔ㄤ綔缁勮瀹屾垚锛屾寚浠ゆ暟閲忥細{}", agvNo, newActionList.size()); } catch (Exception e) { log.error("mainService.generateAction", e); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/CodeGapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/CodeGapService.java index 390c8a8..9c05ec9 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/CodeGapService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/CodeGapService.java @@ -10,4 +10,6 @@ CodeGap findByCodeOfBoth(Long code0, Long code1); + Double findDistanceByCode(Long code0, Long code1); + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/CodeGapServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/CodeGapServiceImpl.java index 78a5f57..138afec 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/CodeGapServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/CodeGapServiceImpl.java @@ -2,22 +2,42 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.CodeGap; import com.zy.acs.manager.manager.mapper.CodeGapMapper; import com.zy.acs.manager.manager.service.CodeGapService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.PostConstruct; import java.util.Date; +import java.util.HashMap; +import java.util.Map; +@Slf4j @Service("codeGapService") public class CodeGapServiceImpl extends ServiceImpl<CodeGapMapper, CodeGap> implements CodeGapService { + public static final Map<String, CodeGap> GAP_DISTANCE_CACHE = new HashMap<>(); + @Autowired private MapService mapService; + + @PostConstruct + public void init() { + for (CodeGap codeGap : this.list()) { + String gapKey = generateGapKey(codeGap.getCode0(), codeGap.getCode1()); + if (!Cools.isEmpty(gapKey)) { + GAP_DISTANCE_CACHE.put(gapKey, codeGap); + } + } + log.info("The gap cache was initialized..."); + } + @Override public CodeGap createCodeGapByCode(Code code0, Code code1, Long userId) { @@ -48,11 +68,35 @@ @Override public CodeGap findByCodeOfBoth(Long code0, Long code1) { - CodeGap codeGap = getOne(new LambdaQueryWrapper<CodeGap>().eq(CodeGap::getCode0, code0).eq(CodeGap::getCode1, code1)); - if (codeGap == null) { - codeGap = getOne(new LambdaQueryWrapper<CodeGap>().eq(CodeGap::getCode1, code0).eq(CodeGap::getCode0, code1)); + CodeGap codeGap = null; + String gapKey = generateGapKey(code0, code1); + if (!Cools.isEmpty(gapKey)) { + codeGap = GAP_DISTANCE_CACHE.get(gapKey); } + + if (null == codeGap) { + codeGap = getOne(new LambdaQueryWrapper<CodeGap>().eq(CodeGap::getCode0, code0).eq(CodeGap::getCode1, code1)); + if (codeGap == null) { + codeGap = getOne(new LambdaQueryWrapper<CodeGap>().eq(CodeGap::getCode1, code0).eq(CodeGap::getCode0, code1)); + } + } + return codeGap; } + @Override + public Double findDistanceByCode(Long code0, Long code1) { + return 0.0; + } + + private static String generateGapKey(Long code0, Long code1) { + if (Cools.isEmpty(code0, code1)) { + return null; + } + if (code1 < code0) { + return code1 + "-" + code0; + } + return code0 + "-" + code1; + } + } -- Gitblit v1.9.1