opt: 加锁处理定时器异步问题
This commit is contained in:
@@ -41,6 +41,8 @@ import org.nl.system.service.notice.ISysNoticeService;
|
|||||||
import org.nl.system.service.param.ISysParamService;
|
import org.nl.system.service.param.ISysParamService;
|
||||||
import org.nl.system.service.param.dao.Param;
|
import org.nl.system.service.param.dao.Param;
|
||||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -51,6 +53,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@@ -106,6 +109,8 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
public List<String> stepErrorInfo = new ArrayList<>();
|
public List<String> stepErrorInfo = new ArrayList<>();
|
||||||
private static final DateTimeFormatter TIME_FORMATTER =
|
private static final DateTimeFormatter TIME_FORMATTER =
|
||||||
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
|
@Autowired
|
||||||
|
private RedissonClient redissonClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hint: 目前只是考虑了上区域
|
* hint: 目前只是考虑了上区域
|
||||||
@@ -117,21 +122,38 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
* update: 24/04/28 内包间只是区分气胀轴大小(即代数),不需要区分锂电/标箔
|
* update: 24/04/28 内包间只是区分气胀轴大小(即代数),不需要区分锂电/标箔
|
||||||
*/
|
*/
|
||||||
public void run() {
|
public void run() {
|
||||||
log.info("自动呼叫套轴开始执行...");
|
RLock lock = redissonClient.getLock("TestTask");
|
||||||
// 判断配置参数是否只做拔轴
|
boolean tryLock = false;
|
||||||
Param isOnlyPulling = paramService.findByCode(IS_ONLY_PULLING);
|
try {
|
||||||
Param tzDay = paramService.findByCode(TZ_DAY);
|
tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
Param paramObj = paramService.findByCode(PARAM_CODE_PLAN_AREA);
|
} catch (InterruptedException e) {
|
||||||
Param useXn = paramService.findByCode(USE_XN);
|
throw new RuntimeException(e);
|
||||||
// 1、获取空的插拔轴位(无任务)
|
}
|
||||||
List<BstIvtShafttubeivt> emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2",
|
try {
|
||||||
"0", "0");
|
if (tryLock) {
|
||||||
for (BstIvtShafttubeivt empty : emptyPoints) {
|
log.info("自动呼叫套轴开始执行...");
|
||||||
stepStr = "";
|
// 判断配置参数是否只做拔轴
|
||||||
stepErrorInfo = new ArrayList<>();
|
Param isOnlyPulling = paramService.findByCode(IS_ONLY_PULLING);
|
||||||
doCallShaft(empty, isOnlyPulling, tzDay, paramObj, useXn);
|
Param tzDay = paramService.findByCode(TZ_DAY);
|
||||||
redisUtils.set("INFO" + empty.getPoint_code(), stepStr);
|
Param paramObj = paramService.findByCode(PARAM_CODE_PLAN_AREA);
|
||||||
redisUtils.set("ERROR" + empty.getPoint_code(), stepErrorInfo);
|
Param useXn = paramService.findByCode(USE_XN);
|
||||||
|
// 1、获取空的插拔轴位(无任务)
|
||||||
|
List<BstIvtShafttubeivt> 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user