CrmQuoteProductBo.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package org.dromara.crm.domain.bo;
  2. import io.github.linpeilie.annotations.AutoMapper;
  3. import jakarta.validation.constraints.*;
  4. import lombok.Data;
  5. import lombok.EqualsAndHashCode;
  6. import org.dromara.common.core.validate.AddGroup;
  7. import org.dromara.common.core.validate.EditGroup;
  8. import org.dromara.common.mybatis.core.domain.BaseEntity;
  9. import org.dromara.crm.domain.CrmQuoteProduct;
  10. import java.math.BigDecimal;
  11. /**
  12. * 报价单产品业务对象 crm_quote_product
  13. *
  14. * @author 系统管理员
  15. * @date 2025-01-03
  16. */
  17. @Data
  18. @EqualsAndHashCode(callSuper = true)
  19. @AutoMapper(target = CrmQuoteProduct.class, reverseConvertGenerate = false)
  20. public class CrmQuoteProductBo extends BaseEntity {
  21. /**
  22. * 主键ID
  23. */
  24. @NotNull(message = "主键不能为空", groups = { EditGroup.class })
  25. private Long id;
  26. /**
  27. * 报价单ID
  28. */
  29. private Long quoteId;
  30. /**
  31. * 产品ID(保存报价单时可为空,后端会按产品属性自动匹配或新增后回填)
  32. */
  33. private Long productId;
  34. /**
  35. * 产品名称
  36. */
  37. private String productName;
  38. /**
  39. * 产品编号
  40. */
  41. private String productNo;
  42. /**
  43. * 产品分类ID
  44. */
  45. private Long categoryId;
  46. /**
  47. * 产品分类名称
  48. */
  49. private String categoryName;
  50. /**
  51. * 规格型号
  52. */
  53. private String model;
  54. /**
  55. * 单位
  56. */
  57. private String unit;
  58. /**
  59. * 数量
  60. */
  61. @NotNull(message = "数量不能为空", groups = { AddGroup.class, EditGroup.class })
  62. @DecimalMin(value = "0.01", message = "数量必须大于0")
  63. private BigDecimal quantity;
  64. /**
  65. * 含税单价/元
  66. */
  67. @NotNull(message = "含税单价不能为空", groups = { AddGroup.class, EditGroup.class })
  68. @DecimalMin(value = "0.00", message = "含税单价不能为负数")
  69. private BigDecimal price;
  70. /**
  71. * 折扣(百分比)
  72. */
  73. @DecimalMin(value = "0.00", message = "折扣不能为负数")
  74. @DecimalMax(value = "100.00", message = "折扣不能超过100")
  75. private BigDecimal discount;
  76. /**
  77. * 含税总价/元
  78. */
  79. private BigDecimal subtotal;
  80. /**
  81. * 税费/元
  82. */
  83. @DecimalMin(value = "0.00", message = "税费不能为负数")
  84. private BigDecimal taxAmount;
  85. /**
  86. * 税率(%)
  87. */
  88. @DecimalMin(value = "0.00", message = "税率不能为负数")
  89. @DecimalMax(value = "100.00", message = "税率不能超过100")
  90. private BigDecimal taxRate;
  91. /**
  92. * 包装规格
  93. */
  94. private String packageSpec;
  95. /**
  96. * 送货方式
  97. */
  98. private String deliveryMethod;
  99. /**
  100. * 产品描述
  101. */
  102. private String description;
  103. /**
  104. * 排序号
  105. */
  106. private Integer sort;
  107. /**
  108. * 备注
  109. */
  110. private String remark;
  111. }