using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace RB_MES_API.Models.Cloud
{
    /// <summary>
    /// ExecuteBillQuery接口JSON格式数据字段
    /// </summary>
    public class CloudBillQuery
{
        /// <summary>
        /// 主键
        /// </summary>
        [Key]
        public int FID { get; set; }
        /// <summary>
        /// FormIDType的FID
        /// </summary>
        [Required]
        [StringLength(80)]
        [DisplayName("查询类型")]
        public int FFormIDTypeID { get; set; }
        /// <summary>
        /// 需查询的字段key集合，字符串类型，格式："key1,key2,..."（必录）
        /// ClumnConvert的字段包含在此...
        /// 注（查询单据体内码,需加单据体Key和下划线,如：FEntryKey_FEntryId）
        /// </summary>
        [Required]
        [DisplayName("需要返回的字段")]
        public string FFieldKeys { get; set; }=string.Empty;
        /// <summary>
        /// 当相同的FormID需要多次查询时使用
        /// </summary>
        [StringLength(80)]
        [DisplayName("云星空表名")]
        public string FKDBillName { get; set; }=string.Empty;
        /// <summary>
        /// 需要推给MES的表名或沃比存储名
        /// </summary>
        [StringLength(80)]
        [DisplayName("目标表名")]
        public string FRBBillName { get; set; } = string.Empty;
        /// <summary>
        /// 查询Cloud的过滤条件，详见API说明
        /// </summary>
        public string FFiledString { get; set; }=string.Empty;
        /// <summary>
        /// 查询Cloud的排序字段清单，每个字段之间用小逗号隔开，详见API说明
        /// </summary>
        public string FOrderString { get; set; } = string.Empty;
        /// <summary>
        /// 返回总行数，整型。0代表全部
        /// </summary>
        [DefaultValue(0)]
        public int FTopRowCount { get; set; } = 0;
        /// <summary>
        /// 开始行索引，分布使用
        /// </summary>
        [DefaultValue(0)]
        public int FStartRow { get; set; } = 0;
        /// <summary>
        /// 最大行数，分页使用，不能超过2000
        /// </summary>
        [DefaultValue(0)]
        public int FLimit { get; set; } = 0;
        /// <summary>
        /// 表单所在的子系统内码，字符串类型（非必录）
        /// </summary>
        [StringLength(80)]
        public string FSubSystemID { get; set; } = string.Empty;
        /// <summary>
        /// 外键
        /// </summary>
        [ForeignKey("FFormIDTypeID")]
        public virtual FormIDType GetFormID { get; set; }    //此处不能 = new FunctionList()，否则修改时也会多一张单据
    }
}
