包名调整

This commit is contained in:
2023-06-08 14:11:08 +08:00
parent ac4ad7d679
commit 818538f34d
80 changed files with 184 additions and 202 deletions

View File

@@ -0,0 +1,28 @@
package com.njcn.csharmonic.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csharmonic.param.CsConfigurationParm;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
import com.njcn.csharmonic.pojo.vo.CsConfigurationVO;
import org.springframework.web.multipart.MultipartFile;
/**
*
* Description:
* Date: 2023/5/31 10:53【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsConfigurationService extends IService<CsConfigurationPO>{
boolean add(CsConfigurationParm csConfigurationParm);
boolean audit(CsConfigurationParm.CsConfigurationAuditParam auditParm);
IPage<CsConfigurationVO> queryPage(CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam);
String uploadImage(MultipartFile issuesFile);
}

View File

@@ -0,0 +1,17 @@
package com.njcn.csharmonic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csharmonic.pojo.po.CsNetDevPO;
/**
*
* Description:
* Date: 2023/5/31 14:12【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsNetDevPOService extends IService<CsNetDevPO>{
}

View File

@@ -0,0 +1,33 @@
package com.njcn.csharmonic.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csharmonic.param.CsPageParm;
import com.njcn.csharmonic.pojo.po.CsPagePO;
import com.njcn.csharmonic.pojo.vo.CsPageVO;
/**
*
* Description:
* Date: 2023/5/31 14:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface CsPagePOService extends IService<CsPagePO>{
CsPageVO add(CsPageParm csPageParm);
boolean audit(CsPageParm.CsPageParmAuditParam auditParm);
IPage<CsPageVO> queryPage(CsPageParm.CsPageParmQueryParam csPageParam);
/**
* 根据id获取组态页面数据
* @param id
* @return
*/
CsPagePO queryById(String id);
}

View File

@@ -0,0 +1,35 @@
package com.njcn.csharmonic.service;
import com.njcn.csdevice.pojo.vo.LineTargetVO;
import com.njcn.csharmonic.pojo.vo.RtDataVO;
import com.njcn.csharmonic.pojo.vo.TargetDetailVO;
import java.util.List;
/**
* @author xuyang
*/
public interface ILineTargetService {
/**
* 根据监测点Id获取对应指标
* @param lineId
* @return
*/
List<LineTargetVO> getLineTarget(String lineId);
/**
* 获取指标的数据类型和相别
* @param pid
* @param name
* @return
*/
TargetDetailVO getTargetDetail(String pid, String name);
/**
* 获取绑定指标的数据
* @param id
*/
List<RtDataVO> getLineData(String id);
}

View File

@@ -0,0 +1,31 @@
package com.njcn.csharmonic.service;
import com.njcn.csharmonic.param.ThdDataQueryParm;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import java.util.List;
/**
* Description:
* Date: 2023/5/18 14:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface StableDataService {
List<ThdDataVO> queryThdData(String devId, String statisticalName);
/**
* @Description: 查询时间段内谐波畸变率
* @Param:
* @return: java.util.List<com.njcn.algorithm.pojo.vo.ThdDataVO>
* @Author: clam
* @Date: 2023/5/23
*/
List<ThdDataVO> queryThdDataByTime(ThdDataQueryParm thdDataQueryParm);
List<ThdDataVO> queryFisrtThdContent(String devId, String statisticalName);
List<ThdDataVO> queryThdContentByTime(ThdDataQueryParm thdDataQueryParm);
}

View File

