From 9868becf1456f52e342d90f957755f93cdf2bbf8 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期一, 25 八月 2025 13:45:27 +0800
Subject: [PATCH] fix:修复工单创建多次问题
---
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
index 7812901..d0b0866 100755
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
@@ -35,6 +35,8 @@
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
@@ -418,6 +420,29 @@
ReentrantLock orderLock = getLock(realTimeDataVo.getTenantid() + "", "order");
orderLock.lock();
try {
+ //鏍规嵁绉熸埛id 鍜� 鑽潗id 妫�鏌ユ渶杩戞槸鍚﹀瓨鍦ㄥ伐鍗� TODO 楠岃瘉
+ LambdaQueryWrapper<DryOrder> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(DryOrder::getHerbId, herbFormula.getId());
+ queryWrapper.eq(DryOrder::getTenantId, realTimeDataVo.getTenantid());
+ queryWrapper.orderByDesc(DryOrder::getOrderTime);
+ queryWrapper.last("LIMIT 1");
+ // 1 鏌ヨ鏁版嵁搴�
+ DryOrder one = dryOrderService.getOne(queryWrapper);
+ if(one!=null){
+ Date orderDate = one.getOrderTime();
+ //30S鍐呬笉鍏佽鏂板缓宸ュ崟锛岄伩鍏嶉噸澶�
+ LocalDateTime orderTime = orderDate.toInstant()
+ .atZone(ZoneId.systemDefault())
+ .toLocalDateTime();
+
+ LocalDateTime now = LocalDateTime.now();
+ long secondsBetween = java.time.Duration.between(orderTime, now).getSeconds();
+ boolean b = secondsBetween <= 30;
+ if(b){
+ return BeanUtil.toBean(one, DryOrderVo.class);
+ }
+ }
+
// 鍒涘缓鏂板伐鍗�
orderVo = new DryOrderVo(realTimeDataVo);
orderVo.setHerbId(herbFormula.getId());
@@ -482,7 +507,10 @@
LambdaQueryWrapper<DryHerbFormula> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DryHerbFormula::getTenantId, realTimeDataVo.getTenantid());
queryWrapper.eq(DryHerbFormula::getName, realTimeDataVo.getName());
+ queryWrapper.orderByDesc(DryHerbFormula::getCreateTime);
+ queryWrapper.last("LIMIT 1");
DryHerbFormula one = dryHerbFormulaService.getOne(queryWrapper);
+
if (one == null) {
one = new DryHerbFormula(realTimeDataVo);
DryEquipment dryEquipment = equipmentService.selectByTenantIdEquipmentId(realTimeDataVo.getTenantid() + "", realTimeDataVo.getMachineid());
--
Gitblit v1.9.3