diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/TraceVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/TraceVO.java new file mode 100644 index 000000000..c82ed6d49 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/TraceVO.java @@ -0,0 +1,28 @@ +package com.njcn.harmonic.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/1/5 14:45 + */ +@Data +public class TraceVO { + + @ApiModelProperty("谐波电流次数") + private Integer harmonicTimes; + + @ApiModelProperty("A相谐波电流方向(数值小于0-流出、大于0-流入、等于0-无方向)") + private Double harmonicA; + + @ApiModelProperty("B相谐波电流方向(数值小于0-流出、大于0-流入、等于0-无方向)") + private Double harmonicB; + + @ApiModelProperty("C相谐波电流方向(数值小于0-流出、大于0-流入、等于0-无方向)") + private Double harmonicC; + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HarmonicTraceController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HarmonicTraceController.java new file mode 100644 index 000000000..c93b94656 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/HarmonicTraceController.java @@ -0,0 +1,56 @@ +package com.njcn.harmonic.controller; + +import com.njcn.common.pojo.annotation.OperateInfo; +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.harmonic.pojo.vo.TraceVO; +import com.njcn.harmonic.service.IHarmonicTraceService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 类的介绍:谐波电流溯源(谐波源定位) + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/1/5 14:37 + */ +@Validated +@Slf4j +@RestController +@RequestMapping("/harmonicCurrent") +@Api(tags = "谐波源定位") +@AllArgsConstructor +public class HarmonicTraceController extends BaseController { + private final IHarmonicTraceService harmonicTraceService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/trace") + @ApiOperation("谐波电流溯源") + @ApiImplicitParams({ + @ApiImplicitParam(name = "lineId", value = "监测点id", required = true), + @ApiImplicitParam(name = "time", value = "时间", required = true) + }) + public HttpResult> getTraceData(@RequestParam("lineId") String lineId,@RequestParam("time") String time) { + String methodDescribe = getMethodDescribe("getTraceData"); + List list = harmonicTraceService.getTraceData(lineId,time); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java index ebac77074..34ee145bf 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/NormLimitController.java @@ -52,7 +52,7 @@ public class NormLimitController extends BaseController { @ApiOperation("告警数据统计") @ApiImplicitParam(name = "historyHarmOverLimitParam", value = "异常数据统计参数", required = true) public HttpResult> getHistoryData(@RequestBody @Validated HistoryHarmOverLimitParam historyHarmOverLimitParam) { - String methodDescribe = getMethodDescribe("getHistoryTableData"); + String methodDescribe = getMethodDescribe("getHistoryData"); List list = normLimitService.getHistoryData(historyHarmOverLimitParam,1); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataHarmpowerPDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataHarmpowerPDMapper.java new file mode 100644 index 000000000..94b9baeb8 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatDataHarmpowerPDMapper.java @@ -0,0 +1,7 @@ +package com.njcn.harmonic.mapper; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.day.RStatDataHarmpowerPDPO; + +public interface RStatDataHarmpowerPDMapper extends MppBaseMapper { +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IHarmonicTraceService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IHarmonicTraceService.java new file mode 100644 index 000000000..06f984f9b --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/IHarmonicTraceService.java @@ -0,0 +1,20 @@ +package com.njcn.harmonic.service; + +import com.njcn.harmonic.pojo.vo.TraceVO; + +import java.util.List; + +/** + * @author xuyang + */ +public interface IHarmonicTraceService { + + /** + * 根据监测点id实现谐波电流溯源 + * @param lineId 监测点id + * @param time 时间 + * @return 谐波电流各次数方向 + */ + List getTraceData(String lineId,String time); + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicTraceServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicTraceServiceImpl.java new file mode 100644 index 000000000..91237e5d5 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/HarmonicTraceServiceImpl.java @@ -0,0 +1,70 @@ +package com.njcn.harmonic.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.njcn.harmonic.mapper.RStatDataHarmpowerPDMapper; +import com.njcn.harmonic.pojo.po.day.RStatDataHarmpowerPDPO; +import com.njcn.harmonic.pojo.vo.TraceVO; +import com.njcn.harmonic.service.IHarmonicTraceService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/1/5 14:43 + */ +@Service +@AllArgsConstructor +public class HarmonicTraceServiceImpl implements IHarmonicTraceService { + + private final RStatDataHarmpowerPDMapper rStatDataHarmpowerPDMapper; + + @Override + public List getTraceData(String lineId, String time) { + List result = new ArrayList<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RStatDataHarmpowerPDPO::getTime, time) + .eq(RStatDataHarmpowerPDPO::getLineId, lineId) + .eq(RStatDataHarmpowerPDPO::getValueType, "AVG") + .in(RStatDataHarmpowerPDPO::getPhaseType, Arrays.asList("A","B","C")); + List list = rStatDataHarmpowerPDMapper.selectList(lambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(list)){ + Map> map = list.stream().collect(Collectors.groupingBy(RStatDataHarmpowerPDPO::getPhaseType)); + List aList = getDataByPhaseType(map,"A"); + List bList = getDataByPhaseType(map,"B"); + List cList = getDataByPhaseType(map,"C"); + for (int i = 0; i < 49; i++) { + TraceVO traceVO = new TraceVO(); + traceVO.setHarmonicTimes(i+2); + traceVO.setHarmonicA(aList.get(i)); + traceVO.setHarmonicB(bList.get(i)); + traceVO.setHarmonicC(cList.get(i)); + result.add(traceVO); + } + } + return result; + } + + public List getDataByPhaseType(Map> map, String phaseType) { + RStatDataHarmpowerPDPO po = map.get(phaseType).get(0); + return Arrays.asList(po.getP2(),po.getP3(),po.getP4(),po.getP5(),po.getP6(),po.getP7(),po.getP8(),po.getP9() + ,po.getP10(),po.getP11(),po.getP12(),po.getP13(),po.getP14(),po.getP15(),po.getP16(),po.getP17(),po.getP18(),po.getP19() + ,po.getP20(),po.getP21(),po.getP22(),po.getP23(),po.getP24(),po.getP25(),po.getP26(),po.getP27(),po.getP28(),po.getP29() + ,po.getP30(),po.getP31(),po.getP32(),po.getP33(),po.getP34(),po.getP35(),po.getP36(),po.getP37(),po.getP38(),po.getP39() + ,po.getP40(),po.getP41(),po.getP42(),po.getP43(),po.getP44(),po.getP45(),po.getP46(),po.getP47(),po.getP48(),po.getP49() + ,po.getP50()); + } + + +}