@@ -0,0 +1,103 @@
package com.njcn.csharmonic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.utils.NjcnBeanUtil;
import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.mapper.CsConfigurationMapper;
import com.njcn.csharmonic.param.CsConfigurationParm;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
import com.njcn.csharmonic.pojo.vo.CsConfigurationVO;
import com.njcn.csharmonic.service.CsConfigurationService;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* Description:
* Date: 2023/5/31 10:53【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class CsConfigurationServiceImpl extends ServiceImpl<CsConfigurationMapper, CsConfigurationPO> implements CsConfigurationService{
private final FileStorageUtil fileStorageUtil;
private final UserFeignClient userFeignClient;
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean add(CsConfigurationParm csConfigurationParm) {
CsConfigurationPO csConfigurationPO = new CsConfigurationPO();
BeanUtils.copyProperties(csConfigurationParm,csConfigurationPO);
csConfigurationPO.setStatus("1");
boolean save = this.save(csConfigurationPO);
return save;
}
@Override
public boolean audit(CsConfigurationParm.CsConfigurationAuditParam auditParm) {
CsConfigurationPO csConfigurationPO = new CsConfigurationPO();
NjcnBeanUtil.copyPropertiesIgnoreCase(auditParm,csConfigurationPO);
boolean b = this.updateById(csConfigurationPO);
return b;
}
@Override
public IPage<CsConfigurationVO> queryPage(CsConfigurationParm.CsConfigurationQueryParam csConfigurationQueryParam) {
Page<CsConfigurationVO> returnpage = new Page<> (csConfigurationQueryParam.getPageNum(), csConfigurationQueryParam.getPageSize ( ));
Page<CsConfigurationPO> temppage = new Page<> (csConfigurationQueryParam.getPageNum(), csConfigurationQueryParam.getPageSize ( ));
QueryWrapper<CsConfigurationPO> query = new QueryWrapper<>();
query.like(StringUtils.isNotBlank(csConfigurationQueryParam.getSearchValue()),CsConfigurationPO.COL_NAME,csConfigurationQueryParam.getSearchValue()).
le (StringUtils.isNotBlank (csConfigurationQueryParam.getSearchEndTime()), CsConfigurationPO.COL_CREATE_TIME, csConfigurationQueryParam.getSearchEndTime ( )).
ge (StringUtils.isNotBlank (csConfigurationQueryParam.getSearchBeginTime()), CsConfigurationPO.COL_CREATE_TIME, csConfigurationQueryParam.getSearchBeginTime ( )).
eq ("status",1).orderByDesc(CsConfigurationPO.COL_CREATE_TIME);
Page<CsConfigurationPO> csConfigurationPOPage = this.getBaseMapper().selectPage(temppage, query);
List<String> collect1 = csConfigurationPOPage.getRecords().stream().map(CsConfigurationPO::getCreateBy).collect(Collectors.toList());
Map<String, String> collect2;
if(!CollectionUtils.isEmpty(collect1)){
List<User> data = userFeignClient.getUserByIdList(collect1).getData();
collect2 = data.stream().collect(Collectors.toMap(User::getId, User::getName, (e1, e2) -> e1 + "," + e2));
} else {
collect2 = new HashMap<>();
}
List<CsConfigurationVO> collect = csConfigurationPOPage.getRecords().stream().map(page -> {
CsConfigurationVO csDevModelPageVO = new CsConfigurationVO();
BeanUtils.copyProperties(page, csDevModelPageVO);
csDevModelPageVO.setOperater(collect2.get(csDevModelPageVO.getCreateBy()));
return csDevModelPageVO;
}).collect(Collectors.toList());
returnpage.setRecords(collect);
returnpage.setTotal(csConfigurationPOPage.getTotal());
return returnpage;
}
@Override
public String uploadImage(MultipartFile issuesFile) {
return fileStorageUtil.getFileUrl( fileStorageUtil.uploadMultipart(issuesFile, HarmonicConstant.CONFIGURATIONPATH));
}
}

View File

