From 8a1ad7c92992358a2b31f3838d9d9c37bcf9f8d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com>
Date: Fri, 24 May 2024 13:53:36 +0800
Subject: [PATCH] =?UTF-8?q?debug=20=E8=93=9D=E7=89=99=E5=85=85=E5=80=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/service/impl/SmDeviceServiceImpl.java | 16 +++++++++-------
.../transactionBill/domain/TransactionBill.java | 4 ++++
.../mapper/TransactionBillMapper.xml | 12 +++++++++++-
.../service/impl/TransactionBillServiceImpl.java | 15 ++++++++++++++-
.../java/com/ruoyi/task/device/DeviceTask.java | 8 ++++----
5 files changed, 42 insertions(+), 13 deletions(-)
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java
index 0e21542a..673f1a73 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java
@@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;
@@ -271,7 +272,9 @@ public class SmDeviceServiceImpl implements ISmDeviceService
ServiceUtil.assertion(!StringUtils.hasText(device.getMac()), "设备MAC号为空");
ServiceUtil.assertion(DeviceStatus.FIXING.getStatus().equals(device.getStatus()), "设备正在维修中,无法使用");
- Boolean result = transactionTemplate.execute(status -> {
+ // 开启一个新的事务
+ TransactionTemplate newTransaction = new TransactionTemplate();
+ Boolean result = newTransaction.execute(status -> {
// 更新数据库时长
int updateCount = smDeviceMapper.addTime(deviceId, num);
ServiceUtil.assertion(updateCount != 1, "增加时长失败,请刷新后重试");
@@ -317,19 +320,18 @@ public class SmDeviceServiceImpl implements ISmDeviceService
return;
}
LocalDateTime now = LocalDateTime.now();
+ Duration between = Duration.between(now, device.getExpireTime());
// 如果已过期,则调整设备为正常状态
- if (device.getExpireTime().isBefore(now) || device.getExpireTime().isEqual(now)) {
- int i = smDeviceMapper.changeTimeoutStatus(device.getDeviceId());
- if (i == 1) {
- return;
- }
+ int i = smDeviceMapper.changeTimeoutStatus(device.getDeviceId());
+ if (i == 1) {
+ return;
}
// 如果没有过期,则延迟至过期时间继续查询
scheduledExecutorService.schedule(() -> {
freshStatus(device.getDeviceId());
- }, device.getExpireTime().until(LocalDateTime.now(), ChronoUnit.MINUTES), TimeUnit.MINUTES);
+ }, between.getSeconds() , TimeUnit.SECONDS);
}
private int changeStatus(Long deviceId, DeviceStatus status) {
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java
index 1344d4ac..f93c7d04 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java
@@ -157,4 +157,8 @@ public class TransactionBill extends BaseEntity
@JsonView(JsonViewProfile.App.class)
private String suitName;
+ @ApiModelProperty("设备MAC")
+ @JsonView(JsonViewProfile.App.class)
+ private String deviceMac;
+
}
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml
index edc1d9af..38b098e6 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml
@@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
stb.device_name,
stb.device_no,
stb.suit_name,
+ stb.device_mac,
su.user_name user_name,
su1.user_name mch_name
from sm_transaction_bill stb
@@ -70,6 +71,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and stb.device_recharge_status = #{deviceRechargeStatus}
and stb.suit_id = #{suitId}
and stb.store_id = #{storeId}
+
+ and stb.bill_id in
+
+ #{item}
+
+
and stb.device_recharge_status in
@@ -206,6 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
device_name,
device_no,
suit_name,
+ device_mac,
#{billNo},
@@ -239,6 +247,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{deviceName},
#{deviceNo},
#{suitName},
+ #{deviceMac},
@@ -274,6 +283,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
device_name = #{deviceName},
device_no = #{deviceNo},
suit_name = #{suitName},
+ device_mac = #{deviceMac},
where bill_id = #{billId}
@@ -371,6 +381,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update sm_transaction_bill
set device_recharge_status = '1'
- where bill_no = #{billNo} and type = '1' and device_recharge_status = '3'
+ where bill_no = #{billNo} and type = '1' and device_recharge_status = '3' and status = '2'
diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java
index 50626e53..196266dc 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java
@@ -41,6 +41,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionTemplate;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -103,6 +104,8 @@ public class TransactionBillServiceImpl implements TransactionBillService {
@Value("${sm.withdraw.password.enable}")
private Boolean smWithdrawPasswordEnable; // 是否开启提现密码
+ @Autowired
+ private TransactionTemplate transactionTemplate;
/**
* 查询充值记录
@@ -225,6 +228,7 @@ public class TransactionBillServiceImpl implements TransactionBillService {
order.setDeviceId(device.getDeviceId());
order.setMchId(device.getUserId()); // 到账人ID
order.setDeviceName(device.getDeviceName());
+ order.setDeviceMac(device.getMac());
// 店铺信息
order.setStoreId(device.getStoreId());
@@ -796,6 +800,15 @@ public class TransactionBillServiceImpl implements TransactionBillService {
*/
@Override
public boolean bluetoothRechargeSuccess(String billNo) {
- return transactionBillMapper.bluetoothRechargeSuccess(billNo) == 1;
+ Boolean execute = transactionTemplate.execute(status -> {
+ TransactionBill bill = selectSmTransactionBillByBillNo(billNo);
+ ServiceUtil.assertion(bill == null, "订单不存在", 10001);
+ ServiceUtil.assertion(!TransactionBillType.RECHARGE.getType().equals(bill.getType()), "该订单不是充值订单", 10002);
+ ServiceUtil.assertion(TransactionBillDeviceRechargeStatus.SUCCESS.getStatus().equals(bill.getDeviceRechargeStatus()), "设备已充值成功,请勿重复充值", 10003);
+ ServiceUtil.assertion(!TransactionBillStatus.SUCCESS.getStatus().equals(bill.getStatus()), "订单尚未充值成功", 10004);
+ return transactionBillMapper.bluetoothRechargeSuccess(billNo) == 1;
+ });
+
+ return execute != null && execute;
}
}
diff --git a/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java b/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java
index ac2a8628..0d99f7ce 100644
--- a/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java
+++ b/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java
@@ -19,10 +19,10 @@ public class DeviceTask {
private ISmMeterReadingRecordService smMeterReadingRecordService;
// 定时拉取设备信息
- public void pullDeviceInfo() throws InterruptedException {
- smDeviceService.pullDeviceInfo(null);
- Thread.sleep(3000); // 睡眠3秒,防止quartz重复调度
- }
+// public void pullDeviceInfo() throws InterruptedException {
+// smDeviceService.pullDeviceInfo(null);
+// Thread.sleep(3000); // 睡眠3秒,防止quartz重复调度
+// }
// 定时抄表
public void recordElectriQuantity() throws InterruptedException {