From c36db941c334f8dffe33b6f4b44254ad107acdea Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Fri, 18 Aug 2023 13:26:26 +0800 Subject: [PATCH] =?UTF-8?q?influxdb=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/csdevice/api/CsLineFeignClient.java | 3 ++ .../fallback/CsLineClientFallbackFactory.java | 6 +++ .../csdevice/enums/AlgorithmResponseEnum.java | 1 + .../controller/line/CslineController.java | 10 ++++ .../service/impl/CsGroupServiceImpl.java | 46 ++++++++++++++++--- .../service/impl/LineTargetServiceImpl.java | 30 ++++++++++-- 6 files changed, 87 insertions(+), 9 deletions(-) diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java index d0e727e..d1e1725 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java @@ -29,4 +29,7 @@ public interface CsLineFeignClient { @PostMapping("/findByNdid") HttpResult> findByNdid(@RequestParam("id") String id); + + @PostMapping("/getPositionById") + HttpResult getPositionById(@RequestParam("id") String id); } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java index 45fee93..ec5cb7c 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java @@ -50,6 +50,12 @@ public class CsLineClientFallbackFactory implements FallbackFactory getPositionById(String id) { + log.error("{}异常,降级处理,异常为:{}","通过id查询监测点位置",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/AlgorithmResponseEnum.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/AlgorithmResponseEnum.java index f1eb5e6..ab64aef 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/AlgorithmResponseEnum.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/enums/AlgorithmResponseEnum.java @@ -20,6 +20,7 @@ public enum AlgorithmResponseEnum { NDID_ERROR("A00502","存在相同的ndid"), DATA_ERROR("A00503","存在相同的数据"), LINE_DATA_ERROR ("A00504","设备下监测点数据缺失"), + POSITION_ERROR ("A00504","监测点位置数据缺失"), ENGINEERING_DATA_ERROR ("A00505","工程数据数据缺失"), ELEEPDPQD_DATA_ERROR ("A00506","统计指标据数据缺失"), FILE_SIZE_ERROR ("A00507","文件不能超过10M"), diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java index 14184f1..48a0f57 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java @@ -44,6 +44,16 @@ public class CslineController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, csLinePOS, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getPositionById") + @ApiOperation("通过id查询监测点位置") + @ApiImplicitParam(name = "id", value = "设备id", required = true) + public HttpResult getPositionById(@RequestParam String id){ + String methodDescribe = getMethodDescribe("getPositionById"); + String position = csLinePOService.lambdaQuery().eq(CsLinePO::getLineId,id).one().getPosition(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, position, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryLineByDevId") @ApiOperation("监测点查询通过设备id获取") diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java index a3e676e..002e533 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java @@ -7,6 +7,7 @@ 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.pojo.exception.BusinessException; +import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.mapper.CsDataArrayMapper; import com.njcn.csdevice.mapper.CsGroArrMapper; @@ -22,7 +23,9 @@ import com.njcn.csdevice.service.ICsDataArrayService; import com.njcn.csdevice.service.ICsGroupService; import com.njcn.influx.pojo.dto.StatisticalDataDTO; import com.njcn.influx.service.CommonService; +import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.EpdFeignClient; +import com.njcn.system.enums.DicDataEnum; import com.njcn.system.pojo.po.EleEpdPqd; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; @@ -59,6 +62,10 @@ public class CsGroupServiceImpl extends ServiceImpl impl private final EpdFeignClient epdFeignClient; + private final CsLineFeignClient csLineFeignClient; + + private final DicDataFeignClient dicDataFeignClient; + @Override @Transactional(rollbackFor = Exception.class) public List getGroupData(String dataSet) { @@ -82,15 +89,28 @@ public class CsGroupServiceImpl extends ServiceImpl impl if (pageRes.getTotal() != 0) { List groupList = pageRes.getRecords(); List group = groupList.stream().map(DataGroupTemplateVO::getId).collect(Collectors.toList()); + String position = csLineFeignClient.getPositionById(lineId).getData(); + if (Objects.isNull(position)){ + throw new BusinessException(AlgorithmResponseEnum.POSITION_ERROR); + } + String clDid = null; + String areaCode = dicDataFeignClient.getDicDataById(position).getData().getCode(); + if (Objects.equals(areaCode, DicDataEnum.OUTPUT_SIDE.getCode())){ + clDid = "0"; + } else if (Objects.equals(areaCode, DicDataEnum.LOAD_SIDE.getCode())){ + clDid = "1"; + } else if (Objects.equals(areaCode, DicDataEnum.GRID_SIDE.getCode())){ + clDid = "2"; + } //获取当前组的所有指标项 List list = csDataArrayMapper.getArrayByGroup(group); - list.forEach(item->{ + for (EnergyTemplateVO item : list) { EnergyTemplateVO vo = new EnergyTemplateVO(); BeanUtils.copyProperties(item,vo); EleEpdPqd eleEpdPqd = epdFeignClient.selectById(item.getDataId()).getData(); vo.setClassId(eleEpdPqd.getClassId()); vo.setUnit(eleEpdPqd.getUnit()); - StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,eleEpdPqd.getClassId(),item.getName(),item.getPhase(),item.getStatMethod()); + StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,eleEpdPqd.getClassId(),item.getName(),item.getPhase(),item.getStatMethod(),clDid); if (!Objects.isNull(statisticalDataDTO)){ vo.setTime(statisticalDataDTO.getTime()); vo.setDataValue(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue()); @@ -98,7 +118,7 @@ public class CsGroupServiceImpl extends ServiceImpl impl vo.setDataValue(3.1415926); } arrayList.add(vo); - }); + } if (CollectionUtil.isNotEmpty(arrayList)){ List grList = groupList.stream().peek((item) -> {item.setChildren(getChildren(item.getId(), arrayList));}).collect(Collectors.toList()); pageTurn.setRecords(grList); @@ -125,15 +145,29 @@ public class CsGroupServiceImpl extends ServiceImpl impl if (pageRes.getTotal() != 0) { List groupList = pageRes.getRecords(); List group = groupList.stream().map(DataGroupTemplateVO::getId).collect(Collectors.toList()); + String position = csLineFeignClient.getPositionById(energyBaseParam.getLineId()).getData(); + if (Objects.isNull(position)){ + throw new BusinessException(AlgorithmResponseEnum.POSITION_ERROR); + } + String clDid = null; + String areaCode = dicDataFeignClient.getDicDataById(position).getData().getCode(); + if (Objects.equals(areaCode, DicDataEnum.OUTPUT_SIDE.getCode())){ + clDid = "0"; + } else if (Objects.equals(areaCode, DicDataEnum.LOAD_SIDE.getCode())){ + clDid = "1"; + } else if (Objects.equals(areaCode, DicDataEnum.GRID_SIDE.getCode())){ + clDid = "2"; + } //获取当前组的所有指标项 List list = csDataArrayMapper.getArrayByGroup(group); - list.forEach(item->{ + + for (EnergyTemplateVO item : list) { EnergyTemplateVO vo = new EnergyTemplateVO(); BeanUtils.copyProperties(item,vo); EleEpdPqd eleEpdPqd = epdFeignClient.selectById(item.getDataId()).getData(); vo.setClassId(eleEpdPqd.getClassId()); vo.setUnit(eleEpdPqd.getUnit()); - StatisticalDataDTO statisticalDataDTO = commonService.getLineHistoryData(energyBaseParam.getLineId(),eleEpdPqd.getClassId(),item.getName(),energyBaseParam.getStartTime(),energyBaseParam.getEndTime()); + StatisticalDataDTO statisticalDataDTO = commonService.getLineHistoryData(energyBaseParam.getLineId(),eleEpdPqd.getClassId(),item.getName(),energyBaseParam.getStartTime(),energyBaseParam.getEndTime(),clDid); if (!Objects.isNull(statisticalDataDTO)){ vo.setMaxValue(BigDecimal.valueOf(statisticalDataDTO.getMaxValue()).setScale(4, RoundingMode.UP).doubleValue()); vo.setMinValue(BigDecimal.valueOf(statisticalDataDTO.getMinValue()).setScale(4, RoundingMode.UP).doubleValue()); @@ -142,7 +176,7 @@ public class CsGroupServiceImpl extends ServiceImpl impl vo.setMinValue(3.1415956); } arrayList.add(vo); - }); + } if (CollectionUtil.isNotEmpty(arrayList)){ List grList = groupList.stream().peek((item) -> {item.setChildren(getChildren(item.getId(), arrayList));}).collect(Collectors.toList()); pageTurn.setRecords(grList); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/LineTargetServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/LineTargetServiceImpl.java index 8663569..9a67409 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/LineTargetServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/LineTargetServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.nacos.shaded.com.google.gson.Gson; import com.google.common.reflect.TypeToken; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.csdevice.api.*; +import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.pojo.po.CsDataArray; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.DataArrayTreeVO; @@ -117,7 +118,9 @@ public class LineTargetServiceImpl implements ILineTargetService { String targetName = dataArray.getAnotherName(); String dataId = dataArray.getDataId(); String classId = epdFeignClient.selectById(dataId).getData().getClassId(); - result.add(getLineRtData(item.getId(),item.getLineId().get(3),classId,targetTag,phasic,dataType,targetName)); + String tableName = dicDataFeignClient.getDicDataById(classId).getData().getCode(); + String clDid = getClDid(item.getLineId().get(3)); + result.add(getLineRtData(item.getId(),item.getLineId().get(3),tableName,targetTag,phasic,dataType,targetName,clDid)); } }); return result; @@ -135,6 +138,26 @@ public class LineTargetServiceImpl implements ILineTargetService { return gson.fromJson(text, new TypeToken(){}.getType()); } + /** + * 获取cldid + */ + public String getClDid(String line) { + String position = csLineFeignClient.getPositionById(line).getData(); + if (Objects.isNull(position)){ + throw new BusinessException(AlgorithmResponseEnum.POSITION_ERROR); + } + String clDid = null; + String areaCode = dicDataFeignClient.getDicDataById(position).getData().getCode(); + if (Objects.equals(areaCode, DicDataEnum.OUTPUT_SIDE.getCode())){ + clDid = "0"; + } else if (Objects.equals(areaCode, DicDataEnum.LOAD_SIDE.getCode())){ + clDid = "1"; + } else if (Objects.equals(areaCode, DicDataEnum.GRID_SIDE.getCode())){ + clDid = "2"; + } + return clDid; + } + /** * 通过orm框架获取数据 * @param id 图元Id @@ -144,11 +167,12 @@ public class LineTargetServiceImpl implements ILineTargetService { * @param phasic 相别 * @param dataType 数据类型 * @param target 数据名称 + * @param cldId 逻辑子设备标识 * @return */ - public CsRtDataVO getLineRtData(String id,String lineId, String tableName, String columnName, String phasic, String dataType, String target) { + public CsRtDataVO getLineRtData(String id,String lineId, String tableName, String columnName, String phasic, String dataType, String target, String cldId) { CsRtDataVO csRtDataVO = new CsRtDataVO(); - StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,tableName,columnName,phasic,dataType); + StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,tableName,columnName,phasic,dataType,cldId); if(Objects.isNull(statisticalDataDTO)){ statisticalDataDTO = new StatisticalDataDTO(); statisticalDataDTO.setLineId(lineId);