diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java index d55da67..b077826 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/constant/DataParam.java @@ -17,4 +17,10 @@ public interface DataParam { long FILE_SIZE = 10 * 1024 * 1024; //便携式设备编码(用于某些业务判断) String portableDevType = "8b45cf6b7f5266e777d07c166ad5fa77"; + + //统计类型配置-便携式设备-稳态指标的ID(用于某些业务判断) + String portableDevStatisticalId = "bce2dfdfb46c4d96e92584def276d1c8"; + + //便携式设备默认统计方式 + String portableDevStatisticalMethods = "min"; } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java index a6677d0..805aff3 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java @@ -11,6 +11,8 @@ import com.njcn.csdevice.pojo.param.EnergyBaseParam; import com.njcn.csdevice.pojo.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; import com.njcn.csdevice.service.ICsGroupService; +import com.njcn.csharmonic.param.CommonStatisticalQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataVO; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -79,13 +81,36 @@ public class CsGroupController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/deviceDataByType") @ApiOperation("根据类型查询趋势数据、暂态数据、实时数据") - @ApiImplicitParam(name = "energyBaseParam",required = true) - public HttpResult deviceDataByType(@RequestBody Map map){ + @ApiImplicitParam(name = "commonStatisticalQueryParam",required = true) + public HttpResult deviceDataByType(@RequestBody CommonStatisticalQueryParam commonStatisticalQueryParam){ String methodDescribe = getMethodDescribe("deviceDataByType"); - Object obj = csGroupService.deviceDataByType(map); + Object obj = csGroupService.deviceDataByType(commonStatisticalQueryParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, obj, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getDeviceTrendData") + @ApiOperation("查询实时数据中实时趋势") + @ApiImplicitParams({ + @ApiImplicitParam(name = "devId", value = "设备ID", required = true), + @ApiImplicitParam(name = "lineId", value = "监测点id", required = true) + }) + public HttpResult> getDeviceTrendData(@RequestParam("devId") String devId, @RequestParam(value = "lineId")String lineId){ + String methodDescribe = getMethodDescribe("getDeviceTrendData"); + List list = csGroupService.getDeviceTrendData(devId,lineId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getDeviceHarmonicSpectrumData") + @ApiOperation("查询实时数据中谐波频谱") + @ApiImplicitParam(name = "commonStatisticalQueryParam",required = true) + public HttpResult> getDeviceHarmonicSpectrumData(@RequestBody CommonStatisticalQueryParam commonStatisticalQueryParam){ + String methodDescribe = getMethodDescribe("getDeviceHarmonicSpectrumData"); + List list = csGroupService.getDeviceHarmonicSpectrumData(commonStatisticalQueryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/deleteGroup") @ApiOperation("删除分组") diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java index 63b316b..b7dc31b 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java @@ -6,9 +6,9 @@ import com.njcn.csdevice.pojo.param.EnergyBaseParam; import com.njcn.csdevice.pojo.po.CsGroup; import com.njcn.csdevice.pojo.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; - +import com.njcn.csharmonic.param.CommonStatisticalQueryParam; +import com.njcn.csharmonic.pojo.vo.ThdDataVO; import java.util.List; -import java.util.Map; /** *

@@ -42,7 +42,19 @@ public interface ICsGroupService extends IService { * 根据类型查询趋势数据、暂态数据、实时数据 * @return */ - Object deviceDataByType(Map map); + Object deviceDataByType(CommonStatisticalQueryParam commonStatisticalQueryParam); + + /** + * 查询实时数据中实时趋势 + * @return + */ + List getDeviceTrendData(String devId,String lineId); + + /** + * 查询实时数据中实时趋势 + * @return + */ + List getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam); /** * 删除组信息 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 e01096d..a49ba09 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 @@ -1,6 +1,7 @@ package com.njcn.csdevice.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -10,6 +11,7 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.api.EquipmentFeignClient; +import com.njcn.csdevice.constant.DataParam; import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.mapper.CsDataArrayMapper; import com.njcn.csdevice.mapper.CsGroArrMapper; @@ -26,6 +28,7 @@ import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; import com.njcn.csdevice.pojo.vo.EnergyTemplateVO; import com.njcn.csdevice.service.ICsDataArrayService; import com.njcn.csdevice.service.ICsGroupService; +import com.njcn.csharmonic.param.CommonStatisticalQueryParam; import com.njcn.csharmonic.pojo.vo.ThdDataVO; import com.njcn.event.api.EventDetailFeignClient; import com.njcn.event.pojo.po.RmpEventDetailPO; @@ -42,6 +45,8 @@ import com.njcn.system.enums.DicDataEnum; import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.EleEpdPqd; import com.njcn.system.pojo.po.EleEvtParm; +import com.njcn.system.pojo.vo.CsStatisticalSetVO; +import com.njcn.system.pojo.vo.EleEpdPqdListVO; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -49,6 +54,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -227,48 +233,238 @@ public class CsGroupServiceImpl extends ServiceImpl impl } @Override - public Object deviceDataByType(Map map) { - Object type = map.get("type"); + public Object deviceDataByType(CommonStatisticalQueryParam commonStatisticalQueryParam) { + String type = commonStatisticalQueryParam.getType(); if (type == null) throw new BusinessException("type参数缺失!"); //传1 则是趋势数据tab页面 - if("1".equals(type.toString())){ + if("1".equals(type)){ + formatQueryParamList(commonStatisticalQueryParam); List result = new ArrayList(); - Object devId = map.get("devId"); - Object lineId = map.get("lineId"); - Object startTime = map.get("startTime"); - Object endTime = map.get("endTime"); - Object statisticalId = map.get("statisticalId"); - Object valueType = map.get("valueType"); - Object frequency = map.get("frequency"); - if (devId == null) throw new BusinessException("devId参数缺失!"); - if (lineId == null) throw new BusinessException("lineId参数缺失!"); - if (startTime == null) throw new BusinessException("startTime参数缺失!"); - if (endTime == null) throw new BusinessException("endTime参数缺失!"); - if (statisticalId == null) throw new BusinessException("statisticalId参数缺失!"); - if (valueType == null) throw new BusinessException("valueType参数缺失!"); - if (frequency == null) throw new BusinessException("frequency参数缺失!"); - List data1 = equipmentFeignClient.queryDeviceById(Stream.of(devId.toString()).collect(Collectors.toList())).getData(); - List ids = new ArrayList(); - ids.add(lineId.toString()); - List finalCsLinePOList = csLineFeignClient.queryLineById(ids).getData(); - List data = csStatisticalSetFeignClient.queryStatisticalSelect(statisticalId.toString()).getData(); - if(CollectionUtil.isNotEmpty(data)){ - data.forEach(epdPqd->{ - String finalFrequency1 = Optional.ofNullable(frequency.toString()).orElse(""); + List data1 = equipmentFeignClient.queryDeviceById(Stream.of(commonStatisticalQueryParam.getDevId()).collect(Collectors.toList())).getData(); + List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(commonStatisticalQueryParam.getLineId())).getData(); + if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ + for (CommonStatisticalQueryParam param : commonStatisticalQueryParam.getList()){ + if(param.getStatisticalId() == null){ + continue; + } + List eleEpdPqds = csStatisticalSetFeignClient.queryStatisticalSelect(param.getStatisticalId()).getData(); + eleEpdPqds.forEach(epdPqd->{ + List commonQueryParams = finalCsLinePOList.stream().map(temp -> { + CommonQueryParam commonQueryParam = new CommonQueryParam(); + commonQueryParam.setLineId(temp.getLineId()); + commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); + commonQueryParam.setColumnName(epdPqd.getName()+ (param.getFrequency() == null ? "":"_"+param.getFrequency())); + commonQueryParam.setPhasic(epdPqd.getPhase()); + commonQueryParam.setStartTime(commonStatisticalQueryParam.getStartTime()); + commonQueryParam.setEndTime(commonStatisticalQueryParam.getEndTime()); + commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType()); + commonQueryParam.setProcess(data1.get(0).getProcess()+""); + commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); + return commonQueryParam; + }).collect(Collectors.toList()); + List deviceRtData = commonService.getDeviceRtDataByTime(commonQueryParams); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); + vo.setStatisticalIndex(epdPqd.getId()); + vo.setUnit(epdPqd.getUnit()); + vo.setStatisticalName(epdPqd.getName()); + vo.setAnotherName(epdPqd.getShowName()); + return vo; + }).collect(Collectors.toList()); + result.addAll(collect1); + }); + } + } + return result; + }else if("2".equals(type)){ + //传2 则是实时数据tab页面 + List result = new ArrayList(); + List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(commonStatisticalQueryParam.getLineId())).getData(); + List data1 = equipmentFeignClient.queryDeviceById(Stream.of(commonStatisticalQueryParam.getDevId()).collect(Collectors.toList())).getData(); + //便携式设备的稳态指标 + CsStatisticalSetVO csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticalId).getData(); + List eleEpdPqds = new ArrayList<>(); + csStatisticalSetVO.getSelectedList().forEach(css->{ + eleEpdPqds.addAll(css.getEleEpdPqdVOS()); + }); + eleEpdPqds.forEach(epdPqd->{ + List commonQueryParams = finalCsLinePOList.stream().map(temp -> { + CommonQueryParam commonQueryParam = new CommonQueryParam(); + commonQueryParam.setLineId(temp.getLineId()); + commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); + commonQueryParam.setColumnName(epdPqd.getName()); + commonQueryParam.setPhasic(epdPqd.getPhase()); + commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType() == null ? DataParam.portableDevStatisticalMethods:commonStatisticalQueryParam.getValueType()); + commonQueryParam.setProcess(data1.get(0).getProcess()+""); + commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); + return commonQueryParam; + }).collect(Collectors.toList()); + List deviceRtData = commonService.getDeviceRtData(commonQueryParams); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); + vo.setStatisticalIndex(epdPqd.getId()); + vo.setUnit(epdPqd.getUnit()); + vo.setStatisticalName(epdPqd.getName()); + vo.setAnotherName(epdPqd.getShowName()); + return vo; + }).collect(Collectors.toList()); + result.addAll(collect1); + }); + return result; + }else if("3".equals(type)){ + //传3 则是暂态事件tab页面 + Page returnpage = new Page<> (commonStatisticalQueryParam.getPageNum(),commonStatisticalQueryParam.getPageSize()); + returnpage = this.getBaseMapper().getGroupEventList(returnpage,commonStatisticalQueryParam.getDevId(),commonStatisticalQueryParam.getLineId()); + returnpage.getRecords().forEach(temp->{ + //事件描述、相别、暂降幅值,需要特殊处理赋值 + //事件描述 + EleEpdPqd ele = epdFeignClient.findByName(temp.getTag()).getData(); + if(ele!=null){ + temp.setShowName(ele.getShowName()); + //相别 + List data1 = eleEvtFeignClient.queryByPid(ele.getId()).getData(); + List eventDataSetDTOS = new ArrayList<>(); + for (EleEvtParm eleEvtParm : data1) { + EventDataSetDTO eventDataSetDTO = new EventDataSetDTO(); + BeanUtils.copyProperties(eleEvtParm,eventDataSetDTO); + EventDataSetDTO evtData = evtDataService.getEventDataSet("evt_data", temp.getId(), eleEvtParm.getName()); + if (evtData == null) { + eventDataSetDTO.setValue("-"); + }else { + eventDataSetDTO.setValue(Optional.ofNullable(evtData.getValue()).orElse("-")); + } + eventDataSetDTOS.add(eventDataSetDTO); + } + List evtParamPhase = eventDataSetDTOS.stream(). + filter(dataSetDTO -> Objects.equals(dataSetDTO.getName(), "Evt_Param_Phase")). + collect(Collectors.toList()); + if(CollectionUtil.isEmpty(evtParamPhase)){ + temp.setPhaseType("-"); + }else { + temp.setPhaseType(evtParamPhase.get(0).getValue()+(Objects.isNull(evtParamPhase.get(0).getUnit())?"":evtParamPhase.get(0).getUnit())); + } + } + //暂降幅值 + //List eventDetails = eventDetailFeignClient.getEventDetailByIdsList(Arrays.asList(temp.getEventId())).getData(); + //if(eventDetails !=null && !eventDetails.isEmpty()) temp.setAmplitude(PubUtils.floatRound(2, eventDetails.get(0).getFeatureAmplitude().floatValue())); + }); + return returnpage; + } + return null; + } + + private void formatQueryParamList(CommonStatisticalQueryParam commonStatisticalQueryParam){ + List list = new ArrayList<>(); + if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ + for(CommonStatisticalQueryParam param : commonStatisticalQueryParam.getList()){ + if(param.getFrequencys() != null && param.getFrequencys().size() > 0){ + for (String frequency : param.getFrequencys()){ + CommonStatisticalQueryParam cp = new CommonStatisticalQueryParam(); + cp.setStatisticalId(param.getStatisticalId()); + cp.setFrequency(frequency); + list.add(cp); + } + }else{ + CommonStatisticalQueryParam cp = new CommonStatisticalQueryParam(); + cp.setStatisticalId(param.getStatisticalId()); + list.add(cp); + } + } + commonStatisticalQueryParam.setList(list); + } + } + + @Override + public List getDeviceTrendData(String devId, String lineId) { + List result = new ArrayList(); + List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(lineId)).getData(); + List data1 = equipmentFeignClient.queryDeviceById(Stream.of(devId.toString()).collect(Collectors.toList())).getData(); + //便携式设备的稳态指标 + CsStatisticalSetVO csStatisticalSetVO = csStatisticalSetFeignClient.queryStatistical(DataParam.portableDevStatisticalId).getData(); + List eleEpdPqds = new ArrayList<>(); + csStatisticalSetVO.getSelectedList().forEach(css->{ + for(EleEpdPqd epdPqd : css.getEleEpdPqdVOS()){ + if(epdPqd.getHarmStart() != null && epdPqd.getHarmEnd() != null){ + eleEpdPqds.add(epdPqd); + } + } + }); + eleEpdPqds.forEach(epdPqd->{ + for (int i = epdPqd.getHarmStart().intValue(); i < epdPqd.getHarmEnd().intValue(); i++) { + String index = i+""; + List commonQueryParams = finalCsLinePOList.stream().map(temp -> { + CommonQueryParam commonQueryParam = new CommonQueryParam(); + commonQueryParam.setLineId(temp.getLineId()); + commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); + commonQueryParam.setColumnName(epdPqd.getName()+"_"+index); + commonQueryParam.setPhasic(epdPqd.getPhase()); + commonQueryParam.setDataType(DataParam.portableDevStatisticalMethods); + commonQueryParam.setProcess(data1.get(0).getProcess()+""); + commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); + return commonQueryParam; + }).collect(Collectors.toList()); + List deviceRtData = commonService.getDeviceRtData(commonQueryParams); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); + vo.setStatisticalIndex(epdPqd.getId()); + vo.setUnit(epdPqd.getUnit()); + vo.setStatisticalName(epdPqd.getName()); + vo.setAnotherName(epdPqd.getShowName()); + vo.setFrequency(index); + return vo; + }).collect(Collectors.toList()); + result.addAll(collect1); + } + }); + return result; + } + + @Override + public List getDeviceHarmonicSpectrumData(CommonStatisticalQueryParam commonStatisticalQueryParam) { + formatQueryParamList(commonStatisticalQueryParam); + List result = new ArrayList(); + List data1 = equipmentFeignClient.queryDeviceById(Stream.of(commonStatisticalQueryParam.getDevId()).collect(Collectors.toList())).getData(); + List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(commonStatisticalQueryParam.getLineId())).getData(); + if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ + for (CommonStatisticalQueryParam param : commonStatisticalQueryParam.getList()){ + if(param.getStatisticalId() == null){ + continue; + } + List eleEpdPqds = csStatisticalSetFeignClient.queryStatisticalSelect(param.getStatisticalId()).getData(); + eleEpdPqds.forEach(epdPqd->{ List commonQueryParams = finalCsLinePOList.stream().map(temp -> { CommonQueryParam commonQueryParam = new CommonQueryParam(); commonQueryParam.setLineId(temp.getLineId()); commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); - commonQueryParam.setColumnName(epdPqd.getName()+ finalFrequency1); + commonQueryParam.setColumnName(epdPqd.getName()+ (param.getFrequency() == null ? "":"_"+param.getFrequency())); commonQueryParam.setPhasic(epdPqd.getPhase()); - commonQueryParam.setStartTime(startTime.toString()); - commonQueryParam.setEndTime(endTime.toString()); - commonQueryParam.setDataType(valueType.toString()); + commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType()); commonQueryParam.setProcess(data1.get(0).getProcess()+""); commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); return commonQueryParam; }).collect(Collectors.toList()); - List deviceRtData = commonService.getDeviceRtDataByTime(commonQueryParams); + List deviceRtData = commonService.getDeviceRtData(commonQueryParams); List collect1 = deviceRtData.stream().map(temp -> { ThdDataVO vo = new ThdDataVO(); vo.setLineId(temp.getLineId()); @@ -287,59 +483,8 @@ public class CsGroupServiceImpl extends ServiceImpl impl result.addAll(collect1); }); } - return result; - }else if("2".equals(type.toString())){ - //传2 则是实时数据tab页面 - - }else if("3".equals(type.toString())){ - //传3 则是暂态事件tab页面 - Object pageNum = map.get("pageNum"); - Object pageSize = map.get("pageSize"); - Object devId = map.get("devId"); - Object lineId = map.get("lineId"); - if (devId == null) throw new BusinessException("devId参数缺失!"); - if (lineId == null) throw new BusinessException("lineId参数缺失!"); - if (pageNum == null) throw new BusinessException("pageNum参数缺失!"); - if (pageSize == null) throw new BusinessException("pageSize参数缺失!"); - Page returnpage = new Page<> (Integer.parseInt(pageNum.toString()),Integer.parseInt(pageSize.toString())); - returnpage = this.getBaseMapper().getGroupEventList(returnpage,devId.toString(),lineId.toString()); - returnpage.getRecords().forEach(temp->{ - //事件描述、相别、暂降幅值,需要特殊处理赋值 - //事件描述 - EleEpdPqd ele = epdFeignClient.findByName(temp.getTag()).getData(); - if(ele!=null){ - temp.setShowName(ele.getShowName()); - //相别 - List data1 = eleEvtFeignClient.queryByPid(ele.getId()).getData(); - List eventDataSetDTOS = new ArrayList<>(); - for (EleEvtParm eleEvtParm : data1) { - EventDataSetDTO eventDataSetDTO = new EventDataSetDTO(); - BeanUtils.copyProperties(eleEvtParm,eventDataSetDTO); - EventDataSetDTO evtData = evtDataService.getEventDataSet("evt_data", temp.getId(), eleEvtParm.getName()); - if (evtData == null) { - eventDataSetDTO.setValue("-"); - }else { - eventDataSetDTO.setValue(Optional.ofNullable(evtData.getValue()).orElse("-")); - - } - eventDataSetDTOS.add(eventDataSetDTO); - } - List evtParamPhase = eventDataSetDTOS.stream(). - filter(dataSetDTO -> Objects.equals(dataSetDTO.getName(), "Evt_Param_Phase")). - collect(Collectors.toList()); - if(CollectionUtil.isEmpty(evtParamPhase)){ - temp.setPhaseType("-"); - }else { - temp.setPhaseType(evtParamPhase.get(0).getValue()+(Objects.isNull(evtParamPhase.get(0).getUnit())?"":evtParamPhase.get(0).getUnit())); - } - } - //暂降幅值 - List eventDetails = eventDetailFeignClient.getEventDetailByIdsList(Arrays.asList(temp.getEventId())).getData(); - if(eventDetails !=null && !eventDetails.isEmpty()) temp.setAmplitude(PubUtils.floatRound(2, eventDetails.get(0).getFeatureAmplitude().floatValue())); - }); - return returnpage; } - return null; + return result; } /*表名换成了id本方法做转换*/ diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/WlRecordServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/WlRecordServiceImpl.java index 55c157f..20cd1cd 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/WlRecordServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/WlRecordServiceImpl.java @@ -39,10 +39,7 @@ import org.springframework.transaction.annotation.Transactional; import java.text.DecimalFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -305,52 +302,76 @@ public class WlRecordServiceImpl extends ServiceImpl i } //进行时间覆盖 - //开始组装查询数据对象 - String frequency = Optional.ofNullable(commonStatisticalQueryParam.getFrequency()).orElse(""); - for(WlRecord wl : data){ - //根据设备ID获取设备基础信息 - List ids = new ArrayList(); - ids.add(wl.getLineId()); - List finalCsLinePOList = csLineFeignClient.queryLineById(ids).getData(); - List data1 = equipmentFeignClient.queryDeviceById(Stream.of(wl.getDevId()).collect(Collectors.toList())).getData(); - //获取指标下的具体分类指标 - List eleEpdPqds = csStatisticalSetFeignClient.queryStatisticalSelect(commonStatisticalQueryParam.getStatisticalId()).getData(); - eleEpdPqds.forEach(epdPqd->{ - List commonQueryParams = finalCsLinePOList.stream().map(temp -> { - CommonQueryParam commonQueryParam = new CommonQueryParam(); - commonQueryParam.setLineId(temp.getLineId()); - commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); - commonQueryParam.setColumnName(epdPqd.getName()+ frequency); - commonQueryParam.setPhasic(epdPqd.getPhase()); - commonQueryParam.setStartTime(LocalDateTimeUtil.format(wl.getStartTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); - commonQueryParam.setEndTime(LocalDateTimeUtil.format(wl.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); - commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType()); - commonQueryParam.setProcess(data1.get(0).getProcess()+""); - commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); - return commonQueryParam; - }).collect(Collectors.toList()); - List deviceRtData = commonService.getDeviceRtDataByTime(commonQueryParams); - List collect1 = deviceRtData.stream().map(temp -> { - ThdDataVO vo = new ThdDataVO(); - vo.setLineId(temp.getLineId()); - vo.setPhase(temp.getPhaseType()); - String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); - vo.setPosition(position); - vo.setTime(temp.getTime()); - vo.setStatMethod(temp.getValueType()); - vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); - vo.setStatisticalIndex(epdPqd.getId()); - vo.setUnit(epdPqd.getUnit()); - vo.setStatisticalName(epdPqd.getName()); - vo.setAnotherName(epdPqd.getShowName()); - return vo; - }).collect(Collectors.toList()); - result.addAll(collect1); - }); + // + formatQueryParamList(commonStatisticalQueryParam); + if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ + for (CommonStatisticalQueryParam param : commonStatisticalQueryParam.getList()){ + if(param.getStatisticalId() == null){ + continue; + } + List eleEpdPqds = csStatisticalSetFeignClient.queryStatisticalSelect(param.getStatisticalId()).getData(); + for(WlRecord wl : data){ + List finalCsLinePOList = csLineFeignClient.queryLineById(Arrays.asList(wl.getLineId())).getData(); + List data1 = equipmentFeignClient.queryDeviceById(Stream.of(wl.getDevId()).collect(Collectors.toList())).getData(); + eleEpdPqds.forEach(epdPqd->{ + List commonQueryParams = finalCsLinePOList.stream().map(temp -> { + CommonQueryParam commonQueryParam = new CommonQueryParam(); + commonQueryParam.setLineId(temp.getLineId()); + commonQueryParam.setTableName(getTableNameByClassId(epdPqd.getClassId())); + commonQueryParam.setColumnName(epdPqd.getName()+ (param.getFrequency() == null ? "":"_"+param.getFrequency())); + commonQueryParam.setPhasic(epdPqd.getPhase()); + commonQueryParam.setStartTime(LocalDateTimeUtil.format(wl.getStartTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + commonQueryParam.setEndTime(LocalDateTimeUtil.format(wl.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + commonQueryParam.setDataType(commonStatisticalQueryParam.getValueType()); + commonQueryParam.setProcess(data1.get(0).getProcess()+""); + commonQueryParam.setClDid(getClDidByLineId(temp.getLineId())); + return commonQueryParam; + }).collect(Collectors.toList()); + List deviceRtData = commonService.getDeviceRtDataByTime(commonQueryParams); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = finalCsLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(Double.valueOf(df.format(temp.getValue()))); + vo.setStatisticalIndex(epdPqd.getId()); + vo.setUnit(epdPqd.getUnit()); + vo.setStatisticalName(epdPqd.getName()); + vo.setAnotherName(epdPqd.getShowName()); + return vo; + }).collect(Collectors.toList()); + result.addAll(collect1); + }); + } + } } return result; } + private void formatQueryParamList(CommonStatisticalQueryParam commonStatisticalQueryParam){ + List list = new ArrayList<>(); + if(commonStatisticalQueryParam.getList() != null && commonStatisticalQueryParam.getList().size() > 0){ + for(CommonStatisticalQueryParam param : commonStatisticalQueryParam.getList()){ + if(param.getFrequencys() != null && param.getFrequencys().size() > 0){ + for (String frequency : param.getFrequencys()){ + CommonStatisticalQueryParam cp = new CommonStatisticalQueryParam(); + cp.setStatisticalId(param.getStatisticalId()); + cp.setFrequency(frequency); + list.add(cp); + } + }else{ + CommonStatisticalQueryParam cp = new CommonStatisticalQueryParam(); + cp.setStatisticalId(param.getStatisticalId()); + list.add(cp); + } + } + commonStatisticalQueryParam.setList(list); + } + } + /*表名换成了id本方法做转换*/ private String getTableNameByClassId(String classId){ DictData data = dicDataFeignClient.getDicDataById(classId).getData(); diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CommonStatisticalQueryParam.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CommonStatisticalQueryParam.java index dd049d4..ce43d74 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CommonStatisticalQueryParam.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CommonStatisticalQueryParam.java @@ -20,7 +20,6 @@ public class CommonStatisticalQueryParam { @ApiModelProperty(value = "设备id") private String DevId; @ApiModelProperty(value = "指标组id") - @NotBlank(message="指标组id不能为空") private String statisticalId; @ApiModelProperty(value = "取值类型(Max,Min,cp95,avg)") private String valueType; @@ -35,9 +34,16 @@ public class CommonStatisticalQueryParam { private String process; - - - - + @ApiModelProperty(value = "用于选择多个指标及谐波次数") + List list; + //用于暂态事件列表分页 + @ApiModelProperty(value = "多个谐波次数") + private List frequencys; + private int pageNum; + private int pageSize; + @ApiModelProperty(value = "查询分类:传1 则是趋势数据tab页面,传2 则是实时数据tab页面,传3 则是暂态事件tab页面") + private String type; + @ApiModelProperty(value = "监测点") + private String lineId; } diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java index fce0683..980dffe 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/ThdDataVO.java @@ -30,7 +30,7 @@ public class ThdDataVO { private String unit; private String anotherName; - + private String frequency; private Double statisticalData;