|
@@ -4,9 +4,11 @@ package com.care.installation.service;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.care.common.entity.*;
|
|
|
import com.care.common.enums.DeviceActiveStatusEnum;
|
|
|
import com.care.common.enums.DeviceStatusEnum;
|
|
|
+import com.care.common.enums.InstallDevStatusEnum;
|
|
|
import com.care.common.service.*;
|
|
|
import com.care.common.util.JsonUtil;
|
|
|
import com.care.installation.vo.*;
|
|
@@ -243,15 +245,15 @@ public class RoomService {
|
|
|
}
|
|
|
/**
|
|
|
* 发送Mqtt消息给dmp
|
|
|
- * @param vo
|
|
|
+ * @param devCode
|
|
|
* @return
|
|
|
*/
|
|
|
- public Boolean commitRoomInfo(DeviceRoomAllVO vo) {
|
|
|
+ public Boolean commitRoomInfo(String devCode) {
|
|
|
try {
|
|
|
- RoomVO roomVO = vo.getRoomVO();
|
|
|
- RoomSensorVO roomSensorVO = vo.getRoomSensorVO();
|
|
|
- List<RoomGateVO> roomGateVOList = vo.getRoomGateVOList();
|
|
|
- List<RoomRegionVO> roomRegionVOList = vo.getRoomRegionVOList();
|
|
|
+ RoomVO roomVO = getRoomInfo(devCode);
|
|
|
+ RoomSensorVO roomSensorVO = getRoomSensorInfo(devCode);
|
|
|
+ List<RoomGateVO> roomGateVOList = listRoomGateInfo(devCode);
|
|
|
+ List<RoomRegionVO> roomRegionVOList = listRoomRegionInfo(devCode);
|
|
|
if (roomVO == null || roomSensorVO == null || CollUtil.isEmpty(roomGateVOList)) {
|
|
|
return false;
|
|
|
}
|
|
@@ -262,13 +264,35 @@ public class RoomService {
|
|
|
if (careDevice == null) {
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ //把act置为空
|
|
|
+ UpdateWrapper<CareRoom> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper.lambda().eq(CareRoom::getRoomId,devCode)
|
|
|
+ .set(CareRoom::getAck,null);
|
|
|
+ careRoomService.update(updateWrapper);
|
|
|
mqttPublishService.publish(careDevice, getRoomMqttData(roomVO));
|
|
|
+
|
|
|
+ UpdateWrapper<CareRoomSensor> updateWrapper2 = new UpdateWrapper<>();
|
|
|
+ updateWrapper2.lambda().eq(CareRoomSensor::getRoomId,devCode)
|
|
|
+ .set(CareRoomSensor::getAck,null);
|
|
|
+ careRoomSensorService.update(updateWrapper2);
|
|
|
mqttPublishService.publish(careDevice, getRoomSensorMqttData(roomSensorVO));
|
|
|
+
|
|
|
+ UpdateWrapper<CareRoomGate> updateWrapper3 = new UpdateWrapper<>();
|
|
|
+ updateWrapper3.lambda().eq(CareRoomGate::getRoomId,devCode)
|
|
|
+ .set(CareRoomGate::getAck,null);
|
|
|
+ careRoomGateService.update(updateWrapper3);
|
|
|
mqttPublishService.publish(careDevice, getRoomGateVOMqttData(roomGateVOList));
|
|
|
+
|
|
|
if (CollUtil.isNotEmpty(roomRegionVOList)){
|
|
|
+ UpdateWrapper<CareRoomRegion> updateWrapper4 = new UpdateWrapper<>();
|
|
|
+ updateWrapper4.lambda().eq(CareRoomRegion::getRoomId,devCode)
|
|
|
+ .set(CareRoomRegion::getAck,null);
|
|
|
+ careRoomRegionService.update(updateWrapper4);
|
|
|
mqttPublishService.publish(careDevice, getRoomRegionVOMqttData(roomRegionVOList));
|
|
|
}
|
|
|
- return careDeviceService.updateById(careDevice);
|
|
|
+
|
|
|
+ return true;
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return false;
|
|
@@ -279,7 +303,7 @@ public class RoomService {
|
|
|
* 查询配置房间信息的Mqtt返回结果
|
|
|
* @return
|
|
|
*/
|
|
|
- public Boolean getConfigureRoomInfoResult(String devCode) {
|
|
|
+ public String getConfigureRoomInfoResult(String devCode) {
|
|
|
QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.lambda().eq(CareDevice::getDevCode,devCode);
|
|
|
CareDevice careDevice = careDeviceService.getOne(queryWrapper);
|
|
@@ -288,42 +312,81 @@ public class RoomService {
|
|
|
queryWrapper2.lambda().eq(CareRoom::getRoomId,devCode);
|
|
|
CareRoom careRoom = careRoomService.getOne(queryWrapper2);
|
|
|
|
|
|
- boolean careRoomBool = careRoom != null && "true".equals(careRoom.getAck());
|
|
|
+ int careRoomResult = 0;
|
|
|
+ if (careRoom == null || (StringUtils.isNotEmpty(careRoom.getAck()) && !"true".equals(careRoom.getAck()))) {
|
|
|
+ careRoomResult = 2;
|
|
|
+ } else if (StringUtils.isEmpty(careRoom.getAck())) {
|
|
|
+ careRoomResult = 0;
|
|
|
+ } else {
|
|
|
+ careRoomResult = 1;
|
|
|
+ }
|
|
|
|
|
|
QueryWrapper<CareRoomSensor> queryWrapper3 = new QueryWrapper<>();
|
|
|
queryWrapper3.lambda().eq(CareRoomSensor::getRoomId,devCode);
|
|
|
CareRoomSensor careRoomSensor = careRoomSensorService.getOne(queryWrapper3);
|
|
|
- boolean careRoomSensorBool = careRoomSensor != null && "true".equals(careRoomSensor.getAck());
|
|
|
+
|
|
|
+ int careRoomSensorResult = 0;
|
|
|
+ if (careRoomSensor == null || (StringUtils.isNotEmpty(careRoomSensor.getAck()) && !"true".equals(careRoomSensor.getAck()))) {
|
|
|
+ careRoomSensorResult = 2;
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(careRoomSensor.getAck())) {
|
|
|
+ careRoomSensorResult = 0;
|
|
|
+ } else {
|
|
|
+ careRoomSensorResult = 1;
|
|
|
+ }
|
|
|
|
|
|
QueryWrapper<CareRoomGate> queryWrapper4 = new QueryWrapper<>();
|
|
|
queryWrapper4.lambda().eq(CareRoomGate::getRoomId,devCode);
|
|
|
List<CareRoomGate> careRoomGateList = careRoomGateService.list(queryWrapper4);
|
|
|
- boolean careRoomGateListBool = true;
|
|
|
+ int careRoomGateResult = 0;
|
|
|
if(CollUtil.isNotEmpty(careRoomGateList)){
|
|
|
- for(CareRoomGate careRoomGate : careRoomGateList) {
|
|
|
- if(!"true".equals(careRoomGate.getAck())){
|
|
|
- careRoomGateListBool = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ CareRoomGate careRoomGate = careRoomGateList.get(0);
|
|
|
+ if(careRoomGate == null|| (StringUtils.isNotEmpty(careRoomGate.getAck()) && !"true".equals(careRoomGate.getAck()))) {
|
|
|
+ careRoomGateResult = 2;
|
|
|
+ } else if(StringUtils.isEmpty(careRoomGate.getAck())) {
|
|
|
+ careRoomGateResult = 0;
|
|
|
+ } else {
|
|
|
+ careRoomGateResult = 1;
|
|
|
+ }
|
|
|
} else { //不允许为空
|
|
|
- careRoomGateListBool = false;
|
|
|
+ careRoomGateResult = 2;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
QueryWrapper<CareRoomRegion> queryWrapper5 = new QueryWrapper<>();
|
|
|
queryWrapper5.lambda().eq(CareRoomRegion::getRoomId,devCode);
|
|
|
List<CareRoomRegion> careRoomRegionList = careRoomRegionService.list(queryWrapper5);
|
|
|
- boolean careRoomRegionListBool = true;
|
|
|
+ int careRoomRegionResult = 0;
|
|
|
if(CollUtil.isNotEmpty(careRoomRegionList)){ //允许为空
|
|
|
- for(CareRoomRegion careRoomRegion : careRoomRegionList) {
|
|
|
- if(!"true".equals(careRoomRegion.getAck())){
|
|
|
- careRoomRegionListBool = false;
|
|
|
- break;
|
|
|
- }
|
|
|
+ CareRoomRegion careRoomRegion = careRoomRegionList.get(0);
|
|
|
+ if (careRoomRegion == null|| (StringUtils.isNotEmpty(careRoomRegion.getAck()) && !"true".equals(careRoomRegion.getAck()))) {
|
|
|
+ careRoomRegionResult = 2;
|
|
|
+ } else if(StringUtils.isEmpty(careRoomRegion.getAck())) {
|
|
|
+ careRoomRegionResult = 0;
|
|
|
+ } else {
|
|
|
+ careRoomRegionResult = 1;
|
|
|
}
|
|
|
+ } else {
|
|
|
+ careRoomRegionResult = 1;
|
|
|
}
|
|
|
|
|
|
- if (careRoomBool && careRoomSensorBool && careRoomGateListBool && careRoomRegionListBool) {
|
|
|
+ if (careRoomResult == 2 || careRoomSensorResult == 2 || careRoomGateResult == 2 || careRoomRegionResult == 2) { //失败
|
|
|
+ //设备离线
|
|
|
+ careDevice.setStatus(DeviceStatusEnum.OFFLINE.getValue());
|
|
|
+ mqttConnectorPoolService.removeOne(careDevice);
|
|
|
+ //未激活
|
|
|
+ careDevice.setActiveStatus(DeviceActiveStatusEnum.NOACTIVE.getValue());
|
|
|
+ careDeviceService.updateById(careDevice);
|
|
|
+
|
|
|
+ //去除publish的客户端监听
|
|
|
+ careDevice.setClientId(careDevice.getClientId() +"_publish");
|
|
|
+ mqttConnectorPoolService.removeOne(careDevice);
|
|
|
+ return InstallDevStatusEnum.FAIL.getValue();
|
|
|
+ } else if (careRoomResult == 0 || careRoomSensorResult == 0 || careRoomGateResult == 0 || careRoomRegionResult == 0){ //处理中
|
|
|
+ return InstallDevStatusEnum.DOING.getValue();
|
|
|
+ } else { //成功
|
|
|
//激活
|
|
|
careDevice.setActiveStatus(DeviceActiveStatusEnum.ACTIVE.getValue());
|
|
|
//启动通道
|
|
@@ -331,20 +394,17 @@ public class RoomService {
|
|
|
//上线
|
|
|
careDevice.setStatus(DeviceStatusEnum.ONLINE.getValue());
|
|
|
careDeviceService.updateById(careDevice);
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- //设备离线
|
|
|
- careDevice.setStatus(DeviceStatusEnum.OFFLINE.getValue());
|
|
|
+
|
|
|
+ //去除publish的客户端监听
|
|
|
+ careDevice.setClientId(careDevice.getClientId() +"_publish");
|
|
|
mqttConnectorPoolService.removeOne(careDevice);
|
|
|
- //未激活
|
|
|
- careDevice.setActiveStatus(DeviceActiveStatusEnum.NOACTIVE.getValue());
|
|
|
- careDeviceService.updateById(careDevice);
|
|
|
- return false;
|
|
|
+
|
|
|
+ return InstallDevStatusEnum.SUCCESS.getValue();
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
private String getRoomMqttData( RoomVO vo) throws Exception {
|
|
|
Map<String,Object> data = new HashMap<>();
|
|
|
data.put("type","RoomVO");
|