From 72d0b68d2d49c7ceab7d036866de1b1d5331284a Mon Sep 17 00:00:00 2001 From: huangzj <826100833@qq.com> Date: Thu, 15 Jun 2023 13:34:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../csdevice/enums/AlgorithmResponseEnum.java | 1 + .../csdevice/pojo/po/CsEngineeringPO.java | 2 +- .../impl/CsEngineeringServiceImpl.java | 40 +++++++++-- .../param/CommonStatisticalQueryParam.java | 37 ++++++++++ .../njcn/csharmonic/pojo/vo/ThdDataVO.java | 6 +- .../controller/StableDataController.java | 20 ++++++ .../csharmonic/service/StableDataService.java | 6 ++ .../service/impl/StableDataServiceImpl.java | 69 +++++++++++++++++++ 8 files changed, 173 insertions(+), 8 deletions(-) create mode 100644 cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CommonStatisticalQueryParam.java 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 ffa881e..2257e8b 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 @@ -21,6 +21,7 @@ public enum AlgorithmResponseEnum { DATA_ERROR("A00503","存在相同的数据"), LINE_DATA_ERROR ("A00504","设备下监测点数据缺失"), ENGINEERING_DATA_ERROR ("A00505","工程数据数据缺失"), + ELEEPDPQD_DATA_ERROR ("A00505","统计指标据数据缺失"), ; diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java index 3e5d68d..8b56d89 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEngineeringPO.java @@ -37,7 +37,7 @@ public class CsEngineeringPO extends BaseEntity { /** * 用户id */ - @TableField(value = "user_id") + @TableField(exist =false) private String userId; /** diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java index fab1bb8..3c3d4a8 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEngineeringServiceImpl.java @@ -1,16 +1,19 @@ package com.njcn.csdevice.service.impl; +import cn.hutool.core.collection.CollectionUtil; 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.csdevice.mapper.CsEngineeringMapper; +import com.njcn.csdevice.mapper.CsEngineeringUserMapper; import com.njcn.csdevice.mapper.CsLedgerMapper; import com.njcn.csdevice.pojo.param.CsEngineeringAddParm; import com.njcn.csdevice.pojo.param.CsEngineeringAuditParm; import com.njcn.csdevice.pojo.param.CsEngineeringQueryPageParm; import com.njcn.csdevice.pojo.param.CsEngineeringQueryParm; import com.njcn.csdevice.pojo.po.CsEngineeringPO; +import com.njcn.csdevice.pojo.po.CsEngineeringUserPO; import com.njcn.csdevice.pojo.po.CsLedger; import com.njcn.csdevice.pojo.vo.CsEngineeringVO; import com.njcn.csdevice.service.CsEngineeringService; @@ -45,6 +48,12 @@ public class CsEngineeringServiceImpl extends ServiceImpl queryEngineering(CsEngineeringQueryParm csEngineeringQueryParm) { List csEngineeringVOList = new ArrayList<> (); QueryWrapper queryWrapper = new QueryWrapper<> (); - queryWrapper.eq (StringUtils.isNotBlank (csEngineeringQueryParm.getUserId ()),"user_id",csEngineeringQueryParm.getUserId ()). - eq (StringUtils.isNotBlank (csEngineeringQueryParm.getProvince ()),"province",csEngineeringQueryParm.getProvince ()). + if(StringUtils.isNotBlank (csEngineeringQueryParm.getUserId ())){ + QueryWrapper csEngineeringUserPOQueryWrapper = new QueryWrapper<> (); + csEngineeringUserPOQueryWrapper.lambda().eq(CsEngineeringUserPO::getUserId,csEngineeringQueryParm.getUserId ()); + List csEngineeringUserPOS = csEngineeringUserMapper.selectList(csEngineeringUserPOQueryWrapper); + List collect = csEngineeringUserPOS.stream().map(CsEngineeringUserPO::getEngineeringId).collect(Collectors.toList()); + if(CollectionUtil.isEmpty(collect)){ + return csEngineeringVOList; + } + queryWrapper.in("id",collect); + } + queryWrapper.eq (StringUtils.isNotBlank (csEngineeringQueryParm.getProvince ()),"province",csEngineeringQueryParm.getProvince ()). eq (StringUtils.isNotBlank (csEngineeringQueryParm.getCity ()),"city",csEngineeringQueryParm.getCity ()). eq ("status","1" ). like (StringUtils.isNotBlank (csEngineeringQueryParm.getName ()),"name",csEngineeringQueryParm.getName ()).orderByDesc("create_time"); @@ -115,8 +138,17 @@ public class CsEngineeringServiceImpl extends ServiceImpl returnPage = new Page<> (csEngineeringQueryPageParm.getPageNum ( ), csEngineeringQueryPageParm.getPageSize ( )); QueryWrapper queryWrapper = new QueryWrapper<> (); - queryWrapper.eq (StringUtils.isNotBlank (csEngineeringQueryPageParm.getUserId ()),"user_id",csEngineeringQueryPageParm.getUserId ()). - eq (StringUtils.isNotBlank (csEngineeringQueryPageParm.getProvince ()),"province",csEngineeringQueryPageParm.getProvince ()). + if(StringUtils.isNotBlank (csEngineeringQueryPageParm.getUserId ())){ + QueryWrapper csEngineeringUserPOQueryWrapper = new QueryWrapper<> (); + csEngineeringUserPOQueryWrapper.lambda().eq(CsEngineeringUserPO::getUserId,csEngineeringQueryPageParm.getUserId ()); + List csEngineeringUserPOS = csEngineeringUserMapper.selectList(csEngineeringUserPOQueryWrapper); + List collect = csEngineeringUserPOS.stream().map(CsEngineeringUserPO::getEngineeringId).collect(Collectors.toList()); + if(CollectionUtil.isEmpty(collect)){ + return returnPage; + } + queryWrapper.in("id",collect); + } + queryWrapper.eq (StringUtils.isNotBlank (csEngineeringQueryPageParm.getProvince ()),"province",csEngineeringQueryPageParm.getProvince ()). eq (StringUtils.isNotBlank (csEngineeringQueryPageParm.getCity ()),"city",csEngineeringQueryPageParm.getCity ()). eq ("status","1" ). like (StringUtils.isNotBlank (csEngineeringQueryPageParm.getName ()),"name",csEngineeringQueryPageParm.getName ()).orderByDesc("create_time"); 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 new file mode 100644 index 0000000..6d6cc14 --- /dev/null +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/param/CommonStatisticalQueryParam.java @@ -0,0 +1,37 @@ +package com.njcn.csharmonic.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * Description: + * Date: 2023/6/14 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class CommonStatisticalQueryParam { + @ApiModelProperty(value = "设备id") + @NotBlank(message="设备id不能为空") + private String DevId; + @ApiModelProperty(value = "指标id") + @NotBlank(message="指标id不能为空") + private String statisticalId; + @ApiModelProperty(value = "取值类型(Max,Min,cp95,avg)") + private String valueType; + @ApiModelProperty(value = "频次20-50") + private String frequency; + + @ApiModelProperty(value = "开始时间") + private String startTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + + + +} 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 311fd13..cc06393 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 @@ -18,11 +18,11 @@ public class ThdDataVO { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime time; - private String LineId; + private String lineId; private String position; - private String Phase; - private String StatMethod; + private String phase; + private String statMethod; private String statisticalIndex; private String statisticalName; diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/StableDataController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/StableDataController.java index 87dfe3c..2831b6d 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/StableDataController.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/StableDataController.java @@ -5,7 +5,9 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csharmonic.param.CommonStatisticalQueryParam; import com.njcn.csharmonic.service.StableDataService; +import com.njcn.influx.pojo.dto.StatisticalDataDTO; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -36,6 +38,7 @@ public class StableDataController extends BaseController { private final StableDataService stableDataService; + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/queryFisrtThdData") @ApiOperation("查询谐波畸变率实时数据") @@ -83,4 +86,21 @@ public class StableDataController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryFisrtCommonStatistical") + @ApiOperation("查询实时数据") + public HttpResult> queryFisrtCommonStatistical(@RequestBody CommonStatisticalQueryParam commonStatisticalQueryParam) { + String methodDescribe = getMethodDescribe("queryFisrtCommonStatistical"); + List result = stableDataService.queryFisrtCommonStatistical(commonStatisticalQueryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/queryCommonStatisticalByTime") + @ApiOperation("查询时间段实时数据") + public HttpResult> queryCommonStatisticalByTime(@RequestBody CommonStatisticalQueryParam commonStatisticalQueryParam) { + String methodDescribe = getMethodDescribe("queryFisrtCommonStatistical"); + List result = stableDataService.queryCommonStatisticalByTime(commonStatisticalQueryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } \ No newline at end of file diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/StableDataService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/StableDataService.java index a3ded67..161cb82 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/StableDataService.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/StableDataService.java @@ -2,8 +2,10 @@ package com.njcn.csharmonic.service; +import com.njcn.csharmonic.param.CommonStatisticalQueryParam; import com.njcn.csharmonic.param.ThdDataQueryParm; import com.njcn.csharmonic.pojo.vo.ThdDataVO; +import com.njcn.influx.pojo.dto.StatisticalDataDTO; import java.util.List; @@ -28,4 +30,8 @@ public interface StableDataService { List queryFisrtThdContent(String devId, String statisticalName); List queryThdContentByTime(ThdDataQueryParm thdDataQueryParm); + + List queryFisrtCommonStatistical(CommonStatisticalQueryParam commonStatisticalQueryParam); + + List queryCommonStatisticalByTime(CommonStatisticalQueryParam commonStatisticalQueryParam); } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StableDataServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StableDataServiceImpl.java index 63eb8df..2d6e801 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StableDataServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/StableDataServiceImpl.java @@ -1,12 +1,18 @@ package com.njcn.csharmonic.service.impl; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csdevice.api.CsLedgerFeignClient; 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.param.CommonStatisticalQueryParam; import com.njcn.csharmonic.service.StableDataService; +import com.njcn.influx.pojo.dto.StatisticalDataDTO; +import com.njcn.influx.service.CommonService; +import com.njcn.system.api.EpdFeignClient; +import com.njcn.system.pojo.po.EleEpdPqd; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -16,6 +22,9 @@ 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.math.BigDecimal; +import java.math.RoundingMode; import java.time.ZoneId; import java.util.ArrayList; import java.util.List; @@ -37,6 +46,9 @@ public class StableDataServiceImpl implements StableDataService { private final CsLineFeignClient csLineFeignClient; private final PowerQualityService powerQualityService; private final HaronicRatioService harmonicRatioService; + private final CsLedgerFeignClient csLedgerFeignClient; + private final EpdFeignClient epdFeignClient; + private final CommonService commonService; @Override public List queryThdData(String devId, String statisticalName) { @@ -140,4 +152,61 @@ public class StableDataServiceImpl implements StableDataService { return thdDataVOList; } + @Override + public List queryFisrtCommonStatistical(CommonStatisticalQueryParam commonStatisticalQueryParam) { + + List csLinePOList = csLineFeignClient.queryLineByDevId(commonStatisticalQueryParam.getDevId()).getData(); + Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR)); + List collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList()); + + + EleEpdPqd data = epdFeignClient.selectById(commonStatisticalQueryParam.getStatisticalId()).getData(); + Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.ELEEPDPQD_DATA_ERROR)); + String frequency = Optional.ofNullable(commonStatisticalQueryParam.getFrequency()).orElse(""); + + List deviceRtData = commonService.getDeviceRtData(collect, data.getClassId(), data.getName()+frequency, data.getPhase(), commonStatisticalQueryParam.getValueType()); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(BigDecimal.valueOf(temp.getValue()).setScale(4, RoundingMode.UP).doubleValue()); + vo.setStatisticalIndex(data.getId()); + return vo; + }).collect(Collectors.toList()); + + return collect1; + } + + @Override + public List queryCommonStatisticalByTime(CommonStatisticalQueryParam commonStatisticalQueryParam) { + List csLinePOList = csLineFeignClient.queryLineByDevId(commonStatisticalQueryParam.getDevId()).getData(); + Optional.ofNullable(csLinePOList).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.LINE_DATA_ERROR)); + List collect = csLinePOList.stream().map(CsLinePO::getLineId).collect(Collectors.toList()); + + + EleEpdPqd data = epdFeignClient.selectById(commonStatisticalQueryParam.getStatisticalId()).getData(); + List csLinePOList1 = Optional.ofNullable(csLinePOList).orElseThrow(() -> new BusinessException(AlgorithmResponseEnum.ELEEPDPQD_DATA_ERROR)); + + String frequency = Optional.ofNullable(commonStatisticalQueryParam.getFrequency()).orElse(""); + List deviceRtData = commonService.getDeviceRtDataByTime(collect, data.getClassId(), data.getName()+frequency, data.getPhase(), commonStatisticalQueryParam.getValueType(),commonStatisticalQueryParam.getStartTime(),commonStatisticalQueryParam.getEndTime()); + List collect1 = deviceRtData.stream().map(temp -> { + ThdDataVO vo = new ThdDataVO(); + vo.setLineId(temp.getLineId()); + vo.setPhase(temp.getPhaseType()); + String position = csLinePOList.stream().filter(csLinePO -> Objects.equals(csLinePO.getLineId(), vo.getLineId())).collect(Collectors.toList()).get(0).getPosition(); + vo.setPosition(position); + vo.setTime(temp.getTime().atZone(ZoneId.systemDefault()).toLocalDateTime()); + vo.setStatMethod(temp.getValueType()); + vo.setStatisticalData(BigDecimal.valueOf(temp.getValue()).setScale(4, RoundingMode.UP).doubleValue()); + vo.setStatisticalIndex(data.getId()); + return vo; + }).collect(Collectors.toList()); + + return collect1; + } + }