From b5ebb2dc3a61d3989ce409fd2499928210d61bfa Mon Sep 17 00:00:00 2001 From: zhangzq Date: Thu, 3 Apr 2025 12:20:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A3=85=E7=AE=B1=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E4=B8=8E=E5=85=A5=E5=BA=93=E5=AE=8C=E6=88=90=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PdmBiSubpackagerelationController.java | 21 +++++-------------- .../org/nl/b_lms/sch/tasks/TwoOutBoxTask.java | 11 +++++----- .../org/nl/common/utils/RedissonUtils.java | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java index 25d36fe4d..0ad1b1c5d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java @@ -15,9 +15,11 @@ import org.nl.b_lms.sch.tasks.first_floor_area.auto.Prun; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.enums.PackageInfoIvtEnum; +import org.nl.common.utils.RedissonUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.logging.annotation.Log; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; @@ -171,22 +173,9 @@ public class PdmBiSubpackagerelationController { @Log("子卷装箱入库") //@SaCheckPermission("@el.check(updateEntityList)") public ResponseEntity zjInBoundConfirm(@RequestBody JSONObject whereJson) { - RLock lock = redissonClient.getLock("zjInBound"); - boolean tryLock = false; - try { - tryLock = lock.tryLock(0, TimeUnit.SECONDS); - if (tryLock) { - pdmBiSubpackagerelationService.zjInBoundConfirm(whereJson); - } else { - log.info("子卷装箱入库操作正在执行被锁住。"); - } - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } finally { - if (lock.isLocked() && lock.isHeldByCurrentThread()) { - lock.unlock(); - } - } + RedissonUtils.lock(c->{ + pdmBiSubpackagerelationService.zjInBoundConfirm(whereJson); + },"zjInBound",0,this,"装箱入库在操作,稍后再试"); return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java index 2debcefa3..bb26d5482 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutBoxTask.java @@ -21,6 +21,7 @@ import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService; import org.nl.common.enums.PackageInfoIvtEnum; +import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; @@ -209,11 +210,11 @@ public class TwoOutBoxTask extends AbstractAcsTask { map.put("update_optname", SecurityUtils.getCurrentNickName()); map.put("update_time", DateUtil.now()); WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'"); - - // 如果是完成则在下发一次 - if (status.equals(TaskStatusEnum.FINISHED.getCode())) { - immediateNotifyAcs(null); - } + RedissonUtils.lock(c->{ + if (status.equals(TaskStatusEnum.FINISHED.getCode())) { + immediateNotifyAcs(null); + } + },"zjInBound",10,this); } diff --git a/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java b/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java index 104a90efd..218613268 100644 --- a/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java +++ b/lms/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java @@ -72,4 +72,25 @@ public class RedissonUtils { } } } + @SneakyThrows + public static void lock(Consumer process, String key, int secend, Object param,String throwinfo){ + RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class); + RLock lock = redissonClient.getLock(key); + boolean isLock; + isLock = lock.tryLock(secend,secend+5,TimeUnit.SECONDS); + try { + if (isLock){ + process.accept(param); + } else { + throw new BadRequestException(throwinfo); + } + }catch (Exception ex){ + ex.printStackTrace(); + throw ex; + }finally { + if (isLock && lock.isHeldByCurrentThread()){ + lock.unlock(); + } + } + } }