|
|
@ -8,6 +8,8 @@ import com.mh.common.core.domain.entity.DeviceReport; |
|
|
|
import com.mh.common.core.redis.RedisCache; |
|
|
|
import com.mh.common.core.redis.RedisCache; |
|
|
|
import com.mh.common.model.request.AdvantechDatas; |
|
|
|
import com.mh.common.model.request.AdvantechDatas; |
|
|
|
import com.mh.common.model.request.AdvantechReceiver; |
|
|
|
import com.mh.common.model.request.AdvantechReceiver; |
|
|
|
|
|
|
|
import com.mh.common.model.request.OneTwoThreeTempData; |
|
|
|
|
|
|
|
import com.mh.common.model.request.Params; |
|
|
|
import com.mh.common.utils.DateUtils; |
|
|
|
import com.mh.common.utils.DateUtils; |
|
|
|
import com.mh.common.utils.EnergyThreadPoolService; |
|
|
|
import com.mh.common.utils.EnergyThreadPoolService; |
|
|
|
import com.mh.common.utils.StringUtils; |
|
|
|
import com.mh.common.utils.StringUtils; |
|
|
@ -38,16 +40,6 @@ import java.util.stream.Collectors; |
|
|
|
@Slf4j |
|
|
|
@Slf4j |
|
|
|
public class DataProcessServiceImpl implements DataProcessService { |
|
|
|
public class DataProcessServiceImpl implements DataProcessService { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 主机 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private static final String CHILLERS = "CHILLERS"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 计量设备 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private static final String DEVICES = "DEVICES"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
DatabaseMapper databaseMapper; |
|
|
|
DatabaseMapper databaseMapper; |
|
|
|
|
|
|
|
|
|
|
@ -62,14 +54,82 @@ public class DataProcessServiceImpl implements DataProcessService { |
|
|
|
|
|
|
|
|
|
|
|
ThreadPoolExecutor threadPoolService = EnergyThreadPoolService.getInstance(); |
|
|
|
ThreadPoolExecutor threadPoolService = EnergyThreadPoolService.getInstance(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void insertTempData(OneTwoThreeTempData oneTwoThreeTempData) { |
|
|
|
|
|
|
|
insertTempDataToDb(oneTwoThreeTempData, "SENSOR_REGISTER", Constants.TEMP); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void insertTempDataToDb(OneTwoThreeTempData data, String registerKey, String cacheKey) { |
|
|
|
|
|
|
|
log.info("{}数据解析入库:{}", registerKey.equals("SENSOR_REGISTER") ? "温湿度传感器" : "其他设备", data); |
|
|
|
|
|
|
|
if (registerKey.equals("SENSOR_REGISTER")) { |
|
|
|
|
|
|
|
databaseMapper.createChillerTable(); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
databaseMapper.createDataTable(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ArrayList<CollectionParamsManage> entities = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<CollectionParamsManage> registers = redisCache.getCacheList(registerKey, CollectionParamsManage.class); |
|
|
|
|
|
|
|
if (null == registers || registers.isEmpty()) { |
|
|
|
|
|
|
|
if (registerKey.equals("SENSOR_REGISTER")) { |
|
|
|
|
|
|
|
registers = collectionParamsManageService.queryCollectionParamsByMtType(Constants.CHILLERS_TYPE); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
registers = collectionParamsManageService.queryCollectionParamsByMtType(Constants.OTHER_TYPE); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
redisCache.setCacheList(registerKey, registers); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// stream流过滤mtNum中包含data.getId()的集合
|
|
|
|
|
|
|
|
List<CollectionParamsManage> collect = registers.stream().filter(entity -> entity.getMtNum().contains(data.getId())).toList(); |
|
|
|
|
|
|
|
// 温湿度传感器命名规则id+1:温度,id+2:湿度
|
|
|
|
|
|
|
|
if (collect.isEmpty()) { |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Date curTime = new Date(); |
|
|
|
|
|
|
|
for (CollectionParamsManage entity : collect) { |
|
|
|
|
|
|
|
BigDecimal temp = new BigDecimal(String.valueOf(data.getParams().getCurrentTemperature().getValue())); |
|
|
|
|
|
|
|
BigDecimal humidity = new BigDecimal(String.valueOf(data.getParams().getCurrentHumidity().getValue())); |
|
|
|
|
|
|
|
if ((data.getId()+"1").equals(String.valueOf(entity.getMtNum()))) { |
|
|
|
|
|
|
|
CollectionParamsManage collectionParamsManage = new CollectionParamsManage(); |
|
|
|
|
|
|
|
collectionParamsManage = entity; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
collectionParamsManage.setCurValue(temp); |
|
|
|
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
|
|
|
|
log.error("数值格式解析异常", e); |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
collectionParamsManage.setCurTime(curTime); |
|
|
|
|
|
|
|
entities.add(collectionParamsManage); |
|
|
|
|
|
|
|
} else if ((data.getId()+"2").equals(String.valueOf(entity.getMtNum()))) { |
|
|
|
|
|
|
|
CollectionParamsManage collectionParamsManage = new CollectionParamsManage(); |
|
|
|
|
|
|
|
collectionParamsManage = entity; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
collectionParamsManage.setCurValue(humidity); |
|
|
|
|
|
|
|
} catch (NumberFormatException e) { |
|
|
|
|
|
|
|
log.error("数值格式解析异常", e); |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
collectionParamsManage.setCurTime(curTime); |
|
|
|
|
|
|
|
entities.add(collectionParamsManage); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
redisCache.setCacheList(cacheKey, entities); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
threadPoolService.execute(() -> { |
|
|
|
|
|
|
|
if (!entities.isEmpty()) { |
|
|
|
|
|
|
|
collectionParamsManageService.updateCollectionParamsManages(entities); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void insertChillerData(AdvantechReceiver data) { |
|
|
|
public void insertChillerData(AdvantechReceiver data) { |
|
|
|
insertData(data, "CHILLERS_REGISTER", CHILLERS); |
|
|
|
insertData(data, "CHILLERS_REGISTER", Constants.CHILLERS); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void insertDeviceData(AdvantechReceiver data) { |
|
|
|
public void insertDeviceData(AdvantechReceiver data) { |
|
|
|
insertData(data, "DEVICES_REGISTER", DEVICES); |
|
|
|
insertData(data, "DEVICES_REGISTER", Constants.DEVICE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void insertData(AdvantechReceiver data, String registerKey, String cacheKey) { |
|
|
|
private void insertData(AdvantechReceiver data, String registerKey, String cacheKey) { |
|
|
|