package com.jwipc.finance.model.query;

import com.jwipc.query.BasePageQuery;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * <p>
 *     对账模块-付款计划明细查询实体类
 * </p>
 *
 * @author 邓京术
 * @version 1.0
 * @since 2025/07/22
 */
@Data
public class PaymentPlanDetailQuery extends BasePageQuery {

    /**
     * 对账单ID
     */
    private Long asId;

    /**
     * 入库凭证ID
     */
    private Long receiveId;
    /**
     * 入库凭证号
     */
    private String receiveCode;
    /**
     * 明细ID集合
     */
    private List<Long> asdIdList;
    /**
     * 对账单编号
     */
    private String statementNo;
    private String purchaseGroup;
    /**
     * 供应商编码
     */
    private String supplierCode;
    /**
     * 供应商名称
     */
    private String supplierName;
    /**
     * 供应商编码/名称
     */
    private String supCodeOrName;
    /**
     * 公司代码
     */
    private String companyCode;
    /**
     * SAP订单号
     */
    private String poCode;
    /**
     * 采购订单行号
     */
    private String poItemNo;
    private String factoryCode;
    /**
     * 物料编码
     */
    private String materialCode;
    /**
     * 物料名称
     */
    private String materialName;
    /**
     * 创建时间(起)
     */
    private String createTimeStart;
    /**
     * 创建时间(至)
     */
    private String createTimeEnd;
    /**
     * 入库凭证过账日期(起)
     */
    private String mvPostDateStart;
    /**
     * 入库凭证过账日期(至)
     */
    private String mvPostDateEnd;
    /**
     * 数据状态 -1:全部 1:暂存对账单 2:待采购确认对账单 3:采购拒绝对账单 4:待推送OA审批 5:OA审批中 6:OA审批不通过 7:待财务确认对账单 8:财务驳回对账单 9:对账单已确认
     */
    private Integer status;
    /**
     * 是否开票完成 0:否 1:是
     */
    private Integer isComplete;
    /**
     * 对账单类型 1:材料商对账单 2:承运商对账单
     */
    private Integer orderType;
    /**
     * 当前登录用户(根据登录人的所属工厂编码来做数据权限)
     */
    private Long userId;

    /**
     * 订单类型
     */
    private String orderTypeCode;
    /**
     * 订单类型名称
     */
    private String orderTypeName;

    public String getOrderTypeCodeLike(){
        return StringUtils.isEmpty(this.orderTypeCode) ? null : "%" + this.orderTypeCode + "%";
    }

    public String getOrderTypeNameLike(){
        return StringUtils.isEmpty(this.orderTypeName) ? null : "%" + this.orderTypeName + "%";
    }

    public String getStatementNoLike(){
        return StringUtils.isEmpty(this.statementNo) ? null : "%" + this.statementNo + "%";
    }

    public String getSupplierNameLike(){
        return StringUtils.isEmpty(this.supplierName) ? null : "%" + this.supplierName + "%";
    }

    public String getSupCodeOrNameLike(){
        return StringUtils.isEmpty(this.supCodeOrName) ? null : "%" + this.supCodeOrName + "%";
    }

    public String getMaterialNameLike(){
        return StringUtils.isEmpty(this.materialName) ? null : "%" + this.materialName + "%";
    }

    public String getCreateTimeStart(){
        if(StringUtils.isNotEmpty(this.createTimeStart)){
            return this.createTimeStart + " 00:00:00";
        }
        return "";
    }

    public String getCreateTimeEnd(){
        if(StringUtils.isNotEmpty(this.createTimeEnd)){
            return this.createTimeEnd + " 23:59:59";
        }
        return "";
    }
}
