ERPShipmentReqJsonData.java 6 KB
package com.huaheng.api.erp.domain;

import com.google.gson.annotations.SerializedName;
import com.huaheng.common.utils.DateUtils;
import lombok.Data;
import lombok.SneakyThrows;

import java.math.BigDecimal;
import java.util.*;

@Data
public class ERPShipmentReqJsonData {
    /**
     * 实体主键
     */
    @SerializedName("FID")
    private int id;
    /**
     * 单据编码
     */
    @SerializedName("FBillNo")
    private String billNo;
    /**
     * 单据类型
     */
    @SerializedName("FBillTypeID")
    private String billTypeId;
    /**
     * 申请组织
     */
    @SerializedName("FStockOrgId1")
    private String stockOrgId1;
    /**
     * 库存组织
     */
    @SerializedName("FStockOrgId")
    private String stockOrgId;
    /**
     * 日期
     */
    @SerializedName("FDate")
    private String date;
    /**
     * 客户
     */
    @SerializedName("FCustId")
    private String custId;
    /**
     * 部门
     */
    @SerializedName("FDeptId")
    private String deptId;
    /**
     * 领料人
     */
    @SerializedName("FPickerId")
    private String pickerId;
    /**
     * 货主类型
     */
    @SerializedName("FOwnerTypeIdHead")
    private String ownerTypeIdHead;
    /**
     * 备注
     */
    @SerializedName("FNote")
    private String note;

    /**
     * 锁库类型
     */
    @SerializedName("F_CH_LockType")
    private String lockType;
    /**
     * 柜号
     */
    @SerializedName("F_CH_ContainerNo")
    private String containerNo;
    /**
     * 其他出库类型
     */
    @SerializedName("F_CH_QTCKLX")
    private String qtcklx;
    /**
     * 其他出库单类型
     */
    @SerializedName("F_CH_QTCKBillType")
    private String qtckBillType;
    /**
     * 车牌号吗
     */
    @SerializedName("F_CH_Receiver")
    private String receiver;
    /**
     * 供应商
     */
    @SerializedName("F_CH_Supplier")
    private String supplier;
    /**
     * 申请对象
     */
    @SerializedName("F_CH_Applicant")
    private String applicant;
    /**
     * 仓库
     */
    @SerializedName("F_CH_CK")
    private String ck;

    /**
     * 物料编码 key
     */
    @SerializedName("FMaterialId")
    private String materialId;

    /**
     * 单位 key
     */
    @SerializedName("FUnitID")
    private String unitId;

    /**
     * 数量
     */
    @SerializedName("FQty")
    private BigDecimal qty;

    /**
     * 基本单位 key
     */
    @SerializedName("FBaseUnitId")
    private String baseUnitId;
    /**
     * 库存组织 key
     */
    @SerializedName("FStockOrgIdEntry")
    private String stockOrgIdEntry;

    /**
     * 收货仓库 key
     */
    @SerializedName("FStockId")
    private String stockId;

    /**
     * 批号
     */
    @SerializedName("FLot")
    private String lot;

    /**
     * 货主类型 key
     */
    @SerializedName("FOwnerTypeId")
    private String ownerTypeId;

    /**
     * 货主 key
     */
    @SerializedName("FOwnerId")
    private String ownerId;

    /**
     * 库存状态 key
     */
    @SerializedName("FStockStatusId")
    private String stockStatusId;
    /**
     * 是否锁库 key
     */
    @SerializedName("F_CH_ISLOCK")
    private Boolean isLock;

    @SneakyThrows
    public static List<ERPShipmentReq> transfer(List<ERPShipmentReqJsonData> list){
        Set<Integer> idKey = new HashSet();
        //所有出库单据集合
        List<ERPShipmentReq> reqs = new ArrayList<>();
        //单据的明细集合
        List<ShipmentReqEntity> entities= new ArrayList<>();
        ERPShipmentReq flag = null;
        for (ERPShipmentReqJsonData data : list) {
            if((flag!=null) && flag.getId() != 0 && (flag.getId() != data.getId())){
                //添加 实体信息
                flag.setEntity(entities);
                //添加 头信息
                reqs.add(flag);
                //清空
                entities = new ArrayList<>();
            }
            if(!idKey.contains(data.getId())){
                idKey.add(data.getId());
                //清空
                entities.clear();
                //不包含创建实例
                flag = new ERPShipmentReq();
                flag.setId(data.getId());
                flag.setBillTypeId(data.getBillTypeId());
                flag.setStockOrgId(data.getStockOrgId());
                flag.setStockOrgId1(data.getStockOrgId1());
                String dataDate = data.getDate();
                dataDate = dataDate.replace("T", " ");
                flag.setDate(DateUtils.parseDate(dataDate,DateUtils.YYYY_MM_DD_HH_MM_SS));
                flag.setCustId(data.getCustId());
                flag.setDeptId(data.getDeptId());
                flag.setPickerId(data.getPickerId());
                flag.setOwnerTypeIdHead(data.getOwnerTypeIdHead());
                flag.setNote(data.getNote());
                flag.setLockType(data.getLockType());
                flag.setContainerNo(data.getContainerNo());
                flag.setQtcklx(data.getQtcklx());
                flag.setQtckBillType(data.getQtckBillType());
                flag.setReceiver(data.getReceiver());
                flag.setSupplier(data.getSupplier());
                flag.setApplicant(data.getApplicant());
                flag.setCk(data.getCk());
            }
            ShipmentReqEntity reqEntity = new ShipmentReqEntity();
            reqEntity.setMaterialId(data.getMaterialId());
            reqEntity.setUnitId(data.getUnitId());
            reqEntity.setQty(data.getQty());
            reqEntity.setBaseUnitId(data.getBaseUnitId());
            reqEntity.setStockOrgIdEntry(data.getStockOrgIdEntry());
            reqEntity.setStockId(data.getStockId());
            reqEntity.setLot(data.getLot());
            reqEntity.setOwnerTypeId(data.getOwnerTypeId());
            reqEntity.setOwnerId(data.getOwnerId());
            reqEntity.setStockStatusId(data.getStockStatusId());
            reqEntity.setIsLock(data.getIsLock());
            entities.add(reqEntity);
        }
        flag.setEntity(entities);
        reqs.add(flag);
        return reqs;
    }

}