282 lines
7.4 KiB
C#
282 lines
7.4 KiB
C#
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; }
|
|
|
|
|
|
}
|
|
}
|
|
}
|