package com.qianwen.smartman.modules.mdc.service.impl; import com.alibaba.fastjson.JSON; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.smartman.common.cache.cps.WorkstationCache; import com.qianwen.smartman.common.utils.CommonUtil; import com.qianwen.core.tool.utils.DateUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.cps.message.dto.TelemetryDataResponseDTO; import com.qianwen.smartman.modules.mdc.constant.CollectConstant; import com.qianwen.smartman.modules.mdc.dto.NewParamSaveDTO; import com.qianwen.smartman.modules.mdc.mapper.SuperCollectJsonMapper; import com.qianwen.smartman.modules.mdc.service.ISuperNewCollectService; import org.springframework.stereotype.Service; @Service public class SuperNewCollectServiceImpl implements ISuperNewCollectService { private final SuperCollectJsonMapper collectJsonMapper; private static final Logger log = LoggerFactory.getLogger(SuperNewCollectServiceImpl.class); private static final Map PROCESS_PARAM_MAP = new HashMap<>(); static { PROCESS_PARAM_MAP.put(1, "STATE"); PROCESS_PARAM_MAP.put(2, "OUTPUT"); PROCESS_PARAM_MAP.put(3, CollectConstant.ALARM); PROCESS_PARAM_MAP.put(4, "PROGRAMNUM"); PROCESS_PARAM_MAP.put(5, "OUTPUT"); PROCESS_PARAM_MAP.put(6, CollectConstant.ALARM); PROCESS_PARAM_MAP.put(7, CollectConstant.ALARM); } public SuperNewCollectServiceImpl(final SuperCollectJsonMapper collectJsonMapper) { this.collectJsonMapper = collectJsonMapper; } @Override public void insertData(Set workstationIds) { List data = workstationIds.stream().map(workstationId -> { Map realTimeData = WorkstationCache.getWorkstationAllCollect(workstationId);//实时数据, if (Func.isNotEmpty(realTimeData)) { int size = realTimeData.size(); long time = DateUtil.now().getTime(); Map valuesMap = new HashMap<>(size); realTimeData.forEach((n, telemetry) -> { if (!n.toUpperCase().contains(CollectConstant.ALARM)) {//去除ALARM数据 TelemetryDataResponseDTO dto = (TelemetryDataResponseDTO) telemetry; String v = dto.getV(); if (Func.isNotEmpty(v) && v.length() <= CollectConstant.MAX_VALUE.intValue() && !v.contains("timestamp")) { valuesMap.put(n, v); } } }); String value = JSON.toJSONString(valuesMap); log.info("采集参数数据: {}", value); return NewParamSaveDTO.builder().value(value).ts(Long.valueOf(time)).workstationId(workstationId).build(); } return null; }).filter((v0) -> { return Func.notNull(v0); }).collect(Collectors.toList()); List> groupList = CommonUtil.groupList(data, 10); groupList.forEach(this.collectJsonMapper::insertValueJson); /* SuperCollectJsonMapper superCollectJsonMapper = this.collectJsonMapper; superCollectJsonMapper.getClass(); groupList.forEach(this::insertValueJson);*/ } }