|
|
@@ -0,0 +1,545 @@
|
|
|
+package com.ufo.project.data.domain.vo;
|
|
|
+
|
|
|
+import java.io.Serializable;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import com.ufo.base.framework.aspectj.lang.annotation.Excel;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 日功率频率分布统计视图对象
|
|
|
+ * <p>每个区间包含条数(Num)、占比(Percent,%)与组合展示文本(Text,形如 18(29.51%),用于Excel导出列)。</p>
|
|
|
+ *
|
|
|
+ * @author ufo
|
|
|
+ * @date 2026-10-22
|
|
|
+ */
|
|
|
+public class PowerFrequencyDistributionVO implements Serializable
|
|
|
+{
|
|
|
+ private static final long serialVersionUID = 1L;
|
|
|
+
|
|
|
+ /** 日期 yyyy-MM-dd */
|
|
|
+ @Excel(name = "时间")
|
|
|
+ private String day;
|
|
|
+
|
|
|
+ /** 数据总条数 */
|
|
|
+ @Excel(name = "数据总条数")
|
|
|
+ private int totalRecord;
|
|
|
+
|
|
|
+ /** [0,2)MW 条数 */
|
|
|
+ private int lt2Num;
|
|
|
+
|
|
|
+ /** [0,2)MW 占比(%) */
|
|
|
+ private BigDecimal lt2Percent;
|
|
|
+
|
|
|
+ /** [0,2)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[0-2)MW")
|
|
|
+ private String lt2Text;
|
|
|
+
|
|
|
+ /** [2,4)MW 条数 */
|
|
|
+ private int lt4Num;
|
|
|
+
|
|
|
+ /** [2,4)MW 占比(%) */
|
|
|
+ private BigDecimal lt4Percent;
|
|
|
+
|
|
|
+ /** [2,4)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[2-4)MW")
|
|
|
+ private String lt4Text;
|
|
|
+
|
|
|
+ /** [4,6)MW 条数 */
|
|
|
+ private int lt6Num;
|
|
|
+
|
|
|
+ /** [4,6)MW 占比(%) */
|
|
|
+ private BigDecimal lt6Percent;
|
|
|
+
|
|
|
+ /** [4,6)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[4-6)MW")
|
|
|
+ private String lt6Text;
|
|
|
+
|
|
|
+ /** [6,8)MW 条数 */
|
|
|
+ private int lt8Num;
|
|
|
+
|
|
|
+ /** [6,8)MW 占比(%) */
|
|
|
+ private BigDecimal lt8Percent;
|
|
|
+
|
|
|
+ /** [6,8)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[6-8)MW")
|
|
|
+ private String lt8Text;
|
|
|
+
|
|
|
+ /** [8,10)MW 条数 */
|
|
|
+ private int lt10Num;
|
|
|
+
|
|
|
+ /** [8,10)MW 占比(%) */
|
|
|
+ private BigDecimal lt10Percent;
|
|
|
+
|
|
|
+ /** [8,10)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[8-10)MW")
|
|
|
+ private String lt10Text;
|
|
|
+
|
|
|
+ /** [10,12)MW 条数 */
|
|
|
+ private int lt12Num;
|
|
|
+
|
|
|
+ /** [10,12)MW 占比(%) */
|
|
|
+ private BigDecimal lt12Percent;
|
|
|
+
|
|
|
+ /** [10,12)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[10-12)MW")
|
|
|
+ private String lt12Text;
|
|
|
+
|
|
|
+ /** [12,14)MW 条数 */
|
|
|
+ private int lt14Num;
|
|
|
+
|
|
|
+ /** [12,14)MW 占比(%) */
|
|
|
+ private BigDecimal lt14Percent;
|
|
|
+
|
|
|
+ /** [12,14)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[12-14)MW")
|
|
|
+ private String lt14Text;
|
|
|
+
|
|
|
+ /** [14,16)MW 条数 */
|
|
|
+ private int lt16Num;
|
|
|
+
|
|
|
+ /** [14,16)MW 占比(%) */
|
|
|
+ private BigDecimal lt16Percent;
|
|
|
+
|
|
|
+ /** [14,16)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[14-16)MW")
|
|
|
+ private String lt16Text;
|
|
|
+
|
|
|
+ /** [16,18)MW 条数 */
|
|
|
+ private int lt18Num;
|
|
|
+
|
|
|
+ /** [16,18)MW 占比(%) */
|
|
|
+ private BigDecimal lt18Percent;
|
|
|
+
|
|
|
+ /** [16,18)MW 组合展示文本 */
|
|
|
+ @Excel(name = "[16-18)MW")
|
|
|
+ private String lt18Text;
|
|
|
+
|
|
|
+ /** [18,+∞)MW 条数 */
|
|
|
+ private int ge18Num;
|
|
|
+
|
|
|
+ /** [18,+∞)MW 占比(%) */
|
|
|
+ private BigDecimal ge18Percent;
|
|
|
+
|
|
|
+ /** [18,+∞)MW 组合展示文本 */
|
|
|
+ @Excel(name = "≥18MW")
|
|
|
+ private String ge18Text;
|
|
|
+
|
|
|
+ public PowerFrequencyDistributionVO()
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ public PowerFrequencyDistributionVO(String day)
|
|
|
+ {
|
|
|
+ this.day = day;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按功率值(MW)累加到对应区间,负值计入 [0,2)MW 区间
|
|
|
+ */
|
|
|
+ public void bump(double mw)
|
|
|
+ {
|
|
|
+ totalRecord++;
|
|
|
+ if (mw < 2)
|
|
|
+ {
|
|
|
+ lt2Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 4)
|
|
|
+ {
|
|
|
+ lt4Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 6)
|
|
|
+ {
|
|
|
+ lt6Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 8)
|
|
|
+ {
|
|
|
+ lt8Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 10)
|
|
|
+ {
|
|
|
+ lt10Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 12)
|
|
|
+ {
|
|
|
+ lt12Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 14)
|
|
|
+ {
|
|
|
+ lt14Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 16)
|
|
|
+ {
|
|
|
+ lt16Num++;
|
|
|
+ }
|
|
|
+ else if (mw < 18)
|
|
|
+ {
|
|
|
+ lt18Num++;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ge18Num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算各区间占比(保留两位小数,四舍五入)与组合展示文本 num(percent%)
|
|
|
+ */
|
|
|
+ public void buildPercentAndText()
|
|
|
+ {
|
|
|
+ lt2Percent = percentOf(lt2Num);
|
|
|
+ lt2Text = buildText(lt2Num, lt2Percent);
|
|
|
+ lt4Percent = percentOf(lt4Num);
|
|
|
+ lt4Text = buildText(lt4Num, lt4Percent);
|
|
|
+ lt6Percent = percentOf(lt6Num);
|
|
|
+ lt6Text = buildText(lt6Num, lt6Percent);
|
|
|
+ lt8Percent = percentOf(lt8Num);
|
|
|
+ lt8Text = buildText(lt8Num, lt8Percent);
|
|
|
+ lt10Percent = percentOf(lt10Num);
|
|
|
+ lt10Text = buildText(lt10Num, lt10Percent);
|
|
|
+ lt12Percent = percentOf(lt12Num);
|
|
|
+ lt12Text = buildText(lt12Num, lt12Percent);
|
|
|
+ lt14Percent = percentOf(lt14Num);
|
|
|
+ lt14Text = buildText(lt14Num, lt14Percent);
|
|
|
+ lt16Percent = percentOf(lt16Num);
|
|
|
+ lt16Text = buildText(lt16Num, lt16Percent);
|
|
|
+ lt18Percent = percentOf(lt18Num);
|
|
|
+ lt18Text = buildText(lt18Num, lt18Percent);
|
|
|
+ ge18Percent = percentOf(ge18Num);
|
|
|
+ ge18Text = buildText(ge18Num, ge18Percent);
|
|
|
+ }
|
|
|
+
|
|
|
+ private BigDecimal percentOf(int num)
|
|
|
+ {
|
|
|
+ if (totalRecord == 0)
|
|
|
+ {
|
|
|
+ return new BigDecimal("0.00");
|
|
|
+ }
|
|
|
+ return BigDecimal.valueOf((long) num * 100L)
|
|
|
+ .divide(BigDecimal.valueOf(totalRecord), 2, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildText(int num, BigDecimal percent)
|
|
|
+ {
|
|
|
+ return num + "(" + percent.toPlainString() + "%)";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getDay()
|
|
|
+ {
|
|
|
+ return day;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setDay(String day)
|
|
|
+ {
|
|
|
+ this.day = day;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getTotalRecord()
|
|
|
+ {
|
|
|
+ return totalRecord;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTotalRecord(int totalRecord)
|
|
|
+ {
|
|
|
+ this.totalRecord = totalRecord;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt2Num()
|
|
|
+ {
|
|
|
+ return lt2Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt2Num(int lt2Num)
|
|
|
+ {
|
|
|
+ this.lt2Num = lt2Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt2Percent()
|
|
|
+ {
|
|
|
+ return lt2Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt2Percent(BigDecimal lt2Percent)
|
|
|
+ {
|
|
|
+ this.lt2Percent = lt2Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt2Text()
|
|
|
+ {
|
|
|
+ return lt2Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt2Text(String lt2Text)
|
|
|
+ {
|
|
|
+ this.lt2Text = lt2Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt4Num()
|
|
|
+ {
|
|
|
+ return lt4Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt4Num(int lt4Num)
|
|
|
+ {
|
|
|
+ this.lt4Num = lt4Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt4Percent()
|
|
|
+ {
|
|
|
+ return lt4Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt4Percent(BigDecimal lt4Percent)
|
|
|
+ {
|
|
|
+ this.lt4Percent = lt4Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt4Text()
|
|
|
+ {
|
|
|
+ return lt4Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt4Text(String lt4Text)
|
|
|
+ {
|
|
|
+ this.lt4Text = lt4Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt6Num()
|
|
|
+ {
|
|
|
+ return lt6Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt6Num(int lt6Num)
|
|
|
+ {
|
|
|
+ this.lt6Num = lt6Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt6Percent()
|
|
|
+ {
|
|
|
+ return lt6Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt6Percent(BigDecimal lt6Percent)
|
|
|
+ {
|
|
|
+ this.lt6Percent = lt6Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt6Text()
|
|
|
+ {
|
|
|
+ return lt6Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt6Text(String lt6Text)
|
|
|
+ {
|
|
|
+ this.lt6Text = lt6Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt8Num()
|
|
|
+ {
|
|
|
+ return lt8Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt8Num(int lt8Num)
|
|
|
+ {
|
|
|
+ this.lt8Num = lt8Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt8Percent()
|
|
|
+ {
|
|
|
+ return lt8Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt8Percent(BigDecimal lt8Percent)
|
|
|
+ {
|
|
|
+ this.lt8Percent = lt8Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt8Text()
|
|
|
+ {
|
|
|
+ return lt8Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt8Text(String lt8Text)
|
|
|
+ {
|
|
|
+ this.lt8Text = lt8Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt10Num()
|
|
|
+ {
|
|
|
+ return lt10Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt10Num(int lt10Num)
|
|
|
+ {
|
|
|
+ this.lt10Num = lt10Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt10Percent()
|
|
|
+ {
|
|
|
+ return lt10Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt10Percent(BigDecimal lt10Percent)
|
|
|
+ {
|
|
|
+ this.lt10Percent = lt10Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt10Text()
|
|
|
+ {
|
|
|
+ return lt10Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt10Text(String lt10Text)
|
|
|
+ {
|
|
|
+ this.lt10Text = lt10Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt12Num()
|
|
|
+ {
|
|
|
+ return lt12Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt12Num(int lt12Num)
|
|
|
+ {
|
|
|
+ this.lt12Num = lt12Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt12Percent()
|
|
|
+ {
|
|
|
+ return lt12Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt12Percent(BigDecimal lt12Percent)
|
|
|
+ {
|
|
|
+ this.lt12Percent = lt12Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt12Text()
|
|
|
+ {
|
|
|
+ return lt12Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt12Text(String lt12Text)
|
|
|
+ {
|
|
|
+ this.lt12Text = lt12Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt14Num()
|
|
|
+ {
|
|
|
+ return lt14Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt14Num(int lt14Num)
|
|
|
+ {
|
|
|
+ this.lt14Num = lt14Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt14Percent()
|
|
|
+ {
|
|
|
+ return lt14Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt14Percent(BigDecimal lt14Percent)
|
|
|
+ {
|
|
|
+ this.lt14Percent = lt14Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt14Text()
|
|
|
+ {
|
|
|
+ return lt14Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt14Text(String lt14Text)
|
|
|
+ {
|
|
|
+ this.lt14Text = lt14Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt16Num()
|
|
|
+ {
|
|
|
+ return lt16Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt16Num(int lt16Num)
|
|
|
+ {
|
|
|
+ this.lt16Num = lt16Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt16Percent()
|
|
|
+ {
|
|
|
+ return lt16Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt16Percent(BigDecimal lt16Percent)
|
|
|
+ {
|
|
|
+ this.lt16Percent = lt16Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt16Text()
|
|
|
+ {
|
|
|
+ return lt16Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt16Text(String lt16Text)
|
|
|
+ {
|
|
|
+ this.lt16Text = lt16Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getLt18Num()
|
|
|
+ {
|
|
|
+ return lt18Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt18Num(int lt18Num)
|
|
|
+ {
|
|
|
+ this.lt18Num = lt18Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getLt18Percent()
|
|
|
+ {
|
|
|
+ return lt18Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt18Percent(BigDecimal lt18Percent)
|
|
|
+ {
|
|
|
+ this.lt18Percent = lt18Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getLt18Text()
|
|
|
+ {
|
|
|
+ return lt18Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLt18Text(String lt18Text)
|
|
|
+ {
|
|
|
+ this.lt18Text = lt18Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getGe18Num()
|
|
|
+ {
|
|
|
+ return ge18Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setGe18Num(int ge18Num)
|
|
|
+ {
|
|
|
+ this.ge18Num = ge18Num;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BigDecimal getGe18Percent()
|
|
|
+ {
|
|
|
+ return ge18Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setGe18Percent(BigDecimal ge18Percent)
|
|
|
+ {
|
|
|
+ this.ge18Percent = ge18Percent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getGe18Text()
|
|
|
+ {
|
|
|
+ return ge18Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setGe18Text(String ge18Text)
|
|
|
+ {
|
|
|
+ this.ge18Text = ge18Text;
|
|
|
+ }
|
|
|
+}
|