package cn.iocoder.yudao.module.order.vo.orderWarehouseIn;

import cn.iocoder.yudao.module.order.vo.orderLabel.OrderLabelDto;
import cn.iocoder.yudao.module.order.vo.orderLocation.OrderLocationCreateReqVO;
import cn.iocoder.yudao.module.order.vo.orderSpecialNeed.OrderSpecialNeedReceivableReqVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

@Data
@ToString
@EqualsAndHashCode
@ApiModel("管理后台 - 入仓完毕请求 Request VO")
public class OrderWarehouseInFinishReqVO {

    @ApiModelProperty(value = "订单id", required = true)
    @NotNull(message = "订单id不能为空")
    private Long orderId;

    @ApiModelProperty(value = "储位列表")
    private List<OrderLocationCreateReqVO> orderLocationCreateReqVOList;

    @ApiModelProperty(value = "特需应收请求列表")
    private List<OrderSpecialNeedReceivableReqVo> orderSpecialNeedReceivableReqVoList;

    @ApiModelProperty(value = "入仓影像列表")
    private List<String> urls;

    @ApiModelProperty(value = "转异-异常类型 eg:1,2,3")
    private String manualExceptionType;

    @ApiModelProperty(value = "转异-描述中文")
    private String descZh;

    @ApiModelProperty(value = "转异-描述英文")
    private String descEn;

    @ApiModelProperty(value = "转异-影像列表")
    private List<String> exceptionUrls;


    @ApiModelProperty(value = "是否追加")
    private Boolean isAppend = false;


    /**
     * 入仓体积
     */
    @ApiModelProperty(value = "入仓总体积")
    private BigDecimal sumVolume;
    /**
     * 入仓重量
     */
    @ApiModelProperty(value = "入仓总重量")
    private BigDecimal sumWeight;


    /**
     * 订单标签箱号集合
     */
    @ApiModelProperty(value = "订单标签箱号集合")
    private List<OrderLabelDto> labelList;



    @Transient
    private Boolean updateWarehouseInUrl = true;
    @Transient
    private Boolean updateLabel = true;
    @Transient
    private Boolean sendMsg = true;
    @Transient
    private Boolean updateCustomer = true;
    @Transient
    private Boolean isUpdateCallback = false;
    @Transient
    private Boolean isSumVolumeNoChange = true;
    @Transient
    private Boolean isSumWeightNoChange = true;

    /**
     * 是否退场入仓
     */
    @Transient
    @ApiModelProperty(value = "退场入仓标识")
    private Boolean isRollbackIn = false;

    /**
     * 是否拆单入仓
     */
    @Transient
    @ApiModelProperty(value = "拆单入仓标识")
    private Boolean isSplitIn = false;

    //是否添加日志
    @Transient
    private Boolean isAddOrderOperateLog = true;

}
