GetBuildingAreaDiffVo.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.nokia.financeapi.pojo.vo;
  2. import io.swagger.v3.oas.annotations.Hidden;
  3. import io.swagger.v3.oas.annotations.media.Schema;
  4. import lombok.Data;
  5. import java.math.BigDecimal;
  6. import java.math.RoundingMode;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. @Data
  10. public class GetBuildingAreaDiffVo {
  11. @Hidden
  12. private String areaNo;
  13. @Hidden
  14. private String areaName;
  15. @Hidden
  16. private String cityNo;
  17. @Hidden
  18. private String cityName;
  19. @Schema(description = "单位名称", example = "全省")
  20. private String unitName;
  21. @Schema(description = "2023年建筑面积", example = "3345429.01")
  22. private BigDecimal buildingAreaSumLast;
  23. @Schema(description = "2023年建筑面积自用", example = "3345429.01")
  24. private BigDecimal buildingAreaSelfUseSumLast;
  25. @Schema(description = "2023年建筑面积闲置", example = "3345429.01")
  26. private BigDecimal buildingAreaIdleSumLast;
  27. @Schema(description = "当月建筑面积", example = "3345429.01")
  28. private BigDecimal buildingAreaSumNow;
  29. @Schema(description = "当月建筑面积自用", example = "3345429.01")
  30. private BigDecimal buildingAreaSelfUseSumNow;
  31. @Schema(description = "当月建筑面积闲置", example = "3345429.01")
  32. private BigDecimal buildingAreaIdleSumNow;
  33. @Schema(description = "建筑面积变化%", example = "12.34")
  34. private BigDecimal buildingAreaDiff;
  35. @Schema(description = "自用面积变化%", example = "12.34")
  36. private BigDecimal buildingAreaSelfUseDiff;
  37. @Schema(description = "闲置面积变化%", example = "-12.34")
  38. private BigDecimal buildingAreaIdleDiff;
  39. @Schema(description = "子列表")
  40. private List<GetBuildingAreaDiffVo> children;
  41. public GetBuildingAreaDiffVo() {
  42. this.areaNo = "";
  43. this.areaName = "";
  44. this.cityNo = "";
  45. this.cityName = "";
  46. this.unitName = "";
  47. this.buildingAreaSumLast = BigDecimal.ZERO;
  48. this.buildingAreaSelfUseSumLast = BigDecimal.ZERO;
  49. this.buildingAreaIdleSumLast = BigDecimal.ZERO;
  50. this.buildingAreaSumNow = BigDecimal.ZERO;
  51. this.buildingAreaSelfUseSumNow = BigDecimal.ZERO;
  52. this.buildingAreaIdleSumNow = BigDecimal.ZERO;
  53. this.buildingAreaDiff = BigDecimal.ZERO;
  54. this.buildingAreaSelfUseDiff = BigDecimal.ZERO;
  55. this.buildingAreaIdleDiff = BigDecimal.ZERO;
  56. this.children = new ArrayList<>();
  57. }
  58. public GetBuildingAreaDiffVo(String areaNo, String areaName) {
  59. this.areaNo = areaNo;
  60. this.areaName = areaName;
  61. this.cityNo = areaNo;
  62. this.cityName = areaName;
  63. this.unitName = areaName;
  64. this.buildingAreaSumLast = BigDecimal.ZERO;
  65. this.buildingAreaSelfUseSumLast = BigDecimal.ZERO;
  66. this.buildingAreaIdleSumLast = BigDecimal.ZERO;
  67. this.buildingAreaSumNow = BigDecimal.ZERO;
  68. this.buildingAreaSelfUseSumNow = BigDecimal.ZERO;
  69. this.buildingAreaIdleSumNow = BigDecimal.ZERO;
  70. this.buildingAreaDiff = BigDecimal.ZERO;
  71. this.buildingAreaSelfUseDiff = BigDecimal.ZERO;
  72. this.buildingAreaIdleDiff = BigDecimal.ZERO;
  73. this.children = new ArrayList<>();
  74. }
  75. public void update(GetBuildingAreaDiffVo po) {
  76. this.buildingAreaSumLast = this.buildingAreaSumLast.add(po.buildingAreaSumLast);
  77. this.buildingAreaSelfUseSumLast = this.buildingAreaSelfUseSumLast.add(po.buildingAreaSelfUseSumLast);
  78. this.buildingAreaIdleSumLast = this.buildingAreaIdleSumLast.add(po.buildingAreaIdleSumLast);
  79. this.buildingAreaSumNow = this.buildingAreaSumNow.add(po.buildingAreaSumNow);
  80. this.buildingAreaSelfUseSumNow = this.buildingAreaSelfUseSumNow.add(po.buildingAreaSelfUseSumNow);
  81. this.buildingAreaIdleSumNow = this.buildingAreaIdleSumNow.add(po.buildingAreaIdleSumNow);
  82. if (this.buildingAreaSumLast.compareTo(BigDecimal.ZERO) != 0) {
  83. this.buildingAreaDiff = this.buildingAreaSumNow.subtract(this.buildingAreaSumLast)
  84. .divide(this.buildingAreaSumLast, 4, RoundingMode.HALF_DOWN)
  85. .multiply(new BigDecimal("100"));
  86. } else {
  87. this.buildingAreaDiff = BigDecimal.ZERO;
  88. }
  89. if (this.buildingAreaSelfUseSumLast.compareTo(BigDecimal.ZERO) != 0) {
  90. this.buildingAreaSelfUseDiff = this.buildingAreaSelfUseSumNow.subtract(this.buildingAreaSelfUseSumLast)
  91. .divide(this.buildingAreaSelfUseSumLast, 4, RoundingMode.HALF_DOWN)
  92. .multiply(new BigDecimal("100"));
  93. } else {
  94. this.buildingAreaSelfUseDiff = BigDecimal.ZERO;
  95. }
  96. if (buildingAreaIdleSumLast.compareTo(BigDecimal.ZERO) != 0) {
  97. this.buildingAreaIdleDiff = this.buildingAreaIdleSumNow.subtract(this.buildingAreaIdleSumLast)
  98. .divide(this.buildingAreaIdleSumLast, 4, RoundingMode.HALF_DOWN)
  99. .multiply(new BigDecimal("100"));
  100. } else {
  101. this.buildingAreaIdleDiff = BigDecimal.ZERO;
  102. }
  103. this.children.add(po);
  104. }
  105. }