|  | @@ -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);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |