package com.jwipc.shopping.model.vo;

import com.jwipc.shopping.entity.ShoppingCartInfo;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 *     商城购物车保存实体类
 * </p>
 *
 * @author li.kui
 * @version 1.0
 * @since 2021/1/7
 */
@Data
public class MallShoppingCartSaveDto {
    /**
     * 商品编码
     */
    private String productCode;
    /**
     * 商品名称
     */
    private String productName;
    /**
     * 商品价格
     */
    private BigDecimal productPrice;
    /**
     * 商品未税价
     */
    private BigDecimal nakedPrice;
    /**
     * 选购数量
     */
    private BigDecimal qty;
    /**
     * 商品单位
     */
    private String productUnit;
    /**
     * 商城编码
     */
    private String sourceCode;
    /**
     * 商城名称
     */
    private String sourceName;
    /**
     * 物料组编码
     */
    private String mgCode;
    /**
     * 物料组名称
     */
    private String mgName;
    /**
     * 采购申请单号 uuid
     */
    private String prCode;

    /**
     * OA采购申请编号
     */
    private String purchaseOrderNumber;
    /**
     * 采购申请行号
     */
    private String prItemNo;
    /**
     * 创建用户ID
     */
    private Long createUserId;
    /**
     * 创建用户工号
     */
    private String createUserCode;
    /**
     * 创建用户姓名
     */
    private String createUserName;
    /**
     * 创建时间
     */
    private Date createTime;
    private LocalDateTime purchaseDate;
    /**
     * 选购时间
     */
    private LocalDateTime choseBuyTime;
    /**
     * 数据推送状态 1:未推送 2:推送成功 3:推送失败
     */
    private Integer pushStatus;
    /**
     * 数据推送描述
     */
    private String pushMessage;
    /**
     * 商城订单ID
     */
    private Long cartId;

    /**
     * 商城订单明细状态
     */
    private Integer deliveryStatus;
    /**
     * 规格
     */
    private String materialSpec;
    /**
     * 请购数量
     */
    private BigDecimal requireNum;

    /**
     * 数据结构转换(KLP)
     *
     * @return 结果
     */
    public OnlineMallScKlpDto toOmsKlp(){
        OnlineMallScKlpDto dto = new OnlineMallScKlpDto();
        dto.setUser_code(this.createUserCode);
        dto.setProduct_code(this.productCode);
        dto.setProduct_qty(String.valueOf(this.qty.intValue()));
        dto.setCustomer_name("KeShun");
        return dto;
    }


    /**
     * 数据结构转换
     *
     * @return 结果
     */
    public ShoppingCartInfo toSc(){
        ShoppingCartInfo sc = new ShoppingCartInfo();
        sc.setCreateTime(LocalDateTime.now());
        sc.setCreateUserId(this.createUserId);
        sc.setCreateUserCode(this.createUserCode);
        sc.setCreateUserName(this.createUserName);
        sc.setPurchaseDate(this.choseBuyTime);
        sc.setQty(this.qty);
        sc.setUnitCost(this.productPrice);
        sc.setNakedPrice(this.nakedPrice);
        sc.setUnit(this.productUnit);
        sc.setSkuCode(this.productCode);
        sc.setSkuName(this.productName);
        sc.setStoreCode(this.sourceCode);
        sc.setStoreName(this.sourceName);
        sc.setStatus(this.pushStatus);
        sc.setCallbackDesc(this.pushMessage);
        sc.setCartId(this.cartId);
        sc.setMgCode(this.mgCode);
        sc.setMgName(this.mgName);
        sc.setPrCode(this.prCode);
        sc.setPurchaseDate(this.purchaseDate);
        sc.setPrItemNo(this.prItemNo);
        sc.setDeliveryStatus(this.deliveryStatus);
        sc.setRequireNum(this.requireNum);
        sc.setMaterialSpec(this.materialSpec);
        sc.setPurchaseOrderNumber(this.purchaseOrderNumber);
        return sc;
    }
}
