Files
ww-jst/wmsjst/JSMachine.WMS.Application/Dto/StorageRackDto.cs
T

282 lines
7.4 KiB
C#
Raw Normal View History

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