BpVO.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.jjt.inventory.vo;
  2. import io.swagger.annotations.ApiModel;
  3. import io.swagger.annotations.ApiModelProperty;
  4. import lombok.Data;
  5. import lombok.NoArgsConstructor;
  6. import java.math.BigDecimal;
  7. import java.math.RoundingMode;
  8. import java.time.LocalDate;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. /**
  12. * 白柸布库存视图
  13. *
  14. * @author ruoyi
  15. * @date 2024-12-30
  16. */
  17. @Data
  18. @ApiModel(value = "BpVO", description = "白柸布库存视图")
  19. public class BpVO {
  20. private static final long serialVersionUID = 1L;
  21. @ApiModelProperty("TOP排名")
  22. private List<TopVO> tops;
  23. @ApiModelProperty("近一月库存情况-卷数")
  24. private List<MonthStock> rollMonthStocks;
  25. @ApiModelProperty("近一月库存情况-米数")
  26. private List<MonthStock> meterMonthStocks;
  27. @ApiModelProperty("近一月库存情况-重量")
  28. private List<MonthStock> weightMonthStocks;
  29. @ApiModelProperty("库存情况-卷数")
  30. private List<Stock> rollStocks;
  31. @ApiModelProperty("库存情况-米数")
  32. private List<Stock> meterStocks;
  33. @ApiModelProperty("库存情况-重量")
  34. private List<Stock> weightStocks;
  35. public BpVO() {
  36. this.tops = new ArrayList<>();
  37. this.rollMonthStocks = new ArrayList<>();
  38. this.meterMonthStocks = new ArrayList<>();
  39. this.weightMonthStocks = new ArrayList<>();
  40. this.rollStocks = new ArrayList<>();
  41. this.meterStocks = new ArrayList<>();
  42. this.weightStocks = new ArrayList<>();
  43. }
  44. @Data
  45. @ApiModel("库存情况")
  46. public static class Stock {
  47. @ApiModelProperty("纱种名称")
  48. private String name;
  49. @ApiModelProperty("米克重")
  50. private Integer mick;
  51. @ApiModelProperty("入库数量")
  52. private Integer in;
  53. @ApiModelProperty("出库数量")
  54. private Integer out;
  55. @ApiModelProperty("最大库存量")
  56. private Integer max;
  57. @ApiModelProperty("最小库存量")
  58. private Integer min;
  59. @ApiModelProperty("平均库存量")
  60. private BigDecimal avg;
  61. public Stock() {
  62. this.in = 0;
  63. this.out = 0;
  64. this.max = 0;
  65. this.min = 999999999;
  66. this.avg = BigDecimal.ZERO;
  67. }
  68. public void addIn(int amount) {
  69. this.in += amount;
  70. }
  71. public void calcAvg(int amount) {
  72. this.avg = avg.divide(BigDecimal.valueOf(amount), 2, RoundingMode.HALF_UP);
  73. }
  74. public void total(int amount) {
  75. this.avg = this.avg.add(BigDecimal.valueOf(amount));
  76. }
  77. public void addOut(int amount) {
  78. this.out += amount;
  79. }
  80. public void updateMax(int current) {
  81. this.max = Math.max(this.max, current);
  82. }
  83. public void updateMin(int current) {
  84. this.min = Math.min(this.min, current);
  85. }
  86. }
  87. @Data
  88. @ApiModel("近一月库存情况")
  89. public static class MonthStock {
  90. @ApiModelProperty("最大库存")
  91. private Integer max;
  92. @ApiModelProperty("最小库存")
  93. private Integer min;
  94. @ApiModelProperty("均量库存")
  95. private BigDecimal avg;
  96. @ApiModelProperty("时间")
  97. private LocalDate date;
  98. @ApiModelProperty("最大库存时-纱种明细")
  99. private List<YarnTypeDetail> details;
  100. @ApiModelProperty("最小库存时-纱种明细")
  101. private List<YarnTypeDetail> minDetails;
  102. public MonthStock() {
  103. this.details = new ArrayList<>();
  104. this.minDetails = new ArrayList<>();
  105. }
  106. }
  107. @Data
  108. @NoArgsConstructor
  109. @ApiModel("纱种明细")
  110. public static class YarnTypeDetail {
  111. @ApiModelProperty("纱种名称")
  112. private String name;
  113. @ApiModelProperty("米克重")
  114. private Integer mick;
  115. @ApiModelProperty("数量")
  116. private Integer num;
  117. @ApiModelProperty("纱种占比")
  118. private BigDecimal ratio;
  119. }
  120. }