From 5afb86046743122fd6e76724aa0fd442e2a9653f Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Fri, 5 Dec 2025 15:26:45 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=BC=82=E5=B8=B8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=87=8F=E7=AE=97=E6=B3=95=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=A8=B3=E6=80=81=E5=BC=82=E5=B8=B8=E6=95=B0=E6=8D=AE=E6=A0=87?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../line/DataCleanServiceImpl.java | 77 ++++++++++++++++++- .../api/PqDataVerifyCountFeignClient.java | 28 +++++++ ...VerifyCountFeignClientFallbackFactory.java | 54 +++++++++++++ .../pojo/po/PqDataVerifyCount.java | 68 ++++++++++++++++ .../PqDataVerifyCountController.java | 58 ++++++++++++++ .../mapper/PqDataVerifyCountMapper.java | 16 ++++ .../service/IPqDataVerifyCountService.java | 28 +++++++ .../PqDataVerifyCountServiceImpl.java | 34 ++++++++ 8 files changed, 362 insertions(+), 1 deletion(-) create mode 100644 data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/PqDataVerifyCountFeignClient.java create mode 100644 data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/PqDataVerifyCountFeignClientFallbackFactory.java create mode 100644 data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/PqDataVerifyCount.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/PqDataVerifyCountController.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/PqDataVerifyCountMapper.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IPqDataVerifyCountService.java create mode 100644 data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyCountServiceImpl.java diff --git a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java index dc055d5..afc8c75 100644 --- a/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java +++ b/algorithm/algorithm-boot/src/main/java/com/njcn/algorithm/serviceimpl/line/DataCleanServiceImpl.java @@ -18,6 +18,7 @@ import com.njcn.dataProcess.param.LineCountEvaluateParam; import com.njcn.dataProcess.pojo.dto.*; import com.njcn.dataProcess.pojo.po.PqDataVerify; import com.njcn.dataProcess.pojo.po.PqDataVerifyBak; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; import com.njcn.dataProcess.util.DataCommonUtils; import com.njcn.dataProcess.util.TimeUtils; import com.njcn.device.pq.api.LineFeignClient; @@ -100,6 +101,8 @@ public class DataCleanServiceImpl implements IDataCleanService { @Resource private PqDataVerifyNewFeignClient pqDataVerifyNewFeignClient; @Resource + private PqDataVerifyCountFeignClient pqDataVerifyCountFeignClient; + @Resource private FileStorageUtil fileStorageUtil; @Override @@ -538,7 +541,79 @@ public class DataCleanServiceImpl implements IDataCleanService { } if (CollUtil.isNotEmpty(allTimeSet)) { - Map dtoMap = new HashMap<>(); + PqDataVerifyCount verifyCount = new PqDataVerifyCount(); + verifyCount.setLineId(item.getLineId()); + verifyCount.setTime(LocalDate.parse(calculatedParam.getDataDate(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))); + verifyCount.setTotalAll(data1.size()); + verifyCount.setFlickerAll(data9.size()); + + List dataV = data1.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataV)) { + verifyCount.setTotal(dataV.size()); + dataV.forEach(item1-> item1.setAbnormalFlag(1)); + dataVFeignClient.addInfluxDbList(dataV); + } + List dataI = data2.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataI)) { + dataI.forEach(item1-> item1.setAbnormalFlag(1)); + dataIFeignClient.addInfluxDbList(dataI); + } + List dataPlt = data3.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataPlt)) { + dataPlt.forEach(item1-> item1.setAbnormalFlag(1)); + dataPltFeignClient.addInfluxDbList(dataPlt); + } + List dataInHarmV = data4.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataInHarmV)) { + dataInHarmV.forEach(item1-> item1.setAbnormalFlag(1)); + dataInharmVFeignClient.addInfluxDbList(dataInHarmV); + } + List dataHarmRateV = data5.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataHarmRateV)) { + dataHarmRateV.forEach(item1-> item1.setAbnormalFlag(1)); + dataHarmRateVFeignClient.addInfluxDbList(dataHarmRateV); + } + List dataHarmPowerP = data6.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataHarmPowerP)) { + dataHarmPowerP.forEach(item1-> item1.setAbnormalFlag(1)); + dataHarmpowerPFeignClient.addInfluxDbList(dataHarmPowerP); + } + List dataHarmPhasicV = data7.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataHarmPhasicV)) { + dataHarmPhasicV.forEach(item1-> item1.setAbnormalFlag(1)); + dataHarmphasicVFeignClient.addInfluxDbList(dataHarmPhasicV); + } + List dataFluc = data8.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataFluc)) { + dataFluc.forEach(item1-> item1.setAbnormalFlag(1)); + dataFlucFeignClient.addInfluxDbList(dataFluc); + } + List dataFlicker = data9.stream() + .filter(item1 -> allTimeSet.contains(item1.getMinTime().substring(11, 19))) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(dataFlicker)) { + verifyCount.setFlicker(dataFlicker.size()); + dataFlicker.forEach(item1-> item1.setAbnormalFlag(1)); + dataFlickerFeignClient.addInfluxDbList(dataFlicker); + } + pqDataVerifyCountFeignClient.insertData(verifyCount); + Map dtoMap = new HashMap<>(1); dtoMap.put("lineErrorTimes",allTimeSet.size() * item.getTimeInterval()); resultData.add(dtoMap); } diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/PqDataVerifyCountFeignClient.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/PqDataVerifyCountFeignClient.java new file mode 100644 index 0000000..f7ee635 --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/PqDataVerifyCountFeignClient.java @@ -0,0 +1,28 @@ +package com.njcn.dataProcess.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.dataProcess.api.fallback.PqDataVerifyNewFeignClientFallbackFactory; +import com.njcn.dataProcess.pojo.po.PqDataVerifyBak; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @author xy + * @version 1.0.0 + * @date 2025年02月13日 20:11 + */ +@FeignClient(value = ServerInfo.PLATFORM_DATA_PROCESSING_BOOT, path = "/pqDataVerifyCount", fallbackFactory = PqDataVerifyNewFeignClientFallbackFactory.class, contextId = "pqDataVerifyNew") +public interface PqDataVerifyCountFeignClient { + + @PostMapping("/insertDataBatch") + HttpResult> insertDataBatch(@RequestBody List list); + + @PostMapping("/insertData") + HttpResult> insertData(@RequestBody PqDataVerifyCount pqDataVerifyCount); + +} diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/PqDataVerifyCountFeignClientFallbackFactory.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/PqDataVerifyCountFeignClientFallbackFactory.java new file mode 100644 index 0000000..d7f7797 --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/api/fallback/PqDataVerifyCountFeignClientFallbackFactory.java @@ -0,0 +1,54 @@ +package com.njcn.dataProcess.api.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.dataProcess.api.PqDataVerifyCountFeignClient; +import com.njcn.dataProcess.api.PqDataVerifyNewFeignClient; +import com.njcn.dataProcess.pojo.po.PqDataVerifyBak; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; +import com.njcn.dataProcess.util.DataProcessingEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author xy + * @version 1.0.0 + * @date 2025年02月13日 20:13 + */ +@Slf4j +@Component +public class PqDataVerifyCountFeignClientFallbackFactory implements FallbackFactory { + + /** + * 输出远程请求接口异常日志 + * @param cause RPC请求异常 + */ + @Override + public PqDataVerifyCountFeignClient create(Throwable cause) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if(cause.getCause() instanceof BusinessException){ + BusinessException businessException = (BusinessException) cause.getCause(); + exceptionEnum = DataProcessingEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new PqDataVerifyCountFeignClient() { + + @Override + public HttpResult> insertDataBatch(List list) { + log.error("{}异常,降级处理,异常为:{}","批量存储清洗的异常数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult> insertData(PqDataVerifyCount pqDataVerifyCount) { + log.error("{}异常,降级处理,异常为:{}","单监测点存储清洗的异常数据",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/PqDataVerifyCount.java b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/PqDataVerifyCount.java new file mode 100644 index 0000000..9577efb --- /dev/null +++ b/data-processing/data-processing-api/src/main/java/com/njcn/dataProcess/pojo/po/PqDataVerifyCount.java @@ -0,0 +1,68 @@ +package com.njcn.dataProcess.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.time.LocalDate; + +/** + *

+ * + *

+ * + * @author xy + * @since 2025-02-17 + */ +@Getter +@Setter +@TableName("pq_data_verify_count") +public class PqDataVerifyCount implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 监测点id + */ + @MppMultiId + @TableField(value = "line_id") + private String lineId; + + /** + * 数据时间 + */ + @MppMultiId + @TableField(value = "time_id") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDate time; + + /** + * 异常指标数量 + */ + @TableField(value = "total") + private Integer total = 0; + + /** + * 总指标数量 + */ + @TableField(value = "total_all") + private Integer totalAll = 0; + + /** + * 异常短时闪变数量 + */ + @TableField(value = "flicker") + private Integer flicker = 0; + + /** + * 短时闪变总数量 + */ + @TableField(value = "flicker_all") + private Integer flickerAll = 0; + + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/PqDataVerifyCountController.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/PqDataVerifyCountController.java new file mode 100644 index 0000000..c051a94 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/controller/PqDataVerifyCountController.java @@ -0,0 +1,58 @@ +package com.njcn.dataProcess.controller; + + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.OperateType; +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.dataProcess.pojo.po.PqDataVerifyBak; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; +import com.njcn.dataProcess.service.IPqDataVerifyCountService; +import com.njcn.dataProcess.service.IPqDataVerifyNewService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author xy + * @since 2025-02-17 + */ +@RestController +@RequestMapping("/pqDataVerifyCount") +public class PqDataVerifyCountController extends BaseController { + + @Resource + private IPqDataVerifyCountService pqDataVerifyNewService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD) + @PostMapping("/insertDataBatch") + @ApiOperation("存储清洗的异常数据数量") + public HttpResult> insertDataBatch(@RequestBody List list) { + String methodDescribe = getMethodDescribe("insertDataBatch"); + pqDataVerifyNewService.insertDataBatch(list); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD) + @PostMapping("/insertData") + @ApiOperation("存储清洗的异常数据数量") + public HttpResult> insertData(@RequestBody PqDataVerifyCount pqDataVerifyCount) { + String methodDescribe = getMethodDescribe("insertData"); + pqDataVerifyNewService.insertData(pqDataVerifyCount); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + +} + diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/PqDataVerifyCountMapper.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/PqDataVerifyCountMapper.java new file mode 100644 index 0000000..07556a0 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/dao/relation/mapper/PqDataVerifyCountMapper.java @@ -0,0 +1,16 @@ +package com.njcn.dataProcess.dao.relation.mapper; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xy + * @since 2025-02-17 + */ +public interface PqDataVerifyCountMapper extends MppBaseMapper { + +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IPqDataVerifyCountService.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IPqDataVerifyCountService.java new file mode 100644 index 0000000..100a057 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/IPqDataVerifyCountService.java @@ -0,0 +1,28 @@ +package com.njcn.dataProcess.service; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author xy + * @since 2025-02-17 + */ +public interface IPqDataVerifyCountService extends IMppService { + + /** + * 异常数据插入 + * @param list + */ + void insertDataBatch(List list); + + /** + * 异常数据插入 + */ + void insertData(PqDataVerifyCount pqDataVerifyCount); +} diff --git a/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyCountServiceImpl.java b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyCountServiceImpl.java new file mode 100644 index 0000000..4bda847 --- /dev/null +++ b/data-processing/data-processing-boot/src/main/java/com/njcn/dataProcess/service/impl/relation/PqDataVerifyCountServiceImpl.java @@ -0,0 +1,34 @@ +package com.njcn.dataProcess.service.impl.relation; + +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.dataProcess.dao.relation.mapper.PqDataVerifyCountMapper; +import com.njcn.dataProcess.dao.relation.mapper.PqDataVerifyNewMapper; +import com.njcn.dataProcess.pojo.po.PqDataVerifyBak; +import com.njcn.dataProcess.pojo.po.PqDataVerifyCount; +import com.njcn.dataProcess.service.IPqDataVerifyCountService; +import com.njcn.dataProcess.service.IPqDataVerifyNewService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author xy + * @since 2025-02-17 + */ +@Service +public class PqDataVerifyCountServiceImpl extends MppServiceImpl implements IPqDataVerifyCountService { + + @Override + public void insertDataBatch(List list) { + this.saveOrUpdateBatchByMultiId(list,1000); + } + + @Override + public void insertData(PqDataVerifyCount pqDataVerifyCount) { + this.saveOrUpdateByMultiId(pqDataVerifyCount); + } +}