| | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 产品信息对象 sales_ledger_product |
| | |
| | | */ |
| | | @Excel(name = "数量") |
| | | private BigDecimal quantity; |
| | | |
| | | /** |
| | | * 已入库数量 |
| | | */ |
| | | private BigDecimal stockedQuantity; |
| | | |
| | | /** |
| | | * 已出库数量 |
| | | */ |
| | | private BigDecimal shippedQuantity; |
| | | |
| | | @Excel(name = "最低库存数量") |
| | | private BigDecimal minStock; |
| | | |
| | | /** |
| | | * 剩余待入库数量(订单数量 − 合格已入库数量,多入时记为 0) |
| | | */ |
| | | @Excel(name = "剩余数量") |
| | | @ApiModelProperty("剩余待入库数量(订单数量-合格已入库)") |
| | | private BigDecimal remainingQuantity; |
| | | |
| | | /** |
| | | * 剩余出库数量 |
| | | */ |
| | | private BigDecimal remainingShippedQuantity; |
| | | |
| | | /** |
| | | * 不合格入库数量 |
| | | */ |
| | | private BigDecimal unqualifiedStockedQuantity; |
| | | |
| | | |
| | | /** |
| | | * 不合格出库数量 |
| | | */ |
| | | private BigDecimal unqualifiedShippedQuantity; |
| | | |
| | | /** |
| | | * 税率 |
| | | */ |
| | |
| | | /** |
| | | * 本次来票数 |
| | | */ |
| | | private BigDecimal ticketsNum=BigDecimal.ZERO; |
| | | private BigDecimal ticketsNum = BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * 本次来票金额(元) |
| | | */ |
| | | private BigDecimal ticketsAmount=BigDecimal.ZERO; |
| | | private BigDecimal ticketsAmount = BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * 未来票数 |
| | | */ |
| | | private BigDecimal futureTickets=BigDecimal.ZERO; |
| | | private BigDecimal futureTickets = BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * 未来票金额(元) |
| | | */ |
| | | private BigDecimal futureTicketsAmount=BigDecimal.ZERO; |
| | | private BigDecimal futureTicketsAmount = BigDecimal.ZERO; |
| | | |
| | | @ApiModelProperty(value = "开票数") |
| | | private BigDecimal invoiceNum = BigDecimal.ZERO; |
| | |
| | | private BigDecimal currentInvoiceAmount; |
| | | |
| | | /** |
| | | * 产品id |
| | | * 产品id |
| | | */ |
| | | private Long productId; |
| | | |
| | |
| | | @TableField(exist = false) |
| | | private String shippingCarNumber; |
| | | |
| | | @ApiModelProperty("快递公司") |
| | | @TableField(exist = false) |
| | | private String expressCompany; |
| | | |
| | | @ApiModelProperty("快递单号") |
| | | @TableField(exist = false) |
| | | private String expressNumber; |
| | | |
| | | /** |
| | | * 发货日期 |
| | | */ |
| | |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date shippingDate; |
| | | |
| | | // @TableField(exist = false) |
| | | // @ApiModelProperty(value = "生产状态") |
| | | // private String productionStatus = "未开始"; |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "发货状态") |
| | | private String shippingStatus = "待发货"; |
| | | /** |
| | | * 发货审批状态 |
| | | * 产品状态 |
| | | */ |
| | | // @TableField(exist = false) |
| | | @ApiModelProperty(value = "审批状态:0未生产,1已生产,2审批中(待审批),3审批通过,4审批失败") |
| | | @ApiModelProperty(value = "产品状态:1-充足") |
| | | private Integer approveStatus; |
| | | |
| | | @ApiModelProperty(value = "待回款总金额") |
| | |
| | | |
| | | @ApiModelProperty(value = "是否质检") |
| | | private Boolean isChecked; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("重箱") |
| | | private BigDecimal thickness; |
| | | |
| | | @ApiModelProperty("宽") |
| | | private BigDecimal width; |
| | | |
| | | @ApiModelProperty("高") |
| | | private BigDecimal height; |
| | | |
| | | @ApiModelProperty("加工要求") |
| | | private String processRequirement; |
| | | |
| | | @ApiModelProperty("备注") |
| | | private String remark; |
| | | |
| | | /** |
| | | * 实际单片面积(㎡) |
| | | */ |
| | | @ApiModelProperty("实际单片面积(㎡)") |
| | | private BigDecimal actualPieceArea; |
| | | |
| | | /** |
| | | * 实际总面积(㎡) |
| | | */ |
| | | @ApiModelProperty("实际总面积(㎡)") |
| | | private BigDecimal actualTotalArea; |
| | | |
| | | /** |
| | | * 结算单片面积(㎡) |
| | | */ |
| | | @ApiModelProperty("结算单片面积(㎡)") |
| | | private BigDecimal settlePieceArea; |
| | | |
| | | /** |
| | | * 结算总面积(㎡) |
| | | */ |
| | | @ApiModelProperty("结算总面积(㎡)") |
| | | private BigDecimal settleTotalArea; |
| | | |
| | | /** |
| | | * 周长 |
| | | */ |
| | | @ApiModelProperty("周长(cm)") |
| | | private BigDecimal perimeter; |
| | | |
| | | /** |
| | | * 重箱 |
| | | */ |
| | | @ApiModelProperty("重箱") |
| | | private BigDecimal heavyBox; |
| | | |
| | | /** |
| | | * 楼层编号 |
| | | */ |
| | | @ApiModelProperty("楼层编号") |
| | | private String floorCode; |
| | | |
| | | /** |
| | | * 产品入库状态:0-未入库,1-部分入库,2-已入库 |
| | | */ |
| | | @ApiModelProperty("产品入库状态:0-未入库,1-部分入库,2-已入库") |
| | | private Integer productStockStatus; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("销售产品额外加工") |
| | | private List<SalesLedgerProductProcess> salesProductProcessList; |
| | | |
| | | @TableField(exist = false) |
| | | private Integer hasSufficientStock; |
| | | |
| | | // 退货数量 |
| | | @TableField(exist = false) |
| | | private BigDecimal returnQuality; |
| | | |
| | | // 可用数量 quantity - returnQuality |
| | | @TableField(exist = false) |
| | | private BigDecimal availableQuality; |
| | | |
| | | |
| | | public void fillRemainingQuantity() { |
| | | BigDecimal q = this.quantity == null ? BigDecimal.ZERO : this.quantity; |
| | | |
| | | BigDecimal stocked = this.stockedQuantity == null ? BigDecimal.ZERO : this.stockedQuantity; |
| | | BigDecimal remIn = q.subtract(stocked); |
| | | this.remainingQuantity = remIn.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : remIn; |
| | | |
| | | BigDecimal shipped = this.shippedQuantity == null ? BigDecimal.ZERO : this.shippedQuantity; |
| | | // 剩余出库数量:以“已入库数量”为基准(出库只能从已入库中扣减) |
| | | BigDecimal remOut = stocked.subtract(shipped); |
| | | this.remainingShippedQuantity = remOut.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : remOut; |
| | | } |
| | | } |