using System;
using SqlSugar;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
using Tiger.Model.Minsun;
namespace Tiger.Model
{
///
/// 实体:包装信息
///
[Description("Primary:ID")]
[Serializable]
[SugarTable("WMS_ITEM_PKG")]
public class WMS_ITEM_PKG : DbEntityWithAuth
{
#region 构造函数
///
/// 实体:包装信息
///
public WMS_ITEM_PKG() { }
#endregion
#region 公共属性
///
/// 条码
///
public string SN { get; set; }
///
/// 父包装条码
///
public string PARENT_SN { get; set; }
///
/// 包装类型(0OnePiece单件|1Container载具|2Carton箱|3Pallet栈板)
///
public int PKG_TYPE { get; set; }
///
/// 物料编码
///
public string ITEM_CODE { get; set; }
///
/// 条码类型(规则编码)
///
public string SN_TYPE { get; set; }
///
/// 数量
///
public double QTY { get; set; }
///
/// 单位
///
public string UNIT { get; set; }
///
/// 业务单据编码
///
public string TRANS_CODE { get; set; }
///
/// 业务单据号码
///
public string TRANS_NO { get; set; }
///
/// 业务单据行号
///
public string TRANS_LINE { get; set; }
///
/// 来源单据编码
///
public string SOURCE_CODE { get; set; }
///
/// 来源单据号码
///
public string SOURCE_ORDER { get; set; }
///
/// 来源单据行号
///
public string SOURCE_LINE { get; set; }
///
/// 供应商代码
///
public string SUPP_CODE { get; set; }
///
/// 供应商批次号
///
public string SUPP_LOTNO { get; set; }
///
/// 批次号
///
public string LOTNO { get; set; }
///
/// 仓库ID
///
public string WH_ID { get; set; }
///
/// 储区ID
///
public string REGION_ID { get; set; }
///
/// 货架/料车ID
///
public string SHELF_ID { get; set; }
///
/// 储位ID
///
public string LOCATION_ID { get; set; }
///
/// ERP库位代码
///
public string ERP_WH { get; set; }
///
/// 打印次数
///
public int PRINT_TIMES { get; set; }
///
/// 最后打印时间
///
public DateTime PRINT_DATE { get; set; } = DateTime.MinValue;
///
/// 打印人
///
public string PRINT_USER { get; set; }
///
/// 重量
///
[DisplayName("重量")]
public double WEIGHT { get; set; }
///
/// 重量单位
///
[DisplayName("重量单位")]
public string WEIGHT_UNIT { get; set; }
///
/// 备注
///
public string REMARK { get; set; }
#endregion
#region 虚拟属性
/*例子
[SugarColumn(IsIgnore = true)]
public string FieldName { get; set; }
*/
[SugarColumn(IsIgnore = true)]
public string LEVEL { get; set; }
#endregion
#region 外键属性
/*例子
//一对一外键导航
[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
//一对多外键导航
[Navigate(NavigateType.OneToMany, nameof(ClassA.WMS_ITEM_PKGId))]//ClassA表中的WMS_ITEM_PKGId
public List ClassAList { get; set; }//注意禁止手动赋值,只能是null
//多对多外键导航
[Navigate(typeof(MappingClass), nameof(MappingClass.WMS_ITEM_PKGId), nameof(MappingClass.ClassAId))]//注意顺序
public List ClassAList { get; set; } //注意禁止手动赋值,只能是null
*/
// ///
// /// 包含逻辑删除的数据
// ///
// [Navigate(NavigateType.OneToMany, nameof(PARENT_SN), nameof(SN))]//ClassA表中的BAS_CODE_RULEId
// public List ChildrenWithGhost { get; set; }//注意禁止手动赋值,只能是null
// ///
// /// 不包含逻辑删除的数据
// ///
// [SugarColumn(IsIgnore = true)]
// public List Children => ChildrenWithGhost?.Where(q => !q.GHOST_ROW).ToList() ?? new List();
//BAS_ITEM, WMS_WAREHOUSE, WMS_REGION, WMS_SHELF, WMS_LOCATION
[Navigate(NavigateType.OneToMany, nameof(BAS_ITEM.ITEM_CODE), nameof(ITEM_CODE), "GHOST_ROW = 0")]
public List _ItemInfos { get; set; } //注意禁止手动赋值,只能是null
[SugarColumn(IsIgnore = true)]
public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG);
[Navigate(NavigateType.OneToOne, nameof(SN), nameof(WMS_ITEM.SN), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_ITEM Item { get; set; } //注意禁止手动赋值,只能是null
[Navigate(NavigateType.OneToOne, nameof(SN), nameof(WMS_ITEM_EXT.SN), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_ITEM_EXT ExtInfo { get; set; } //注意禁止手动赋值,只能是null
[Navigate(NavigateType.OneToOne, nameof(WH_ID), nameof(ID), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_WAREHOUSE Warehouse { get; set; } //注意禁止手动赋值,只能是null
[Navigate(NavigateType.OneToOne, nameof(REGION_ID), nameof(ID), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_REGION Region { get; set; } //注意禁止手动赋值,只能是null
[Navigate(NavigateType.OneToOne, nameof(SHELF_ID), nameof(ID), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_SHELF Shelf { get; set; } //注意禁止手动赋值,只能是null
[Navigate(NavigateType.OneToOne, nameof(LOCATION_ID), nameof(ID), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_LOCATION Location { get; set; } //注意禁止手动赋值,只能是null
[Navigate(NavigateType.OneToOne, nameof(PARENT_SN), nameof(SN), "GHOST_ROW = 0")]//一对一 ClassAId是WMS_ITEM_PKG类里面的外键ID字段
public WMS_ITEM_PKG Parent { get; set; } //注意禁止手动赋值,只能是null
#endregion
#region 枚举变量
///
/// 包装类型(0OnePiece单件|1Container载具|2Carton箱|3Pallet栈板)
///
public enum PKG_TYPEs
{
[Description("单件")]
OnePiece,
[Description("载具")]
Container,
[Description("箱")]
Carton,
[Description("栈板")]
Pallet,
}
#endregion
#region 公共方法
public static List UpdateQty(List list)
{
var minPkgs = list.Where(q => !list.Any(p => p.PARENT_SN == q.SN));
var parent = list.Where(q => minPkgs.Any(p => p.PARENT_SN == q.SN));
while (parent.Any())
{
foreach (var item in parent)
{
item.QTY = list.Where(q => q.PARENT_SN == item.SN).Sum(q => q.QTY);
}
parent = list.Where(q => parent.Any(p => p.PARENT_SN == q.SN));
}
return list;
}
#endregion
}//endClass
}