@@ -0,0 +1,19 @@
package com.njcn.csharmonic.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csharmonic.mapper.CsNetDevPOMapper;
import com.njcn.csharmonic.pojo.po.CsNetDevPO;
import com.njcn.csharmonic.service.CsNetDevPOService;
import org.springframework.stereotype.Service;
/**
*
* Description:
* Date: 2023/5/31 14:12【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
public class CsNetDevPOServiceImpl extends ServiceImpl<CsNetDevPOMapper, CsNetDevPO> implements CsNetDevPOService{
}

View File

@@ -0,0 +1,144 @@
package com.njcn.csharmonic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.mapper.CsConfigurationMapper;
import com.njcn.csharmonic.mapper.CsPagePOMapper;
import com.njcn.csharmonic.param.CsPageParm;
import com.njcn.csharmonic.pojo.po.CsConfigurationPO;
import com.njcn.csharmonic.pojo.po.CsPagePO;
import com.njcn.csharmonic.pojo.vo.CsPageVO;
import com.njcn.csharmonic.service.CsPagePOService;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* Description:
* Date: 2023/5/31 14:31【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class CsPagePOServiceImpl extends ServiceImpl<CsPagePOMapper, CsPagePO> implements CsPagePOService{
private final FileStorageUtil fileStorageUtil;
private final CsConfigurationMapper csConfigurationMapper;
private final UserFeignClient userFeignClient;
@Override
@Transactional(rollbackFor = {Exception.class})
public CsPageVO add(CsPageParm csPageParm) {
CsPagePO csPagePO = new CsPagePO();
CsPageVO csPageVO = new CsPageVO();
csPagePO.setPid(csPageParm.getPid());
csPagePO.setStatus("1");
csPagePO.setName(csPageParm.getName());
InputStream inputStream = this.writeJsonStringToInputStream(csPageParm.getJsonFile());
String s = fileStorageUtil.uploadStream(inputStream, HarmonicConstant.CONFIGURATIONPATH, HarmonicConstant.CONFIGURATIONNAME);
csPagePO.setPath(s);
boolean save = this.save(csPagePO);
BeanUtils.copyProperties(csPagePO, csPageVO);
InputStream fileStream = fileStorageUtil.getFileStream(csPagePO.getPath());
String text = new BufferedReader(
new InputStreamReader(fileStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
csPageVO.setPath(text);
return csPageVO;
}
@Override
@Transactional(rollbackFor = {Exception.class})
public boolean audit(CsPageParm.CsPageParmAuditParam auditParm) {
CsPagePO csPagePO = new CsPagePO();
CsPagePO byId = this.getById(auditParm.getId());
fileStorageUtil.deleteFile(byId.getPath());
BeanUtils.copyProperties(auditParm, csPagePO);
if(StringUtils.isNotBlank(auditParm.getJsonFile())){
InputStream inputStream = this.writeJsonStringToInputStream(auditParm.getJsonFile());
String s = fileStorageUtil.uploadStream(inputStream, HarmonicConstant.CONFIGURATIONPATH, HarmonicConstant.CONFIGURATIONNAME);
csPagePO.setPath(s);
}
return this.updateById(csPagePO);
}
@Override
public IPage<CsPageVO> queryPage(CsPageParm.CsPageParmQueryParam csPageParam) {
Page<CsPageVO> returnpage = new Page<> (csPageParam.getPageNum(), csPageParam.getPageSize ( ));
QueryWrapper<CsPagePO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank (csPageParam.getPid()),CsPagePO.COL_PID,csPageParam.getPid()).
like(StringUtils.isNotBlank (csPageParam.getSearchValue()),CsPagePO.COL_NAME,csPageParam.getSearchValue()).
eq ("status",1).
orderByDesc(CsPagePO.COL_CREATE_TIME);
IPage<CsPagePO> pageData = this.page(new Page<>(csPageParam.getPageNum(), csPageParam.getPageSize()), queryWrapper);
List<String> collect1 = pageData.getRecords().stream().map(CsPagePO::getCreateBy).collect(Collectors.toList());
Map<String, String> collect2;
if(!CollectionUtils.isEmpty(collect1)){
List<User> data = userFeignClient.getUserByIdList(collect1).getData();
collect2 = data.stream().collect(Collectors.toMap(User::getId, User::getName, (e1, e2) -> e1 + "," + e2));
} else {
collect2 = new HashMap<>();
}
List<CsPageVO> collect = pageData.getRecords().stream().map(temp -> {
CsPageVO csPageVO = new CsPageVO();
CsConfigurationPO csConfigurationPO = csConfigurationMapper.selectById(temp.getPid());
BeanUtils.copyProperties(temp, csPageVO);
csPageVO.setConfigurationName(csConfigurationPO.getName());
InputStream fileStream = fileStorageUtil.getFileStream(temp.getPath());
String text = new BufferedReader(
new InputStreamReader(fileStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
csPageVO.setPath(text);
csPageVO.setOperater(collect2.get(csPageVO.getCreateBy()));
return csPageVO;
}).collect(Collectors.toList());
returnpage.setRecords(collect);
returnpage.setTotal(pageData.getTotal());
return returnpage;
}
@Override
public CsPagePO queryById(String id) {
return this.lambdaQuery().eq(CsPagePO::getId,id).one();
}
/*将strin写入Json文件返回一个InputStream*/
public InputStream writeJsonStringToInputStream(String jsonString) {
// 转换为输入流
ByteArrayInputStream inputStream = new ByteArrayInputStream(jsonString.getBytes(StandardCharsets.UTF_8));
return inputStream;
}
}

