From 8dc996bf2ce3a154e3e0644aaa61a9756493dd42 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Mon, 16 Jun 2025 18:53:03 +0800 Subject: [PATCH] =?UTF-8?q?opt:=20=E5=8A=A0=E9=94=81=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=99=A8=E5=BC=82=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../slitter/auto/AutoCallAirShaftTask.java | 52 +++++++++++++------ 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java index b319cc042..276bd59ef 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java @@ -41,6 +41,8 @@ import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.dao.Param; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -51,6 +53,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -106,6 +109,8 @@ public class AutoCallAirShaftTask extends Prun { public List stepErrorInfo = new ArrayList<>(); private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + @Autowired + private RedissonClient redissonClient; /** * hint: 目前只是考虑了上区域 @@ -117,21 +122,38 @@ public class AutoCallAirShaftTask extends Prun { * update: 24/04/28 内包间只是区分气胀轴大小(即代数),不需要区分锂电/标箔 */ public void run() { - log.info("自动呼叫套轴开始执行..."); - // 判断配置参数是否只做拔轴 - Param isOnlyPulling = paramService.findByCode(IS_ONLY_PULLING); - Param tzDay = paramService.findByCode(TZ_DAY); - Param paramObj = paramService.findByCode(PARAM_CODE_PLAN_AREA); - Param useXn = paramService.findByCode(USE_XN); - // 1、获取空的插拔轴位(无任务) - List emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2", - "0", "0"); - for (BstIvtShafttubeivt empty : emptyPoints) { - stepStr = ""; - stepErrorInfo = new ArrayList<>(); - doCallShaft(empty, isOnlyPulling, tzDay, paramObj, useXn); - redisUtils.set("INFO" + empty.getPoint_code(), stepStr); - redisUtils.set("ERROR" + empty.getPoint_code(), stepErrorInfo); + RLock lock = redissonClient.getLock("TestTask"); + boolean tryLock = false; + try { + tryLock = lock.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (tryLock) { + log.info("自动呼叫套轴开始执行..."); + // 判断配置参数是否只做拔轴 + Param isOnlyPulling = paramService.findByCode(IS_ONLY_PULLING); + Param tzDay = paramService.findByCode(TZ_DAY); + Param paramObj = paramService.findByCode(PARAM_CODE_PLAN_AREA); + Param useXn = paramService.findByCode(USE_XN); + // 1、获取空的插拔轴位(无任务) + List emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2", + "0", "0"); + for (BstIvtShafttubeivt empty : emptyPoints) { + stepStr = ""; + stepErrorInfo = new ArrayList<>(); + doCallShaft(empty, isOnlyPulling, tzDay, paramObj, useXn); + redisUtils.set("INFO" + empty.getPoint_code(), stepStr); + redisUtils.set("ERROR" + empty.getPoint_code(), stepErrorInfo); + } + } else { + log.info("退出"); + } + } finally { + if (lock.isLocked() && lock.isHeldByCurrentThread()) { + lock.unlock(); + } } }