using JSMachine.WMS.App.Dto.Enum; using NPOI.SS.Formula.Functions; using System.Diagnostics.CodeAnalysis; namespace JSMachine.WMS.App.Dto { public partial class StorageRackDto : IRootDto { public Guid Id { get; set; } /// /// 库位编号 /// public string StorageRackNo { get; set; } /// /// 途径提升机指定点的坐标 /// public string AgvPassPointNum { get; set; } /// /// 提升机通道号(PLC定义的网带编号),提升机库位专用 /// public int? ElevatorChannel { get; set; } /// /// 是否锁定 /// public bool IsLock { get; set; } /// /// 库位状态 0-空闲 1-有货 2-锁定 3-禁用 /// public StorageRackStatus Status { get { if (IsLock) return StorageRackStatus.Locked; if (IsDisabled) return StorageRackStatus.Disabled; if (!string.IsNullOrEmpty(BarCode)) return StorageRackStatus.HaveGoods; return StorageRackStatus.Empty; } set { } } /// /// 库位名称 /// public string StorageRackName { get; set; } /// /// 所在的库区排序 /// public int AreaNumSort { get; set; } /// /// 库位排序(同一列的库位排序号越大越在里面(以车前进方向为准)) /// public int NumSort { get; set; } /// /// 所属库区 /// public long? ReservoirAreaId { get; set; } /// /// 所属库区列(小车进入库位的方向为列) /// public long ReservoirAreaColumnId { get; set; } /// /// 备注 /// public string Remark { get; set; } /// /// 所属楼层编号(10-一楼 20-二楼) /// public FloorEnum Floor { get; set; } /// /// AGV名称 /// public string MachineName { get; set; } /// /// 确认时间 /// public DateTime? ConfirmDate { get; set; } /// /// 是否禁用 /// public bool IsDisabled { get; set; } /// /// 合格证号 /// public string BarCode { get; set; } /// /// 订单号 /// public string OrderNo { get; set; } /// /// 客户名称 /// public string CustomName { get; set; } /// /// 物料名称 /// public string MateriaName { get; set; } /// /// 物料类型 /// public string MateriaType { get; set; } /// /// 单个托盘上的物料数量 /// public int MateriaNum { get; set; } /// /// 批次号的生成规则为: 作业单号+日期+班次 /// public string MateriaBatch { get; set; } /// /// 物料编码 /// public string MateriaCode { get; set; } /// /// 联动线出口,机械手设备唯一号 /// public string EquipmentNo { get; set; } /// /// 码头位置 1:北区 2:南区 3:人工 4:退货到车间 99:正常存储库位 /// public TransportEnum Transport { get; set; } /// /// Erp回调Wms接口地址 /// public string ErpCallWmsInterface { get; set; } /// /// Wms回调Erp接口地址 /// public string WmsCallErpInterface { get; set; } /// /// 创建时间 /// public DateTime? CreationTime { get; set; } /// /// 修改时间 /// public DateTime? LastModifiedTime { get; set; } /// /// 清空物料 /// public void ClearMaterial() { BarCode = null; OrderNo = null; CustomName = null; MateriaName = null; MateriaType = null; MateriaNum = 0; MateriaBatch = null; MateriaCode = null; } /// /// 是否空白可用库位 /// /// public bool IsEmpty() { return !this.IsLock && !this.IsDisabled && string.IsNullOrEmpty(this.BarCode); } /// /// 清空物料并解锁库位 /// public void ClearMaterialAndUnLock() { ClearMaterial(); IsLock = false; } /// /// 绑定物料信息 /// public void BingdingMaterial(MateriaInfo materiaInfo) { BarCode = materiaInfo.BarCode; OrderNo = materiaInfo.OrderNo; MateriaName = materiaInfo.MateriaName; MateriaType = materiaInfo.MateriaType; MateriaNum = int.Parse(materiaInfo.MateriaNum); MateriaBatch = materiaInfo.MateriaBatch; MateriaCode = materiaInfo.MateriaCode; } /// /// 绑定物料信息并锁定库位 /// public void BingdingMaterialAndLock(MateriaInfo materiaInfo) { BingdingMaterial(materiaInfo); IsLock = true; } public class StorageRackDtoIEqualityComparer : IEqualityComparer { public bool Equals(StorageRackDto? x, StorageRackDto? y) { return x.StorageRackNo == y.StorageRackNo; } public int GetHashCode([DisallowNull] StorageRackDto obj) { return obj.StorageRackNo.GetHashCode(); } } public class MateriaInfo { /// /// 合格证号 /// public string BarCode { get; set; } /// /// 工单号 /// public string OrderNo { get; set; } /// /// 物料名称 /// public string MateriaName { get; set; } /// /// 物料类型 /// public string MateriaType { get; set; } /// /// 物料数量 /// public string MateriaNum { get; set; } /// /// 批次号 /// public string MateriaBatch { get; set; } /// /// 物料编码 /// public string MateriaCode { get; set; } } } }