View File

@@ -0,0 +1,241 @@
package com.njcn.csharmonic.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.github.tocrhz.mqtt.publisher.MqttPublisher;
import com.njcn.csdevice.api.*;
import com.njcn.csdevice.pojo.po.CsDataArray;
import com.njcn.csdevice.pojo.po.CsDevModelPO;
import com.njcn.csdevice.pojo.po.CsDevModelRelationPO;
import com.njcn.csdevice.pojo.vo.LineTargetVO;
import com.njcn.csharmonic.constant.HarmonicConstant;
import com.njcn.csharmonic.pojo.influx.CsDataHarmPowerP;
import com.njcn.csharmonic.pojo.influx.CsDataV;
import com.njcn.csharmonic.pojo.influx.CsPqdData;
import com.njcn.csharmonic.pojo.vo.ElementsVO;
import com.njcn.csharmonic.pojo.vo.RtDataVO;
import com.njcn.csharmonic.pojo.vo.TargetDetailVO;
import com.njcn.csharmonic.pojo.vo.ZuTaiVo;
import com.njcn.csharmonic.service.CsPagePOService;
import com.njcn.csharmonic.service.ILineTargetService;
import com.njcn.csharmonic.utils.CsReflectUitl;
import com.njcn.influx.pojo.dto.StatisticalDataDTO;
import com.njcn.influx.service.CommonService;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.system.api.EpdFeignClient;
import lombok.AllArgsConstructor;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/1 10:11
*/
@Service
@AllArgsConstructor
public class LineTargetServiceImpl implements ILineTargetService {
private final CsLedgerFeignClient csLedgerFeignClient;
private final DevModelRelationFeignClient devModelRelationFeignClient;
private final DevModelFeignClient devModelFeignClient;
private final DataSetFeignClient dataSetFeignClient;
private final DataArrayFeignClient dataArrayFeignClient;
private final FileStorageUtil fileStorageUtil;
private final CsPagePOService csPagePOService;
private final MqttPublisher publisher;
private final InfluxDbUtils influxDbUtils;
private final EpdFeignClient epdFeignClient;
private final CommonService commonService;
@Override
public List<LineTargetVO> getLineTarget(String lineId) {
List<LineTargetVO> list = new ArrayList<>();
String devId = csLedgerFeignClient.findDevByLineId(lineId).getData();
CsDevModelRelationPO po = devModelRelationFeignClient.getModelByDevId(devId).getData();
if (!Objects.isNull(po)){
CsDevModelPO csDevModelPo = devModelFeignClient.getModelById(po.getModelId()).getData();
List<LineTargetVO> dataSetList = dataSetFeignClient.getDataSet(csDevModelPo.getId()).getData();
List<String> setList = dataSetList.stream().map(LineTargetVO::getId).collect(Collectors.toList());
List<LineTargetVO> dataArrayList = dataArrayFeignClient.getDataArray(setList).getData();
dataSetList.forEach(dev -> dev.setChildren(getChildren(dev, dataArrayList)));
list.addAll(dataSetList);
}
return list;
}
@Override
public TargetDetailVO getTargetDetail(String pid, String name) {
TargetDetailVO vo = new TargetDetailVO();
List<CsDataArray> dataArrayList = dataArrayFeignClient.getDataArrayById(pid,name).getData();
List<String> dataType = dataArrayList.stream().map(CsDataArray::getStatMethod).distinct().collect(Collectors.toList());
List<String> phasic = dataArrayList.stream().map(CsDataArray::getPhase).distinct().collect(Collectors.toList());
vo.setDataTypeList(dataType);
vo.setPhasicList(phasic);
return vo;
}
@Override
public List<RtDataVO> getLineData(String id) {
List<RtDataVO> result = new ArrayList<>();
String path = csPagePOService.queryById(id).getPath();
InputStream inputStream = fileStorageUtil.getFileStream(path);
List<ElementsVO> list = analysisJson(inputStream);
//influx的原始方法获取数据
if (CollectionUtil.isNotEmpty(list)){
list.forEach(item->{
String targetTag = item.getTargetId().stream().reduce((first, second) -> second).orElse("no last element");
if (CollectionUtil.isNotEmpty(dataArrayFeignClient.getDataArrayById(item.getTargetPid(),targetTag).getData())){
String targetName = dataArrayFeignClient.getDataArrayById(item.getTargetPid(),targetTag).getData().get(0).getAnotherName();
String dataId = dataArrayFeignClient.getDataArrayById(item.getTargetPid(),targetTag).getData().get(0).getDataId();
String classId = epdFeignClient.selectById(dataId).getData().getClassId();
String lineId = item.getLineId().stream().reduce((first, second) -> second).orElse("no last element");
String dataType = item.getDataType();
String phasic = item.getPhasic();
result.add(getLineRtData2(lineId,classId,targetTag,phasic,dataType,targetName));
}
});
}
return result;
}
/**
* 获取子节点
*/
public List<LineTargetVO> getChildren(LineTargetVO item, List<LineTargetVO> all) {
return all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).collect(Collectors.toList());
}
/**
* 解析json文件
*/
public List<ElementsVO> analysisJson(InputStream inputStream) {
Gson gson = new Gson();
String text = new BufferedReader(
new InputStreamReader(inputStream, StandardCharsets.UTF_8))
.lines()
.collect(Collectors.joining("\n"));
ZuTaiVo zuTai = gson.fromJson(text, ZuTaiVo.class);
return zuTai.getElements();
}
/**
* 通过拼接sql语句获取方法
* @param lineId 监测点Id
* @param tableName 表名称
* @param columnName 字段名称
* @param phasic 相别
* @param dataType 数据类型
* @return
*/
public <T> T getLineRtData(String lineId, String tableName, String columnName, String phasic, String dataType) {
T t = null;
HashMap<String, Class<?>> entityClassesByAnnotation = CsReflectUitl.getEntityClassesByAnnotation();
Class<?> aClass = entityClassesByAnnotation.get(tableName);
String sql = "select line_id,phasic_type,value_type,last(" + columnName + ") AS rtData from "+ tableName +" where line_id = '" + lineId + "' and phasic_type = '" + phasic + "' and value_type = '" + dataType + "' tz('Asia/Shanghai')";
System.out.println("sql==:" + sql);
QueryResult sqlResult = influxDbUtils.query(sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
List<?> list = resultMapper.toPOJO(sqlResult, aClass);
if (CollectionUtil.isNotEmpty(list)){
t = (T)list.get(0);
}
return t;
}
/**
* 通过拼接sql语句获取方法
* @param lineId 监测点Id
* @param tableName 表名称
* @param columnName 字段名称
* @param phasic 相别
* @param dataType 数据类型
* @return
*/
public RtDataVO getLineRtData2(String lineId, String tableName, String columnName, String phasic, String dataType, String target) {
RtDataVO vo = new RtDataVO();
String sql = "select line_id,phasic_type,value_type,last(" + columnName + ") AS rtData from "+ tableName +" where line_id = '" + lineId + "' and phasic_type = '" + phasic + "' and value_type = '" + dataType + "' tz('Asia/Shanghai')";
QueryResult sqlResult = influxDbUtils.query(sql);
if (CollectionUtil.isNotEmpty(sqlResult.getResults().get(0).getSeries())){
vo.setRtData(BigDecimal.valueOf(Double.parseDouble(sqlResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(4).toString())).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
} else {
vo.setRtData(3.1415926);
}
vo.setLineId(lineId);
vo.setPhaseType(phasic);
vo.setValueType(dataType);
vo.setValueType(dataType);
vo.setTargetName(target);
vo.setTargetTag(columnName);
return vo;
}
/**
* 通过orm框架获取数据
* @param lineId 监测点Id
* @param tableName 表名称
* @param columnName 字段名称
* @param phasic 相别
* @param dataType 数据类型
* @return
*/
public StatisticalDataDTO getLineRtData3(String lineId, String tableName, String columnName, String phasic, String dataType, String target) {
return commonService.getLineRtData(lineId,tableName,columnName,phasic,dataType);
}
/**
* 根据表明返回不同数据结果
*/
public RtDataVO findDataByTableName(String lineId, String tableName, String columnName, String phasic, String dataType,String targetName) {
RtDataVO rtDataVO = new RtDataVO();
switch (tableName) {
case HarmonicConstant.DATA_HARM_POWER_P:
CsDataHarmPowerP rtData1 = getLineRtData(lineId,tableName,targetName,phasic,dataType);
BeanUtils.copyProperties(rtData1,rtDataVO);
rtDataVO.setTargetName(targetName);
break;
case HarmonicConstant.DATA_V:
CsDataV rtData2 = getLineRtData(lineId,tableName,targetName,phasic,dataType);
BeanUtils.copyProperties(rtData2,rtDataVO);
rtDataVO.setTargetName(targetName);
break;
case HarmonicConstant.PQD_DATA:
CsPqdData rtData3 = getLineRtData(lineId,tableName,targetName,phasic,dataType);
BeanUtils.copyProperties(rtData3,rtDataVO);
rtDataVO.setTargetName(targetName);
break;
default:
break;
}
return rtDataVO;
}
}

View File

@@ -0,0 +1,143 @@
package com.njcn.csharmonic.service.impl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.api.CsLineFeignClient;
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.utils.ReflectUtils;
import com.njcn.csharmonic.service.StableDataService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.njcn.csharmonic.param.ThdDataQueryParm;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;
import com.njcn.influx.pojo.po.HarmonicRatioData;
import com.njcn.influx.pojo.po.PowerQualityData;
import com.njcn.influx.service.HaronicRatioService;
import com.njcn.influx.service.PowerQualityService;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* Description:
* Date: 2023/5/18 14:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class StableDataServiceImpl implements StableDataService {
private final CsLineFeignClient csLineFeignClient;
private final PowerQualityService powerQualityService;
private final HaronicRatioService harmonicRatioService;
@Override
public List<ThdDataVO> queryThdData(String devId, String statisticalName) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(devId).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<PowerQualityData> firstPowerQuality = powerQualityService.getFirstPowerQuality(collect, statisticalName);
firstPowerQuality.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(statisticalName);
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, statisticalName);
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
@Override
public List<ThdDataVO> queryThdDataByTime(ThdDataQueryParm thdDataQueryParm) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(thdDataQueryParm.getDevId()).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<PowerQualityData> firstPowerQuality = powerQualityService.getPowerQuality(collect, thdDataQueryParm.getStatisticalName(), thdDataQueryParm.getStartTime(), thdDataQueryParm.getEndTime());
firstPowerQuality.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(thdDataQueryParm.getStatisticalName());
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, thdDataQueryParm.getStatisticalName());
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
@Override
public List<ThdDataVO> queryFisrtThdContent(String devId, String statisticalName) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(devId).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<HarmonicRatioData> harmonicRatioList = harmonicRatioService.getFirstHaronicRatio(collect, statisticalName);
harmonicRatioList.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(statisticalName);
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, statisticalName);
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
@Override
public List<ThdDataVO> queryThdContentByTime(ThdDataQueryParm thdDataQueryParm) {
List<ThdDataVO> thdDataVOList = new ArrayList<>();
List<CsLinePO> csLinePOList = csLineFeignClient.queryLineByDevId(thdDataQueryParm.getDevId()).getData();
Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR));
List<String> collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList());
List<HarmonicRatioData> harmonicRatioList = harmonicRatioService.getHaronicRatio(collect, thdDataQueryParm.getStatisticalName(),thdDataQueryParm.getStartTime(), thdDataQueryParm.getEndTime());
harmonicRatioList.forEach(temp->{
ThdDataVO thdDataVO = new ThdDataVO();
BeanUtils.copyProperties(temp,thdDataVO);
thdDataVO.setStatisticalName(thdDataQueryParm.getStatisticalName());
thdDataVO.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime());
String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), thdDataVO.getLineId())).collect(Collectors.toList()).get(0).getPosition();
thdDataVO.setPosition(position);
Double statisticalValue = 0.00;
statisticalValue= (Double) ReflectUtils.getValue(temp, thdDataQueryParm.getStatisticalName());
thdDataVO.setStatisticalData(statisticalValue);
thdDataVOList.add(thdDataVO);
});
return thdDataVOList;
}
}