|
|
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xunmei.common.core.constant.Constants;
|
|
|
import com.xunmei.common.core.domain.mediator.domain.IotAlarmSystemField;
|
|
|
+import com.xunmei.common.core.enums.iot.DeviceTypeEnum;
|
|
|
import com.xunmei.common.core.enums.iot.SensorType;
|
|
|
import com.xunmei.mediator.api.alarm.mapper.IotAlarmSystemFieldMapper;
|
|
|
import com.xunmei.mediator.api.alarm.service.IotAlarmDataService;
|
|
|
@@ -17,10 +18,11 @@ import com.xunmei.mediator.iot.service.IIotDeviceInfoService;
|
|
|
import com.xunmei.mediator.iot.service.IotDeviceStatusService;
|
|
|
import com.xunmei.mediator.websocket.dto.WebsocketExecuteReq;
|
|
|
import com.xunmei.mediator.websocket.dto.WebsocketResult;
|
|
|
-import com.xunmei.common.core.enums.iot.DeviceTypeEnum;
|
|
|
+import com.xunmei.mediator.websocket.enums.DeviceNetStatusEnum;
|
|
|
import com.xunmei.system.api.domain.iot.IotDeviceInfo;
|
|
|
import com.xunmei.system.api.domain.iot.IotDeviceStatus;
|
|
|
import com.xunmei.system.api.enums.ElectricityMeterAttributes;
|
|
|
+import com.xunmei.system.api.util.LogUtils;
|
|
|
import io.netty.util.internal.StringUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
@@ -30,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.support.TransactionSynchronization;
|
|
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -120,7 +123,7 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
|
|
|
}
|
|
|
String deviceType = SensorType.getCodeByProduct(productName);
|
|
|
List<IotAlarmSystemField> fieldList = alarmSystemFieldMapper.selectList(new LambdaQueryWrapper<>());
|
|
|
- final JSONArray array = dealStatusData(data,fieldList,deviceType);
|
|
|
+ final JSONArray array = dealStatusData(data, fieldList, deviceType);
|
|
|
IotDeviceStatus status = getByDeviceId(code.getId());
|
|
|
if (status == null) {
|
|
|
status = new IotDeviceStatus();
|
|
|
@@ -131,7 +134,7 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
|
|
|
status.setDeviceType(deviceType);
|
|
|
status.setInfo(JSON.toJSONString(array));
|
|
|
save(status);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
status.setInfo(JSON.toJSONString(array));
|
|
|
updateById(status);
|
|
|
}
|
|
|
@@ -149,7 +152,8 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
|
|
|
|
|
|
return new WebsocketResult();
|
|
|
}
|
|
|
- private static JSONArray dealStatusData(JSONArray data,List<IotAlarmSystemField> fieldList,String deviceType) {
|
|
|
+
|
|
|
+ private static JSONArray dealStatusData(JSONArray data, List<IotAlarmSystemField> fieldList, String deviceType) {
|
|
|
final JSONArray array = new JSONArray();
|
|
|
for (Object datum : data) {
|
|
|
JSONObject jsb = (JSONObject) datum;
|
|
|
@@ -167,7 +171,7 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
|
|
|
object.put("val", val);
|
|
|
final ElectricityMeterAttributes attributesEnum = ElectricityMeterAttributes.getEnumByName(name);
|
|
|
if (ObjectUtil.isNull(attributesEnum)) {
|
|
|
- continue;
|
|
|
+ continue;
|
|
|
}
|
|
|
if (ObjectUtil.isNotEmpty(attributesEnum.getUnit())) {
|
|
|
//说明存在单位,那么把val拼接上单位set到原来的属性值中去
|
|
|
@@ -186,4 +190,31 @@ public class IotDeviceStatusServiceImpl extends ServiceImpl<IotDeviceStatusMappe
|
|
|
}
|
|
|
return array;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deviceStatusChangeDeal(WebsocketExecuteReq req) {
|
|
|
+ final String productName = req.getProductName();
|
|
|
+ final String deviceName = req.getDeviceName();
|
|
|
+ final String token = req.getToken();
|
|
|
+ if (ObjectUtil.hasEmpty(productName, deviceName, token)) {
|
|
|
+ LogUtils.WEBSOCKET_MSG.error("收到设备状态变更消息,存在参数为空,productName:{},deviceName:{},token:{}", productName, deviceName, token);
|
|
|
+ }
|
|
|
+ IotDeviceInfo deviceInfo = iotDeviceInfoService.selectByTokenProductAndDeviceCode(token, productName, deviceName);
|
|
|
+ if (ObjectUtil.isNull(deviceInfo)) {
|
|
|
+ LogUtils.WEBSOCKET_MSG.error("收到设备状态变更消息,根据token:{},productName:{},deviceName:{}未查询到设备信息", token, productName, deviceName);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ final JSONObject data = (JSONObject) req.getData();
|
|
|
+ final Object status = data.get("status");
|
|
|
+ if (ObjectUtil.isEmpty(status)) {
|
|
|
+ LogUtils.WEBSOCKET_MSG.error("收到设备状态变更消息,消息内容中设备状态为空,token:{},productName:{},deviceName:{}", token, productName, deviceName);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ deviceInfo.setNetStatus(DeviceNetStatusEnum.getValue(status.toString()));
|
|
|
+ deviceInfo.setUpdateTime(new Date());
|
|
|
+ iotDeviceInfoService.updateById(deviceInfo);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
}
|