PtVO.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 = "PtVO", description = "盘头库存分析视图")
  19. public class PtVO {
  20. private static final long serialVersionUID = 1L;
  21. @ApiModelProperty("TOP排名")
  22. private List<TopVO> tops;
  23. @ApiModelProperty("使用情况")
  24. private List<Usage> usages;
  25. @ApiModelProperty("库存情况")
  26. private List<Stock> stocks;
  27. public PtVO() {
  28. this.tops = new ArrayList<>();
  29. this.usages = new ArrayList<>();
  30. this.stocks = new ArrayList<>();
  31. }
  32. @Data
  33. @ApiModel("库存情况")
  34. public static class Stock {
  35. @ApiModelProperty("纱种名称")
  36. private String name;
  37. @ApiModelProperty("入库数量")
  38. private Integer in;
  39. @ApiModelProperty("出库数量")
  40. private Integer out;
  41. @ApiModelProperty("最大库存量")
  42. private Integer max;
  43. @ApiModelProperty("最小库存量")
  44. private Integer min;
  45. @ApiModelProperty("平均库存量")
  46. private BigDecimal avg;
  47. public Stock() {
  48. this.in = 0;
  49. this.out = 0;
  50. this.max = 0;
  51. this.min = 999999999;
  52. this.avg = BigDecimal.ZERO;
  53. }
  54. public void addIn(int amount) {
  55. this.in += amount;
  56. }
  57. public void calcAvg(int amount) {
  58. this.avg = avg.divide(BigDecimal.valueOf(amount), 2, RoundingMode.HALF_UP);
  59. }
  60. public void total(int amount) {
  61. this.avg = this.avg.add(BigDecimal.valueOf(amount));
  62. }
  63. public void addOut(int amount) {
  64. this.out += amount;
  65. }
  66. public void updateMax(int current) {
  67. this.max = Math.max(this.max, current);
  68. }
  69. public void updateMin(int current) {
  70. this.min = Math.min(this.min, current);
  71. }
  72. }
  73. @Data
  74. @ApiModel("使用率")
  75. public static class Usage {
  76. @ApiModelProperty("最大使用量")
  77. private Integer max;
  78. @ApiModelProperty("使用率")
  79. private BigDecimal rate;
  80. @ApiModelProperty("时间")
  81. private LocalDate date;
  82. @ApiModelProperty("纱种明细")
  83. private List<YarnTypeDetail> details;
  84. public Usage() {
  85. this.details = new ArrayList<>();
  86. }
  87. }
  88. @Data
  89. @NoArgsConstructor
  90. @ApiModel("纱种明细")
  91. public static class YarnTypeDetail {
  92. @ApiModelProperty("纱种名称")
  93. private String name;
  94. @ApiModelProperty("数量")
  95. private Integer num;
  96. @ApiModelProperty("纱种占比")
  97. private BigDecimal ratio;
  98. }
  99. }