using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using WMS.Web.Core; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Values; namespace WMS.Web.Domain.Entitys { /// /// 老ops箱信息头 /// [Serializable] [Table("t_ops_box")] public class Box : EntityBase { /// /// ID /// public override int Id { get; set; } /// /// 对应老OPS的箱ID /// public int OpsBoxId { get; set; } /// /// 箱编号(老OPS生成的箱号) /// public string BoxBillNo { get; set; } /// /// 供应商Id /// public int SupplierId { get; set; } = 0; /// /// 组织Id /// public int OrgId { get; set; } = 0; /// /// 完成装箱时间 /// public DateTime CompleteCartonTime { get; set; } = DateTime.Now; /// /// 完成装箱用户 /// public string CompleteCartonUser { get; set; } /// /// 箱子创建用户 /// public string CreateUser { get; set; } /// /// 创建时间(对应老OPS的创建时间) /// public DateTime CreateTime { get; set; } = DateTime.Now; /// /// 明细 /// public List Details { get; set; } = new List(); //移出 public Result Out(List<(int MaterialId, decimal Qty, List SerialNumbers)> list) { foreach (var l in list) { var d = this.Details.FirstOrDefault(f => f.MaterialId == l.MaterialId); if (d == null) return Result.ReFailure(ResultCodes.BoxMateriaNoData); d.Qty = d.Qty - l.Qty; if (d.Qty <= 0) this.Details.Remove(d); //foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s); } return Result.ReSuccess(); } //移入 public Result In(List<(int MaterialId, decimal Qty, List SerialNumbers)> list) { foreach (var l in list) { var d = this.Details.FirstOrDefault(f => f.MaterialId == l.MaterialId); if (d == null) { this.Details.Add(new BoxDetails() { MaterialId = l.MaterialId, Qty = l.Qty, //SerialNumbers=l.SerialNumbers }); continue; } d.Qty = d.Qty + l.Qty; //d.SerialNumbers.AddRange(l.SerialNumbers); } return Result.ReSuccess(); } //移入 public Result TakeStock(int materialId, decimal qty) { var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId); if (d == null) { this.Details.Add(new BoxDetails() { MaterialId = materialId, Qty = qty }); } return Result.ReSuccess(); } /// /// 出入库回退上架 /// /// /// /// public Result BackRecordUp(int materialId, decimal qty) { var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId); if (d == null) { this.Details.Add(new BoxDetails() { MaterialId = materialId, Qty = qty }); } else { d.Qty = qty; } return Result.ReSuccess(); } /// /// 出入库回退下架 /// /// /// /// public Result BackRecordDown(int materialId, decimal qty) { var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId); if (d != null) d.Qty = (d.Qty - qty) > 0 ? (d.Qty - qty) : 0; return Result.ReSuccess(); } } }