From 7e5aaa2df27d13dd49a713916fd09c02ffdbbb4a Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Thu, 4 Sep 2025 11:21:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E6=9C=8D=E5=8A=A1=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=9B=B8=E5=85=B3bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PqFrontLogsServiceImpl.java | 65 +++++++++++-------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/PqFrontLogsServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/PqFrontLogsServiceImpl.java index 90552f7c0..ddc76de2e 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/PqFrontLogsServiceImpl.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/PqFrontLogsServiceImpl.java @@ -29,6 +29,8 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.Objects; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; /** @@ -45,43 +47,50 @@ import java.util.Objects; public class PqFrontLogsServiceImpl extends ServiceImpl implements PqFrontLogsService { private final PqFrontLogsChildService pqFrontLogsChildService; + // 创建可重入锁 + private final Lock lock = new ReentrantLock(); + @Override public void addFrontLogs(PqFrontLogsDTO pqFrontLogsDTO) { + lock.lock(); // 获取锁,如果启动多实例要考虑分布式锁 + try { + PqFrontLogs one = this.lambdaQuery() + .eq(PqFrontLogs::getLevel, pqFrontLogsDTO.getLevel()) + .eq(PqFrontLogs::getNodeId, pqFrontLogsDTO.getNodeId()) + .eq(PqFrontLogs::getFrontType, pqFrontLogsDTO.getFrontType()) + .eq(PqFrontLogs::getCode, pqFrontLogsDTO.getCode()) + .eq(StringUtils.isNotBlank(pqFrontLogsDTO.getBusinessId()),PqFrontLogs::getBusinessId, pqFrontLogsDTO.getBusinessId()) + .eq(PqFrontLogs::getState,1).one(); + if(Objects.nonNull(one)){ + one.setUpdateTime(LocalDateTime.now()); + this.updateById(one); - PqFrontLogs one = this.lambdaQuery() - .eq(PqFrontLogs::getLevel, pqFrontLogsDTO.getLevel()) - .eq(PqFrontLogs::getNodeId, pqFrontLogsDTO.getNodeId()) - .eq(PqFrontLogs::getFrontType, pqFrontLogsDTO.getFrontType()) - .eq(PqFrontLogs::getCode, pqFrontLogsDTO.getCode()) - .eq(StringUtils.isNotBlank(pqFrontLogsDTO.getBusinessId()),PqFrontLogs::getBusinessId, pqFrontLogsDTO.getBusinessId()) - .eq(PqFrontLogs::getState,1).one(); - if(Objects.nonNull(one)){ - one.setUpdateTime(LocalDateTime.now()); - this.updateById(one); - - PqFrontLogsChild pqFrontLogsChild = new PqFrontLogsChild(); - pqFrontLogsChild.setMainId(one.getId()); - pqFrontLogsChild.setLog(pqFrontLogsDTO.getLog()); - pqFrontLogsChild.setGrade(pqFrontLogsDTO.getGrade()); - pqFrontLogsChild.setState(1); + PqFrontLogsChild pqFrontLogsChild = new PqFrontLogsChild(); + pqFrontLogsChild.setMainId(one.getId()); + pqFrontLogsChild.setLog(pqFrontLogsDTO.getLog()); + pqFrontLogsChild.setGrade(pqFrontLogsDTO.getGrade()); + pqFrontLogsChild.setState(1); - pqFrontLogsChildService.save(pqFrontLogsChild); - }else { - PqFrontLogs pqFrontLogs = new PqFrontLogs(); - BeanUtils.copyProperties(pqFrontLogsDTO,pqFrontLogs); - pqFrontLogs.setState(1); - this.save(pqFrontLogs); + pqFrontLogsChildService.save(pqFrontLogsChild); + }else { + PqFrontLogs pqFrontLogs = new PqFrontLogs(); + BeanUtils.copyProperties(pqFrontLogsDTO,pqFrontLogs); + pqFrontLogs.setState(1); + this.save(pqFrontLogs); - PqFrontLogsChild pqFrontLogsChild = new PqFrontLogsChild(); - pqFrontLogsChild.setMainId(pqFrontLogs.getId()); - pqFrontLogsChild.setLog(pqFrontLogsDTO.getLog()); - pqFrontLogsChild.setGrade(pqFrontLogsDTO.getGrade()); - pqFrontLogsChild.setState(1); + PqFrontLogsChild pqFrontLogsChild = new PqFrontLogsChild(); + pqFrontLogsChild.setMainId(pqFrontLogs.getId()); + pqFrontLogsChild.setLog(pqFrontLogsDTO.getLog()); + pqFrontLogsChild.setGrade(pqFrontLogsDTO.getGrade()); + pqFrontLogsChild.setState(1); - pqFrontLogsChildService.save(pqFrontLogsChild); + pqFrontLogsChildService.save(pqFrontLogsChild); + } + } finally { + lock.unlock(); // 释放锁 } }