/*
*  Copyright 2019-2020 Zheng Jie
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package com.youchain.businessdata.service.dto;

import com.youchain.base.BaseEntity;
import com.youchain.basicdata.domain.Item;
import com.youchain.businessdata.domain.ItemKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
import com.youchain.annotation.Query;

import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.validation.constraints.NotBlank;

/**
* @website https://eladmin.vip
* @author huojin
* @date 2023-08-22
**/
@Data
public class InventoryQueryCriteria{

    /*@Query(joinName = "itemKey>item>", propName="code" ,type = Query.Type.INNER_LIKE)
    private String itemCode;*/

    @Query(joinName = "itemKey>item>", propName="name",type = Query.Type.INNER_LIKE)
    private String itemName;

    @Query(joinName = "itemKey>", propName="propC1",type = Query.Type.INNER_LIKE)
    private String propC1;

    @Query(joinName = "itemKey>", propName="propC2",type = Query.Type.EQUAL)
    private String bonded;

    @Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN)
    private List<String> itemCode;

    @Query(joinName = "itemKey>item>", propName="code" ,type = Query.Type.INNER_LIKE)
    private String itemCodeOne;


    /**
     * 生成日期
     */
    @Query(joinName = "itemKey>", propName="propD1",type = Query.Type.EQUAL)
    private Timestamp propD1;

    // NOT_EQUAL 不等于
    @Query(type = Query.Type.NOT_EQUAL, propName="quantity")
    private Double quantity;

    @Query(joinName = "stock", propName="name",type = Query.Type.INNER_LIKE)
    private String stockName;

    @Query(joinName = "area",propName = "name",type = Query.Type.INNER_LIKE)
    private String areaName;

    @Query(joinName = "area",propName = "name",type = Query.Type.IN)
    private List<String> areaNames;

    @Query(joinName = "point",propName = "code",type = Query.Type.INNER_LIKE)
    private String pointCode;

    @Query(joinName = "point",propName = "type",type = Query.Type.EQUAL)
    private String pointType;


    @Query(type = Query.Type.EQUAL)
    /** 物料属性 */
    private ItemKey itemKey;

    @Query(joinName = "area",propName = "bexb",type = Query.Type.EQUAL)
    private Boolean bexb;

    @Query(joinName = "area",propName = "betc",type = Query.Type.EQUAL)
    private Boolean betc;

    /** 模糊 */
    @Query(type = Query.Type.INNER_LIKE)
    private String stockCode;

    @Query(type = Query.Type.EQUAL)
    private Boolean kcyj;

    @Query(type = Query.Type.LESS_THAN_NQ, propName="quantity")
    private Double quantity2;
}