二次值转换为一次值
This commit is contained in:
@@ -390,6 +390,14 @@ public class MqttMessageHandler {
|
||||
return "APF模块 5";
|
||||
case "6":
|
||||
return "APF模块 6";
|
||||
case "7":
|
||||
return "APF模块 7";
|
||||
case "8":
|
||||
return "APF模块 8";
|
||||
case "9":
|
||||
return "APF模块 9";
|
||||
case "10":
|
||||
return "APF模块 10";
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.njcn.csdevice.enums.AlgorithmResponseEnum;
|
||||
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||
import com.njcn.csdevice.pojo.dto.LineParamDTO;
|
||||
import com.njcn.csdevice.pojo.po.CsLedger;
|
||||
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||
import com.njcn.csdevice.pojo.vo.EnergyTemplateVO;
|
||||
import com.njcn.csharmonic.param.DevicDataTrendQueryParam;
|
||||
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
|
||||
import com.njcn.csharmonic.service.DeviceDataTrendService;
|
||||
@@ -20,6 +22,7 @@ import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import com.njcn.system.pojo.po.EleEpdPqd;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -27,9 +30,7 @@ import org.springframework.util.CollectionUtils;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@@ -49,6 +50,7 @@ public class DeviceDataTrendServiceImpl implements DeviceDataTrendService {
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final EquipmentFeignClient equipmentFeignClient;
|
||||
private final InfluxDbParamUtil influxDbParamUtil;
|
||||
private final EpdFeignClient epdFeignClient;
|
||||
@Override
|
||||
public List<List<ThdDataVO>> queryDataTrend(DevicDataTrendQueryParam devicDataTrendQueryParam) {
|
||||
List<List<ThdDataVO>> result = new ArrayList<>();
|
||||
@@ -60,29 +62,41 @@ public class DeviceDataTrendServiceImpl implements DeviceDataTrendService {
|
||||
lineParamDTO.setLineId(devicDataTrendQueryParam.getLineId());
|
||||
List<CsLedger> data = csLedgerFeignClient.queryLine(lineParamDTO).getData();
|
||||
List<CsEquipmentDeliveryDTO> data1 = equipmentFeignClient.queryDeviceById(Stream.of((data == null || data.isEmpty()) ? devicDataTrendQueryParam.getDevId() : data.get(0).getPid()).collect(Collectors.toList())).getData();
|
||||
//根据lineId获取监测点pt、ct变比
|
||||
CsLinePO csLinePO = csLineFeignClient.queryLineById(Collections.singletonList(devicDataTrendQueryParam.getLineId())).getData().get(0);
|
||||
|
||||
devicDataTrendQueryParam.getStatisticalParams().forEach(temp->{
|
||||
CommonQueryParam commonQueryParam = new CommonQueryParam();
|
||||
commonQueryParam.setLineId(devicDataTrendQueryParam.getLineId());
|
||||
commonQueryParam.setTableName(influxDbParamUtil.getTableNameByClassId(temp.getClassId()));
|
||||
commonQueryParam.setColumnName(temp.getName());
|
||||
commonQueryParam.setPhasic(temp.getPhase());
|
||||
commonQueryParam.setStartTime( devicDataTrendQueryParam.getStartTime());
|
||||
commonQueryParam.setEndTime(devicDataTrendQueryParam.getEndTime());
|
||||
commonQueryParam.setStartTime( devicDataTrendQueryParam.getStartTime() + " 00:00:00");
|
||||
commonQueryParam.setEndTime(devicDataTrendQueryParam.getEndTime() + " 23:59:59");
|
||||
commonQueryParam.setDataType( temp.getStatMethod());
|
||||
commonQueryParam.setProcess(data1.get(0).getProcess()+"");
|
||||
commonQueryParam.setClDid(influxDbParamUtil.getClDidByLineId(devicDataTrendQueryParam.getLineId()));
|
||||
|
||||
|
||||
EleEpdPqd epdPqd = epdFeignClient.selectByIds(Collections.singletonList(temp.getDataId())).getData().get(0);
|
||||
|
||||
List<StatisticalDataDTO> deviceRtData = commonService.getDeviceRtDataByTime(Stream.of(commonQueryParam).collect(Collectors.toList()));
|
||||
List<ThdDataVO> collect1 = deviceRtData.stream().map(statisticalDataDTO -> {
|
||||
ThdDataVO vo = new ThdDataVO();
|
||||
vo.setLineId(statisticalDataDTO.getLineId());
|
||||
vo.setPhase(statisticalDataDTO.getPhaseType());
|
||||
|
||||
vo.setTime(statisticalDataDTO.getTime());
|
||||
vo.setStatMethod(statisticalDataDTO.getValueType());
|
||||
vo.setStatisticalData(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue());
|
||||
//对二次值做转换
|
||||
if (Objects.equals(devicDataTrendQueryParam.getDataLevel(),"Secondary")) {
|
||||
if (!Objects.isNull(epdPqd.getPrimaryFormula())) {
|
||||
double secondaryData = secondaryToPrimary(epdPqd.getPrimaryFormula(), statisticalDataDTO.getValue(), csLinePO.getPtRatio(), csLinePO.getCtRatio());
|
||||
vo.setStatisticalData(BigDecimal.valueOf(secondaryData).setScale(4, RoundingMode.UP).doubleValue());
|
||||
} else {
|
||||
vo.setStatisticalData(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue());
|
||||
}
|
||||
} else {
|
||||
vo.setStatisticalData(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue());
|
||||
}
|
||||
vo.setStatisticalIndex(temp.getDataId());
|
||||
vo.setStatisticalName(temp.getName());
|
||||
vo.setUnit(temp.getUnit());
|
||||
@@ -91,9 +105,29 @@ public class DeviceDataTrendServiceImpl implements DeviceDataTrendService {
|
||||
}).collect(Collectors.toList());
|
||||
result.add(collect1);
|
||||
});
|
||||
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 二次值换算成一次值
|
||||
*/
|
||||
public double secondaryToPrimary(String formula, Double data,Double pt, Double ct) {
|
||||
switch (formula) {
|
||||
case "*PT":
|
||||
data = data * pt;
|
||||
break;
|
||||
case "*CT":
|
||||
data = data * ct;
|
||||
break;
|
||||
case "*PT*CT/1000":
|
||||
data = data * pt * ct / 1000;
|
||||
break;
|
||||
case "*PT/1000":
|
||||
data = data * pt / 1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user