diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java
index 19ffe88..15a18cd 100644
--- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java
+++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/WordExportModelController.java
@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
-
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
@@ -217,6 +216,8 @@ public class WordExportModelController extends BaseController {
rtfPath = "file/reportModelNW.docx";
} else if (theme.getRemark().equals("灿能")) {
rtfPath = "file/reportModelCN.docx";
+ } else if (theme.getName().contains("物联")) {
+ rtfPath = "file/reportModelWL.docx";
} else {
rtfPath = "file/reportModel.docx";
}
@@ -493,6 +494,8 @@ public class WordExportModelController extends BaseController {
reportmap.put("$detpName$", areaName);
// 获取报告生成时间
Date currentTime = new Date();
+ // 报告日期格式
+ SimpleDateFormat dayFormatter = new SimpleDateFormat("yyyy年MM月dd日");
// 报告时分秒格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String strTime = String.format("%s——%s。",
@@ -503,7 +506,8 @@ public class WordExportModelController extends BaseController {
// 客户名称
reportmap.put("$titlePoint$", crmName);
// 报告生成时间
- reportmap.put("$TitleTime$", formatter.format(currentTime));
+ reportmap.put("$TitleTime$", dayFormatter.format(currentTime));
+
// 报告标题
reportmap.put("$ReportTitle$",
String.format("对该地区%s电能质量在线监测数据进行分析, 以判断电能质量指标是否满足国标。", new String[]{strLineBaseName}));
@@ -676,14 +680,14 @@ public class WordExportModelController extends BaseController {
tmpstrResultVdeviationdata += "、";
tmpstrResultVdeviationdata += tmpstrMap + "相";
}
-
+ Overlimit pojo = overLimitData.getOverLimitRate().get(0);
// 假如为空则所有的都满足
if ("".equals(tmpstrResultVdeviationdata)) {
- strResultVdeviationdata += "从上表中可以看出" + strLineBaseName + "A、B、C三相电压偏差满足国标限值(10%)的要求。";
+ strResultVdeviationdata += "从上表中可以看出" + strLineBaseName + "A、B、C三相电压偏差满足国标限值(上限"+pojo.getVoltageDev()+"%,下限"+pojo.getUvoltageDev()+"%)的要求。";
} else {
- strAnalysis += tmpstrResultVdeviationdata + "电压偏差不满足国标限值(10%)的要求。";
+ strAnalysis += tmpstrResultVdeviationdata + "电压偏差不满足国标限值(上限"+pojo.getVoltageDev()+"%,下限"+pojo.getUvoltageDev()+"%)的要求。";
strResultVdeviationdata += "从上表中可以看出" + strLineBaseName + tmpstrResultVdeviationdata
- + "电压偏差不满足国标限值(10%)的要求。";
+ + "电压偏差不满足国标限值(上限"+pojo.getVoltageDev()+"%,下限"+pojo.getUvoltageDev()+"%)的要求。";
}
reportmap.put("$ResultVdeviationdata$", strResultVdeviationdata);
diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/report/RStatDataHarmRateVDMapper.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/report/RStatDataHarmRateVDMapper.java
new file mode 100644
index 0000000..26601bc
--- /dev/null
+++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/report/RStatDataHarmRateVDMapper.java
@@ -0,0 +1,16 @@
+package com.njcn.csharmonic.mapper.report;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.njcn.csharmonic.pojo.po.day.RStatDataHarmrateVDPO;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author wr
+ * @since 2023-04-17
+ */
+public interface RStatDataHarmRateVDMapper extends BaseMapper {
+
+}
diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/ReportServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/ReportServiceImpl.java
index f904e71..32dcd83 100644
--- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/ReportServiceImpl.java
+++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/ReportServiceImpl.java
@@ -5,20 +5,16 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.njcn.csharmonic.mapper.report.RStatDataIDMapper;
-import com.njcn.csharmonic.mapper.report.RStatDataInharmVDMapper;
-import com.njcn.csharmonic.mapper.report.RStatDataVDPOMapper;
-import com.njcn.csharmonic.mapper.report.ReportMapper;
+import com.njcn.csharmonic.mapper.report.*;
import com.njcn.csharmonic.pojo.dto.report.OverLimitInfo;
import com.njcn.csharmonic.pojo.param.report.ReportQueryParam;
+import com.njcn.csharmonic.pojo.po.day.RStatDataHarmrateVDPO;
import com.njcn.csharmonic.pojo.po.day.RStatDataIDPO;
import com.njcn.csharmonic.pojo.po.day.RStatDataInharmVDPO;
import com.njcn.csharmonic.pojo.po.day.RStatDataVDPO;
import com.njcn.csharmonic.pojo.vo.report.ReportValue;
import com.njcn.csharmonic.service.ReportService;
import com.njcn.csharmonic.util.RegroupData;
-
-
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -37,6 +33,7 @@ public class ReportServiceImpl implements ReportService {
private final ReportMapper reportMapper;
private final RStatDataVDPOMapper rStatDataVDMapper;
+ private final RStatDataHarmRateVDMapper rStatDataHarmRateVDMapper;
private final RStatDataIDMapper rStatDataIDMapper;
private final RStatDataInharmVDMapper rStatDataInharmVDMapper;
@@ -225,7 +222,8 @@ public class ReportServiceImpl implements ReportService {
}
//获取电压含有率,不包含基波
- List listRate = dataV(param, Arrays.asList("A", "B", "C"), 2, 51, false, 1);
+// List listRate = dataV(param, Arrays.asList("A", "B", "C"), 2, 51, false, 1);
+ List listRate = dataHarmRateV(param, Arrays.asList("A", "B", "C"), 2, 51, false, 1);
if (CollUtil.isEmpty(listRate)) {
for (int i = 0; i < 49; i++) {
@@ -387,6 +385,66 @@ public class ReportServiceImpl implements ReportService {
return a;
}
+ //获取电压含有率应该取dataHarmRateV,不是dataV
+ private List dataHarmRateV(ReportQueryParam param, List valueTypes, Integer num, Integer size, Boolean fly, Integer index) {
+ List rStatDataVDS = rStatDataHarmRateVDMapper.selectList(new LambdaQueryWrapper()
+ .eq(RStatDataHarmrateVDPO::getLineId, param.getLineId())
+ .in(CollUtil.isNotEmpty(valueTypes), RStatDataHarmrateVDPO::getPhaseType, valueTypes)
+ .ge(StrUtil.isNotBlank(param.getStartTime()), RStatDataHarmrateVDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
+ .le(StrUtil.isNotBlank(param.getEndTime()), RStatDataHarmrateVDPO::getTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
+ );
+ String max = "MAX";
+ String avg = "AVG";
+ String min = "MIN";
+ String cp95 = "CP95";
+ List a = new ArrayList<>();
+ Map> collect = rStatDataVDS.stream().collect(Collectors.groupingBy(RStatDataHarmrateVDPO::getPhaseType));
+ collect.forEach((key, value) -> {
+ Map> valueTypeMap = value.stream().collect(Collectors.groupingBy(RStatDataHarmrateVDPO::getValueType));
+
+ for (int i = num; i < size; i++) {
+ ReportValue reportValue = new ReportValue();
+ String attribute = "";
+ if (fly) {
+ if (index == 0) {
+ attribute = attributeV(i);
+ } else {
+ attribute = attributeV(index);
+ }
+ } else {
+ attribute = "v" + i;
+ }
+
+ if (valueTypeMap.containsKey(max)) {
+ List aa = reflectDataHarmRateV(valueTypeMap.get(max), max, attribute);
+ reportValue.setPhaseType(key);
+ Float maxNum = aa.stream().distinct().max(Float::compareTo).get();
+ reportValue.setFmaxValue(maxNum);
+ }
+ if (valueTypeMap.containsKey(avg)) {
+ List aa = reflectDataHarmRateV(valueTypeMap.get(avg), avg, attribute);
+ reportValue.setPhaseType(key);
+ Double avgNum = aa.stream().distinct().collect(Collectors.averagingDouble(Float::doubleValue));
+ reportValue.setMeanValue(avgNum.floatValue());
+ }
+ if (valueTypeMap.containsKey(min)) {
+ List aa = reflectDataHarmRateV(valueTypeMap.get(min), min, attribute);
+ reportValue.setPhaseType(key);
+ double minNum = aa.stream().distinct().min(Float::compareTo).get();
+ reportValue.setMinValue((float) minNum);
+ }
+ if (valueTypeMap.containsKey(cp95)) {
+ List aa = reflectDataHarmRateV(valueTypeMap.get(cp95), cp95, attribute);
+ reportValue.setPhaseType(key);
+ List cp95Num = aa.stream().distinct().sorted(Comparator.comparing(Float::doubleValue).reversed()).collect(Collectors.toList());
+ reportValue.setCp95Value(cp95Num.get(0).floatValue());
+ }
+ a.add(reportValue);
+ }
+ });
+ return a;
+ }
+
/**
* 电压反射取属性值
*
@@ -416,6 +474,28 @@ public class ReportServiceImpl implements ReportService {
}).collect(Collectors.toList());
}
+ private List reflectDataHarmRateV(List value, String name, String attribute) {
+ Field field = null;
+ try {
+ field = RStatDataHarmrateVDPO.class.getDeclaredField(attribute);
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException(e);
+ }
+ field.setAccessible(true);
+
+ Field finalField = field;
+ return value.stream().filter(x -> x.getValueType().equals(name)).map(temp -> {
+ BigDecimal o = null;
+ try {
+ o = BigDecimal.valueOf((Double) finalField.get(temp));
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+
+ return o.floatValue();
+ }).collect(Collectors.toList());
+ }
+
/**
* 电压反射取属性值
*
diff --git a/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModel.docx b/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModel.docx
index f9aed02..10aeed8 100644
Binary files a/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModel.docx and b/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModel.docx differ
diff --git a/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModelWL.docx b/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModelWL.docx
new file mode 100644
index 0000000..d97102c
Binary files /dev/null and b/cs-harmonic/cs-harmonic-boot/src/main/resources/file/reportModelWL.docx differ