YrEnergyTradeVO.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.jjt.biz.vo;
  2. import com.jjt.utils.Tools;
  3. import io.swagger.annotations.ApiModel;
  4. import io.swagger.annotations.ApiModelProperty;
  5. import lombok.Data;
  6. import lombok.NoArgsConstructor;
  7. import java.math.BigDecimal;
  8. import java.math.RoundingMode;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.Random;
  12. /**
  13. * 能耗趋势视图
  14. *
  15. * @author ruoyi
  16. * @date 2024-12-30
  17. */
  18. @ApiModel(value = "YrEnergyTradeVO", description = "印染能耗趋势视图")
  19. @Data
  20. public class YrEnergyTradeVO {
  21. @ApiModelProperty("时间")
  22. private String date;
  23. @ApiModelProperty("原始时间")
  24. private String tips;
  25. @ApiModelProperty("各产线数据")
  26. private List<Line> line;
  27. public void split(BigDecimal price, BigDecimal d, BigDecimal stream, BigDecimal water) {
  28. BigDecimal[] avg = Tools.balancedRandomSplit(8);
  29. this.line = new ArrayList<>();
  30. Line line = new Line(0);
  31. line.setPrice(isNull(price).setScale(2, RoundingMode.HALF_UP));
  32. line.setElectricity(isNull(d));
  33. line.setSteam(isNull(stream));
  34. line.setWater(isNull(water));
  35. this.line.add(line);
  36. for (int i = 0; i < avg.length; i++) {
  37. Line line1 = new Line(i);
  38. line1.setPrice(isNull(price).multiply(BigDecimal.valueOf(8)).multiply(avg[i]).setScale(2, RoundingMode.HALF_UP));
  39. line1.setElectricity(isNull(d).multiply(avg[i]).setScale(2, RoundingMode.HALF_UP));
  40. line1.setSteam(isNull(stream).multiply(avg[i]).setScale(2, RoundingMode.HALF_UP));
  41. line1.setWater(isNull(water).multiply(avg[i]).setScale(2, RoundingMode.HALF_UP));
  42. this.line.add(line1);
  43. }
  44. }
  45. private BigDecimal isNull(BigDecimal v) {
  46. return v != null ? v : BigDecimal.ZERO;
  47. }
  48. @Data
  49. @NoArgsConstructor
  50. public static class Line {
  51. @ApiModelProperty("产线编号,为0时代表全部")
  52. private Integer line;
  53. @ApiModelProperty("电")
  54. private BigDecimal electricity;
  55. @ApiModelProperty("汽")
  56. private BigDecimal steam;
  57. @ApiModelProperty("水")
  58. private BigDecimal water;
  59. @ApiModelProperty("价格")
  60. private BigDecimal price;
  61. public Line(Integer line) {
  62. this.line = line;
  63. }
  64. public void mock() {
  65. Random random = new Random();
  66. double price = 2.0 + random.nextDouble();
  67. this.price = BigDecimal.valueOf(price).setScale(1, RoundingMode.HALF_UP);
  68. double electricity = 5000 + 1000 * random.nextDouble();
  69. this.electricity = BigDecimal.valueOf(electricity).setScale(1, RoundingMode.HALF_UP);
  70. double steam = 40 + 20 * random.nextDouble();
  71. this.steam = BigDecimal.valueOf(steam).setScale(1, RoundingMode.HALF_UP);
  72. double water = 40 + 20 * random.nextDouble();
  73. this.water = BigDecimal.valueOf(water).setScale(1, RoundingMode.HALF_UP);
  74. }
  75. }
  76. public void mock() {
  77. this.line = new ArrayList<>();
  78. for (int i = 0; i < 9; i++) {
  79. YrEnergyTradeVO.Line line = new YrEnergyTradeVO.Line(i);
  80. line.mock();
  81. this.line.add(line);
  82. }
  83. }
  84. }