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(); // 释放锁 } }