diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisLock.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisLock.java
index 5405fd3..2b96986 100644
--- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisLock.java
+++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisLock.java
@@ -1,14 +1,15 @@
package com.ruoyi.common.core.redis;
-import com.ruoyi.common.core.redis.enums.RedisLockKey;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.SnowFlakeUtil;
+import java.util.concurrent.TimeUnit;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
-import java.util.concurrent.TimeUnit;
+import com.ruoyi.common.core.redis.enums.RedisLockKey;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SnowFlakeUtil;
/**
* @author wjh
@@ -41,6 +42,10 @@ public class RedisLock {
return lock(redisLockKey.getKey() + ":" + key);
}
+ public boolean lock(RedisLockKey redisLockKey, Object key, long seconds) {
+ return lock(redisLockKey.getKey() + ":" + key, String.valueOf(SnowFlakeUtil.newId()), seconds, TimeUnit.SECONDS, retry);
+ }
+
/**
* 获取锁
*/
diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java
index fbf3d3a..c8cf8f1 100644
--- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java
+++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/enums/RedisLockKey.java
@@ -16,7 +16,8 @@ public enum RedisLockKey {
PAY_CREATE("create_pay", "创建支付"),
DEVICE_SN_UNIQUE("device_sn_unique", "设备SN唯一"),
DEVICE_MAC_UNIQUE("device_mac_unique", "设备MAC唯一"),
- USER_NAME_UNIQUE("user_name_unique", "用户账号唯一");
+ USER_NAME_UNIQUE("user_name_unique", "用户账号唯一"),
+ DEVICE_IOT_REFRESH("device_iot_refresh", "设备物联网信息刷新");
private final String key;
private final String name;
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/account/service/impl/AccountValidatorImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/account/service/impl/AccountValidatorImpl.java
index 6425fbe..8382cf2 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/account/service/impl/AccountValidatorImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/account/service/impl/AccountValidatorImpl.java
@@ -4,9 +4,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Objects;
-import com.ruoyi.bst.account.domain.enums.AccountType;
-import com.ruoyi.common.valid.bank.BankCardInfo;
-import com.ruoyi.common.valid.bank.BankValidUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -46,7 +43,6 @@ public class AccountValidatorImpl implements AccountValidator {
ServiceUtil.assertion(account.getUserIsReal() == null || !account.getUserIsReal(), "ID为%s的用户未实名", account.getUserId());
ServiceUtil.assertion(!Objects.equals(account.getUserRealName(), account.getName()), "收款人姓名与实名姓名不符");
ServiceUtil.assertion(!Objects.equals(account.getUserRealIdCard(), account.getIdCard()), "收款人身份证号码与实名身份证号码不符");
- ServiceUtil.assertion(!Objects.equals(account.getUserRealPhone(), account.getMobile()), "收款人手机号与实名手机号不符");
// 查重
ServiceUtil.assertion(this.isRepeat(account), "ID为%s的收款账户重复", account.getId());
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/mapper/CustomerServiceMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/mapper/CustomerServiceMapper.xml
index 39fdb9e..c6d4075 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/mapper/CustomerServiceMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/mapper/CustomerServiceMapper.xml
@@ -48,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and bcs.end_time = #{query.endTime}
and bcs.is_enabled = #{query.isEnabled}
and bcs.deleted = #{query.deleted}
+ and bcs.deleted = false
${@com.ruoyi.framework.util.DataScopeUtil@create(query.scope)
.userSetAlias("bcs.store_id,su.agent_id")
.areaAlias("bcs.area_id", query.areaPermissions)
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceQuery.java b/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceQuery.java
index d42de13..d92a5ff 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceQuery.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/domain/DeviceQuery.java
@@ -44,4 +44,7 @@ public class DeviceQuery extends DeviceVO {
@ApiModelProperty("MAC列表")
private List macList;
+
+ @ApiModelProperty("关键词")
+ private String keyword;
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml
index 5c7e537..1f8c828 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/mapper/DeviceMapper.xml
@@ -127,6 +127,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and bul.user_name like concat('%', #{query.lastUserPhone}, '%')
and mch.nick_name like concat('%', #{query.mchName}, '%')
and bm.name like concat('%', #{query.modelName}, '%')
+
+ and (
+ bd.sn like concat('%', #{query.keyword}, '%')
+ or bd.mac like concat('%', #{query.keyword}, '%')
+ or bd.vehicle_num like concat('%', #{query.keyword}, '%')
+ )
+
and bm.id in (
select bms.model_id from bst_model_suit bms where bms.suit_id = #{query.suitId}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java
index 587aea6..a250e5f 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/device/service/impl/DeviceIotServiceImpl.java
@@ -25,6 +25,8 @@ import com.ruoyi.bst.device.service.DeviceService;
import com.ruoyi.bst.device.utils.DeviceUtil;
import com.ruoyi.bst.orderDevice.domain.enums.OrderDeviceStatus;
import com.ruoyi.common.constants.ServiceCode;
+import com.ruoyi.common.core.redis.RedisLock;
+import com.ruoyi.common.core.redis.enums.RedisLockKey;
import com.ruoyi.common.utils.MathUtils;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.StringUtils;
@@ -58,6 +60,9 @@ public class DeviceIotServiceImpl implements DeviceIotService {
@Autowired
private ScheduledExecutorService scheduledExecutorService;
+ @Autowired
+ private RedisLock redisLock;
+
private final static Integer SUB_FAST = 5; // 上报频率(快)
private final static Integer SUB_SLOW = 300; // 上报频率(慢)
@@ -274,6 +279,12 @@ public class DeviceIotServiceImpl implements DeviceIotService {
scheduledExecutorService.schedule(() -> {
for (DeviceVO device : deviceList) {
try {
+ // 加锁,控制更新频率
+ boolean lock = redisLock.lock(RedisLockKey.DEVICE_IOT_REFRESH, device.getMac(), 10);
+ if (!lock) {
+ continue;
+ }
+
// 获取在线状态
if (StringUtils.hasText(onlineType)) {
String onlineStatus = iotService.getOnlineStatus(device, onlineType);
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml
index 5fc8201..81d7683 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/fault/mapper/FaultMapper.xml
@@ -42,9 +42,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and bf.user_name like concat('%', #{query.userName}, '%')
and bf.vehicle_code = #{query.vehicleCode}
and bf.picture = #{query.picture}
- and bf.order_id = #{query.orderId}
- and bf.store_id = #{query.storeId}
- and bf.user_id = #{query.userId}
+ and bf.order_id = #{query.orderId}
+ and bf.store_id = #{query.storeId}
+ and bf.user_id = #{query.userId}
+ and bf.area_id = #{query.areaId}
AND
diff --git a/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java
index 5764c58..50d9443 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java
@@ -151,7 +151,7 @@ public class IotReceiveServiceImpl implements IotReceiveService {
// 需要在设备未启动的时候做,否则可能有安全问题
if (!isOpen) {
// 若当前数据点的上报时间和设备内上次上报的时间不一样,但是定位一样,则重启设备
- log.info("当前定位:{},{},上次定位:{},{}", sys.getLon(), sys.getLat(), device.getLongitude(), device.getLatitude());
+ log.info("当前定位:{},{},上次定位:{},{}", sys.getLon().setScale(8), sys.getLat().setScale(8), device.getLongitude().setScale(8), device.getLatitude().setScale(8));
if (at.isAfter(device.getLastLocationTime()) && MathUtils.equalsFixed(device.getLongitude(), sys.getLon(), 8) && MathUtils.equalsFixed(device.getLatitude(), sys.getLat(), 8)) {
String reason = String.format("设备不同时间的两次定位一样,重启设备。新定位:%s,%s,旧定位:%s,%s", sys.getLon(), sys.getLat(), device.getLongitude(), device.getLatitude());
deviceIotService.reboot(device, reason, true);