Merge branch '6170' of http://47.107.152.87:3000/dyf/fys-Multi-tenant into 6170
This commit is contained in:
@ -43,7 +43,7 @@ public class AppDeviceBJQController extends BaseController {
|
|||||||
* 人员信息登记
|
* 人员信息登记
|
||||||
*/
|
*/
|
||||||
@PostMapping(value = "/registerPersonInfo")
|
@PostMapping(value = "/registerPersonInfo")
|
||||||
@FunctionAccessAnnotation("registerPersonInfo")
|
// @FunctionAccessAnnotation("registerPersonInfo")
|
||||||
public R<Void> registerPersonInfo(@Validated(AddGroup.class) @RequestBody AppPersonnelInfoBo bo) {
|
public R<Void> registerPersonInfo(@Validated(AddGroup.class) @RequestBody AppPersonnelInfoBo bo) {
|
||||||
return toAjax(appDeviceService.registerPersonInfo(bo));
|
return toAjax(appDeviceService.registerPersonInfo(bo));
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ public class AppDeviceBJQController extends BaseController {
|
|||||||
* 发送报警信息
|
* 发送报警信息
|
||||||
*/
|
*/
|
||||||
@PostMapping(value = "/sendAlarmMessage")
|
@PostMapping(value = "/sendAlarmMessage")
|
||||||
@FunctionAccessBatcAnnotation("sendAlarmMessage")
|
// @FunctionAccessBatcAnnotation("sendAlarmMessage")
|
||||||
public R<Void> sendAlarmMessage(@RequestBody AppDeviceSendMsgBo bo) {
|
public R<Void> sendAlarmMessage(@RequestBody AppDeviceSendMsgBo bo) {
|
||||||
return toAjax(appDeviceService.sendAlarmMessage(bo));
|
return toAjax(appDeviceService.sendAlarmMessage(bo));
|
||||||
}
|
}
|
||||||
@ -86,7 +86,7 @@ public class AppDeviceBJQController extends BaseController {
|
|||||||
* 灯光模式
|
* 灯光模式
|
||||||
* 0(关灯),1(强光模式),2(弱光模式), 3(爆闪模式), 4(泛光模式)
|
* 0(关灯),1(强光模式),2(弱光模式), 3(爆闪模式), 4(泛光模式)
|
||||||
*/
|
*/
|
||||||
@FunctionAccessAnnotation("lightModeSettings")
|
// @FunctionAccessAnnotation("lightModeSettings")
|
||||||
@PostMapping("/lightModeSettings")
|
@PostMapping("/lightModeSettings")
|
||||||
public R<Void> lightModeSettings(@RequestBody DeviceInstructDto params) {
|
public R<Void> lightModeSettings(@RequestBody DeviceInstructDto params) {
|
||||||
// params 转 JSONObject
|
// params 转 JSONObject
|
||||||
@ -110,7 +110,7 @@ public class AppDeviceBJQController extends BaseController {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@PostMapping("/laserModeSettings")
|
@PostMapping("/laserModeSettings")
|
||||||
@FunctionAccessAnnotation("laserModeSettings")
|
// @FunctionAccessAnnotation("laserModeSettings")
|
||||||
public R<Void> laserModeSettings(@RequestBody DeviceInstructDto params) {
|
public R<Void> laserModeSettings(@RequestBody DeviceInstructDto params) {
|
||||||
appDeviceService.laserModeSettings(params);
|
appDeviceService.laserModeSettings(params);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
|
@ -161,6 +161,18 @@ public class AppDeviceShareService {
|
|||||||
shareDetailVo.setLatitude(jsonObject.get("latitude").toString());
|
shareDetailVo.setLatitude(jsonObject.get("latitude").toString());
|
||||||
shareDetailVo.setAddress((String)jsonObject.get("address"));
|
shareDetailVo.setAddress((String)jsonObject.get("address"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String alarmStatus = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY +DEVICE_KEY_PREFIX+ device.getDeviceImei()+ DEVICE_ALARM_KEY_PREFIX);
|
||||||
|
if(StringUtils.isNotBlank(alarmStatus)){
|
||||||
|
shareDetailVo.setAlarmStatus(alarmStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
String lightBrightness = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY +DEVICE_KEY_PREFIX+ device.getDeviceImei()+ DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX);
|
||||||
|
if(StringUtils.isNotBlank(lightBrightness)){
|
||||||
|
shareDetailVo.setLightBrightness(lightBrightness);
|
||||||
|
}
|
||||||
|
|
||||||
return shareDetailVo;
|
return shareDetailVo;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package com.fuyuanshen.global.mqtt.base;
|
package com.fuyuanshen.global.mqtt.base;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@ -11,7 +15,10 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class MqttRuleEngine {
|
public class MqttRuleEngine {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("threadPoolTaskExecutor")
|
||||||
|
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||||
|
|
||||||
private final LinkedHashMap<String, MqttMessageRule> rulesMap = new LinkedHashMap<>();
|
private final LinkedHashMap<String, MqttMessageRule> rulesMap = new LinkedHashMap<>();
|
||||||
public MqttRuleEngine(List<MqttMessageRule> rules) {
|
public MqttRuleEngine(List<MqttMessageRule> rules) {
|
||||||
@ -30,7 +37,7 @@ public class MqttRuleEngine {
|
|||||||
int commandType = context.getCommandType();
|
int commandType = context.getCommandType();
|
||||||
MqttMessageRule mqttMessageRule = rulesMap.get("Light_"+commandType);
|
MqttMessageRule mqttMessageRule = rulesMap.get("Light_"+commandType);
|
||||||
if (mqttMessageRule != null) {
|
if (mqttMessageRule != null) {
|
||||||
mqttMessageRule.execute(context);
|
threadPoolTaskExecutor.execute(() -> mqttMessageRule.execute(context));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ public class ReceiverMessageHandler implements MessageHandler {
|
|||||||
if(StringUtils.isNotBlank(deviceImei)){
|
if(StringUtils.isNotBlank(deviceImei)){
|
||||||
//在线状态
|
//在线状态
|
||||||
String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX+ deviceImei + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX ;
|
String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX+ deviceImei + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX ;
|
||||||
RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "1", Duration.ofSeconds(60*15));
|
RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "1", Duration.ofSeconds(62));
|
||||||
}
|
}
|
||||||
|
|
||||||
String state = payloadDict.getStr("state");
|
String state = payloadDict.getStr("state");
|
||||||
|
@ -49,7 +49,7 @@ public class BjqLaserModeSettingsRule implements MqttMessageRule {
|
|||||||
|
|
||||||
RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(30));
|
RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(30));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理灯光模式命令时出错", e);
|
log.error("处理激光模式命令时出错", e);
|
||||||
RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.FAILED.getCode(), Duration.ofSeconds(30));
|
RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.FAILED.getCode(), Duration.ofSeconds(30));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,7 @@ import java.time.Duration;
|
|||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static com.fuyuanshen.common.core.constant.GlobalConstants.FUNCTION_ACCESS_KEY;
|
import static com.fuyuanshen.common.core.constant.GlobalConstants.FUNCTION_ACCESS_KEY;
|
||||||
import static com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants.DEVICE_KEY_PREFIX;
|
import static com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants.*;
|
||||||
import static com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants.DEVICE_LIGHT_MODE_KEY_PREFIX;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 灯光模式订阅设备回传消息
|
* 灯光模式订阅设备回传消息
|
||||||
@ -39,6 +38,7 @@ public class BjqModeRule implements MqttMessageRule {
|
|||||||
Object[] convertArr = context.getConvertArr();
|
Object[] convertArr = context.getConvertArr();
|
||||||
|
|
||||||
String mainLightMode = convertArr[1].toString();
|
String mainLightMode = convertArr[1].toString();
|
||||||
|
String batteryRemainingTime = convertArr[2].toString();
|
||||||
if(StringUtils.isNotBlank(mainLightMode)){
|
if(StringUtils.isNotBlank(mainLightMode)){
|
||||||
if("0".equals(mainLightMode)){
|
if("0".equals(mainLightMode)){
|
||||||
String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX+ context.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX ;
|
String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX+ context.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX ;
|
||||||
@ -46,6 +46,10 @@ public class BjqModeRule implements MqttMessageRule {
|
|||||||
}
|
}
|
||||||
// 发送设备状态和位置信息到Redis
|
// 发送设备状态和位置信息到Redis
|
||||||
syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(),mainLightMode);
|
syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(),mainLightMode);
|
||||||
|
String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX;
|
||||||
|
|
||||||
|
// 存储到Redis
|
||||||
|
RedisUtils.setCacheObject(deviceRedisKey, batteryRemainingTime);
|
||||||
}
|
}
|
||||||
RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20));
|
RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -19,6 +19,8 @@ import com.fuyuanshen.common.satoken.utils.AppLoginHelper;
|
|||||||
import com.fuyuanshen.equipment.domain.Device;
|
import com.fuyuanshen.equipment.domain.Device;
|
||||||
import com.fuyuanshen.equipment.domain.DeviceType;
|
import com.fuyuanshen.equipment.domain.DeviceType;
|
||||||
import com.fuyuanshen.equipment.domain.dto.AppDeviceSendMsgBo;
|
import com.fuyuanshen.equipment.domain.dto.AppDeviceSendMsgBo;
|
||||||
|
import com.fuyuanshen.equipment.enums.LightModeEnum;
|
||||||
|
import com.fuyuanshen.equipment.mapper.DeviceLogMapper;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceMapper;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
|
||||||
import com.fuyuanshen.global.mqtt.config.MqttGateway;
|
import com.fuyuanshen.global.mqtt.config.MqttGateway;
|
||||||
@ -50,6 +52,7 @@ public class DeviceBJQBizService {
|
|||||||
private final AppPersonnelInfoMapper appPersonnelInfoMapper;
|
private final AppPersonnelInfoMapper appPersonnelInfoMapper;
|
||||||
private final DeviceTypeMapper deviceTypeMapper;
|
private final DeviceTypeMapper deviceTypeMapper;
|
||||||
private final MqttGateway mqttGateway;
|
private final MqttGateway mqttGateway;
|
||||||
|
private final DeviceLogMapper deviceLogMapper;
|
||||||
|
|
||||||
public int sendMessage(AppDeviceSendMsgBo bo) {
|
public int sendMessage(AppDeviceSendMsgBo bo) {
|
||||||
List<Long> deviceIds = bo.getDeviceIds();
|
List<Long> deviceIds = bo.getDeviceIds();
|
||||||
@ -67,7 +70,7 @@ public class DeviceBJQBizService {
|
|||||||
|
|
||||||
byte[] largeData = ImageWithTextGenerate.generate160x80ImageWithText2(bo.getSendMsg(), inputStream, 25600);
|
byte[] largeData = ImageWithTextGenerate.generate160x80ImageWithText2(bo.getSendMsg(), inputStream, 25600);
|
||||||
int[] ints = convertHexToDecimal(largeData);
|
int[] ints = convertHexToDecimal(largeData);
|
||||||
RedisUtils.setCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + ":app_send_message_data" , Arrays.toString(ints), Duration.ofSeconds(30 * 60L));
|
RedisUtils.setCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + ":app_send_message_data" , Arrays.toString(ints), Duration.ofSeconds(5 * 60L));
|
||||||
|
|
||||||
String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + ":app_send_message_data");
|
String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + ":app_send_message_data");
|
||||||
|
|
||||||
@ -93,15 +96,44 @@ public class DeviceBJQBizService {
|
|||||||
.eq("binding_user_id", AppLoginHelper.getUserId())
|
.eq("binding_user_id", AppLoginHelper.getUserId())
|
||||||
.set("send_msg", bo.getSendMsg());
|
.set("send_msg", bo.getSendMsg());
|
||||||
deviceMapper.update(updateWrapper);
|
deviceMapper.update(updateWrapper);
|
||||||
|
|
||||||
|
recordDeviceLog(deviceId, device.getDeviceName(), "发送信息", bo.getSendMsg(), AppLoginHelper.getUserId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.info("发送信息设备发送信息失败:{}" ,deviceId);
|
log.info("发送信息设备发送信息失败:{}" ,deviceId);
|
||||||
throw new ServiceException("发送指令失败");
|
throw new ServiceException("发送指令失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录设备操作日志
|
||||||
|
* @param deviceId 设备ID
|
||||||
|
* @param content 日志内容
|
||||||
|
* @param operator 操作人
|
||||||
|
*/
|
||||||
|
private void recordDeviceLog(Long deviceId,String deviceName, String deviceAction, String content, Long operator) {
|
||||||
|
try {
|
||||||
|
// 创建设备日志实体
|
||||||
|
com.fuyuanshen.equipment.domain.DeviceLog deviceLog = new com.fuyuanshen.equipment.domain.DeviceLog();
|
||||||
|
deviceLog.setDeviceId(deviceId);
|
||||||
|
deviceLog.setDeviceAction(deviceAction);
|
||||||
|
deviceLog.setContent(content);
|
||||||
|
deviceLog.setCreateBy(operator);
|
||||||
|
deviceLog.setDeviceName(deviceName);
|
||||||
|
deviceLog.setCreateTime(new Date());
|
||||||
|
|
||||||
|
// 插入日志记录
|
||||||
|
deviceLogMapper.insert(deviceLog);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("记录设备操作日志失败: {}", e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public AppDeviceDetailVo getInfo(Long id) {
|
public AppDeviceDetailVo getInfo(Long id) {
|
||||||
Device device = deviceMapper.selectById(id);
|
Device device = deviceMapper.selectById(id);
|
||||||
if (device == null) {
|
if (device == null) {
|
||||||
@ -181,6 +213,7 @@ public class DeviceBJQBizService {
|
|||||||
if (deviceObj == null) {
|
if (deviceObj == null) {
|
||||||
throw new RuntimeException("请先将设备入库!!!");
|
throw new RuntimeException("请先将设备入库!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
QueryWrapper<AppPersonnelInfo> qw = new QueryWrapper<AppPersonnelInfo>()
|
QueryWrapper<AppPersonnelInfo> qw = new QueryWrapper<AppPersonnelInfo>()
|
||||||
.eq("device_id", deviceId);
|
.eq("device_id", deviceId);
|
||||||
List<AppPersonnelInfoVo> appPersonnelInfoVos = appPersonnelInfoMapper.selectVoList(qw);
|
List<AppPersonnelInfoVo> appPersonnelInfoVos = appPersonnelInfoMapper.selectVoList(qw);
|
||||||
@ -204,6 +237,7 @@ public class DeviceBJQBizService {
|
|||||||
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + deviceObj.getDeviceImei(), 1, JSON.toJSONString(map));
|
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + deviceObj.getDeviceImei(), 1, JSON.toJSONString(map));
|
||||||
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY + deviceObj.getDeviceImei(), bo);
|
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY + deviceObj.getDeviceImei(), bo);
|
||||||
|
|
||||||
|
recordDeviceLog(deviceId, deviceObj.getDeviceName(), "人员信息登记", JSON.toJSONString(bo), AppLoginHelper.getUserId());
|
||||||
if (ObjectUtils.length(appPersonnelInfoVos) == 0) {
|
if (ObjectUtils.length(appPersonnelInfoVos) == 0) {
|
||||||
AppPersonnelInfo appPersonnelInfo = MapstructUtils.convert(bo, AppPersonnelInfo.class);
|
AppPersonnelInfo appPersonnelInfo = MapstructUtils.convert(bo, AppPersonnelInfo.class);
|
||||||
return appPersonnelInfoMapper.insertOrUpdate(appPersonnelInfo);
|
return appPersonnelInfoMapper.insertOrUpdate(appPersonnelInfo);
|
||||||
@ -216,8 +250,6 @@ public class DeviceBJQBizService {
|
|||||||
.set("code", bo.getCode());
|
.set("code", bo.getCode());
|
||||||
return appPersonnelInfoMapper.update(null, uw) > 0;
|
return appPersonnelInfoMapper.update(null, uw) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void uploadDeviceLogo(AppDeviceLogoUploadDto bo) {
|
public void uploadDeviceLogo(AppDeviceLogoUploadDto bo) {
|
||||||
@ -234,7 +266,7 @@ public class DeviceBJQBizService {
|
|||||||
log.info("原始数据大小: {} 字节", largeData.length);
|
log.info("原始数据大小: {} 字节", largeData.length);
|
||||||
|
|
||||||
int[] ints = convertHexToDecimal(largeData);
|
int[] ints = convertHexToDecimal(largeData);
|
||||||
RedisUtils.setCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() +DEVICE_BOOT_LOGO_KEY_PREFIX, Arrays.toString(ints), Duration.ofSeconds(30 * 60L));
|
RedisUtils.setCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() +DEVICE_BOOT_LOGO_KEY_PREFIX, Arrays.toString(ints), Duration.ofSeconds(5 * 60L));
|
||||||
|
|
||||||
String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + DEVICE_BOOT_LOGO_KEY_PREFIX);
|
String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + device.getDeviceImei() + DEVICE_BOOT_LOGO_KEY_PREFIX);
|
||||||
|
|
||||||
@ -255,6 +287,8 @@ public class DeviceBJQBizService {
|
|||||||
map.put("instruct", intData);
|
map.put("instruct", intData);
|
||||||
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
||||||
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
||||||
|
|
||||||
|
recordDeviceLog(device.getId(), device.getDeviceName(), "上传开机画面", "上传开机画面", AppLoginHelper.getUserId());
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new ServiceException("发送指令失败");
|
throw new ServiceException("发送指令失败");
|
||||||
@ -284,6 +318,8 @@ public class DeviceBJQBizService {
|
|||||||
map.put("instruct", intData);
|
map.put("instruct", intData);
|
||||||
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
||||||
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
||||||
|
LightModeEnum modeEnum = LightModeEnum.getByCode(instructValue);
|
||||||
|
recordDeviceLog(device.getId(), device.getDeviceName(), "灯光模式", modeEnum!=null?modeEnum.getName():null, AppLoginHelper.getUserId());
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new ServiceException("发送指令失败");
|
throw new ServiceException("发送指令失败");
|
||||||
@ -317,6 +353,7 @@ public class DeviceBJQBizService {
|
|||||||
map.put("instruct", intData);
|
map.put("instruct", intData);
|
||||||
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
||||||
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
||||||
|
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new ServiceException("发送指令失败");
|
throw new ServiceException("发送指令失败");
|
||||||
@ -342,6 +379,12 @@ public class DeviceBJQBizService {
|
|||||||
map.put("instruct", intData);
|
map.put("instruct", intData);
|
||||||
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(), 1 , JSON.toJSONString(map));
|
||||||
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
log.info("发送点阵数据到设备消息=>topic:{},payload:{}", MqttConstants.GLOBAL_PUB_KEY+device.getDeviceImei(),JSON.toJSONString(map));
|
||||||
|
// 1代表开启激光灯,此时主灯关闭,主灯控件为关机状态,为0代表关闭激光灯
|
||||||
|
if("1".equals(params.getInstructValue())){
|
||||||
|
recordDeviceLog(device.getId(), device.getDeviceName(), "激光模式设置", "开启激光灯", AppLoginHelper.getUserId());
|
||||||
|
}else{
|
||||||
|
recordDeviceLog(device.getId(), device.getDeviceName(), "激光模式设置", "关闭激光灯", AppLoginHelper.getUserId());
|
||||||
|
}
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new ServiceException("发送指令失败");
|
throw new ServiceException("发送指令失败");
|
||||||
@ -388,15 +431,16 @@ public class DeviceBJQBizService {
|
|||||||
.eq("binding_user_id", AppLoginHelper.getUserId())
|
.eq("binding_user_id", AppLoginHelper.getUserId())
|
||||||
.set("send_msg", bo.getSendMsg());
|
.set("send_msg", bo.getSendMsg());
|
||||||
deviceMapper.update(updateWrapper);
|
deviceMapper.update(updateWrapper);
|
||||||
|
recordDeviceLog(device.getId(), device.getDeviceName(), "发送告警信息", bo.getSendMsg(), AppLoginHelper.getUserId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.info("设备发送信息失败:{}" ,deviceId);
|
log.info("设备发送告警信息信息失败:{}" ,deviceId);
|
||||||
throw new ServiceException("设备发送信息失败");
|
throw new ServiceException("设备发送告警信息信息失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new ServiceException("发送指令失败");
|
throw new ServiceException("发送告警信息指令失败");
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -6,12 +6,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.fuyuanshen.app.domain.AppDeviceBindRecord;
|
import com.fuyuanshen.app.domain.AppDeviceBindRecord;
|
||||||
|
import com.fuyuanshen.app.domain.AppDeviceShare;
|
||||||
import com.fuyuanshen.app.domain.dto.APPReNameDTO;
|
import com.fuyuanshen.app.domain.dto.APPReNameDTO;
|
||||||
import com.fuyuanshen.app.domain.dto.AppRealTimeStatusDto;
|
import com.fuyuanshen.app.domain.dto.AppRealTimeStatusDto;
|
||||||
import com.fuyuanshen.app.domain.dto.DeviceInstructDto;
|
import com.fuyuanshen.app.domain.dto.DeviceInstructDto;
|
||||||
import com.fuyuanshen.app.domain.vo.APPDeviceTypeVo;
|
import com.fuyuanshen.app.domain.vo.APPDeviceTypeVo;
|
||||||
|
import com.fuyuanshen.app.domain.vo.AppUserVo;
|
||||||
import com.fuyuanshen.app.mapper.AppDeviceBindRecordMapper;
|
import com.fuyuanshen.app.mapper.AppDeviceBindRecordMapper;
|
||||||
|
import com.fuyuanshen.app.mapper.AppDeviceShareMapper;
|
||||||
import com.fuyuanshen.app.mapper.AppPersonnelInfoMapper;
|
import com.fuyuanshen.app.mapper.AppPersonnelInfoMapper;
|
||||||
|
import com.fuyuanshen.app.mapper.AppUserMapper;
|
||||||
import com.fuyuanshen.app.mapper.equipment.APPDeviceMapper;
|
import com.fuyuanshen.app.mapper.equipment.APPDeviceMapper;
|
||||||
import com.fuyuanshen.common.core.exception.ServiceException;
|
import com.fuyuanshen.common.core.exception.ServiceException;
|
||||||
import com.fuyuanshen.common.core.utils.ObjectUtils;
|
import com.fuyuanshen.common.core.utils.ObjectUtils;
|
||||||
@ -55,6 +59,8 @@ public class DeviceBizService {
|
|||||||
private final AppDeviceBindRecordMapper appDeviceBindRecordMapper;
|
private final AppDeviceBindRecordMapper appDeviceBindRecordMapper;
|
||||||
private final RealTimeStatusEngine realTimeStatusEngine;
|
private final RealTimeStatusEngine realTimeStatusEngine;
|
||||||
private final DeviceLogMapper deviceLogMapper;
|
private final DeviceLogMapper deviceLogMapper;
|
||||||
|
private final AppDeviceShareMapper appDeviceShareMapper;
|
||||||
|
private final AppUserMapper appUserMapper;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -240,6 +246,15 @@ public class DeviceBizService {
|
|||||||
appDeviceBindRecordMapper.deleteById(appDeviceBindRecord.getId()));
|
appDeviceBindRecordMapper.deleteById(appDeviceBindRecord.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AppUserVo appUserVo = appUserMapper.selectVoById(userId);
|
||||||
|
QueryWrapper<AppDeviceShare> appDeviceShareQueryWrapper = new QueryWrapper<>();
|
||||||
|
appDeviceShareQueryWrapper.eq("device_id", device.getId());
|
||||||
|
appDeviceShareQueryWrapper.eq("phonenumber", appUserVo.getPhonenumber());
|
||||||
|
List<AppDeviceShare> appDeviceShareList = appDeviceShareMapper.selectList(appDeviceShareQueryWrapper);
|
||||||
|
if (CollectionUtil.isNotEmpty(appDeviceShareList)) {
|
||||||
|
appDeviceShareList.forEach(appDeviceShare ->
|
||||||
|
appDeviceShareMapper.deleteById(appDeviceShare.getId()));
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ xss:
|
|||||||
# 如使用JDK21请直接使用虚拟线程 不要开启此配置
|
# 如使用JDK21请直接使用虚拟线程 不要开启此配置
|
||||||
thread-pool:
|
thread-pool:
|
||||||
# 是否开启线程池
|
# 是否开启线程池
|
||||||
enabled: false
|
enabled: true
|
||||||
# 队列最大长度
|
# 队列最大长度
|
||||||
queueCapacity: 128
|
queueCapacity: 128
|
||||||
# 线程池维护线程所允许的空闲时间
|
# 线程池维护线程所允许的空闲时间
|
||||||
|
@ -138,4 +138,7 @@ public class AppDeviceShareDetailVo implements Serializable {
|
|||||||
* 告警状态(0解除告警,1告警)
|
* 告警状态(0解除告警,1告警)
|
||||||
*/
|
*/
|
||||||
private String alarmStatus;
|
private String alarmStatus;
|
||||||
|
|
||||||
|
// 灯光亮度
|
||||||
|
private String lightBrightness;
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
d.device_pic,
|
d.device_pic,
|
||||||
dt.type_name,
|
dt.type_name,
|
||||||
dt.communication_mode,
|
dt.communication_mode,
|
||||||
|
dt.model_dictionary detailPageUrl,
|
||||||
d.bluetooth_name,
|
d.bluetooth_name,
|
||||||
c.binding_time,
|
c.binding_time,
|
||||||
ad.*,u.user_name otherPhonenumber
|
ad.*,u.user_name otherPhonenumber
|
||||||
@ -32,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
dt.type_name,
|
dt.type_name,
|
||||||
dt.communication_mode,
|
dt.communication_mode,
|
||||||
d.bluetooth_name,
|
d.bluetooth_name,
|
||||||
|
dt.model_dictionary detailPageUrl,
|
||||||
c.binding_time,
|
c.binding_time,
|
||||||
ad.*,u.user_name otherPhonenumber
|
ad.*,u.user_name otherPhonenumber
|
||||||
from
|
from
|
||||||
|
@ -81,4 +81,9 @@ public class AppDeviceVo implements Serializable {
|
|||||||
* 告警状态(0解除告警,1告警)
|
* 告警状态(0解除告警,1告警)
|
||||||
*/
|
*/
|
||||||
private String alarmStatus;
|
private String alarmStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备详情页面
|
||||||
|
*/
|
||||||
|
private String detailPageUrl;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.fuyuanshen.equipment.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 灯光模式枚举
|
||||||
|
*/
|
||||||
|
public enum LightModeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关灯模式
|
||||||
|
*/
|
||||||
|
OFF(0, "关灯"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 强光模式
|
||||||
|
*/
|
||||||
|
HIGH_BEAM(1, "开启强光模式"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 弱光模式
|
||||||
|
*/
|
||||||
|
LOW_BEAM(2, "开启弱光模式"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 爆闪模式
|
||||||
|
*/
|
||||||
|
STROBE(3, "开启爆闪模式"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 泛光模式
|
||||||
|
*/
|
||||||
|
FLOOD(4, "开启泛光模式");
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
LightModeEnum(Integer code, String name) {
|
||||||
|
this.code = code;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据编号获取枚举
|
||||||
|
* @param code 编号
|
||||||
|
* @return 对应的枚举值
|
||||||
|
*/
|
||||||
|
public static LightModeEnum getByCode(Integer code) {
|
||||||
|
for (LightModeEnum mode : LightModeEnum.values()) {
|
||||||
|
if (mode.getCode().equals(code)) {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据编号获取名称
|
||||||
|
* @param code 编号
|
||||||
|
* @return 对应的名称
|
||||||
|
*/
|
||||||
|
public static String getNameByCode(Integer code) {
|
||||||
|
LightModeEnum mode = getByCode(code);
|
||||||
|
return mode != null ? mode.getName() : null;
|
||||||
|
}
|
||||||
|
}
|
@ -148,6 +148,7 @@
|
|||||||
dt.type_name,
|
dt.type_name,
|
||||||
dt.communication_mode,
|
dt.communication_mode,
|
||||||
d.bluetooth_name,
|
d.bluetooth_name,
|
||||||
|
dt.model_dictionary detailPageUrl,
|
||||||
c.binding_time
|
c.binding_time
|
||||||
from device d
|
from device d
|
||||||
inner join device_type dt on d.device_type = dt.id
|
inner join device_type dt on d.device_type = dt.id
|
||||||
@ -177,6 +178,7 @@
|
|||||||
d.device_pic,
|
d.device_pic,
|
||||||
dt.type_name,
|
dt.type_name,
|
||||||
dt.communication_mode,
|
dt.communication_mode,
|
||||||
|
dt.model_dictionary detailPageUrl,
|
||||||
d.bluetooth_name
|
d.bluetooth_name
|
||||||
from device d
|
from device d
|
||||||
inner join device_type dt on d.device_type = dt.id
|
inner join device_type dt on d.device_type = dt.id
|
||||||
|
Reference in New Issue
Block a user