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 decimal 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 }